From bbaf619f63f98c00e5730b3f078d3affc54ad01d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 2 Mar 2021 17:33:03 +0900 Subject: [PATCH] fix(bundler): Fix bugs (#1437) swc_bundler: - [x] Fix wrapped esms. (denoland/deno#9307) - [x] Make test secure. --- bundler/Cargo.toml | 2 +- bundler/scripts/download.sh | 5 + bundler/scripts/test.sh | 2 - bundler/src/bundler/chunk/computed_key.rs | 195 +- bundler/src/bundler/chunk/export.rs | 5 +- bundler/src/bundler/chunk/merge.rs | 27 +- bundler/src/bundler/chunk/plan/tests.rs | 60 + bundler/src/inline.rs | 4 + ...004535d5f93eb2ada7a36c4a14755f0a944c39f.ts | 68 + ...00ffa42c9218a387d09c7be59f9609249baa988.ts | 61 + ...02f5d1cbfd5e28f9167bc34bbab797dd6d45867.ts | 34 + ...046e5420144af71c85b6f4b9d027a4872b958aa.ts | 114 + ...046ef139334d849e0580670a5e984a126560b34.ts | 9 + ...0ac2e3568aa701b50dbe03658b1969f4fa89905.ts | 16 + ...13993bd641a8f773adbcb8f51d7fa01cc2065ad.ts | 21 + ...13da1a69449f69887e4259f172d5b80f642e78c.ts | 36 + ...1474d64962c420e64b489dc2c1ef19664ef6574.ts | 34 + ...17111745f34ea7e1ee5489286bba848979bba8d.ts | 4 + ...1815f0bfc7c38ccb35716808b637adb22658131.ts | 49 + ...1dc08ae3d8fc0122627ab537a8afbd684ecbdea.ts | 6 + ...20be644443b8947fbca69ea92ebd2ece761d2d0.ts | 110 + ...20e7c93fbe1e18a705db3506ade9f67fb9bf81b.ts | 4 + ...22b6a900d4aee51362ccb4701c84a4d771ec2d3.ts | 8 + ...2afa43de67db405fc53f955efba75216682ef07.ts | 82 + ...2bfa7ac84cde68442aeb8e2b62e0ec94dbd0a41.ts | 390 + ...2f1f752554e9c3f05fe3472f405d989a016815d.ts | 36 + ...2fec2e21e7ad66e6023abe2223435a89f34b31b.ts | 21 + ...3a2696060909a82e9151b4f1aced5810a318823.ts | 512 + ...3afd40f15323e4a10de83fb16b022ef4d0fa49c.ts | 128 + ...4182eda558f91c98c91784a313ad88c9cea253f.ts | 175 + ...42e5ed5300c9e5f707cd1fb94bbe2a7973adc82.ts | 33 + ...487c855c9f9ad28ad81c1a9f1e7446b2a188d09.ts | 104 + ...4c5beb117daf148add8d6428102a65050829835.ts | 42 + ...4d2cd119ea6b5f6e98c4d7a3c012cac22088f30.ts | 192 + ...4f2435ab4500b55ef683496a38c20a92bb0b21c.ts | 23 + ...55c51823e86235b0076115fa0fcfa6a793db7f5.ts | 87 + ...56fcea72bc25d7fa9eafac174ce56b80cf99571.ts | 353 + ...598e2f21b0a75467096a0aa8082dcc14ba23a59.ts | 43 + ...5d629026c1d721c6cbc08637b23fdd0672ea565.ts | 51 + ...60431bb79a5fdc17dd38d75812ec1007c8a09ac.ts | 104 + ...61dc1bc102d98a87c92425e09bf0203e0434fc9.ts | 62 + ...6690f3535d0a01288299061649a51b1ac0435aa.ts | 49 + ...6840a8904e244f906a89aff3c364599d24554af.ts | 6 + ...68c2d45fb9edc362a3af0a37718179290fbd722.ts | 34 + ...6ac04fc4e5dd9779a3391910b554b0bd6c0c72c.ts | 10 + ...746b127cd90af92cf12b2ec02c10c123b75903c.ts | 46 + ...7edaff2f29d36d34886867c4a9100a3250091ca.ts | 33 + ...8120cba5feb53715566490767556b622333fcda.ts | 132 + ...86270680629deac2a20a68fb1068f2473e47d4f.ts | 72 + ...8fb5ffb652d3ab4254036be928c3aa4652e251a.ts | 10 + ...921d954843d1a985feac7de57d6c1db75b7500e.ts | 10 + ...9236d67cd7c89114ef7fae5927846001fdb3ee1.ts | 32 + ...9383f7134bcbb64cadf410adb933d67b8a87fc1.ts | 35 + ...95c726f58dc8e8e09e5e723ca294ce0ffa2d12a.ts | 19 + ...977feb3b53e690b725b21f25dc74eb3561f0dee.ts | 37 + ...9d3538bdb461399415f8f68af9da00dd02f839f.ts | 23 + ...ab31312a4d3ecab9cdf41f345e7e69882da7d3f.ts | 9 + ...afa3c9e6688d294fdfb23eefa94f6c131088a6e.ts | 57 + ...b0bcf31fcc627ab2d8c38be6aaf7d0f7a9fefa3.ts | 1003 + ...b342060ff1856cd94ca234727849c893a6e0ee4.ts | 24 + ...bc2073c627b10654f8712f63ac65d8c08962ce3.ts | 143 + ...c370b0dde6a38f8d964c5a397f9161f3283201d.ts | 257 + ...c7ae39177272e7cc7929cdc37af066f08d303eb.ts | 19 + ...c7c964a9fa6eb6c0d13fa7542363da68da91e1e.ts | 45 + ...cd7f74af998eea7ac9eb8d676fe7ebf85a2f5cf.ts | 37 + ...d07b97042b0ea4818087ca2b6e808496581bb52.ts | 6 + ...d11afcb85ce307ca57356ebc5e83b4a32ca9cd7.ts | 33 + ...d13bad4776062d351b45fa0be0cc06239fbb9f1.ts | 10 + ...d24ee36aec622d55db1ac9087c2eb045d25fd78.ts | 7 + ...d46a97f5f1e7e868c2dffc8a349254afcb53f54.ts | 29 + ...d47e0f97f3400f94d64ddaea361b231dfec322a.ts | 721 + ...dd29d6944d00bffe1f39444ea233e2fd11c7006.ts | 66 + ...de042643e033407fefa8933f0387a5f4271257c.ts | 53 + ...e10ac285f46cdbd723a2e09e09540b56bb39d77.ts | 123 + ...e357b6b47106575272f7ed539c47656b9e86d3d.ts | 207 + ...edccd409d61a4468d09126b0d058cde514f2056.ts | 9 + ...ef781beeea83aa8b2b5e6dad06dad46e12064be.ts | 44 + ...ef9a4598fa5881690a2f4b35c76defd573a8523.ts | 36 + ...f4f26c742d59b7600f30283fbcabab7c92d3f6d.ts | 84 + ...f6f644c56410f6a8540ac63779169fec060c331.ts | 34 + ...f7dfad28dcd32a1ab1390591772d2adc69b73d7.ts | 185 + ...f8cfd82f215e35382a230fd72bcd7094f42c8ce.ts | 15 + ...fa28d6816fcab5d11ba4ee1ede2a72680b8b6c0.ts | 34 + ...ff16ed81878dbaa6c6dce1a42c7e986260c2c1d.ts | 36 + ...0211d0af78bc73c80c5c4de7927515eaf13db69.ts | 42 + ...02b68862ac1918ef4cf8a2b19164384c89f8290.ts | 10 + ...02eb79561b7bc6a50ed8bae5d2a37ac9b465a42.ts | 4 + ...05e20f2af89b6331d0b5b450ea2998c90fa869c.ts | 42 + ...0c5d90b3aecacee0f0511e8ea317f3174d065ce.ts | 32 + ...133466265e7072d7293c6c60857590974a94e3e.ts | 35 + ...1349b40e4bb0ed8d54e10349a3f20d8763b3eab.ts | 8 + ...15a40773b0e1166b5298d48028e9f966d50d7c4.ts | 77 + ...15e402f22b76a4d9cf60ca6db4f6eb2d8e968aa.ts | 205 + ...1731133752a9f2dfb2bc8c2653138a5fbcbd000.ts | 51 + ...19f1607e3e28768f400a64e01095baf828bcf81.ts | 4 + ...1ba86e63300472c082d26d8a3f1e4d8fe8fe76f.ts | 13 + ...2443b1c9163cb6b513538c9e3bed70f14aad464.ts | 65 + ...25d246dc76a9a556045ceeae1153d884ebfdbf4.ts | 150 + ...269588bea35e23194ed43f8a7cbe30f6032827e.ts | 18 + ...2718a69cb4870a5d8f43e95389215a652e1ff23.ts | 14 + ...2dae7a3ff121d6d76dd029a5e0768673415815f.ts | 8 + ...2e9060a896dc887aeb65cdc0ea52ce8133476f5.ts | 24 + ...2f5bc47dce97aab7d2b439371a8325000270cd8.ts | 431 + ...30b0b16b08e2328afef5d1c788e881e0381f6a8.ts | 15 + ...31bef49857a0c38175f5a4a39ce9e2666475603.ts | 27 + ...3302b6e4b7bfb7b8c496b9eb7fb4b383ca294c8.ts | 77 + ...342fad556c7fa0a167607771800a427e263df6c.ts | 30 + ...3700e6667201f37bc20bba0db87388b49b2ec72.ts | 62 + ...3aad9ce013f3be95ff24d7ae53b20355b9e0e6f.ts | 33 + ...408020c1eb166e22d33bda9e6488190119a70bd.ts | 721 + ...428cf4db6bc088ba76d68090af3bdada70f249f.ts | 15 + ...43995c47cdcea6c5a105c392ad766d23a5eb33f.ts | 68 + ...44981b6498020d07db7b00d051fa52657ec40a4.ts | 4 + ...479eafa0ae9e55770fbed944a0b7d21f23d9fe4.ts | 18 + ...49ca7cd67e99d4dbdfdb2334423f29f486a3565.ts | 383 + ...4caf10dcb6d28d0c7f647aeb882cc69b928e20c.ts | 26 + ...4d2cb6efaa975d346dd8d3811810e8c910c4912.ts | 1272 ++ ...4d686bf665411aa7e9a837a8ac56363826d259c.ts | 12 + ...4db2faaba580d87d8e87a2f10bf8c7883f41f34.ts | 39 + ...542c900f31b210398965de49f3748a3062fc398.ts | 24 + ...54c6073e975b13f958f5ec193d87807d5ce9747.ts | 20 + ...5650a0a33ba60fb495e9b783eff58745b9513b1.ts | 5 + ...5ca3aadb89225d3e76fe28fdf4ca49c4f83e4f7.ts | 38 + ...5cac5f1f1891cdfa29e2c62647fad5a090482c5.ts | 187 + ...5e012f58ce28a8f6da346ff8bfcd6e41d822f0e.ts | 46 + ...5ff69e5ba79d52cb453376285fe4fd42ba6f193.ts | 22 + ...61cdbb1659c8dc2529af32f1c9b9343ad2917a6.ts | 136 + ...64b33e52b6c7ad35bd1f384d1a3ef8d13ff20d2.ts | 14 + ...65c97bcca11ffb39b2a4cb938e798e6f6d4b03a.ts | 34 + ...6636f1df996bc362111d560f402836346a3aff6.ts | 16 + ...672b7e2822cbaf4f5934b9c66f2047d44700339.ts | 33 + ...6ac259d1b48b671c9d665f2209489e5dce17781.ts | 49 + ...6c4065cd22a2681274a9b18d81f316f1f7fa9f5.ts | 20 + ...702411109bea52e10527b6966cb752526c7d275.ts | 20 + ...71424772f8b3d18b9b5e50b83712d4620f9079e.ts | 40 + ...73dbbf770a1b85799ff97f4ffeed8e29422a496.ts | 358 + ...740f39d7a42300c56c23e098ead3427c76289f5.ts | 12 + ...775349c1d11b975768f47e60e70d21aad1b1006.ts | 120 + ...78b1aa522fff69339fedb6b2e9ec497a42384c3.ts | 4 + ...7e969504f75c0a60cb0dbb8f915b07533dc4068.ts | 166 + ...830fc4231d7949065108ba406eea9cfe33d4ef0.ts | 20 + ...85373cd877407f0d49b9157e0ea4c689775dc60.ts | 78 + ...883a3d58b753cc5f249c4a88aa65dfa9f311b68.ts | 6 + ...88998fe8bd8ae01bbc6e2ec7935e16a377a2f42.ts | 239 + ...88a854bf2fcf891f3add27ab83bb40a0153d5ae.ts | 36 + ...8c31ad6227f598945da9d3bae0cf9301715c209.ts | 29 + ...8c64b58700d8fb706632e781cb0ed077aa00a64.ts | 177 + ...8f9b2005cbb455af48eb310c3ea2f787cfd071c.ts | 2167 ++ ...8ff653ba0ac6b88cd88d5d70d343792704a10d1.ts | 11 + ...916719c6dbd64f6dba5c8f871f8d0a314b02f78.ts | 53 + ...947e42aaa95bc1bb5765186b1ca87d18a859e4c.ts | 14 + ...97458d0a975f158097ae5c3f29fb1a5bdd76ff1.ts | 29 + ...98351dccca6a94f567522a91e138fc20de08034.ts | 6 + ...9a74b46907399a12d5e04a3088c26f2671f5272.ts | 32 + ...9f113629702d39e47def952114549a15a93cd55.ts | 43 + ...a02906df54de8682a94e81ec030c5e1748c9c8e.ts | 507 + ...a53b55b41069a12c154eb051f25deb05f797b90.ts | 81 + ...a5b9ab371d52f951f291f13fe96c23ebab22c2f.ts | 51 + ...a60eafc82d4d7ac8ae2352f7ca7699df8de3f20.ts | 42 + ...a72cbd07cabb6706884b35e157486cd37ea8ec5.ts | 66 + ...a961bff3c46f42c2f242228b25667e674f87baa.ts | 98 + ...aa8cc6352488fec0e34a6a9d497e25e3779e61c.ts | 33 + ...b0566230829126fecb541e367fd26ce521069db.ts | 10 + ...b2d0a727fc4a75d47a3e8f0fcd11de718d112a0.ts | 20 + ...b331576d3a22cb56c3454878ffae3385d3c660a.ts | 31 + ...b4a2b4a6c460f5bd77c1dfd0134e23f17db993f.ts | 615 + ...b50737842a71ff8d90fada6cb46bf96a4012ed9.ts | 52 + ...b59e61107b04ef461b193fc873a00e993e2157e.ts | 9 + ...bb092a8985beb3c101d0c8cebff7023aafe5218.ts | 21 + ...bd0ce95901d7d41f02892f345773c2c80aee914.ts | 79 + ...c2d932450b79c54e05590e6e6a3dce706d77229.ts | 125 + ...cc7ac0e1510d58095d23a75ae64e342c4d15559.ts | 1003 + ...d264b326a56d2da3f4916061b2d7ba8fd120cdd.ts | 4 + ...d2e15181dc539bfe8e9784b45df9eb58aa1bd10.ts | 33 + ...d7d1c1e1a2c07b345548f79d2e593adb3054812.ts | 25 + ...decd533a4b3cddede80ab6124372e87a6e9ac83.ts | 43 + ...dfd4a9b35173d9489abdc782f55d0d4b8a431b8.ts | 61 + ...e425603b458319a84c69cb564936fca745ddd13.ts | 46 + ...e5f425f88f8d6a6fe07dd802d9c56d0a464ab10.ts | 32 + ...e6adcffc2ad6931824a313d09e20e4b1db0c077.ts | 79 + ...e70110a27b77ce4047986f5401326ad4ef7b5c8.ts | 33 + ...ecf7bba1624502a5f3159b7bd7c948afcfa6f8d.ts | 26 + ...ee173bc90e59030878ab7e8704cbe8bbedb2622.ts | 40 + ...f0dc9b13a24de08f6bc89d190c17b85afb3c770.ts | 16 + ...f19c7f6c7f920a1d641403a5a5037fbdc2fe68f.ts | 37 + ...f429c4cfe3b434f4499e64af941c5f3500798ba.ts | 198 + ...f595005ac31bf95953bd02fb3f806bc8ee829ac.ts | 114 + ...f5f2fee52bd827e920929dd5763097080e756b4.ts | 14 + ...f87aec459f140142a6c8ce4197c36daf9d959d5.ts | 159 + ...fb57519bb17c899ccede64820e37e4a757717ed.ts | 899 + ...fd0175804216d11e14cfa6fe2663b4c3f62ac2f.ts | 15 + ...ff509c9694ea91930285d4ac609e7dd403917f0.ts | 8 + ...ff6a595e378303b3b5dad0661049f3137822aa8.ts | 26 + ...0e4512d5c898122c7d93fc59c314fc1610d96b6.ts | 7 + ...12822c05c6e42e4f774ec561becbdf587150b2f.ts | 53 + ...14868c4b3fe07f8136d5c9bacdd210c92358372.ts | 12 + ...1ecfb5d36b7bde52b3ad64e6d594b0c8b4547b3.ts | 42 + ...245d08f0e8ec31c6412dc4041c0ca6fcb5e5423.ts | 62 + ...2d4cff3c725f357baab702365bd0574fd9ac91f.ts | 49 + ...3757f2a45edf09f858ba2b3dd6b3d1ca9908dc2.ts | 10 + ...3ea8eb81de07a565c0781f28bcd6b4725d81f70.ts | 546 + ...3f4b2f19f08795e4cc4cbeda7d20befdc86cde0.ts | 109 + ...4215edc904104698eb3a4674075d856ef5956aa.ts | 38 + ...453e4e427d8028ee0e560424008c732c2d30aaa.ts | 390 + ...4dddb52e5c4f8f5b0aa00d7f13efc5e08831eca.ts | 120 + ...5191601e5fc11d54bc4340fc01f921f04b8eeff.ts | 37 + ...53fbaf75096c30a50e76b998acd4d4a19101a94.ts | 21 + ...54cb219f9b8bf4d4bd27151b9c6b9451f5aa485.ts | 303 + ...5ae65fc43783464c3514ac80a82a7c2b7e7b259.ts | 34 + ...6011cfcdccf2c97ce392f5122ffdf185e7c86c6.ts | 8 + ...611e46d39df5923363309b9adb4c81731694129.ts | 21 + ...6229dc3fa7de5f57e16c6d1cf5aa281c6692c78.ts | 13 + ...64c6f8a074a064dbf16fe3f4c24d50065a9611e.ts | 60 + ...661a946a5032d7f962249e461492beeaf3d511f.ts | 28 + ...7462e170380c6afdec6fd4a7bcf61d114bb0d3a.ts | 27 + ...7dc4d2dd7eb352391ca33475abe6dd1dfadb61c.ts | 49 + ...7e585629f2edc542d9103600a9f4b46e97cd38b.ts | 29 + ...7e68e7896365acf65e2f7d3748c899d59dad587.ts | 185 + ...7e92fa1ee8580ba9ac4ecb4ee98d941111687ac.ts | 33 + ...8bd60dc23fe1221d19c06b781ac2bfe434e61e3.ts | 278 + ...8c92ae545e5e5ba5a1df5a7918d590089ce701d.ts | 955 + ...8de55c65e4113976616b3871cff5973c733e391.ts | 127 + ...912a85a196c595e5785799639a6de461b24d928.ts | 200 + ...98ac5cb1f292fbd1e88d1cb6f8a6a2f92620f4b.ts | 721 + ...9e96043b98c596a88a9ecb45fc25c9e62e292d0.ts | 39 + ...a148ed2236f95bf3d312375264d5b808491bbb3.ts | 26 + ...a49ade11cb9979e607b3f10474f75c7bb9b8683.ts | 62 + ...a4f10b4b743fbf437d81567a8a0af2ab149a14a.ts | 597 + ...a7bb7657d73da4a00f49d87322148f3eb15a422.ts | 85 + ...aa86467537e9d09af6d641d0c97285a8806f65d.ts | 31 + ...adbfab19da02fbe2ff485f9c907b5b023afc151.ts | 20 + ...ae6669cfb6f655894f8861c3ae839388b467167.ts | 42 + ...aeb963553d95da69a2f534fba2a864e731cdd74.ts | 42 + ...b206cba17cc968297d736bf2465e83e79ae74ad.ts | 985 + ...b85ac5eb77f99400bf84a9424fc4de3e0475e48.ts | 20 + ...b9aa922c0505f3cae5a1babf57f87feb67c278e.ts | 40 + ...bb0930ebf629f0da142ad9e1271c5c148e4944e.ts | 57 + ...c0f916aad3a2664589f13bd555e6d7ca230f463.ts | 15 + ...c829318184ed6639358ba8c587ecc74e074fa74.ts | 29 + ...c95bfb85b9454cdc2563b45c46a55d3eb3e22f9.ts | 11 + ...c9ab67ec6b292145ce3387a2d66ac5e20322116.ts | 51 + ...cb81a47a21610dbaec5920cc0c2c766d85a15a6.ts | 32 + ...cc038acc3fd43bd5da344af0274fd101aa8daea.ts | 721 + ...d91840595800da7c7a080a47ad734733d020438.ts | 52 + ...daddb70e9028c84a3ab6b1842002c2c1be2fa34.ts | 31 + ...dd9daf0365ff7332ecf10d95e54c759b4948c2f.ts | 64 + ...dde8fd41dc224af301d4dae192fd3ff2d2d8ea4.ts | 15 + ...e608badf8e4c4f7e7f2f8fba093e9c5cfa16aef.ts | 33 + ...ea9f96bcef16acd5a14b3b12a64faf9ce974cf1.ts | 76 + ...eb2a9bbb4a98bf9058a8541d9e5776223322ead.ts | 55 + ...ef2bd5be99dcd0298be30f72f284528f693b921.ts | 87 + ...f2e2e321041c2a2def9cdb74571e35ce247b8b0.ts | 61 + ...f4a062634f232715eddb20bb0db67b256d8d214.ts | 37 + ...f6c7999de82334780169a0ad1aa18457941dd57.ts | 1527 ++ ...fd936944f47059be9e6b71bdb70f181821ac7fc.ts | 36 + ...fe78d73018d170c2f18b33bd51c3c048497ec10.ts | 22 + ...045ecf37e4546ef147d10dd710c7e3b5402725e.ts | 37 + ...0467d4514b2e2a5967a15089df54be1a2f73293.ts | 53 + ...071a5627ae9109da7cb390903b736e5b30a4e73.ts | 15 + ...08ac6e65b35fc9e67066bfbcf2d8037ed624076.ts | 17 + ...092d97fa5354a6587505256a1f13a0d139c48b3.ts | 29 + ...0c6394910dd3e93e42f215a3a77df4199acc956.ts | 211 + ...0c84d7c3fe94bbcb5fab74ab49f850c573889bd.ts | 26 + ...0d697ee62a77eb7f64d3db051b6ba272d9c87cb.ts | 64 + ...107840a16f38d2c8595a86c1780768dcce3279f.ts | 546 + ...110941b544aeddb79a8d11bccdf87816b1b6a64.ts | 21 + ...11b044f42a6ac82a6bce30cf0731193f8b9be39.ts | 171 + ...1309ebe9dce51093b18db91b1f0ab39782026ff.ts | 190 + ...18cfebee0c056540312db81fb342856d7419560.ts | 37 + ...1b201cc9177f641a2f4eec0ee0d85e177865877.ts | 33 + ...2615335700c96432bcbee6e4106f30b8961719b.ts | 42 + ...3072e22acf735c097cc99f588a01404695de266.ts | 296 + ...32f04df8c92ae06934b7b4796c04983ccb2f417.ts | 36 + ...3964b38f887091acd435fe7b733ca6cb3750929.ts | 507 + ...3c0fdd50cdbbdbb549caced907347d1b887654e.ts | 48 + ...3d2b160da0ca6dc13a71b273d4e7333a2e71499.ts | 32 + ...3f049cc805c7770d22edf5afbf67151aa93cf0a.ts | 36 + ...416aa739965577e0d41ee5d94ff08b10c7b713d.ts | 77 + ...4d3e04b554f3b12e1370b7d81d5f36c42a8901d.ts | 7 + ...504307e6e5de33948f67a9150b0ee9653189cea.ts | 266 + ...52e08deec75cc5239a03e6dfe0188ccc5121753.ts | 31 + ...585e6feea6092da3750047f296439657b52a12d.ts | 31 + ...589024f603e12aa898c36c2f1bf050d07274544.ts | 420 + ...64b9c2423817567fb857d4fa511095fa696552d.ts | 57 + ...678092871664d8c241c90a551036889ee7b660a.ts | 10 + ...6a58f47cf7519b081e17a0358a65b13a6a9e70e.ts | 35 + ...6d9ffde34e1a40d3aa45ff5b72be9eeda6e5aec.ts | 14 + ...7094f801b2385d9eb12b7ef1b7245c51fd0b159.ts | 29 + ...7667401348e9860ebb01bdb22863259522ef044.ts | 37 + ...793b332a77bf20451ca9d67aa64cbb84baabf4f.ts | 620 + ...79897dde2013e28e4dd6aad1799278b33185c05.ts | 193 + ...798c8a49f0bf5773b960edc923b342587d24ab2.ts | 41 + ...7ada358cd3553060693de58827836ea941f815e.ts | 43 + ...7e099d5f3f8b70b3676d571046257b38035c369.ts | 21 + ...7fa8e38db997d39d0c970daf33f0b5231299ed9.ts | 75 + ...82fb214d775279b6be7e1e1f6e3028d3922f449.ts | 13 + ...850ad9b007a1dc556f63f7c7995a5d602f65e5e.ts | 602 + ...858f99323dcd3c6022994c7938f381c970cef22.ts | 15 + ...85f8b715c7a2fddc633d77ce27c09c2c35e05a4.ts | 56 + ...87a6383dd2b4f4a368b70241684ee8f4d3bd5ab.ts | 54 + ...93bfd3edea12e72d832ea8cf5b3aa39ed1e412f.ts | 346 + ...99734cfcb1e8b780ad70844d1b170f76d69aef9.ts | 7 + ...9c57fb7d5e8b1eab5c56a2768a456f19e997da6.ts | 43 + ...9d8215623f076360b970fefe381ad99a8a77160.ts | 218 + ...a098f75df7a43a9b5b61a85bd989e9827ff73f4.ts | 13 + ...a3c5f0d0418996103c8c061b02b5aa6967a9149.ts | 40 + ...a3f8c7742754003bcc33fe80a730f2687e2953d.ts | 93 + ...a4bd1647fad45ea3867eca226ed0f04a4ad4c59.ts | 20 + ...ac2bd047b9ba1be58300229449b7156ab7cd574.ts | 25 + ...b08cd07127347972d2820716d52dd7289fa88b5.ts | 39 + ...b373f028b882501b8c6b5a2e6c2bd5283c8d47e.ts | 65 + ...b4085fbc035b6168d9644998667560e05bfaf41.ts | 5 + ...b437217e8cf22be2af56d8376bced4617c7bd5b.ts | 8 + ...b89b750a778120833224f10d70d16e3c03b9d73.ts | 96 + ...b8d3da1bca78ca84087bd5c253f4f9931be6e92.ts | 4 + ...ba0531bf4b13bac91a2b8da5c1ede27d80e5d39.ts | 28 + ...bac48484497dd58844174023b47fb0119d8acfc.ts | 168 + ...bc335e3bb47f6972b05ad5341cd795804fa0723.ts | 265 + ...c1635262d8f3d1037702adc003746c5c374368d.ts | 29 + ...c2d47ccff377b24d6ae77e2b699cbbd92216035.ts | 36 + ...c3780ce414ce84ff43ba13138603e36a2238d32.ts | 52 + ...ca4d838cd9a64dafd9511d60dee20f34a50994e.ts | 11 + ...ca6ae490be155fa7cff01b8012d58c846cffc82.ts | 597 + ...cbfe67e10ce1d3d8f0f3472ea3f360e2760e5a6.ts | 35 + ...d2b41247f84e36b4d7e23f12802d5ec0f5d3c40.ts | 98 + ...e32d7366080e14b09fd00723476eef3f1553f9a.ts | 66 + ...e3d8eaa4ec0cb288527634f6d76f6bd4cb81c2a.ts | 32 + ...e82d08e680d48707a5a75763b1e135150dd00a5.ts | 67 + ...e9ec29bf7ffe6df5bbd10261cc1a3eeb15a74b1.ts | 31 + ...f013fb779acb8775ce7f4d245cd2fbb0ed4f6e8.ts | 33 + ...f323f69a88decfb6634eb7fff746520577bdb51.ts | 111 + ...fd2dd13897d0ea45046ae4ea553294076710878.ts | 794 + ...06404073e6f71433b759ce6d6aefb1c65d1ebeb.ts | 16 + ...0db14d1cc7c8ffff6230ffb9de8c55ce41c463a.ts | 34 + ...162f7ba3c0c35cb83344d48c88f402fc435f509.ts | 39 + ...18160cc50021cdc47ad89dea4da4b4d843efc25.ts | 534 + ...1d365a8ae0e9f5520026d8ac43f8bec2f554a5c.ts | 53 + ...27901ad1cd16bf868fc4668b6cb7c01d221e744.ts | 37 + ...28018a751e2754796c08b89c9ffbf149a799833.ts | 106 + ...28ac176b112223e3c88facf799e013fc8626515.ts | 457 + ...2a1f8f598baf2256fe7dc56ebfa5f073c5b88e2.ts | 353 + ...2af7bbbde622a92649e4d8f524733b0b2d69442.ts | 1004 + ...3454605486473f70df2c2cf3d2637b833e7e72d.ts | 32 + ...36fedb1c26cb2dc05a2583ac302c341b0a257d8.ts | 35 + ...39854b137b09b029bd1cbb876fe307daf0c3feb.ts | 44 + ...3de29f75c64b8fc7e379c85644b0f5238ef8e13.ts | 239 + ...45bb7d0616adf21a051238115124cb2eae0fc5f.ts | 19 + ...499ec1594f4dc7479903a32c1a971f3e373de83.ts | 76 + ...49b00f05e5d4a8f442f39854ae8759b91fc91f7.ts | 15 + ...4a4e31858c4f87ab373493a0a2fcda0af905bf6.ts | 190 + ...4c08f96c7e6c795415d925868ec0089677994c1.ts | 76 + ...507642b8b5992a8a74d16a6415658f9a77eb20f.ts | 58 + ...51ef1836081b9b98b8a899fc937ee56c45a1289.ts | 431 + ...51fafadda3a0c356f5570e16bcb16350de45397.ts | 52 + ...5324c0f4edb746a00b6b785537bf663118d4762.ts | 34 + ...574739cf95aae7e28811fe54088d62720e1f4c5.ts | 15 + ...5ce4f3ffe80a7e90648316a82a255cdf80cc36a.ts | 103 + ...638df2524daab4791609fd880e83f1d9495244d.ts | 49 + ...657b24088bee28fb9a569eb73505893b4026616.ts | 48 + ...6a1236156395c1fe96936ab72872a84be8adf2c.ts | 34 + ...6d55f695329edeac0c9687aa3d069a5ba03e620.ts | 6 + ...6ea1d082fcd7442a897e7a7533252e2e1f447c4.ts | 10 + ...7c3fca65712b5c5508b03cf96d71d204dd225d7.ts | 8 + ...858486e9d0a8e7e8ba5a3620a92c99e87b012df.ts | 7 + ...8814d77cdb52ba4ae4ba9d5dcb8163d57fb6b3c.ts | 45 + ...8886e92913f00dcd683a27a6c2be3e5ab28cde1.ts | 87 + ...8a64ee352806e0c1987dc77fbb80a0b227c484d.ts | 37 + ...8f456ec1237e6ae9c059579742299193830c2da.ts | 37 + ...8f6d7093d05accc73986117019da099383a1c6f.ts | 51 + ...8fb493cb824ef3ac579f7de990c1902768c206a.ts | 507 + ...9d27439f7f396d6dbf3cc9571b64597103a2da7.ts | 1004 + ...9d7bf951494afde8ccf63631cce395147f37765.ts | 428 + ...9f4ea8c5c52b8ea50750f742c1d228d56db5e1f.ts | 6 + ...a2521dcf9309684b59e9161bffca655e9340708.ts | 899 + ...a270a3ae273e586086c47504f5d25a53ea8c73d.ts | 72 + ...a7cbaf4c5614c7bda0d4a1d74db09e9057c1b31.ts | 44 + ...a8d0eefeb1d44dba685a7499061fd308ec6f403.ts | 37 + ...b1c3924620504c9bb953999d37bb3d7208e1b4a.ts | 34 + ...b50276e6b96761e9dd16ad7268b7d060fb73e83.ts | 511 + ...b9432109028093ba4d366dcdaadda6569aacd8a.ts | 67 + ...bceeb6a6b3228665a8a02883e92962cd14cf907.ts | 12 + ...be4f4c7b49a84985f8c94acbeb22868943dea66.ts | 32 + ...c1d6cffc7774275592739c8397f71cd4544e9c7.ts | 310 + ...c200ec131b7d33cb3d5247a2b3f9caf76a94909.ts | 33 + ...c2dca625f369b898974fdb3ea469f42d4dc7e64.ts | 33 + ...c3d0ee3ac04e3efbe0b93d3bfbba7b50168341b.ts | 39 + ...c51a1dc3d98f85e68bccc8940f9d992cf6f3bec.ts | 45 + ...c8bf1516cc3178a1924a1bb5cf7f135b84b8759.ts | 23 + ...d06f66f9ce1249dbe8735b482ed30a1d8f6f01c.ts | 40 + ...d78eabd363df43550bdb559ec9f6a29a3dbf4e6.ts | 67 + ...d8f05cb65c48defd3c21a3ade45b55f8baf7ab4.ts | 35 + ...da5a949f20e99f83a7046ef0c1e8ed0d4625536.ts | 32 + ...df71753733ad4b2cc601bb3b716efd0c9147bfd.ts | 91 + ...df77deede2cb6099a13a44bba50a480d83bdb25.ts | 15 + ...dfa8dc502cb1805a4670e086a9fd75346583e12.ts | 41 + ...e397aa4df73759f04ad893d3f35dd7bdfb7f429.ts | 22 + ...e3a9af7dd181cf30d456cf3772f154428805133.ts | 18 + ...e3d3275b0d4fb951769bfb64312bb499460d572.ts | 10 + ...e9a17cde98e1a8d8343a4082871fb8aea8b8418.ts | 34 + ...f0ca3a2d31f06654fb104bbaa8282c00c877f6c.ts | 120 + ...fc4bb197b025f928c8e2d7baacc545eae5cf051.ts | 96 + ...fe7bc8bec9b19a5506a2ae31645938acc254235.ts | 27 + ...0462499cd464d2e75c2ba5d0bae8f7d82276afe.ts | 8 + ...0a68c90032989ca1a310f36cf79e5bf1114e7c4.ts | 32 + ...0ef99b3983986e9a4e3ff30a3862e2d4c5d5812.ts | 22 + ...11b470a054c6ddf269c4ff3d9b60a11c529aca3.ts | 1880 ++ ...16312be8cf018277871f6e43147d06b677d6a13.ts | 31 + ...182d4b18e580b0a6b2fc4b2bd9d841d701f6442.ts | 53 + ...190df367c400a5fe979230a82d871614e286120.ts | 70 + ...192072a18cf75d411c99ea9c93ebc2ae8e830b4.ts | 8 + ...1b9676d22bfed0b3e6e4a6e02abdfffec697446.ts | 16 + ...23b95232338171f73ef4bb75b339ca63d84eefb.ts | 239 + ...2aae1c92cd6bd702a433021973326c89faa3a61.ts | 16 + ...30d2bc386702423b92eee7f56c8d5a1d2c8a42d.ts | 166 + ...32e46aadcc1831d94b4a779c2a24c4b8d158ea2.ts | 49 + ...33a6494ba56d6f8790c539bcf6ce600e386584d.ts | 34 + ...3897518751b56ded4afb6ddcfd04ea6cf09339e.ts | 23 + ...3ae4b7ecdfa51b6ce5b610f4423912f02177fd5.ts | 358 + ...3b6d668e8094a35ca023bf18723293ae406e22c.ts | 78 + ...410c66fa74f3a1f3abc875e2cd129f23d44f908.ts | 185 + ...4219637b852f009bf18e186f041e0f4d8b31ca7.ts | 29 + ...421ed9d1cb82f0a48e3b46e99f915d452c022f4.ts | 411 + ...4756f3b6e72ad8ede86d7f0bcf25cc034ecbd8a.ts | 493 + ...49dabd0a80e54f124ca73c8a759a290f7d32262.ts | 81 + ...52152ba99e3dd3ca555ef74a8d03c1d0f2ed89e.ts | 324 + ...52946951b4b80b2c8e7a6ad38379fd26d613ac4.ts | 20 + ...53188ab802f6dd896fa0ca480bc82efe61cc26e.ts | 117 + ...54d9f5765333023f0c447868abce45956e877f2.ts | 120 + ...56cc2ee8301e0b5a23927cd88f6e87204d04aa2.ts | 24 + ...5bda4f8a080138dd5a21f24579f775477081798.ts | 525 + ...626748aec39922bf5a6cc48950edc293b5d90e5.ts | 30 + ...674474382f85588f75d9aa8f15b8b351c51b5c5.ts | 77 + ...6cfa45e65f954216dae630870817332d63c7874.ts | 4 + ...707df2773cbf05df35503cd5a8cc873455ad561.ts | 37 + ...7638de3cb2e1e316fd6e4e5b87f5ea603687aeb.ts | 65 + ...789057467243996929ecba6104592ddb762edc9.ts | 546 + ...7dbee60abd6bb62ac6adc2984bc4d9a04bf6a97.ts | 191 + ...7e5f8e92e9bce2d9b35ed202f8b858200326aa7.ts | 51 + ...80bf4be7b7d68aa7808fd72544d38b7ce61fd6e.ts | 74 + ...80d37ed86922ddc28ae4deabf1eb33940e284a5.ts | 166 + ...84d22e957080d2df6b83c75e3ee64a7682b71ae.ts | 124 + ...862b1065b772747707c346af8887b051db043a1.ts | 10 + ...8d3bd8561df0406be7e9c4368743833bc5cea79.ts | 36 + ...8d5f831f3fc1a7244b4d4ce1dc82380f6201933.ts | 31 + ...8eb2a0961019853bb83d674345bf3bb70559097.ts | 76 + ...90618a05c830a54b7940c5460bfdd686708a0d6.ts | 239 + ...9417aaf3e13e8ca39e9132aaf809996c7373728.ts | 525 + ...9517267cc8245e0d8ee2cf2a5909ce9f6411171.ts | 9 + ...966db1e3f33bc51286a48d2ae39e0ef6357454c.ts | 34 + ...99d785fdc3c1ccaee4c24a7ddf2ca895f623867.ts | 139 + ...9b7e5a4bdf273f92308a2b3738929c5479e049b.ts | 37 + ...9debc56a8ee8cc4f094caf470ecfe36a6190500.ts | 62 + ...9f7b524425d8a5a0b89908bc866759bef448f0d.ts | 38 + ...a56e2a718d4f917b97ddd3e83d240828ccdf0e2.ts | 24 + ...a728e7bb9d91aec405ddeeaeaa4c6da76c96f36.ts | 128 + ...ab41e00afb7428a4d09936e3d3923e9d7f949d7.ts | 17 + ...ae2edd8e70ab505aae2579e720b908bfe81b53b.ts | 7 + ...b0337a0cb560372656797c6a086cb8135efc17a.ts | 23 + ...b1fd0386834240c91beb45b4e211027a496ff2f.ts | 53 + ...b74a7f4f45315d1404ddaa2ac2d3b35aa539192.ts | 31 + ...b79987e5455c8d8f5634704a4aab9cb784ccabf.ts | 43 + ...bb7bb9795979693547d562391d9c1cb5ea5f117.ts | 8281 +++++++ ...bce8196f3a7e507897bab69365aa46c88df77dd.ts | 233 + ...c22d11e3219ce70167fed71bece728e1a7a3707.ts | 358 + ...c466c27276caaa226fe2b59ba8c27764348cd54.ts | 41 + ...cf74fa489d7816d6b21d074c8bfb8b2cadc9bc2.ts | 79 + ...d5895ead3ff168faf1b1649a426ff55e4dab034.ts | 26 + ...d6d1837a09681ab29f9ad14fbaab375acbc5189.ts | 49 + ...d9b30d4632fd8c1ec57918cf927775db0294797.ts | 193 + ...ddc4c85386767e41a8f90bf55cf6321126796aa.ts | 36 + ...df2407aad6c59abc953b5670346940422b9fd1a.ts | 22 + ...e0272125ce6b9841437813aa835c3d39ec15740.ts | 55 + ...ef12d2b35ba9304779d3b0ee0e4ec01093def62.ts | 233 + ...fb5985c96a06558c27309eaf062f5cbe4ef4d05.ts | 390 + ...fc5ebda42c03e71783d60536d4cd9ef9cd741ea.ts | 54 + ...0207da1f6086c99439bc3461ec7e13a91db0a5b.ts | 15 + ...0208104d8419669579f9261ae1aa06904cd8ebc.ts | 39 + ...09d7c2082e3ef0a4a8fb2e7e60e9697b1f06ec0.ts | 39 + ...1040b6274c02b055ec7fc64f04fdbe7093d967e.ts | 200 + ...11b8018373713f727621682b7b82c3d4f8f9420.ts | 265 + ...16057bc30408233b3fa88b64c9ad8737115c746.ts | 62 + ...188d8029d83e2f6ab30171e207e50bde594148c.ts | 23 + ...1aa99bace0e193e0473a6f3be6495241339eded.ts | 297 + ...1ca55e57c6ceb745d427c20eac5d12d97d99eb6.ts | 10 + ...206d8537faf9c96df54d38ee638c6197586b4c0.ts | 83 + ...23fbb7dfcc2ae9d17e57e8e3718418b47c80e4d.ts | 34 + ...262640b7b417e890a16a16760e1ae57fa5db4bb.ts | 21 + ...27dc23b678014934d53055a9e818f4241908e34.ts | 9 + ...2bd6743e63cf3c65502a0896afd3d9e6db7eba9.ts | 16 + ...2de52f32bf60571bfca2630a6f63ef996bc68a5.ts | 953 + ...2ed138e589be84029e6be44beffea908c99bd74.ts | 714 + ...2f9ce33a62a530d0014ff33b77340297854fc90.ts | 9 + ...316a4c51d99eda000ea7f06718919883decb8dd.ts | 8 + ...35cf8b09e7ff6a6ed019da4e7138ffcc79f40d3.ts | 20 + ...3699da411bf89c86d8541d7b28f10f8a901e322.ts | 42 + ...3cb708dd4c9b4b2834d55fb758d7e31665bc82b.ts | 29 + ...4013586f7ace0f2dd606727a1cd10b09ef4816d.ts | 226 + ...4618f9bb08e4de09c6ccca7f1e955c01fbd023b.ts | 35 + ...47032f84ece50f5a38babe73ea199ac6ee4c396.ts | 36 + ...4a0b34ed6ea49502cedd795909c020dd3fa51f0.ts | 11 + ...549f184bece82ad489f10dfbba8e57289402b5f.ts | 161 + ...551832d57a1d2e04a44a9b74e123cd17a6f8a51.ts | 29 + ...56421b0baa5f2cf6569c3b7751b2d77c400e634.ts | 14 + ...5740ac9839f36e2096d84c50b0dce28cd1732f7.ts | 322 + ...5abf1d5e46652f4d675a663ba49d7c961ea84d5.ts | 25 + ...64478a01d1f65fe688723118b2082d635d6d85b.ts | 6 + ...66acc80a9cf7bcbfb9054efe04d1643338a4d4b.ts | 111 + ...70f8809faac9ade0096051d3bf292a60807141b.ts | 32 + ...7e4a69d6bb60e1c052c7adc4464af01d1778046.ts | 402 + ...7fa057027926f904a72e7874735dda744c2e039.ts | 10 + ...842db90bc133c822ceb4b49542136172b5943d0.ts | 507 + ...852319202452567b571e63384920c4c1725f0de.ts | 33 + ...854199e32bf5d27eac822d3c34c4b1d6ce493f5.ts | 66 + ...8f73c63de34ebae42d0bbd5ab2b5ba5433e6ae8.ts | 7 + ...9a94a935455bf2f9ec9d3d6f3c347136873ee73.ts | 27 + ...9d56fddcca369153b0a92fdd05d6502d5b140ea.ts | 13 + ...a000c7c420b15b3a5e00d66c7448d51ce440c96.ts | 58 + ...a0fe8918345b94de98439906e2f5a8616b536bc.ts | 46 + ...a399f1a72481940ab22e9c8c25afd7bca926e1d.ts | 14 + ...a47f3c7ed4eb9ae67e93fca98d56bfbb86ecf62.ts | 39 + ...aa66eeb2703c40acaa7e5a16c042c7f9d19b387.ts | 18 + ...aa9d935c76b64f48fb6807860c273cbbeb55a52.ts | 185 + ...b23bb0dd8829f0b41d0c1dce31a87e2599e5a21.ts | 34 + ...b299e3d6c1c6bd6d32e24c962f2a8aca5b1e356.ts | 543 + ...b30968b981eac9bfbfce10ed2c3d99893026b1c.ts | 388 + ...b38a007e4be55b015f855dd0cfbdd13dacfbbd2.ts | 49 + ...b760120f9dd7fdb90bc9557d2e270ddf84db232.ts | 48 + ...bf826799f6f2af7641f21626f840957338cc174.ts | 268 + ...c02c424105081503b5fd38bfc4b0c4546d6121f.ts | 46 + ...c770a43588adf2ee510f29a8522ae521a84e4b5.ts | 310 + ...cadf521dfd90a5456dcce92d496318b52d944ac.ts | 72 + ...cf6fe2d092a147a6059017a56ef4d8c714281ce.ts | 38 + ...d1a8250001c0e287df7ecdfe8d1fa22b8a97479.ts | 238 + ...d2a5c2dec57e9c2b2e08cc931287b08f6a019dd.ts | 41 + ...d54a8dccf014450ddb88e89f40089e6277c422b.ts | 51 + ...e05c0bb3b2468edcf787be0052808d9a3e880ce.ts | 6 + ...e23661937c2db7f0343b2f9e80cae4200ab05c4.ts | 128 + ...e54bde0f3ba931ef87cf182b74a92c25ead8e73.ts | 35 + ...e54fc92158adec2df69b5654078decf8f67292e.ts | 18 + ...ec7162085a2e78d83fd084ee73c11b6c185ac8b.ts | 62 + ...f20bf7ec89e1f992e16cace6898baea24de84dc.ts | 12 + ...f52371e4cd20c8c24840922bac8f64aa9059830.ts | 156 + ...facd150607eca1831a48adccd45036748db3033.ts | 47 + ...fc9b4d24c4c8665ce3fb81006ce71ecdd5700fe.ts | 98 + ...fe49a8c6f5ba42ea13308b841f4d1e4ce171f1b.ts | 289 + ...fe71b4957b7d780c71afb9001bfef7e59569372.ts | 261 + ...ff7a6b1cf0952d583431673b923b57ecb13760d.ts | 517 + ...074e0bfb8e3d093d069ed64c5cb921f7630795b.ts | 53 + ...0ad2c2d2b8dae1f982011d943a56ace1e0d6c39.ts | 10 + ...0c4525fcfc01109036e1bbf23191a115d667845.ts | 43 + ...0cbddbeab5b1df6db66d5c56272506dcb3dd18a.ts | 27 + ...0d068476667405abfef2e4c5d56a3452441cea7.ts | 146 + ...0dc824078330decf57f1772c3bebc5614bc9492.ts | 10 + ...13ca9591daaf5e3d7601641fb62d1af4277a397.ts | 525 + ...1b26ce51ccf6d7932c718b438599193efc61a72.ts | 8 + ...1c0c5a98ac147751dcd48b59f9419e994a1fb46.ts | 34 + ...22a85bbc34ef77f799cb2b49aba8aa0cfa5e017.ts | 33 + ...29b826f0ec6cd05ae4c56a66ff267f68d230551.ts | 35 + ...33f3e76d4872e8e4339cef254b2391db6e451da.ts | 56 + ...37f22e1d52d7111bad0fbca4ac98156c56812ce.ts | 345 + ...3be4b5db4507e76dc9aaaf2e1be8e164dd9f1fa.ts | 12 + ...4384cbde4990f56a0f176c22b7d99a74916f268.ts | 15 + ...468f3a48f08c5bc56fd2bcb64729ad757e0a851.ts | 27 + ...4f6b480cf4df8ea36359b558b9f2662106dd2c2.ts | 47 + ...4faf29ce09bfcf0067ed2b3452b8e1daaadd73a.ts | 48 + ...521aa48dd614c8b2f9da7fd26d2b8616104cb6e.ts | 47 + ...574c470a446f9cfe5ba758b023b5629ee728f4f.ts | 30 + ...5b05c480cd1107916ab3e9ff5718801bde920f2.ts | 105 + ...5b16eb10ab7d0867c7c835539785553a1630257.ts | 33 + ...63252be4c80285bb0c76e3a61edbfb60b554be9.ts | 43 + ...65d97d6ba2112ca9e8548a27f777e6cd05ec8ac.ts | 384 + ...6654db7bbc0e432ccc438345e4a583e0b486339.ts | 55 + ...6665b5478dfc5fbe9603d9f25fbd39acb692d73.ts | 14 + ...687fa09d4cabf1b18f3c66634e539c83f0b24ae.ts | 457 + ...6d1b5d69dc192f40bdf7f959ce24d87f7643f4a.ts | 49 + ...6d2fdb7b9577301f985522851bc9fc520f85b63.ts | 75 + ...6ded5755756198f70d88116a058fc283ab09690.ts | 107 + ...7917a9a34b772d8f676553fd265872465855a93.ts | 13 + ...83f5890dde13e85ec3009ba3cc8b211e459d635.ts | 582 + ...85a5c7a73317a88ca6c6722d91f232cc32313ae.ts | 6 + ...8821e16b4859fd41cfd24ab71f728b35d93a1d2.ts | 329 + ...8e85c38153fa5e04a795f5fd46eef12c33b4cb6.ts | 212 + ...93e9f07b35bed4156c8a285c3976d7324247570.ts | 935 + ...990a380a50d6c557f184ebcf6a35837037d6722.ts | 45 + ...9d809cf48163d86f3ae2c8b17c41f6dc8cdff01.ts | 28 + ...9e86c5e195ad14afccd87a335f14c4cdcea6488.ts | 12 + ...a42ca78a2e065adec5211c9851e5db9374b9426.ts | 44 + ...a63b3a3b8a9614a110d00b2e40e2340d3315c14.ts | 22 + ...a74e76c87cc20eb0ff08b26a7c37c3ed003e117.ts | 34 + ...a7632089b03302fd2d861bda1595e08d7bf9956.ts | 29 + ...a9a4b356f9e37d84b1bcc46df13e40ec6e9e219.ts | 34 + ...aa593b31947cc239638b653c7f2a4fbd4e0bc70.ts | 42 + ...abcb0cfce117c782f328a960440cfdab538ae3a.ts | 9 + ...abe2cb8747802a5939867e7a8676627fa667806.ts | 30 + ...acc8e7cf173abfbb82b4e379f1b367cddafc5d5.ts | 18 + ...aded0740cb27c015443cdba7f35e72e47290825.ts | 7 + ...ae9bcc8ace6c8d56f5cf6ba58e2b796cb48bd3e.ts | 81 + ...bbc857517d433fe324260638f2366514c655a99.ts | 525 + ...c1dce387e456c70c622d782820348ccfaeb3e6e.ts | 249 + ...c21357211237ccc1687131e6dffbf13507cbd9c.ts | 193 + ...c23c2a3ed280e486b392c825480f3ca80048e58.ts | 294 + ...ca5bbc16be57c84d9cdf891977f1335743cb15b.ts | 120 + ...ce870403c4d6de06afba28d120adead7c745740.ts | 16 + ...cf98f205bef3b9638a9a9a5478a8e7a8015640d.ts | 105 + ...d321a0a4adba33947519f81b8af557bb503605c.ts | 146 + ...d816bc760832c0fe6bc2230610af872d6e7d6df.ts | 37 + ...dbb802a102789227da04940da0f89fc2919e418.ts | 19 + ...e17928999646c49e71cacee35d6f7300f2ed537.ts | 15 + ...e1e03ae78ebbfe81bfa16175375dc339d7de73c.ts | 31 + ...e65ba6a1badcbf82337f6ce08d7db46840f01b6.ts | 8 + ...e6975a3e1e93bcf7fd065bd50aeb3ba090febed.ts | 9 + ...e9135591954e3f36b2ad538edca5efb30c5f399.ts | 56 + ...ed31e79626ae13ed08a2ad28a04566f63b8209e.ts | 36 + ...f01369bec49c7c256617f9c898a2237480d78d3.ts | 67 + ...f7e7afce1432e6216cfaf131c293d8014e1cf77.ts | 7 + ...f9c4f913f47c870b1038321feaa3e30417427f5.ts | 29 + ...fa8cd676047f7f29262998a0ee917bd73d3f8f8.ts | 139 + ...faac7b86f16e26d4cf5cf5dad053117f49c4877.ts | 79 + ...fb9ab46a6bdc3718b6d297ce2eacf806691d512.ts | 81 + ...fd52323a08a88e89c1ff539603f0eed75300fee.ts | 18 + ...005a6d40f4bc8caf70c58603c1a2135d75706ef.ts | 193 + ...00e0269d9d6f5d1befea624dae464b66a63e24c.ts | 6 + ...0581649dac8affe51fcf5a43235883217da2b0a.ts | 437 + ...05a90266a6d4a5b289292fba043bdea1b49c9f8.ts | 82 + ...06693eaf8249da89dbe5b5602a459c2b201e843.ts | 62 + ...0797233c86ee71f9bf0465b49d6765039d35241.ts | 71 + ...0e98ad1d69691a1006049cefb69176b0c3a630e.ts | 56 + ...0f27cbd543cd8d4be680b68be6e0c5d6a04b9d5.ts | 79 + ...1481be06561c8a7d11b106a25d2ba74561c235b.ts | 34 + ...18689de8c644d3a599c7a38fd4be5dd96f18bb1.ts | 133 + ...1bebc1ecbb5f0562022195fec7cd337dac9f4bc.ts | 26 + ...2078dc54e160b7508f30445c6a994ab4ca44b11.ts | 30 + ...20d587c124ae7c593e51318e74da3d05ccdfe78.ts | 214 + ...22e83ee81927e56bf78a36aa037927244334e69.ts | 177 + ...27c3edd2d4f57fcb724cb0d4570f62c64e2479a.ts | 61 + ...28981bd87421b166442a2e592aa2d9c4ba63289.ts | 69 + ...3076aa9c8b206000e1c7cd5784bfaed4bdb211d.ts | 12 + ...36fe966941dbada4adbcb3b39b36e9820053fd4.ts | 58 + ...376f4468129b626d419e1689092b6a9cd39a421.ts | 33 + ...38e80d5668ae33000a11c6b9df3ebb7a0a295a6.ts | 8332 +++++++ ...3a212fcda1c5760ec9fd0abf491a9f437de010f.ts | 37 + ...3b79ffa51a489b4f445c2d70792926aa72cefab.ts | 714 + ...3d4a0242923a8a5fd3817333aaacf70249a429b.ts | 65 + ...3f2b932572129fce06d40c317798e27fd41d530.ts | 28 + ...4095c4cea1623e3e80d0153bad17f2dbe3b4432.ts | 191 + ...41979b27ebe2b6fbe8705dc8acde05a391cc8a1.ts | 34 + ...41cf6700b49ed12a9eff2f50b70a1a2c1d45478.ts | 10 + ...437d620a4033f13beef167bd38d53e02df0a457.ts | 15 + ...493c8b3e6389118e9506c6c4d43d44b26563f5a.ts | 34 + ...499ed96852f55f691866315153653b4a3f3e326.ts | 20 + ...4ae3e95fa054e68fb3c5015cda3abb44b3f59f1.ts | 10 + ...4c549a91453ea884cd0c323fe30ee7440cf1fca.ts | 18 + ...4d15db35af119365ec4f1e66b00f0ca9e987e1e.ts | 54 + ...4db5ba4363156631c0a5fd07f97f4866ab95108.ts | 23 + ...500be1ad7006d46daedac7bb309f48ef8bd425d.ts | 39 + ...50193df2f3c3414df9ac573ba9bbb491ad71f65.ts | 39 + ...55abcea65d9140c2148f1d92f5ca51de145d797.ts | 5 + ...59e0cd641e6b4e1b2be30d58c97fb84f34d1580.ts | 18 + ...5c03db3854bdffd7b6002c0d286f204481cb1be.ts | 33 + ...5e4e2aa98d009b187a72395227719f9f1253b56.ts | 20 + ...5ee64b7b0386674b60a4f24b5cf5bab4bdd8967.ts | 58 + ...6013a2b1079ccf03a50f620f3962be040163986.ts | 29 + ...6176fb1ac4911a0f4e4da4a7c6167053713e1df.ts | 403 + ...624d1347cc0ad3afc872383f6408aaef2a851fc.ts | 5 + ...629bcfba42545b2ee1ce8248bc5aae68d58ab1b.ts | 29 + ...63a9a8b625e8c5c9bd057af13a2afa7616cc824.ts | 10 + ...65999f43cb76814155ac60062f88fbc05597000.ts | 36 + ...66601f459daec6af60511b9127866218f04922f.ts | 33 + ...66f2a705fab3a19b2dbb218dba240a4a8682841.ts | 45 + ...76468d184f239cc6918fbd8539cab6b97b67e3a.ts | 71 + ...7a7ae05e9cfd3f6577face85df91cb015e83b5b.ts | 18 + ...7ad5cba6d36c8e443fa705207d29e851d61568c.ts | 64 + ...7c99d9dc1553f1e5895d0d1ddca39df9d88f8b4.ts | 5 + ...7c9be5e57ebc3b7a43345f000d440c4864abc6d.ts | 54 + ...7cc413efc498644ea24f76da5fc760031209e99.ts | 17 + ...7e099029b8bcf692e95aeed7e7a0583672d2ca0.ts | 140 + ...7e40089c43556862776b8260f22fefcd3c56ea5.ts | 105 + ...8d2b1efed0ac364f10f08623ebb0a3b806c9515.ts | 47 + ...8d81ca8b3ebdc9ebf5722a7e77dc0a3f1631e79.ts | 92 + ...8f14b5c902f5c2804b5d9908ba501ac85035f6d.ts | 43 + ...8f8248fd33fa1fba094673e020d5e3736299e99.ts | 45 + ...91789659e854539b2ef863677ed886d9630b3e0.ts | 64 + ...92270386d4b9fafaf84cf40e0fcc71fcf47471a.ts | 9 + ...9c23e5bdd8c6f9c5b43be87c9be29acfdb96d75.ts | 1801 ++ ...9ee41c649f759a8c80ad7ff3e9aedae374e89b0.ts | 34 + ...a19fba544ec06977bb86085de674ce408e02f6a.ts | 51 + ...a303ac125019e9022c442b85052ab759fd4a86e.ts | 46 + ...ac066d3f0ad434161827a16a20b19da6d22082b.ts | 37 + ...b6db76640b287c88c926b3e0ed529474fd6c381.ts | 193 + ...bdcd609e81178c17d4acc98807d6386857de858.ts | 8 + ...c1f385f47be317fcd56c78a920aed329ae26cbf.ts | 41 + ...c74f411b9d10093fa640009fd812f68a5857673.ts | 13 + ...cb26fca2ea3e82ade0ce6fed1820c64bebe5a31.ts | 44 + ...d796d9f2c522b2c3efc59d3b1755eb7f2f12ca0.ts | 7 + ...d9fb2ed380c62a979ede05f13c8d944d31e322f.ts | 75 + ...dbd05883dea58125dac08eec329300c7b32871f.ts | 34 + ...dcdbd88740911debdaecb6b14e9bea1d344b3c5.ts | 23 + ...df0d7a78c7d560dbaba93c58d63bdc213a4aa79.ts | 55 + ...dfc590142b60eee0cc23a51bf3e3f7c7cd54454.ts | 15 + ...e1dd502b1cc10e22235f34fdb8eb03d90ec1eee.ts | 39 + ...e6d32a1241fe3c0eac9710c89ffe38e03d8637c.ts | 214 + ...e84fb8a7c5b83ee72d199d3112ff89b01713798.ts | 27 + ...eb550f1f2eb561ec557ba88538c0c5ebc656043.ts | 20 + ...ed3edcf8cc4d25e48cc1c92eb91dedfa06eb97b.ts | 53 + ...f3f862ec31530edd43a4113d3105b62bb74260f.ts | 193 + ...f576d004620e529e9fe4b5f00eb14e7aa07218c.ts | 9 + ...f638d54f05451aee3a17081046597bf45ae0ce3.ts | 994 + ...fb2bd80dc822acb788f4dcbc8d254bcece5bd58.ts | 259 + ...fc82c04c3da476b57cb6815993113e94aa5fb7b.ts | 21 + ...fff27d7562ccc464f0749d51a915fe30323be39.ts | 65 + ...016f9dbae6daca0ac5b0a94caeb0aace51f7748.ts | 144 + ...0704641c81576d268079355a67d613274b7d7a3.ts | 23 + ...0b9eff0e637acf1f4eef040483d3ff3c159b770.ts | 376 + ...12159cca395c89550a8bf4dd96c59caa7a0491c.ts | 16 + ...13ad2ee1d96e794e75ab086ebbc44a621318c0e.ts | 4 + ...14dd2006ee4835291856b75f53266104d257c72.ts | 35 + ...17d25b1356f5415c8ae59cf11feadb4b161d74a.ts | 19 + ...193cd2bdcf4d4a43841bfbd807ffcb37617a43f.ts | 85 + ...1a3278cffe125ea1d39ab32b68668328582caa0.ts | 32 + ...1d50db2db9f158f1437cc38fc3506a9de0bc11c.ts | 224 + ...2f25bed9413840ab7090f43c727ec0f6141247c.ts | 23 + ...2f62fbca0fcf140695b1347dd3443f4d08e85d5.ts | 9 + ...308baec008c11e5d9fdd35e26c857d4b6de6d23.ts | 36 + ...30cdcb3788f30348526fcff522f787686532e60.ts | 621 + ...31284ff6f206e5b6cb8434500b5e93d5189dda3.ts | 56 + ...324fe55cec9116cd64020166b666c670ed52c49.ts | 53 + ...332e6f272be77a67cc92a5fc04e228c158f6435.ts | 1003 + ...33a1e88e36f7711de7e0ef6d06ba3998e3b7d0a.ts | 156 + ...38b32b0d6751f3aba67ef524c04833e96350f2a.ts | 87 + ...3c1ee29889dba621d84cfe6545b2d52344176f5.ts | 16 + ...3f37665c0a570d9251dd8146fc132832d09ad3a.ts | 10 + ...409c3f194163c446592e150bebb737c3d28dfec.ts | 65 + ...4f90a6d01b8280ce5c99f6f4b54af76a92032ef.ts | 49 + ...53fe96d93f20d7016601beab985b049123de5eb.ts | 125 + ...5665d2af519997768eeb1310050bbda412864bc.ts | 37 + ...5a9b9250391e1c51b7bf168cfd5a4ccf8bc6a47.ts | 8 + ...665c34a77935994e17829246c0ca4d9001c1f09.ts | 114 + ...6ffc1e38aa910376b9584f63a3fe04af09d4fe7.ts | 1813 ++ ...7016f4c5b86b703da27b18afdbf5491171f7452.ts | 45 + ...70ff5282cd842f9478906c4fec8a73a179ad85f.ts | 108 + ...76d5cb8fc5ce22551731ee11ca4b97000e404a5.ts | 21 + ...7907cb5b328a3b72865b12faf143c5e3c9f0b95.ts | 358 + ...79a48799c6e8fbbf20c3cdebf4824236f52f93a.ts | 42 + ...8561c8769391140d14b971167cb9a2d66855bbd.ts | 67 + ...869d98ee939ba8e5f6c333c8d745063f17cad68.ts | 252 + ...87fe90be7227917481e81f94403aeafa64835ca.ts | 103 + ...8facb91d996ee56dd5524610c52c74c61afd8a8.ts | 451 + ...97bfd04da400e57d24beffc37e6a510d3516424.ts | 123 + ...985aff73012127ae1e5c05ce1f7943e112b0656.ts | 29 + ...9a3bb90a2d488faece7beebb3f3d741aad15536.ts | 71 + ...9bc8d3c8204355079b5a33fe9707ab0d0f1c823.ts | 193 + ...9c8f9ffb2769b7c8a38b8c028eb9644e7e0c7ce.ts | 5 + ...9d5df44232646fd9cd0e6f61c854f6a4caeba26.ts | 37 + ...9e6408e62dd4a64c2610648e8cdd49451d8477b.ts | 31 + ...a54aa41e5f75d772cbb60a6a9b5981a978f8316.ts | 115 + ...a5fff78dd6609bd3add0404c6be987ca110d756.ts | 11 + ...a92d2bbef513374c4cf97a7173aa0df19e6ba6d.ts | 35 + ...a95075c98085ee5ba5712ee0dfc4ac915a9b4d8.ts | 75 + ...abef5534b7bfa653115e8c66598b8eb530dd23a.ts | 612 + ...b3c55c32e87549332177095420f778702ea4d1f.ts | 37 + ...b9748d7d7c6da0df8807cec3546472da2134a55.ts | 205 + ...c5ca0e5731e16ff5197221fe61ba6beea163fc0.ts | 52 + ...c63dc11abb86dce3f2c541c3aed34ac5cb562c8.ts | 21 + ...c76992410f3623cd49b48606cff60cd3d96ffa3.ts | 140 + ...c82043323fc0bedbcef878efd5f57ac474a167a.ts | 18 + ...c9b37ee49588ac69071cc12105286e561114082.ts | 34 + ...c9e6d78179d2bb95ebbb9a342dccfbab2126bda.ts | 12 + ...cc8d5abc567d953176a286c2b3f91548ed40f0c.ts | 8 + ...cd9b64ab6e8c7cf1faad4e63c46c2428391105d.ts | 13 + ...d2a1bc97acfa3d69ad0b0475c6239291fd39ca0.ts | 32 + ...d2d497b9e6ca45db50ecdf91e329bf9b7213822.ts | 30 + ...d6e3c83a4d819014cc598e48cb57b1d54598e41.ts | 279 + ...d93b712ae58fe01ffd8de872d2cf6ffd56fa336.ts | 128 + ...da7e4179d6ebcf72f22a4885758a4a7c7a68367.ts | 193 + ...e02da7d9a12d1b73a86ce9548a7dbeca8611eef.ts | 44 + ...e3be7f995d1941f802cf870ffe35abf0fd95880.ts | 11 + ...ed30952b4eec3c021dc83fa5a602ff0d6bb4d2d.ts | 139 + ...f5cdcfcb2729cc827f25c504e9bc61290f17beb.ts | 991 + ...f785be930eb0edcce28b7f5e8b1fbb94c2c66bb.ts | 179 + ...fb76e3b0f12955adf1974932fb23da6d5456b02.ts | 49 + ...ff3546c8a86abae4076ee5b0962adba04573216.ts | 52 + ...0ce90699f36d6eff2a6c46552dd71e7290631d0.ts | 71 + ...0d944ee426f6b53f2d4c0b7a7677fd234ea0d71.ts | 11 + ...0e6e3414326f598d7fd3ae73751015dfcdcfc66.ts | 20 + ...0ea2e238a1e02016791fa7797e01956529e54e5.ts | 83 + ...0ec615fc998552dc25b92f8d0949c54b286dc0c.ts | 30 + ...0fc45eac1469f47ed6e2bbaad4b323e856fac7b.ts | 29 + ...0fc6a489f364f69771cdaa068b0d481258e9b3f.ts | 90 + ...142b5e1699303d9d84903b5d8ab47e4d70e663c.ts | 1570 ++ ...15b11d129b5e8610439feb319f9820f27f70306.ts | 35 + ...2626f5ab048da5f313379ef7dc74db490c86368.ts | 47 + ...268c7e75a2e2b6b207972e91e1818f60f33d058.ts | 119 + ...27ac559077481e0855e6f712e8c46361a85e490.ts | 66 + ...288ff294ba8ed53e4c4efda5e662ffc01756ece.ts | 44 + ...28ff8733f5ead137230cf0c8f86e809c228b794.ts | 29 + ...28ffee6293481d2bff1a2ed09801d3a1abfc052.ts | 160 + ...29a56db8af6ba83faca60508b76ed8fb7446737.ts | 4 + ...30b0d9d18a858f20ad758d2bb4d880bcc059e75.ts | 44 + ...31ba630c7846259801ce6754948849310ebca5d.ts | 87 + ...326ef2822310f4c45eb62e7ce056e016af21a3d.ts | 33 + ...33d67717c5a69e4428cb42c110b4c06e9712ad8.ts | 140 + ...38a6d9c6b556b00c459f48cea0da3d9e21089f2.ts | 625 + ...3ca7b26f6949136fe4633683d1debc8213f5e06.ts | 4 + ...4185d797ae420ea1d5c3946abec64df7d3a03b5.ts | 36 + ...41e999c2223615484075b574cf34570a0c89864.ts | 13 + ...429787bd696fd73d9b3aac10919c5df3f520668.ts | 40 + ...44b4161bbf7811a35d53227fa5d18b8bc839169.ts | 257 + ...457995125d5e3a9f63d6a2d2d90b8b371e74529.ts | 58 + ...45d1700c6aa4cf8381b39afe41d8b0ba349cd81.ts | 6 + ...47ee1ee9a119786322a592d6c4e1fc0ca7d115e.ts | 161 + ...4aaf231df4b43ed999e7cbb5db5b23c5d80d693.ts | 162 + ...516a0933927c8bb50491290e8ad871b598bc25e.ts | 15 + ...5a09d3edec940e550a53cc2fc6b79419f52cf2c.ts | 79 + ...5a49c36734c6483c1dafe3da4ed02d08eb9d760.ts | 20 + ...5d7fba44d172af771e356390597c38a03950209.ts | 10 + ...65c80d8365ad68f50488cadf6649efc0f59f839.ts | 190 + ...67b1c64514bea54c6365ab7db8939627efb005f.ts | 102 + ...716684acab1eb2fdd7e36b899e9e6a0361a075e.ts | 128 + ...719960671d4134f36546c84e88a5c128ada63aa.ts | 55 + ...739e3441df81d7e6ddbd74c904691517977a6fe.ts | 12 + ...777851f3834ac4a4f81b2acdb778752ec3f928a.ts | 48 + ...78fea5845db336f77ced80b6b48eae199ebbc8d.ts | 228 + ...7bec4aba036f0df48acd2f84301cd14dce3e5a4.ts | 36 + ...7e75abeb0935a7e603b3aee76c69dbf5ea3aba1.ts | 36 + ...7f325f1045f10db067945514a4ae60517e3ce32.ts | 47 + ...867251db68a6e8929f60c1cf45bd96109ab62b6.ts | 94 + ...87b83630681d76c8e78522f238e3fcce049fb9e.ts | 310 + ...8c5b416bfde22b257d6f022e6c4cf5d851d7b66.ts | 34 + ...8cbff1a9e1020dacbcd6a03ae67dc7e6a73d859.ts | 51 + ...8da6671c3e8a1636834854f1846665dc4bbb483.ts | 31 + ...907c635cd12c220e483739546c4f04a82cbfb00.ts | 383 + ...97001f12d71e4c4e8a98064fe31d77d1770b26e.ts | 18 + ...9e49d9b9195ef9857dca11572c83f19fd547936.ts | 54 + ...a0d8306130c99ee1880043fd6cc5ade300d9e39.ts | 41 + ...a243672612ff73045bf20156419b1c7b0a1b7a8.ts | 36 + ...a587c23dd78b12d7bf25fe5c9f81f201c37ea4b.ts | 79 + ...a6bad27291c3da2998cc6c05254e4925b125609.ts | 112 + ...ab811f3d3ff29b5d650759606c1f0209392bd63.ts | 57 + ...b2579d8a3026571b5bacb92e31dcd7f2cfb38e5.ts | 48 + ...bee4bd5d97fe00b434fd4fac14c6fc4a42f8da8.ts | 4 + ...c2b751ad023e6ef3ede6e8506946a9f3ab9cd3c.ts | 59 + ...c61afa8a2946ca929f48f053138ff8277857f27.ts | 28 + ...cf72f9492fd78ae10c035f645ad94afaad3049e.ts | 33 + ...d08212d5162c9627e3b045ba6127cac017b6afc.ts | 41 + ...d28bb2a8fb12464b92bb5bc2fbb8deb5fad5e8f.ts | 163 + ...dc8dcfb18c36709ac2ee7dbd5a740dea496568f.ts | 41 + ...e108499452c609eae73c7ed3bc8a4d6ce54df63.ts | 262 + ...e31a2918532132a6449050c765bf43a792a6a0c.ts | 525 + ...eca0449dae8ea36b1d9ea82a6597d181a32bbea.ts | 30 + ...ef18b720e0ba0e8a0407a06aa49d9cd7a97799a.ts | 23 + ...ef5db3b2ec0d66b8c68e671895d9f30a1607fe3.ts | 6 + ...efcee4ff8555a18e9fcf191f19cdf865871b8db.ts | 24 + ...f2841d4c20e73058dc5af777f3bdecd2dcd3aa4.ts | 445 + ...f75a4ca6fef72670fb344d6a0b5e5cbef7949a3.ts | 62 + ...fa11413d04e197cf530446beaf8dde8b9587375.ts | 142 + ...fac710df581a532b1b7923486b7649d579f8c2e.ts | 32 + ...fcc6eaa764ef6a22fec790bcb37a88c1112d02a.ts | 11 + ...01d10bd522162964c35a761ffd2f2e54df8eccf.ts | 54 + ...05d13b0775b642a83cd8da22d68d4d68a4965ca.ts | 55 + ...0ccc81704aae29e48347e035f3deefeb7de22e7.ts | 40 + ...12a6cda523d22548f22cf8337cbf3c80af0f658.ts | 52 + ...142aa2060fb12d396785890a64e6b3b3d7b7994.ts | 26 + ...15f356f842ef09da42d267398da87b4f0019166.ts | 60 + ...1612551ea837f2d0dc8cfbbfd6b4177dc401a0d.ts | 38 + ...1b129f07d03ecfec2509af9441d6588b8ced0d6.ts | 120 + ...25e0e29d6dae5035ab13911c3f6c4496af88160.ts | 57 + ...2ddd7b200c85801f31e4a4798295a16f324ec34.ts | 47 + ...2edd56e998026f10cd5fb77f1eb02f0410709ca.ts | 278 + ...2f626579e4f8c26431d13e8da8579fd9228acae.ts | 43 + ...329d145946b1ddddb0e84874f5dbc86072d3a95.ts | 42 + ...347172b9485f4da7366eae189c05440e8d9ec39.ts | 16 + ...38ddce03727e795106fb99f058ae11d42efa21a.ts | 194 + ...39958f85653b276abfec51177db58a3996e2193.ts | 18 + ...409234992ea48dc58a0f8f30f6b08c0c535071f.ts | 4 + ...41d1bbd146ad945291e6c1f7d583994e1e44285.ts | 29 + ...420d2435521a43a909d5d8a46776526091ca5c0.ts | 34 + ...459e810bea30149bf1280057af32aa9b050d027.ts | 29 + ...48a58c2984bd7d27ea15c473e55e801450fc9cc.ts | 144 + ...54d712edc81e1bfd44eef3805a506fc835e7a6e.ts | 20 + ...5700b6cbaee4263179b938d27c9c14d8f5afa80.ts | 5 + ...5d24f382c4dd36762101122d065bedced2d6232.ts | 146 + ...5fe091944617d00cc0ce57aadba74a1052fdf2a.ts | 30 + ...654fe628f534340c69d172782bfff51335db83e.ts | 9 + ...675826af19f90236204fd06eaaae434211b517b.ts | 122 + ...6a584c0573e2e222005eef044716416cb824de0.ts | 231 + ...6d2fa7f6a53835ad5226679a241ddffe11402c4.ts | 49 + ...708aa3e2303989a26006e521225c92b5b1305ce.ts | 20 + ...7535c9ba13b33d06335169fd4ab52afdfb2f48c.ts | 53 + ...76fb10b423ffc0a8e5fbd4eb2e126631d26f397.ts | 39 + ...786d34f39415771516f7cbe2d830da7239576d2.ts | 25 + ...79730d47cf622bae941db3e5b1b0508d990c167.ts | 8 + ...7c928288561e7455d7c7b6a7d6826dad516aaf8.ts | 85 + ...7f288bbab9b0c486e6a0b3c8ea960e61dc2685e.ts | 157 + ...7fba0ec9aeddbf762691643b51aab6e01fc60e0.ts | 39 + ...89cb7875e5a21b59d5170a6acebc13d422a83ac.ts | 151 + ...8b7f34467fdf7fc6ae2fd4621a194b88066c1d8.ts | 44 + ...9826eb439990f095330b27e4d1e482e027286a6.ts | 46 + ...a20bb778aa21c2e0c11377a881e264e52df3bb4.ts | 42 + ...a2f2436bf8e4f3a19617fef400c6f27d1717586.ts | 66 + ...a63fd022ea28b5ddb53c05710432e9cde5ad3f8.ts | 507 + ...a99f91525b888faf4fd5be47ee962e60d54ee9f.ts | 162 + ...abb61cb0e87796bc9d4e3209ae47044374d7054.ts | 44 + ...af9f1beac9067e787041e0d18537f73dd1e5b5e.ts | 56 + ...b6867af5d41b661e35987b3b1cbe5d7c968b500.ts | 18 + ...bb05c5b835d07cac75f0883a39c9743152e5cfd.ts | 64 + ...beaa516044c946762cb7d9cd267f17e372477a7.ts | 38 + ...c2137b462f10687e55924368c59d731a42fc5ed.ts | 32 + ...c2a46e068dbf4e6aab4080efb335923e28821cc.ts | 96 + ...c3120b7bfc5fe89efe08f45ccbcfc4c43d19422.ts | 42 + ...c60eabdeb55ac9437e7e9ffd585e41cc9e22cf2.ts | 11 + ...c84e9245a74ba5977c1cf3f13c82a055fb0810f.ts | 43 + ...cad9def703f3f8ca75d0c9f9dd5aee5ee9f54da.ts | 14 + ...cccd34eee4136df7d2d2b9eaa3904a8da44371a.ts | 73 + ...cd0b5ee8ca721faa0cff7d88c03c20988982306.ts | 373 + ...d292ad393bc391f9f3f669e7fff1f44413893f1.ts | 51 + ...d705585e60808ac127b186551171080b840de50.ts | 1004 + ...d830a87819dfc99b8f58a0d4d30efadf5f1fa5b.ts | 21 + ...dc90f905b76f3949ac2d764328c049546d036ea.ts | 270 + ...dd9c5f714d6acdba0026c02e4d960987639bc2d.ts | 55 + ...e159932d1768f7fbd218488f0c9850b5362f41f.ts | 1225 ++ ...e3b0879dbb8217929fad6d58ce816aef5dc99f0.ts | 33 + ...e71fc1ab3e65011528b5293819348b409ed66dd.ts | 146 + ...e8334e79454fb246421227d887e97533a0c72e5.ts | 259 + ...e9d6583508483a1faa9fbe4a0b21da60f6679da.ts | 23 + ...eb55af4dc5102f1c15cf9251165b5886e6d55d3.ts | 33 + ...eb6cbc6e8a4f063a14998239969c408ed878fe0.ts | 32 + ...f3c2a7ec4005e4a5f70f4c3c97bce9208d7ff03.ts | 72 + ...fa516c4b18c3dea64a583cb739a8dcf05e8dc0f.ts | 37 + ...fc728960b621688ce2f4614e845571538a2eb25.ts | 72 + ...fd3e30b262e3e7302d3dcba244808baacaed9ce.ts | 42 + ...019e8f5fa8ec9f1f6e9fac399f8d6e612fcbfe3.ts | 10 + ...039b9a77e6b1dc6bf8e5a8822784f093ca0a21e.ts | 13 + ...0528b15f7de0ab87ac7b5115f9588f0b4f1bdfd.ts | 153 + ...056969db90d847542e4b5eeddf4ada0b5516643.ts | 38 + ...078dfefe17fcc0e0db64d8e80e839a885b108be.ts | 19 + ...09715257bce4b5f1ac2a32ed67a6643af215831.ts | 170 + ...0c370d38bd92a781f4511fb5c9f00dfbbcc58f0.ts | 358 + ...0ce03471a94cad5d90a747f54576f5ac9b873df.ts | 280 + ...10fe05df59983639d2fba76188e16798e5a90ae.ts | 81 + ...14c897c247cc99ff37cf3deb00f9584b76bb808.ts | 33 + ...22b5f7aac3f5c747b6671c9b83c20623b5e9804.ts | 107 + ...2302aee2f4be0793fef68ba297edfe23ac4b272.ts | 27 + ...243d23aecc4d9f5798b7604b10ff3a5879cf0ab.ts | 21 + ...2897f055a87c27545600578ff624f3a597d0bbe.ts | 525 + ...29ca8bdf0e04d5f285d44d868b422fcf28dd8bc.ts | 36 + ...29e9778b67063ad104296ceb03655620d0798f7.ts | 36 + ...2aa2ea224ab15081a36313c8ffcf8b43d2bbe47.ts | 42 + ...2ca017d610e882401452cd03ed1afd2826dba92.ts | 16 + ...3c606b9343c0c7fb21fc911c8188c8ab6a8450f.ts | 18 + ...4739ed0dfdba3a3ef0253d4341f848d2b9d1fee.ts | 18 + ...5160638be20ce382e11e3b363c25e3c192e2711.ts | 226 + ...523b0da484f98437113f77e4c725032c98cf6fb.ts | 28 + ...56c554ad54951f2e2edce9f63603257451e7673.ts | 42 + ...5a6eef65797e61b302a185f91d1792d86c3e97e.ts | 39 + ...5efacd3b01ae2bec96353858bc543e6a6055224.ts | 37 + ...658df173df2a224ae3f7239f17771261507be83.ts | 445 + ...66e79a62dda0af277aa98d552d9cdde889000a0.ts | 466 + ...690ca445ae96ec0cd3f3b45436c134f70c6aa6a.ts | 20 + ...6b66edb91ebd6db54ce6aa59b21f51319c5c7fa.ts | 256 + ...70c2c5563cc9193ee224d296df7f47443319d4c.ts | 40 + ...71df4d383788df8395a01a44b7d68ceef33a84b.ts | 41 + ...74c40a9e71a01d2a563831bc6582bcb9203c543.ts | 322 + ...76ca21f9dfe95b39bd838a0ef3cb4d5492970ee.ts | 30 + ...7838e1b8c6125262a0b8fde9af47c141631d52e.ts | 37 + ...78d3084a2ef9400c44051b01f4c1749775180a2.ts | 173 + ...7a7732d167335b1c63600e2f4a2952d1d6e896f.ts | 18 + ...7d91a1d53256cebf2c84f83d8194e2a482ea896.ts | 28 + ...84bf8333e90db1b47f57bd57d21243e0272cf50.ts | 43 + ...870059092be4b5fbad851363384611d318b8eb4.ts | 13 + ...89e70748d5935241dc952409e3c1ff1f791c954.ts | 507 + ...8f609065e1433082a58fbf574ea48c62937f7f8.ts | 40 + ...90899c5ecf9b52e9a64ffe2ebe754e51f098603.ts | 32 + ...923cefabdb9c9a61ae5a8f9cf6381213c1145a0.ts | 59 + ...963534787c8f203c77e0d04f568635833e067c3.ts | 53 + ...9a547b1075f830fa033112c246ded4c8d51b01d.ts | 64 + ...9c2d371ac6abbe0b7853f5e8928297fa977247b.ts | 8 + ...9e3a6b2946feeee82d0c7367ef1967c478ddfa3.ts | 15 + ...a0db62b4ef38511465a571c2906b0d8054c9287.ts | 41 + ...a9220de99ceee497dfde4dbea20265f6d5e69e6.ts | 180 + ...aa1378d2b64eb4f998d5dd70f98cca279fc3306.ts | 34 + ...aa27c2de3a7c563aabff926fafb3a9cdc9307ed.ts | 935 + ...aca037df0cc7e83b5d889b1cba0df7fc387931a.ts | 231 + ...b0b631884b87a1f42892b9d007f666c4fadf1ec.ts | 31 + ...b468298855589bb9ac923c33459943a7596c8ec.ts | 120 + ...b4c357e1f3c29d25626790c9fe35e2596813eca.ts | 12 + ...b8b4797e98f9bfb7d53b8a7086ea02ea511df95.ts | 27 + ...ba5a538dcd7ca54b8108b80ebdcc7bdb61a462d.ts | 44 + ...bb5445f66f90a6bb17ea85d14684d0ba9a7b119.ts | 4 + ...bf633d8fb10f64d13c5969a7822ff777f8c4d3e.ts | 15 + ...c7273e31e9ae68fb3c750625e62f70ded4166e7.ts | 36 + ...cb634fb8b96d87d8d1839dfd32a2ee7084cf7aa.ts | 17 + ...cc13d148135efa61f45bfa4931c308b8e057a12.ts | 71 + ...ccc59a2a0435d6aa188a14df30cc43e4ee521b8.ts | 12 + ...ce6dcd37c624f56a71789362eafc2186f8232fc.ts | 29 + ...cfb1d05d24a281ab8bbde0886902ee1f2bdc37a.ts | 14 + ...d61d39a0baea90ce1528d1f7c3845f789ac7396.ts | 36 + ...d9bc7139a65144209ea6d09bcce351435a75fe7.ts | 161 + ...de3d856c31882977158cb69c3ef16a5b80fd976.ts | 48 + ...e75f59ec68f7f35e428dd589cacf6a9124a097e.ts | 252 + ...e95cbd6f72bc3d00eabeb208656be46cf55bc90.ts | 44 + ...ee2dafcf0bd78b86c85553073f2a8354a049000.ts | 47 + ...ee985510d58f81ae25b09a502ac96a4b2d945d0.ts | 7 + ...ef1ef36741f0138205fad9e3db2f2c77755df6b.ts | 41 + ...f10b35d6f568026075877c710884d1eba1121d4.ts | 68 + ...f12ac454c69f7afb74184149dc89ad59a2120c7.ts | 93 + ...f29dd9767780568d1f039c184d5ecc11958e9e3.ts | 72 + ...f51e700c9ca5d3530b589bda2fee36ee9441455.ts | 17 + ...043e7581e4be85d4ee64019510c7fea2a32f92d.ts | 212 + ...05317965c1121432be9c1713e3371315fbda0e1.ts | 49 + ...0a9c9736276898e6047cceb97f83dfb0197f116.ts | 383 + ...0b3ab913f2da591f92d7c859d8138a98c46870d.ts | 8 + ...0cb1cab22150588787552132815ba0adfaa9f25.ts | 49 + ...0f53c973249fa46c589bba3ed992682a61da5d6.ts | 132 + ...1090b86764c5193b1b2d03876f65c8a484c76d5.ts | 33 + ...168b0f663b05a2aff5713eb265dde722651c7ef.ts | 192 + ...16fa84a403387609691baebee6162db555a49eb.ts | 25 + ...1745064f6aff60fdf50815e4b14d6d5d6772d8c.ts | 26 + ...1e3d21226328ca899c8d9b7f50176af9f0f63e9.ts | 14 + ...20887b7b6b613d2656b487efebc04b646d470ec.ts | 307 + ...20ae1cd188fa121bb7310fd04d1c44c622b452a.ts | 29 + ...2104f5cfe96d1e328d590e309094302175c8ff1.ts | 391 + ...210984b6ab8a23314ce3a9c6a383ff61baa2b56.ts | 114 + ...2770b20e27aa55cf9e8a86206eac21c2ca74223.ts | 147 + ...31e1432d013dcef458190f0d8157c996963cadd.ts | 13 + ...3344efb9da95e08758beadfdf7b40164049e343.ts | 27 + ...33584c12e32941a6e6379a4a8d3be362140f70e.ts | 72 + ...404e5c250663eeec42fcd8b8dfe25560269f725.ts | 32 + ...437cf9a8c17626352d164ef4e7aa14af842055c.ts | 32 + ...45959e8749b8e98ed8168e128b2c7f880a13d15.ts | 18 + ...4d6921a7a08ab2164439921d0dff2bccc62f26a.ts | 250 + ...4e8cd9d25876e2f27c7cb15c5f2bfe99ef9b071.ts | 30 + ...55a64ab45359e86e46ee653bba1d86590a5ee9e.ts | 39 + ...57983204e1f809a3eff59710d532b336db31a98.ts | 72 + ...5e653c908b9df7f1b2c5854561d1952f8063d88.ts | 390 + ...6183832e1c1eabfeb9a327eabfb7c71fe40986d.ts | 92 + ...63ac6803f6683601e225a1db29edc8524f79c45.ts | 58 + ...65acf04f42400a5376a539be8b8d1e31160a2b9.ts | 34 + ...672dca036a1a85042ae087924f4de32d7effcc6.ts | 194 + ...689cd691e6cbe681e9a187f0a719fe4fdf83719.ts | 36 + ...6a65c32e97394852b9a0acfbd1a9dd2c516ab00.ts | 34 + ...706f02c673b871e257a62af5e9562e5c87ba103.ts | 27 + ...70d4a0c36d27b43eba85df18c90649a7eb11fc1.ts | 63 + ...71ad67b1292c7fef31a0262d6031f68234c2d54.ts | 212 + ...788148ec19b2ebf1fcefac5e7cef768245b609a.ts | 28 + ...7ad744d28ef0a37229c636201322fd02edcae4d.ts | 64 + ...802ec9a09e10f17e42d7e1abc40374079df674c.ts | 55 + ...8b1ca56d7a7bd15c58997b01e24112b0fe9baee.ts | 44 + ...8b6994eee1b6ba8a74a7b0461d930066a48fbf1.ts | 274 + ...8bcd6288eaf9241602757273e6ce0cae3f89f22.ts | 120 + ...90518e14164d26b969f8df2555db8f9ab2b4f60.ts | 33 + ...908bfc1c8b682eb8f4cb3ce86534748cc75fe1e.ts | 32 + ...90ce64f0f06c337774c0110ec715b8b322fd010.ts | 16 + ...922f58353cb797ed32e711f48b910f4d15e4f32.ts | 15 + ...93268d85a61c7cf2a9f287805bf3b2e034b45ee.ts | 384 + ...95bc3fd6eaca0abff1a4380d03c0cb37b0fcca8.ts | 383 + ...95edbcb827d78c6c55bb679a9be33c6763c438f.ts | 75 + ...9757bfdd62aee27fcd8d0da2ec1571c3b5637c5.ts | 7 + ...9829961282894c30686f560abf9c7f08e1483db.ts | 18 + ...991bc996063c32bf9ff0e51251ee2f00409835d.ts | 42 + ...9dfebe5a40cc21a267c2c8cd2a03403cdd599b7.ts | 40 + ...a208af4ea18f9dd34a64c594b7863ccfb6dba7f.ts | 63 + ...a72e428bb685926256311dffdf9fe2470a1ffe6.ts | 48 + ...a99e09ca02d3d32967d4903bb3149ce9af83fcf.ts | 358 + ...aba1372e4e33e435fa4882ec6684be5733b35c5.ts | 120 + ...b17363cba3a9fed3ce8698570e6eefad91ee2c2.ts | 398 + ...b6c92d1ffe8fa39e1c40cd3fb7843a20e00c9c2.ts | 27 + ...b88e3ad5eaf64791413d2c0e3efcc0b5602a9d1.ts | 31 + ...b8c4b16b87020b0182a80a60fbb71bed38b814d.ts | 5 + ...bb10f16e8dab6b0190a0debe09d19af608b861a.ts | 961 + ...c0c42eb8874d03c69f133343ed02c75dea2f237.ts | 18 + ...c6d3dce7401159ca2464ee9c9ccbaf708abcf33.ts | 62 + ...cab55a17f5254faba5748f703c932191eaa5ff6.ts | 125 + ...cc36fe910e1ed8105058e19c939027bd294a425.ts | 48 + ...cce674912502cecf7c33ba73855470d0a57c93e.ts | 8 + ...d17d1398e494d3bbfa9b2d4cf1af3d855a4d95f.ts | 51 + ...de64dfe13621179ef8559e19b3dd613c5da712d.ts | 268 + ...ea150aa7c1bee858a5a9a293f4068a1dffb6633.ts | 390 + ...f284e68b94120f1bce26fcc89c3f6f2847eaf6a.ts | 49 + ...f2d7298f8720126964df61ffa573ce9dfed6e10.ts | 22 + ...f42b966a6c08b9e204808fee514bbf37c44188a.ts | 239 + ...f441564279e27b04327725d089516c9045b90c0.ts | 49 + ...f521d1e81648abf9a455b7ed098e034f697884c.ts | 721 + ...fd1ee984a6faec6df21e8eeb8848f8512fa9a4a.ts | 99 + ...ff66e9be3083faddfb752397fccb71a7f500809.ts | 32 + ...023404be98d7776261688a96d643ca521f7bd68.ts | 34 + ...07fc48ca28e556adcca084ee40f7e652d4fe4c3.ts | 25 + ...0cd953338b5f75ce93555b731d80e127cb15f8a.ts | 812 + ...100cbe58f455002090fed192baa83b8a471f524.ts | 12 + ...10c0c2bc160551bb9ddae4049dd7707df449cc4.ts | 383 + ...12f197f584c32e84c4a91178e294941eaa27f33.ts | 41 + ...15e34e2df22b87f06994f00c9b4e0e9e912d5f8.ts | 34 + ...172f2cf0c39fe54286e353190000b46f66147fc.ts | 31 + ...2c269b8eb8154e77fa3e29616a66f12457e0d99.ts | 18 + ...2ed8b69988a34e5280e092db717ab4a77651b79.ts | 45 + ...31fbd5a45e548817df35e52c3e911f2e3481f8d.ts | 470 + ...347b9844739d6f8cdba667c63adc3985638179b.ts | 136 + ...3538a08508a6bc6a8e87897cb875847b761bd81.ts | 714 + ...398bc9afb1566b85f6c9ea04c369eafa7482e65.ts | 114 + ...4420c1f014d74f39f8f0b4beaf283f65acb1bf2.ts | 10 + ...44f041c274af69fe87a62141a54d150e7318029.ts | 40 + ...4519cf959e83e6291af0f91a44c8f17dd4d1cd6.ts | 212 + ...472e1b4ad1786b59e6e86f728927fca9dc86475.ts | 268 + ...50c78d40dc985f77ba8402b211ce55d4beb7863.ts | 30 + ...53c93135b6bda5c5240206f42d74d37558bfb2a.ts | 44 + ...5523baec54c0e7c65cea0b40e8b2fe139d8366b.ts | 19 + ...588eed3ca4a864679bd2883a537f4f380a903e6.ts | 241 + ...59c0cb02e0d5033a3bc649628ff97fa458e8457.ts | 30 + ...5bf2b575f845e5f97a11bc711bb2df0bf2739a9.ts | 373 + ...5fa8bbda465712e08bde0da9448fde9082f38e1.ts | 26 + ...600798754efb2758cf4433489970f7e9eecfc4b.ts | 46 + ...61522e99211280d0617220e33004a5cd7b58cff.ts | 26 + ...630bf2fbe9fc1622490ed06eaa33196ccd5b560.ts | 18 + ...67a9ccd77c0442381980a8e0b247e162ac57ecf.ts | 20 + ...67ddd6a63ce844336904b9552353dc7bcc25360.ts | 37 + ...6cc48c158de625fb396045db3042a95a705e98b.ts | 30 + ...6d07026036b391db737b44a8b79d5cd4844623d.ts | 15 + ...6eef9714db48a30f7a024aab133a04af95c9d4e.ts | 57 + ...7515f9cebf42e8ed896aea96ab9ac152e4390e2.ts | 49 + ...7ba54d20badad2eaa355b56939a37ff681c2f27.ts | 41 + ...7baf0178286c6118449c632aea9e35a66c5a78a.ts | 117 + ...7ca6e09cde14717854459f3a9112f88912d9fb1.ts | 209 + ...7d2993a1ac0bc76e0740d8f42a7065e807b5419.ts | 15 + ...7df95de00127c2edf9189aa2588824ae8365d5d.ts | 12 + ...7e781048374a1526e9c9dc782aa263d4fb81c22.ts | 525 + ...8144b3b08999291a196bd3e205d7e6905d412db.ts | 47 + ...8475c7bbef4930e4b56114c49fe84e5fb942b24.ts | 7 + ...84a80c61546d201faba63612e45400af5789596.ts | 44 + ...8b5867dc1dbb41f4e0d2cb9e6052378956bedcf.ts | 39 + ...8d58fc58316e43fd2e972bad3b81ff041bb3f36.ts | 32 + ...8f52e784781a1fdc50f65e2a0650bfc86914b0b.ts | 8 + ...912299d2a5fe3e85b18a8068bbcc876ced17c9c.ts | 34 + ...93264d24375855aa43285f47e65738148517f85.ts | 8 + ...9c32e5ce2a4e9d581d49d62465001439f02a00e.ts | 87 + ...9ca7a432c1f3d078a8e8413e1e8ba93e217ffda.ts | 4 + ...9d65fc0c0411e5bdba1dc5c9cea11108d3b7ce4.ts | 33 + ...9f0183616f01090c1da3ab6e723d7e54164de6d.ts | 76 + ...9f7d4485b66931dd3408895cfc56d3eaf42ea5f.ts | 4 + ...a1a114c48d412edae56e1371a8d58054b2a3b8b.ts | 23 + ...a48b0e5f38c0d40c54cd7527604688c830803ac.ts | 191 + ...a78e7fb0bcf6549a37d4d10feb27e4a7a2487ce.ts | 44 + ...a86d8c5015cd12a56099eb91069c8ecef2d3103.ts | 257 + ...aa2d6eea1656f58e38f12d3539f969b17b7c96b.ts | 62 + ...aa7bd40c129dcc02ba34363a825753f3d3ec09c.ts | 53 + ...aad61e44f7f9751276af72e4b7bc23f83950609.ts | 675 + ...ae50acd6710f077e24ca6d09970d763c25e5dce.ts | 32 + ...b03e15cfa5da6261e350adb534008c26a438522.ts | 138 + ...b373f5a8e59c75021b33eb6fc831e871e423dfb.ts | 53 + ...b5889b5ba8d979ed755e2a7de93a57a3cbbb769.ts | 103 + ...bb89421583483600946712fe2d2f62a5690df3f.ts | 38 + ...bccff0d21f1fd7191d294b619fd66ee7663e2f0.ts | 239 + ...be6eaca3e5eb971b48c8b7305c23eb3a355b1b3.ts | 24 + ...bfcda31d95d7e064185b599f326ec315c10a7c6.ts | 12 + ...c1f5a3ee5a5d243110abff55e35c590cd3e4653.ts | 29 + ...c381e1d7c2d8e6436dc318c558aa6324dc8ad35.ts | 154 + ...c554e0a029de478e1fc6dd631cb28495ceae983.ts | 34 + ...c6e72c1b5c02205ac61be1a77f6e3dd8de7b5f2.ts | 64 + ...c753304e273d1e52aaa9d1b9dfc484f5c8b85be.ts | 8 + ...cecda68f08527d42336f71bf97a5c205f5afa9a.ts | 445 + ...cfdb3b65ae0e8483f2ad7341b8c0f0fd3f495e3.ts | 87 + ...d0e9841e38a9db45f76d7150cb539b43bf187bf.ts | 64 + ...d19cffd14f75acca4e78146263c090a69aa1f8b.ts | 15 + ...d39c3dbed4105c56b0b567b0a9f5dcada1dd360.ts | 14 + ...d5e9a05651dcf1c78f42aa13d1d4670b2d3f279.ts | 200 + ...d6d5c1acbb2717c8198f49ec672c9a770d7ec0c.ts | 65 + ...ddcdb43b255c33e82cd5ba6b84aab5163bc53c0.ts | 28 + ...de6ff4d09eade5351116ad8848614003fe79f37.ts | 32 + ...df2d46d6a7d850911106bdde9d797d4043db0a8.ts | 30 + ...dffdef85976f57517f47539cd7fafed508fe11f.ts | 10 + ...e36f05790a94dabab7195381c49135a6395df44.ts | 18 + ...e75c362415c966a02970d3c1a67639b59e574c6.ts | 28 + ...eb9cd4a2ad84d4eab0171ad7698d8c30bde9b3c.ts | 79 + ...ed75907032872bb5ba621789b35bd1fb7d79d7d.ts | 12 + ...f066e1cbefeaa6a9a59b5ec351fc9ef618459e5.ts | 16 + ...f12a68c948f655914e8dc66d2f1a838897c13d7.ts | 20 + ...f16c5f68bc6d92b8f58bb4046cc5f7735a24f40.ts | 23 + ...f2702d20291c40faaef6ea5e15ae52132e12808.ts | 21 + ...f629a5e349cbbe89c05ba06c8b0f5de39d9de13.ts | 51 + ...fbb02dfca1ae4b1039f0c737256773e5978aac7.ts | 330 + ...fed3186d8d4df111727ab07305af7c6ba8d90ea.ts | 278 + ...0106891e5e1552cae529dff7c51d6df72ac6664.ts | 90 + ...021cf3a9bc498aef7c7438a0d7d790c0d6f9e8d.ts | 39 + ...05e1cdbd705f9212e8163dce1849842f82d9e66.ts | 358 + ...0cf49b6b1c6ffc1b70e866f123da648c406acbc.ts | 26 + ...0d10a65fce9496ef900f85b245f52ff507b9c60.ts | 24 + ...0d7d04c906a624c1dc1939575abc9da396f948d.ts | 191 + ...12d86e54fc893b9d275f17892a2962f70e7b169.ts | 4 + ...182768bd362127278228ab5beef4074f8cd52f6.ts | 200 + ...1859871f9151fabaedbb685dc3ed931daad3b94.ts | 50 + ...195ae14bfe1b07bbe964b4d60ad7f2e90532dac.ts | 29 + ...20637e84a37a448be2af5fef8d4677c3c6cfc51.ts | 51 + ...2113260c45138c2949f38ba6fbe55627a0f9253.ts | 12 + ...23b63af8d11297d01a07776c5436bc350feb168.ts | 1042 + ...24663bf6bc39d346498c12b1236261ea6b2aefd.ts | 226 + ...2ab55592a01b67ce2a240bafd09d5b932fe8c25.ts | 162 + ...2d74c15d40f7f8179ca4947d83479e4bdc9c399.ts | 1801 ++ ...2f815fe98af39816a6b27070eeb2b9709944f2c.ts | 20 + ...33ab8033b02d812ab4aaeead09b0e7dc1a8a75d.ts | 390 + ...37a3a0bb73875ad1e9c87067442fc1e595d2d3c.ts | 33 + ...3940634e1db5312cb35d8936773a13aa8f5862e.ts | 58 + ...3da55a6de8a63adcc73ce1f6f6af3b68e1c78f3.ts | 59 + ...3e1e2fd01c19702b6c9e8e1d10f65992bc2f99e.ts | 166 + ...3e64f9b72d453b4164078933576d2f70995ca8e.ts | 58 + ...3f9e891c25758f49962fd90d39838ce511dd3c7.ts | 36 + ...3fc479f331dd963cd2b96063df6bf047890f887.ts | 569 + ...40c5a3c54fb7a4f9bee9c63f2076a54bc3dbdf6.ts | 358 + ...4164aff01e96a80a3d439b3f8e665836444e7ef.ts | 58 + ...451b711a14917283d138f2916e827d24744f455.ts | 40 + ...5148cb5ed654f7a17e5486c6eb668bef01a6f61.ts | 33 + ...572afe664d128054d9f0d85fa85f6b5a2d30fcf.ts | 78 + ...5e9f8e3047eefc39748a281b603987f4dc61107.ts | 183 + ...5ea2e64a33d3b89171d7e97b5a3da5f7e35c842.ts | 4 + ...609961b5238d3311e10ded9ca571259424ed9c7.ts | 48 + ...61b66c032f511a7681d30d9aef6d0f2d2857c29.ts | 127 + ...65330432ecfd22d93c10effa85a2590e4276026.ts | 60 + ...66539bb982f09dd135ffd55f9bb479dad8b59ac.ts | 22 + ...672e815afb2a3ff8781497b2d765f83fe1e3b54.ts | 42 + ...69c5fe18f144545ed62ed05bf508f0f48197cf8.ts | 146 + ...6b67896830a42fe1517a5f9c1bc677006d5472e.ts | 53 + ...6bdf95cd37a0b5b9820816b6e042c39c1fa8ac6.ts | 37 + ...70b1bcdeb0360ba6e7371ddc1e91e4c08e8bc01.ts | 38 + ...71263719ffed2b2db7e81311a16b493aa383f2c.ts | 114 + ...77bca47ddef1fcb5c0f6a204c98106198b772bf.ts | 35 + ...7a288137584b146ff370328a50b3f52efb7036f.ts | 721 + ...8075f908e7e00e3eeb3c41f7b28b4424ef83e42.ts | 8 + ...847494aa9da71deb1b07cc642be3516d6bc2ffb.ts | 28 + ...87cd8105f83d28a9715932f46a1ef3699df5d69.ts | 11 + ...88af64c689473291055effbedab4343850440f1.ts | 13 + ...8bb53835a776e1b7a50418681bd5406cccbb02c.ts | 7 + ...8c2a47022ff45cc5caa70c4e2f3a11b1bdda24e.ts | 16 + ...8c4d5e8bbdc6be52b26d6a88107512351d67064.ts | 522 + ...91daf3f8133eff220b094d690b446bbc14739c2.ts | 10 + ...97a47df59b9002adeeb2fa1f11cf389ada1b1c6.ts | 38 + ...9f21d25b654bd4c86619cabdec3c0d45b4ef019.ts | 63 + ...a12a97e0eea5f7ff4cca4685863a82f6d6198a3.ts | 37 + ...a25816f309cddef2a346d753305c16d34053aed.ts | 99 + ...a5bd8d675520a5bc705a1f96e4b85ed9b0edd69.ts | 10 + ...a715edf303af3b4386d042f774b0f864b3938b0.ts | 34 + ...b76fe5b3790c291801543be78d0405b0f19ed78.ts | 72 + ...ba9ab0a8e3a433e8169fe3db7945664bd79de68.ts | 390 + ...bbd951977a8ad31538f05f6c7ec04894c2e3acf.ts | 28 + ...bf6021d68f594c20f3f8783fafa2d429520b30b.ts | 128 + ...c017a41bd63bc3b49e8cbdd0be35d392ce75701.ts | 546 + ...c286d9e2cc76292ceab3b84df5a486bb0494346.ts | 41 + ...c576bc5246af922b4fd960cbebb1bedb3be0d31.ts | 62 + ...cd062d2444d67ad282c10a84a4d704da08a2744.ts | 33 + ...ce1bfacd0b55d73787f8630d4f88041e8cfcd6f.ts | 47 + ...cf896e3589f50e963c2723a443b9cca9dc5538e.ts | 19 + ...d15bc013d4193c11121d419363a38f336be6c8e.ts | 42 + ...d72ddc09bf0f35aee37f2c93afe50696af3776f.ts | 14 + ...d90537fe0028554aa6e1519cf352e1fba78a793.ts | 15 + ...df0d2e399f8d7c793709070de508e24f2062649.ts | 20 + ...df87e565ee7a426282f93a7ec28ea663c7e5db4.ts | 29 + ...e1fb10b588091a929436de10f3fc075e55f88d4.ts | 47 + ...e797042693c0b5c88a1ca99ac035871c81a2b86.ts | 296 + ...ee2452e02044e29c1091ffcbc1987bfc1f26590.ts | 23 + ...f087d5051889a6d69f23afbd21a71b5404cb489.ts | 18 + ...f26180a7209b57254c13de13162caa8e19bf704.ts | 40 + ...f2a37ef07e3e8a83b6530d4386673abbb219336.ts | 34 + ...f663c1664c07d528fb8fc022f62fb8160f51cc4.ts | 42 + ...f9df7e6f822bf022b8ed7e294f3f3a73d81c315.ts | 76 + ...fc94379e2d25f12bc541b9d31eede397fab8ff4.ts | 136 + ...fd3a1b4f79d3dcf88d272eaebea420121f8317a.ts | 39 + ...0b8210b83aefc04b73ee9fa1d1ebc8de9391a85.ts | 97 + ...18661d7eb643f6104206b420eb0ac8a46bebb79.ts | 184 + ...37969bff548aa0c0a1b73a5ca5e291f5d4c4af4.ts | 4 + ...438b5f961de03f95a53a53af23c718a3d18c57a.ts | 209 + ...5c34e6c84ca8541e96f7338d016abe200bac381.ts | 4 + ...636c695d4f8dbbc30ef08154bfd9abaa99c79ec.ts | 83 + ...6847255afcede06bfbae89a4a9fe97bb5f660d6.ts | 105 + ...78a29dba312ca58834f62aef5bd1655878de18f.ts | 60 + ...7a53727cdbc1107e8941e8e5325070abb27294c.ts | 4 + ...7d9f109d30943a7c7a7fd03f70f69c3f425f357.ts | 5 + ...822d0e538627ec12c0decc6466807dd1f53d079.ts | 112 + ...84fa13af44f1ecfeaff67a699ba7dedf9ae7a88.ts | 74 + ...987430dbb3b0ef91e6bc4ca3a679ffd66ec1912.ts | 126 + ...b0ba553d848641fc04f090eee16e2bf1cf6f74e.ts | 88 + ...b1675bc124cde8a4a7f97964efab5a393f8b9dd.ts | 298 + ...b7e941fba0142ef7b838db3cfd99370b9047b22.ts | 51 + ...b998262153d42604549524eae443e05d967244e.ts | 4 + ...b9b5f7b4bff03c021f0565ff5908780a92b6923.ts | 203 + ...ba37bfe765e3bfc21bd6a965bf07ba28d2f1be7.ts | 85 + ...c2021cc246c0238a4b0b37981aacf7dfe8d57ee.ts | 165 + ...c34b330f5a123d3464419f60d906110491b7b62.ts | 37 + ...c9650fcecfa652181a675ba86188f925726d09b.ts | 89 + ...d631cd2bf9b4650d9afbd6a2b60adc3b91acbbd.ts | 59 + ...e641f3fabd0df971676b1bd5a13f5e9ae1ea172.ts | 218 + ...f7c1025d0d543650d1126fa957c1d763d771649.ts | 4 + ...06a306d511b1605d7b0e43c7c52563168fc1bec.ts | 20 + ...13e1ad4c4e50d91d7299a272016ba2794aa92bf.ts | 26 + ...1740d766bccaa7cacf6cf9e2aef2d4a0333ddd5.ts | 344 + ...1966db5b707f204e2655160f272fec1c6365342.ts | 57 + ...2ba289fb703720c2c235a7062bc5794e18b8fb1.ts | 137 + ...2e2da4b9419041e1115f75894c9fe453bd518e2.ts | 472 + ...34015516d9f972086858ac38d5477d52d538a84.ts | 49 + ...42b2239f926b005f8667efd1c8a857c472e1c67.ts | 232 + ...47da43907c0f6b94f24dee646a4469387c22bad.ts | 157 + ...6637f5c74200df1d1a9610b4ae6fbe83b2749fb.ts | 29 + ...70d6d69b2fe9111d507d4c00eb437fc151f4e13.ts | 36 + ...75d2db63c2a8d0b904c4ce191066ef9c9fd76e8.ts | 174 + ...7b45bf76e1540114c4d09d98eadbc0c53ac8fe5.ts | 35 + ...978d01125b05890423e00306e689c9eb0cf9fda.ts | 40 + ...98dd6cb0a59550eebb01b996eae14941667c319.ts | 253 + ...9ab3eea15211f07b82720d7ad0f087bc94dc709.ts | 56 + ...c58971a21fd1158df4e5f738d1700405298ee3e.ts | 50 + ...c807e0060c40efc5fc37fe64857cfa3984fb58a.ts | 377 + ...d374f59907afdca696482cad7600ffef57418fd.ts | 26 + ...db0504f968b651bfd0ac4c66d1cef23af711459.ts | 751 + ...dee1ddf1a366439bf2d8063cd39c3e88409d113.ts | 4 + ...e2f766b093efb461039c6f091896d94c0ea0da9.ts | 194 + ...e7d6c3f7cb4a32b71581d6d6f74c12abda508a2.ts | 119 + ...ed020d2444e619d020056c6d7da82add39648c3.ts | 25 + ...f144d37f686dd826baedea1c588e6fe9b427e56.ts | 40 + ...f1f766536a6d48b3ac6e57667ac28c7c8493481.ts | 207 + ...f890880e548b3977fe905eb1b05019115125238.ts | 4 + ...fefdc1fe0ddf8107d4eb8f6ac915f0e7ca66a74.ts | 24 + ...04ee89e8707f4e11edef830494c22e89fabf72b.ts | 471 + ...073dec4bd52ef2a246e1e8469ee51bb1354925d.ts | 231 + ...0cc7ed74aea77ad3291bdda5ca0d3c48acff6aa.ts | 4 + ...144f88db55316e3a015d67c5d203410b202dc90.ts | 5 + ...14eaeb1b3b9f9f57cad3e28d9f7a1f7b66c7a4a.ts | 87 + ...1e13d18cc0a3d17448d2c60c6eb7e64e2035e09.ts | 265 + ...2572aa69f00d4cd00e81c8237c5ea61da7f4577.ts | 1444 ++ ...3560df076797cf873fc1e6a358a47e6b8496a3b.ts | 76 + ...3bcdf59f6d6ef51b1971f745ae4c55a749c15b8.ts | 104 + ...3ce8ab4a87f8211822f180cfff031243cb062c9.ts | 12 + ...3e14537266a75e92df9bc1b8813f243d1e6d4d3.ts | 12 + ...51a32a6bfaa8180caebb02d6f627cf52510ca3b.ts | 285 + ...59884233b63423f7426c41adef49eb8b6612351.ts | 31 + ...6571d4047976698c61fed52c748398c855dd6ca.ts | 63 + ...6c8b319b17ce4a1d86ae8cc656ab38c3afe3669.ts | 87 + ...6f07536ceb03d5c6b1b7cb116a8acfe4a1ebcf3.ts | 404 + ...6fabd47cc843bca963ac54628ac9cb949146d47.ts | 87 + ...8a4511b80f0953b21f5a12cfc0f965379f984d4.ts | 206 + ...905e9578fdebe1cb10781e564d3f5095c01667e.ts | 95 + ...9729d1269b68a56a2ca9466fb236602c0a923fd.ts | 86 + ...999f16a48186b3c66dbeb316fb75dc9b2a5c801.ts | 241 + ...99e747f60e1163ac5ac447a93d65b7b2077bbbc.ts | 91 + ...a1f6c7c77d0cbed3a9e788ef2e17c9f8534ea47.ts | 20 + ...b8a686167d0b335381beb945b46fd348eb81c1d.ts | 390 + ...c63594727d9c1762b381f4a6d45c71634539950.ts | 289 + ...c7d5ae163c86f14e28e338b6e96e7a18893c63c.ts | 88 + ...cc408e85ebebb7c074b84cff544fdf2433a395b.ts | 24 + ...d19906e6eb6d5adb05327f7748cb59b94a0f5f1.ts | 197 + ...d3fc0b77eb274d586a17730a4934b7c00baefe7.ts | 127 + ...da5ff24fefffdc3033b7a6e220392770341c7ee.ts | 100 + ...df04312c32a81c90064f322476016816daf74e5.ts | 17 + ...e0155d7d17ea45686e0f7748bf3090ee9d43144.ts | 299 + ...e32d30a6c2ee0b30b7709a7fc29f1638d59c77e.ts | 53 + ...ed946d2ec094096061e0b6ee1291e33b0df9d37.ts | 253 + ...f3f0622e83f68c822d37c32bea34587fd399771.ts | 49 + ...f413751767e603965e13cf8e68213e03771b86f.ts | 46 + ...f7f386c233557fe9485425d947ccdc0605cf243.ts | 196 + ...f9b240167cf50ab79c10c160677be9febe7e8f1.ts | 129 + ...01081e00d3cc912c0ab0716f3d044ec8f1db4c8.ts | 595 + ...0dd8d263bc8e17a8fd95d63b0b558991a6ac1ec.ts | 213 + ...135e95083b4d47d7caf160c31f77d9219e6ef5e.ts | 32 + ...24b94943535de803613f79b640b511d50f552eb.ts | 287 + ...2b6ef6882af954688d0a93a87afb63d5cd464a2.ts | 4 + ...36df93c2a634a9f28c546dccbf769fdf6ffe950.ts | 215 + ...45388a9c955486e1759ea14cfc8a2492462e0df.ts | 139 + ...4b6300d71f6bd0ccbe2ac6a53ac39c647054cfa.ts | 51 + ...51ce680217c0ec8fff040750b788357bf7aee68.ts | 143 + ...5fdd53761b52373b1b3937056a38939fb407824.ts | 10 + ...610611abc9ed995fb98b528eef857d0b5fd5305.ts | 119 + ...7208513d893687a829cb7e388e61f4c7f81ee0d.ts | 42 + ...768d350a69187e333d1cd30bed9471f0c000a8c.ts | 67 + ...7c807880b012ade7d52676367399bb122383abb.ts | 408 + ...8301ffafa532c11f9fe7d936fc884ef4a4c4059.ts | 63 + ...92edbe3d655d978c96c96479476f4fd12ac96b0.ts | 389 + ...9d2dd490d1a245f67b152b633ad85b4a73aa296.ts | 167 + ...9e6dc629e6029774192d2848c5fe5658f1b631d.ts | 51 + ...af250e73e2037ae5e77bef30947655d3a8f61b7.ts | 1521 ++ ...cb4695a7e5b75801a20659eea940e02d21b8af6.ts | 67 + ...ce1840b9199964183770c8844ed4886ef92df13.ts | 387 + ...cfe88a56d90dd41b6fb076d419e96c259d2517a.ts | 7 + ...d88a83d06a756f74bf648a0ef0297de8757be2e.ts | 66 + ...dcc7a1dad884808a1a9be573744a49fc20eaded.ts | 62 + ...e13d09cf724c5e13cee8fd0ef477028556881d8.ts | 185 + ...ec253d8190bda5bcb5fc3be5177d644f248aec5.ts | 2126 ++ ...f28458484ac3c357093a5cb2ef16f5e42e838ef.ts | 79 + ...f48b89ba64ed8ca595438dcc9a08bdd35ef5acc.ts | 91 + ...0575abde3929cd4b786d1720aa1ba1eab4e27d4.ts | 63 + ...0621ada605966bd2ee8eb4a73ff081b1b44d52c.ts | 98 + ...0fd555cba18e594b3b7c311577305778808127e.ts | 89 + ...14aec87a2dec0549c58e51ed81a3bbae6812913.ts | 4 + ...23eb5f919605b2cb58d87defeabc37259a4d3e8.ts | 60 + ...2892cbe6573d32792b2f12098320bbaecc1e5fa.ts | 2312 ++ ...356aa4b23a18b695cc43ed2440f5ac555a6ab80.ts | 589 + ...378875b195e741b3243586038662cc52686e8d2.ts | 153 + ...52683f6517db228f8f39d0f824526c3fbc632f2.ts | 261 + ...5ba20410efcea8a255dfe392f78d9697dd2e145.ts | 109 + ...601ec6897cd6e13ea2c2884c83b5a33d3458aac.ts | 64 + ...695b0f754141c49f18b516f74b33176d7341f45.ts | 40 + ...80e15d7d0de6b2afbef40ca966dfb63d0213690.ts | 4 + ...86337a96cd07e1b79cc9e1787df73eaec563b8a.ts | 240 + ...8a0e901dcdb20c0434336e7996949db99853960.ts | 781 + ...8e601b6094eda224b4d67b019f312d0aeee7e18.ts | 21 + ...9704a8292062f17a1fa69f93f09bedf32956bb2.ts | 17 + ...9975bcaf84f60d576c6494958f941735f954a35.ts | 5 + ...a132cbf3802ca7f0c1c2ac046515c806d11b913.ts | 28 + ...af8bed9cc94537d462ef618b59e3b45f2f847f8.ts | 5 + ...b9f48e40db95057ce259334f8869d81ee9c4fa0.ts | 421 + ...ccdcea6ce1ecf9d1878766f186dece90b13ce59.ts | 7 + ...dff4151934dfa70c00b232ebf3d475eb57e329d.ts | 112 + ...e4068173450d5d9f982490ce26d2a834a374a51.ts | 102 + ...e4c23e4a3496ce18008768794de976c4d45f08b.ts | 94 + ...ea06329c3f75b8f5bb3e7899da62b3442619d16.ts | 62 + ...f8acb7e927304712d8ca27ba5944e5926cd9c13.ts | 73 + ...f9041d60b9213c42a41fc41ae4a3d257374d18b.ts | 7 + ...fa5f08006aa1f0af03991c66e39a31a126ab901.ts | 30 + ...0251705ff09da8f029f8115d1e693f8a10cb483.ts | 120 + ...04a2237913cfa381d749e08f7baf9859c4ceb97.ts | 39 + ...080784a888b2fb533364733d979dd9f3aba535d.ts | 121 + ...1673e1218bd13a8e0df2aac54819414634cd856.ts | 218 + ...1945687aabb104a57e9b146e36c8a16ec06bfba.ts | 64 + ...3f2efe9d5396903ea43465e3d5da0fed4037bdd.ts | 29 + ...4a91810183b431d3fff704a5819cec59a1c4686.ts | 95 + ...54725ead8dfa131627d9a47703c2521e4950bfe.ts | 413 + ...5588803c618345bde66006bc7653c78e1a103a7.ts | 718 + ...67f0327cc8776c5f38979f841d069dbc8b00526.ts | 54 + ...6cbb997b1f0534e1b2d8167554a65dc63a1d7f8.ts | 78 + ...717af80622b62bed6a6eac0129d44c5ca31e02c.ts | 189 + ...8939bf41d5c33369ae37163f144ef88d0980cb2.ts | 2162 ++ ...8b2db69eb1531ab8eeb1fcf79e71c4b5d446b3d.ts | 7 + ...8b3b284af3469233515656daf61462bf5a42fef.ts | 185 + ...8b4d57b6dbfd1070ff49c0f1db75887558a422b.ts | 331 + ...9cc7f64c41773c0f0dbcfc498df6cb5ca9b0421.ts | 70 + ...9e3a186fd5614be70baea131b4bceb8c50284f5.ts | 130 + ...a0a4ea922cdd53f69f49561368af8c09b0f08d7.ts | 41 + ...a2add619c27643036195154842eef5c45ee8512.ts | 59 + ...d4c9cfe85d24650da76b19dd482cbce42a6e00d.ts | 324 + ...ff8440757ecef0fbb8133ab7c9828f5087bda1b.ts | 389 + ...18fbbea8b5cd8a5f02f80336572c8f4b6258802.ts | 111 + ...355d98e3d1021b59a8c68e37a7d16828d54ea6f.ts | 38 + ...3dad99f2eed60a72f04d6f87f755e568c3f1152.ts | 41 + ...3f07e6080a4fcc7ae3b10f853d91fef432cbba4.ts | 24 + ...4b06238be8bbb945d5f53593fd514dbb234218e.ts | 4 + ...5101dffc84e7f4ee89e342a87d25b6caff3474d.ts | 116 + ...5d6aebf6fdf221d043583390c5d8d39fb2619e8.ts | 107 + ...5e2d795e0464d74f11dd3fe596ed66fbdeb6f42.ts | 66 + ...66de68a8fd1889b92a17712679f85e8c8410ae5.ts | 5 + ...6772621962d4b6da17bbc22a6c5c8d5d788ce39.ts | 71 + ...6d5eefa77965c32199787082b71484249cbcd64.ts | 55 + ...788cd64a889c6f72bed2eacc2eb2950292407eb.ts | 17 + ...85cdb36fdf4510e64ad7e851399d7d98b74f7a7.ts | 57 + ...8f44958b7025d4e094086d92b584924781cbc4f.ts | 22 + ...933c583bef739b5d67bf4ce53f9b216953612cb.ts | 225 + ...95d3bdcd3dbbcb735d18b9a61891e70d1310870.ts | 36 + ...971d39e1246263b1aecf13a035727b1e046bea0.ts | 69 + ...a459f0b30a6943a15444af495d8d98afe2a8425.ts | 34 + ...a599efaa32a3a5d24fafa4c8c6f8622a07afc1b.ts | 82 + ...ba0a5eecd4551c525e364d39c522a70266378ee.ts | 79 + ...d83538dd19f259aed62b64200c4de05456ae710.ts | 29 + ...dcffc6b397fefc44f1d27cc84ef654589b87aa9.ts | 1304 ++ ...e2279c7e6be03e3de622bef54b75b2472860c06.ts | 250 + ...e525289c8cbfb2275b46af41d4edaf99d0a32ca.ts | 62 + ...f1f3773e0ee97456706e203acab6a27589ad220.ts | 26 + ...f505839add97302659613292c1f26b6829ef348.ts | 55 + ...f562527e40b045499c4189ae158771f73c93b4b.ts | 139 + ...f6e98d09aab925da2a46c09b7023d690d01d186.ts | 19 + ...f7da00916866e3273f97146f212548bd3636cc1.ts | 4 + ...fa8721cbb71b11d822af347a0c3f21ed9b03e22.ts | 76 + ...0277a4262c2af1eccb928a41d36c452d74d6df3.ts | 77 + ...107689bdf43502903230f60e12ad785bf180304.ts | 168 + ...17565b0ff7c78eae48cbf62b565c0619327a9ef.ts | 121 + ...2033f3a3fafa0588c183400ca2b82cc1a756027.ts | 384 + ...29d42e7dc0ba452134376363d438c5a117e2575.ts | 19 + ...3fe1777e829cc1b5502570f52408c0036c456af.ts | 6 + ...4665b275c7049dc681ddd5f37405707add90c6d.ts | 427 + ...693634a47fad3366efb7d786765be69a8c7cabd.ts | 88 + ...69843be01618de2dabf42f72e4a07140496c2ea.ts | 6 + ...71337645cd6c047212ef5a4a6438755e85aa243.ts | 4 + ...78b9be70c30a52a869ed1fdf8b0e5e16d39356b.ts | 127 + ...7bc82559254398c5e4bd015017c20d08acf9260.ts | 6 + ...7e7f08de124ba150f7e8db03d7d777c9299c52b.ts | 50 + ...82dd98bd34f473a2da4cf546f0bed2c97a1155c.ts | 77 + ...8473ee160d5c5ab6ebd9b86b6188a5e95773093.ts | 49 + ...894c787a5f38809b5d58f0616473fdde22df12c.ts | 64 + ...8a4ddfeb013a5479b659809b0bb3db0dfbef638.ts | 5861 +++++ ...8a6fdc3bfde2a08a672858a2061b1659f7fa597.ts | 31 + ...9005e012ef17670a1a5dedde8430f0280ef5851.ts | 792 + ...96ebb75260980f6d8470836c3c8a11f431261ff.ts | 39 + ...ad45e3ce32425e430c885596a280ca963e8daf6.ts | 38 + ...b1802cfe54b3727f45863c69b572e96559ec67b.ts | 187 + ...ba67199ced0dacf2c9895a928845ffe9a790dd6.ts | 106 + ...bf290d6a47ec52eae209a430ea8f88cea5aa087.ts | 232 + ...d3fddf5c20e7bfac15de6ee9fd595728cd04633.ts | 4 + ...dc0932e5d795ecdfad31ac37649a7eff65fdc3a.ts | 204 + ...e00ca7abbd488e0e7f03f8201caeb1aadcaeeb4.ts | 5 + ...e39b63962cf0d54c66059a1bb2245771cac1b9d.ts | 19 + ...edad670b878b9dce2251724b67c9c784e4f9c9c.ts | 234 + ...f09f7fd1403de574cf3212bd051eb63ca3d8027.ts | 51 + ...f15829395969d786b0a0539f10ef9e21cffc2d0.ts | 126 + ...fa77ceed93ea7dec87e8adc37f1a0071fc4b481.ts | 219 + ...0db7529a8c151d13f5e03404aff1a3b557993f4.ts | 32 + ...0e2fe19b3cd324dd8b6e513c57727c97db286d2.ts | 59 + ...270603aeea96d3dc4649a3efac14f8bef62ef43.ts | 212 + ...2810b3fbc0df904ee9433345232726207f0543e.ts | 24 + ...2953e91684abbcc4e0da6532b7871971821146f.ts | 96 + ...3d9a3de03d369ff7e37eeb942c3287523b4b3df.ts | 191 + ...3ef0af34ffda19b0645c7f32178b1660c1a1d27.ts | 325 + ...4734e66b64e2e0eca7e8502159cf854814da1e9.ts | 48 + ...47bd5dec3c6127fecd1732a9aaa094afcc96785.ts | 102 + ...5252406ae25b911103129b24c08042e5334fe1e.ts | 129 + ...5d5612280212ded7deb76278aa056fa48a28064.ts | 7 + ...64c0d23d09b5e8df61935e725d4d8edbf1dbb45.ts | 106 + ...6a77cb9b8a199f7a6abf648a4dc4ba385ead3f8.ts | 103 + ...6dc8b9806bedd80da5a7aa75e960c6b1c63a000.ts | 294 + ...71434ddb32f78e77a9edeebe4dd1cec6c1fec94.ts | 31 + ...772013f50d04910c9398861f7429fa356f47bb0.ts | 12 + ...879887208ef85832abb1f98d03dda478150f70a.ts | 194 + ...8cea0a1f4cb00c18fe1046d8b1d50731e4fab84.ts | 512 + ...9bbe900c4c0e7580f391d3b91c657dd8217927a.ts | 23 + ...9c0824bca2ae73e9c2c5c5b818cdf3ad78bc4e4.ts | 391 + ...b5d19330bc1090519e90a5f2b6bb9840393a229.ts | 80 + ...c1ad4556f34cf532e5cdf146e16e05a07066d43.ts | 17950 ++++++++++++++++ ...c7a7300e2e91ffd41cfafb710e14a25d652795f.ts | 26 + ...cbb5e2229ffcfd4094514ed0fb70ae329552467.ts | 242 + ...e0368763f7a75540caa28fc453d13a2b67dc529.ts | 255 + ...e897cd1ad30cb15a71f435ece360bd381d2d5e0.ts | 41 + ...eaa6029119298c711af0ca8918bad73e3df066d.ts | 112 + ...fcf44c47ab46cfc6859da1f1257e7b7b2de1225.ts | 274 + ...026c2a2f36e25d7c026db94d26e5d0973808b4f.ts | 988 + ...0abb124e78ad16ea8069d6420d1da0dfca724e3.ts | 100 + ...0d5cf868a3676540511c25213175d43559922c9.ts | 189 + ...148be40f2fbbdcfcdbb173b2ac58120aaeabd39.ts | 95 + ...1876fe9f06b621f83cab8be2c956b1541a48f90.ts | 403 + ...316fd4d3aa367190ca76dff40606be309a0e184.ts | 208 + ...3b84408bc90bc3c82725e969b7f54170e967f95.ts | 38 + ...4131c59d66b00584cc69c53dbb34140198e6292.ts | 326 + ...461524ac188dc000b724f41c6ceb1cd66bacbb9.ts | 14 + ...462670d319286dd4de89ee39e81384053ccd5fd.ts | 27 + ...4a618ac426d6bbcb1cc74118738b479a4e67cb4.ts | 191 + ...523d81170359ad2361414d702364dde2e239620.ts | 165 + ...531efc396e3b2452144fe11e1c3654f43c2fe94.ts | 12 + ...5967991555ab3dbcc8b8fb6b1762647c328dee8.ts | 20 + ...680d84213488ca3466352344ff25ffb67a5603c.ts | 102 + ...b424db8fb807fd9c20eace5d1f890ac5c321aea.ts | 69 + ...c3e35833ca8f61b0653f8dab772375e0840f9ab.ts | 19 + ...c9bb007d69524bc5d9c2b1d5c6268c3374664ad.ts | 330 + ...d2b230716f514166f305475782c0dd59a48bc60.ts | 107 + ...d431e87b7f0624e2af14cfd809e3e0cafd291c2.ts | 122 + ...e225376be7de9be5a01e3a4b782bd4348627c4b.ts | 24 + ...e5439e8ccab15fd61d62ad3ad47a6d58e2cc1a8.ts | 6 + ...0035f2df16096d374ae768d656c62ee685076e9.ts | 331 + ...1906e8eab861d14c26fef27cb0d7fc12f5c1661.ts | 24 + ...2283964da045aa11b75eeb61b07acf3c0842060.ts | 543 + ...4188ce06fa9a46153ea0b5a7e1f486419f1b260.ts | 26 + ...4219dc461d072599e78126072e4c8fb065f8e20.ts | 30 + ...500708b93b799b1227b43a1db7466f01b45acc7.ts | 17 + ...6811da9903942259f8eadbc01c42688ba04b8f0.ts | 41 + ...6871b557a372b9ca8d8a20518a40e422c4d1c3e.ts | 190 + ...691aece5c0c94b9f1dbd0aa87c5c0b21d3624eb.ts | 466 + ...6b476fbba3ee25e8b6bffb5281d230035ffc002.ts | 4 + ...7d3f13bb85bac3b43409fc8bbe72cca4b262ef8.ts | 2121 ++ ...8653499142ec4617ce8a742e3e2bf40a77de0eb.ts | 160 + ...8f4eff3a827e1cf1ad0be763986d8de3722c6bd.ts | 149 + ...955c857c214df6dc2d04775b29dcdad25f0c1fe.ts | 592 + ...98057429b2194ee0127cd350f8dc5d0bd3e405c.ts | 37 + ...a281fcdc48b43a4bf2354df248c6f1e985b806f.ts | 6 + ...a56445b1335ecef14fbc9e17768d369b7041267.ts | 129 + ...b2080c45b4251cdf6fd3a0bb588d9b85f5a7cef.ts | 25 + ...bbda63a7d6f2f99026f812cbb16871f9fa94890.ts | 43 + ...c3ae239558ad5d85be8600d1c4b497ed0a8ee6e.ts | 16 + ...d6cc717c4a387765fb3a40977dc0a9adafb0533.ts | 210 + ...d8f6cbfae0b5f967576c061d303529a48f8f004.ts | 45 + ...dc9d3c33fb74f2e25e896b384ffe58c521e8966.ts | 45 + ...dcd1c88e039856b981ac7a167115689616a9c51.ts | 110 + ...ddf41456becb47280f9758c79b80ed2e91c692c.ts | 44 + ...dfb51d35a5d0116d2012354ada1bd0389df37c8.ts | 105 + ...e10c9b7c94304bbae9ff1442e67e3832c88f4c4.ts | 24 + ...fab6f536359ca15bb6f8268536194c6a8aa6267.ts | 300 + ...fc012072603958a898b00900e6d1b3d94f2dff6.ts | 4 + ...fcaf9928f3ee5bac47e7c9dbe6af18c6320247e.ts | 889 + ...040eab82e75eb06652025102b7e779e0301d8be.ts | 39 + ...1876f2acea84ded886eac379effd34ae7f8ceef.ts | 138 + ...1d22b6de09448ea2e162232bda4419df83b46f8.ts | 210 + ...1e62e1d207a58f84625b4b8f6c972982bc2277e.ts | 30 + ...368ba22793c06efd92ee0b4a5b4b65f8c736f11.ts | 24 + ...40436caf540db63656aaa4062fac146a6e0feed.ts | 193 + ...51eb17a076b505bf74bfccff585e648c67515a3.ts | 58 + ...59054daa1a6ae835132695b22a5b486336f4713.ts | 84 + ...5c94d0475a77406a4cd356ef9467b4d9a6cb8d8.ts | 434 + ...653f0b6e9618d3e4fd89e0127b4fd9f5e097657.ts | 53 + ...6bac542b8274cd31cd97d9530109044b74696c2.ts | 149 + ...6d9d6c4119a365a2b2ae118b008c2e8477788b2.ts | 4 + ...6deafbe8103a53e572a91abbac11f6a8e7a29ee.ts | 10 + ...70dcb53248b38deb214debae0f61d07d394a19d.ts | 45 + ...80694fb38584352bca5e832a04a0bce3d289f34.ts | 113 + ...82073cc4277abcc7838e297ffb3d0548f46cdda.ts | 44 + ...8a1f3ebc7471e3d99af6b7e3481b6275ff789cf.ts | 21 + ...91e290e4c5e7384cfb75399665f1415ad696ee3.ts | 920 + ...ad02df1726b4907c540daa2466e038825e887f9.ts | 366 + ...bc44cdc03da1f68746d1f24fbb75de4ed1cea81.ts | 33 + ...bf16ce30fde3b8084dddd8473b523b3775c90bb.ts | 173 + ...c1e76769392ebc51e354993750e05fe8922c4ff.ts | 210 + ...ca65378c671cdfa13cf3b0b3150525e663cd19b.ts | 51 + ...dbebf1fa97a7d2dee4e478efaf0eb54849a06da.ts | 19 + ...e7a203c7b3768a3e7629dd95471c7a285dc95e6.ts | 259 + ...edbb8e56cb341a90fcffabd4d527034844f68cc.ts | 41 + ...f0d861ac0474be219b2d92b18d3e8c76c64fa6b.ts | 41 + ...f25849c02d079a33c668965b2f9202f925a6666.ts | 71 + ...f8e911bfa48ceefd6bab54bb6166fc3d6d4b70c.ts | 134 + ...fe3c30e576ebfc1e8e22d529586643e0b6abfcb.ts | 574 + ...ffcaab555719e2ff0fadc7864bda0a4b6fea0cb.ts | 342 + ...090da6cb22597ec44784180052b38a46d566334.ts | 24 + ...097d9a2d9599c38c1ee019312fee8e462dccc71.ts | 119 + ...0e026028a578dd5b8da8eb0da72c9b97b58cad9.ts | 57 + ...12eb4945df97cb93f2a9a5bbe3e29eb7374088b.ts | 49 + ...177ddc94b8e385432d88eb9817a2fb802c2046a.ts | 30 + ...2b68ac2356009e53f5cd382a6ed07d18dae3e2e.ts | 293 + ...34942dd820621b6f00a43b159bb12858e31cf42.ts | 440 + ...415fa5fdb460414003e825fe525319de3408d31.ts | 140 + ...4c0d316ca826014f070a93083430780a54d62c5.ts | 87 + ...4efcb81c335e696df772dc3697f8339b5cca767.ts | 105 + ...5b45497fbfec0f95a7d5f6e475786fa9c20a2f2.ts | 58 + ...5cb67d73db3ad6cb50e5f4d8c08a7d47bc6bab1.ts | 59 + ...5cd183853ac8d390a0d2173318fc2bfb83a4076.ts | 19 + ...65cd7a2fd0bf3807720c24dbcc55818bcdca916.ts | 191 + ...67129cc560e16f60799315814fed06a4a72b3f6.ts | 57 + ...7f1067bf34e40ce7f0f971b7607268ece822a0a.ts | 73 + ...8203b45075b7f7b5a95cb5eabe535f8da3e57fe.ts | 100 + ...86cabbe4f68e530c72082c45c4a7ade9cd6155c.ts | 37 + ...975ee8158b4dfe2f9b40a891bffd63b2dee4b06.ts | 27 + ...aa03d63d4bd9f2a41399e027ac69e563f8c910b.ts | 12 + ...b963f74fa9fd0e6ebe6d1915569a2905f99777f.ts | 181 + ...c5ce8cfeb1a3c4d5b6efa758497f2032f611b72.ts | 364 + ...c785a9248deb8c72cc9d05e4d0b027e7ac2c706.ts | 25 + ...d080cfd599e44a9e7f1c8578360398ee838c856.ts | 429 + ...d7d3577ecd1b3a10741a02bc8430e7b3639512c.ts | 71 + ...d9b667fba1bf7d4096ee99267de0aa25d536d5b.ts | 5 + ...dcb229d89721de36ee0db28f9c112b9ccf24d6a.ts | 33 + ...e1b9ec1933f38d497dfda83435040793ceb5847.ts | 327 + ...e8b89a1d59e22168d5bc2b0b0b87a8dab54f62a.ts | 604 + ...ec4b2759b5b06c11e27ea29959f27f61265f796.ts | 9 + ...fbde5fb116f1fad0f708259e8d11efc4be56a90.ts | 25 + ...0413bedcb835122ee1bf5e116888c88d587d8a5.ts | 162 + ...2e3b78a3908640a6731a68db739ec353b5b4b52.ts | 663 + ...2e9d14e56bf338a81afeac1e91b2dcc65c29b49.ts | 271 + ...307962d9748235d16269a1d835624ef7af5f405.ts | 137 + ...321032dec4f3bd721809f27c4d482ebf223b99b.ts | 33 + ...33af3cab44d8e86467293236ccb17a811d156d0.ts | 443 + ...45d45c512189b9b62e5f98f9bd39be63c004ee5.ts | 70 + ...4e5f6eda1c62073f81bf908d7d2305f17a833eb.ts | 136 + ...5a62e923eee97ee972c850f5b4dceab58c85758.ts | 78 + ...5c81ee6c1901190498bea9018afe930b2b28113.ts | 31 + ...5f76fa6e25f4d319ceb52aefc8e28cc43062e2b.ts | 83 + ...64dbe569e0e33fc4a00c430319854deae4ded62.ts | 88 + ...6a8f475ed08b6497d7f096dbf3ec68e7fd78c8f.ts | 478 + ...6ede89fc85e111f3681412476e912e8d79daeb8.ts | 87 + ...7a7deea74ac5037f20096c72896940bc7dfeb1a.ts | 431 + ...84c0384d0e9aed4b20596f0388de9edaf52ebf8.ts | 224 + ...876a5a26d8af5805297851f75766de834262342.ts | 408 + ...8806483e2feeacc68df5b3cb8f55dea584a17ab.ts | 322 + ...8a22f877bfebe90772809596182077de58ddd8d.ts | 82 + ...8bc06bcaf4850ce6482e2af927c94d9984693e3.ts | 72 + ...9e2ff4767e05c334b83f269ca1ee2c6df62619a.ts | 266 + ...a1b13e6502165e8dcb86366c358a27a309a7f17.ts | 301 + ...aa900c2e1b46f57fc1a755b47b3a1a619c2d785.ts | 301 + ...abadff7db43529f8c1c4ecbb76a0ef74e4a65f7.ts | 17 + ...bbd4c47b740fd2e1de0e1441a9671abcf064899.ts | 61 + ...c51bee73c089e5bbc5bfcfa0dea6a376218b4b8.ts | 104 + ...d5e748d0849268b90f49e3e835bf5287be8bf43.ts | 99 + ...ed43e68d7f82628c882d82697423d3694ac02bc.ts | 6 + ...f39dd29eadcdf73315d29196b9affc0b8efb734.ts | 251 + ...f8f9b3c9ae150005fa6e50ffae6ce00c352a576.ts | 4 + ...f95eff5275e0aee33ba1908c62785e1755262c3.ts | 123 + ...0dc6774ab4c62dd10931795cb7539faa71b515b.ts | 19 + ...10c91dfbe886ed5e5f5685c479a5a74ed6b3a67.ts | 26 + ...181cb6cb8b05b7c57b7f1cef4d5002e3061080d.ts | 15 + ...30c0347b9fdb79a79377059012dc461b79d8a38.ts | 90 + ...33b8c8fc53efb9c14e9e5638cbba3b493d50b67.ts | 16 + ...40c8ca6594b2671cb3d9598a95c4689f2f64d08.ts | 757 + ...7761aaa669ace0327d728aba218b76206525068.ts | 5 + ...836cc11d7e024712417bf3ca2aa950ffb22abc8.ts | 89 + ...a16ec5dfbfc6beb49a1dfdd2cb929aea46de31d.ts | 159 + ...a521ffe8dfdeca48e8e923391f0127716410f4b.ts | 81 + ...b184010b6bf949575e2e30ca15fc217997a38e5.ts | 4 + ...bc03d42e281771b76578fec132ddb6dcd7c37e6.ts | 363 + ...bd7df6a9fcdca9d939508c800286a9f874e2409.ts | 193 + ...d924f056ccf4f41cfe445aba2968559ea260c1b.ts | 72 + ...e56a4a15255cee584fb7fb7fbca5c6e957ff8be.ts | 4 + ...f32fd758010dac8c1b177b2bb34b6ddd41efb06.ts | 23 + ...fd087fd0e48d1cf6a607afeb3d76486ccc997ac.ts | 236 + ...05a5f4999bdb9f5cdcb08a34627fb1c7c03fee9.ts | 26 + ...0f2dea4a5609fd5ea2df8fd2884e1cd43b1ef18.ts | 14 + ...1dae189eb48ebd5cbc7be7a51ed4f2fdbcecd44.ts | 47 + ...1f51b95991cf87a4899eb8d732f6b822e448cbb.ts | 4 + ...2463d7a9be98bc3420fe49dc40a4fdbed47faea.ts | 69 + ...26d9e5eb842479e7a6f7c4f1c95229ea2d094a4.ts | 267 + ...283fcd977e0a30371f66c1fb2dc8443133be05b.ts | 174 + ...2abf7df344144030f286bfe7c0f1a05f2a2df18.ts | 42 + ...2cb7ec272b874426985a19f37da52118c28f61e.ts | 4 + ...2d7990efce4adcf010681acc0bec34f00cebd24.ts | 4 + ...3c14f5f25498774783a63fa9c90731b382dfbcb.ts | 4 + ...415751b4a694d7b4bc2ffdc5f65e86abc872dba.ts | 213 + ...4d5881dd2abd1289a4ae2e4b3ecb1a77b22242e.ts | 105 + ...514ad735e727ead0a412d4621ce25a3ae9be6af.ts | 156 + ...575b9cb3e9d34a889fda6a60f9351ba9bf03a9f.ts | 25 + ...5faaa2fb054ce150f0b2ecaae1271071009f380.ts | 50 + ...60323bb8757122915c6b163629d4f947adbebff.ts | 121 + ...6fb98fb1c357daeabf12a6d3eebe318a6f2f8ef.ts | 4 + ...79cb0d0d972b6c91f4b35f303fedfd9e4565a60.ts | 109 + ...7e7a5b04a9a64ba2476edebf6d383cb87ba3002.ts | 33 + ...8b58679175fe06b73d9724a10b3865193b983fa.ts | 94 + ...8d35e05496e1ded607df9afd947a0e2dec505ba.ts | 46 + ...93ebacfb508685d99b881c70655665034244d67.ts | 520 + ...b89d886bcdee625f38ba983fc8f29cf52565280.ts | 32 + ...b8f6692f26ef59a5d09cc02fdc9ae9b373c5ba8.ts | 60 + ...c228c2159b9cd44f4412ecaf41ffb1f4ca424c9.ts | 64 + ...c81dba5b0ebe63014cd95a863bbaeaa6e63117b.ts | 47 + ...e3225b3254d2184cfb161d287ba24eb7f539452.ts | 120 + ...e55ac558514044fe365a3952b2323ac1728cfba.ts | 6 + ...e71b3490cf756880bf07797f6158d917c178ae1.ts | 8 + bundler/tests/common/mod.rs | 31 +- .../deno-exec/deno-9307/.case1/input/deps.ts | 4 + .../deno-exec/deno-9307/.case1/input/entry.ts | 12 + .../input/src/graphql/interfaceExtension.ts | 119 + .../.case1/input/src/graphql/mergeObjects.ts | 130 + .../input/src/graphql/validName test.ts | 24 + .../.case1/input/src/graphql/validName.ts | 8 + .../deno-9307/.case1/input/src/log.ts | 5 + .../deno-9307/.case1/input/src/mod.ts | 72 + .../input/src/openApiToGraphQL/index.test.ts | 117 + .../input/src/openApiToGraphQL/index.ts | 531 + .../input/src/openApiToGraphQL/utils.test.ts | 88 + .../input/src/openApiToGraphQL/utils.ts | 124 + .../deno-9307/.case1/input/src/refine.ts | 222 + .../input/src/typeScript/enumPrinter.ts | 11 + .../deno-9307/.case1/input/src/types.d.ts | 89 + .../.case1/input/src/utils/deno.loadFile.ts | 16 + .../src/utils/memoizeByFirstTruthyArg.ts | 12 + .../utils/oasPathParamsToColonParams test.ts | 52 + .../src/utils/oasPathParamsToColonParams.ts | 8 + .../input/src/utils/upperSnakeCase test.ts | 18 + .../.case1/input/src/utils/upperSnakeCase.ts | 8 + .../deno-exec/deno-9307/case2/input/entry.ts | 1 + .../deno-exec/deno-9307/case3/input/entry.ts | 1 + .../deno-exec/deno-9307/case4/input/child.ts | 5 + .../deno-exec/deno-9307/case4/input/deps.ts | 1 + .../deno-exec/deno-9307/case4/input/entry.ts | 1 + .../deno-exec/deno-9307/case4/input/gql.ts | 2 + .../deno-exec/deno-9307/case4/input/parent.ts | 1 + .../deno-exec/deno-9307/case5/input/child.ts | 5 + .../deno-exec/deno-9307/case5/input/deps.ts | 1 + .../deno-exec/deno-9307/case5/input/entry.ts | 1 + .../deno-exec/deno-9307/case5/input/gql.ts | 2 + .../deno-exec/deno-9307/case5/input/parent.ts | 1 + .../deno-exec/deno-9307/case6/input/entry.ts | 2 + bundler/tests/deno.rs | 1 - bundler/tests/deno/issue-8486-1/input.ts | 6 +- .../deno-8211-3/output/entry.inlined.ts | 288 +- .../tests/fixture/deno-8211-3/output/entry.ts | 288 +- .../fixture/deno-9591/output/entry.inlined.ts | 4 +- .../tests/fixture/deno-9591/output/entry.ts | 4 +- 1755 files changed, 264149 insertions(+), 422 deletions(-) create mode 100755 bundler/scripts/download.sh create mode 100644 bundler/tests/.cache/deno/0004535d5f93eb2ada7a36c4a14755f0a944c39f.ts create mode 100644 bundler/tests/.cache/deno/000ffa42c9218a387d09c7be59f9609249baa988.ts create mode 100644 bundler/tests/.cache/deno/002f5d1cbfd5e28f9167bc34bbab797dd6d45867.ts create mode 100644 bundler/tests/.cache/deno/0046e5420144af71c85b6f4b9d027a4872b958aa.ts create mode 100644 bundler/tests/.cache/deno/0046ef139334d849e0580670a5e984a126560b34.ts create mode 100644 bundler/tests/.cache/deno/00ac2e3568aa701b50dbe03658b1969f4fa89905.ts create mode 100644 bundler/tests/.cache/deno/013993bd641a8f773adbcb8f51d7fa01cc2065ad.ts create mode 100644 bundler/tests/.cache/deno/013da1a69449f69887e4259f172d5b80f642e78c.ts create mode 100644 bundler/tests/.cache/deno/01474d64962c420e64b489dc2c1ef19664ef6574.ts create mode 100644 bundler/tests/.cache/deno/017111745f34ea7e1ee5489286bba848979bba8d.ts create mode 100644 bundler/tests/.cache/deno/01815f0bfc7c38ccb35716808b637adb22658131.ts create mode 100644 bundler/tests/.cache/deno/01dc08ae3d8fc0122627ab537a8afbd684ecbdea.ts create mode 100644 bundler/tests/.cache/deno/020be644443b8947fbca69ea92ebd2ece761d2d0.ts create mode 100644 bundler/tests/.cache/deno/020e7c93fbe1e18a705db3506ade9f67fb9bf81b.ts create mode 100644 bundler/tests/.cache/deno/022b6a900d4aee51362ccb4701c84a4d771ec2d3.ts create mode 100644 bundler/tests/.cache/deno/02afa43de67db405fc53f955efba75216682ef07.ts create mode 100644 bundler/tests/.cache/deno/02bfa7ac84cde68442aeb8e2b62e0ec94dbd0a41.ts create mode 100644 bundler/tests/.cache/deno/02f1f752554e9c3f05fe3472f405d989a016815d.ts create mode 100644 bundler/tests/.cache/deno/02fec2e21e7ad66e6023abe2223435a89f34b31b.ts create mode 100644 bundler/tests/.cache/deno/03a2696060909a82e9151b4f1aced5810a318823.ts create mode 100644 bundler/tests/.cache/deno/03afd40f15323e4a10de83fb16b022ef4d0fa49c.ts create mode 100644 bundler/tests/.cache/deno/04182eda558f91c98c91784a313ad88c9cea253f.ts create mode 100644 bundler/tests/.cache/deno/042e5ed5300c9e5f707cd1fb94bbe2a7973adc82.ts create mode 100644 bundler/tests/.cache/deno/0487c855c9f9ad28ad81c1a9f1e7446b2a188d09.ts create mode 100644 bundler/tests/.cache/deno/04c5beb117daf148add8d6428102a65050829835.ts create mode 100644 bundler/tests/.cache/deno/04d2cd119ea6b5f6e98c4d7a3c012cac22088f30.ts create mode 100644 bundler/tests/.cache/deno/04f2435ab4500b55ef683496a38c20a92bb0b21c.ts create mode 100644 bundler/tests/.cache/deno/055c51823e86235b0076115fa0fcfa6a793db7f5.ts create mode 100644 bundler/tests/.cache/deno/056fcea72bc25d7fa9eafac174ce56b80cf99571.ts create mode 100644 bundler/tests/.cache/deno/0598e2f21b0a75467096a0aa8082dcc14ba23a59.ts create mode 100644 bundler/tests/.cache/deno/05d629026c1d721c6cbc08637b23fdd0672ea565.ts create mode 100644 bundler/tests/.cache/deno/060431bb79a5fdc17dd38d75812ec1007c8a09ac.ts create mode 100644 bundler/tests/.cache/deno/061dc1bc102d98a87c92425e09bf0203e0434fc9.ts create mode 100644 bundler/tests/.cache/deno/06690f3535d0a01288299061649a51b1ac0435aa.ts create mode 100644 bundler/tests/.cache/deno/06840a8904e244f906a89aff3c364599d24554af.ts create mode 100644 bundler/tests/.cache/deno/068c2d45fb9edc362a3af0a37718179290fbd722.ts create mode 100644 bundler/tests/.cache/deno/06ac04fc4e5dd9779a3391910b554b0bd6c0c72c.ts create mode 100644 bundler/tests/.cache/deno/0746b127cd90af92cf12b2ec02c10c123b75903c.ts create mode 100644 bundler/tests/.cache/deno/07edaff2f29d36d34886867c4a9100a3250091ca.ts create mode 100644 bundler/tests/.cache/deno/08120cba5feb53715566490767556b622333fcda.ts create mode 100644 bundler/tests/.cache/deno/086270680629deac2a20a68fb1068f2473e47d4f.ts create mode 100644 bundler/tests/.cache/deno/08fb5ffb652d3ab4254036be928c3aa4652e251a.ts create mode 100644 bundler/tests/.cache/deno/0921d954843d1a985feac7de57d6c1db75b7500e.ts create mode 100644 bundler/tests/.cache/deno/09236d67cd7c89114ef7fae5927846001fdb3ee1.ts create mode 100644 bundler/tests/.cache/deno/09383f7134bcbb64cadf410adb933d67b8a87fc1.ts create mode 100644 bundler/tests/.cache/deno/095c726f58dc8e8e09e5e723ca294ce0ffa2d12a.ts create mode 100644 bundler/tests/.cache/deno/0977feb3b53e690b725b21f25dc74eb3561f0dee.ts create mode 100644 bundler/tests/.cache/deno/09d3538bdb461399415f8f68af9da00dd02f839f.ts create mode 100644 bundler/tests/.cache/deno/0ab31312a4d3ecab9cdf41f345e7e69882da7d3f.ts create mode 100644 bundler/tests/.cache/deno/0afa3c9e6688d294fdfb23eefa94f6c131088a6e.ts create mode 100644 bundler/tests/.cache/deno/0b0bcf31fcc627ab2d8c38be6aaf7d0f7a9fefa3.ts create mode 100644 bundler/tests/.cache/deno/0b342060ff1856cd94ca234727849c893a6e0ee4.ts create mode 100644 bundler/tests/.cache/deno/0bc2073c627b10654f8712f63ac65d8c08962ce3.ts create mode 100644 bundler/tests/.cache/deno/0c370b0dde6a38f8d964c5a397f9161f3283201d.ts create mode 100644 bundler/tests/.cache/deno/0c7ae39177272e7cc7929cdc37af066f08d303eb.ts create mode 100644 bundler/tests/.cache/deno/0c7c964a9fa6eb6c0d13fa7542363da68da91e1e.ts create mode 100644 bundler/tests/.cache/deno/0cd7f74af998eea7ac9eb8d676fe7ebf85a2f5cf.ts create mode 100644 bundler/tests/.cache/deno/0d07b97042b0ea4818087ca2b6e808496581bb52.ts create mode 100644 bundler/tests/.cache/deno/0d11afcb85ce307ca57356ebc5e83b4a32ca9cd7.ts create mode 100644 bundler/tests/.cache/deno/0d13bad4776062d351b45fa0be0cc06239fbb9f1.ts create mode 100644 bundler/tests/.cache/deno/0d24ee36aec622d55db1ac9087c2eb045d25fd78.ts create mode 100644 bundler/tests/.cache/deno/0d46a97f5f1e7e868c2dffc8a349254afcb53f54.ts create mode 100644 bundler/tests/.cache/deno/0d47e0f97f3400f94d64ddaea361b231dfec322a.ts create mode 100644 bundler/tests/.cache/deno/0dd29d6944d00bffe1f39444ea233e2fd11c7006.ts create mode 100644 bundler/tests/.cache/deno/0de042643e033407fefa8933f0387a5f4271257c.ts create mode 100644 bundler/tests/.cache/deno/0e10ac285f46cdbd723a2e09e09540b56bb39d77.ts create mode 100644 bundler/tests/.cache/deno/0e357b6b47106575272f7ed539c47656b9e86d3d.ts create mode 100644 bundler/tests/.cache/deno/0edccd409d61a4468d09126b0d058cde514f2056.ts create mode 100644 bundler/tests/.cache/deno/0ef781beeea83aa8b2b5e6dad06dad46e12064be.ts create mode 100644 bundler/tests/.cache/deno/0ef9a4598fa5881690a2f4b35c76defd573a8523.ts create mode 100644 bundler/tests/.cache/deno/0f4f26c742d59b7600f30283fbcabab7c92d3f6d.ts create mode 100644 bundler/tests/.cache/deno/0f6f644c56410f6a8540ac63779169fec060c331.ts create mode 100644 bundler/tests/.cache/deno/0f7dfad28dcd32a1ab1390591772d2adc69b73d7.ts create mode 100644 bundler/tests/.cache/deno/0f8cfd82f215e35382a230fd72bcd7094f42c8ce.ts create mode 100644 bundler/tests/.cache/deno/0fa28d6816fcab5d11ba4ee1ede2a72680b8b6c0.ts create mode 100644 bundler/tests/.cache/deno/0ff16ed81878dbaa6c6dce1a42c7e986260c2c1d.ts create mode 100644 bundler/tests/.cache/deno/10211d0af78bc73c80c5c4de7927515eaf13db69.ts create mode 100644 bundler/tests/.cache/deno/102b68862ac1918ef4cf8a2b19164384c89f8290.ts create mode 100644 bundler/tests/.cache/deno/102eb79561b7bc6a50ed8bae5d2a37ac9b465a42.ts create mode 100644 bundler/tests/.cache/deno/105e20f2af89b6331d0b5b450ea2998c90fa869c.ts create mode 100644 bundler/tests/.cache/deno/10c5d90b3aecacee0f0511e8ea317f3174d065ce.ts create mode 100644 bundler/tests/.cache/deno/1133466265e7072d7293c6c60857590974a94e3e.ts create mode 100644 bundler/tests/.cache/deno/11349b40e4bb0ed8d54e10349a3f20d8763b3eab.ts create mode 100644 bundler/tests/.cache/deno/115a40773b0e1166b5298d48028e9f966d50d7c4.ts create mode 100644 bundler/tests/.cache/deno/115e402f22b76a4d9cf60ca6db4f6eb2d8e968aa.ts create mode 100644 bundler/tests/.cache/deno/11731133752a9f2dfb2bc8c2653138a5fbcbd000.ts create mode 100644 bundler/tests/.cache/deno/119f1607e3e28768f400a64e01095baf828bcf81.ts create mode 100644 bundler/tests/.cache/deno/11ba86e63300472c082d26d8a3f1e4d8fe8fe76f.ts create mode 100644 bundler/tests/.cache/deno/12443b1c9163cb6b513538c9e3bed70f14aad464.ts create mode 100644 bundler/tests/.cache/deno/125d246dc76a9a556045ceeae1153d884ebfdbf4.ts create mode 100644 bundler/tests/.cache/deno/1269588bea35e23194ed43f8a7cbe30f6032827e.ts create mode 100644 bundler/tests/.cache/deno/12718a69cb4870a5d8f43e95389215a652e1ff23.ts create mode 100644 bundler/tests/.cache/deno/12dae7a3ff121d6d76dd029a5e0768673415815f.ts create mode 100644 bundler/tests/.cache/deno/12e9060a896dc887aeb65cdc0ea52ce8133476f5.ts create mode 100644 bundler/tests/.cache/deno/12f5bc47dce97aab7d2b439371a8325000270cd8.ts create mode 100644 bundler/tests/.cache/deno/130b0b16b08e2328afef5d1c788e881e0381f6a8.ts create mode 100644 bundler/tests/.cache/deno/131bef49857a0c38175f5a4a39ce9e2666475603.ts create mode 100644 bundler/tests/.cache/deno/13302b6e4b7bfb7b8c496b9eb7fb4b383ca294c8.ts create mode 100644 bundler/tests/.cache/deno/1342fad556c7fa0a167607771800a427e263df6c.ts create mode 100644 bundler/tests/.cache/deno/13700e6667201f37bc20bba0db87388b49b2ec72.ts create mode 100644 bundler/tests/.cache/deno/13aad9ce013f3be95ff24d7ae53b20355b9e0e6f.ts create mode 100644 bundler/tests/.cache/deno/1408020c1eb166e22d33bda9e6488190119a70bd.ts create mode 100644 bundler/tests/.cache/deno/1428cf4db6bc088ba76d68090af3bdada70f249f.ts create mode 100644 bundler/tests/.cache/deno/143995c47cdcea6c5a105c392ad766d23a5eb33f.ts create mode 100644 bundler/tests/.cache/deno/144981b6498020d07db7b00d051fa52657ec40a4.ts create mode 100644 bundler/tests/.cache/deno/1479eafa0ae9e55770fbed944a0b7d21f23d9fe4.ts create mode 100644 bundler/tests/.cache/deno/149ca7cd67e99d4dbdfdb2334423f29f486a3565.ts create mode 100644 bundler/tests/.cache/deno/14caf10dcb6d28d0c7f647aeb882cc69b928e20c.ts create mode 100644 bundler/tests/.cache/deno/14d2cb6efaa975d346dd8d3811810e8c910c4912.ts create mode 100644 bundler/tests/.cache/deno/14d686bf665411aa7e9a837a8ac56363826d259c.ts create mode 100644 bundler/tests/.cache/deno/14db2faaba580d87d8e87a2f10bf8c7883f41f34.ts create mode 100644 bundler/tests/.cache/deno/1542c900f31b210398965de49f3748a3062fc398.ts create mode 100644 bundler/tests/.cache/deno/154c6073e975b13f958f5ec193d87807d5ce9747.ts create mode 100644 bundler/tests/.cache/deno/15650a0a33ba60fb495e9b783eff58745b9513b1.ts create mode 100644 bundler/tests/.cache/deno/15ca3aadb89225d3e76fe28fdf4ca49c4f83e4f7.ts create mode 100644 bundler/tests/.cache/deno/15cac5f1f1891cdfa29e2c62647fad5a090482c5.ts create mode 100644 bundler/tests/.cache/deno/15e012f58ce28a8f6da346ff8bfcd6e41d822f0e.ts create mode 100644 bundler/tests/.cache/deno/15ff69e5ba79d52cb453376285fe4fd42ba6f193.ts create mode 100644 bundler/tests/.cache/deno/161cdbb1659c8dc2529af32f1c9b9343ad2917a6.ts create mode 100644 bundler/tests/.cache/deno/164b33e52b6c7ad35bd1f384d1a3ef8d13ff20d2.ts create mode 100644 bundler/tests/.cache/deno/165c97bcca11ffb39b2a4cb938e798e6f6d4b03a.ts create mode 100644 bundler/tests/.cache/deno/16636f1df996bc362111d560f402836346a3aff6.ts create mode 100644 bundler/tests/.cache/deno/1672b7e2822cbaf4f5934b9c66f2047d44700339.ts create mode 100644 bundler/tests/.cache/deno/16ac259d1b48b671c9d665f2209489e5dce17781.ts create mode 100644 bundler/tests/.cache/deno/16c4065cd22a2681274a9b18d81f316f1f7fa9f5.ts create mode 100644 bundler/tests/.cache/deno/1702411109bea52e10527b6966cb752526c7d275.ts create mode 100644 bundler/tests/.cache/deno/171424772f8b3d18b9b5e50b83712d4620f9079e.ts create mode 100644 bundler/tests/.cache/deno/173dbbf770a1b85799ff97f4ffeed8e29422a496.ts create mode 100644 bundler/tests/.cache/deno/1740f39d7a42300c56c23e098ead3427c76289f5.ts create mode 100644 bundler/tests/.cache/deno/1775349c1d11b975768f47e60e70d21aad1b1006.ts create mode 100644 bundler/tests/.cache/deno/178b1aa522fff69339fedb6b2e9ec497a42384c3.ts create mode 100644 bundler/tests/.cache/deno/17e969504f75c0a60cb0dbb8f915b07533dc4068.ts create mode 100644 bundler/tests/.cache/deno/1830fc4231d7949065108ba406eea9cfe33d4ef0.ts create mode 100644 bundler/tests/.cache/deno/185373cd877407f0d49b9157e0ea4c689775dc60.ts create mode 100644 bundler/tests/.cache/deno/1883a3d58b753cc5f249c4a88aa65dfa9f311b68.ts create mode 100644 bundler/tests/.cache/deno/188998fe8bd8ae01bbc6e2ec7935e16a377a2f42.ts create mode 100644 bundler/tests/.cache/deno/188a854bf2fcf891f3add27ab83bb40a0153d5ae.ts create mode 100644 bundler/tests/.cache/deno/18c31ad6227f598945da9d3bae0cf9301715c209.ts create mode 100644 bundler/tests/.cache/deno/18c64b58700d8fb706632e781cb0ed077aa00a64.ts create mode 100644 bundler/tests/.cache/deno/18f9b2005cbb455af48eb310c3ea2f787cfd071c.ts create mode 100644 bundler/tests/.cache/deno/18ff653ba0ac6b88cd88d5d70d343792704a10d1.ts create mode 100644 bundler/tests/.cache/deno/1916719c6dbd64f6dba5c8f871f8d0a314b02f78.ts create mode 100644 bundler/tests/.cache/deno/1947e42aaa95bc1bb5765186b1ca87d18a859e4c.ts create mode 100644 bundler/tests/.cache/deno/197458d0a975f158097ae5c3f29fb1a5bdd76ff1.ts create mode 100644 bundler/tests/.cache/deno/198351dccca6a94f567522a91e138fc20de08034.ts create mode 100644 bundler/tests/.cache/deno/19a74b46907399a12d5e04a3088c26f2671f5272.ts create mode 100644 bundler/tests/.cache/deno/19f113629702d39e47def952114549a15a93cd55.ts create mode 100644 bundler/tests/.cache/deno/1a02906df54de8682a94e81ec030c5e1748c9c8e.ts create mode 100644 bundler/tests/.cache/deno/1a53b55b41069a12c154eb051f25deb05f797b90.ts create mode 100644 bundler/tests/.cache/deno/1a5b9ab371d52f951f291f13fe96c23ebab22c2f.ts create mode 100644 bundler/tests/.cache/deno/1a60eafc82d4d7ac8ae2352f7ca7699df8de3f20.ts create mode 100644 bundler/tests/.cache/deno/1a72cbd07cabb6706884b35e157486cd37ea8ec5.ts create mode 100644 bundler/tests/.cache/deno/1a961bff3c46f42c2f242228b25667e674f87baa.ts create mode 100644 bundler/tests/.cache/deno/1aa8cc6352488fec0e34a6a9d497e25e3779e61c.ts create mode 100644 bundler/tests/.cache/deno/1b0566230829126fecb541e367fd26ce521069db.ts create mode 100644 bundler/tests/.cache/deno/1b2d0a727fc4a75d47a3e8f0fcd11de718d112a0.ts create mode 100644 bundler/tests/.cache/deno/1b331576d3a22cb56c3454878ffae3385d3c660a.ts create mode 100644 bundler/tests/.cache/deno/1b4a2b4a6c460f5bd77c1dfd0134e23f17db993f.ts create mode 100644 bundler/tests/.cache/deno/1b50737842a71ff8d90fada6cb46bf96a4012ed9.ts create mode 100644 bundler/tests/.cache/deno/1b59e61107b04ef461b193fc873a00e993e2157e.ts create mode 100644 bundler/tests/.cache/deno/1bb092a8985beb3c101d0c8cebff7023aafe5218.ts create mode 100644 bundler/tests/.cache/deno/1bd0ce95901d7d41f02892f345773c2c80aee914.ts create mode 100644 bundler/tests/.cache/deno/1c2d932450b79c54e05590e6e6a3dce706d77229.ts create mode 100644 bundler/tests/.cache/deno/1cc7ac0e1510d58095d23a75ae64e342c4d15559.ts create mode 100644 bundler/tests/.cache/deno/1d264b326a56d2da3f4916061b2d7ba8fd120cdd.ts create mode 100644 bundler/tests/.cache/deno/1d2e15181dc539bfe8e9784b45df9eb58aa1bd10.ts create mode 100644 bundler/tests/.cache/deno/1d7d1c1e1a2c07b345548f79d2e593adb3054812.ts create mode 100644 bundler/tests/.cache/deno/1decd533a4b3cddede80ab6124372e87a6e9ac83.ts create mode 100644 bundler/tests/.cache/deno/1dfd4a9b35173d9489abdc782f55d0d4b8a431b8.ts create mode 100644 bundler/tests/.cache/deno/1e425603b458319a84c69cb564936fca745ddd13.ts create mode 100644 bundler/tests/.cache/deno/1e5f425f88f8d6a6fe07dd802d9c56d0a464ab10.ts create mode 100644 bundler/tests/.cache/deno/1e6adcffc2ad6931824a313d09e20e4b1db0c077.ts create mode 100644 bundler/tests/.cache/deno/1e70110a27b77ce4047986f5401326ad4ef7b5c8.ts create mode 100644 bundler/tests/.cache/deno/1ecf7bba1624502a5f3159b7bd7c948afcfa6f8d.ts create mode 100644 bundler/tests/.cache/deno/1ee173bc90e59030878ab7e8704cbe8bbedb2622.ts create mode 100644 bundler/tests/.cache/deno/1f0dc9b13a24de08f6bc89d190c17b85afb3c770.ts create mode 100644 bundler/tests/.cache/deno/1f19c7f6c7f920a1d641403a5a5037fbdc2fe68f.ts create mode 100644 bundler/tests/.cache/deno/1f429c4cfe3b434f4499e64af941c5f3500798ba.ts create mode 100644 bundler/tests/.cache/deno/1f595005ac31bf95953bd02fb3f806bc8ee829ac.ts create mode 100644 bundler/tests/.cache/deno/1f5f2fee52bd827e920929dd5763097080e756b4.ts create mode 100644 bundler/tests/.cache/deno/1f87aec459f140142a6c8ce4197c36daf9d959d5.ts create mode 100644 bundler/tests/.cache/deno/1fb57519bb17c899ccede64820e37e4a757717ed.ts create mode 100644 bundler/tests/.cache/deno/1fd0175804216d11e14cfa6fe2663b4c3f62ac2f.ts create mode 100644 bundler/tests/.cache/deno/1ff509c9694ea91930285d4ac609e7dd403917f0.ts create mode 100644 bundler/tests/.cache/deno/1ff6a595e378303b3b5dad0661049f3137822aa8.ts create mode 100644 bundler/tests/.cache/deno/20e4512d5c898122c7d93fc59c314fc1610d96b6.ts create mode 100644 bundler/tests/.cache/deno/212822c05c6e42e4f774ec561becbdf587150b2f.ts create mode 100644 bundler/tests/.cache/deno/214868c4b3fe07f8136d5c9bacdd210c92358372.ts create mode 100644 bundler/tests/.cache/deno/21ecfb5d36b7bde52b3ad64e6d594b0c8b4547b3.ts create mode 100644 bundler/tests/.cache/deno/2245d08f0e8ec31c6412dc4041c0ca6fcb5e5423.ts create mode 100644 bundler/tests/.cache/deno/22d4cff3c725f357baab702365bd0574fd9ac91f.ts create mode 100644 bundler/tests/.cache/deno/23757f2a45edf09f858ba2b3dd6b3d1ca9908dc2.ts create mode 100644 bundler/tests/.cache/deno/23ea8eb81de07a565c0781f28bcd6b4725d81f70.ts create mode 100644 bundler/tests/.cache/deno/23f4b2f19f08795e4cc4cbeda7d20befdc86cde0.ts create mode 100644 bundler/tests/.cache/deno/24215edc904104698eb3a4674075d856ef5956aa.ts create mode 100644 bundler/tests/.cache/deno/2453e4e427d8028ee0e560424008c732c2d30aaa.ts create mode 100644 bundler/tests/.cache/deno/24dddb52e5c4f8f5b0aa00d7f13efc5e08831eca.ts create mode 100644 bundler/tests/.cache/deno/25191601e5fc11d54bc4340fc01f921f04b8eeff.ts create mode 100644 bundler/tests/.cache/deno/253fbaf75096c30a50e76b998acd4d4a19101a94.ts create mode 100644 bundler/tests/.cache/deno/254cb219f9b8bf4d4bd27151b9c6b9451f5aa485.ts create mode 100644 bundler/tests/.cache/deno/25ae65fc43783464c3514ac80a82a7c2b7e7b259.ts create mode 100644 bundler/tests/.cache/deno/26011cfcdccf2c97ce392f5122ffdf185e7c86c6.ts create mode 100644 bundler/tests/.cache/deno/2611e46d39df5923363309b9adb4c81731694129.ts create mode 100644 bundler/tests/.cache/deno/26229dc3fa7de5f57e16c6d1cf5aa281c6692c78.ts create mode 100644 bundler/tests/.cache/deno/264c6f8a074a064dbf16fe3f4c24d50065a9611e.ts create mode 100644 bundler/tests/.cache/deno/2661a946a5032d7f962249e461492beeaf3d511f.ts create mode 100644 bundler/tests/.cache/deno/27462e170380c6afdec6fd4a7bcf61d114bb0d3a.ts create mode 100644 bundler/tests/.cache/deno/27dc4d2dd7eb352391ca33475abe6dd1dfadb61c.ts create mode 100644 bundler/tests/.cache/deno/27e585629f2edc542d9103600a9f4b46e97cd38b.ts create mode 100644 bundler/tests/.cache/deno/27e68e7896365acf65e2f7d3748c899d59dad587.ts create mode 100644 bundler/tests/.cache/deno/27e92fa1ee8580ba9ac4ecb4ee98d941111687ac.ts create mode 100644 bundler/tests/.cache/deno/28bd60dc23fe1221d19c06b781ac2bfe434e61e3.ts create mode 100644 bundler/tests/.cache/deno/28c92ae545e5e5ba5a1df5a7918d590089ce701d.ts create mode 100644 bundler/tests/.cache/deno/28de55c65e4113976616b3871cff5973c733e391.ts create mode 100644 bundler/tests/.cache/deno/2912a85a196c595e5785799639a6de461b24d928.ts create mode 100644 bundler/tests/.cache/deno/298ac5cb1f292fbd1e88d1cb6f8a6a2f92620f4b.ts create mode 100644 bundler/tests/.cache/deno/29e96043b98c596a88a9ecb45fc25c9e62e292d0.ts create mode 100644 bundler/tests/.cache/deno/2a148ed2236f95bf3d312375264d5b808491bbb3.ts create mode 100644 bundler/tests/.cache/deno/2a49ade11cb9979e607b3f10474f75c7bb9b8683.ts create mode 100644 bundler/tests/.cache/deno/2a4f10b4b743fbf437d81567a8a0af2ab149a14a.ts create mode 100644 bundler/tests/.cache/deno/2a7bb7657d73da4a00f49d87322148f3eb15a422.ts create mode 100644 bundler/tests/.cache/deno/2aa86467537e9d09af6d641d0c97285a8806f65d.ts create mode 100644 bundler/tests/.cache/deno/2adbfab19da02fbe2ff485f9c907b5b023afc151.ts create mode 100644 bundler/tests/.cache/deno/2ae6669cfb6f655894f8861c3ae839388b467167.ts create mode 100644 bundler/tests/.cache/deno/2aeb963553d95da69a2f534fba2a864e731cdd74.ts create mode 100644 bundler/tests/.cache/deno/2b206cba17cc968297d736bf2465e83e79ae74ad.ts create mode 100644 bundler/tests/.cache/deno/2b85ac5eb77f99400bf84a9424fc4de3e0475e48.ts create mode 100644 bundler/tests/.cache/deno/2b9aa922c0505f3cae5a1babf57f87feb67c278e.ts create mode 100644 bundler/tests/.cache/deno/2bb0930ebf629f0da142ad9e1271c5c148e4944e.ts create mode 100644 bundler/tests/.cache/deno/2c0f916aad3a2664589f13bd555e6d7ca230f463.ts create mode 100644 bundler/tests/.cache/deno/2c829318184ed6639358ba8c587ecc74e074fa74.ts create mode 100644 bundler/tests/.cache/deno/2c95bfb85b9454cdc2563b45c46a55d3eb3e22f9.ts create mode 100644 bundler/tests/.cache/deno/2c9ab67ec6b292145ce3387a2d66ac5e20322116.ts create mode 100644 bundler/tests/.cache/deno/2cb81a47a21610dbaec5920cc0c2c766d85a15a6.ts create mode 100644 bundler/tests/.cache/deno/2cc038acc3fd43bd5da344af0274fd101aa8daea.ts create mode 100644 bundler/tests/.cache/deno/2d91840595800da7c7a080a47ad734733d020438.ts create mode 100644 bundler/tests/.cache/deno/2daddb70e9028c84a3ab6b1842002c2c1be2fa34.ts create mode 100644 bundler/tests/.cache/deno/2dd9daf0365ff7332ecf10d95e54c759b4948c2f.ts create mode 100644 bundler/tests/.cache/deno/2dde8fd41dc224af301d4dae192fd3ff2d2d8ea4.ts create mode 100644 bundler/tests/.cache/deno/2e608badf8e4c4f7e7f2f8fba093e9c5cfa16aef.ts create mode 100644 bundler/tests/.cache/deno/2ea9f96bcef16acd5a14b3b12a64faf9ce974cf1.ts create mode 100644 bundler/tests/.cache/deno/2eb2a9bbb4a98bf9058a8541d9e5776223322ead.ts create mode 100644 bundler/tests/.cache/deno/2ef2bd5be99dcd0298be30f72f284528f693b921.ts create mode 100644 bundler/tests/.cache/deno/2f2e2e321041c2a2def9cdb74571e35ce247b8b0.ts create mode 100644 bundler/tests/.cache/deno/2f4a062634f232715eddb20bb0db67b256d8d214.ts create mode 100644 bundler/tests/.cache/deno/2f6c7999de82334780169a0ad1aa18457941dd57.ts create mode 100644 bundler/tests/.cache/deno/2fd936944f47059be9e6b71bdb70f181821ac7fc.ts create mode 100644 bundler/tests/.cache/deno/2fe78d73018d170c2f18b33bd51c3c048497ec10.ts create mode 100644 bundler/tests/.cache/deno/3045ecf37e4546ef147d10dd710c7e3b5402725e.ts create mode 100644 bundler/tests/.cache/deno/30467d4514b2e2a5967a15089df54be1a2f73293.ts create mode 100644 bundler/tests/.cache/deno/3071a5627ae9109da7cb390903b736e5b30a4e73.ts create mode 100644 bundler/tests/.cache/deno/308ac6e65b35fc9e67066bfbcf2d8037ed624076.ts create mode 100644 bundler/tests/.cache/deno/3092d97fa5354a6587505256a1f13a0d139c48b3.ts create mode 100644 bundler/tests/.cache/deno/30c6394910dd3e93e42f215a3a77df4199acc956.ts create mode 100644 bundler/tests/.cache/deno/30c84d7c3fe94bbcb5fab74ab49f850c573889bd.ts create mode 100644 bundler/tests/.cache/deno/30d697ee62a77eb7f64d3db051b6ba272d9c87cb.ts create mode 100644 bundler/tests/.cache/deno/3107840a16f38d2c8595a86c1780768dcce3279f.ts create mode 100644 bundler/tests/.cache/deno/3110941b544aeddb79a8d11bccdf87816b1b6a64.ts create mode 100644 bundler/tests/.cache/deno/311b044f42a6ac82a6bce30cf0731193f8b9be39.ts create mode 100644 bundler/tests/.cache/deno/31309ebe9dce51093b18db91b1f0ab39782026ff.ts create mode 100644 bundler/tests/.cache/deno/318cfebee0c056540312db81fb342856d7419560.ts create mode 100644 bundler/tests/.cache/deno/31b201cc9177f641a2f4eec0ee0d85e177865877.ts create mode 100644 bundler/tests/.cache/deno/32615335700c96432bcbee6e4106f30b8961719b.ts create mode 100644 bundler/tests/.cache/deno/33072e22acf735c097cc99f588a01404695de266.ts create mode 100644 bundler/tests/.cache/deno/332f04df8c92ae06934b7b4796c04983ccb2f417.ts create mode 100644 bundler/tests/.cache/deno/33964b38f887091acd435fe7b733ca6cb3750929.ts create mode 100644 bundler/tests/.cache/deno/33c0fdd50cdbbdbb549caced907347d1b887654e.ts create mode 100644 bundler/tests/.cache/deno/33d2b160da0ca6dc13a71b273d4e7333a2e71499.ts create mode 100644 bundler/tests/.cache/deno/33f049cc805c7770d22edf5afbf67151aa93cf0a.ts create mode 100644 bundler/tests/.cache/deno/3416aa739965577e0d41ee5d94ff08b10c7b713d.ts create mode 100644 bundler/tests/.cache/deno/34d3e04b554f3b12e1370b7d81d5f36c42a8901d.ts create mode 100644 bundler/tests/.cache/deno/3504307e6e5de33948f67a9150b0ee9653189cea.ts create mode 100644 bundler/tests/.cache/deno/352e08deec75cc5239a03e6dfe0188ccc5121753.ts create mode 100644 bundler/tests/.cache/deno/3585e6feea6092da3750047f296439657b52a12d.ts create mode 100644 bundler/tests/.cache/deno/3589024f603e12aa898c36c2f1bf050d07274544.ts create mode 100644 bundler/tests/.cache/deno/364b9c2423817567fb857d4fa511095fa696552d.ts create mode 100644 bundler/tests/.cache/deno/3678092871664d8c241c90a551036889ee7b660a.ts create mode 100644 bundler/tests/.cache/deno/36a58f47cf7519b081e17a0358a65b13a6a9e70e.ts create mode 100644 bundler/tests/.cache/deno/36d9ffde34e1a40d3aa45ff5b72be9eeda6e5aec.ts create mode 100644 bundler/tests/.cache/deno/37094f801b2385d9eb12b7ef1b7245c51fd0b159.ts create mode 100644 bundler/tests/.cache/deno/37667401348e9860ebb01bdb22863259522ef044.ts create mode 100644 bundler/tests/.cache/deno/3793b332a77bf20451ca9d67aa64cbb84baabf4f.ts create mode 100644 bundler/tests/.cache/deno/379897dde2013e28e4dd6aad1799278b33185c05.ts create mode 100644 bundler/tests/.cache/deno/3798c8a49f0bf5773b960edc923b342587d24ab2.ts create mode 100644 bundler/tests/.cache/deno/37ada358cd3553060693de58827836ea941f815e.ts create mode 100644 bundler/tests/.cache/deno/37e099d5f3f8b70b3676d571046257b38035c369.ts create mode 100644 bundler/tests/.cache/deno/37fa8e38db997d39d0c970daf33f0b5231299ed9.ts create mode 100644 bundler/tests/.cache/deno/382fb214d775279b6be7e1e1f6e3028d3922f449.ts create mode 100644 bundler/tests/.cache/deno/3850ad9b007a1dc556f63f7c7995a5d602f65e5e.ts create mode 100644 bundler/tests/.cache/deno/3858f99323dcd3c6022994c7938f381c970cef22.ts create mode 100644 bundler/tests/.cache/deno/385f8b715c7a2fddc633d77ce27c09c2c35e05a4.ts create mode 100644 bundler/tests/.cache/deno/387a6383dd2b4f4a368b70241684ee8f4d3bd5ab.ts create mode 100644 bundler/tests/.cache/deno/393bfd3edea12e72d832ea8cf5b3aa39ed1e412f.ts create mode 100644 bundler/tests/.cache/deno/399734cfcb1e8b780ad70844d1b170f76d69aef9.ts create mode 100644 bundler/tests/.cache/deno/39c57fb7d5e8b1eab5c56a2768a456f19e997da6.ts create mode 100644 bundler/tests/.cache/deno/39d8215623f076360b970fefe381ad99a8a77160.ts create mode 100644 bundler/tests/.cache/deno/3a098f75df7a43a9b5b61a85bd989e9827ff73f4.ts create mode 100644 bundler/tests/.cache/deno/3a3c5f0d0418996103c8c061b02b5aa6967a9149.ts create mode 100644 bundler/tests/.cache/deno/3a3f8c7742754003bcc33fe80a730f2687e2953d.ts create mode 100644 bundler/tests/.cache/deno/3a4bd1647fad45ea3867eca226ed0f04a4ad4c59.ts create mode 100644 bundler/tests/.cache/deno/3ac2bd047b9ba1be58300229449b7156ab7cd574.ts create mode 100644 bundler/tests/.cache/deno/3b08cd07127347972d2820716d52dd7289fa88b5.ts create mode 100644 bundler/tests/.cache/deno/3b373f028b882501b8c6b5a2e6c2bd5283c8d47e.ts create mode 100644 bundler/tests/.cache/deno/3b4085fbc035b6168d9644998667560e05bfaf41.ts create mode 100644 bundler/tests/.cache/deno/3b437217e8cf22be2af56d8376bced4617c7bd5b.ts create mode 100644 bundler/tests/.cache/deno/3b89b750a778120833224f10d70d16e3c03b9d73.ts create mode 100644 bundler/tests/.cache/deno/3b8d3da1bca78ca84087bd5c253f4f9931be6e92.ts create mode 100644 bundler/tests/.cache/deno/3ba0531bf4b13bac91a2b8da5c1ede27d80e5d39.ts create mode 100644 bundler/tests/.cache/deno/3bac48484497dd58844174023b47fb0119d8acfc.ts create mode 100644 bundler/tests/.cache/deno/3bc335e3bb47f6972b05ad5341cd795804fa0723.ts create mode 100644 bundler/tests/.cache/deno/3c1635262d8f3d1037702adc003746c5c374368d.ts create mode 100644 bundler/tests/.cache/deno/3c2d47ccff377b24d6ae77e2b699cbbd92216035.ts create mode 100644 bundler/tests/.cache/deno/3c3780ce414ce84ff43ba13138603e36a2238d32.ts create mode 100644 bundler/tests/.cache/deno/3ca4d838cd9a64dafd9511d60dee20f34a50994e.ts create mode 100644 bundler/tests/.cache/deno/3ca6ae490be155fa7cff01b8012d58c846cffc82.ts create mode 100644 bundler/tests/.cache/deno/3cbfe67e10ce1d3d8f0f3472ea3f360e2760e5a6.ts create mode 100644 bundler/tests/.cache/deno/3d2b41247f84e36b4d7e23f12802d5ec0f5d3c40.ts create mode 100644 bundler/tests/.cache/deno/3e32d7366080e14b09fd00723476eef3f1553f9a.ts create mode 100644 bundler/tests/.cache/deno/3e3d8eaa4ec0cb288527634f6d76f6bd4cb81c2a.ts create mode 100644 bundler/tests/.cache/deno/3e82d08e680d48707a5a75763b1e135150dd00a5.ts create mode 100644 bundler/tests/.cache/deno/3e9ec29bf7ffe6df5bbd10261cc1a3eeb15a74b1.ts create mode 100644 bundler/tests/.cache/deno/3f013fb779acb8775ce7f4d245cd2fbb0ed4f6e8.ts create mode 100644 bundler/tests/.cache/deno/3f323f69a88decfb6634eb7fff746520577bdb51.ts create mode 100644 bundler/tests/.cache/deno/3fd2dd13897d0ea45046ae4ea553294076710878.ts create mode 100644 bundler/tests/.cache/deno/406404073e6f71433b759ce6d6aefb1c65d1ebeb.ts create mode 100644 bundler/tests/.cache/deno/40db14d1cc7c8ffff6230ffb9de8c55ce41c463a.ts create mode 100644 bundler/tests/.cache/deno/4162f7ba3c0c35cb83344d48c88f402fc435f509.ts create mode 100644 bundler/tests/.cache/deno/418160cc50021cdc47ad89dea4da4b4d843efc25.ts create mode 100644 bundler/tests/.cache/deno/41d365a8ae0e9f5520026d8ac43f8bec2f554a5c.ts create mode 100644 bundler/tests/.cache/deno/427901ad1cd16bf868fc4668b6cb7c01d221e744.ts create mode 100644 bundler/tests/.cache/deno/428018a751e2754796c08b89c9ffbf149a799833.ts create mode 100644 bundler/tests/.cache/deno/428ac176b112223e3c88facf799e013fc8626515.ts create mode 100644 bundler/tests/.cache/deno/42a1f8f598baf2256fe7dc56ebfa5f073c5b88e2.ts create mode 100644 bundler/tests/.cache/deno/42af7bbbde622a92649e4d8f524733b0b2d69442.ts create mode 100644 bundler/tests/.cache/deno/43454605486473f70df2c2cf3d2637b833e7e72d.ts create mode 100644 bundler/tests/.cache/deno/436fedb1c26cb2dc05a2583ac302c341b0a257d8.ts create mode 100644 bundler/tests/.cache/deno/439854b137b09b029bd1cbb876fe307daf0c3feb.ts create mode 100644 bundler/tests/.cache/deno/43de29f75c64b8fc7e379c85644b0f5238ef8e13.ts create mode 100644 bundler/tests/.cache/deno/445bb7d0616adf21a051238115124cb2eae0fc5f.ts create mode 100644 bundler/tests/.cache/deno/4499ec1594f4dc7479903a32c1a971f3e373de83.ts create mode 100644 bundler/tests/.cache/deno/449b00f05e5d4a8f442f39854ae8759b91fc91f7.ts create mode 100644 bundler/tests/.cache/deno/44a4e31858c4f87ab373493a0a2fcda0af905bf6.ts create mode 100644 bundler/tests/.cache/deno/44c08f96c7e6c795415d925868ec0089677994c1.ts create mode 100644 bundler/tests/.cache/deno/4507642b8b5992a8a74d16a6415658f9a77eb20f.ts create mode 100644 bundler/tests/.cache/deno/451ef1836081b9b98b8a899fc937ee56c45a1289.ts create mode 100644 bundler/tests/.cache/deno/451fafadda3a0c356f5570e16bcb16350de45397.ts create mode 100644 bundler/tests/.cache/deno/45324c0f4edb746a00b6b785537bf663118d4762.ts create mode 100644 bundler/tests/.cache/deno/4574739cf95aae7e28811fe54088d62720e1f4c5.ts create mode 100644 bundler/tests/.cache/deno/45ce4f3ffe80a7e90648316a82a255cdf80cc36a.ts create mode 100644 bundler/tests/.cache/deno/4638df2524daab4791609fd880e83f1d9495244d.ts create mode 100644 bundler/tests/.cache/deno/4657b24088bee28fb9a569eb73505893b4026616.ts create mode 100644 bundler/tests/.cache/deno/46a1236156395c1fe96936ab72872a84be8adf2c.ts create mode 100644 bundler/tests/.cache/deno/46d55f695329edeac0c9687aa3d069a5ba03e620.ts create mode 100644 bundler/tests/.cache/deno/46ea1d082fcd7442a897e7a7533252e2e1f447c4.ts create mode 100644 bundler/tests/.cache/deno/47c3fca65712b5c5508b03cf96d71d204dd225d7.ts create mode 100644 bundler/tests/.cache/deno/4858486e9d0a8e7e8ba5a3620a92c99e87b012df.ts create mode 100644 bundler/tests/.cache/deno/48814d77cdb52ba4ae4ba9d5dcb8163d57fb6b3c.ts create mode 100644 bundler/tests/.cache/deno/48886e92913f00dcd683a27a6c2be3e5ab28cde1.ts create mode 100644 bundler/tests/.cache/deno/48a64ee352806e0c1987dc77fbb80a0b227c484d.ts create mode 100644 bundler/tests/.cache/deno/48f456ec1237e6ae9c059579742299193830c2da.ts create mode 100644 bundler/tests/.cache/deno/48f6d7093d05accc73986117019da099383a1c6f.ts create mode 100644 bundler/tests/.cache/deno/48fb493cb824ef3ac579f7de990c1902768c206a.ts create mode 100644 bundler/tests/.cache/deno/49d27439f7f396d6dbf3cc9571b64597103a2da7.ts create mode 100644 bundler/tests/.cache/deno/49d7bf951494afde8ccf63631cce395147f37765.ts create mode 100644 bundler/tests/.cache/deno/49f4ea8c5c52b8ea50750f742c1d228d56db5e1f.ts create mode 100644 bundler/tests/.cache/deno/4a2521dcf9309684b59e9161bffca655e9340708.ts create mode 100644 bundler/tests/.cache/deno/4a270a3ae273e586086c47504f5d25a53ea8c73d.ts create mode 100644 bundler/tests/.cache/deno/4a7cbaf4c5614c7bda0d4a1d74db09e9057c1b31.ts create mode 100644 bundler/tests/.cache/deno/4a8d0eefeb1d44dba685a7499061fd308ec6f403.ts create mode 100644 bundler/tests/.cache/deno/4b1c3924620504c9bb953999d37bb3d7208e1b4a.ts create mode 100644 bundler/tests/.cache/deno/4b50276e6b96761e9dd16ad7268b7d060fb73e83.ts create mode 100644 bundler/tests/.cache/deno/4b9432109028093ba4d366dcdaadda6569aacd8a.ts create mode 100644 bundler/tests/.cache/deno/4bceeb6a6b3228665a8a02883e92962cd14cf907.ts create mode 100644 bundler/tests/.cache/deno/4be4f4c7b49a84985f8c94acbeb22868943dea66.ts create mode 100644 bundler/tests/.cache/deno/4c1d6cffc7774275592739c8397f71cd4544e9c7.ts create mode 100644 bundler/tests/.cache/deno/4c200ec131b7d33cb3d5247a2b3f9caf76a94909.ts create mode 100644 bundler/tests/.cache/deno/4c2dca625f369b898974fdb3ea469f42d4dc7e64.ts create mode 100644 bundler/tests/.cache/deno/4c3d0ee3ac04e3efbe0b93d3bfbba7b50168341b.ts create mode 100644 bundler/tests/.cache/deno/4c51a1dc3d98f85e68bccc8940f9d992cf6f3bec.ts create mode 100644 bundler/tests/.cache/deno/4c8bf1516cc3178a1924a1bb5cf7f135b84b8759.ts create mode 100644 bundler/tests/.cache/deno/4d06f66f9ce1249dbe8735b482ed30a1d8f6f01c.ts create mode 100644 bundler/tests/.cache/deno/4d78eabd363df43550bdb559ec9f6a29a3dbf4e6.ts create mode 100644 bundler/tests/.cache/deno/4d8f05cb65c48defd3c21a3ade45b55f8baf7ab4.ts create mode 100644 bundler/tests/.cache/deno/4da5a949f20e99f83a7046ef0c1e8ed0d4625536.ts create mode 100644 bundler/tests/.cache/deno/4df71753733ad4b2cc601bb3b716efd0c9147bfd.ts create mode 100644 bundler/tests/.cache/deno/4df77deede2cb6099a13a44bba50a480d83bdb25.ts create mode 100644 bundler/tests/.cache/deno/4dfa8dc502cb1805a4670e086a9fd75346583e12.ts create mode 100644 bundler/tests/.cache/deno/4e397aa4df73759f04ad893d3f35dd7bdfb7f429.ts create mode 100644 bundler/tests/.cache/deno/4e3a9af7dd181cf30d456cf3772f154428805133.ts create mode 100644 bundler/tests/.cache/deno/4e3d3275b0d4fb951769bfb64312bb499460d572.ts create mode 100644 bundler/tests/.cache/deno/4e9a17cde98e1a8d8343a4082871fb8aea8b8418.ts create mode 100644 bundler/tests/.cache/deno/4f0ca3a2d31f06654fb104bbaa8282c00c877f6c.ts create mode 100644 bundler/tests/.cache/deno/4fc4bb197b025f928c8e2d7baacc545eae5cf051.ts create mode 100644 bundler/tests/.cache/deno/4fe7bc8bec9b19a5506a2ae31645938acc254235.ts create mode 100644 bundler/tests/.cache/deno/50462499cd464d2e75c2ba5d0bae8f7d82276afe.ts create mode 100644 bundler/tests/.cache/deno/50a68c90032989ca1a310f36cf79e5bf1114e7c4.ts create mode 100644 bundler/tests/.cache/deno/50ef99b3983986e9a4e3ff30a3862e2d4c5d5812.ts create mode 100644 bundler/tests/.cache/deno/511b470a054c6ddf269c4ff3d9b60a11c529aca3.ts create mode 100644 bundler/tests/.cache/deno/516312be8cf018277871f6e43147d06b677d6a13.ts create mode 100644 bundler/tests/.cache/deno/5182d4b18e580b0a6b2fc4b2bd9d841d701f6442.ts create mode 100644 bundler/tests/.cache/deno/5190df367c400a5fe979230a82d871614e286120.ts create mode 100644 bundler/tests/.cache/deno/5192072a18cf75d411c99ea9c93ebc2ae8e830b4.ts create mode 100644 bundler/tests/.cache/deno/51b9676d22bfed0b3e6e4a6e02abdfffec697446.ts create mode 100644 bundler/tests/.cache/deno/523b95232338171f73ef4bb75b339ca63d84eefb.ts create mode 100644 bundler/tests/.cache/deno/52aae1c92cd6bd702a433021973326c89faa3a61.ts create mode 100644 bundler/tests/.cache/deno/530d2bc386702423b92eee7f56c8d5a1d2c8a42d.ts create mode 100644 bundler/tests/.cache/deno/532e46aadcc1831d94b4a779c2a24c4b8d158ea2.ts create mode 100644 bundler/tests/.cache/deno/533a6494ba56d6f8790c539bcf6ce600e386584d.ts create mode 100644 bundler/tests/.cache/deno/53897518751b56ded4afb6ddcfd04ea6cf09339e.ts create mode 100644 bundler/tests/.cache/deno/53ae4b7ecdfa51b6ce5b610f4423912f02177fd5.ts create mode 100644 bundler/tests/.cache/deno/53b6d668e8094a35ca023bf18723293ae406e22c.ts create mode 100644 bundler/tests/.cache/deno/5410c66fa74f3a1f3abc875e2cd129f23d44f908.ts create mode 100644 bundler/tests/.cache/deno/54219637b852f009bf18e186f041e0f4d8b31ca7.ts create mode 100644 bundler/tests/.cache/deno/5421ed9d1cb82f0a48e3b46e99f915d452c022f4.ts create mode 100644 bundler/tests/.cache/deno/54756f3b6e72ad8ede86d7f0bcf25cc034ecbd8a.ts create mode 100644 bundler/tests/.cache/deno/549dabd0a80e54f124ca73c8a759a290f7d32262.ts create mode 100644 bundler/tests/.cache/deno/552152ba99e3dd3ca555ef74a8d03c1d0f2ed89e.ts create mode 100644 bundler/tests/.cache/deno/552946951b4b80b2c8e7a6ad38379fd26d613ac4.ts create mode 100644 bundler/tests/.cache/deno/553188ab802f6dd896fa0ca480bc82efe61cc26e.ts create mode 100644 bundler/tests/.cache/deno/554d9f5765333023f0c447868abce45956e877f2.ts create mode 100644 bundler/tests/.cache/deno/556cc2ee8301e0b5a23927cd88f6e87204d04aa2.ts create mode 100644 bundler/tests/.cache/deno/55bda4f8a080138dd5a21f24579f775477081798.ts create mode 100644 bundler/tests/.cache/deno/5626748aec39922bf5a6cc48950edc293b5d90e5.ts create mode 100644 bundler/tests/.cache/deno/5674474382f85588f75d9aa8f15b8b351c51b5c5.ts create mode 100644 bundler/tests/.cache/deno/56cfa45e65f954216dae630870817332d63c7874.ts create mode 100644 bundler/tests/.cache/deno/5707df2773cbf05df35503cd5a8cc873455ad561.ts create mode 100644 bundler/tests/.cache/deno/57638de3cb2e1e316fd6e4e5b87f5ea603687aeb.ts create mode 100644 bundler/tests/.cache/deno/5789057467243996929ecba6104592ddb762edc9.ts create mode 100644 bundler/tests/.cache/deno/57dbee60abd6bb62ac6adc2984bc4d9a04bf6a97.ts create mode 100644 bundler/tests/.cache/deno/57e5f8e92e9bce2d9b35ed202f8b858200326aa7.ts create mode 100644 bundler/tests/.cache/deno/580bf4be7b7d68aa7808fd72544d38b7ce61fd6e.ts create mode 100644 bundler/tests/.cache/deno/580d37ed86922ddc28ae4deabf1eb33940e284a5.ts create mode 100644 bundler/tests/.cache/deno/584d22e957080d2df6b83c75e3ee64a7682b71ae.ts create mode 100644 bundler/tests/.cache/deno/5862b1065b772747707c346af8887b051db043a1.ts create mode 100644 bundler/tests/.cache/deno/58d3bd8561df0406be7e9c4368743833bc5cea79.ts create mode 100644 bundler/tests/.cache/deno/58d5f831f3fc1a7244b4d4ce1dc82380f6201933.ts create mode 100644 bundler/tests/.cache/deno/58eb2a0961019853bb83d674345bf3bb70559097.ts create mode 100644 bundler/tests/.cache/deno/590618a05c830a54b7940c5460bfdd686708a0d6.ts create mode 100644 bundler/tests/.cache/deno/59417aaf3e13e8ca39e9132aaf809996c7373728.ts create mode 100644 bundler/tests/.cache/deno/59517267cc8245e0d8ee2cf2a5909ce9f6411171.ts create mode 100644 bundler/tests/.cache/deno/5966db1e3f33bc51286a48d2ae39e0ef6357454c.ts create mode 100644 bundler/tests/.cache/deno/599d785fdc3c1ccaee4c24a7ddf2ca895f623867.ts create mode 100644 bundler/tests/.cache/deno/59b7e5a4bdf273f92308a2b3738929c5479e049b.ts create mode 100644 bundler/tests/.cache/deno/59debc56a8ee8cc4f094caf470ecfe36a6190500.ts create mode 100644 bundler/tests/.cache/deno/59f7b524425d8a5a0b89908bc866759bef448f0d.ts create mode 100644 bundler/tests/.cache/deno/5a56e2a718d4f917b97ddd3e83d240828ccdf0e2.ts create mode 100644 bundler/tests/.cache/deno/5a728e7bb9d91aec405ddeeaeaa4c6da76c96f36.ts create mode 100644 bundler/tests/.cache/deno/5ab41e00afb7428a4d09936e3d3923e9d7f949d7.ts create mode 100644 bundler/tests/.cache/deno/5ae2edd8e70ab505aae2579e720b908bfe81b53b.ts create mode 100644 bundler/tests/.cache/deno/5b0337a0cb560372656797c6a086cb8135efc17a.ts create mode 100644 bundler/tests/.cache/deno/5b1fd0386834240c91beb45b4e211027a496ff2f.ts create mode 100644 bundler/tests/.cache/deno/5b74a7f4f45315d1404ddaa2ac2d3b35aa539192.ts create mode 100644 bundler/tests/.cache/deno/5b79987e5455c8d8f5634704a4aab9cb784ccabf.ts create mode 100644 bundler/tests/.cache/deno/5bb7bb9795979693547d562391d9c1cb5ea5f117.ts create mode 100644 bundler/tests/.cache/deno/5bce8196f3a7e507897bab69365aa46c88df77dd.ts create mode 100644 bundler/tests/.cache/deno/5c22d11e3219ce70167fed71bece728e1a7a3707.ts create mode 100644 bundler/tests/.cache/deno/5c466c27276caaa226fe2b59ba8c27764348cd54.ts create mode 100644 bundler/tests/.cache/deno/5cf74fa489d7816d6b21d074c8bfb8b2cadc9bc2.ts create mode 100644 bundler/tests/.cache/deno/5d5895ead3ff168faf1b1649a426ff55e4dab034.ts create mode 100644 bundler/tests/.cache/deno/5d6d1837a09681ab29f9ad14fbaab375acbc5189.ts create mode 100644 bundler/tests/.cache/deno/5d9b30d4632fd8c1ec57918cf927775db0294797.ts create mode 100644 bundler/tests/.cache/deno/5ddc4c85386767e41a8f90bf55cf6321126796aa.ts create mode 100644 bundler/tests/.cache/deno/5df2407aad6c59abc953b5670346940422b9fd1a.ts create mode 100644 bundler/tests/.cache/deno/5e0272125ce6b9841437813aa835c3d39ec15740.ts create mode 100644 bundler/tests/.cache/deno/5ef12d2b35ba9304779d3b0ee0e4ec01093def62.ts create mode 100644 bundler/tests/.cache/deno/5fb5985c96a06558c27309eaf062f5cbe4ef4d05.ts create mode 100644 bundler/tests/.cache/deno/5fc5ebda42c03e71783d60536d4cd9ef9cd741ea.ts create mode 100644 bundler/tests/.cache/deno/60207da1f6086c99439bc3461ec7e13a91db0a5b.ts create mode 100644 bundler/tests/.cache/deno/60208104d8419669579f9261ae1aa06904cd8ebc.ts create mode 100644 bundler/tests/.cache/deno/609d7c2082e3ef0a4a8fb2e7e60e9697b1f06ec0.ts create mode 100644 bundler/tests/.cache/deno/61040b6274c02b055ec7fc64f04fdbe7093d967e.ts create mode 100644 bundler/tests/.cache/deno/611b8018373713f727621682b7b82c3d4f8f9420.ts create mode 100644 bundler/tests/.cache/deno/616057bc30408233b3fa88b64c9ad8737115c746.ts create mode 100644 bundler/tests/.cache/deno/6188d8029d83e2f6ab30171e207e50bde594148c.ts create mode 100644 bundler/tests/.cache/deno/61aa99bace0e193e0473a6f3be6495241339eded.ts create mode 100644 bundler/tests/.cache/deno/61ca55e57c6ceb745d427c20eac5d12d97d99eb6.ts create mode 100644 bundler/tests/.cache/deno/6206d8537faf9c96df54d38ee638c6197586b4c0.ts create mode 100644 bundler/tests/.cache/deno/623fbb7dfcc2ae9d17e57e8e3718418b47c80e4d.ts create mode 100644 bundler/tests/.cache/deno/6262640b7b417e890a16a16760e1ae57fa5db4bb.ts create mode 100644 bundler/tests/.cache/deno/627dc23b678014934d53055a9e818f4241908e34.ts create mode 100644 bundler/tests/.cache/deno/62bd6743e63cf3c65502a0896afd3d9e6db7eba9.ts create mode 100644 bundler/tests/.cache/deno/62de52f32bf60571bfca2630a6f63ef996bc68a5.ts create mode 100644 bundler/tests/.cache/deno/62ed138e589be84029e6be44beffea908c99bd74.ts create mode 100644 bundler/tests/.cache/deno/62f9ce33a62a530d0014ff33b77340297854fc90.ts create mode 100644 bundler/tests/.cache/deno/6316a4c51d99eda000ea7f06718919883decb8dd.ts create mode 100644 bundler/tests/.cache/deno/635cf8b09e7ff6a6ed019da4e7138ffcc79f40d3.ts create mode 100644 bundler/tests/.cache/deno/63699da411bf89c86d8541d7b28f10f8a901e322.ts create mode 100644 bundler/tests/.cache/deno/63cb708dd4c9b4b2834d55fb758d7e31665bc82b.ts create mode 100644 bundler/tests/.cache/deno/64013586f7ace0f2dd606727a1cd10b09ef4816d.ts create mode 100644 bundler/tests/.cache/deno/64618f9bb08e4de09c6ccca7f1e955c01fbd023b.ts create mode 100644 bundler/tests/.cache/deno/647032f84ece50f5a38babe73ea199ac6ee4c396.ts create mode 100644 bundler/tests/.cache/deno/64a0b34ed6ea49502cedd795909c020dd3fa51f0.ts create mode 100644 bundler/tests/.cache/deno/6549f184bece82ad489f10dfbba8e57289402b5f.ts create mode 100644 bundler/tests/.cache/deno/6551832d57a1d2e04a44a9b74e123cd17a6f8a51.ts create mode 100644 bundler/tests/.cache/deno/656421b0baa5f2cf6569c3b7751b2d77c400e634.ts create mode 100644 bundler/tests/.cache/deno/65740ac9839f36e2096d84c50b0dce28cd1732f7.ts create mode 100644 bundler/tests/.cache/deno/65abf1d5e46652f4d675a663ba49d7c961ea84d5.ts create mode 100644 bundler/tests/.cache/deno/664478a01d1f65fe688723118b2082d635d6d85b.ts create mode 100644 bundler/tests/.cache/deno/666acc80a9cf7bcbfb9054efe04d1643338a4d4b.ts create mode 100644 bundler/tests/.cache/deno/670f8809faac9ade0096051d3bf292a60807141b.ts create mode 100644 bundler/tests/.cache/deno/67e4a69d6bb60e1c052c7adc4464af01d1778046.ts create mode 100644 bundler/tests/.cache/deno/67fa057027926f904a72e7874735dda744c2e039.ts create mode 100644 bundler/tests/.cache/deno/6842db90bc133c822ceb4b49542136172b5943d0.ts create mode 100644 bundler/tests/.cache/deno/6852319202452567b571e63384920c4c1725f0de.ts create mode 100644 bundler/tests/.cache/deno/6854199e32bf5d27eac822d3c34c4b1d6ce493f5.ts create mode 100644 bundler/tests/.cache/deno/68f73c63de34ebae42d0bbd5ab2b5ba5433e6ae8.ts create mode 100644 bundler/tests/.cache/deno/69a94a935455bf2f9ec9d3d6f3c347136873ee73.ts create mode 100644 bundler/tests/.cache/deno/69d56fddcca369153b0a92fdd05d6502d5b140ea.ts create mode 100644 bundler/tests/.cache/deno/6a000c7c420b15b3a5e00d66c7448d51ce440c96.ts create mode 100644 bundler/tests/.cache/deno/6a0fe8918345b94de98439906e2f5a8616b536bc.ts create mode 100644 bundler/tests/.cache/deno/6a399f1a72481940ab22e9c8c25afd7bca926e1d.ts create mode 100644 bundler/tests/.cache/deno/6a47f3c7ed4eb9ae67e93fca98d56bfbb86ecf62.ts create mode 100644 bundler/tests/.cache/deno/6aa66eeb2703c40acaa7e5a16c042c7f9d19b387.ts create mode 100644 bundler/tests/.cache/deno/6aa9d935c76b64f48fb6807860c273cbbeb55a52.ts create mode 100644 bundler/tests/.cache/deno/6b23bb0dd8829f0b41d0c1dce31a87e2599e5a21.ts create mode 100644 bundler/tests/.cache/deno/6b299e3d6c1c6bd6d32e24c962f2a8aca5b1e356.ts create mode 100644 bundler/tests/.cache/deno/6b30968b981eac9bfbfce10ed2c3d99893026b1c.ts create mode 100644 bundler/tests/.cache/deno/6b38a007e4be55b015f855dd0cfbdd13dacfbbd2.ts create mode 100644 bundler/tests/.cache/deno/6b760120f9dd7fdb90bc9557d2e270ddf84db232.ts create mode 100644 bundler/tests/.cache/deno/6bf826799f6f2af7641f21626f840957338cc174.ts create mode 100644 bundler/tests/.cache/deno/6c02c424105081503b5fd38bfc4b0c4546d6121f.ts create mode 100644 bundler/tests/.cache/deno/6c770a43588adf2ee510f29a8522ae521a84e4b5.ts create mode 100644 bundler/tests/.cache/deno/6cadf521dfd90a5456dcce92d496318b52d944ac.ts create mode 100644 bundler/tests/.cache/deno/6cf6fe2d092a147a6059017a56ef4d8c714281ce.ts create mode 100644 bundler/tests/.cache/deno/6d1a8250001c0e287df7ecdfe8d1fa22b8a97479.ts create mode 100644 bundler/tests/.cache/deno/6d2a5c2dec57e9c2b2e08cc931287b08f6a019dd.ts create mode 100644 bundler/tests/.cache/deno/6d54a8dccf014450ddb88e89f40089e6277c422b.ts create mode 100644 bundler/tests/.cache/deno/6e05c0bb3b2468edcf787be0052808d9a3e880ce.ts create mode 100644 bundler/tests/.cache/deno/6e23661937c2db7f0343b2f9e80cae4200ab05c4.ts create mode 100644 bundler/tests/.cache/deno/6e54bde0f3ba931ef87cf182b74a92c25ead8e73.ts create mode 100644 bundler/tests/.cache/deno/6e54fc92158adec2df69b5654078decf8f67292e.ts create mode 100644 bundler/tests/.cache/deno/6ec7162085a2e78d83fd084ee73c11b6c185ac8b.ts create mode 100644 bundler/tests/.cache/deno/6f20bf7ec89e1f992e16cace6898baea24de84dc.ts create mode 100644 bundler/tests/.cache/deno/6f52371e4cd20c8c24840922bac8f64aa9059830.ts create mode 100644 bundler/tests/.cache/deno/6facd150607eca1831a48adccd45036748db3033.ts create mode 100644 bundler/tests/.cache/deno/6fc9b4d24c4c8665ce3fb81006ce71ecdd5700fe.ts create mode 100644 bundler/tests/.cache/deno/6fe49a8c6f5ba42ea13308b841f4d1e4ce171f1b.ts create mode 100644 bundler/tests/.cache/deno/6fe71b4957b7d780c71afb9001bfef7e59569372.ts create mode 100644 bundler/tests/.cache/deno/6ff7a6b1cf0952d583431673b923b57ecb13760d.ts create mode 100644 bundler/tests/.cache/deno/7074e0bfb8e3d093d069ed64c5cb921f7630795b.ts create mode 100644 bundler/tests/.cache/deno/70ad2c2d2b8dae1f982011d943a56ace1e0d6c39.ts create mode 100644 bundler/tests/.cache/deno/70c4525fcfc01109036e1bbf23191a115d667845.ts create mode 100644 bundler/tests/.cache/deno/70cbddbeab5b1df6db66d5c56272506dcb3dd18a.ts create mode 100644 bundler/tests/.cache/deno/70d068476667405abfef2e4c5d56a3452441cea7.ts create mode 100644 bundler/tests/.cache/deno/70dc824078330decf57f1772c3bebc5614bc9492.ts create mode 100644 bundler/tests/.cache/deno/713ca9591daaf5e3d7601641fb62d1af4277a397.ts create mode 100644 bundler/tests/.cache/deno/71b26ce51ccf6d7932c718b438599193efc61a72.ts create mode 100644 bundler/tests/.cache/deno/71c0c5a98ac147751dcd48b59f9419e994a1fb46.ts create mode 100644 bundler/tests/.cache/deno/722a85bbc34ef77f799cb2b49aba8aa0cfa5e017.ts create mode 100644 bundler/tests/.cache/deno/729b826f0ec6cd05ae4c56a66ff267f68d230551.ts create mode 100644 bundler/tests/.cache/deno/733f3e76d4872e8e4339cef254b2391db6e451da.ts create mode 100644 bundler/tests/.cache/deno/737f22e1d52d7111bad0fbca4ac98156c56812ce.ts create mode 100644 bundler/tests/.cache/deno/73be4b5db4507e76dc9aaaf2e1be8e164dd9f1fa.ts create mode 100644 bundler/tests/.cache/deno/74384cbde4990f56a0f176c22b7d99a74916f268.ts create mode 100644 bundler/tests/.cache/deno/7468f3a48f08c5bc56fd2bcb64729ad757e0a851.ts create mode 100644 bundler/tests/.cache/deno/74f6b480cf4df8ea36359b558b9f2662106dd2c2.ts create mode 100644 bundler/tests/.cache/deno/74faf29ce09bfcf0067ed2b3452b8e1daaadd73a.ts create mode 100644 bundler/tests/.cache/deno/7521aa48dd614c8b2f9da7fd26d2b8616104cb6e.ts create mode 100644 bundler/tests/.cache/deno/7574c470a446f9cfe5ba758b023b5629ee728f4f.ts create mode 100644 bundler/tests/.cache/deno/75b05c480cd1107916ab3e9ff5718801bde920f2.ts create mode 100644 bundler/tests/.cache/deno/75b16eb10ab7d0867c7c835539785553a1630257.ts create mode 100644 bundler/tests/.cache/deno/763252be4c80285bb0c76e3a61edbfb60b554be9.ts create mode 100644 bundler/tests/.cache/deno/765d97d6ba2112ca9e8548a27f777e6cd05ec8ac.ts create mode 100644 bundler/tests/.cache/deno/76654db7bbc0e432ccc438345e4a583e0b486339.ts create mode 100644 bundler/tests/.cache/deno/76665b5478dfc5fbe9603d9f25fbd39acb692d73.ts create mode 100644 bundler/tests/.cache/deno/7687fa09d4cabf1b18f3c66634e539c83f0b24ae.ts create mode 100644 bundler/tests/.cache/deno/76d1b5d69dc192f40bdf7f959ce24d87f7643f4a.ts create mode 100644 bundler/tests/.cache/deno/76d2fdb7b9577301f985522851bc9fc520f85b63.ts create mode 100644 bundler/tests/.cache/deno/76ded5755756198f70d88116a058fc283ab09690.ts create mode 100644 bundler/tests/.cache/deno/77917a9a34b772d8f676553fd265872465855a93.ts create mode 100644 bundler/tests/.cache/deno/783f5890dde13e85ec3009ba3cc8b211e459d635.ts create mode 100644 bundler/tests/.cache/deno/785a5c7a73317a88ca6c6722d91f232cc32313ae.ts create mode 100644 bundler/tests/.cache/deno/78821e16b4859fd41cfd24ab71f728b35d93a1d2.ts create mode 100644 bundler/tests/.cache/deno/78e85c38153fa5e04a795f5fd46eef12c33b4cb6.ts create mode 100644 bundler/tests/.cache/deno/793e9f07b35bed4156c8a285c3976d7324247570.ts create mode 100644 bundler/tests/.cache/deno/7990a380a50d6c557f184ebcf6a35837037d6722.ts create mode 100644 bundler/tests/.cache/deno/79d809cf48163d86f3ae2c8b17c41f6dc8cdff01.ts create mode 100644 bundler/tests/.cache/deno/79e86c5e195ad14afccd87a335f14c4cdcea6488.ts create mode 100644 bundler/tests/.cache/deno/7a42ca78a2e065adec5211c9851e5db9374b9426.ts create mode 100644 bundler/tests/.cache/deno/7a63b3a3b8a9614a110d00b2e40e2340d3315c14.ts create mode 100644 bundler/tests/.cache/deno/7a74e76c87cc20eb0ff08b26a7c37c3ed003e117.ts create mode 100644 bundler/tests/.cache/deno/7a7632089b03302fd2d861bda1595e08d7bf9956.ts create mode 100644 bundler/tests/.cache/deno/7a9a4b356f9e37d84b1bcc46df13e40ec6e9e219.ts create mode 100644 bundler/tests/.cache/deno/7aa593b31947cc239638b653c7f2a4fbd4e0bc70.ts create mode 100644 bundler/tests/.cache/deno/7abcb0cfce117c782f328a960440cfdab538ae3a.ts create mode 100644 bundler/tests/.cache/deno/7abe2cb8747802a5939867e7a8676627fa667806.ts create mode 100644 bundler/tests/.cache/deno/7acc8e7cf173abfbb82b4e379f1b367cddafc5d5.ts create mode 100644 bundler/tests/.cache/deno/7aded0740cb27c015443cdba7f35e72e47290825.ts create mode 100644 bundler/tests/.cache/deno/7ae9bcc8ace6c8d56f5cf6ba58e2b796cb48bd3e.ts create mode 100644 bundler/tests/.cache/deno/7bbc857517d433fe324260638f2366514c655a99.ts create mode 100644 bundler/tests/.cache/deno/7c1dce387e456c70c622d782820348ccfaeb3e6e.ts create mode 100644 bundler/tests/.cache/deno/7c21357211237ccc1687131e6dffbf13507cbd9c.ts create mode 100644 bundler/tests/.cache/deno/7c23c2a3ed280e486b392c825480f3ca80048e58.ts create mode 100644 bundler/tests/.cache/deno/7ca5bbc16be57c84d9cdf891977f1335743cb15b.ts create mode 100644 bundler/tests/.cache/deno/7ce870403c4d6de06afba28d120adead7c745740.ts create mode 100644 bundler/tests/.cache/deno/7cf98f205bef3b9638a9a9a5478a8e7a8015640d.ts create mode 100644 bundler/tests/.cache/deno/7d321a0a4adba33947519f81b8af557bb503605c.ts create mode 100644 bundler/tests/.cache/deno/7d816bc760832c0fe6bc2230610af872d6e7d6df.ts create mode 100644 bundler/tests/.cache/deno/7dbb802a102789227da04940da0f89fc2919e418.ts create mode 100644 bundler/tests/.cache/deno/7e17928999646c49e71cacee35d6f7300f2ed537.ts create mode 100644 bundler/tests/.cache/deno/7e1e03ae78ebbfe81bfa16175375dc339d7de73c.ts create mode 100644 bundler/tests/.cache/deno/7e65ba6a1badcbf82337f6ce08d7db46840f01b6.ts create mode 100644 bundler/tests/.cache/deno/7e6975a3e1e93bcf7fd065bd50aeb3ba090febed.ts create mode 100644 bundler/tests/.cache/deno/7e9135591954e3f36b2ad538edca5efb30c5f399.ts create mode 100644 bundler/tests/.cache/deno/7ed31e79626ae13ed08a2ad28a04566f63b8209e.ts create mode 100644 bundler/tests/.cache/deno/7f01369bec49c7c256617f9c898a2237480d78d3.ts create mode 100644 bundler/tests/.cache/deno/7f7e7afce1432e6216cfaf131c293d8014e1cf77.ts create mode 100644 bundler/tests/.cache/deno/7f9c4f913f47c870b1038321feaa3e30417427f5.ts create mode 100644 bundler/tests/.cache/deno/7fa8cd676047f7f29262998a0ee917bd73d3f8f8.ts create mode 100644 bundler/tests/.cache/deno/7faac7b86f16e26d4cf5cf5dad053117f49c4877.ts create mode 100644 bundler/tests/.cache/deno/7fb9ab46a6bdc3718b6d297ce2eacf806691d512.ts create mode 100644 bundler/tests/.cache/deno/7fd52323a08a88e89c1ff539603f0eed75300fee.ts create mode 100644 bundler/tests/.cache/deno/8005a6d40f4bc8caf70c58603c1a2135d75706ef.ts create mode 100644 bundler/tests/.cache/deno/800e0269d9d6f5d1befea624dae464b66a63e24c.ts create mode 100644 bundler/tests/.cache/deno/80581649dac8affe51fcf5a43235883217da2b0a.ts create mode 100644 bundler/tests/.cache/deno/805a90266a6d4a5b289292fba043bdea1b49c9f8.ts create mode 100644 bundler/tests/.cache/deno/806693eaf8249da89dbe5b5602a459c2b201e843.ts create mode 100644 bundler/tests/.cache/deno/80797233c86ee71f9bf0465b49d6765039d35241.ts create mode 100644 bundler/tests/.cache/deno/80e98ad1d69691a1006049cefb69176b0c3a630e.ts create mode 100644 bundler/tests/.cache/deno/80f27cbd543cd8d4be680b68be6e0c5d6a04b9d5.ts create mode 100644 bundler/tests/.cache/deno/81481be06561c8a7d11b106a25d2ba74561c235b.ts create mode 100644 bundler/tests/.cache/deno/818689de8c644d3a599c7a38fd4be5dd96f18bb1.ts create mode 100644 bundler/tests/.cache/deno/81bebc1ecbb5f0562022195fec7cd337dac9f4bc.ts create mode 100644 bundler/tests/.cache/deno/82078dc54e160b7508f30445c6a994ab4ca44b11.ts create mode 100644 bundler/tests/.cache/deno/820d587c124ae7c593e51318e74da3d05ccdfe78.ts create mode 100644 bundler/tests/.cache/deno/822e83ee81927e56bf78a36aa037927244334e69.ts create mode 100644 bundler/tests/.cache/deno/827c3edd2d4f57fcb724cb0d4570f62c64e2479a.ts create mode 100644 bundler/tests/.cache/deno/828981bd87421b166442a2e592aa2d9c4ba63289.ts create mode 100644 bundler/tests/.cache/deno/83076aa9c8b206000e1c7cd5784bfaed4bdb211d.ts create mode 100644 bundler/tests/.cache/deno/836fe966941dbada4adbcb3b39b36e9820053fd4.ts create mode 100644 bundler/tests/.cache/deno/8376f4468129b626d419e1689092b6a9cd39a421.ts create mode 100644 bundler/tests/.cache/deno/838e80d5668ae33000a11c6b9df3ebb7a0a295a6.ts create mode 100644 bundler/tests/.cache/deno/83a212fcda1c5760ec9fd0abf491a9f437de010f.ts create mode 100644 bundler/tests/.cache/deno/83b79ffa51a489b4f445c2d70792926aa72cefab.ts create mode 100644 bundler/tests/.cache/deno/83d4a0242923a8a5fd3817333aaacf70249a429b.ts create mode 100644 bundler/tests/.cache/deno/83f2b932572129fce06d40c317798e27fd41d530.ts create mode 100644 bundler/tests/.cache/deno/84095c4cea1623e3e80d0153bad17f2dbe3b4432.ts create mode 100644 bundler/tests/.cache/deno/841979b27ebe2b6fbe8705dc8acde05a391cc8a1.ts create mode 100644 bundler/tests/.cache/deno/841cf6700b49ed12a9eff2f50b70a1a2c1d45478.ts create mode 100644 bundler/tests/.cache/deno/8437d620a4033f13beef167bd38d53e02df0a457.ts create mode 100644 bundler/tests/.cache/deno/8493c8b3e6389118e9506c6c4d43d44b26563f5a.ts create mode 100644 bundler/tests/.cache/deno/8499ed96852f55f691866315153653b4a3f3e326.ts create mode 100644 bundler/tests/.cache/deno/84ae3e95fa054e68fb3c5015cda3abb44b3f59f1.ts create mode 100644 bundler/tests/.cache/deno/84c549a91453ea884cd0c323fe30ee7440cf1fca.ts create mode 100644 bundler/tests/.cache/deno/84d15db35af119365ec4f1e66b00f0ca9e987e1e.ts create mode 100644 bundler/tests/.cache/deno/84db5ba4363156631c0a5fd07f97f4866ab95108.ts create mode 100644 bundler/tests/.cache/deno/8500be1ad7006d46daedac7bb309f48ef8bd425d.ts create mode 100644 bundler/tests/.cache/deno/850193df2f3c3414df9ac573ba9bbb491ad71f65.ts create mode 100644 bundler/tests/.cache/deno/855abcea65d9140c2148f1d92f5ca51de145d797.ts create mode 100644 bundler/tests/.cache/deno/859e0cd641e6b4e1b2be30d58c97fb84f34d1580.ts create mode 100644 bundler/tests/.cache/deno/85c03db3854bdffd7b6002c0d286f204481cb1be.ts create mode 100644 bundler/tests/.cache/deno/85e4e2aa98d009b187a72395227719f9f1253b56.ts create mode 100644 bundler/tests/.cache/deno/85ee64b7b0386674b60a4f24b5cf5bab4bdd8967.ts create mode 100644 bundler/tests/.cache/deno/86013a2b1079ccf03a50f620f3962be040163986.ts create mode 100644 bundler/tests/.cache/deno/86176fb1ac4911a0f4e4da4a7c6167053713e1df.ts create mode 100644 bundler/tests/.cache/deno/8624d1347cc0ad3afc872383f6408aaef2a851fc.ts create mode 100644 bundler/tests/.cache/deno/8629bcfba42545b2ee1ce8248bc5aae68d58ab1b.ts create mode 100644 bundler/tests/.cache/deno/863a9a8b625e8c5c9bd057af13a2afa7616cc824.ts create mode 100644 bundler/tests/.cache/deno/865999f43cb76814155ac60062f88fbc05597000.ts create mode 100644 bundler/tests/.cache/deno/866601f459daec6af60511b9127866218f04922f.ts create mode 100644 bundler/tests/.cache/deno/866f2a705fab3a19b2dbb218dba240a4a8682841.ts create mode 100644 bundler/tests/.cache/deno/876468d184f239cc6918fbd8539cab6b97b67e3a.ts create mode 100644 bundler/tests/.cache/deno/87a7ae05e9cfd3f6577face85df91cb015e83b5b.ts create mode 100644 bundler/tests/.cache/deno/87ad5cba6d36c8e443fa705207d29e851d61568c.ts create mode 100644 bundler/tests/.cache/deno/87c99d9dc1553f1e5895d0d1ddca39df9d88f8b4.ts create mode 100644 bundler/tests/.cache/deno/87c9be5e57ebc3b7a43345f000d440c4864abc6d.ts create mode 100644 bundler/tests/.cache/deno/87cc413efc498644ea24f76da5fc760031209e99.ts create mode 100644 bundler/tests/.cache/deno/87e099029b8bcf692e95aeed7e7a0583672d2ca0.ts create mode 100644 bundler/tests/.cache/deno/87e40089c43556862776b8260f22fefcd3c56ea5.ts create mode 100644 bundler/tests/.cache/deno/88d2b1efed0ac364f10f08623ebb0a3b806c9515.ts create mode 100644 bundler/tests/.cache/deno/88d81ca8b3ebdc9ebf5722a7e77dc0a3f1631e79.ts create mode 100644 bundler/tests/.cache/deno/88f14b5c902f5c2804b5d9908ba501ac85035f6d.ts create mode 100644 bundler/tests/.cache/deno/88f8248fd33fa1fba094673e020d5e3736299e99.ts create mode 100644 bundler/tests/.cache/deno/891789659e854539b2ef863677ed886d9630b3e0.ts create mode 100644 bundler/tests/.cache/deno/892270386d4b9fafaf84cf40e0fcc71fcf47471a.ts create mode 100644 bundler/tests/.cache/deno/89c23e5bdd8c6f9c5b43be87c9be29acfdb96d75.ts create mode 100644 bundler/tests/.cache/deno/89ee41c649f759a8c80ad7ff3e9aedae374e89b0.ts create mode 100644 bundler/tests/.cache/deno/8a19fba544ec06977bb86085de674ce408e02f6a.ts create mode 100644 bundler/tests/.cache/deno/8a303ac125019e9022c442b85052ab759fd4a86e.ts create mode 100644 bundler/tests/.cache/deno/8ac066d3f0ad434161827a16a20b19da6d22082b.ts create mode 100644 bundler/tests/.cache/deno/8b6db76640b287c88c926b3e0ed529474fd6c381.ts create mode 100644 bundler/tests/.cache/deno/8bdcd609e81178c17d4acc98807d6386857de858.ts create mode 100644 bundler/tests/.cache/deno/8c1f385f47be317fcd56c78a920aed329ae26cbf.ts create mode 100644 bundler/tests/.cache/deno/8c74f411b9d10093fa640009fd812f68a5857673.ts create mode 100644 bundler/tests/.cache/deno/8cb26fca2ea3e82ade0ce6fed1820c64bebe5a31.ts create mode 100644 bundler/tests/.cache/deno/8d796d9f2c522b2c3efc59d3b1755eb7f2f12ca0.ts create mode 100644 bundler/tests/.cache/deno/8d9fb2ed380c62a979ede05f13c8d944d31e322f.ts create mode 100644 bundler/tests/.cache/deno/8dbd05883dea58125dac08eec329300c7b32871f.ts create mode 100644 bundler/tests/.cache/deno/8dcdbd88740911debdaecb6b14e9bea1d344b3c5.ts create mode 100644 bundler/tests/.cache/deno/8df0d7a78c7d560dbaba93c58d63bdc213a4aa79.ts create mode 100644 bundler/tests/.cache/deno/8dfc590142b60eee0cc23a51bf3e3f7c7cd54454.ts create mode 100644 bundler/tests/.cache/deno/8e1dd502b1cc10e22235f34fdb8eb03d90ec1eee.ts create mode 100644 bundler/tests/.cache/deno/8e6d32a1241fe3c0eac9710c89ffe38e03d8637c.ts create mode 100644 bundler/tests/.cache/deno/8e84fb8a7c5b83ee72d199d3112ff89b01713798.ts create mode 100644 bundler/tests/.cache/deno/8eb550f1f2eb561ec557ba88538c0c5ebc656043.ts create mode 100644 bundler/tests/.cache/deno/8ed3edcf8cc4d25e48cc1c92eb91dedfa06eb97b.ts create mode 100644 bundler/tests/.cache/deno/8f3f862ec31530edd43a4113d3105b62bb74260f.ts create mode 100644 bundler/tests/.cache/deno/8f576d004620e529e9fe4b5f00eb14e7aa07218c.ts create mode 100644 bundler/tests/.cache/deno/8f638d54f05451aee3a17081046597bf45ae0ce3.ts create mode 100644 bundler/tests/.cache/deno/8fb2bd80dc822acb788f4dcbc8d254bcece5bd58.ts create mode 100644 bundler/tests/.cache/deno/8fc82c04c3da476b57cb6815993113e94aa5fb7b.ts create mode 100644 bundler/tests/.cache/deno/8fff27d7562ccc464f0749d51a915fe30323be39.ts create mode 100644 bundler/tests/.cache/deno/9016f9dbae6daca0ac5b0a94caeb0aace51f7748.ts create mode 100644 bundler/tests/.cache/deno/90704641c81576d268079355a67d613274b7d7a3.ts create mode 100644 bundler/tests/.cache/deno/90b9eff0e637acf1f4eef040483d3ff3c159b770.ts create mode 100644 bundler/tests/.cache/deno/912159cca395c89550a8bf4dd96c59caa7a0491c.ts create mode 100644 bundler/tests/.cache/deno/913ad2ee1d96e794e75ab086ebbc44a621318c0e.ts create mode 100644 bundler/tests/.cache/deno/914dd2006ee4835291856b75f53266104d257c72.ts create mode 100644 bundler/tests/.cache/deno/917d25b1356f5415c8ae59cf11feadb4b161d74a.ts create mode 100644 bundler/tests/.cache/deno/9193cd2bdcf4d4a43841bfbd807ffcb37617a43f.ts create mode 100644 bundler/tests/.cache/deno/91a3278cffe125ea1d39ab32b68668328582caa0.ts create mode 100644 bundler/tests/.cache/deno/91d50db2db9f158f1437cc38fc3506a9de0bc11c.ts create mode 100644 bundler/tests/.cache/deno/92f25bed9413840ab7090f43c727ec0f6141247c.ts create mode 100644 bundler/tests/.cache/deno/92f62fbca0fcf140695b1347dd3443f4d08e85d5.ts create mode 100644 bundler/tests/.cache/deno/9308baec008c11e5d9fdd35e26c857d4b6de6d23.ts create mode 100644 bundler/tests/.cache/deno/930cdcb3788f30348526fcff522f787686532e60.ts create mode 100644 bundler/tests/.cache/deno/931284ff6f206e5b6cb8434500b5e93d5189dda3.ts create mode 100644 bundler/tests/.cache/deno/9324fe55cec9116cd64020166b666c670ed52c49.ts create mode 100644 bundler/tests/.cache/deno/9332e6f272be77a67cc92a5fc04e228c158f6435.ts create mode 100644 bundler/tests/.cache/deno/933a1e88e36f7711de7e0ef6d06ba3998e3b7d0a.ts create mode 100644 bundler/tests/.cache/deno/938b32b0d6751f3aba67ef524c04833e96350f2a.ts create mode 100644 bundler/tests/.cache/deno/93c1ee29889dba621d84cfe6545b2d52344176f5.ts create mode 100644 bundler/tests/.cache/deno/93f37665c0a570d9251dd8146fc132832d09ad3a.ts create mode 100644 bundler/tests/.cache/deno/9409c3f194163c446592e150bebb737c3d28dfec.ts create mode 100644 bundler/tests/.cache/deno/94f90a6d01b8280ce5c99f6f4b54af76a92032ef.ts create mode 100644 bundler/tests/.cache/deno/953fe96d93f20d7016601beab985b049123de5eb.ts create mode 100644 bundler/tests/.cache/deno/95665d2af519997768eeb1310050bbda412864bc.ts create mode 100644 bundler/tests/.cache/deno/95a9b9250391e1c51b7bf168cfd5a4ccf8bc6a47.ts create mode 100644 bundler/tests/.cache/deno/9665c34a77935994e17829246c0ca4d9001c1f09.ts create mode 100644 bundler/tests/.cache/deno/96ffc1e38aa910376b9584f63a3fe04af09d4fe7.ts create mode 100644 bundler/tests/.cache/deno/97016f4c5b86b703da27b18afdbf5491171f7452.ts create mode 100644 bundler/tests/.cache/deno/970ff5282cd842f9478906c4fec8a73a179ad85f.ts create mode 100644 bundler/tests/.cache/deno/976d5cb8fc5ce22551731ee11ca4b97000e404a5.ts create mode 100644 bundler/tests/.cache/deno/97907cb5b328a3b72865b12faf143c5e3c9f0b95.ts create mode 100644 bundler/tests/.cache/deno/979a48799c6e8fbbf20c3cdebf4824236f52f93a.ts create mode 100644 bundler/tests/.cache/deno/98561c8769391140d14b971167cb9a2d66855bbd.ts create mode 100644 bundler/tests/.cache/deno/9869d98ee939ba8e5f6c333c8d745063f17cad68.ts create mode 100644 bundler/tests/.cache/deno/987fe90be7227917481e81f94403aeafa64835ca.ts create mode 100644 bundler/tests/.cache/deno/98facb91d996ee56dd5524610c52c74c61afd8a8.ts create mode 100644 bundler/tests/.cache/deno/997bfd04da400e57d24beffc37e6a510d3516424.ts create mode 100644 bundler/tests/.cache/deno/9985aff73012127ae1e5c05ce1f7943e112b0656.ts create mode 100644 bundler/tests/.cache/deno/99a3bb90a2d488faece7beebb3f3d741aad15536.ts create mode 100644 bundler/tests/.cache/deno/99bc8d3c8204355079b5a33fe9707ab0d0f1c823.ts create mode 100644 bundler/tests/.cache/deno/99c8f9ffb2769b7c8a38b8c028eb9644e7e0c7ce.ts create mode 100644 bundler/tests/.cache/deno/99d5df44232646fd9cd0e6f61c854f6a4caeba26.ts create mode 100644 bundler/tests/.cache/deno/99e6408e62dd4a64c2610648e8cdd49451d8477b.ts create mode 100644 bundler/tests/.cache/deno/9a54aa41e5f75d772cbb60a6a9b5981a978f8316.ts create mode 100644 bundler/tests/.cache/deno/9a5fff78dd6609bd3add0404c6be987ca110d756.ts create mode 100644 bundler/tests/.cache/deno/9a92d2bbef513374c4cf97a7173aa0df19e6ba6d.ts create mode 100644 bundler/tests/.cache/deno/9a95075c98085ee5ba5712ee0dfc4ac915a9b4d8.ts create mode 100644 bundler/tests/.cache/deno/9abef5534b7bfa653115e8c66598b8eb530dd23a.ts create mode 100644 bundler/tests/.cache/deno/9b3c55c32e87549332177095420f778702ea4d1f.ts create mode 100644 bundler/tests/.cache/deno/9b9748d7d7c6da0df8807cec3546472da2134a55.ts create mode 100644 bundler/tests/.cache/deno/9c5ca0e5731e16ff5197221fe61ba6beea163fc0.ts create mode 100644 bundler/tests/.cache/deno/9c63dc11abb86dce3f2c541c3aed34ac5cb562c8.ts create mode 100644 bundler/tests/.cache/deno/9c76992410f3623cd49b48606cff60cd3d96ffa3.ts create mode 100644 bundler/tests/.cache/deno/9c82043323fc0bedbcef878efd5f57ac474a167a.ts create mode 100644 bundler/tests/.cache/deno/9c9b37ee49588ac69071cc12105286e561114082.ts create mode 100644 bundler/tests/.cache/deno/9c9e6d78179d2bb95ebbb9a342dccfbab2126bda.ts create mode 100644 bundler/tests/.cache/deno/9cc8d5abc567d953176a286c2b3f91548ed40f0c.ts create mode 100644 bundler/tests/.cache/deno/9cd9b64ab6e8c7cf1faad4e63c46c2428391105d.ts create mode 100644 bundler/tests/.cache/deno/9d2a1bc97acfa3d69ad0b0475c6239291fd39ca0.ts create mode 100644 bundler/tests/.cache/deno/9d2d497b9e6ca45db50ecdf91e329bf9b7213822.ts create mode 100644 bundler/tests/.cache/deno/9d6e3c83a4d819014cc598e48cb57b1d54598e41.ts create mode 100644 bundler/tests/.cache/deno/9d93b712ae58fe01ffd8de872d2cf6ffd56fa336.ts create mode 100644 bundler/tests/.cache/deno/9da7e4179d6ebcf72f22a4885758a4a7c7a68367.ts create mode 100644 bundler/tests/.cache/deno/9e02da7d9a12d1b73a86ce9548a7dbeca8611eef.ts create mode 100644 bundler/tests/.cache/deno/9e3be7f995d1941f802cf870ffe35abf0fd95880.ts create mode 100644 bundler/tests/.cache/deno/9ed30952b4eec3c021dc83fa5a602ff0d6bb4d2d.ts create mode 100644 bundler/tests/.cache/deno/9f5cdcfcb2729cc827f25c504e9bc61290f17beb.ts create mode 100644 bundler/tests/.cache/deno/9f785be930eb0edcce28b7f5e8b1fbb94c2c66bb.ts create mode 100644 bundler/tests/.cache/deno/9fb76e3b0f12955adf1974932fb23da6d5456b02.ts create mode 100644 bundler/tests/.cache/deno/9ff3546c8a86abae4076ee5b0962adba04573216.ts create mode 100644 bundler/tests/.cache/deno/a0ce90699f36d6eff2a6c46552dd71e7290631d0.ts create mode 100644 bundler/tests/.cache/deno/a0d944ee426f6b53f2d4c0b7a7677fd234ea0d71.ts create mode 100644 bundler/tests/.cache/deno/a0e6e3414326f598d7fd3ae73751015dfcdcfc66.ts create mode 100644 bundler/tests/.cache/deno/a0ea2e238a1e02016791fa7797e01956529e54e5.ts create mode 100644 bundler/tests/.cache/deno/a0ec615fc998552dc25b92f8d0949c54b286dc0c.ts create mode 100644 bundler/tests/.cache/deno/a0fc45eac1469f47ed6e2bbaad4b323e856fac7b.ts create mode 100644 bundler/tests/.cache/deno/a0fc6a489f364f69771cdaa068b0d481258e9b3f.ts create mode 100644 bundler/tests/.cache/deno/a142b5e1699303d9d84903b5d8ab47e4d70e663c.ts create mode 100644 bundler/tests/.cache/deno/a15b11d129b5e8610439feb319f9820f27f70306.ts create mode 100644 bundler/tests/.cache/deno/a2626f5ab048da5f313379ef7dc74db490c86368.ts create mode 100644 bundler/tests/.cache/deno/a268c7e75a2e2b6b207972e91e1818f60f33d058.ts create mode 100644 bundler/tests/.cache/deno/a27ac559077481e0855e6f712e8c46361a85e490.ts create mode 100644 bundler/tests/.cache/deno/a288ff294ba8ed53e4c4efda5e662ffc01756ece.ts create mode 100644 bundler/tests/.cache/deno/a28ff8733f5ead137230cf0c8f86e809c228b794.ts create mode 100644 bundler/tests/.cache/deno/a28ffee6293481d2bff1a2ed09801d3a1abfc052.ts create mode 100644 bundler/tests/.cache/deno/a29a56db8af6ba83faca60508b76ed8fb7446737.ts create mode 100644 bundler/tests/.cache/deno/a30b0d9d18a858f20ad758d2bb4d880bcc059e75.ts create mode 100644 bundler/tests/.cache/deno/a31ba630c7846259801ce6754948849310ebca5d.ts create mode 100644 bundler/tests/.cache/deno/a326ef2822310f4c45eb62e7ce056e016af21a3d.ts create mode 100644 bundler/tests/.cache/deno/a33d67717c5a69e4428cb42c110b4c06e9712ad8.ts create mode 100644 bundler/tests/.cache/deno/a38a6d9c6b556b00c459f48cea0da3d9e21089f2.ts create mode 100644 bundler/tests/.cache/deno/a3ca7b26f6949136fe4633683d1debc8213f5e06.ts create mode 100644 bundler/tests/.cache/deno/a4185d797ae420ea1d5c3946abec64df7d3a03b5.ts create mode 100644 bundler/tests/.cache/deno/a41e999c2223615484075b574cf34570a0c89864.ts create mode 100644 bundler/tests/.cache/deno/a429787bd696fd73d9b3aac10919c5df3f520668.ts create mode 100644 bundler/tests/.cache/deno/a44b4161bbf7811a35d53227fa5d18b8bc839169.ts create mode 100644 bundler/tests/.cache/deno/a457995125d5e3a9f63d6a2d2d90b8b371e74529.ts create mode 100644 bundler/tests/.cache/deno/a45d1700c6aa4cf8381b39afe41d8b0ba349cd81.ts create mode 100644 bundler/tests/.cache/deno/a47ee1ee9a119786322a592d6c4e1fc0ca7d115e.ts create mode 100644 bundler/tests/.cache/deno/a4aaf231df4b43ed999e7cbb5db5b23c5d80d693.ts create mode 100644 bundler/tests/.cache/deno/a516a0933927c8bb50491290e8ad871b598bc25e.ts create mode 100644 bundler/tests/.cache/deno/a5a09d3edec940e550a53cc2fc6b79419f52cf2c.ts create mode 100644 bundler/tests/.cache/deno/a5a49c36734c6483c1dafe3da4ed02d08eb9d760.ts create mode 100644 bundler/tests/.cache/deno/a5d7fba44d172af771e356390597c38a03950209.ts create mode 100644 bundler/tests/.cache/deno/a65c80d8365ad68f50488cadf6649efc0f59f839.ts create mode 100644 bundler/tests/.cache/deno/a67b1c64514bea54c6365ab7db8939627efb005f.ts create mode 100644 bundler/tests/.cache/deno/a716684acab1eb2fdd7e36b899e9e6a0361a075e.ts create mode 100644 bundler/tests/.cache/deno/a719960671d4134f36546c84e88a5c128ada63aa.ts create mode 100644 bundler/tests/.cache/deno/a739e3441df81d7e6ddbd74c904691517977a6fe.ts create mode 100644 bundler/tests/.cache/deno/a777851f3834ac4a4f81b2acdb778752ec3f928a.ts create mode 100644 bundler/tests/.cache/deno/a78fea5845db336f77ced80b6b48eae199ebbc8d.ts create mode 100644 bundler/tests/.cache/deno/a7bec4aba036f0df48acd2f84301cd14dce3e5a4.ts create mode 100644 bundler/tests/.cache/deno/a7e75abeb0935a7e603b3aee76c69dbf5ea3aba1.ts create mode 100644 bundler/tests/.cache/deno/a7f325f1045f10db067945514a4ae60517e3ce32.ts create mode 100644 bundler/tests/.cache/deno/a867251db68a6e8929f60c1cf45bd96109ab62b6.ts create mode 100644 bundler/tests/.cache/deno/a87b83630681d76c8e78522f238e3fcce049fb9e.ts create mode 100644 bundler/tests/.cache/deno/a8c5b416bfde22b257d6f022e6c4cf5d851d7b66.ts create mode 100644 bundler/tests/.cache/deno/a8cbff1a9e1020dacbcd6a03ae67dc7e6a73d859.ts create mode 100644 bundler/tests/.cache/deno/a8da6671c3e8a1636834854f1846665dc4bbb483.ts create mode 100644 bundler/tests/.cache/deno/a907c635cd12c220e483739546c4f04a82cbfb00.ts create mode 100644 bundler/tests/.cache/deno/a97001f12d71e4c4e8a98064fe31d77d1770b26e.ts create mode 100644 bundler/tests/.cache/deno/a9e49d9b9195ef9857dca11572c83f19fd547936.ts create mode 100644 bundler/tests/.cache/deno/aa0d8306130c99ee1880043fd6cc5ade300d9e39.ts create mode 100644 bundler/tests/.cache/deno/aa243672612ff73045bf20156419b1c7b0a1b7a8.ts create mode 100644 bundler/tests/.cache/deno/aa587c23dd78b12d7bf25fe5c9f81f201c37ea4b.ts create mode 100644 bundler/tests/.cache/deno/aa6bad27291c3da2998cc6c05254e4925b125609.ts create mode 100644 bundler/tests/.cache/deno/aab811f3d3ff29b5d650759606c1f0209392bd63.ts create mode 100644 bundler/tests/.cache/deno/ab2579d8a3026571b5bacb92e31dcd7f2cfb38e5.ts create mode 100644 bundler/tests/.cache/deno/abee4bd5d97fe00b434fd4fac14c6fc4a42f8da8.ts create mode 100644 bundler/tests/.cache/deno/ac2b751ad023e6ef3ede6e8506946a9f3ab9cd3c.ts create mode 100644 bundler/tests/.cache/deno/ac61afa8a2946ca929f48f053138ff8277857f27.ts create mode 100644 bundler/tests/.cache/deno/acf72f9492fd78ae10c035f645ad94afaad3049e.ts create mode 100644 bundler/tests/.cache/deno/ad08212d5162c9627e3b045ba6127cac017b6afc.ts create mode 100644 bundler/tests/.cache/deno/ad28bb2a8fb12464b92bb5bc2fbb8deb5fad5e8f.ts create mode 100644 bundler/tests/.cache/deno/adc8dcfb18c36709ac2ee7dbd5a740dea496568f.ts create mode 100644 bundler/tests/.cache/deno/ae108499452c609eae73c7ed3bc8a4d6ce54df63.ts create mode 100644 bundler/tests/.cache/deno/ae31a2918532132a6449050c765bf43a792a6a0c.ts create mode 100644 bundler/tests/.cache/deno/aeca0449dae8ea36b1d9ea82a6597d181a32bbea.ts create mode 100644 bundler/tests/.cache/deno/aef18b720e0ba0e8a0407a06aa49d9cd7a97799a.ts create mode 100644 bundler/tests/.cache/deno/aef5db3b2ec0d66b8c68e671895d9f30a1607fe3.ts create mode 100644 bundler/tests/.cache/deno/aefcee4ff8555a18e9fcf191f19cdf865871b8db.ts create mode 100644 bundler/tests/.cache/deno/af2841d4c20e73058dc5af777f3bdecd2dcd3aa4.ts create mode 100644 bundler/tests/.cache/deno/af75a4ca6fef72670fb344d6a0b5e5cbef7949a3.ts create mode 100644 bundler/tests/.cache/deno/afa11413d04e197cf530446beaf8dde8b9587375.ts create mode 100644 bundler/tests/.cache/deno/afac710df581a532b1b7923486b7649d579f8c2e.ts create mode 100644 bundler/tests/.cache/deno/afcc6eaa764ef6a22fec790bcb37a88c1112d02a.ts create mode 100644 bundler/tests/.cache/deno/b01d10bd522162964c35a761ffd2f2e54df8eccf.ts create mode 100644 bundler/tests/.cache/deno/b05d13b0775b642a83cd8da22d68d4d68a4965ca.ts create mode 100644 bundler/tests/.cache/deno/b0ccc81704aae29e48347e035f3deefeb7de22e7.ts create mode 100644 bundler/tests/.cache/deno/b12a6cda523d22548f22cf8337cbf3c80af0f658.ts create mode 100644 bundler/tests/.cache/deno/b142aa2060fb12d396785890a64e6b3b3d7b7994.ts create mode 100644 bundler/tests/.cache/deno/b15f356f842ef09da42d267398da87b4f0019166.ts create mode 100644 bundler/tests/.cache/deno/b1612551ea837f2d0dc8cfbbfd6b4177dc401a0d.ts create mode 100644 bundler/tests/.cache/deno/b1b129f07d03ecfec2509af9441d6588b8ced0d6.ts create mode 100644 bundler/tests/.cache/deno/b25e0e29d6dae5035ab13911c3f6c4496af88160.ts create mode 100644 bundler/tests/.cache/deno/b2ddd7b200c85801f31e4a4798295a16f324ec34.ts create mode 100644 bundler/tests/.cache/deno/b2edd56e998026f10cd5fb77f1eb02f0410709ca.ts create mode 100644 bundler/tests/.cache/deno/b2f626579e4f8c26431d13e8da8579fd9228acae.ts create mode 100644 bundler/tests/.cache/deno/b329d145946b1ddddb0e84874f5dbc86072d3a95.ts create mode 100644 bundler/tests/.cache/deno/b347172b9485f4da7366eae189c05440e8d9ec39.ts create mode 100644 bundler/tests/.cache/deno/b38ddce03727e795106fb99f058ae11d42efa21a.ts create mode 100644 bundler/tests/.cache/deno/b39958f85653b276abfec51177db58a3996e2193.ts create mode 100644 bundler/tests/.cache/deno/b409234992ea48dc58a0f8f30f6b08c0c535071f.ts create mode 100644 bundler/tests/.cache/deno/b41d1bbd146ad945291e6c1f7d583994e1e44285.ts create mode 100644 bundler/tests/.cache/deno/b420d2435521a43a909d5d8a46776526091ca5c0.ts create mode 100644 bundler/tests/.cache/deno/b459e810bea30149bf1280057af32aa9b050d027.ts create mode 100644 bundler/tests/.cache/deno/b48a58c2984bd7d27ea15c473e55e801450fc9cc.ts create mode 100644 bundler/tests/.cache/deno/b54d712edc81e1bfd44eef3805a506fc835e7a6e.ts create mode 100644 bundler/tests/.cache/deno/b5700b6cbaee4263179b938d27c9c14d8f5afa80.ts create mode 100644 bundler/tests/.cache/deno/b5d24f382c4dd36762101122d065bedced2d6232.ts create mode 100644 bundler/tests/.cache/deno/b5fe091944617d00cc0ce57aadba74a1052fdf2a.ts create mode 100644 bundler/tests/.cache/deno/b654fe628f534340c69d172782bfff51335db83e.ts create mode 100644 bundler/tests/.cache/deno/b675826af19f90236204fd06eaaae434211b517b.ts create mode 100644 bundler/tests/.cache/deno/b6a584c0573e2e222005eef044716416cb824de0.ts create mode 100644 bundler/tests/.cache/deno/b6d2fa7f6a53835ad5226679a241ddffe11402c4.ts create mode 100644 bundler/tests/.cache/deno/b708aa3e2303989a26006e521225c92b5b1305ce.ts create mode 100644 bundler/tests/.cache/deno/b7535c9ba13b33d06335169fd4ab52afdfb2f48c.ts create mode 100644 bundler/tests/.cache/deno/b76fb10b423ffc0a8e5fbd4eb2e126631d26f397.ts create mode 100644 bundler/tests/.cache/deno/b786d34f39415771516f7cbe2d830da7239576d2.ts create mode 100644 bundler/tests/.cache/deno/b79730d47cf622bae941db3e5b1b0508d990c167.ts create mode 100644 bundler/tests/.cache/deno/b7c928288561e7455d7c7b6a7d6826dad516aaf8.ts create mode 100644 bundler/tests/.cache/deno/b7f288bbab9b0c486e6a0b3c8ea960e61dc2685e.ts create mode 100644 bundler/tests/.cache/deno/b7fba0ec9aeddbf762691643b51aab6e01fc60e0.ts create mode 100644 bundler/tests/.cache/deno/b89cb7875e5a21b59d5170a6acebc13d422a83ac.ts create mode 100644 bundler/tests/.cache/deno/b8b7f34467fdf7fc6ae2fd4621a194b88066c1d8.ts create mode 100644 bundler/tests/.cache/deno/b9826eb439990f095330b27e4d1e482e027286a6.ts create mode 100644 bundler/tests/.cache/deno/ba20bb778aa21c2e0c11377a881e264e52df3bb4.ts create mode 100644 bundler/tests/.cache/deno/ba2f2436bf8e4f3a19617fef400c6f27d1717586.ts create mode 100644 bundler/tests/.cache/deno/ba63fd022ea28b5ddb53c05710432e9cde5ad3f8.ts create mode 100644 bundler/tests/.cache/deno/ba99f91525b888faf4fd5be47ee962e60d54ee9f.ts create mode 100644 bundler/tests/.cache/deno/babb61cb0e87796bc9d4e3209ae47044374d7054.ts create mode 100644 bundler/tests/.cache/deno/baf9f1beac9067e787041e0d18537f73dd1e5b5e.ts create mode 100644 bundler/tests/.cache/deno/bb6867af5d41b661e35987b3b1cbe5d7c968b500.ts create mode 100644 bundler/tests/.cache/deno/bbb05c5b835d07cac75f0883a39c9743152e5cfd.ts create mode 100644 bundler/tests/.cache/deno/bbeaa516044c946762cb7d9cd267f17e372477a7.ts create mode 100644 bundler/tests/.cache/deno/bc2137b462f10687e55924368c59d731a42fc5ed.ts create mode 100644 bundler/tests/.cache/deno/bc2a46e068dbf4e6aab4080efb335923e28821cc.ts create mode 100644 bundler/tests/.cache/deno/bc3120b7bfc5fe89efe08f45ccbcfc4c43d19422.ts create mode 100644 bundler/tests/.cache/deno/bc60eabdeb55ac9437e7e9ffd585e41cc9e22cf2.ts create mode 100644 bundler/tests/.cache/deno/bc84e9245a74ba5977c1cf3f13c82a055fb0810f.ts create mode 100644 bundler/tests/.cache/deno/bcad9def703f3f8ca75d0c9f9dd5aee5ee9f54da.ts create mode 100644 bundler/tests/.cache/deno/bcccd34eee4136df7d2d2b9eaa3904a8da44371a.ts create mode 100644 bundler/tests/.cache/deno/bcd0b5ee8ca721faa0cff7d88c03c20988982306.ts create mode 100644 bundler/tests/.cache/deno/bd292ad393bc391f9f3f669e7fff1f44413893f1.ts create mode 100644 bundler/tests/.cache/deno/bd705585e60808ac127b186551171080b840de50.ts create mode 100644 bundler/tests/.cache/deno/bd830a87819dfc99b8f58a0d4d30efadf5f1fa5b.ts create mode 100644 bundler/tests/.cache/deno/bdc90f905b76f3949ac2d764328c049546d036ea.ts create mode 100644 bundler/tests/.cache/deno/bdd9c5f714d6acdba0026c02e4d960987639bc2d.ts create mode 100644 bundler/tests/.cache/deno/be159932d1768f7fbd218488f0c9850b5362f41f.ts create mode 100644 bundler/tests/.cache/deno/be3b0879dbb8217929fad6d58ce816aef5dc99f0.ts create mode 100644 bundler/tests/.cache/deno/be71fc1ab3e65011528b5293819348b409ed66dd.ts create mode 100644 bundler/tests/.cache/deno/be8334e79454fb246421227d887e97533a0c72e5.ts create mode 100644 bundler/tests/.cache/deno/be9d6583508483a1faa9fbe4a0b21da60f6679da.ts create mode 100644 bundler/tests/.cache/deno/beb55af4dc5102f1c15cf9251165b5886e6d55d3.ts create mode 100644 bundler/tests/.cache/deno/beb6cbc6e8a4f063a14998239969c408ed878fe0.ts create mode 100644 bundler/tests/.cache/deno/bf3c2a7ec4005e4a5f70f4c3c97bce9208d7ff03.ts create mode 100644 bundler/tests/.cache/deno/bfa516c4b18c3dea64a583cb739a8dcf05e8dc0f.ts create mode 100644 bundler/tests/.cache/deno/bfc728960b621688ce2f4614e845571538a2eb25.ts create mode 100644 bundler/tests/.cache/deno/bfd3e30b262e3e7302d3dcba244808baacaed9ce.ts create mode 100644 bundler/tests/.cache/deno/c019e8f5fa8ec9f1f6e9fac399f8d6e612fcbfe3.ts create mode 100644 bundler/tests/.cache/deno/c039b9a77e6b1dc6bf8e5a8822784f093ca0a21e.ts create mode 100644 bundler/tests/.cache/deno/c0528b15f7de0ab87ac7b5115f9588f0b4f1bdfd.ts create mode 100644 bundler/tests/.cache/deno/c056969db90d847542e4b5eeddf4ada0b5516643.ts create mode 100644 bundler/tests/.cache/deno/c078dfefe17fcc0e0db64d8e80e839a885b108be.ts create mode 100644 bundler/tests/.cache/deno/c09715257bce4b5f1ac2a32ed67a6643af215831.ts create mode 100644 bundler/tests/.cache/deno/c0c370d38bd92a781f4511fb5c9f00dfbbcc58f0.ts create mode 100644 bundler/tests/.cache/deno/c0ce03471a94cad5d90a747f54576f5ac9b873df.ts create mode 100644 bundler/tests/.cache/deno/c10fe05df59983639d2fba76188e16798e5a90ae.ts create mode 100644 bundler/tests/.cache/deno/c14c897c247cc99ff37cf3deb00f9584b76bb808.ts create mode 100644 bundler/tests/.cache/deno/c22b5f7aac3f5c747b6671c9b83c20623b5e9804.ts create mode 100644 bundler/tests/.cache/deno/c2302aee2f4be0793fef68ba297edfe23ac4b272.ts create mode 100644 bundler/tests/.cache/deno/c243d23aecc4d9f5798b7604b10ff3a5879cf0ab.ts create mode 100644 bundler/tests/.cache/deno/c2897f055a87c27545600578ff624f3a597d0bbe.ts create mode 100644 bundler/tests/.cache/deno/c29ca8bdf0e04d5f285d44d868b422fcf28dd8bc.ts create mode 100644 bundler/tests/.cache/deno/c29e9778b67063ad104296ceb03655620d0798f7.ts create mode 100644 bundler/tests/.cache/deno/c2aa2ea224ab15081a36313c8ffcf8b43d2bbe47.ts create mode 100644 bundler/tests/.cache/deno/c2ca017d610e882401452cd03ed1afd2826dba92.ts create mode 100644 bundler/tests/.cache/deno/c3c606b9343c0c7fb21fc911c8188c8ab6a8450f.ts create mode 100644 bundler/tests/.cache/deno/c4739ed0dfdba3a3ef0253d4341f848d2b9d1fee.ts create mode 100644 bundler/tests/.cache/deno/c5160638be20ce382e11e3b363c25e3c192e2711.ts create mode 100644 bundler/tests/.cache/deno/c523b0da484f98437113f77e4c725032c98cf6fb.ts create mode 100644 bundler/tests/.cache/deno/c56c554ad54951f2e2edce9f63603257451e7673.ts create mode 100644 bundler/tests/.cache/deno/c5a6eef65797e61b302a185f91d1792d86c3e97e.ts create mode 100644 bundler/tests/.cache/deno/c5efacd3b01ae2bec96353858bc543e6a6055224.ts create mode 100644 bundler/tests/.cache/deno/c658df173df2a224ae3f7239f17771261507be83.ts create mode 100644 bundler/tests/.cache/deno/c66e79a62dda0af277aa98d552d9cdde889000a0.ts create mode 100644 bundler/tests/.cache/deno/c690ca445ae96ec0cd3f3b45436c134f70c6aa6a.ts create mode 100644 bundler/tests/.cache/deno/c6b66edb91ebd6db54ce6aa59b21f51319c5c7fa.ts create mode 100644 bundler/tests/.cache/deno/c70c2c5563cc9193ee224d296df7f47443319d4c.ts create mode 100644 bundler/tests/.cache/deno/c71df4d383788df8395a01a44b7d68ceef33a84b.ts create mode 100644 bundler/tests/.cache/deno/c74c40a9e71a01d2a563831bc6582bcb9203c543.ts create mode 100644 bundler/tests/.cache/deno/c76ca21f9dfe95b39bd838a0ef3cb4d5492970ee.ts create mode 100644 bundler/tests/.cache/deno/c7838e1b8c6125262a0b8fde9af47c141631d52e.ts create mode 100644 bundler/tests/.cache/deno/c78d3084a2ef9400c44051b01f4c1749775180a2.ts create mode 100644 bundler/tests/.cache/deno/c7a7732d167335b1c63600e2f4a2952d1d6e896f.ts create mode 100644 bundler/tests/.cache/deno/c7d91a1d53256cebf2c84f83d8194e2a482ea896.ts create mode 100644 bundler/tests/.cache/deno/c84bf8333e90db1b47f57bd57d21243e0272cf50.ts create mode 100644 bundler/tests/.cache/deno/c870059092be4b5fbad851363384611d318b8eb4.ts create mode 100644 bundler/tests/.cache/deno/c89e70748d5935241dc952409e3c1ff1f791c954.ts create mode 100644 bundler/tests/.cache/deno/c8f609065e1433082a58fbf574ea48c62937f7f8.ts create mode 100644 bundler/tests/.cache/deno/c90899c5ecf9b52e9a64ffe2ebe754e51f098603.ts create mode 100644 bundler/tests/.cache/deno/c923cefabdb9c9a61ae5a8f9cf6381213c1145a0.ts create mode 100644 bundler/tests/.cache/deno/c963534787c8f203c77e0d04f568635833e067c3.ts create mode 100644 bundler/tests/.cache/deno/c9a547b1075f830fa033112c246ded4c8d51b01d.ts create mode 100644 bundler/tests/.cache/deno/c9c2d371ac6abbe0b7853f5e8928297fa977247b.ts create mode 100644 bundler/tests/.cache/deno/c9e3a6b2946feeee82d0c7367ef1967c478ddfa3.ts create mode 100644 bundler/tests/.cache/deno/ca0db62b4ef38511465a571c2906b0d8054c9287.ts create mode 100644 bundler/tests/.cache/deno/ca9220de99ceee497dfde4dbea20265f6d5e69e6.ts create mode 100644 bundler/tests/.cache/deno/caa1378d2b64eb4f998d5dd70f98cca279fc3306.ts create mode 100644 bundler/tests/.cache/deno/caa27c2de3a7c563aabff926fafb3a9cdc9307ed.ts create mode 100644 bundler/tests/.cache/deno/caca037df0cc7e83b5d889b1cba0df7fc387931a.ts create mode 100644 bundler/tests/.cache/deno/cb0b631884b87a1f42892b9d007f666c4fadf1ec.ts create mode 100644 bundler/tests/.cache/deno/cb468298855589bb9ac923c33459943a7596c8ec.ts create mode 100644 bundler/tests/.cache/deno/cb4c357e1f3c29d25626790c9fe35e2596813eca.ts create mode 100644 bundler/tests/.cache/deno/cb8b4797e98f9bfb7d53b8a7086ea02ea511df95.ts create mode 100644 bundler/tests/.cache/deno/cba5a538dcd7ca54b8108b80ebdcc7bdb61a462d.ts create mode 100644 bundler/tests/.cache/deno/cbb5445f66f90a6bb17ea85d14684d0ba9a7b119.ts create mode 100644 bundler/tests/.cache/deno/cbf633d8fb10f64d13c5969a7822ff777f8c4d3e.ts create mode 100644 bundler/tests/.cache/deno/cc7273e31e9ae68fb3c750625e62f70ded4166e7.ts create mode 100644 bundler/tests/.cache/deno/ccb634fb8b96d87d8d1839dfd32a2ee7084cf7aa.ts create mode 100644 bundler/tests/.cache/deno/ccc13d148135efa61f45bfa4931c308b8e057a12.ts create mode 100644 bundler/tests/.cache/deno/cccc59a2a0435d6aa188a14df30cc43e4ee521b8.ts create mode 100644 bundler/tests/.cache/deno/cce6dcd37c624f56a71789362eafc2186f8232fc.ts create mode 100644 bundler/tests/.cache/deno/ccfb1d05d24a281ab8bbde0886902ee1f2bdc37a.ts create mode 100644 bundler/tests/.cache/deno/cd61d39a0baea90ce1528d1f7c3845f789ac7396.ts create mode 100644 bundler/tests/.cache/deno/cd9bc7139a65144209ea6d09bcce351435a75fe7.ts create mode 100644 bundler/tests/.cache/deno/cde3d856c31882977158cb69c3ef16a5b80fd976.ts create mode 100644 bundler/tests/.cache/deno/ce75f59ec68f7f35e428dd589cacf6a9124a097e.ts create mode 100644 bundler/tests/.cache/deno/ce95cbd6f72bc3d00eabeb208656be46cf55bc90.ts create mode 100644 bundler/tests/.cache/deno/cee2dafcf0bd78b86c85553073f2a8354a049000.ts create mode 100644 bundler/tests/.cache/deno/cee985510d58f81ae25b09a502ac96a4b2d945d0.ts create mode 100644 bundler/tests/.cache/deno/cef1ef36741f0138205fad9e3db2f2c77755df6b.ts create mode 100644 bundler/tests/.cache/deno/cf10b35d6f568026075877c710884d1eba1121d4.ts create mode 100644 bundler/tests/.cache/deno/cf12ac454c69f7afb74184149dc89ad59a2120c7.ts create mode 100644 bundler/tests/.cache/deno/cf29dd9767780568d1f039c184d5ecc11958e9e3.ts create mode 100644 bundler/tests/.cache/deno/cf51e700c9ca5d3530b589bda2fee36ee9441455.ts create mode 100644 bundler/tests/.cache/deno/d043e7581e4be85d4ee64019510c7fea2a32f92d.ts create mode 100644 bundler/tests/.cache/deno/d05317965c1121432be9c1713e3371315fbda0e1.ts create mode 100644 bundler/tests/.cache/deno/d0a9c9736276898e6047cceb97f83dfb0197f116.ts create mode 100644 bundler/tests/.cache/deno/d0b3ab913f2da591f92d7c859d8138a98c46870d.ts create mode 100644 bundler/tests/.cache/deno/d0cb1cab22150588787552132815ba0adfaa9f25.ts create mode 100644 bundler/tests/.cache/deno/d0f53c973249fa46c589bba3ed992682a61da5d6.ts create mode 100644 bundler/tests/.cache/deno/d1090b86764c5193b1b2d03876f65c8a484c76d5.ts create mode 100644 bundler/tests/.cache/deno/d168b0f663b05a2aff5713eb265dde722651c7ef.ts create mode 100644 bundler/tests/.cache/deno/d16fa84a403387609691baebee6162db555a49eb.ts create mode 100644 bundler/tests/.cache/deno/d1745064f6aff60fdf50815e4b14d6d5d6772d8c.ts create mode 100644 bundler/tests/.cache/deno/d1e3d21226328ca899c8d9b7f50176af9f0f63e9.ts create mode 100644 bundler/tests/.cache/deno/d20887b7b6b613d2656b487efebc04b646d470ec.ts create mode 100644 bundler/tests/.cache/deno/d20ae1cd188fa121bb7310fd04d1c44c622b452a.ts create mode 100644 bundler/tests/.cache/deno/d2104f5cfe96d1e328d590e309094302175c8ff1.ts create mode 100644 bundler/tests/.cache/deno/d210984b6ab8a23314ce3a9c6a383ff61baa2b56.ts create mode 100644 bundler/tests/.cache/deno/d2770b20e27aa55cf9e8a86206eac21c2ca74223.ts create mode 100644 bundler/tests/.cache/deno/d31e1432d013dcef458190f0d8157c996963cadd.ts create mode 100644 bundler/tests/.cache/deno/d3344efb9da95e08758beadfdf7b40164049e343.ts create mode 100644 bundler/tests/.cache/deno/d33584c12e32941a6e6379a4a8d3be362140f70e.ts create mode 100644 bundler/tests/.cache/deno/d404e5c250663eeec42fcd8b8dfe25560269f725.ts create mode 100644 bundler/tests/.cache/deno/d437cf9a8c17626352d164ef4e7aa14af842055c.ts create mode 100644 bundler/tests/.cache/deno/d45959e8749b8e98ed8168e128b2c7f880a13d15.ts create mode 100644 bundler/tests/.cache/deno/d4d6921a7a08ab2164439921d0dff2bccc62f26a.ts create mode 100644 bundler/tests/.cache/deno/d4e8cd9d25876e2f27c7cb15c5f2bfe99ef9b071.ts create mode 100644 bundler/tests/.cache/deno/d55a64ab45359e86e46ee653bba1d86590a5ee9e.ts create mode 100644 bundler/tests/.cache/deno/d57983204e1f809a3eff59710d532b336db31a98.ts create mode 100644 bundler/tests/.cache/deno/d5e653c908b9df7f1b2c5854561d1952f8063d88.ts create mode 100644 bundler/tests/.cache/deno/d6183832e1c1eabfeb9a327eabfb7c71fe40986d.ts create mode 100644 bundler/tests/.cache/deno/d63ac6803f6683601e225a1db29edc8524f79c45.ts create mode 100644 bundler/tests/.cache/deno/d65acf04f42400a5376a539be8b8d1e31160a2b9.ts create mode 100644 bundler/tests/.cache/deno/d672dca036a1a85042ae087924f4de32d7effcc6.ts create mode 100644 bundler/tests/.cache/deno/d689cd691e6cbe681e9a187f0a719fe4fdf83719.ts create mode 100644 bundler/tests/.cache/deno/d6a65c32e97394852b9a0acfbd1a9dd2c516ab00.ts create mode 100644 bundler/tests/.cache/deno/d706f02c673b871e257a62af5e9562e5c87ba103.ts create mode 100644 bundler/tests/.cache/deno/d70d4a0c36d27b43eba85df18c90649a7eb11fc1.ts create mode 100644 bundler/tests/.cache/deno/d71ad67b1292c7fef31a0262d6031f68234c2d54.ts create mode 100644 bundler/tests/.cache/deno/d788148ec19b2ebf1fcefac5e7cef768245b609a.ts create mode 100644 bundler/tests/.cache/deno/d7ad744d28ef0a37229c636201322fd02edcae4d.ts create mode 100644 bundler/tests/.cache/deno/d802ec9a09e10f17e42d7e1abc40374079df674c.ts create mode 100644 bundler/tests/.cache/deno/d8b1ca56d7a7bd15c58997b01e24112b0fe9baee.ts create mode 100644 bundler/tests/.cache/deno/d8b6994eee1b6ba8a74a7b0461d930066a48fbf1.ts create mode 100644 bundler/tests/.cache/deno/d8bcd6288eaf9241602757273e6ce0cae3f89f22.ts create mode 100644 bundler/tests/.cache/deno/d90518e14164d26b969f8df2555db8f9ab2b4f60.ts create mode 100644 bundler/tests/.cache/deno/d908bfc1c8b682eb8f4cb3ce86534748cc75fe1e.ts create mode 100644 bundler/tests/.cache/deno/d90ce64f0f06c337774c0110ec715b8b322fd010.ts create mode 100644 bundler/tests/.cache/deno/d922f58353cb797ed32e711f48b910f4d15e4f32.ts create mode 100644 bundler/tests/.cache/deno/d93268d85a61c7cf2a9f287805bf3b2e034b45ee.ts create mode 100644 bundler/tests/.cache/deno/d95bc3fd6eaca0abff1a4380d03c0cb37b0fcca8.ts create mode 100644 bundler/tests/.cache/deno/d95edbcb827d78c6c55bb679a9be33c6763c438f.ts create mode 100644 bundler/tests/.cache/deno/d9757bfdd62aee27fcd8d0da2ec1571c3b5637c5.ts create mode 100644 bundler/tests/.cache/deno/d9829961282894c30686f560abf9c7f08e1483db.ts create mode 100644 bundler/tests/.cache/deno/d991bc996063c32bf9ff0e51251ee2f00409835d.ts create mode 100644 bundler/tests/.cache/deno/d9dfebe5a40cc21a267c2c8cd2a03403cdd599b7.ts create mode 100644 bundler/tests/.cache/deno/da208af4ea18f9dd34a64c594b7863ccfb6dba7f.ts create mode 100644 bundler/tests/.cache/deno/da72e428bb685926256311dffdf9fe2470a1ffe6.ts create mode 100644 bundler/tests/.cache/deno/da99e09ca02d3d32967d4903bb3149ce9af83fcf.ts create mode 100644 bundler/tests/.cache/deno/daba1372e4e33e435fa4882ec6684be5733b35c5.ts create mode 100644 bundler/tests/.cache/deno/db17363cba3a9fed3ce8698570e6eefad91ee2c2.ts create mode 100644 bundler/tests/.cache/deno/db6c92d1ffe8fa39e1c40cd3fb7843a20e00c9c2.ts create mode 100644 bundler/tests/.cache/deno/db88e3ad5eaf64791413d2c0e3efcc0b5602a9d1.ts create mode 100644 bundler/tests/.cache/deno/db8c4b16b87020b0182a80a60fbb71bed38b814d.ts create mode 100644 bundler/tests/.cache/deno/dbb10f16e8dab6b0190a0debe09d19af608b861a.ts create mode 100644 bundler/tests/.cache/deno/dc0c42eb8874d03c69f133343ed02c75dea2f237.ts create mode 100644 bundler/tests/.cache/deno/dc6d3dce7401159ca2464ee9c9ccbaf708abcf33.ts create mode 100644 bundler/tests/.cache/deno/dcab55a17f5254faba5748f703c932191eaa5ff6.ts create mode 100644 bundler/tests/.cache/deno/dcc36fe910e1ed8105058e19c939027bd294a425.ts create mode 100644 bundler/tests/.cache/deno/dcce674912502cecf7c33ba73855470d0a57c93e.ts create mode 100644 bundler/tests/.cache/deno/dd17d1398e494d3bbfa9b2d4cf1af3d855a4d95f.ts create mode 100644 bundler/tests/.cache/deno/dde64dfe13621179ef8559e19b3dd613c5da712d.ts create mode 100644 bundler/tests/.cache/deno/dea150aa7c1bee858a5a9a293f4068a1dffb6633.ts create mode 100644 bundler/tests/.cache/deno/df284e68b94120f1bce26fcc89c3f6f2847eaf6a.ts create mode 100644 bundler/tests/.cache/deno/df2d7298f8720126964df61ffa573ce9dfed6e10.ts create mode 100644 bundler/tests/.cache/deno/df42b966a6c08b9e204808fee514bbf37c44188a.ts create mode 100644 bundler/tests/.cache/deno/df441564279e27b04327725d089516c9045b90c0.ts create mode 100644 bundler/tests/.cache/deno/df521d1e81648abf9a455b7ed098e034f697884c.ts create mode 100644 bundler/tests/.cache/deno/dfd1ee984a6faec6df21e8eeb8848f8512fa9a4a.ts create mode 100644 bundler/tests/.cache/deno/dff66e9be3083faddfb752397fccb71a7f500809.ts create mode 100644 bundler/tests/.cache/deno/e023404be98d7776261688a96d643ca521f7bd68.ts create mode 100644 bundler/tests/.cache/deno/e07fc48ca28e556adcca084ee40f7e652d4fe4c3.ts create mode 100644 bundler/tests/.cache/deno/e0cd953338b5f75ce93555b731d80e127cb15f8a.ts create mode 100644 bundler/tests/.cache/deno/e100cbe58f455002090fed192baa83b8a471f524.ts create mode 100644 bundler/tests/.cache/deno/e10c0c2bc160551bb9ddae4049dd7707df449cc4.ts create mode 100644 bundler/tests/.cache/deno/e12f197f584c32e84c4a91178e294941eaa27f33.ts create mode 100644 bundler/tests/.cache/deno/e15e34e2df22b87f06994f00c9b4e0e9e912d5f8.ts create mode 100644 bundler/tests/.cache/deno/e172f2cf0c39fe54286e353190000b46f66147fc.ts create mode 100644 bundler/tests/.cache/deno/e2c269b8eb8154e77fa3e29616a66f12457e0d99.ts create mode 100644 bundler/tests/.cache/deno/e2ed8b69988a34e5280e092db717ab4a77651b79.ts create mode 100644 bundler/tests/.cache/deno/e31fbd5a45e548817df35e52c3e911f2e3481f8d.ts create mode 100644 bundler/tests/.cache/deno/e347b9844739d6f8cdba667c63adc3985638179b.ts create mode 100644 bundler/tests/.cache/deno/e3538a08508a6bc6a8e87897cb875847b761bd81.ts create mode 100644 bundler/tests/.cache/deno/e398bc9afb1566b85f6c9ea04c369eafa7482e65.ts create mode 100644 bundler/tests/.cache/deno/e4420c1f014d74f39f8f0b4beaf283f65acb1bf2.ts create mode 100644 bundler/tests/.cache/deno/e44f041c274af69fe87a62141a54d150e7318029.ts create mode 100644 bundler/tests/.cache/deno/e4519cf959e83e6291af0f91a44c8f17dd4d1cd6.ts create mode 100644 bundler/tests/.cache/deno/e472e1b4ad1786b59e6e86f728927fca9dc86475.ts create mode 100644 bundler/tests/.cache/deno/e50c78d40dc985f77ba8402b211ce55d4beb7863.ts create mode 100644 bundler/tests/.cache/deno/e53c93135b6bda5c5240206f42d74d37558bfb2a.ts create mode 100644 bundler/tests/.cache/deno/e5523baec54c0e7c65cea0b40e8b2fe139d8366b.ts create mode 100644 bundler/tests/.cache/deno/e588eed3ca4a864679bd2883a537f4f380a903e6.ts create mode 100644 bundler/tests/.cache/deno/e59c0cb02e0d5033a3bc649628ff97fa458e8457.ts create mode 100644 bundler/tests/.cache/deno/e5bf2b575f845e5f97a11bc711bb2df0bf2739a9.ts create mode 100644 bundler/tests/.cache/deno/e5fa8bbda465712e08bde0da9448fde9082f38e1.ts create mode 100644 bundler/tests/.cache/deno/e600798754efb2758cf4433489970f7e9eecfc4b.ts create mode 100644 bundler/tests/.cache/deno/e61522e99211280d0617220e33004a5cd7b58cff.ts create mode 100644 bundler/tests/.cache/deno/e630bf2fbe9fc1622490ed06eaa33196ccd5b560.ts create mode 100644 bundler/tests/.cache/deno/e67a9ccd77c0442381980a8e0b247e162ac57ecf.ts create mode 100644 bundler/tests/.cache/deno/e67ddd6a63ce844336904b9552353dc7bcc25360.ts create mode 100644 bundler/tests/.cache/deno/e6cc48c158de625fb396045db3042a95a705e98b.ts create mode 100644 bundler/tests/.cache/deno/e6d07026036b391db737b44a8b79d5cd4844623d.ts create mode 100644 bundler/tests/.cache/deno/e6eef9714db48a30f7a024aab133a04af95c9d4e.ts create mode 100644 bundler/tests/.cache/deno/e7515f9cebf42e8ed896aea96ab9ac152e4390e2.ts create mode 100644 bundler/tests/.cache/deno/e7ba54d20badad2eaa355b56939a37ff681c2f27.ts create mode 100644 bundler/tests/.cache/deno/e7baf0178286c6118449c632aea9e35a66c5a78a.ts create mode 100644 bundler/tests/.cache/deno/e7ca6e09cde14717854459f3a9112f88912d9fb1.ts create mode 100644 bundler/tests/.cache/deno/e7d2993a1ac0bc76e0740d8f42a7065e807b5419.ts create mode 100644 bundler/tests/.cache/deno/e7df95de00127c2edf9189aa2588824ae8365d5d.ts create mode 100644 bundler/tests/.cache/deno/e7e781048374a1526e9c9dc782aa263d4fb81c22.ts create mode 100644 bundler/tests/.cache/deno/e8144b3b08999291a196bd3e205d7e6905d412db.ts create mode 100644 bundler/tests/.cache/deno/e8475c7bbef4930e4b56114c49fe84e5fb942b24.ts create mode 100644 bundler/tests/.cache/deno/e84a80c61546d201faba63612e45400af5789596.ts create mode 100644 bundler/tests/.cache/deno/e8b5867dc1dbb41f4e0d2cb9e6052378956bedcf.ts create mode 100644 bundler/tests/.cache/deno/e8d58fc58316e43fd2e972bad3b81ff041bb3f36.ts create mode 100644 bundler/tests/.cache/deno/e8f52e784781a1fdc50f65e2a0650bfc86914b0b.ts create mode 100644 bundler/tests/.cache/deno/e912299d2a5fe3e85b18a8068bbcc876ced17c9c.ts create mode 100644 bundler/tests/.cache/deno/e93264d24375855aa43285f47e65738148517f85.ts create mode 100644 bundler/tests/.cache/deno/e9c32e5ce2a4e9d581d49d62465001439f02a00e.ts create mode 100644 bundler/tests/.cache/deno/e9ca7a432c1f3d078a8e8413e1e8ba93e217ffda.ts create mode 100644 bundler/tests/.cache/deno/e9d65fc0c0411e5bdba1dc5c9cea11108d3b7ce4.ts create mode 100644 bundler/tests/.cache/deno/e9f0183616f01090c1da3ab6e723d7e54164de6d.ts create mode 100644 bundler/tests/.cache/deno/e9f7d4485b66931dd3408895cfc56d3eaf42ea5f.ts create mode 100644 bundler/tests/.cache/deno/ea1a114c48d412edae56e1371a8d58054b2a3b8b.ts create mode 100644 bundler/tests/.cache/deno/ea48b0e5f38c0d40c54cd7527604688c830803ac.ts create mode 100644 bundler/tests/.cache/deno/ea78e7fb0bcf6549a37d4d10feb27e4a7a2487ce.ts create mode 100644 bundler/tests/.cache/deno/ea86d8c5015cd12a56099eb91069c8ecef2d3103.ts create mode 100644 bundler/tests/.cache/deno/eaa2d6eea1656f58e38f12d3539f969b17b7c96b.ts create mode 100644 bundler/tests/.cache/deno/eaa7bd40c129dcc02ba34363a825753f3d3ec09c.ts create mode 100644 bundler/tests/.cache/deno/eaad61e44f7f9751276af72e4b7bc23f83950609.ts create mode 100644 bundler/tests/.cache/deno/eae50acd6710f077e24ca6d09970d763c25e5dce.ts create mode 100644 bundler/tests/.cache/deno/eb03e15cfa5da6261e350adb534008c26a438522.ts create mode 100644 bundler/tests/.cache/deno/eb373f5a8e59c75021b33eb6fc831e871e423dfb.ts create mode 100644 bundler/tests/.cache/deno/eb5889b5ba8d979ed755e2a7de93a57a3cbbb769.ts create mode 100644 bundler/tests/.cache/deno/ebb89421583483600946712fe2d2f62a5690df3f.ts create mode 100644 bundler/tests/.cache/deno/ebccff0d21f1fd7191d294b619fd66ee7663e2f0.ts create mode 100644 bundler/tests/.cache/deno/ebe6eaca3e5eb971b48c8b7305c23eb3a355b1b3.ts create mode 100644 bundler/tests/.cache/deno/ebfcda31d95d7e064185b599f326ec315c10a7c6.ts create mode 100644 bundler/tests/.cache/deno/ec1f5a3ee5a5d243110abff55e35c590cd3e4653.ts create mode 100644 bundler/tests/.cache/deno/ec381e1d7c2d8e6436dc318c558aa6324dc8ad35.ts create mode 100644 bundler/tests/.cache/deno/ec554e0a029de478e1fc6dd631cb28495ceae983.ts create mode 100644 bundler/tests/.cache/deno/ec6e72c1b5c02205ac61be1a77f6e3dd8de7b5f2.ts create mode 100644 bundler/tests/.cache/deno/ec753304e273d1e52aaa9d1b9dfc484f5c8b85be.ts create mode 100644 bundler/tests/.cache/deno/ececda68f08527d42336f71bf97a5c205f5afa9a.ts create mode 100644 bundler/tests/.cache/deno/ecfdb3b65ae0e8483f2ad7341b8c0f0fd3f495e3.ts create mode 100644 bundler/tests/.cache/deno/ed0e9841e38a9db45f76d7150cb539b43bf187bf.ts create mode 100644 bundler/tests/.cache/deno/ed19cffd14f75acca4e78146263c090a69aa1f8b.ts create mode 100644 bundler/tests/.cache/deno/ed39c3dbed4105c56b0b567b0a9f5dcada1dd360.ts create mode 100644 bundler/tests/.cache/deno/ed5e9a05651dcf1c78f42aa13d1d4670b2d3f279.ts create mode 100644 bundler/tests/.cache/deno/ed6d5c1acbb2717c8198f49ec672c9a770d7ec0c.ts create mode 100644 bundler/tests/.cache/deno/eddcdb43b255c33e82cd5ba6b84aab5163bc53c0.ts create mode 100644 bundler/tests/.cache/deno/ede6ff4d09eade5351116ad8848614003fe79f37.ts create mode 100644 bundler/tests/.cache/deno/edf2d46d6a7d850911106bdde9d797d4043db0a8.ts create mode 100644 bundler/tests/.cache/deno/edffdef85976f57517f47539cd7fafed508fe11f.ts create mode 100644 bundler/tests/.cache/deno/ee36f05790a94dabab7195381c49135a6395df44.ts create mode 100644 bundler/tests/.cache/deno/ee75c362415c966a02970d3c1a67639b59e574c6.ts create mode 100644 bundler/tests/.cache/deno/eeb9cd4a2ad84d4eab0171ad7698d8c30bde9b3c.ts create mode 100644 bundler/tests/.cache/deno/eed75907032872bb5ba621789b35bd1fb7d79d7d.ts create mode 100644 bundler/tests/.cache/deno/ef066e1cbefeaa6a9a59b5ec351fc9ef618459e5.ts create mode 100644 bundler/tests/.cache/deno/ef12a68c948f655914e8dc66d2f1a838897c13d7.ts create mode 100644 bundler/tests/.cache/deno/ef16c5f68bc6d92b8f58bb4046cc5f7735a24f40.ts create mode 100644 bundler/tests/.cache/deno/ef2702d20291c40faaef6ea5e15ae52132e12808.ts create mode 100644 bundler/tests/.cache/deno/ef629a5e349cbbe89c05ba06c8b0f5de39d9de13.ts create mode 100644 bundler/tests/.cache/deno/efbb02dfca1ae4b1039f0c737256773e5978aac7.ts create mode 100644 bundler/tests/.cache/deno/efed3186d8d4df111727ab07305af7c6ba8d90ea.ts create mode 100644 bundler/tests/.cache/deno/f0106891e5e1552cae529dff7c51d6df72ac6664.ts create mode 100644 bundler/tests/.cache/deno/f021cf3a9bc498aef7c7438a0d7d790c0d6f9e8d.ts create mode 100644 bundler/tests/.cache/deno/f05e1cdbd705f9212e8163dce1849842f82d9e66.ts create mode 100644 bundler/tests/.cache/deno/f0cf49b6b1c6ffc1b70e866f123da648c406acbc.ts create mode 100644 bundler/tests/.cache/deno/f0d10a65fce9496ef900f85b245f52ff507b9c60.ts create mode 100644 bundler/tests/.cache/deno/f0d7d04c906a624c1dc1939575abc9da396f948d.ts create mode 100644 bundler/tests/.cache/deno/f12d86e54fc893b9d275f17892a2962f70e7b169.ts create mode 100644 bundler/tests/.cache/deno/f182768bd362127278228ab5beef4074f8cd52f6.ts create mode 100644 bundler/tests/.cache/deno/f1859871f9151fabaedbb685dc3ed931daad3b94.ts create mode 100644 bundler/tests/.cache/deno/f195ae14bfe1b07bbe964b4d60ad7f2e90532dac.ts create mode 100644 bundler/tests/.cache/deno/f20637e84a37a448be2af5fef8d4677c3c6cfc51.ts create mode 100644 bundler/tests/.cache/deno/f2113260c45138c2949f38ba6fbe55627a0f9253.ts create mode 100644 bundler/tests/.cache/deno/f23b63af8d11297d01a07776c5436bc350feb168.ts create mode 100644 bundler/tests/.cache/deno/f24663bf6bc39d346498c12b1236261ea6b2aefd.ts create mode 100644 bundler/tests/.cache/deno/f2ab55592a01b67ce2a240bafd09d5b932fe8c25.ts create mode 100644 bundler/tests/.cache/deno/f2d74c15d40f7f8179ca4947d83479e4bdc9c399.ts create mode 100644 bundler/tests/.cache/deno/f2f815fe98af39816a6b27070eeb2b9709944f2c.ts create mode 100644 bundler/tests/.cache/deno/f33ab8033b02d812ab4aaeead09b0e7dc1a8a75d.ts create mode 100644 bundler/tests/.cache/deno/f37a3a0bb73875ad1e9c87067442fc1e595d2d3c.ts create mode 100644 bundler/tests/.cache/deno/f3940634e1db5312cb35d8936773a13aa8f5862e.ts create mode 100644 bundler/tests/.cache/deno/f3da55a6de8a63adcc73ce1f6f6af3b68e1c78f3.ts create mode 100644 bundler/tests/.cache/deno/f3e1e2fd01c19702b6c9e8e1d10f65992bc2f99e.ts create mode 100644 bundler/tests/.cache/deno/f3e64f9b72d453b4164078933576d2f70995ca8e.ts create mode 100644 bundler/tests/.cache/deno/f3f9e891c25758f49962fd90d39838ce511dd3c7.ts create mode 100644 bundler/tests/.cache/deno/f3fc479f331dd963cd2b96063df6bf047890f887.ts create mode 100644 bundler/tests/.cache/deno/f40c5a3c54fb7a4f9bee9c63f2076a54bc3dbdf6.ts create mode 100644 bundler/tests/.cache/deno/f4164aff01e96a80a3d439b3f8e665836444e7ef.ts create mode 100644 bundler/tests/.cache/deno/f451b711a14917283d138f2916e827d24744f455.ts create mode 100644 bundler/tests/.cache/deno/f5148cb5ed654f7a17e5486c6eb668bef01a6f61.ts create mode 100644 bundler/tests/.cache/deno/f572afe664d128054d9f0d85fa85f6b5a2d30fcf.ts create mode 100644 bundler/tests/.cache/deno/f5e9f8e3047eefc39748a281b603987f4dc61107.ts create mode 100644 bundler/tests/.cache/deno/f5ea2e64a33d3b89171d7e97b5a3da5f7e35c842.ts create mode 100644 bundler/tests/.cache/deno/f609961b5238d3311e10ded9ca571259424ed9c7.ts create mode 100644 bundler/tests/.cache/deno/f61b66c032f511a7681d30d9aef6d0f2d2857c29.ts create mode 100644 bundler/tests/.cache/deno/f65330432ecfd22d93c10effa85a2590e4276026.ts create mode 100644 bundler/tests/.cache/deno/f66539bb982f09dd135ffd55f9bb479dad8b59ac.ts create mode 100644 bundler/tests/.cache/deno/f672e815afb2a3ff8781497b2d765f83fe1e3b54.ts create mode 100644 bundler/tests/.cache/deno/f69c5fe18f144545ed62ed05bf508f0f48197cf8.ts create mode 100644 bundler/tests/.cache/deno/f6b67896830a42fe1517a5f9c1bc677006d5472e.ts create mode 100644 bundler/tests/.cache/deno/f6bdf95cd37a0b5b9820816b6e042c39c1fa8ac6.ts create mode 100644 bundler/tests/.cache/deno/f70b1bcdeb0360ba6e7371ddc1e91e4c08e8bc01.ts create mode 100644 bundler/tests/.cache/deno/f71263719ffed2b2db7e81311a16b493aa383f2c.ts create mode 100644 bundler/tests/.cache/deno/f77bca47ddef1fcb5c0f6a204c98106198b772bf.ts create mode 100644 bundler/tests/.cache/deno/f7a288137584b146ff370328a50b3f52efb7036f.ts create mode 100644 bundler/tests/.cache/deno/f8075f908e7e00e3eeb3c41f7b28b4424ef83e42.ts create mode 100644 bundler/tests/.cache/deno/f847494aa9da71deb1b07cc642be3516d6bc2ffb.ts create mode 100644 bundler/tests/.cache/deno/f87cd8105f83d28a9715932f46a1ef3699df5d69.ts create mode 100644 bundler/tests/.cache/deno/f88af64c689473291055effbedab4343850440f1.ts create mode 100644 bundler/tests/.cache/deno/f8bb53835a776e1b7a50418681bd5406cccbb02c.ts create mode 100644 bundler/tests/.cache/deno/f8c2a47022ff45cc5caa70c4e2f3a11b1bdda24e.ts create mode 100644 bundler/tests/.cache/deno/f8c4d5e8bbdc6be52b26d6a88107512351d67064.ts create mode 100644 bundler/tests/.cache/deno/f91daf3f8133eff220b094d690b446bbc14739c2.ts create mode 100644 bundler/tests/.cache/deno/f97a47df59b9002adeeb2fa1f11cf389ada1b1c6.ts create mode 100644 bundler/tests/.cache/deno/f9f21d25b654bd4c86619cabdec3c0d45b4ef019.ts create mode 100644 bundler/tests/.cache/deno/fa12a97e0eea5f7ff4cca4685863a82f6d6198a3.ts create mode 100644 bundler/tests/.cache/deno/fa25816f309cddef2a346d753305c16d34053aed.ts create mode 100644 bundler/tests/.cache/deno/fa5bd8d675520a5bc705a1f96e4b85ed9b0edd69.ts create mode 100644 bundler/tests/.cache/deno/fa715edf303af3b4386d042f774b0f864b3938b0.ts create mode 100644 bundler/tests/.cache/deno/fb76fe5b3790c291801543be78d0405b0f19ed78.ts create mode 100644 bundler/tests/.cache/deno/fba9ab0a8e3a433e8169fe3db7945664bd79de68.ts create mode 100644 bundler/tests/.cache/deno/fbbd951977a8ad31538f05f6c7ec04894c2e3acf.ts create mode 100644 bundler/tests/.cache/deno/fbf6021d68f594c20f3f8783fafa2d429520b30b.ts create mode 100644 bundler/tests/.cache/deno/fc017a41bd63bc3b49e8cbdd0be35d392ce75701.ts create mode 100644 bundler/tests/.cache/deno/fc286d9e2cc76292ceab3b84df5a486bb0494346.ts create mode 100644 bundler/tests/.cache/deno/fc576bc5246af922b4fd960cbebb1bedb3be0d31.ts create mode 100644 bundler/tests/.cache/deno/fcd062d2444d67ad282c10a84a4d704da08a2744.ts create mode 100644 bundler/tests/.cache/deno/fce1bfacd0b55d73787f8630d4f88041e8cfcd6f.ts create mode 100644 bundler/tests/.cache/deno/fcf896e3589f50e963c2723a443b9cca9dc5538e.ts create mode 100644 bundler/tests/.cache/deno/fd15bc013d4193c11121d419363a38f336be6c8e.ts create mode 100644 bundler/tests/.cache/deno/fd72ddc09bf0f35aee37f2c93afe50696af3776f.ts create mode 100644 bundler/tests/.cache/deno/fd90537fe0028554aa6e1519cf352e1fba78a793.ts create mode 100644 bundler/tests/.cache/deno/fdf0d2e399f8d7c793709070de508e24f2062649.ts create mode 100644 bundler/tests/.cache/deno/fdf87e565ee7a426282f93a7ec28ea663c7e5db4.ts create mode 100644 bundler/tests/.cache/deno/fe1fb10b588091a929436de10f3fc075e55f88d4.ts create mode 100644 bundler/tests/.cache/deno/fe797042693c0b5c88a1ca99ac035871c81a2b86.ts create mode 100644 bundler/tests/.cache/deno/fee2452e02044e29c1091ffcbc1987bfc1f26590.ts create mode 100644 bundler/tests/.cache/deno/ff087d5051889a6d69f23afbd21a71b5404cb489.ts create mode 100644 bundler/tests/.cache/deno/ff26180a7209b57254c13de13162caa8e19bf704.ts create mode 100644 bundler/tests/.cache/deno/ff2a37ef07e3e8a83b6530d4386673abbb219336.ts create mode 100644 bundler/tests/.cache/deno/ff663c1664c07d528fb8fc022f62fb8160f51cc4.ts create mode 100644 bundler/tests/.cache/deno/ff9df7e6f822bf022b8ed7e294f3f3a73d81c315.ts create mode 100644 bundler/tests/.cache/deno/ffc94379e2d25f12bc541b9d31eede397fab8ff4.ts create mode 100644 bundler/tests/.cache/deno/ffd3a1b4f79d3dcf88d272eaebea420121f8317a.ts create mode 100644 bundler/tests/.cache/untrusted/00b8210b83aefc04b73ee9fa1d1ebc8de9391a85.ts create mode 100644 bundler/tests/.cache/untrusted/018661d7eb643f6104206b420eb0ac8a46bebb79.ts create mode 100644 bundler/tests/.cache/untrusted/037969bff548aa0c0a1b73a5ca5e291f5d4c4af4.ts create mode 100644 bundler/tests/.cache/untrusted/0438b5f961de03f95a53a53af23c718a3d18c57a.ts create mode 100644 bundler/tests/.cache/untrusted/05c34e6c84ca8541e96f7338d016abe200bac381.ts create mode 100644 bundler/tests/.cache/untrusted/0636c695d4f8dbbc30ef08154bfd9abaa99c79ec.ts create mode 100644 bundler/tests/.cache/untrusted/06847255afcede06bfbae89a4a9fe97bb5f660d6.ts create mode 100644 bundler/tests/.cache/untrusted/078a29dba312ca58834f62aef5bd1655878de18f.ts create mode 100644 bundler/tests/.cache/untrusted/07a53727cdbc1107e8941e8e5325070abb27294c.ts create mode 100644 bundler/tests/.cache/untrusted/07d9f109d30943a7c7a7fd03f70f69c3f425f357.ts create mode 100644 bundler/tests/.cache/untrusted/0822d0e538627ec12c0decc6466807dd1f53d079.ts create mode 100644 bundler/tests/.cache/untrusted/084fa13af44f1ecfeaff67a699ba7dedf9ae7a88.ts create mode 100644 bundler/tests/.cache/untrusted/0987430dbb3b0ef91e6bc4ca3a679ffd66ec1912.ts create mode 100644 bundler/tests/.cache/untrusted/0b0ba553d848641fc04f090eee16e2bf1cf6f74e.ts create mode 100644 bundler/tests/.cache/untrusted/0b1675bc124cde8a4a7f97964efab5a393f8b9dd.ts create mode 100644 bundler/tests/.cache/untrusted/0b7e941fba0142ef7b838db3cfd99370b9047b22.ts create mode 100644 bundler/tests/.cache/untrusted/0b998262153d42604549524eae443e05d967244e.ts create mode 100644 bundler/tests/.cache/untrusted/0b9b5f7b4bff03c021f0565ff5908780a92b6923.ts create mode 100644 bundler/tests/.cache/untrusted/0ba37bfe765e3bfc21bd6a965bf07ba28d2f1be7.ts create mode 100644 bundler/tests/.cache/untrusted/0c2021cc246c0238a4b0b37981aacf7dfe8d57ee.ts create mode 100644 bundler/tests/.cache/untrusted/0c34b330f5a123d3464419f60d906110491b7b62.ts create mode 100644 bundler/tests/.cache/untrusted/0c9650fcecfa652181a675ba86188f925726d09b.ts create mode 100644 bundler/tests/.cache/untrusted/0d631cd2bf9b4650d9afbd6a2b60adc3b91acbbd.ts create mode 100644 bundler/tests/.cache/untrusted/0e641f3fabd0df971676b1bd5a13f5e9ae1ea172.ts create mode 100644 bundler/tests/.cache/untrusted/0f7c1025d0d543650d1126fa957c1d763d771649.ts create mode 100644 bundler/tests/.cache/untrusted/106a306d511b1605d7b0e43c7c52563168fc1bec.ts create mode 100644 bundler/tests/.cache/untrusted/113e1ad4c4e50d91d7299a272016ba2794aa92bf.ts create mode 100644 bundler/tests/.cache/untrusted/11740d766bccaa7cacf6cf9e2aef2d4a0333ddd5.ts create mode 100644 bundler/tests/.cache/untrusted/11966db5b707f204e2655160f272fec1c6365342.ts create mode 100644 bundler/tests/.cache/untrusted/12ba289fb703720c2c235a7062bc5794e18b8fb1.ts create mode 100644 bundler/tests/.cache/untrusted/12e2da4b9419041e1115f75894c9fe453bd518e2.ts create mode 100644 bundler/tests/.cache/untrusted/134015516d9f972086858ac38d5477d52d538a84.ts create mode 100644 bundler/tests/.cache/untrusted/142b2239f926b005f8667efd1c8a857c472e1c67.ts create mode 100644 bundler/tests/.cache/untrusted/147da43907c0f6b94f24dee646a4469387c22bad.ts create mode 100644 bundler/tests/.cache/untrusted/16637f5c74200df1d1a9610b4ae6fbe83b2749fb.ts create mode 100644 bundler/tests/.cache/untrusted/170d6d69b2fe9111d507d4c00eb437fc151f4e13.ts create mode 100644 bundler/tests/.cache/untrusted/175d2db63c2a8d0b904c4ce191066ef9c9fd76e8.ts create mode 100644 bundler/tests/.cache/untrusted/17b45bf76e1540114c4d09d98eadbc0c53ac8fe5.ts create mode 100644 bundler/tests/.cache/untrusted/1978d01125b05890423e00306e689c9eb0cf9fda.ts create mode 100644 bundler/tests/.cache/untrusted/198dd6cb0a59550eebb01b996eae14941667c319.ts create mode 100644 bundler/tests/.cache/untrusted/19ab3eea15211f07b82720d7ad0f087bc94dc709.ts create mode 100644 bundler/tests/.cache/untrusted/1c58971a21fd1158df4e5f738d1700405298ee3e.ts create mode 100644 bundler/tests/.cache/untrusted/1c807e0060c40efc5fc37fe64857cfa3984fb58a.ts create mode 100644 bundler/tests/.cache/untrusted/1d374f59907afdca696482cad7600ffef57418fd.ts create mode 100644 bundler/tests/.cache/untrusted/1db0504f968b651bfd0ac4c66d1cef23af711459.ts create mode 100644 bundler/tests/.cache/untrusted/1dee1ddf1a366439bf2d8063cd39c3e88409d113.ts create mode 100644 bundler/tests/.cache/untrusted/1e2f766b093efb461039c6f091896d94c0ea0da9.ts create mode 100644 bundler/tests/.cache/untrusted/1e7d6c3f7cb4a32b71581d6d6f74c12abda508a2.ts create mode 100644 bundler/tests/.cache/untrusted/1ed020d2444e619d020056c6d7da82add39648c3.ts create mode 100644 bundler/tests/.cache/untrusted/1f144d37f686dd826baedea1c588e6fe9b427e56.ts create mode 100644 bundler/tests/.cache/untrusted/1f1f766536a6d48b3ac6e57667ac28c7c8493481.ts create mode 100644 bundler/tests/.cache/untrusted/1f890880e548b3977fe905eb1b05019115125238.ts create mode 100644 bundler/tests/.cache/untrusted/1fefdc1fe0ddf8107d4eb8f6ac915f0e7ca66a74.ts create mode 100644 bundler/tests/.cache/untrusted/204ee89e8707f4e11edef830494c22e89fabf72b.ts create mode 100644 bundler/tests/.cache/untrusted/2073dec4bd52ef2a246e1e8469ee51bb1354925d.ts create mode 100644 bundler/tests/.cache/untrusted/20cc7ed74aea77ad3291bdda5ca0d3c48acff6aa.ts create mode 100644 bundler/tests/.cache/untrusted/2144f88db55316e3a015d67c5d203410b202dc90.ts create mode 100644 bundler/tests/.cache/untrusted/214eaeb1b3b9f9f57cad3e28d9f7a1f7b66c7a4a.ts create mode 100644 bundler/tests/.cache/untrusted/21e13d18cc0a3d17448d2c60c6eb7e64e2035e09.ts create mode 100644 bundler/tests/.cache/untrusted/22572aa69f00d4cd00e81c8237c5ea61da7f4577.ts create mode 100644 bundler/tests/.cache/untrusted/23560df076797cf873fc1e6a358a47e6b8496a3b.ts create mode 100644 bundler/tests/.cache/untrusted/23bcdf59f6d6ef51b1971f745ae4c55a749c15b8.ts create mode 100644 bundler/tests/.cache/untrusted/23ce8ab4a87f8211822f180cfff031243cb062c9.ts create mode 100644 bundler/tests/.cache/untrusted/23e14537266a75e92df9bc1b8813f243d1e6d4d3.ts create mode 100644 bundler/tests/.cache/untrusted/251a32a6bfaa8180caebb02d6f627cf52510ca3b.ts create mode 100644 bundler/tests/.cache/untrusted/259884233b63423f7426c41adef49eb8b6612351.ts create mode 100644 bundler/tests/.cache/untrusted/26571d4047976698c61fed52c748398c855dd6ca.ts create mode 100644 bundler/tests/.cache/untrusted/26c8b319b17ce4a1d86ae8cc656ab38c3afe3669.ts create mode 100644 bundler/tests/.cache/untrusted/26f07536ceb03d5c6b1b7cb116a8acfe4a1ebcf3.ts create mode 100644 bundler/tests/.cache/untrusted/26fabd47cc843bca963ac54628ac9cb949146d47.ts create mode 100644 bundler/tests/.cache/untrusted/28a4511b80f0953b21f5a12cfc0f965379f984d4.ts create mode 100644 bundler/tests/.cache/untrusted/2905e9578fdebe1cb10781e564d3f5095c01667e.ts create mode 100644 bundler/tests/.cache/untrusted/29729d1269b68a56a2ca9466fb236602c0a923fd.ts create mode 100644 bundler/tests/.cache/untrusted/2999f16a48186b3c66dbeb316fb75dc9b2a5c801.ts create mode 100644 bundler/tests/.cache/untrusted/299e747f60e1163ac5ac447a93d65b7b2077bbbc.ts create mode 100644 bundler/tests/.cache/untrusted/2a1f6c7c77d0cbed3a9e788ef2e17c9f8534ea47.ts create mode 100644 bundler/tests/.cache/untrusted/2b8a686167d0b335381beb945b46fd348eb81c1d.ts create mode 100644 bundler/tests/.cache/untrusted/2c63594727d9c1762b381f4a6d45c71634539950.ts create mode 100644 bundler/tests/.cache/untrusted/2c7d5ae163c86f14e28e338b6e96e7a18893c63c.ts create mode 100644 bundler/tests/.cache/untrusted/2cc408e85ebebb7c074b84cff544fdf2433a395b.ts create mode 100644 bundler/tests/.cache/untrusted/2d19906e6eb6d5adb05327f7748cb59b94a0f5f1.ts create mode 100644 bundler/tests/.cache/untrusted/2d3fc0b77eb274d586a17730a4934b7c00baefe7.ts create mode 100644 bundler/tests/.cache/untrusted/2da5ff24fefffdc3033b7a6e220392770341c7ee.ts create mode 100644 bundler/tests/.cache/untrusted/2df04312c32a81c90064f322476016816daf74e5.ts create mode 100644 bundler/tests/.cache/untrusted/2e0155d7d17ea45686e0f7748bf3090ee9d43144.ts create mode 100644 bundler/tests/.cache/untrusted/2e32d30a6c2ee0b30b7709a7fc29f1638d59c77e.ts create mode 100644 bundler/tests/.cache/untrusted/2ed946d2ec094096061e0b6ee1291e33b0df9d37.ts create mode 100644 bundler/tests/.cache/untrusted/2f3f0622e83f68c822d37c32bea34587fd399771.ts create mode 100644 bundler/tests/.cache/untrusted/2f413751767e603965e13cf8e68213e03771b86f.ts create mode 100644 bundler/tests/.cache/untrusted/2f7f386c233557fe9485425d947ccdc0605cf243.ts create mode 100644 bundler/tests/.cache/untrusted/2f9b240167cf50ab79c10c160677be9febe7e8f1.ts create mode 100644 bundler/tests/.cache/untrusted/301081e00d3cc912c0ab0716f3d044ec8f1db4c8.ts create mode 100644 bundler/tests/.cache/untrusted/30dd8d263bc8e17a8fd95d63b0b558991a6ac1ec.ts create mode 100644 bundler/tests/.cache/untrusted/3135e95083b4d47d7caf160c31f77d9219e6ef5e.ts create mode 100644 bundler/tests/.cache/untrusted/324b94943535de803613f79b640b511d50f552eb.ts create mode 100644 bundler/tests/.cache/untrusted/32b6ef6882af954688d0a93a87afb63d5cd464a2.ts create mode 100644 bundler/tests/.cache/untrusted/336df93c2a634a9f28c546dccbf769fdf6ffe950.ts create mode 100644 bundler/tests/.cache/untrusted/345388a9c955486e1759ea14cfc8a2492462e0df.ts create mode 100644 bundler/tests/.cache/untrusted/34b6300d71f6bd0ccbe2ac6a53ac39c647054cfa.ts create mode 100644 bundler/tests/.cache/untrusted/351ce680217c0ec8fff040750b788357bf7aee68.ts create mode 100644 bundler/tests/.cache/untrusted/35fdd53761b52373b1b3937056a38939fb407824.ts create mode 100644 bundler/tests/.cache/untrusted/3610611abc9ed995fb98b528eef857d0b5fd5305.ts create mode 100644 bundler/tests/.cache/untrusted/37208513d893687a829cb7e388e61f4c7f81ee0d.ts create mode 100644 bundler/tests/.cache/untrusted/3768d350a69187e333d1cd30bed9471f0c000a8c.ts create mode 100644 bundler/tests/.cache/untrusted/37c807880b012ade7d52676367399bb122383abb.ts create mode 100644 bundler/tests/.cache/untrusted/38301ffafa532c11f9fe7d936fc884ef4a4c4059.ts create mode 100644 bundler/tests/.cache/untrusted/392edbe3d655d978c96c96479476f4fd12ac96b0.ts create mode 100644 bundler/tests/.cache/untrusted/39d2dd490d1a245f67b152b633ad85b4a73aa296.ts create mode 100644 bundler/tests/.cache/untrusted/39e6dc629e6029774192d2848c5fe5658f1b631d.ts create mode 100644 bundler/tests/.cache/untrusted/3af250e73e2037ae5e77bef30947655d3a8f61b7.ts create mode 100644 bundler/tests/.cache/untrusted/3cb4695a7e5b75801a20659eea940e02d21b8af6.ts create mode 100644 bundler/tests/.cache/untrusted/3ce1840b9199964183770c8844ed4886ef92df13.ts create mode 100644 bundler/tests/.cache/untrusted/3cfe88a56d90dd41b6fb076d419e96c259d2517a.ts create mode 100644 bundler/tests/.cache/untrusted/3d88a83d06a756f74bf648a0ef0297de8757be2e.ts create mode 100644 bundler/tests/.cache/untrusted/3dcc7a1dad884808a1a9be573744a49fc20eaded.ts create mode 100644 bundler/tests/.cache/untrusted/3e13d09cf724c5e13cee8fd0ef477028556881d8.ts create mode 100644 bundler/tests/.cache/untrusted/3ec253d8190bda5bcb5fc3be5177d644f248aec5.ts create mode 100644 bundler/tests/.cache/untrusted/3f28458484ac3c357093a5cb2ef16f5e42e838ef.ts create mode 100644 bundler/tests/.cache/untrusted/3f48b89ba64ed8ca595438dcc9a08bdd35ef5acc.ts create mode 100644 bundler/tests/.cache/untrusted/40575abde3929cd4b786d1720aa1ba1eab4e27d4.ts create mode 100644 bundler/tests/.cache/untrusted/40621ada605966bd2ee8eb4a73ff081b1b44d52c.ts create mode 100644 bundler/tests/.cache/untrusted/40fd555cba18e594b3b7c311577305778808127e.ts create mode 100644 bundler/tests/.cache/untrusted/414aec87a2dec0549c58e51ed81a3bbae6812913.ts create mode 100644 bundler/tests/.cache/untrusted/423eb5f919605b2cb58d87defeabc37259a4d3e8.ts create mode 100644 bundler/tests/.cache/untrusted/42892cbe6573d32792b2f12098320bbaecc1e5fa.ts create mode 100644 bundler/tests/.cache/untrusted/4356aa4b23a18b695cc43ed2440f5ac555a6ab80.ts create mode 100644 bundler/tests/.cache/untrusted/4378875b195e741b3243586038662cc52686e8d2.ts create mode 100644 bundler/tests/.cache/untrusted/452683f6517db228f8f39d0f824526c3fbc632f2.ts create mode 100644 bundler/tests/.cache/untrusted/45ba20410efcea8a255dfe392f78d9697dd2e145.ts create mode 100644 bundler/tests/.cache/untrusted/4601ec6897cd6e13ea2c2884c83b5a33d3458aac.ts create mode 100644 bundler/tests/.cache/untrusted/4695b0f754141c49f18b516f74b33176d7341f45.ts create mode 100644 bundler/tests/.cache/untrusted/480e15d7d0de6b2afbef40ca966dfb63d0213690.ts create mode 100644 bundler/tests/.cache/untrusted/486337a96cd07e1b79cc9e1787df73eaec563b8a.ts create mode 100644 bundler/tests/.cache/untrusted/48a0e901dcdb20c0434336e7996949db99853960.ts create mode 100644 bundler/tests/.cache/untrusted/48e601b6094eda224b4d67b019f312d0aeee7e18.ts create mode 100644 bundler/tests/.cache/untrusted/49704a8292062f17a1fa69f93f09bedf32956bb2.ts create mode 100644 bundler/tests/.cache/untrusted/49975bcaf84f60d576c6494958f941735f954a35.ts create mode 100644 bundler/tests/.cache/untrusted/4a132cbf3802ca7f0c1c2ac046515c806d11b913.ts create mode 100644 bundler/tests/.cache/untrusted/4af8bed9cc94537d462ef618b59e3b45f2f847f8.ts create mode 100644 bundler/tests/.cache/untrusted/4b9f48e40db95057ce259334f8869d81ee9c4fa0.ts create mode 100644 bundler/tests/.cache/untrusted/4ccdcea6ce1ecf9d1878766f186dece90b13ce59.ts create mode 100644 bundler/tests/.cache/untrusted/4dff4151934dfa70c00b232ebf3d475eb57e329d.ts create mode 100644 bundler/tests/.cache/untrusted/4e4068173450d5d9f982490ce26d2a834a374a51.ts create mode 100644 bundler/tests/.cache/untrusted/4e4c23e4a3496ce18008768794de976c4d45f08b.ts create mode 100644 bundler/tests/.cache/untrusted/4ea06329c3f75b8f5bb3e7899da62b3442619d16.ts create mode 100644 bundler/tests/.cache/untrusted/4f8acb7e927304712d8ca27ba5944e5926cd9c13.ts create mode 100644 bundler/tests/.cache/untrusted/4f9041d60b9213c42a41fc41ae4a3d257374d18b.ts create mode 100644 bundler/tests/.cache/untrusted/4fa5f08006aa1f0af03991c66e39a31a126ab901.ts create mode 100644 bundler/tests/.cache/untrusted/50251705ff09da8f029f8115d1e693f8a10cb483.ts create mode 100644 bundler/tests/.cache/untrusted/504a2237913cfa381d749e08f7baf9859c4ceb97.ts create mode 100644 bundler/tests/.cache/untrusted/5080784a888b2fb533364733d979dd9f3aba535d.ts create mode 100644 bundler/tests/.cache/untrusted/51673e1218bd13a8e0df2aac54819414634cd856.ts create mode 100644 bundler/tests/.cache/untrusted/51945687aabb104a57e9b146e36c8a16ec06bfba.ts create mode 100644 bundler/tests/.cache/untrusted/53f2efe9d5396903ea43465e3d5da0fed4037bdd.ts create mode 100644 bundler/tests/.cache/untrusted/54a91810183b431d3fff704a5819cec59a1c4686.ts create mode 100644 bundler/tests/.cache/untrusted/554725ead8dfa131627d9a47703c2521e4950bfe.ts create mode 100644 bundler/tests/.cache/untrusted/55588803c618345bde66006bc7653c78e1a103a7.ts create mode 100644 bundler/tests/.cache/untrusted/567f0327cc8776c5f38979f841d069dbc8b00526.ts create mode 100644 bundler/tests/.cache/untrusted/56cbb997b1f0534e1b2d8167554a65dc63a1d7f8.ts create mode 100644 bundler/tests/.cache/untrusted/5717af80622b62bed6a6eac0129d44c5ca31e02c.ts create mode 100644 bundler/tests/.cache/untrusted/58939bf41d5c33369ae37163f144ef88d0980cb2.ts create mode 100644 bundler/tests/.cache/untrusted/58b2db69eb1531ab8eeb1fcf79e71c4b5d446b3d.ts create mode 100644 bundler/tests/.cache/untrusted/58b3b284af3469233515656daf61462bf5a42fef.ts create mode 100644 bundler/tests/.cache/untrusted/58b4d57b6dbfd1070ff49c0f1db75887558a422b.ts create mode 100644 bundler/tests/.cache/untrusted/59cc7f64c41773c0f0dbcfc498df6cb5ca9b0421.ts create mode 100644 bundler/tests/.cache/untrusted/59e3a186fd5614be70baea131b4bceb8c50284f5.ts create mode 100644 bundler/tests/.cache/untrusted/5a0a4ea922cdd53f69f49561368af8c09b0f08d7.ts create mode 100644 bundler/tests/.cache/untrusted/5a2add619c27643036195154842eef5c45ee8512.ts create mode 100644 bundler/tests/.cache/untrusted/5d4c9cfe85d24650da76b19dd482cbce42a6e00d.ts create mode 100644 bundler/tests/.cache/untrusted/5ff8440757ecef0fbb8133ab7c9828f5087bda1b.ts create mode 100644 bundler/tests/.cache/untrusted/618fbbea8b5cd8a5f02f80336572c8f4b6258802.ts create mode 100644 bundler/tests/.cache/untrusted/6355d98e3d1021b59a8c68e37a7d16828d54ea6f.ts create mode 100644 bundler/tests/.cache/untrusted/63dad99f2eed60a72f04d6f87f755e568c3f1152.ts create mode 100644 bundler/tests/.cache/untrusted/63f07e6080a4fcc7ae3b10f853d91fef432cbba4.ts create mode 100644 bundler/tests/.cache/untrusted/64b06238be8bbb945d5f53593fd514dbb234218e.ts create mode 100644 bundler/tests/.cache/untrusted/65101dffc84e7f4ee89e342a87d25b6caff3474d.ts create mode 100644 bundler/tests/.cache/untrusted/65d6aebf6fdf221d043583390c5d8d39fb2619e8.ts create mode 100644 bundler/tests/.cache/untrusted/65e2d795e0464d74f11dd3fe596ed66fbdeb6f42.ts create mode 100644 bundler/tests/.cache/untrusted/666de68a8fd1889b92a17712679f85e8c8410ae5.ts create mode 100644 bundler/tests/.cache/untrusted/66772621962d4b6da17bbc22a6c5c8d5d788ce39.ts create mode 100644 bundler/tests/.cache/untrusted/66d5eefa77965c32199787082b71484249cbcd64.ts create mode 100644 bundler/tests/.cache/untrusted/6788cd64a889c6f72bed2eacc2eb2950292407eb.ts create mode 100644 bundler/tests/.cache/untrusted/685cdb36fdf4510e64ad7e851399d7d98b74f7a7.ts create mode 100644 bundler/tests/.cache/untrusted/68f44958b7025d4e094086d92b584924781cbc4f.ts create mode 100644 bundler/tests/.cache/untrusted/6933c583bef739b5d67bf4ce53f9b216953612cb.ts create mode 100644 bundler/tests/.cache/untrusted/695d3bdcd3dbbcb735d18b9a61891e70d1310870.ts create mode 100644 bundler/tests/.cache/untrusted/6971d39e1246263b1aecf13a035727b1e046bea0.ts create mode 100644 bundler/tests/.cache/untrusted/6a459f0b30a6943a15444af495d8d98afe2a8425.ts create mode 100644 bundler/tests/.cache/untrusted/6a599efaa32a3a5d24fafa4c8c6f8622a07afc1b.ts create mode 100644 bundler/tests/.cache/untrusted/6ba0a5eecd4551c525e364d39c522a70266378ee.ts create mode 100644 bundler/tests/.cache/untrusted/6d83538dd19f259aed62b64200c4de05456ae710.ts create mode 100644 bundler/tests/.cache/untrusted/6dcffc6b397fefc44f1d27cc84ef654589b87aa9.ts create mode 100644 bundler/tests/.cache/untrusted/6e2279c7e6be03e3de622bef54b75b2472860c06.ts create mode 100644 bundler/tests/.cache/untrusted/6e525289c8cbfb2275b46af41d4edaf99d0a32ca.ts create mode 100644 bundler/tests/.cache/untrusted/6f1f3773e0ee97456706e203acab6a27589ad220.ts create mode 100644 bundler/tests/.cache/untrusted/6f505839add97302659613292c1f26b6829ef348.ts create mode 100644 bundler/tests/.cache/untrusted/6f562527e40b045499c4189ae158771f73c93b4b.ts create mode 100644 bundler/tests/.cache/untrusted/6f6e98d09aab925da2a46c09b7023d690d01d186.ts create mode 100644 bundler/tests/.cache/untrusted/6f7da00916866e3273f97146f212548bd3636cc1.ts create mode 100644 bundler/tests/.cache/untrusted/6fa8721cbb71b11d822af347a0c3f21ed9b03e22.ts create mode 100644 bundler/tests/.cache/untrusted/70277a4262c2af1eccb928a41d36c452d74d6df3.ts create mode 100644 bundler/tests/.cache/untrusted/7107689bdf43502903230f60e12ad785bf180304.ts create mode 100644 bundler/tests/.cache/untrusted/717565b0ff7c78eae48cbf62b565c0619327a9ef.ts create mode 100644 bundler/tests/.cache/untrusted/72033f3a3fafa0588c183400ca2b82cc1a756027.ts create mode 100644 bundler/tests/.cache/untrusted/729d42e7dc0ba452134376363d438c5a117e2575.ts create mode 100644 bundler/tests/.cache/untrusted/73fe1777e829cc1b5502570f52408c0036c456af.ts create mode 100644 bundler/tests/.cache/untrusted/74665b275c7049dc681ddd5f37405707add90c6d.ts create mode 100644 bundler/tests/.cache/untrusted/7693634a47fad3366efb7d786765be69a8c7cabd.ts create mode 100644 bundler/tests/.cache/untrusted/769843be01618de2dabf42f72e4a07140496c2ea.ts create mode 100644 bundler/tests/.cache/untrusted/771337645cd6c047212ef5a4a6438755e85aa243.ts create mode 100644 bundler/tests/.cache/untrusted/778b9be70c30a52a869ed1fdf8b0e5e16d39356b.ts create mode 100644 bundler/tests/.cache/untrusted/77bc82559254398c5e4bd015017c20d08acf9260.ts create mode 100644 bundler/tests/.cache/untrusted/77e7f08de124ba150f7e8db03d7d777c9299c52b.ts create mode 100644 bundler/tests/.cache/untrusted/782dd98bd34f473a2da4cf546f0bed2c97a1155c.ts create mode 100644 bundler/tests/.cache/untrusted/78473ee160d5c5ab6ebd9b86b6188a5e95773093.ts create mode 100644 bundler/tests/.cache/untrusted/7894c787a5f38809b5d58f0616473fdde22df12c.ts create mode 100644 bundler/tests/.cache/untrusted/78a4ddfeb013a5479b659809b0bb3db0dfbef638.ts create mode 100644 bundler/tests/.cache/untrusted/78a6fdc3bfde2a08a672858a2061b1659f7fa597.ts create mode 100644 bundler/tests/.cache/untrusted/79005e012ef17670a1a5dedde8430f0280ef5851.ts create mode 100644 bundler/tests/.cache/untrusted/796ebb75260980f6d8470836c3c8a11f431261ff.ts create mode 100644 bundler/tests/.cache/untrusted/7ad45e3ce32425e430c885596a280ca963e8daf6.ts create mode 100644 bundler/tests/.cache/untrusted/7b1802cfe54b3727f45863c69b572e96559ec67b.ts create mode 100644 bundler/tests/.cache/untrusted/7ba67199ced0dacf2c9895a928845ffe9a790dd6.ts create mode 100644 bundler/tests/.cache/untrusted/7bf290d6a47ec52eae209a430ea8f88cea5aa087.ts create mode 100644 bundler/tests/.cache/untrusted/7d3fddf5c20e7bfac15de6ee9fd595728cd04633.ts create mode 100644 bundler/tests/.cache/untrusted/7dc0932e5d795ecdfad31ac37649a7eff65fdc3a.ts create mode 100644 bundler/tests/.cache/untrusted/7e00ca7abbd488e0e7f03f8201caeb1aadcaeeb4.ts create mode 100644 bundler/tests/.cache/untrusted/7e39b63962cf0d54c66059a1bb2245771cac1b9d.ts create mode 100644 bundler/tests/.cache/untrusted/7edad670b878b9dce2251724b67c9c784e4f9c9c.ts create mode 100644 bundler/tests/.cache/untrusted/7f09f7fd1403de574cf3212bd051eb63ca3d8027.ts create mode 100644 bundler/tests/.cache/untrusted/7f15829395969d786b0a0539f10ef9e21cffc2d0.ts create mode 100644 bundler/tests/.cache/untrusted/7fa77ceed93ea7dec87e8adc37f1a0071fc4b481.ts create mode 100644 bundler/tests/.cache/untrusted/80db7529a8c151d13f5e03404aff1a3b557993f4.ts create mode 100644 bundler/tests/.cache/untrusted/80e2fe19b3cd324dd8b6e513c57727c97db286d2.ts create mode 100644 bundler/tests/.cache/untrusted/8270603aeea96d3dc4649a3efac14f8bef62ef43.ts create mode 100644 bundler/tests/.cache/untrusted/82810b3fbc0df904ee9433345232726207f0543e.ts create mode 100644 bundler/tests/.cache/untrusted/82953e91684abbcc4e0da6532b7871971821146f.ts create mode 100644 bundler/tests/.cache/untrusted/83d9a3de03d369ff7e37eeb942c3287523b4b3df.ts create mode 100644 bundler/tests/.cache/untrusted/83ef0af34ffda19b0645c7f32178b1660c1a1d27.ts create mode 100644 bundler/tests/.cache/untrusted/84734e66b64e2e0eca7e8502159cf854814da1e9.ts create mode 100644 bundler/tests/.cache/untrusted/847bd5dec3c6127fecd1732a9aaa094afcc96785.ts create mode 100644 bundler/tests/.cache/untrusted/85252406ae25b911103129b24c08042e5334fe1e.ts create mode 100644 bundler/tests/.cache/untrusted/85d5612280212ded7deb76278aa056fa48a28064.ts create mode 100644 bundler/tests/.cache/untrusted/864c0d23d09b5e8df61935e725d4d8edbf1dbb45.ts create mode 100644 bundler/tests/.cache/untrusted/86a77cb9b8a199f7a6abf648a4dc4ba385ead3f8.ts create mode 100644 bundler/tests/.cache/untrusted/86dc8b9806bedd80da5a7aa75e960c6b1c63a000.ts create mode 100644 bundler/tests/.cache/untrusted/871434ddb32f78e77a9edeebe4dd1cec6c1fec94.ts create mode 100644 bundler/tests/.cache/untrusted/8772013f50d04910c9398861f7429fa356f47bb0.ts create mode 100644 bundler/tests/.cache/untrusted/8879887208ef85832abb1f98d03dda478150f70a.ts create mode 100644 bundler/tests/.cache/untrusted/88cea0a1f4cb00c18fe1046d8b1d50731e4fab84.ts create mode 100644 bundler/tests/.cache/untrusted/89bbe900c4c0e7580f391d3b91c657dd8217927a.ts create mode 100644 bundler/tests/.cache/untrusted/89c0824bca2ae73e9c2c5c5b818cdf3ad78bc4e4.ts create mode 100644 bundler/tests/.cache/untrusted/8b5d19330bc1090519e90a5f2b6bb9840393a229.ts create mode 100644 bundler/tests/.cache/untrusted/8c1ad4556f34cf532e5cdf146e16e05a07066d43.ts create mode 100644 bundler/tests/.cache/untrusted/8c7a7300e2e91ffd41cfafb710e14a25d652795f.ts create mode 100644 bundler/tests/.cache/untrusted/8cbb5e2229ffcfd4094514ed0fb70ae329552467.ts create mode 100644 bundler/tests/.cache/untrusted/8e0368763f7a75540caa28fc453d13a2b67dc529.ts create mode 100644 bundler/tests/.cache/untrusted/8e897cd1ad30cb15a71f435ece360bd381d2d5e0.ts create mode 100644 bundler/tests/.cache/untrusted/8eaa6029119298c711af0ca8918bad73e3df066d.ts create mode 100644 bundler/tests/.cache/untrusted/8fcf44c47ab46cfc6859da1f1257e7b7b2de1225.ts create mode 100644 bundler/tests/.cache/untrusted/9026c2a2f36e25d7c026db94d26e5d0973808b4f.ts create mode 100644 bundler/tests/.cache/untrusted/90abb124e78ad16ea8069d6420d1da0dfca724e3.ts create mode 100644 bundler/tests/.cache/untrusted/90d5cf868a3676540511c25213175d43559922c9.ts create mode 100644 bundler/tests/.cache/untrusted/9148be40f2fbbdcfcdbb173b2ac58120aaeabd39.ts create mode 100644 bundler/tests/.cache/untrusted/91876fe9f06b621f83cab8be2c956b1541a48f90.ts create mode 100644 bundler/tests/.cache/untrusted/9316fd4d3aa367190ca76dff40606be309a0e184.ts create mode 100644 bundler/tests/.cache/untrusted/93b84408bc90bc3c82725e969b7f54170e967f95.ts create mode 100644 bundler/tests/.cache/untrusted/94131c59d66b00584cc69c53dbb34140198e6292.ts create mode 100644 bundler/tests/.cache/untrusted/9461524ac188dc000b724f41c6ceb1cd66bacbb9.ts create mode 100644 bundler/tests/.cache/untrusted/9462670d319286dd4de89ee39e81384053ccd5fd.ts create mode 100644 bundler/tests/.cache/untrusted/94a618ac426d6bbcb1cc74118738b479a4e67cb4.ts create mode 100644 bundler/tests/.cache/untrusted/9523d81170359ad2361414d702364dde2e239620.ts create mode 100644 bundler/tests/.cache/untrusted/9531efc396e3b2452144fe11e1c3654f43c2fe94.ts create mode 100644 bundler/tests/.cache/untrusted/95967991555ab3dbcc8b8fb6b1762647c328dee8.ts create mode 100644 bundler/tests/.cache/untrusted/9680d84213488ca3466352344ff25ffb67a5603c.ts create mode 100644 bundler/tests/.cache/untrusted/9b424db8fb807fd9c20eace5d1f890ac5c321aea.ts create mode 100644 bundler/tests/.cache/untrusted/9c3e35833ca8f61b0653f8dab772375e0840f9ab.ts create mode 100644 bundler/tests/.cache/untrusted/9c9bb007d69524bc5d9c2b1d5c6268c3374664ad.ts create mode 100644 bundler/tests/.cache/untrusted/9d2b230716f514166f305475782c0dd59a48bc60.ts create mode 100644 bundler/tests/.cache/untrusted/9d431e87b7f0624e2af14cfd809e3e0cafd291c2.ts create mode 100644 bundler/tests/.cache/untrusted/9e225376be7de9be5a01e3a4b782bd4348627c4b.ts create mode 100644 bundler/tests/.cache/untrusted/9e5439e8ccab15fd61d62ad3ad47a6d58e2cc1a8.ts create mode 100644 bundler/tests/.cache/untrusted/a0035f2df16096d374ae768d656c62ee685076e9.ts create mode 100644 bundler/tests/.cache/untrusted/a1906e8eab861d14c26fef27cb0d7fc12f5c1661.ts create mode 100644 bundler/tests/.cache/untrusted/a2283964da045aa11b75eeb61b07acf3c0842060.ts create mode 100644 bundler/tests/.cache/untrusted/a4188ce06fa9a46153ea0b5a7e1f486419f1b260.ts create mode 100644 bundler/tests/.cache/untrusted/a4219dc461d072599e78126072e4c8fb065f8e20.ts create mode 100644 bundler/tests/.cache/untrusted/a500708b93b799b1227b43a1db7466f01b45acc7.ts create mode 100644 bundler/tests/.cache/untrusted/a6811da9903942259f8eadbc01c42688ba04b8f0.ts create mode 100644 bundler/tests/.cache/untrusted/a6871b557a372b9ca8d8a20518a40e422c4d1c3e.ts create mode 100644 bundler/tests/.cache/untrusted/a691aece5c0c94b9f1dbd0aa87c5c0b21d3624eb.ts create mode 100644 bundler/tests/.cache/untrusted/a6b476fbba3ee25e8b6bffb5281d230035ffc002.ts create mode 100644 bundler/tests/.cache/untrusted/a7d3f13bb85bac3b43409fc8bbe72cca4b262ef8.ts create mode 100644 bundler/tests/.cache/untrusted/a8653499142ec4617ce8a742e3e2bf40a77de0eb.ts create mode 100644 bundler/tests/.cache/untrusted/a8f4eff3a827e1cf1ad0be763986d8de3722c6bd.ts create mode 100644 bundler/tests/.cache/untrusted/a955c857c214df6dc2d04775b29dcdad25f0c1fe.ts create mode 100644 bundler/tests/.cache/untrusted/a98057429b2194ee0127cd350f8dc5d0bd3e405c.ts create mode 100644 bundler/tests/.cache/untrusted/aa281fcdc48b43a4bf2354df248c6f1e985b806f.ts create mode 100644 bundler/tests/.cache/untrusted/aa56445b1335ecef14fbc9e17768d369b7041267.ts create mode 100644 bundler/tests/.cache/untrusted/ab2080c45b4251cdf6fd3a0bb588d9b85f5a7cef.ts create mode 100644 bundler/tests/.cache/untrusted/abbda63a7d6f2f99026f812cbb16871f9fa94890.ts create mode 100644 bundler/tests/.cache/untrusted/ac3ae239558ad5d85be8600d1c4b497ed0a8ee6e.ts create mode 100644 bundler/tests/.cache/untrusted/ad6cc717c4a387765fb3a40977dc0a9adafb0533.ts create mode 100644 bundler/tests/.cache/untrusted/ad8f6cbfae0b5f967576c061d303529a48f8f004.ts create mode 100644 bundler/tests/.cache/untrusted/adc9d3c33fb74f2e25e896b384ffe58c521e8966.ts create mode 100644 bundler/tests/.cache/untrusted/adcd1c88e039856b981ac7a167115689616a9c51.ts create mode 100644 bundler/tests/.cache/untrusted/addf41456becb47280f9758c79b80ed2e91c692c.ts create mode 100644 bundler/tests/.cache/untrusted/adfb51d35a5d0116d2012354ada1bd0389df37c8.ts create mode 100644 bundler/tests/.cache/untrusted/ae10c9b7c94304bbae9ff1442e67e3832c88f4c4.ts create mode 100644 bundler/tests/.cache/untrusted/afab6f536359ca15bb6f8268536194c6a8aa6267.ts create mode 100644 bundler/tests/.cache/untrusted/afc012072603958a898b00900e6d1b3d94f2dff6.ts create mode 100644 bundler/tests/.cache/untrusted/afcaf9928f3ee5bac47e7c9dbe6af18c6320247e.ts create mode 100644 bundler/tests/.cache/untrusted/b040eab82e75eb06652025102b7e779e0301d8be.ts create mode 100644 bundler/tests/.cache/untrusted/b1876f2acea84ded886eac379effd34ae7f8ceef.ts create mode 100644 bundler/tests/.cache/untrusted/b1d22b6de09448ea2e162232bda4419df83b46f8.ts create mode 100644 bundler/tests/.cache/untrusted/b1e62e1d207a58f84625b4b8f6c972982bc2277e.ts create mode 100644 bundler/tests/.cache/untrusted/b368ba22793c06efd92ee0b4a5b4b65f8c736f11.ts create mode 100644 bundler/tests/.cache/untrusted/b40436caf540db63656aaa4062fac146a6e0feed.ts create mode 100644 bundler/tests/.cache/untrusted/b51eb17a076b505bf74bfccff585e648c67515a3.ts create mode 100644 bundler/tests/.cache/untrusted/b59054daa1a6ae835132695b22a5b486336f4713.ts create mode 100644 bundler/tests/.cache/untrusted/b5c94d0475a77406a4cd356ef9467b4d9a6cb8d8.ts create mode 100644 bundler/tests/.cache/untrusted/b653f0b6e9618d3e4fd89e0127b4fd9f5e097657.ts create mode 100644 bundler/tests/.cache/untrusted/b6bac542b8274cd31cd97d9530109044b74696c2.ts create mode 100644 bundler/tests/.cache/untrusted/b6d9d6c4119a365a2b2ae118b008c2e8477788b2.ts create mode 100644 bundler/tests/.cache/untrusted/b6deafbe8103a53e572a91abbac11f6a8e7a29ee.ts create mode 100644 bundler/tests/.cache/untrusted/b70dcb53248b38deb214debae0f61d07d394a19d.ts create mode 100644 bundler/tests/.cache/untrusted/b80694fb38584352bca5e832a04a0bce3d289f34.ts create mode 100644 bundler/tests/.cache/untrusted/b82073cc4277abcc7838e297ffb3d0548f46cdda.ts create mode 100644 bundler/tests/.cache/untrusted/b8a1f3ebc7471e3d99af6b7e3481b6275ff789cf.ts create mode 100644 bundler/tests/.cache/untrusted/b91e290e4c5e7384cfb75399665f1415ad696ee3.ts create mode 100644 bundler/tests/.cache/untrusted/bad02df1726b4907c540daa2466e038825e887f9.ts create mode 100644 bundler/tests/.cache/untrusted/bbc44cdc03da1f68746d1f24fbb75de4ed1cea81.ts create mode 100644 bundler/tests/.cache/untrusted/bbf16ce30fde3b8084dddd8473b523b3775c90bb.ts create mode 100644 bundler/tests/.cache/untrusted/bc1e76769392ebc51e354993750e05fe8922c4ff.ts create mode 100644 bundler/tests/.cache/untrusted/bca65378c671cdfa13cf3b0b3150525e663cd19b.ts create mode 100644 bundler/tests/.cache/untrusted/bdbebf1fa97a7d2dee4e478efaf0eb54849a06da.ts create mode 100644 bundler/tests/.cache/untrusted/be7a203c7b3768a3e7629dd95471c7a285dc95e6.ts create mode 100644 bundler/tests/.cache/untrusted/bedbb8e56cb341a90fcffabd4d527034844f68cc.ts create mode 100644 bundler/tests/.cache/untrusted/bf0d861ac0474be219b2d92b18d3e8c76c64fa6b.ts create mode 100644 bundler/tests/.cache/untrusted/bf25849c02d079a33c668965b2f9202f925a6666.ts create mode 100644 bundler/tests/.cache/untrusted/bf8e911bfa48ceefd6bab54bb6166fc3d6d4b70c.ts create mode 100644 bundler/tests/.cache/untrusted/bfe3c30e576ebfc1e8e22d529586643e0b6abfcb.ts create mode 100644 bundler/tests/.cache/untrusted/bffcaab555719e2ff0fadc7864bda0a4b6fea0cb.ts create mode 100644 bundler/tests/.cache/untrusted/c090da6cb22597ec44784180052b38a46d566334.ts create mode 100644 bundler/tests/.cache/untrusted/c097d9a2d9599c38c1ee019312fee8e462dccc71.ts create mode 100644 bundler/tests/.cache/untrusted/c0e026028a578dd5b8da8eb0da72c9b97b58cad9.ts create mode 100644 bundler/tests/.cache/untrusted/c12eb4945df97cb93f2a9a5bbe3e29eb7374088b.ts create mode 100644 bundler/tests/.cache/untrusted/c177ddc94b8e385432d88eb9817a2fb802c2046a.ts create mode 100644 bundler/tests/.cache/untrusted/c2b68ac2356009e53f5cd382a6ed07d18dae3e2e.ts create mode 100644 bundler/tests/.cache/untrusted/c34942dd820621b6f00a43b159bb12858e31cf42.ts create mode 100644 bundler/tests/.cache/untrusted/c415fa5fdb460414003e825fe525319de3408d31.ts create mode 100644 bundler/tests/.cache/untrusted/c4c0d316ca826014f070a93083430780a54d62c5.ts create mode 100644 bundler/tests/.cache/untrusted/c4efcb81c335e696df772dc3697f8339b5cca767.ts create mode 100644 bundler/tests/.cache/untrusted/c5b45497fbfec0f95a7d5f6e475786fa9c20a2f2.ts create mode 100644 bundler/tests/.cache/untrusted/c5cb67d73db3ad6cb50e5f4d8c08a7d47bc6bab1.ts create mode 100644 bundler/tests/.cache/untrusted/c5cd183853ac8d390a0d2173318fc2bfb83a4076.ts create mode 100644 bundler/tests/.cache/untrusted/c65cd7a2fd0bf3807720c24dbcc55818bcdca916.ts create mode 100644 bundler/tests/.cache/untrusted/c67129cc560e16f60799315814fed06a4a72b3f6.ts create mode 100644 bundler/tests/.cache/untrusted/c7f1067bf34e40ce7f0f971b7607268ece822a0a.ts create mode 100644 bundler/tests/.cache/untrusted/c8203b45075b7f7b5a95cb5eabe535f8da3e57fe.ts create mode 100644 bundler/tests/.cache/untrusted/c86cabbe4f68e530c72082c45c4a7ade9cd6155c.ts create mode 100644 bundler/tests/.cache/untrusted/c975ee8158b4dfe2f9b40a891bffd63b2dee4b06.ts create mode 100644 bundler/tests/.cache/untrusted/caa03d63d4bd9f2a41399e027ac69e563f8c910b.ts create mode 100644 bundler/tests/.cache/untrusted/cb963f74fa9fd0e6ebe6d1915569a2905f99777f.ts create mode 100644 bundler/tests/.cache/untrusted/cc5ce8cfeb1a3c4d5b6efa758497f2032f611b72.ts create mode 100644 bundler/tests/.cache/untrusted/cc785a9248deb8c72cc9d05e4d0b027e7ac2c706.ts create mode 100644 bundler/tests/.cache/untrusted/cd080cfd599e44a9e7f1c8578360398ee838c856.ts create mode 100644 bundler/tests/.cache/untrusted/cd7d3577ecd1b3a10741a02bc8430e7b3639512c.ts create mode 100644 bundler/tests/.cache/untrusted/cd9b667fba1bf7d4096ee99267de0aa25d536d5b.ts create mode 100644 bundler/tests/.cache/untrusted/cdcb229d89721de36ee0db28f9c112b9ccf24d6a.ts create mode 100644 bundler/tests/.cache/untrusted/ce1b9ec1933f38d497dfda83435040793ceb5847.ts create mode 100644 bundler/tests/.cache/untrusted/ce8b89a1d59e22168d5bc2b0b0b87a8dab54f62a.ts create mode 100644 bundler/tests/.cache/untrusted/cec4b2759b5b06c11e27ea29959f27f61265f796.ts create mode 100644 bundler/tests/.cache/untrusted/cfbde5fb116f1fad0f708259e8d11efc4be56a90.ts create mode 100644 bundler/tests/.cache/untrusted/d0413bedcb835122ee1bf5e116888c88d587d8a5.ts create mode 100644 bundler/tests/.cache/untrusted/d2e3b78a3908640a6731a68db739ec353b5b4b52.ts create mode 100644 bundler/tests/.cache/untrusted/d2e9d14e56bf338a81afeac1e91b2dcc65c29b49.ts create mode 100644 bundler/tests/.cache/untrusted/d307962d9748235d16269a1d835624ef7af5f405.ts create mode 100644 bundler/tests/.cache/untrusted/d321032dec4f3bd721809f27c4d482ebf223b99b.ts create mode 100644 bundler/tests/.cache/untrusted/d33af3cab44d8e86467293236ccb17a811d156d0.ts create mode 100644 bundler/tests/.cache/untrusted/d45d45c512189b9b62e5f98f9bd39be63c004ee5.ts create mode 100644 bundler/tests/.cache/untrusted/d4e5f6eda1c62073f81bf908d7d2305f17a833eb.ts create mode 100644 bundler/tests/.cache/untrusted/d5a62e923eee97ee972c850f5b4dceab58c85758.ts create mode 100644 bundler/tests/.cache/untrusted/d5c81ee6c1901190498bea9018afe930b2b28113.ts create mode 100644 bundler/tests/.cache/untrusted/d5f76fa6e25f4d319ceb52aefc8e28cc43062e2b.ts create mode 100644 bundler/tests/.cache/untrusted/d64dbe569e0e33fc4a00c430319854deae4ded62.ts create mode 100644 bundler/tests/.cache/untrusted/d6a8f475ed08b6497d7f096dbf3ec68e7fd78c8f.ts create mode 100644 bundler/tests/.cache/untrusted/d6ede89fc85e111f3681412476e912e8d79daeb8.ts create mode 100644 bundler/tests/.cache/untrusted/d7a7deea74ac5037f20096c72896940bc7dfeb1a.ts create mode 100644 bundler/tests/.cache/untrusted/d84c0384d0e9aed4b20596f0388de9edaf52ebf8.ts create mode 100644 bundler/tests/.cache/untrusted/d876a5a26d8af5805297851f75766de834262342.ts create mode 100644 bundler/tests/.cache/untrusted/d8806483e2feeacc68df5b3cb8f55dea584a17ab.ts create mode 100644 bundler/tests/.cache/untrusted/d8a22f877bfebe90772809596182077de58ddd8d.ts create mode 100644 bundler/tests/.cache/untrusted/d8bc06bcaf4850ce6482e2af927c94d9984693e3.ts create mode 100644 bundler/tests/.cache/untrusted/d9e2ff4767e05c334b83f269ca1ee2c6df62619a.ts create mode 100644 bundler/tests/.cache/untrusted/da1b13e6502165e8dcb86366c358a27a309a7f17.ts create mode 100644 bundler/tests/.cache/untrusted/daa900c2e1b46f57fc1a755b47b3a1a619c2d785.ts create mode 100644 bundler/tests/.cache/untrusted/dabadff7db43529f8c1c4ecbb76a0ef74e4a65f7.ts create mode 100644 bundler/tests/.cache/untrusted/dbbd4c47b740fd2e1de0e1441a9671abcf064899.ts create mode 100644 bundler/tests/.cache/untrusted/dc51bee73c089e5bbc5bfcfa0dea6a376218b4b8.ts create mode 100644 bundler/tests/.cache/untrusted/dd5e748d0849268b90f49e3e835bf5287be8bf43.ts create mode 100644 bundler/tests/.cache/untrusted/ded43e68d7f82628c882d82697423d3694ac02bc.ts create mode 100644 bundler/tests/.cache/untrusted/df39dd29eadcdf73315d29196b9affc0b8efb734.ts create mode 100644 bundler/tests/.cache/untrusted/df8f9b3c9ae150005fa6e50ffae6ce00c352a576.ts create mode 100644 bundler/tests/.cache/untrusted/df95eff5275e0aee33ba1908c62785e1755262c3.ts create mode 100644 bundler/tests/.cache/untrusted/e0dc6774ab4c62dd10931795cb7539faa71b515b.ts create mode 100644 bundler/tests/.cache/untrusted/e10c91dfbe886ed5e5f5685c479a5a74ed6b3a67.ts create mode 100644 bundler/tests/.cache/untrusted/e181cb6cb8b05b7c57b7f1cef4d5002e3061080d.ts create mode 100644 bundler/tests/.cache/untrusted/e30c0347b9fdb79a79377059012dc461b79d8a38.ts create mode 100644 bundler/tests/.cache/untrusted/e33b8c8fc53efb9c14e9e5638cbba3b493d50b67.ts create mode 100644 bundler/tests/.cache/untrusted/e40c8ca6594b2671cb3d9598a95c4689f2f64d08.ts create mode 100644 bundler/tests/.cache/untrusted/e7761aaa669ace0327d728aba218b76206525068.ts create mode 100644 bundler/tests/.cache/untrusted/e836cc11d7e024712417bf3ca2aa950ffb22abc8.ts create mode 100644 bundler/tests/.cache/untrusted/ea16ec5dfbfc6beb49a1dfdd2cb929aea46de31d.ts create mode 100644 bundler/tests/.cache/untrusted/ea521ffe8dfdeca48e8e923391f0127716410f4b.ts create mode 100644 bundler/tests/.cache/untrusted/eb184010b6bf949575e2e30ca15fc217997a38e5.ts create mode 100644 bundler/tests/.cache/untrusted/ebc03d42e281771b76578fec132ddb6dcd7c37e6.ts create mode 100644 bundler/tests/.cache/untrusted/ebd7df6a9fcdca9d939508c800286a9f874e2409.ts create mode 100644 bundler/tests/.cache/untrusted/ed924f056ccf4f41cfe445aba2968559ea260c1b.ts create mode 100644 bundler/tests/.cache/untrusted/ee56a4a15255cee584fb7fb7fbca5c6e957ff8be.ts create mode 100644 bundler/tests/.cache/untrusted/ef32fd758010dac8c1b177b2bb34b6ddd41efb06.ts create mode 100644 bundler/tests/.cache/untrusted/efd087fd0e48d1cf6a607afeb3d76486ccc997ac.ts create mode 100644 bundler/tests/.cache/untrusted/f05a5f4999bdb9f5cdcb08a34627fb1c7c03fee9.ts create mode 100644 bundler/tests/.cache/untrusted/f0f2dea4a5609fd5ea2df8fd2884e1cd43b1ef18.ts create mode 100644 bundler/tests/.cache/untrusted/f1dae189eb48ebd5cbc7be7a51ed4f2fdbcecd44.ts create mode 100644 bundler/tests/.cache/untrusted/f1f51b95991cf87a4899eb8d732f6b822e448cbb.ts create mode 100644 bundler/tests/.cache/untrusted/f2463d7a9be98bc3420fe49dc40a4fdbed47faea.ts create mode 100644 bundler/tests/.cache/untrusted/f26d9e5eb842479e7a6f7c4f1c95229ea2d094a4.ts create mode 100644 bundler/tests/.cache/untrusted/f283fcd977e0a30371f66c1fb2dc8443133be05b.ts create mode 100644 bundler/tests/.cache/untrusted/f2abf7df344144030f286bfe7c0f1a05f2a2df18.ts create mode 100644 bundler/tests/.cache/untrusted/f2cb7ec272b874426985a19f37da52118c28f61e.ts create mode 100644 bundler/tests/.cache/untrusted/f2d7990efce4adcf010681acc0bec34f00cebd24.ts create mode 100644 bundler/tests/.cache/untrusted/f3c14f5f25498774783a63fa9c90731b382dfbcb.ts create mode 100644 bundler/tests/.cache/untrusted/f415751b4a694d7b4bc2ffdc5f65e86abc872dba.ts create mode 100644 bundler/tests/.cache/untrusted/f4d5881dd2abd1289a4ae2e4b3ecb1a77b22242e.ts create mode 100644 bundler/tests/.cache/untrusted/f514ad735e727ead0a412d4621ce25a3ae9be6af.ts create mode 100644 bundler/tests/.cache/untrusted/f575b9cb3e9d34a889fda6a60f9351ba9bf03a9f.ts create mode 100644 bundler/tests/.cache/untrusted/f5faaa2fb054ce150f0b2ecaae1271071009f380.ts create mode 100644 bundler/tests/.cache/untrusted/f60323bb8757122915c6b163629d4f947adbebff.ts create mode 100644 bundler/tests/.cache/untrusted/f6fb98fb1c357daeabf12a6d3eebe318a6f2f8ef.ts create mode 100644 bundler/tests/.cache/untrusted/f79cb0d0d972b6c91f4b35f303fedfd9e4565a60.ts create mode 100644 bundler/tests/.cache/untrusted/f7e7a5b04a9a64ba2476edebf6d383cb87ba3002.ts create mode 100644 bundler/tests/.cache/untrusted/f8b58679175fe06b73d9724a10b3865193b983fa.ts create mode 100644 bundler/tests/.cache/untrusted/f8d35e05496e1ded607df9afd947a0e2dec505ba.ts create mode 100644 bundler/tests/.cache/untrusted/f93ebacfb508685d99b881c70655665034244d67.ts create mode 100644 bundler/tests/.cache/untrusted/fb89d886bcdee625f38ba983fc8f29cf52565280.ts create mode 100644 bundler/tests/.cache/untrusted/fb8f6692f26ef59a5d09cc02fdc9ae9b373c5ba8.ts create mode 100644 bundler/tests/.cache/untrusted/fc228c2159b9cd44f4412ecaf41ffb1f4ca424c9.ts create mode 100644 bundler/tests/.cache/untrusted/fc81dba5b0ebe63014cd95a863bbaeaa6e63117b.ts create mode 100644 bundler/tests/.cache/untrusted/fe3225b3254d2184cfb161d287ba24eb7f539452.ts create mode 100644 bundler/tests/.cache/untrusted/fe55ac558514044fe365a3952b2323ac1728cfba.ts create mode 100644 bundler/tests/.cache/untrusted/fe71b3490cf756880bf07797f6158d917c178ae1.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/deps.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/entry.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/interfaceExtension.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/mergeObjects.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName test.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/log.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/mod.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.test.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.test.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/refine.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/typeScript/enumPrinter.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/types.d.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/deno.loadFile.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/memoizeByFirstTruthyArg.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams test.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase test.ts create mode 100644 bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case2/input/entry.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case3/input/entry.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case4/input/child.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case4/input/deps.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case4/input/entry.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case4/input/gql.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case4/input/parent.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case5/input/child.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case5/input/deps.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case5/input/entry.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case5/input/gql.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case5/input/parent.ts create mode 100644 bundler/tests/deno-exec/deno-9307/case6/input/entry.ts diff --git a/bundler/Cargo.toml b/bundler/Cargo.toml index 0da74b444e2..b4af137b205 100644 --- a/bundler/Cargo.toml +++ b/bundler/Cargo.toml @@ -9,7 +9,7 @@ include = ["Cargo.toml", "build.rs", "src/**/*.rs", "src/**/*.js"] license = "Apache-2.0/MIT" name = "swc_bundler" repository = "https://github.com/swc-project/swc.git" -version = "0.25.1" +version = "0.25.2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] diff --git a/bundler/scripts/download.sh b/bundler/scripts/download.sh new file mode 100755 index 00000000000..c1ad3ec7fbf --- /dev/null +++ b/bundler/scripts/download.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +export CI=1 +cargo test --test fixture +cargo test --test deno \ No newline at end of file diff --git a/bundler/scripts/test.sh b/bundler/scripts/test.sh index e3213dfeb2a..ddd37b19e1a 100755 --- a/bundler/scripts/test.sh +++ b/bundler/scripts/test.sh @@ -1,8 +1,6 @@ #!/usr/bin/env bash set -eux -cargo test --no-run - cargo test --lib cargo test --test fixture (cd ../spack && cargo test --test fixture) diff --git a/bundler/src/bundler/chunk/computed_key.rs b/bundler/src/bundler/chunk/computed_key.rs index d3b96a8ae35..5cc1628c1f2 100644 --- a/bundler/src/bundler/chunk/computed_key.rs +++ b/bundler/src/bundler/chunk/computed_key.rs @@ -8,7 +8,7 @@ use swc_atoms::js_word; use swc_common::{SyntaxContext, DUMMY_SP}; use swc_ecma_ast::*; use swc_ecma_utils::{find_ids, private_ident, ExprFactory}; -use swc_ecma_visit::{noop_fold_type, noop_visit_type, Fold, FoldWith, Node, Visit}; +use swc_ecma_visit::{noop_fold_type, noop_visit_type, Fold, Node, Visit}; impl Bundler<'_, L, R> where @@ -35,7 +35,7 @@ where &self, ctx: &Ctx, id: ModuleId, - mut module: Modules, + module: Modules, ) -> Result { let span = DUMMY_SP; let info = self.scope.get_module(id).unwrap(); @@ -44,7 +44,6 @@ where None => bail!("{:?} should not be wrapped with a function", id), }; let injected_ctxt = self.injected_ctxt; - module.sort(id, &ctx.graph, &self.cm); let is_async = { let mut v = TopLevelAwaitFinder { found: false }; @@ -52,93 +51,89 @@ where v.found }; - let mut module_items = vec![]; + let mut addtional_items = vec![]; - let stmts = { - module.iter().for_each(|(_, item)| { - match item { - // Handle `export *`-s from dependency modules. - // - // See: https://github.com/denoland/deno/issues/9200 - ModuleItem::ModuleDecl(ModuleDecl::ExportNamed(NamedExport { - span, - ref specifiers, - .. - })) if span.ctxt == injected_ctxt => { - for s in specifiers { - match s { - ExportSpecifier::Named(ExportNamedSpecifier { - orig, - exported: Some(exported), - .. - }) => { - if let Some(..) = ctx.transitive_remap.get(&exported.span.ctxt) - { - let mut var_name = exported.clone(); - var_name.span.ctxt = info.export_ctxt(); - module_items.push( - exported - .clone() - .assign_to(var_name.clone()) - .into_module_item( - injected_ctxt, - "export * in a wrapped esm", - ), - ); - let specifier = - ExportSpecifier::Named(ExportNamedSpecifier { - span: DUMMY_SP, - orig: orig.clone(), - exported: Some(exported.clone()), - }); - module_items.push(ModuleItem::ModuleDecl( - ModuleDecl::ExportNamed(NamedExport { + module.iter().for_each(|(module_id, item)| { + match item { + // Handle `export *`-s from dependency modules. + // + // See: https://github.com/denoland/deno/issues/9200 + ModuleItem::ModuleDecl(ModuleDecl::ExportNamed(NamedExport { + span, + ref specifiers, + .. + })) if span.ctxt == injected_ctxt => { + for s in specifiers { + match s { + ExportSpecifier::Named(ExportNamedSpecifier { + orig, + exported: Some(exported), + .. + }) => { + if let Some(..) = ctx.transitive_remap.get(&exported.span.ctxt) { + let mut var_name = exported.clone(); + var_name.span.ctxt = info.export_ctxt(); + addtional_items.push(( + module_id, + exported + .clone() + .assign_to(var_name.clone()) + .into_module_item( + injected_ctxt, + "export * in a wrapped esm", + ), + )); + let specifier = ExportSpecifier::Named(ExportNamedSpecifier { + span: DUMMY_SP, + orig: orig.clone(), + exported: Some(exported.clone()), + }); + addtional_items.push(( + module_id, + ModuleItem::ModuleDecl(ModuleDecl::ExportNamed( + NamedExport { span: DUMMY_SP.with_ctxt(injected_ctxt), specifiers: vec![specifier], src: None, type_only: false, asserts: None, - }), - )); - } + }, + )), + )); } - _ => {} } + _ => {} } } - _ => {} } - }); + _ => {} + } + }); - let mut module = Module::from(module).fold_with(&mut ExportToReturn { - synthesized_ctxt: self.synthesized_ctxt, - return_props: Default::default(), - }); - - take(&mut module.body) - .into_iter() - .filter_map(|v| match v { - ModuleItem::Stmt(s @ Stmt::Return(..)) => Some(s), - - ModuleItem::Stmt(s) => { - module_items.push(ModuleItem::Stmt(s)); - None - } - - ModuleItem::ModuleDecl(ModuleDecl::ExportAll(ref export)) => { - // We handle this later. - let mut map = ctx.export_stars_in_wrapped.lock(); - map.entry(id).or_default().push(export.span.ctxt); - module_items.push(v); - None - } - _ => { - module_items.push(v); - None - } - }) - .collect() + let mut export_visitor = ExportToReturn { + synthesized_ctxt: self.synthesized_ctxt, + return_props: Default::default(), }; + let mut module = module.fold_with(&mut export_visitor); + + module.append_all(addtional_items); + + let return_stmt = Stmt::Return(ReturnStmt { + span: DUMMY_SP, + arg: Some(Box::new(Expr::Object(ObjectLit { + span: DUMMY_SP, + props: take(&mut export_visitor.return_props), + }))), + }); + + module.iter().for_each(|(_, v)| match v { + ModuleItem::ModuleDecl(ModuleDecl::ExportAll(ref export)) => { + // We handle this later. + let mut map = ctx.export_stars_in_wrapped.lock(); + map.entry(id).or_default().push(export.span.ctxt); + } + _ => {} + }); let module_fn = Expr::Fn(FnExpr { function: Function { @@ -147,7 +142,7 @@ where span: DUMMY_SP, body: Some(BlockStmt { span: DUMMY_SP, - stmts, + stmts: vec![return_stmt], }), is_generator: false, is_async, @@ -183,7 +178,7 @@ where }], }; - module_items.push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(var_decl)))); + module.append(id, ModuleItem::Stmt(Stmt::Decl(Decl::Var(var_decl)))); // print_hygiene( // "wrap", @@ -195,15 +190,7 @@ where // }, // ); - Ok(Modules::from( - id, - Module { - span: DUMMY_SP, - shebang: None, - body: module_items, - }, - self.injected_ctxt, - )) + Ok(module) } } @@ -229,16 +216,19 @@ struct ExportToReturn { } impl ExportToReturn { - fn export_id(&mut self, i: Ident) { + fn export_id(&mut self, mut i: Ident) { + i.span.ctxt = SyntaxContext::empty(); self.return_props - .push(PropOrSpread::Prop(Box::new(Prop::Shorthand(i.clone())))); + .push(PropOrSpread::Prop(Box::new(Prop::Shorthand(i)))); } - fn export_key_value(&mut self, key: Ident, value: Ident) { + fn export_key_value(&mut self, mut key: Ident, value: Ident) { + key.span.ctxt = SyntaxContext::empty(); + self.return_props .push(PropOrSpread::Prop(Box::new(Prop::KeyValue(KeyValueProp { - key: PropName::Ident(key.clone()), - value: Box::new(Expr::Ident(value.clone())), + key: PropName::Ident(key), + value: Box::new(Expr::Ident(value)), })))); } } @@ -346,23 +336,4 @@ impl Fold for ExportToReturn { ModuleItem::Stmt(Stmt::Empty(EmptyStmt { span: DUMMY_SP })) } } - - fn fold_module_items(&mut self, items: Vec) -> Vec { - let mut new = items.fold_children_with(self); - - new.retain(|s| match s { - ModuleItem::Stmt(Stmt::Empty(..)) => false, - _ => true, - }); - - new.push(ModuleItem::Stmt(Stmt::Return(ReturnStmt { - span: DUMMY_SP, - arg: Some(Box::new(Expr::Object(ObjectLit { - span: DUMMY_SP, - props: take(&mut self.return_props), - }))), - }))); - - new - } } diff --git a/bundler/src/bundler/chunk/export.rs b/bundler/src/bundler/chunk/export.rs index 3e859ef4675..96d20be9219 100644 --- a/bundler/src/bundler/chunk/export.rs +++ b/bundler/src/bundler/chunk/export.rs @@ -117,12 +117,9 @@ where }); } else { dep = dep.fold_with(&mut DepUnexporter {}); - - // print_hygiene(&format!("dep: unexport"), &self.cm, - // &dep.clone().into()); } - // TODO: Add varaible based on specifers + // print_hygiene(&format!("done: reexport"), &self.cm, &dep.clone().into()); Ok(dep) }) diff --git a/bundler/src/bundler/chunk/merge.rs b/bundler/src/bundler/chunk/merge.rs index 65a6efc8e73..ad54b50229e 100644 --- a/bundler/src/bundler/chunk/merge.rs +++ b/bundler/src/bundler/chunk/merge.rs @@ -143,7 +143,11 @@ where } }; - // print_hygiene("wrapped: before deps", &self.cm, &module); + // print_hygiene( + // &format!("wrapped: before deps: {:?}", dep_id), + // &self.cm, + // &module.clone().into(), + // ); if let Some(plan) = ctx.plan.circular.get(&dep_id) { module = self @@ -155,6 +159,12 @@ where .merge_deps(ctx, false, module, plan, &dep_info, false) .context("failed to merge dependencies")?; + // print_hygiene( + // &format!("wrapped: after deps: {:?}", dep_id), + // &self.cm, + // &module.clone().into(), + // ); + // This code is currently not required because wrapped es modules store their // content on the top scope. // @@ -183,6 +193,12 @@ where } else { let mut module = self.merge_modules(ctx, dep_id, false, true)?; + // print_hygiene( + // &format!("not-wrapped: after deps: {:?}", dep_id), + // &self.cm, + // &module.clone().into(), + // ); + // print_hygiene( // &format!( // "import: Before handle_import_deps {:?}:{:?}", @@ -409,6 +425,8 @@ where source.unwrap().clone(), ); + // print_hygiene("merged as reexport", &self.cm, &module.clone().into()); + log::debug!( "Merged {} into {} as a reexport", dep_info.fm.name, @@ -1074,7 +1092,6 @@ where new.push(ModuleItem::Stmt(Stmt::Decl(Decl::Var(v)))); - log::trace!("Exporting `default` with `export decl``"); let export = ModuleItem::ModuleDecl(ModuleDecl::ExportNamed(NamedExport { span: export.span.with_ctxt(injected_ctxt), @@ -1086,6 +1103,12 @@ where id.span.with_ctxt(info.export_ctxt()), ); + log::trace!( + "Exporting `{}{:?}` with `export decl`", + id.sym, + id.span.ctxt + ); + new.push( id.clone() .assign_to(exported.clone()) diff --git a/bundler/src/bundler/chunk/plan/tests.rs b/bundler/src/bundler/chunk/plan/tests.rs index cf1d60a85a3..a4776bf25df 100644 --- a/bundler/src/bundler/chunk/plan/tests.rs +++ b/bundler/src/bundler/chunk/plan/tests.rs @@ -1033,3 +1033,63 @@ fn deno_8302_3() { Ok(()) }); } + +#[test] +fn deno_9307_1() { + suite() + .file( + "main.js", + " + export * as G from './a'; + ", + ) + .file("a.js", "") + .run(|t| { + let module = t + .bundler + .load_transformed(&FileName::Real("main.js".into()))? + .unwrap(); + let mut entries = AHashMap::default(); + entries.insert("main.js".to_string(), module.clone()); + + let p = t.bundler.calculate_plan(entries)?; + + dbg!(&p); + + assert_normal(t, &p.0, "main", &["a"]); + + assert_normal(t, &p.0, "a", &[]); + + Ok(()) + }); +} + +#[test] +fn deno_9307_2() { + suite() + .file( + "main.js", + " + export * from './a'; + ", + ) + .file("a.js", "") + .run(|t| { + let module = t + .bundler + .load_transformed(&FileName::Real("main.js".into()))? + .unwrap(); + let mut entries = AHashMap::default(); + entries.insert("main.js".to_string(), module.clone()); + + let p = t.bundler.calculate_plan(entries)?; + + dbg!(&p); + + assert_normal(t, &p.0, "main", &["a"]); + + assert_normal(t, &p.0, "a", &[]); + + Ok(()) + }); +} diff --git a/bundler/src/inline.rs b/bundler/src/inline.rs index a510e95f492..e2becfa20ae 100644 --- a/bundler/src/inline.rs +++ b/bundler/src/inline.rs @@ -27,6 +27,10 @@ pub(crate) fn inline(injected_ctxt: SyntaxContext, module: &mut Modules) { module.visit_with(&mut v); module.visit_mut_with(&mut v); + module.retain_mut(|_, s| match s { + ModuleItem::Stmt(Stmt::Empty(..)) => false, + _ => true, + }); } #[derive(Debug)] diff --git a/bundler/tests/.cache/deno/0004535d5f93eb2ada7a36c4a14755f0a944c39f.ts b/bundler/tests/.cache/deno/0004535d5f93eb2ada7a36c4a14755f0a944c39f.ts new file mode 100644 index 00000000000..12ecd79a71d --- /dev/null +++ b/bundler/tests/.cache/deno/0004535d5f93eb2ada7a36c4a14755f0a944c39f.ts @@ -0,0 +1,68 @@ +// Loaded from https://deno.land/std/fs/ensure_file.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist. + * these directories are created. If the file already exists, + * it is NOTMODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureFile(filePath: string): Promise { + try { + // if file exists + const stat = await Deno.lstat(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + await ensureDir(path.dirname(filePath)); + // create file + await Deno.writeFile(filePath, new Uint8Array()); + return; + } + + throw err; + } +} + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist, + * these directories are created. If the file already exists, + * it is NOT MODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureFileSync(filePath: string): void { + try { + // if file exists + const stat = Deno.lstatSync(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + ensureDirSync(path.dirname(filePath)); + // create file + Deno.writeFileSync(filePath, new Uint8Array()); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/000ffa42c9218a387d09c7be59f9609249baa988.ts b/bundler/tests/.cache/deno/000ffa42c9218a387d09c7be59f9609249baa988.ts new file mode 100644 index 00000000000..6471345238f --- /dev/null +++ b/bundler/tests/.cache/deno/000ffa42c9218a387d09c7be59f9609249baa988.ts @@ -0,0 +1,61 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/rsa.ts + + +import { power_mod } from "./math.ts"; +import { eme_oaep_encode, eme_oaep_decode } from "./eme_oaep.ts"; +import { os2ip, i2osp } from "./primitives.ts"; +import { concat, random_bytes } from "./helper.ts"; + +/** + * @param n public key modulus + * @param e public key exponent + * @param m message representative + */ +export function rsaep(n: bigint, e: bigint, m: bigint): bigint { + return power_mod(m, e, n); +} + +/** + * @param n private key modulus + * @param d private key exponent + * @param c ciphertext representative + */ +export function rsadp(n: bigint, d: bigint, c: bigint): bigint { + return power_mod(c, d, n); +} + +export function rsa_oaep_encrypt(bytes: number, n: bigint, e: bigint, m: Uint8Array, algorithm: "sha1" | "sha256") { + const em = eme_oaep_encode(new Uint8Array(0), m, bytes, algorithm); + const msg = os2ip(em); + const c = rsaep(n, e, msg); + return i2osp(c, bytes); +} + +export function rsa_oaep_decrypt(bytes: number, n: bigint, d: bigint, c: Uint8Array, algorithm: "sha1" | "sha256") { + const em = rsadp(n, d, os2ip(c)); + const m = eme_oaep_decode(new Uint8Array(0), i2osp(em, bytes), bytes, algorithm); + return m; +} + +export function rsa_pkcs1_encrypt(bytes: number, n: bigint, e: bigint, m: Uint8Array) { + const p = concat([0x00, 0x02], random_bytes(bytes - m.length - 3), [0x00], m); + const msg = os2ip(p); + const c = rsaep(n, e, msg); + return i2osp(c, bytes); +} + +export function rsa_pkcs1_decrypt(bytes: number, n: bigint, d: bigint, c: Uint8Array) { + const em = i2osp(rsadp(n, d, os2ip(c)), bytes); + + if (em[0] !== 0) throw "Decryption error"; + if (em[1] !== 0x02) throw "Decryption error"; + + let psCursor = 2; + for(; psCursor < em.length; psCursor++) { + if (em[psCursor] === 0x00) break; + } + + if (psCursor < 10) throw "Decryption error"; + + return em.slice(psCursor + 1); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/002f5d1cbfd5e28f9167bc34bbab797dd6d45867.ts b/bundler/tests/.cache/deno/002f5d1cbfd5e28f9167bc34bbab797dd6d45867.ts new file mode 100644 index 00000000000..5df5dc83839 --- /dev/null +++ b/bundler/tests/.cache/deno/002f5d1cbfd5e28f9167bc34bbab797dd6d45867.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/common.ts + + +export const pngSignature = [137, 80, 78, 71, 13, 10, 26, 10]; + +const crcTable: number[] = []; +for (let n = 0; n < 256; n++) { + let c = n; + for (let k = 0; k < 8; k++) { + if (c & 1) { + c = 0xedb88320 ^ (c >>> 1); + } else { + c = c >>> 1; + } + } + crcTable[n] = c; +} + +const initialCrc = 0xffffffff; +function updateCrc( + currentCrc: number, + data: Uint8Array, + length: number, +): number { + let c = currentCrc; + for (let n = 0; n < length; n++) { + c = crcTable[(c ^ data[n]) & 0xff] ^ (c >>> 8); + } + return c; +} + +export function crc(data: Uint8Array, length: number): number { + return (updateCrc(initialCrc, data, length) ^ initialCrc) >>> 0; +} diff --git a/bundler/tests/.cache/deno/0046e5420144af71c85b6f4b9d027a4872b958aa.ts b/bundler/tests/.cache/deno/0046e5420144af71c85b6f4b9d027a4872b958aa.ts new file mode 100644 index 00000000000..771fe33c7ce --- /dev/null +++ b/bundler/tests/.cache/deno/0046e5420144af71c85b6f4b9d027a4872b958aa.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/std/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +const hexTable = new TextEncoder().encode("0123456789abcdef"); + +/** + * ErrInvalidByte takes an invalid byte and returns an Error. + * @param byte + */ +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])), + ); +} + +/** ErrLength returns an error about odd string length. */ +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value. +function fromHexChar(byte: number): number { + // '0' <= byte && byte <= '9' + if (48 <= byte && byte <= 57) return byte - 48; + // 'a' <= byte && byte <= 'f' + if (97 <= byte && byte <= 102) return byte - 97 + 10; + // 'A' <= byte && byte <= 'F' + if (65 <= byte && byte <= 70) return byte - 65 + 10; + + throw errInvalidByte(byte); +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes. + * @param src + */ +export function encode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(encodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const v = src[i]; + dst[i * 2] = hexTable[v >> 4]; + dst[i * 2 + 1] = hexTable[v & 0x0f]; + } + return dst; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + return new TextDecoder().decode(encode(src)); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * If the input is malformed an error will be thrown + * the error. + * @param src + */ +export function decode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(decodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const a = fromHexChar(src[i * 2]); + const b = fromHexChar(src[i * 2 + 1]); + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + fromHexChar(src[dst.length * 2]); + throw errLength(); + } + + return dst; +} + +/** + * DecodedLen returns the length of decoding `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return x >>> 1; +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throw an error. + * @param s the `string` to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + return decode(new TextEncoder().encode(s)); +} diff --git a/bundler/tests/.cache/deno/0046ef139334d849e0580670a5e984a126560b34.ts b/bundler/tests/.cache/deno/0046ef139334d849e0580670a5e984a126560b34.ts new file mode 100644 index 00000000000..26776f55f78 --- /dev/null +++ b/bundler/tests/.cache/deno/0046ef139334d849e0580670a5e984a126560b34.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/std@0.85.0/io/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./bufio.ts"; +export * from "./ioutil.ts"; +export * from "./readers.ts"; +export * from "./writers.ts"; +export * from "./streams.ts"; diff --git a/bundler/tests/.cache/deno/00ac2e3568aa701b50dbe03658b1969f4fa89905.ts b/bundler/tests/.cache/deno/00ac2e3568aa701b50dbe03658b1969f4fa89905.ts new file mode 100644 index 00000000000..5e6a592f76f --- /dev/null +++ b/bundler/tests/.cache/deno/00ac2e3568aa701b50dbe03658b1969f4fa89905.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBtcAddress.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// supports Bech32 addresses +/** + * @ignore + */ +const btc = /^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/; + +export const isBtcAddress = (str: string) => { + assertString(str); + return btc.test(str); +}; diff --git a/bundler/tests/.cache/deno/013993bd641a8f773adbcb8f51d7fa01cc2065ad.ts b/bundler/tests/.cache/deno/013993bd641a8f773adbcb8f51d7fa01cc2065ad.ts new file mode 100644 index 00000000000..61acf0d2660 --- /dev/null +++ b/bundler/tests/.cache/deno/013993bd641a8f773adbcb8f51d7fa01cc2065ad.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.79.0/_util/os.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/013da1a69449f69887e4259f172d5b80f642e78c.ts b/bundler/tests/.cache/deno/013da1a69449f69887e4259f172d5b80f642e78c.ts new file mode 100644 index 00000000000..e035b7419c7 --- /dev/null +++ b/bundler/tests/.cache/deno/013da1a69449f69887e4259f172d5b80f642e78c.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueArgumentNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique argument names + * + * A GraphQL field or directive is only valid if all supplied arguments are + * uniquely named. + */ +export function UniqueArgumentNamesRule(context) { + let knownArgNames = Object.create(null); + return { + Field() { + knownArgNames = Object.create(null); + }, + + Directive() { + knownArgNames = Object.create(null); + }, + + Argument(node) { + const argName = node.name.value; + + if (knownArgNames[argName]) { + context.reportError(new GraphQLError(`There can be only one argument named "${argName}".`, [knownArgNames[argName], node.name])); + } else { + knownArgNames[argName] = node.name; + } + + return false; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/01474d64962c420e64b489dc2c1ef19664ef6574.ts b/bundler/tests/.cache/deno/01474d64962c420e64b489dc2c1ef19664ef6574.ts new file mode 100644 index 00000000000..a0f0e28889c --- /dev/null +++ b/bundler/tests/.cache/deno/01474d64962c420e64b489dc2c1ef19664ef6574.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.74.0/fs/exists.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** + * Test whether or not the given path exists by checking with the file system + */ +export async function exists(filePath: string): Promise { + try { + await Deno.lstat(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + + throw err; + } +} + +/** + * Test whether or not the given path exists by checking with the file system + */ +export function existsSync(filePath: string): boolean { + try { + Deno.lstatSync(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/017111745f34ea7e1ee5489286bba848979bba8d.ts b/bundler/tests/.cache/deno/017111745f34ea7e1ee5489286bba848979bba8d.ts new file mode 100644 index 00000000000..745ca54f0fb --- /dev/null +++ b/bundler/tests/.cache/deno/017111745f34ea7e1ee5489286bba848979bba8d.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/mod.ts + + +export * from "./source/index.js"; diff --git a/bundler/tests/.cache/deno/01815f0bfc7c38ccb35716808b637adb22658131.ts b/bundler/tests/.cache/deno/01815f0bfc7c38ccb35716808b637adb22658131.ts new file mode 100644 index 00000000000..90999307a5c --- /dev/null +++ b/bundler/tests/.cache/deno/01815f0bfc7c38ccb35716808b637adb22658131.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/adler32.js + + +// Note: adler32 takes 12% for level 0 and 2% for level 6. +// It isn't worth it to make additional optimizations as in original. +// Small size is preferable. + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +export function adler32(adler, buf, len, pos) { + var s1 = (adler & 0xffff) |0, + s2 = ((adler >>> 16) & 0xffff) |0, + n = 0; + + while (len !== 0) { + // Set limit ~ twice less than 5552, to keep + // s2 in 31-bits, because we force signed ints. + // in other case %= will fail. + n = len > 2000 ? 2000 : len; + len -= n; + + do { + s1 = (s1 + buf[pos++]) |0; + s2 = (s2 + s1) |0; + } while (--n); + + s1 %= 65521; + s2 %= 65521; + } + + return (s1 | (s2 << 16)) |0; +} diff --git a/bundler/tests/.cache/deno/01dc08ae3d8fc0122627ab537a8afbd684ecbdea.ts b/bundler/tests/.cache/deno/01dc08ae3d8fc0122627ab537a8afbd684ecbdea.ts new file mode 100644 index 00000000000..5986a291249 --- /dev/null +++ b/bundler/tests/.cache/deno/01dc08ae3d8fc0122627ab537a8afbd684ecbdea.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isRegExp.js + + +export default function _isRegExp(x) { + return Object.prototype.toString.call(x) === '[object RegExp]'; +} diff --git a/bundler/tests/.cache/deno/020be644443b8947fbca69ea92ebd2ece761d2d0.ts b/bundler/tests/.cache/deno/020be644443b8947fbca69ea92ebd2ece761d2d0.ts new file mode 100644 index 00000000000..93325ac1b87 --- /dev/null +++ b/bundler/tests/.cache/deno/020be644443b8947fbca69ea92ebd2ece761d2d0.ts @@ -0,0 +1,110 @@ +// Loaded from https://deno.land/x/djwt@v1.9/_signature.ts + + +import type { Algorithm } from "./_algorithm.ts"; +import { + base64url, + convertHexToUint8Array, + HmacSha256, + HmacSha512, + RSA, +} from "./_depts.ts"; + +function assertNever(alg: never, message: string): never { + throw new RangeError(message); +} + +export function convertHexToBase64url(input: string): string { + return base64url.encode(convertHexToUint8Array(input)); +} + +/** + * Do a constant time string comparison. Always compare the complete strings + * against each other to get a constant time. This method does not short-cut + * if the two string's length differs. + * CREDIT: https://github.com/Bruce17/safe-compare + */ +function safeCompare(a: string, b: string) { + const strA = String(a); + const lenA = strA.length; + let strB = String(b); + let result = 0; + + if (lenA !== strB.length) { + strB = strA; + result = 1; + } + + for (var i = 0; i < lenA; i++) { + result |= (strA.charCodeAt(i) ^ strB.charCodeAt(i)); + } + + return result === 0; +} + +async function encrypt( + algorithm: Algorithm, + key: string, + message: string, +): Promise { + switch (algorithm) { + case "none": + return ""; + case "HS256": + return new HmacSha256(key).update(message).toString(); + case "HS512": + return new HmacSha512(key).update(message).toString(); + case "RS256": + return ( + await new RSA(RSA.parseKey(key)).sign(message, { hash: "sha256" }) + ).hex(); + default: + assertNever( + algorithm, + "no matching crypto algorithm in the header: " + algorithm, + ); + } +} + +export async function create( + algorithm: Algorithm, + key: string, + input: string, +): Promise { + return convertHexToBase64url(await encrypt(algorithm, key, input)); +} + +export async function verify({ + signature, + key, + algorithm, + signingInput, +}: { + signature: string; + key: string; + algorithm: Algorithm; + signingInput: string; +}): Promise { + switch (algorithm) { + case "none": + case "HS256": + case "HS512": { + return safeCompare( + signature, + (await encrypt(algorithm, key, signingInput)), + ); + } + case "RS256": { + return await new RSA(RSA.parseKey(key)).verify( + convertHexToUint8Array(signature), + signingInput, + { hash: "sha256" }, + ); + } + default: + assertNever( + algorithm, + "no matching crypto algorithm in the header: " + algorithm, + ); + } +} diff --git a/bundler/tests/.cache/deno/020e7c93fbe1e18a705db3506ade9f67fb9bf81b.ts b/bundler/tests/.cache/deno/020e7c93fbe1e18a705db3506ade9f67fb9bf81b.ts new file mode 100644 index 00000000000..cfb272b9367 --- /dev/null +++ b/bundler/tests/.cache/deno/020e7c93fbe1e18a705db3506ade9f67fb9bf81b.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/subscription/index.js + + +export { subscribe, createSourceEventStream } from './subscribe.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/022b6a900d4aee51362ccb4701c84a4d771ec2d3.ts b/bundler/tests/.cache/deno/022b6a900d4aee51362ccb4701c84a4d771ec2d3.ts new file mode 100644 index 00000000000..6eb6cbf9e3f --- /dev/null +++ b/bundler/tests/.cache/deno/022b6a900d4aee51362ccb4701c84a4d771ec2d3.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case/paramCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function paramCase(value: string, locale?: string): string { + return normalCase(value, locale, "-"); +} diff --git a/bundler/tests/.cache/deno/02afa43de67db405fc53f955efba75216682ef07.ts b/bundler/tests/.cache/deno/02afa43de67db405fc53f955efba75216682ef07.ts new file mode 100644 index 00000000000..f0372cd2000 --- /dev/null +++ b/bundler/tests/.cache/deno/02afa43de67db405fc53f955efba75216682ef07.ts @@ -0,0 +1,82 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/mark.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { repeat } from "./utils.ts"; + +export class Mark { + constructor( + public name: string, + public buffer: string, + public position: number, + public line: number, + public column: number, + ) {} + + public getSnippet(indent = 4, maxLength = 75): string | null { + if (!this.buffer) return null; + + let head = ""; + let start = this.position; + + while ( + start > 0 && + "\x00\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1 + ) { + start -= 1; + if (this.position - start > maxLength / 2 - 1) { + head = " ... "; + start += 5; + break; + } + } + + let tail = ""; + let end = this.position; + + while ( + end < this.buffer.length && + "\x00\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1 + ) { + end += 1; + if (end - this.position > maxLength / 2 - 1) { + tail = " ... "; + end -= 5; + break; + } + } + + const snippet = this.buffer.slice(start, end); + return `${repeat(" ", indent)}${head}${snippet}${tail}\n${ + repeat( + " ", + indent + this.position - start + head.length, + ) + }^`; + } + + public toString(compact?: boolean): string { + let snippet, + where = ""; + + if (this.name) { + where += `in "${this.name}" `; + } + + where += `at line ${this.line + 1}, column ${this.column + 1}`; + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += `:\n${snippet}`; + } + } + + return where; + } +} diff --git a/bundler/tests/.cache/deno/02bfa7ac84cde68442aeb8e2b62e0ec94dbd0a41.ts b/bundler/tests/.cache/deno/02bfa7ac84cde68442aeb8e2b62e0ec94dbd0a41.ts new file mode 100644 index 00000000000..fd340e718f6 --- /dev/null +++ b/bundler/tests/.cache/deno/02bfa7ac84cde68442aeb8e2b62e0ec94dbd0a41.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.80.0/path/glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/02f1f752554e9c3f05fe3472f405d989a016815d.ts b/bundler/tests/.cache/deno/02f1f752554e9c3f05fe3472f405d989a016815d.ts new file mode 100644 index 00000000000..80ae80fd83d --- /dev/null +++ b/bundler/tests/.cache/deno/02f1f752554e9c3f05fe3472f405d989a016815d.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/equals.js + + +import _curry2 from './internal/_curry2.js'; +import _equals from './internal/_equals.js'; + + +/** + * Returns `true` if its arguments are equivalent, `false` otherwise. Handles + * cyclical data structures. + * + * Dispatches symmetrically to the `equals` methods of both arguments, if + * present. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> b -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * R.equals(1, 1); //=> true + * R.equals(1, '1'); //=> false + * R.equals([1, 2, 3], [1, 2, 3]); //=> true + * + * const a = {}; a.v = a; + * const b = {}; b.v = b; + * R.equals(a, b); //=> true + */ +var equals = _curry2(function equals(a, b) { + return _equals(a, b, [], []); +}); +export default equals; diff --git a/bundler/tests/.cache/deno/02fec2e21e7ad66e6023abe2223435a89f34b31b.ts b/bundler/tests/.cache/deno/02fec2e21e7ad66e6023abe2223435a89f34b31b.ts new file mode 100644 index 00000000000..e930aa3dec3 --- /dev/null +++ b/bundler/tests/.cache/deno/02fec2e21e7ad66e6023abe2223435a89f34b31b.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isUUID.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const uuid = { + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i, +}; + +export const isUUID = (str: string, version: 3 | 4 | 5 | 'all' = 'all') => { + assertString(str); + const pattern = (uuid as any)[version]; + return pattern && pattern.test(str); +}; diff --git a/bundler/tests/.cache/deno/03a2696060909a82e9151b4f1aced5810a318823.ts b/bundler/tests/.cache/deno/03a2696060909a82e9151b4f1aced5810a318823.ts new file mode 100644 index 00000000000..cd7b1f39209 --- /dev/null +++ b/bundler/tests/.cache/deno/03a2696060909a82e9151b4f1aced5810a318823.ts @@ -0,0 +1,512 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/iobuffer/IOBuffer.ts + + +import { decode, encode } from './utf8.ts'; + +const defaultByteLength = 1024 * 8; + +type InputData = number | ArrayBufferLike | ArrayBufferView | IOBuffer; + +interface IOBufferOptions { + /** + * Ignore the first n bytes of the ArrayBuffer. + */ + offset?: number; +} + +export class IOBuffer { + /** + * Reference to the internal ArrayBuffer object. + */ + public buffer: ArrayBufferLike; + + /** + * Byte length of the internal ArrayBuffer. + */ + public byteLength: number; + + /** + * Byte offset of the internal ArrayBuffer. + */ + public byteOffset: number; + + /** + * Byte length of the internal ArrayBuffer. + */ + public length: number; + + /** + * The current offset of the buffer's pointer. + */ + public offset: number; + + private lastWrittenByte: number; + private littleEndian: boolean; + + private _data: DataView; + private _mark: number; + private _marks: number[]; + + /** + * @param data - The data to construct the IOBuffer with. + * If data is a number, it will be the new buffer's length
+ * If data is `undefined`, the buffer will be initialized with a default length of 8Kb
+ * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array) or an IOBuffer instance + * a view will be created over the underlying ArrayBuffer. + * @param options + */ + public constructor( + data: InputData = defaultByteLength, + options: IOBufferOptions = {}, + ) { + let dataIsGiven = false; + if (typeof data === 'number') { + data = new ArrayBuffer(data); + } else { + dataIsGiven = true; + this.lastWrittenByte = data.byteLength; + } + + const offset = options.offset ? options.offset >>> 0 : 0; + const byteLength = data.byteLength - offset; + let dvOffset = offset; + if (ArrayBuffer.isView(data) || data instanceof IOBuffer) { + if (data.byteLength !== data.buffer.byteLength) { + dvOffset = data.byteOffset + offset; + } + data = data.buffer; + } + if (dataIsGiven) { + this.lastWrittenByte = byteLength; + } else { + this.lastWrittenByte = 0; + } + this.buffer = data; + this.length = byteLength; + this.byteLength = byteLength; + this.byteOffset = dvOffset; + this.offset = 0; + this.littleEndian = true; + this._data = new DataView(this.buffer, dvOffset, byteLength); + this._mark = 0; + this._marks = []; + } + + /** + * Checks if the memory allocated to the buffer is sufficient to store more + * bytes after the offset. + * @param byteLength - The needed memory in bytes. + * @returns `true` if there is sufficient space and `false` otherwise. + */ + public available(byteLength = 1): boolean { + return this.offset + byteLength <= this.length; + } + + /** + * Check if little-endian mode is used for reading and writing multi-byte + * values. + * @returns `true` if little-endian mode is used, `false` otherwise. + */ + public isLittleEndian(): boolean { + return this.littleEndian; + } + + /** + * Set little-endian mode for reading and writing multi-byte values. + */ + public setLittleEndian(): this { + this.littleEndian = true; + return this; + } + + /** + * Check if big-endian mode is used for reading and writing multi-byte values. + * @returns `true` if big-endian mode is used, `false` otherwise. + */ + public isBigEndian(): boolean { + return !this.littleEndian; + } + + /** + * Switches to big-endian mode for reading and writing multi-byte values. + */ + public setBigEndian(): this { + this.littleEndian = false; + return this; + } + + /** + * Move the pointer n bytes forward. + * @param n - Number of bytes to skip. + */ + public skip(n = 1): this { + this.offset += n; + return this; + } + + /** + * Move the pointer to the given offset. + * @param offset + */ + public seek(offset: number): this { + this.offset = offset; + return this; + } + + /** + * Store the current pointer offset. + * @see {@link IOBuffer#reset} + */ + public mark(): this { + this._mark = this.offset; + return this; + } + + /** + * Move the pointer back to the last pointer offset set by mark. + * @see {@link IOBuffer#mark} + */ + public reset(): this { + this.offset = this._mark; + return this; + } + + /** + * Push the current pointer offset to the mark stack. + * @see {@link IOBuffer#popMark} + */ + public pushMark(): this { + this._marks.push(this.offset); + return this; + } + + /** + * Pop the last pointer offset from the mark stack, and set the current + * pointer offset to the popped value. + * @see {@link IOBuffer#pushMark} + */ + public popMark(): this { + const offset = this._marks.pop(); + if (offset === undefined) { + throw new Error('Mark stack empty'); + } + this.seek(offset); + return this; + } + + /** + * Move the pointer offset back to 0. + */ + public rewind(): this { + this.offset = 0; + return this; + } + + /** + * Make sure the buffer has sufficient memory to write a given byteLength at + * the current pointer offset. + * If the buffer's memory is insufficient, this method will create a new + * buffer (a copy) with a length that is twice (byteLength + current offset). + * @param byteLength + */ + public ensureAvailable(byteLength = 1): this { + if (!this.available(byteLength)) { + const lengthNeeded = this.offset + byteLength; + const newLength = lengthNeeded * 2; + const newArray = new Uint8Array(newLength); + newArray.set(new Uint8Array(this.buffer)); + this.buffer = newArray.buffer; + this.length = this.byteLength = newLength; + this._data = new DataView(this.buffer); + } + return this; + } + + /** + * Read a byte and return false if the byte's value is 0, or true otherwise. + * Moves pointer forward by one byte. + */ + public readBoolean(): boolean { + return this.readUint8() !== 0; + } + + /** + * Read a signed 8-bit integer and move pointer forward by 1 byte. + */ + public readInt8(): number { + return this._data.getInt8(this.offset++); + } + + /** + * Read an unsigned 8-bit integer and move pointer forward by 1 byte. + */ + public readUint8(): number { + return this._data.getUint8(this.offset++); + } + + /** + * Alias for {@link IOBuffer#readUint8}. + */ + public readByte(): number { + return this.readUint8(); + } + + /** + * Read `n` bytes and move pointer forward by `n` bytes. + */ + public readBytes(n = 1): Uint8Array { + const bytes = new Uint8Array(n); + for (let i = 0; i < n; i++) { + bytes[i] = this.readByte(); + } + return bytes; + } + + /** + * Read a 16-bit signed integer and move pointer forward by 2 bytes. + */ + public readInt16(): number { + const value = this._data.getInt16(this.offset, this.littleEndian); + this.offset += 2; + return value; + } + + /** + * Read a 16-bit unsigned integer and move pointer forward by 2 bytes. + */ + public readUint16(): number { + const value = this._data.getUint16(this.offset, this.littleEndian); + this.offset += 2; + return value; + } + + /** + * Read a 32-bit signed integer and move pointer forward by 4 bytes. + */ + public readInt32(): number { + const value = this._data.getInt32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + + /** + * Read a 32-bit unsigned integer and move pointer forward by 4 bytes. + */ + public readUint32(): number { + const value = this._data.getUint32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + + /** + * Read a 32-bit floating number and move pointer forward by 4 bytes. + */ + public readFloat32(): number { + const value = this._data.getFloat32(this.offset, this.littleEndian); + this.offset += 4; + return value; + } + + /** + * Read a 64-bit floating number and move pointer forward by 8 bytes. + */ + public readFloat64(): number { + const value = this._data.getFloat64(this.offset, this.littleEndian); + this.offset += 8; + return value; + } + + /** + * Read a 1-byte ASCII character and move pointer forward by 1 byte. + */ + public readChar(): string { + return String.fromCharCode(this.readInt8()); + } + + /** + * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes. + */ + public readChars(n = 1): string { + let result = ''; + for (let i = 0; i < n; i++) { + result += this.readChar(); + } + return result; + } + + /** + * Read the next `n` bytes, return a UTF-8 decoded string and move pointer + * forward by `n` bytes. + */ + public readUtf8(n = 1): string { + return decode(this.readBytes(n)); + } + + /** + * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer + * forward by 1 byte. + */ + public writeBoolean(value: unknown): this { + this.writeUint8(value ? 0xff : 0x00); + return this; + } + + /** + * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte. + */ + public writeInt8(value: number): this { + this.ensureAvailable(1); + this._data.setInt8(this.offset++, value); + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as an 8-bit unsigned integer and move pointer forward by 1 + * byte. + */ + public writeUint8(value: number): this { + this.ensureAvailable(1); + this._data.setUint8(this.offset++, value); + this._updateLastWrittenByte(); + return this; + } + + /** + * An alias for {@link IOBuffer#writeUint8}. + */ + public writeByte(value: number): this { + return this.writeUint8(value); + } + + /** + * Write all elements of `bytes` as uint8 values and move pointer forward by + * `bytes.length` bytes. + */ + public writeBytes(bytes: ArrayLike): this { + this.ensureAvailable(bytes.length); + for (let i = 0; i < bytes.length; i++) { + this._data.setUint8(this.offset++, bytes[i]); + } + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 16-bit signed integer and move pointer forward by 2 + * bytes. + */ + public writeInt16(value: number): this { + this.ensureAvailable(2); + this._data.setInt16(this.offset, value, this.littleEndian); + this.offset += 2; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 16-bit unsigned integer and move pointer forward by 2 + * bytes. + */ + public writeUint16(value: number): this { + this.ensureAvailable(2); + this._data.setUint16(this.offset, value, this.littleEndian); + this.offset += 2; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 32-bit signed integer and move pointer forward by 4 + * bytes. + */ + public writeInt32(value: number): this { + this.ensureAvailable(4); + this._data.setInt32(this.offset, value, this.littleEndian); + this.offset += 4; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 32-bit unsigned integer and move pointer forward by 4 + * bytes. + */ + public writeUint32(value: number): this { + this.ensureAvailable(4); + this._data.setUint32(this.offset, value, this.littleEndian); + this.offset += 4; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 32-bit floating number and move pointer forward by 4 + * bytes. + */ + public writeFloat32(value: number): this { + this.ensureAvailable(4); + this._data.setFloat32(this.offset, value, this.littleEndian); + this.offset += 4; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write `value` as a 64-bit floating number and move pointer forward by 8 + * bytes. + */ + public writeFloat64(value: number): this { + this.ensureAvailable(8); + this._data.setFloat64(this.offset, value, this.littleEndian); + this.offset += 8; + this._updateLastWrittenByte(); + return this; + } + + /** + * Write the charCode of `str`'s first character as an 8-bit unsigned integer + * and move pointer forward by 1 byte. + */ + public writeChar(str: string): this { + return this.writeUint8(str.charCodeAt(0)); + } + + /** + * Write the charCodes of all `str`'s characters as 8-bit unsigned integers + * and move pointer forward by `str.length` bytes. + */ + public writeChars(str: string): this { + for (let i = 0; i < str.length; i++) { + this.writeUint8(str.charCodeAt(i)); + } + return this; + } + + /** + * UTF-8 encode and write `str` to the current pointer offset and move pointer + * forward according to the encoded length. + */ + public writeUtf8(str: string): this { + return this.writeBytes(encode(str)); + } + + /** + * Export a Uint8Array view of the internal buffer. + * The view starts at the byte offset and its length + * is calculated to stop at the last written byte or the original length. + */ + public toArray(): Uint8Array { + return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte); + } + + /** + * Update the last written byte offset + * @private + */ + private _updateLastWrittenByte(): void { + if (this.offset > this.lastWrittenByte) { + this.lastWrittenByte = this.offset; + } + } +} diff --git a/bundler/tests/.cache/deno/03afd40f15323e4a10de83fb16b022ef4d0fa49c.ts b/bundler/tests/.cache/deno/03afd40f15323e4a10de83fb16b022ef4d0fa49c.ts new file mode 100644 index 00000000000..ab86cddc14e --- /dev/null +++ b/bundler/tests/.cache/deno/03afd40f15323e4a10de83fb16b022ef4d0fa49c.ts @@ -0,0 +1,128 @@ +// Loaded from https://deno.land/x/mysql/src/packets/parsers/result.ts + + +import type { BufferReader } from "../../buffer.ts"; +import { + MYSQL_TYPE_DATE, + MYSQL_TYPE_DATETIME, + MYSQL_TYPE_DATETIME2, + MYSQL_TYPE_DECIMAL, + MYSQL_TYPE_DOUBLE, + MYSQL_TYPE_FLOAT, + MYSQL_TYPE_INT24, + MYSQL_TYPE_LONG, + MYSQL_TYPE_LONGLONG, + MYSQL_TYPE_NEWDATE, + MYSQL_TYPE_NEWDECIMAL, + MYSQL_TYPE_SHORT, + MYSQL_TYPE_STRING, + MYSQL_TYPE_TIME, + MYSQL_TYPE_TIME2, + MYSQL_TYPE_TIMESTAMP, + MYSQL_TYPE_TIMESTAMP2, + MYSQL_TYPE_TINY, + MYSQL_TYPE_VAR_STRING, + MYSQL_TYPE_VARCHAR, +} from "../../constant/mysql_types.ts"; + +/** @ignore */ +export interface FieldInfo { + catalog: string; + schema: string; + table: string; + originTable: string; + name: string; + originName: string; + encoding: number; + fieldLen: number; + fieldType: number; + fieldFlag: number; + decimals: number; + defaultVal: string; +} + +/** @ignore */ +export function parseField(reader: BufferReader): FieldInfo { + const catalog = reader.readLenCodeString()!; + const schema = reader.readLenCodeString()!; + const table = reader.readLenCodeString()!; + const originTable = reader.readLenCodeString()!; + const name = reader.readLenCodeString()!; + const originName = reader.readLenCodeString()!; + reader.skip(1); + const encoding = reader.readUint16()!; + const fieldLen = reader.readUint32()!; + const fieldType = reader.readUint8()!; + const fieldFlag = reader.readUint16()!; + const decimals = reader.readUint8()!; + reader.skip(1); + const defaultVal = reader.readLenCodeString()!; + return { + catalog, + schema, + table, + originName, + fieldFlag, + originTable, + fieldLen, + name, + fieldType, + encoding, + decimals, + defaultVal, + }; +} + +/** @ignore */ +export function parseRow(reader: BufferReader, fields: FieldInfo[]): any { + const row: any = {}; + for (const field of fields) { + const name = field.name; + const val = reader.readLenCodeString(); + row[name] = val === null ? null : convertType(field, val); + } + return row; +} + +/** @ignore */ +function convertType(field: FieldInfo, val: string): any { + const { fieldType, fieldLen } = field; + switch (fieldType) { + case MYSQL_TYPE_DECIMAL: + case MYSQL_TYPE_DOUBLE: + case MYSQL_TYPE_FLOAT: + case MYSQL_TYPE_DATETIME2: + return parseFloat(val); + case MYSQL_TYPE_NEWDECIMAL: + return val; // #42 MySQL's decimal type cannot be accurately represented by the Number. + case MYSQL_TYPE_TINY: + case MYSQL_TYPE_SHORT: + case MYSQL_TYPE_LONG: + case MYSQL_TYPE_INT24: + return parseInt(val); + case MYSQL_TYPE_LONGLONG: + if ( + Number(val) < Number.MIN_SAFE_INTEGER || + Number(val) > Number.MAX_SAFE_INTEGER + ) { + return BigInt(val); + } else { + return parseInt(val); + } + case MYSQL_TYPE_VARCHAR: + case MYSQL_TYPE_VAR_STRING: + case MYSQL_TYPE_STRING: + case MYSQL_TYPE_TIME: + case MYSQL_TYPE_TIME2: + return val; + case MYSQL_TYPE_DATE: + case MYSQL_TYPE_TIMESTAMP: + case MYSQL_TYPE_DATETIME: + case MYSQL_TYPE_NEWDATE: + case MYSQL_TYPE_TIMESTAMP2: + case MYSQL_TYPE_DATETIME2: + return new Date(val); + default: + return val; + } +} diff --git a/bundler/tests/.cache/deno/04182eda558f91c98c91784a313ad88c9cea253f.ts b/bundler/tests/.cache/deno/04182eda558f91c98c91784a313ad88c9cea253f.ts new file mode 100644 index 00000000000..1e2a211c38d --- /dev/null +++ b/bundler/tests/.cache/deno/04182eda558f91c98c91784a313ad88c9cea253f.ts @@ -0,0 +1,175 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/collection/collection.ts + + +import { Bson } from "../../deps.ts"; +import { WireProtocol } from "../protocol/mod.ts"; +import { + CountOptions, + DeleteOptions, + DistinctOptions, + Document, + DropOptions, + FindOptions, + InsertOptions, + UpdateOptions, +} from "../types.ts"; +import { FindCursor } from "./commands/find.ts"; +import { AggregateCursor } from "./commands/aggregate.ts"; +import { update } from "./commands/update.ts"; + +export class Collection { + #protocol: WireProtocol; + #dbName: string; + + constructor(protocol: WireProtocol, dbName: string, readonly name: string) { + this.#protocol = protocol; + this.#dbName = dbName; + } + + find(filter?: Document, options?: FindOptions): FindCursor { + return new FindCursor({ + filter, + protocol: this.#protocol, + collectionName: this.name, + dbName: this.#dbName, + options: options ?? {}, + }); + } + + async findOne( + filter?: Document, + options?: FindOptions, + ): Promise { + const cursor = this.find(filter, options); + return await cursor.next(); + } + + async count(filter?: Document, options?: CountOptions): Promise { + const res = await this.#protocol.commandSingle(this.#dbName, { + count: this.name, + query: filter, + ...options, + }); + const { n, ok } = res; + if (ok === 1) { + return n; + } else { + return 0; + } + } + + async insertOne(doc: Document, options?: InsertOptions) { + const { insertedIds } = await this.insertMany([doc], options); + return insertedIds[0]; + } + + async insert(docs: Document | Document[], options?: InsertOptions) { + docs = Array.isArray(docs) ? docs : [docs]; + return this.insertMany(docs as Document[], options); + } + + async insertMany( + docs: Document[], + options?: InsertOptions, + ): Promise<{ insertedIds: Document[]; insertedCount: number }> { + const insertedIds = docs.map((doc) => { + if (!doc._id) { + doc._id = new Bson.ObjectID(); + } + return doc._id; + }); + const res = await this.#protocol.commandSingle(this.#dbName, { + insert: this.name, + documents: docs, + ordered: options?.ordered ?? true, + writeConcern: options?.writeConcern, + bypassDocumentValidation: options?.bypassDocumentValidation, + comment: options?.comment, + }); + const { writeErrors } = res; + if (writeErrors) { + const [{ errmsg }] = writeErrors; + throw new Error(errmsg); + } + return { + insertedIds, + insertedCount: res.n, + }; + } + + async updateOne(filter: Document, update: Document, options?: UpdateOptions) { + const { + upsertedIds = [], + upsertedCount, + matchedCount, + modifiedCount, + } = await this.updateMany(filter, update, { + ...options, + multi: false, + }); + return { + upsertedId: upsertedIds ? upsertedIds[0] : undefined, + upsertedCount, + matchedCount, + modifiedCount, + }; + } + + async updateMany(filter: Document, doc: Document, options?: UpdateOptions) { + return await update(this.#protocol, this.#dbName, this.name, filter, doc, { + ...options, + multi: options?.multi ?? true, + }); + } + + async deleteMany(filter: Document, options?: DeleteOptions): Promise { + const res = await this.#protocol.commandSingle(this.#dbName, { + delete: this.name, + deletes: [ + { + q: filter, + limit: options?.limit ?? 0, + collation: options?.collation, + hint: options?.hint, + comment: options?.comment, + }, + ], + ordered: options?.ordered ?? true, + writeConcern: options?.writeConcern, + }); + return res.n; + } + + delete = this.deleteMany; + + async deleteOne(filter: Document, options?: DeleteOptions) { + return this.delete(filter, { ...options, limit: 1 }); + } + + async drop(options?: DropOptions): Promise { + const res = await this.#protocol.commandSingle(this.#dbName, { + drop: this.name, + ...options, + }); + } + + async distinct(key: string, query?: Document, options?: DistinctOptions) { + const { values } = await this.#protocol.commandSingle(this.#dbName, { + distinct: this.name, + key, + query, + ...options, + }); + return values; + } + + aggregate(pipeline: Document[], options?: any): AggregateCursor { + return new AggregateCursor({ + pipeline, + protocol: this.#protocol, + dbName: this.#dbName, + collectionName: this.name, + options, + }); + } +} diff --git a/bundler/tests/.cache/deno/042e5ed5300c9e5f707cd1fb94bbe2a7973adc82.ts b/bundler/tests/.cache/deno/042e5ed5300c9e5f707cd1fb94bbe2a7973adc82.ts new file mode 100644 index 00000000000..1406a564a24 --- /dev/null +++ b/bundler/tests/.cache/deno/042e5ed5300c9e5f707cd1fb94bbe2a7973adc82.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lensProp.js + + +import _curry1 from './internal/_curry1.js'; +import assoc from './assoc.js'; +import lens from './lens.js'; +import prop from './prop.js'; + + +/** + * Returns a lens whose focus is the specified property. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig String -> Lens s a + * @param {String} k + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * const xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +var lensProp = _curry1(function lensProp(k) { + return lens(prop(k), assoc(k)); +}); +export default lensProp; diff --git a/bundler/tests/.cache/deno/0487c855c9f9ad28ad81c1a9f1e7446b2a188d09.ts b/bundler/tests/.cache/deno/0487c855c9f9ad28ad81c1a9f1e7446b2a188d09.ts new file mode 100644 index 00000000000..c98e352fca3 --- /dev/null +++ b/bundler/tests/.cache/deno/0487c855c9f9ad28ad81c1a9f1e7446b2a188d09.ts @@ -0,0 +1,104 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "./error.ts"; +import type { KindType, Type } from "./type.ts"; +import type { Any, ArrayObject } from "./utils.ts"; + +function compileList( + schema: Schema, + name: "implicit" | "explicit", + result: Type[], +): Type[] { + const exclude: number[] = []; + + for (const includedSchema of schema.include) { + result = compileList(includedSchema, name, result); + } + + for (const currentType of schema[name]) { + for ( + let previousIndex = 0; + previousIndex < result.length; + previousIndex++ + ) { + const previousType = result[previousIndex]; + if ( + previousType.tag === currentType.tag && + previousType.kind === currentType.kind + ) { + exclude.push(previousIndex); + } + } + + result.push(currentType); + } + + return result.filter((type, index): unknown => !exclude.includes(index)); +} + +export type TypeMap = { [k in KindType | "fallback"]: ArrayObject }; +function compileMap(...typesList: Type[][]): TypeMap { + const result: TypeMap = { + fallback: {}, + mapping: {}, + scalar: {}, + sequence: {}, + }; + + for (const types of typesList) { + for (const type of types) { + if (type.kind !== null) { + result[type.kind][type.tag] = result["fallback"][type.tag] = type; + } + } + } + return result; +} + +export class Schema implements SchemaDefinition { + public static SCHEMA_DEFAULT?: Schema; + + public implicit: Type[]; + public explicit: Type[]; + public include: Schema[]; + + public compiledImplicit: Type[]; + public compiledExplicit: Type[]; + public compiledTypeMap: TypeMap; + + constructor(definition: SchemaDefinition) { + this.explicit = definition.explicit || []; + this.implicit = definition.implicit || []; + this.include = definition.include || []; + + for (const type of this.implicit) { + if (type.loadKind && type.loadKind !== "scalar") { + throw new YAMLError( + // eslint-disable-next-line max-len + "There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.", + ); + } + } + + this.compiledImplicit = compileList(this, "implicit", []); + this.compiledExplicit = compileList(this, "explicit", []); + this.compiledTypeMap = compileMap( + this.compiledImplicit, + this.compiledExplicit, + ); + } + + public static create(): void {} +} + +export interface SchemaDefinition { + implicit?: Any[]; + explicit?: Type[]; + include?: Schema[]; +} diff --git a/bundler/tests/.cache/deno/04c5beb117daf148add8d6428102a65050829835.ts b/bundler/tests/.cache/deno/04c5beb117daf148add8d6428102a65050829835.ts new file mode 100644 index 00000000000..b83e02673f0 --- /dev/null +++ b/bundler/tests/.cache/deno/04c5beb117daf148add8d6428102a65050829835.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pipe.js + + +import _arity from './internal/_arity.js'; +import _pipe from './internal/_pipe.js'; +import reduce from './reduce.js'; +import tail from './tail.js'; + + +/** + * Performs left-to-right function composition. The first argument may have + * any arity; the remaining arguments must be unary. + * + * In some libraries this function is named `sequence`. + * + * **Note:** The result of pipe is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) + * @param {...Function} functions + * @return {Function} + * @see R.compose + * @example + * + * const f = R.pipe(Math.pow, R.negate, R.inc); + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b))) + * @symb R.pipe(f, g, h)(a)(b) = h(g(f(a)))(b) + */ +export default function pipe() { + if (arguments.length === 0) { + throw new Error('pipe requires at least one argument'); + } + return _arity( + arguments[0].length, + reduce(_pipe, arguments[0], tail(arguments)) + ); +} diff --git a/bundler/tests/.cache/deno/04d2cd119ea6b5f6e98c4d7a3c012cac22088f30.ts b/bundler/tests/.cache/deno/04d2cd119ea6b5f6e98c4d7a3c012cac22088f30.ts new file mode 100644 index 00000000000..159c5a8a804 --- /dev/null +++ b/bundler/tests/.cache/deno/04d2cd119ea6b5f6e98c4d7a3c012cac22088f30.ts @@ -0,0 +1,192 @@ +// Loaded from https://deno.land/std/log/logger.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, getLevelName, LogLevels } from "./levels.ts"; +import type { LevelName } from "./levels.ts"; +import type { BaseHandler } from "./handlers.ts"; + +// deno-lint-ignore no-explicit-any +export type GenericFunction = (...args: any[]) => any; + +export interface LogRecordOptions { + msg: string; + args: unknown[]; + level: number; + loggerName: string; +} + +export class LogRecord { + readonly msg: string; + #args: unknown[]; + #datetime: Date; + readonly level: number; + readonly levelName: string; + readonly loggerName: string; + + constructor(options: LogRecordOptions) { + this.msg = options.msg; + this.#args = [...options.args]; + this.level = options.level; + this.loggerName = options.loggerName; + this.#datetime = new Date(); + this.levelName = getLevelName(options.level); + } + get args(): unknown[] { + return [...this.#args]; + } + get datetime(): Date { + return new Date(this.#datetime.getTime()); + } +} + +export interface LoggerOptions { + handlers?: BaseHandler[]; +} + +export class Logger { + #level: LogLevels; + #handlers: BaseHandler[]; + readonly #loggerName: string; + + constructor( + loggerName: string, + levelName: LevelName, + options: LoggerOptions = {}, + ) { + this.#loggerName = loggerName; + this.#level = getLevelByName(levelName); + this.#handlers = options.handlers || []; + } + + get level(): LogLevels { + return this.#level; + } + set level(level: LogLevels) { + this.#level = level; + } + + get levelName(): LevelName { + return getLevelName(this.#level); + } + set levelName(levelName: LevelName) { + this.#level = getLevelByName(levelName); + } + + get loggerName(): string { + return this.#loggerName; + } + + set handlers(hndls: BaseHandler[]) { + this.#handlers = hndls; + } + get handlers(): BaseHandler[] { + return this.#handlers; + } + + /** If the level of the logger is greater than the level to log, then nothing + * is logged, otherwise a log record is passed to each log handler. `msg` data + * passed in is returned. If a function is passed in, it is only evaluated + * if the msg will be logged and the return value will be the result of the + * function, not the function itself, unless the function isn't called, in which + * case undefined is returned. All types are coerced to strings for logging. + */ + private _log( + level: number, + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + if (this.level > level) { + return msg instanceof Function ? undefined : msg; + } + + let fnResult: T | undefined; + let logMessage: string; + if (msg instanceof Function) { + fnResult = msg(); + logMessage = this.asString(fnResult); + } else { + logMessage = this.asString(msg); + } + const record: LogRecord = new LogRecord({ + msg: logMessage, + args: args, + level: level, + loggerName: this.loggerName, + }); + + this.#handlers.forEach((handler): void => { + handler.handle(record); + }); + + return msg instanceof Function ? fnResult : msg; + } + + asString(data: unknown): string { + if (typeof data === "string") { + return data; + } else if ( + data === null || + typeof data === "number" || + typeof data === "bigint" || + typeof data === "boolean" || + typeof data === "undefined" || + typeof data === "symbol" + ) { + return String(data); + } else if (data instanceof Error) { + return data.stack!; + } else if (typeof data === "object") { + return JSON.stringify(data); + } + return "undefined"; + } + + debug(msg: () => T, ...args: unknown[]): T | undefined; + debug(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.DEBUG, msg, ...args); + } + + info(msg: () => T, ...args: unknown[]): T | undefined; + info(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.INFO, msg, ...args); + } + + warning(msg: () => T, ...args: unknown[]): T | undefined; + warning(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.WARNING, msg, ...args); + } + + error(msg: () => T, ...args: unknown[]): T | undefined; + error(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.ERROR, msg, ...args); + } + + critical(msg: () => T, ...args: unknown[]): T | undefined; + critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] + ): T; + critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.CRITICAL, msg, ...args); + } +} diff --git a/bundler/tests/.cache/deno/04f2435ab4500b55ef683496a38c20a92bb0b21c.ts b/bundler/tests/.cache/deno/04f2435ab4500b55ef683496a38c20a92bb0b21c.ts new file mode 100644 index 00000000000..80934a820bd --- /dev/null +++ b/bundler/tests/.cache/deno/04f2435ab4500b55ef683496a38c20a92bb0b21c.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/error.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Mark } from "./mark.ts"; + +export class YAMLError extends Error { + constructor( + message = "(unknown reason)", + protected mark: Mark | string = "", + ) { + super(`${message} ${mark}`); + this.name = this.constructor.name; + } + + public toString(_compact: boolean): string { + return `${this.name}: ${this.message} ${this.mark}`; + } +} diff --git a/bundler/tests/.cache/deno/055c51823e86235b0076115fa0fcfa6a793db7f5.ts b/bundler/tests/.cache/deno/055c51823e86235b0076115fa0fcfa6a793db7f5.ts new file mode 100644 index 00000000000..f9c44ad8e59 --- /dev/null +++ b/bundler/tests/.cache/deno/055c51823e86235b0076115fa0fcfa6a793db7f5.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.73.0/io/ioutil.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/056fcea72bc25d7fa9eafac174ce56b80cf99571.ts b/bundler/tests/.cache/deno/056fcea72bc25d7fa9eafac174ce56b80cf99571.ts new file mode 100644 index 00000000000..3d67887d7a1 --- /dev/null +++ b/bundler/tests/.cache/deno/056fcea72bc25d7fa9eafac174ce56b80cf99571.ts @@ -0,0 +1,353 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/cookies.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +// This was heavily influenced by +// [cookies](https://github.com/pillarjs/cookies/blob/master/index.js) + +import type { KeyStack } from "./keyStack.ts"; +import type { Request } from "./request.ts"; +import type { Response } from "./response.ts"; + +export interface CookiesOptions { + keys?: KeyStack; + secure?: boolean; +} + +export interface CookiesGetOptions { + signed?: boolean; +} + +export interface CookiesSetDeleteOptions { + domain?: string; + expires?: Date; + httpOnly?: boolean; + maxAge?: number; + overwrite?: boolean; + path?: string; + secure?: boolean; + sameSite?: "strict" | "lax" | "none" | boolean; + signed?: boolean; +} + +type CookieAttributes = CookiesSetDeleteOptions; + +const matchCache: Record = {}; + +// deno-lint-ignore no-control-regex +const FIELD_CONTENT_REGEXP = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; +const KEY_REGEXP = /(?:^|;) *([^=]*)=[^;]*/g; +const SAME_SITE_REGEXP = /^(?:lax|none|strict)$/i; + +function getPattern(name: string): RegExp { + if (name in matchCache) { + return matchCache[name]; + } + + return matchCache[name] = new RegExp( + `(?:^|;) *${name.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}=([^;]*)`, + ); +} + +function pushCookie(headers: string[], cookie: Cookie): void { + if (cookie.overwrite) { + for (let i = headers.length - 1; i >= 0; i--) { + if (headers[i].indexOf(`${cookie.name}=`) === 0) { + headers.splice(i, 1); + } + } + } + headers.push(cookie.toHeader()); +} + +function validateCookieProperty( + key: string, + value: string | undefined | null, +): void { + if (value && !FIELD_CONTENT_REGEXP.test(value)) { + throw new TypeError(`The ${key} of the cookie (${value}) is invalid.`); + } +} + +class Cookie implements CookieAttributes { + domain?: string; + expires?: Date; + httpOnly = true; + maxAge?: number; + name: string; + overwrite = false; + path = "/"; + sameSite: "strict" | "lax" | "none" | boolean = false; + secure = false; + signed?: boolean; + value: string; + + /** A logical representation of a cookie, used to internally manage the + * cookie instances. */ + constructor( + name: string, + value: string | null, + attributes: CookieAttributes, + ) { + validateCookieProperty("name", name); + validateCookieProperty("value", value); + this.name = name; + this.value = value ?? ""; + Object.assign(this, attributes); + if (!this.value) { + this.expires = new Date(0); + this.maxAge = undefined; + } + + validateCookieProperty("path", this.path); + validateCookieProperty("domain", this.domain); + if ( + this.sameSite && typeof this.sameSite === "string" && + !SAME_SITE_REGEXP.test(this.sameSite) + ) { + throw new TypeError( + `The sameSite of the cookie ("${this.sameSite}") is invalid.`, + ); + } + } + + toHeader(): string { + let header = this.toString(); + if (this.maxAge) { + this.expires = new Date(Date.now() + (this.maxAge * 1000)); + } + + if (this.path) { + header += `; path=${this.path}`; + } + if (this.expires) { + header += `; expires=${this.expires.toUTCString()}`; + } + if (this.domain) { + header += `; domain=${this.domain}`; + } + if (this.sameSite) { + header += `; samesite=${ + this.sameSite === true ? "strict" : this.sameSite.toLowerCase() + }`; + } + if (this.secure) { + header += "; secure"; + } + if (this.httpOnly) { + header += "; httponly"; + } + + return header; + } + + toString(): string { + return `${this.name}=${this.value}`; + } +} + +/** An interface which allows setting and accessing cookies related to both the + * current request and response. */ +export class Cookies { + #cookieKeys?: string[]; + #keys?: KeyStack; + #request: Request; + #response: Response; + #secure?: boolean; + + #requestKeys = (): string[] => { + if (this.#cookieKeys) { + return this.#cookieKeys; + } + const result = this.#cookieKeys = [] as string[]; + const header = this.#request.headers.get("cookie"); + if (!header) { + return result; + } + let matches: RegExpExecArray | null; + while ((matches = KEY_REGEXP.exec(header))) { + const [, key] = matches; + result.push(key); + } + return result; + }; + + constructor( + request: Request, + response: Response, + options: CookiesOptions = {}, + ) { + const { keys, secure } = options; + this.#keys = keys; + this.#request = request; + this.#response = response; + this.#secure = secure; + } + + /** Set a cookie to be deleted in the response. This is a "shortcut" to + * `.set(name, null, options?)`. */ + delete(name: string, options: CookiesSetDeleteOptions = {}): boolean { + this.set(name, null, options); + return true; + } + + /** Iterate over the request's cookies, yielding up a tuple containing the + * key and the value. + * + * If there are keys set on the application, only keys and values that are + * properly signed will be returned. */ + *entries(): IterableIterator<[string, string]> { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield [key, value]; + } + } + } + + forEach( + callback: (key: string, value: string, cookies: this) => void, + // deno-lint-ignore no-explicit-any + thisArg: any = null, + ): void { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + callback.call(thisArg, key, value, this); + } + } + } + + /** Get the value of a cookie from the request. + * + * If the cookie is signed, and the signature is invalid, the cookie will + * be set to be deleted in the the response. If the signature uses an "old" + * key, the cookie will be re-signed with the current key and be added to the + * response to be updated. */ + get(name: string, options: CookiesGetOptions = {}): string | undefined { + const signed = options.signed ?? !!this.#keys; + const nameSig = `${name}.sig`; + + const header = this.#request.headers.get("cookie"); + if (!header) { + return; + } + const match = header.match(getPattern(name)); + if (!match) { + return; + } + const [, value] = match; + if (!signed) { + return value; + } + const digest = this.get(nameSig, { signed: false }); + if (!digest) { + return; + } + const data = `${name}=${value}`; + if (!this.#keys) { + throw new TypeError("keys required for signed cookies"); + } + const index = this.#keys.indexOf(data, digest); + + if (index < 0) { + this.delete(nameSig, { path: "/", signed: false }); + } else { + if (index) { + // the key has "aged" and needs to be re-signed + this.set(nameSig, this.#keys.sign(data), { signed: false }); + } + return value; + } + } + + /** Iterate over the request's cookies, yielding up the keys. + * + * If there are keys set on the application, only the keys that are properly + * signed will be returned. */ + *keys(): IterableIterator { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield key; + } + } + } + + /** Set a cookie in the response. + * + * If there are keys set in the application, cookies will be automatically + * signed, unless overridden by the set options. Cookies can be deleted by + * setting the value to `null`. */ + set( + name: string, + value: string | null, + options: CookiesSetDeleteOptions = {}, + ): this { + const request = this.#request; + const response = this.#response; + let headers = response.headers.get("Set-Cookie") ?? [] as string[]; + if (typeof headers === "string") { + headers = [headers]; + } + const secure = this.#secure !== undefined ? this.#secure : request.secure; + const signed = options.signed ?? !!this.#keys; + + if (!secure && options.secure) { + throw new TypeError( + "Cannot send secure cookie over unencrypted connection.", + ); + } + + const cookie = new Cookie(name, value, options); + cookie.secure = options.secure ?? secure; + pushCookie(headers, cookie); + + if (signed) { + if (!this.#keys) { + throw new TypeError(".keys required for signed cookies."); + } + cookie.value = this.#keys.sign(cookie.toString()); + cookie.name += ".sig"; + pushCookie(headers, cookie); + } + + for (const header of headers) { + response.headers.append("Set-Cookie", header); + } + return this; + } + + /** Iterate over the request's cookies, yielding up each value. + * + * If there are keys set on the application, only the values that are + * properly signed will be returned. */ + *values(): IterableIterator { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield value; + } + } + } + + /** Iterate over the request's cookies, yielding up a tuple containing the + * key and the value. + * + * If there are keys set on the application, only keys and values that are + * properly signed will be returned. */ + *[Symbol.iterator](): IterableIterator<[string, string]> { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield [key, value]; + } + } + } +} diff --git a/bundler/tests/.cache/deno/0598e2f21b0a75467096a0aa8082dcc14ba23a59.ts b/bundler/tests/.cache/deno/0598e2f21b0a75467096a0aa8082dcc14ba23a59.ts new file mode 100644 index 00000000000..e98d809d77c --- /dev/null +++ b/bundler/tests/.cache/deno/0598e2f21b0a75467096a0aa8082dcc14ba23a59.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/eme_oaep.ts + + +import { createHash } from "https://deno.land/std/hash/mod.ts"; +import { mgf1 } from "./primitives.ts"; +import { concat, xor, random_bytes } from "./helper.ts"; + +/** + * https://tools.ietf.org/html/rfc3447#page-10 + * + * @param label + * @param m + * @param k + * @param algorithm + */ +export function eme_oaep_encode(label: Uint8Array, m: Uint8Array, k: number, algorithm: "sha1" | "sha256"): Uint8Array { + const labelHash = new Uint8Array(createHash(algorithm).update(label).digest()); + + const ps = new Uint8Array(k - labelHash.length * 2 - 2 - m.length); + const db = concat(labelHash, ps, [0x01], m); + const seed = random_bytes(labelHash.length); + const dbMask = mgf1(seed, k - labelHash.length - 1, algorithm); + const maskedDb = xor(db, dbMask); + const seedMask = mgf1(maskedDb, labelHash.length, algorithm); + const maskedSeed = xor(seed, seedMask); + + return concat([0x00], maskedSeed, maskedDb); +} + +export function eme_oaep_decode(label: Uint8Array, c: Uint8Array, k: number, algorithm: "sha1" | "sha256"): Uint8Array { + const labelHash = new Uint8Array(createHash(algorithm).update(label).digest()); + const maskedSeed = c.slice(1, 1 + labelHash.length); + const maskedDb = c.slice(1 + labelHash.length); + const seedMask = mgf1(maskedDb, labelHash.length, algorithm); + const seed = xor(maskedSeed, seedMask); + const dbMask = mgf1(seed, k - labelHash.length - 1, algorithm); + const db = xor(maskedDb, dbMask); + + let ptr = labelHash.length; + while(ptr < db.length && db[ptr] === 0) ptr++; + + return db.slice(ptr + 1); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/05d629026c1d721c6cbc08637b23fdd0672ea565.ts b/bundler/tests/.cache/deno/05d629026c1d721c6cbc08637b23fdd0672ea565.ts new file mode 100644 index 00000000000..b2a9b85baa7 --- /dev/null +++ b/bundler/tests/.cache/deno/05d629026c1d721c6cbc08637b23fdd0672ea565.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std@0.84.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/060431bb79a5fdc17dd38d75812ec1007c8a09ac.ts b/bundler/tests/.cache/deno/060431bb79a5fdc17dd38d75812ec1007c8a09ac.ts new file mode 100644 index 00000000000..602332f464e --- /dev/null +++ b/bundler/tests/.cache/deno/060431bb79a5fdc17dd38d75812ec1007c8a09ac.ts @@ -0,0 +1,104 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "./error.ts"; +import type { KindType, Type } from "./type.ts"; +import type { Any, ArrayObject } from "./utils.ts"; + +function compileList( + schema: Schema, + name: "implicit" | "explicit", + result: Type[], +): Type[] { + const exclude: number[] = []; + + for (const includedSchema of schema.include) { + result = compileList(includedSchema, name, result); + } + + for (const currentType of schema[name]) { + for ( + let previousIndex = 0; + previousIndex < result.length; + previousIndex++ + ) { + const previousType = result[previousIndex]; + if ( + previousType.tag === currentType.tag && + previousType.kind === currentType.kind + ) { + exclude.push(previousIndex); + } + } + + result.push(currentType); + } + + return result.filter((type, index): unknown => !exclude.includes(index)); +} + +export type TypeMap = { [k in KindType | "fallback"]: ArrayObject }; +function compileMap(...typesList: Type[][]): TypeMap { + const result: TypeMap = { + fallback: {}, + mapping: {}, + scalar: {}, + sequence: {}, + }; + + for (const types of typesList) { + for (const type of types) { + if (type.kind !== null) { + result[type.kind][type.tag] = result["fallback"][type.tag] = type; + } + } + } + return result; +} + +export class Schema implements SchemaDefinition { + public static SCHEMA_DEFAULT?: Schema; + + public implicit: Type[]; + public explicit: Type[]; + public include: Schema[]; + + public compiledImplicit: Type[]; + public compiledExplicit: Type[]; + public compiledTypeMap: TypeMap; + + constructor(definition: SchemaDefinition) { + this.explicit = definition.explicit || []; + this.implicit = definition.implicit || []; + this.include = definition.include || []; + + for (const type of this.implicit) { + if (type.loadKind && type.loadKind !== "scalar") { + throw new YAMLError( + // eslint-disable-next-line max-len + "There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.", + ); + } + } + + this.compiledImplicit = compileList(this, "implicit", []); + this.compiledExplicit = compileList(this, "explicit", []); + this.compiledTypeMap = compileMap( + this.compiledImplicit, + this.compiledExplicit, + ); + } + + public static create(): void {} +} + +export interface SchemaDefinition { + implicit?: Any[]; + explicit?: Type[]; + include?: Schema[]; +} diff --git a/bundler/tests/.cache/deno/061dc1bc102d98a87c92425e09bf0203e0434fc9.ts b/bundler/tests/.cache/deno/061dc1bc102d98a87c92425e09bf0203e0434fc9.ts new file mode 100644 index 00000000000..e349973205c --- /dev/null +++ b/bundler/tests/.cache/deno/061dc1bc102d98a87c92425e09bf0203e0434fc9.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.77.0/log/levels.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** Get log level numeric values through enum constants + */ +export enum LogLevels { + NOTSET = 0, + DEBUG = 10, + INFO = 20, + WARNING = 30, + ERROR = 40, + CRITICAL = 50, +} + +/** Permitted log level names */ +export const LogLevelNames = Object.keys(LogLevels).filter((key) => + isNaN(Number(key)) +); + +/** Union of valid log level strings */ +export type LevelName = keyof typeof LogLevels; + +const byLevel: Record = { + [String(LogLevels.NOTSET)]: "NOTSET", + [String(LogLevels.DEBUG)]: "DEBUG", + [String(LogLevels.INFO)]: "INFO", + [String(LogLevels.WARNING)]: "WARNING", + [String(LogLevels.ERROR)]: "ERROR", + [String(LogLevels.CRITICAL)]: "CRITICAL", +}; + +/** Returns the numeric log level associated with the passed, + * stringy log level name. + */ +export function getLevelByName(name: LevelName): number { + switch (name) { + case "NOTSET": + return LogLevels.NOTSET; + case "DEBUG": + return LogLevels.DEBUG; + case "INFO": + return LogLevels.INFO; + case "WARNING": + return LogLevels.WARNING; + case "ERROR": + return LogLevels.ERROR; + case "CRITICAL": + return LogLevels.CRITICAL; + default: + throw new Error(`no log level found for "${name}"`); + } +} + +/** Returns the stringy log level name provided the numeric log level */ +export function getLevelName(level: number): LevelName { + const levelName = byLevel[level]; + if (levelName) { + return levelName; + } + throw new Error(`no level name found for level: ${level}`); +} diff --git a/bundler/tests/.cache/deno/06690f3535d0a01288299061649a51b1ac0435aa.ts b/bundler/tests/.cache/deno/06690f3535d0a01288299061649a51b1ac0435aa.ts new file mode 100644 index 00000000000..099c4757403 --- /dev/null +++ b/bundler/tests/.cache/deno/06690f3535d0a01288299061649a51b1ac0435aa.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.81.0/async/pool.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + writer.write(p); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + })(); + return res.readable.getIterator(); +} diff --git a/bundler/tests/.cache/deno/06840a8904e244f906a89aff3c364599d24554af.ts b/bundler/tests/.cache/deno/06840a8904e244f906a89aff3c364599d24554af.ts new file mode 100644 index 00000000000..d2d2d8490a2 --- /dev/null +++ b/bundler/tests/.cache/deno/06840a8904e244f906a89aff3c364599d24554af.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isObject.js + + +export default function _isObject(x) { + return Object.prototype.toString.call(x) === '[object Object]'; +} diff --git a/bundler/tests/.cache/deno/068c2d45fb9edc362a3af0a37718179290fbd722.ts b/bundler/tests/.cache/deno/068c2d45fb9edc362a3af0a37718179290fbd722.ts new file mode 100644 index 00000000000..2a8d8c38e46 --- /dev/null +++ b/bundler/tests/.cache/deno/068c2d45fb9edc362a3af0a37718179290fbd722.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/assertValidName.js + + +import devAssert from '../jsutils/devAssert.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +const NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/; +/** + * Upholds the spec rules about naming. + */ + +export function assertValidName(name) { + const error = isValidNameError(name); + + if (error) { + throw error; + } + + return name; +} +/** + * Returns an Error if a name is invalid. + */ + +export function isValidNameError(name) { + devAssert(typeof name === 'string', 'Expected name to be a string.'); + + if (name.length > 1 && name[0] === '_' && name[1] === '_') { + return new GraphQLError(`Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`); + } + + if (!NAME_RX.test(name)) { + return new GraphQLError(`Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "${name}" does not.`); + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/06ac04fc4e5dd9779a3391910b554b0bd6c0c72c.ts b/bundler/tests/.cache/deno/06ac04fc4e5dd9779a3391910b554b0bd6c0c72c.ts new file mode 100644 index 00000000000..a6f66317bfc --- /dev/null +++ b/bundler/tests/.cache/deno/06ac04fc4e5dd9779a3391910b554b0bd6c0c72c.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.67.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/0746b127cd90af92cf12b2ec02c10c123b75903c.ts b/bundler/tests/.cache/deno/0746b127cd90af92cf12b2ec02c10c123b75903c.ts new file mode 100644 index 00000000000..91efe130c55 --- /dev/null +++ b/bundler/tests/.cache/deno/0746b127cd90af92cf12b2ec02c10c123b75903c.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/NoUnusedVariablesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * No unused variables + * + * A GraphQL operation is only valid if all variables defined by an operation + * are used, either directly or within a spread fragment. + */ +export function NoUnusedVariablesRule(context) { + let variableDefs = []; + return { + OperationDefinition: { + enter() { + variableDefs = []; + }, + + leave(operation) { + const variableNameUsed = Object.create(null); + const usages = context.getRecursiveVariableUsages(operation); + + for (const { + node + } of usages) { + variableNameUsed[node.name.value] = true; + } + + for (const variableDef of variableDefs) { + const variableName = variableDef.variable.name.value; + + if (variableNameUsed[variableName] !== true) { + context.reportError(new GraphQLError(operation.name ? `Variable "$${variableName}" is never used in operation "${operation.name.value}".` : `Variable "$${variableName}" is never used.`, variableDef)); + } + } + } + + }, + + VariableDefinition(def) { + variableDefs.push(def); + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/07edaff2f29d36d34886867c4a9100a3250091ca.ts b/bundler/tests/.cache/deno/07edaff2f29d36d34886867c4a9100a3250091ca.ts new file mode 100644 index 00000000000..dffdec29c17 --- /dev/null +++ b/bundler/tests/.cache/deno/07edaff2f29d36d34886867c4a9100a3250091ca.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.85.0/path/_interface.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/08120cba5feb53715566490767556b622333fcda.ts b/bundler/tests/.cache/deno/08120cba5feb53715566490767556b622333fcda.ts new file mode 100644 index 00000000000..7fd44b0b51c --- /dev/null +++ b/bundler/tests/.cache/deno/08120cba5feb53715566490767556b622333fcda.ts @@ -0,0 +1,132 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isTaxID.ts + + +/** + * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number, + * is used to identify a business entity. + * + * NOTES: + * - Prefix 47 is being reserved for future use + * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus. + * + * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes` + * for more information. + */ + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * Campus prefixes according to locales + */ +/** + * @ignore + */ +const campusPrefix = { + 'en-US': { + andover: ['10', '12'], + atlanta: ['60', '67'], + austin: ['50', '53'], + brookhaven: [ + '01', + '02', + '03', + '04', + '05', + '06', + '11', + '13', + '14', + '16', + '21', + '22', + '23', + '25', + '34', + '51', + '52', + '54', + '55', + '56', + '57', + '58', + '59', + '65', + ], + cincinnati: ['30', '32', '35', '36', '37', '38', '61'], + fresno: ['15', '24'], + internet: ['20', '26', '27', '45', '46', '47'], + kansas: ['40', '44'], + memphis: ['94', '95'], + ogden: ['80', '90'], + philadelphia: [ + '33', + '39', + '41', + '42', + '43', + '46', + '48', + '62', + '63', + '64', + '66', + '68', + '71', + '72', + '73', + '74', + '75', + '76', + '77', + '81', + '82', + '83', + '84', + '85', + '86', + '87', + '88', + '91', + '92', + '93', + '98', + '99', + ], + sba: ['31'], + }, +}; + +/** + * @ignore + */ +const getPrefixes = (locale: string) => { + const prefixes = []; + + for (const location in (campusPrefix as any)[locale]) { + if ((campusPrefix as any)[locale].hasOwnProperty(location)) { + prefixes.push(...(campusPrefix as any)[locale][location]); + } + } + + prefixes.sort(); + + return prefixes; +}; + +// tax id regex formats for various loacles + +/** + * @ignore + */ +const taxIdFormat = { + 'en-US': /^\d{2}[- ]{0,1}\d{7}$/, +}; + +export const isTaxID = (str: string, locale = 'en-US') => { + assertString(str); + if (!(taxIdFormat as any)[locale].test(str)) { + return false; + } + return getPrefixes(locale).indexOf(str.substr(0, 2)) !== -1; +}; diff --git a/bundler/tests/.cache/deno/086270680629deac2a20a68fb1068f2473e47d4f.ts b/bundler/tests/.cache/deno/086270680629deac2a20a68fb1068f2473e47d4f.ts new file mode 100644 index 00000000000..8e23535f389 --- /dev/null +++ b/bundler/tests/.cache/deno/086270680629deac2a20a68fb1068f2473e47d4f.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std@0.73.0/async/mux_async_iterator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/08fb5ffb652d3ab4254036be928c3aa4652e251a.ts b/bundler/tests/.cache/deno/08fb5ffb652d3ab4254036be928c3aa4652e251a.ts new file mode 100644 index 00000000000..f9d4d46e11c --- /dev/null +++ b/bundler/tests/.cache/deno/08fb5ffb652d3ab4254036be928c3aa4652e251a.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/mod.ts + + +import * as segno from './lib/index.ts'; + +// exporting all functions +export * from './lib/index.ts'; + +// exporting functions namespaced to segno +export { segno }; diff --git a/bundler/tests/.cache/deno/0921d954843d1a985feac7de57d6c1db75b7500e.ts b/bundler/tests/.cache/deno/0921d954843d1a985feac7de57d6c1db75b7500e.ts new file mode 100644 index 00000000000..a3b65246a0c --- /dev/null +++ b/bundler/tests/.cache/deno/0921d954843d1a985feac7de57d6c1db75b7500e.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.80.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/09236d67cd7c89114ef7fae5927846001fdb3ee1.ts b/bundler/tests/.cache/deno/09236d67cd7c89114ef7fae5927846001fdb3ee1.ts new file mode 100644 index 00000000000..36747592f7c --- /dev/null +++ b/bundler/tests/.cache/deno/09236d67cd7c89114ef7fae5927846001fdb3ee1.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/colorlog@v1.0/mod.ts + + +const reset: String = "\x1b[0m"; +const red: String = "\x1b[31m"; +const green: String = "\x1b[32m"; +const yellow: String = "\x1b[33m"; + +function error(val: any) { + return (red + val + reset); +} + +function success(val: any) { + return (green + val + reset); +} + +function warning(val: any) { + return (yellow + val + reset); +} +function errorLog(val: any) { + console.log(red + val + reset); +} + +function successLog(val: any) { + console.log(green + val + reset); +} + +function warningLog(val: any) { + console.log(yellow + val + reset); +} + +export { error, success, warning, errorLog, successLog, warningLog }; diff --git a/bundler/tests/.cache/deno/09383f7134bcbb64cadf410adb933d67b8a87fc1.ts b/bundler/tests/.cache/deno/09383f7134bcbb64cadf410adb933d67b8a87fc1.ts new file mode 100644 index 00000000000..17272d9a873 --- /dev/null +++ b/bundler/tests/.cache/deno/09383f7134bcbb64cadf410adb933d67b8a87fc1.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/toPairs.js + + +import _curry1 from './internal/_curry1.js'; +import _has from './internal/_has.js'; + + +/** + * Converts an object into an array of key, value arrays. Only the object's + * own properties are used. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own properties. + * @see R.fromPairs + * @example + * + * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] + */ +var toPairs = _curry1(function toPairs(obj) { + var pairs = []; + for (var prop in obj) { + if (_has(prop, obj)) { + pairs[pairs.length] = [prop, obj[prop]]; + } + } + return pairs; +}); +export default toPairs; diff --git a/bundler/tests/.cache/deno/095c726f58dc8e8e09e5e723ca294ce0ffa2d12a.ts b/bundler/tests/.cache/deno/095c726f58dc8e8e09e5e723ca294ce0ffa2d12a.ts new file mode 100644 index 00000000000..d76c26646d9 --- /dev/null +++ b/bundler/tests/.cache/deno/095c726f58dc8e8e09e5e723ca294ce0ffa2d12a.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfilter.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XFilter(f, xf) { + this.xf = xf; + this.f = f; +} +XFilter.prototype['@@transducer/init'] = _xfBase.init; +XFilter.prototype['@@transducer/result'] = _xfBase.result; +XFilter.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : result; +}; + +var _xfilter = _curry2(function _xfilter(f, xf) { return new XFilter(f, xf); }); +export default _xfilter; diff --git a/bundler/tests/.cache/deno/0977feb3b53e690b725b21f25dc74eb3561f0dee.ts b/bundler/tests/.cache/deno/0977feb3b53e690b725b21f25dc74eb3561f0dee.ts new file mode 100644 index 00000000000..c6ada98f2a2 --- /dev/null +++ b/bundler/tests/.cache/deno/0977feb3b53e690b725b21f25dc74eb3561f0dee.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/propEq.js + + +import _curry3 from './internal/_curry3.js'; +import prop from './prop.js'; +import equals from './equals.js'; + + +/** + * Returns `true` if the specified object property is equal, in + * [`R.equals`](#equals) terms, to the given value; `false` otherwise. + * You can test multiple properties with [`R.whereEq`](#whereEq). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig String -> a -> Object -> Boolean + * @param {String} name + * @param {*} val + * @param {*} obj + * @return {Boolean} + * @see R.whereEq, R.propSatisfies, R.equals + * @example + * + * const abby = {name: 'Abby', age: 7, hair: 'blond'}; + * const fred = {name: 'Fred', age: 12, hair: 'brown'}; + * const rusty = {name: 'Rusty', age: 10, hair: 'brown'}; + * const alois = {name: 'Alois', age: 15, disposition: 'surly'}; + * const kids = [abby, fred, rusty, alois]; + * const hasBrownHair = R.propEq('hair', 'brown'); + * R.filter(hasBrownHair, kids); //=> [fred, rusty] + */ +var propEq = _curry3(function propEq(name, val, obj) { + return equals(val, prop(name, obj)); +}); +export default propEq; diff --git a/bundler/tests/.cache/deno/09d3538bdb461399415f8f68af9da00dd02f839f.ts b/bundler/tests/.cache/deno/09d3538bdb461399415f8f68af9da00dd02f839f.ts new file mode 100644 index 00000000000..fed8953b04d --- /dev/null +++ b/bundler/tests/.cache/deno/09d3538bdb461399415f8f68af9da00dd02f839f.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xdrop.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XDrop(n, xf) { + this.xf = xf; + this.n = n; +} +XDrop.prototype['@@transducer/init'] = _xfBase.init; +XDrop.prototype['@@transducer/result'] = _xfBase.result; +XDrop.prototype['@@transducer/step'] = function(result, input) { + if (this.n > 0) { + this.n -= 1; + return result; + } + return this.xf['@@transducer/step'](result, input); +}; + +var _xdrop = _curry2(function _xdrop(n, xf) { return new XDrop(n, xf); }); +export default _xdrop; diff --git a/bundler/tests/.cache/deno/0ab31312a4d3ecab9cdf41f345e7e69882da7d3f.ts b/bundler/tests/.cache/deno/0ab31312a4d3ecab9cdf41f345e7e69882da7d3f.ts new file mode 100644 index 00000000000..9895187cb1c --- /dev/null +++ b/bundler/tests/.cache/deno/0ab31312a4d3ecab9cdf41f345e7e69882da7d3f.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/case@v2.1.0/constantCase.ts + + +import upperCase from "./upperCase.ts"; +import snakeCase from "./snakeCase.ts"; + +export default function constantCase(value: string, locale?: string): string { + return upperCase(snakeCase(value, locale), locale); +} diff --git a/bundler/tests/.cache/deno/0afa3c9e6688d294fdfb23eefa94f6c131088a6e.ts b/bundler/tests/.cache/deno/0afa3c9e6688d294fdfb23eefa94f6c131088a6e.ts new file mode 100644 index 00000000000..0d59b3c0dd4 --- /dev/null +++ b/bundler/tests/.cache/deno/0afa3c9e6688d294fdfb23eefa94f6c131088a6e.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMimeType.ts + + +/* + Checks if the provided string matches to a correct Media type format (MIME type) + + This function only checks is the string format follows the + etablished rules by the according RFC specifications. + This function supports 'charset' in textual media types + (https://tools.ietf.org/html/rfc6657). + + This function does not check against all the media types listed + by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml) + because of lightness purposes : it would require to include + all these MIME types in this librairy, which would weigh it + significantly. This kind of effort maybe is not worth for the use that + this function has in this entire librairy. + + More informations in the RFC specifications : + - https://tools.ietf.org/html/rfc2045 + - https://tools.ietf.org/html/rfc2046 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.1 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.5 +*/ + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// Match simple MIME types +// NB : +// Subtype length must not exceed 100 characters. +// This rule does not comply to the RFC specs (what is the max length ?). +/** + * @ignore + */ +const mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i; // eslint-disable-line max-len + +// Handle "charset" in "text/*" +/** + * @ignore + */ +const mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len + +// Handle "boundary" in "multipart/*" +/** + * @ignore + */ +const mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len + +export const isMimeType = (str: string) => { + assertString(str); + return ( + mimeTypeSimple.test(str) || + mimeTypeText.test(str) || + mimeTypeMultipart.test(str) + ); +}; diff --git a/bundler/tests/.cache/deno/0b0bcf31fcc627ab2d8c38be6aaf7d0f7a9fefa3.ts b/bundler/tests/.cache/deno/0b0bcf31fcc627ab2d8c38be6aaf7d0f7a9fefa3.ts new file mode 100644 index 00000000000..9c663cbe888 --- /dev/null +++ b/bundler/tests/.cache/deno/0b0bcf31fcc627ab2d8c38be6aaf7d0f7a9fefa3.ts @@ -0,0 +1,1003 @@ +// Loaded from https://deno.land/std@0.80.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/0b342060ff1856cd94ca234727849c893a6e0ee4.ts b/bundler/tests/.cache/deno/0b342060ff1856cd94ca234727849c893a6e0ee4.ts new file mode 100644 index 00000000000..b7ed287756a --- /dev/null +++ b/bundler/tests/.cache/deno/0b342060ff1856cd94ca234727849c893a6e0ee4.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/stringify.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { dump } from "./dumper/dumper.ts"; +import type { DumperStateOptions } from "./dumper/dumper_state.ts"; + +export type DumpOptions = DumperStateOptions; + +/** + * Serializes `object` as a YAML document. + * + * You can disable exceptions by setting the skipInvalid option to true. + */ +export function stringify( + obj: Record, + options?: DumpOptions, +): string { + return dump(obj, options); +} diff --git a/bundler/tests/.cache/deno/0bc2073c627b10654f8712f63ac65d8c08962ce3.ts b/bundler/tests/.cache/deno/0bc2073c627b10654f8712f63ac65d8c08962ce3.ts new file mode 100644 index 00000000000..d5067568c11 --- /dev/null +++ b/bundler/tests/.cache/deno/0bc2073c627b10654f8712f63ac65d8c08962ce3.ts @@ -0,0 +1,143 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/graphql.js + + +import isPromise from './jsutils/isPromise.js'; +import { parse } from './language/parser.js'; +import { validate } from './validation/validate.js'; +import { validateSchema } from './type/validate.js'; +import { execute } from './execution/execute.js'; +/** + * This is the primary entry point function for fulfilling GraphQL operations + * by parsing, validating, and executing a GraphQL document along side a + * GraphQL schema. + * + * More sophisticated GraphQL servers, such as those which persist queries, + * may wish to separate the validation and execution phases to a static time + * tooling step, and a server runtime step. + * + * Accepts either an object with named arguments, or individual arguments: + * + * schema: + * The GraphQL type system to use when validating and executing a query. + * source: + * A GraphQL language formatted string representing the requested operation. + * rootValue: + * The value provided as the first argument to resolver functions on the top + * level type (e.g. the query object type). + * contextValue: + * The context value is provided as an argument to resolver functions after + * field arguments. It is used to pass shared information useful at any point + * during executing this query, for example the currently logged in user and + * connections to databases or other services. + * variableValues: + * A mapping of variable name to runtime value to use for all variables + * defined in the requestString. + * operationName: + * The name of the operation to use if requestString contains multiple + * possible operations. Can be omitted if requestString contains only + * one operation. + * fieldResolver: + * A resolver function to use when one is not provided by the schema. + * If not provided, the default field resolver is used (which looks for a + * value or method on the source value with the field's name). + * typeResolver: + * A type resolver function to use when none is provided by the schema. + * If not provided, the default type resolver is used (which looks for a + * `__typename` field or alternatively calls the `isTypeOf` method). + */ + +export function graphql(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) { + /* eslint-enable no-redeclare */ + // Always return a Promise for a consistent API. + return new Promise(resolve => resolve( // Extract arguments from object args if provided. + arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({ + schema: argsOrSchema, + source, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + }))); +} +/** + * The graphqlSync function also fulfills GraphQL operations by parsing, + * validating, and executing a GraphQL document along side a GraphQL schema. + * However, it guarantees to complete synchronously (or throw an error) assuming + * that all field resolvers are also synchronous. + */ + +export function graphqlSync(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) { + /* eslint-enable no-redeclare */ + // Extract arguments from object args if provided. + const result = arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({ + schema: argsOrSchema, + source, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + }); // Assert that the execution was synchronous. + + if (isPromise(result)) { + throw new Error('GraphQL execution failed to complete synchronously.'); + } + + return result; +} + +function graphqlImpl(args) { + const { + schema, + source, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + } = args; // Validate Schema + + const schemaValidationErrors = validateSchema(schema); + + if (schemaValidationErrors.length > 0) { + return { + errors: schemaValidationErrors + }; + } // Parse + + + let document; + + try { + document = parse(source); + } catch (syntaxError) { + return { + errors: [syntaxError] + }; + } // Validate + + + const validationErrors = validate(schema, document); + + if (validationErrors.length > 0) { + return { + errors: validationErrors + }; + } // Execute + + + return execute({ + schema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + }); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/0c370b0dde6a38f8d964c5a397f9161f3283201d.ts b/bundler/tests/.cache/deno/0c370b0dde6a38f8d964c5a397f9161f3283201d.ts new file mode 100644 index 00000000000..024c75171b8 --- /dev/null +++ b/bundler/tests/.cache/deno/0c370b0dde6a38f8d964c5a397f9161f3283201d.ts @@ -0,0 +1,257 @@ +// Loaded from https://deno.land/std@0.77.0/hash/_wasm/wasm.js + + +// deno-lint-ignore-file +//deno-fmt-ignore-file +//deno-lint-ignore-file +import * as base64 from "../../encoding/base64.ts";export const source = base64.decode("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HiADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpB/IXAACEEQQAMEQsgAEHYgcAARwRAIAAoAABB89CFiwNHDRALIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB4ABBCBChASIDRQ0XIANCADcDACADQQA2AhwgAyACKQPwAjcDICADQfiXwAApAwA3AwggA0EQakGAmMAAKQMANwMAIANBGGpBiJjAACgCADYCACADQShqIAgpAwA3AwAgA0EwaiAHKQMANwMAIANBOGogBikDADcDACADQUBrIAopAwA3AwAgA0HIAGogCSkDADcDACADQdAAaiAFKQMANwMAIANB2ABqIAQpAwA3AwBB3IHAACEEQQAMEAsgAEGAgsAARg0FIABBgILAAEEGEIMBRQ0FIABBrILAAEYNBiAAQayCwABBBhCDAUUNBiAAQdiCwABGDQcgAEHYgsAAQQYQgwFFDQcgAEGEg8AARwRAIABBhIPAAEEGEIMBDQ8LIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNGCADQgA3AwggA0IANwMAIANBADYCUCADQZCZwAApAwA3AxAgA0EYakGYmcAAKQMANwMAIANBIGpBoJnAACkDADcDACADQShqQaiZwAApAwA3AwAgA0EwakGwmcAAKQMANwMAIANBOGpBuJnAACkDADcDACADQUBrQcCZwAApAwA3AwAgA0HIAGpByJnAACkDADcDACADQdQAaiACQfACakGAARCLARpBjIPAACEEQQAMDwsgAEGwg8AARg0HIAApAABC89CFm9PFjJk0UQ0HIABB3IPAAEYNCCAAKQAAQvPQhZvTxcyaNlENCCAAQYiEwABGDQkgACkAAELz0IWb0+WMnDRRDQkgAEG0hMAARwRAIAApAABC89CFm9OlzZgyUg0OCyACQZgBakEAQcgBEJEBGiACQf4CakIANwEAIAJBhgNqQgA3AQAgAkGOA2pCADcBACACQZYDakIANwEAIAJBngNqQgA3AQAgAkGmA2pCADcBACACQa4DakIANwEAIAJBtgNqQQA2AQAgAkG6A2pBADsBACACQQA7AfQCIAJCADcB9gIgAkHIADYC8AIgAkGIBGogAkHwAmpBzAAQiwEaIAJBCGogAkGIBGpBBHJByAAQiwEaQZgCQQgQoQEiA0UNGyADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpBvITAACEEQQAMDgsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBEDYCiAQgAkEAOwGMBCACQQA2AY4EIAJBqAFqIgMgAkGYBGoiBCgCADYCACACQaABaiIJIAJBkARqIgUpAwA3AwAgAkHoAmoiBiACQaQBaikCADcDACACIAIpA4gENwOYASACIAIpApwBNwPgAiACQcABaiIHQgA3AwAgAkG4AWoiCEIANwMAIAJBsAFqIg1CADcDACADQgA3AwAgCUIANwMAIAJCADcDmAEgAkH6AmpCADcBACACQYIDakEAOwEAIAJBEDYC8AIgAkEAOwH0AiACQQA2AfYCIAQgAkGAA2ooAgA2AgAgBSACQfgCaiIKKQMANwMAIAJBEGoiCyACQZQEaikCADcDACACIAIpA/ACNwOIBCACIAIpAowENwMIIAJB0AFqIgwgCykDADcDACACIAIpAwg3A8gBIAogBikDADcDACACIAIpA+ACNwPwAiACQcAEaiIGIAwpAwA3AwAgAkG4BGoiCyACKQPIATcDACACQbAEaiIMIAcpAwA3AwAgAkGoBGoiByAIKQMANwMAIAJBoARqIgggDSkDADcDACAEIAMpAwA3AwAgBSAJKQMANwMAIAIgAikDmAE3A4gEQdQAQQQQoQEiA0UNDiADQQA2AgAgAyACKQPwAjcCBCADIAIpA4gENwIUIANBDGogCikDADcCACADQRxqIAUpAwA3AgAgA0EkaiAEKQMANwIAIANBLGogCCkDADcCACADQTRqIAcpAwA3AgAgA0E8aiAMKQMANwIAIANBxABqIAspAwA3AgAgA0HMAGogBikDADcCAEGEgMAAIQRBAAwNCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEyADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQdQAakHIl8AAKQIANwIAIANBwJfAACkCADcCTEGsgMAAIQRBAAwMCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEiADQgA3AwAgA0EANgIcIAMgAikD8AI3AyAgA0H4l8AAKQMANwMIIANBEGpBgJjAACkDADcDACADQRhqQYiYwAAoAgA2AgAgA0EoaiAIKQMANwMAIANBMGogBykDADcDACADQThqIAYpAwA3AwAgA0FAayAKKQMANwMAIANByABqIAkpAwA3AwAgA0HQAGogBSkDADcDACADQdgAaiAEKQMANwMAQYSBwAAhBEEADAsLIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB+ABBCBChASIDRQ0MIANCADcDACADQQA2AjAgAyACKQPwAjcCNCADQdCXwAApAwA3AwggA0EQakHYl8AAKQMANwMAIANBGGpB4JfAACkDADcDACADQSBqQeiXwAApAwA3AwAgA0EoakHwl8AAKQMANwMAIANBPGogCCkDADcCACADQcQAaiAHKQMANwIAIANBzABqIAYpAwA3AgAgA0HUAGogCikDADcCACADQdwAaiAJKQMANwIAIANB5ABqIAUpAwA3AgAgA0HsAGogBCkDADcCAEG0gcAAIQRBAAwKCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQfAAQQgQoQEiA0UNESADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQeQAakGkmMAAKQIANwIAIANB3ABqQZyYwAApAgA3AgAgA0HUAGpBlJjAACkCADcCACADQYyYwAApAgA3AkxBiILAACEEQQAMCQsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBnARqQgA3AgAgAkGkBGpCADcCACACQawEakIANwIAIAJBtARqQgA3AgAgAkG8BGpCADcCACACQcQEakEAOgAAIAJBxQRqQQA2AAAgAkHJBGpBADsAACACQcsEakEAOgAAIAJBwAA2AogEIAJBADsBjAQgAkEANgGOBCACQZgBaiACQYgEakHEABCLARogAkGoA2oiBCACQdQBaikCADcDACACQaADaiIFIAJBzAFqKQIANwMAIAJBmANqIgkgAkHEAWopAgA3AwAgAkGQA2oiCiACQbwBaikCADcDACACQYgDaiIGIAJBtAFqKQIANwMAIAJBgANqIgcgAkGsAWopAgA3AwAgAkH4AmoiCCACQaQBaikCADcDACACIAIpApwBNwPwAkHwAEEIEKEBIgNFDRAgA0EANgIIIANCADcDACADIAIpA/ACNwIMIANBFGogCCkDADcCACADQRxqIAcpAwA3AgAgA0EkaiAGKQMANwIAIANBLGogCikDADcCACADQTRqIAkpAwA3AgAgA0E8aiAFKQMANwIAIANBxABqIAQpAwA3AgAgA0HkAGpBxJjAACkCADcCACADQdwAakG8mMAAKQIANwIAIANB1ABqQbSYwAApAgA3AgAgA0GsmMAAKQIANwJMQbSCwAAhBEEADAgLIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNECADQgA3AwggA0IANwMAIANBADYCUCADQdCYwAApAwA3AxAgA0EYakHYmMAAKQMANwMAIANBIGpB4JjAACkDADcDACADQShqQeiYwAApAwA3AwAgA0EwakHwmMAAKQMANwMAIANBOGpB+JjAACkDADcDACADQUBrQYCZwAApAwA3AwAgA0HIAGpBiJnAACkDADcDACADQdQAaiACQfACakGAARCLARpB4ILAACEEQQAMBwsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GUAUcNAAsgAkGIBGogAkHwAmpBlAEQiwEaIAJBCGogAkGIBGpBBHJBkAEQiwEaQeACQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGQARCLARpBuIPAACEEQQAMBgsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GMAUcNAAsgAkGIBGogAkHwAmpBjAEQiwEaIAJBCGogAkGIBGpBBHJBiAEQiwEaQdgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGIARCLARpB5IPAACEEQQAMBQsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0HsAEcNAAsgAkGIBGogAkHwAmpB7AAQiwEaIAJBCGogAkGIBGpBBHJB6AAQiwEaQbgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHoABCLARpBkITAACEEQQAMBAsgAkGYAWpBAEHIARCRARogAkEA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aiIBIAIgBHNzakHglu21f2pBEHcgAWoiAyABcyACIApqIAEgBHMgA3NqQfD4/vV7akEXdyADaiICc2pBxv3txAJqQQR3IAJqIgRqIAMgC2ogASATaiACIANzIARzakH6z4TVfmpBC3cgBGoiASACIARzc2pBheG8p31qQRB3IAFqIgMgAXMgAiAGaiABIARzIANzakGFuqAkakEXdyADaiICc2pBuaDTzn1qQQR3IAJqIgRqIAIgDGogASAJaiACIANzIARzakHls+62fmpBC3cgBGoiASAEcyADIBJqIAIgBHMgAXNqQfj5if0BakEQdyABaiICc2pB5ayxpXxqQRd3IAJqIgMgAUF/c3IgAnNqQcTEpKF/akEGdyADaiIEaiADIBVqIAIgCGogASAOaiAEIAJBf3NyIANzakGX/6uZBGpBCncgBGoiASADQX9zciAEc2pBp8fQ3HpqQQ93IAFqIgIgBEF/c3IgAXNqQbnAzmRqQRV3IAJqIgMgAUF/c3IgAnNqQcOz7aoGakEGdyADaiIEaiADIBRqIAIgCmogASALaiAEIAJBf3NyIANzakGSmbP4eGpBCncgBGoiASADQX9zciAEc2pB/ei/f2pBD3cgAWoiAiAEQX9zciABc2pB0buRrHhqQRV3IAJqIgMgAUF/c3IgAnNqQc/8of0GakEGdyADaiIEaiADIBFqIAIgBmogASASaiAEIAJBf3NyIANzakHgzbNxakEKdyAEaiIBIANBf3NyIARzakGUhoWYempBD3cgAWoiAiAEQX9zciABc2pBoaOg8ARqQRV3IAJqIgMgAUF/c3IgAnNqQYL9zbp/akEGdyADaiIEIAAoAgBqNgIAIAAgASAQaiAEIAJBf3NyIANzakG15Ovpe2pBCncgBGoiASAAKAIMajYCDCAAIAIgDGogASADQX9zciAEc2pBu6Xf1gJqQQ93IAFqIgIgACgCCGo2AgggACACIAAoAgRqIAMgD2ogAiAEQX9zciABc2pBkaeb3H5qQRV3ajYCBAvcDwEFfyAAIAEtAAAiAzoAECAAIAEtAAEiAjoAESAAIAEtAAIiBDoAEiAAIAEtAAMiBToAEyAAIAEtAAQiBjoAFCAAIAMgAC0AAHM6ACAgACACIAAtAAFzOgAhIAAgBCAALQACczoAIiAAIAUgAC0AA3M6ACMgACAGIAAt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BCARIAEgA0F/c3EgAyAEcXIgAmpqQQd3IgVBf3NxIAMgBXFyIAFqakELdyIBIAVyIBIgBCABIAVxIgQgAyABQX9zcXJqakETdyICcSAEcmogFGpBmfOJ1AVqQQN3IgMgByABIAUgAyABIAJycSABIAJxcmogDWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAJIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogDGpBmfOJ1AVqQQN3IgMgDyABIAQgAyABIAJycSABIAJxcmogFWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciARIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogC2pBmfOJ1AVqQQN3IgMgCiABIAYgBCADIAEgAnJxIAEgAnFyampBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAIIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogE2pBmfOJ1AVqQQN3IgMgEiACIBAgASAOIAQgAyABIAJycSABIAJxcmpqQZnzidQFakEFdyIEIAIgA3JxIAIgA3FyampBmfOJ1AVqQQl3IgUgAyAEcnEgAyAEcXJqakGZ84nUBWpBDXciAyAFcyICIARzaiAUakGh1+f2BmpBA3ciASAJIAMgASAHIAQgASACc2pqQaHX5/YGakEJdyICcyAFIA1qIAEgA3MgAnNqQaHX5/YGakELdyIEc2pqQaHX5/YGakEPdyIDIARzIgUgAnNqIAtqQaHX5/YGakEDdyIBIAggAyABIAogAiABIAVzampBodfn9gZqQQl3IgJzIAQgBmogASADcyACc2pBodfn9gZqQQt3IgRzampBodfn9gZqQQ93IgMgBHMiBSACc2ogDGpBodfn9gZqQQN3IgEgESADIAEgDyACIAEgBXNqakGh1+f2BmpBCXciAnMgBCAVaiABIANzIAJzakGh1+f2BmpBC3ciBHNqakGh1+f2BmpBD3ciAyAEcyIFIAJzaiATakGh1+f2BmpBA3ciASAAKAIAajYCACAAIBAgAiABIAVzampBodfn9gZqQQl3IgIgACgCDGo2Agwg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IgVFDQULIAIgBDYCFCACIAU2AhALIAIoAhAhBSACQThqIgZCADcDACACQTBqIgdCADcDACACQShqIghCADcDACACQSBqIglCADcDACACQRhqIgpCADcDACACQgA3AxAgAkHqAGpCADcBACACQfIAakEAOwEAIAJBEDYCYCACQQA7AWQgAkEANgFmIAJBiAFqIAJB8ABqKAIANgIAIAJBgAFqIAJB6ABqKQMANwMAIAJB2ABqIgsgAkGEAWopAgA3AwAgAiACKQNgNwN4IAIgAikCfDcDUCACQcgAaiIMIAspAwA3AwAgAiACKQNQNwNAIANBOGogDCkDADcAACADQTBqIAIpA0A3AAAgA0EoaiAGKQMANwAAIANBIGogBykDADcAACADQRhqIAgpAwA3AAAgA0EQaiAJKQMANwAAIANBCGogCikDADcAACADIAIpAxA3AAAgAUEANgIAIAAgBDYCBCAAIAU2AgAgAkGQAWokAA8LQbCawABBFyACQRBqQaCXwABBsJfAABB5AAtBEEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyAEQQFBtKXAACgCACIAQQIgABsRAAAAC9gIAQV/IABBeGoiASAAQXxqKAIAIgNBeHEiAGohAgJAAkACQAJAIANBAXENACADQQNxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUH8pMAAKAIARgRAIAIoAgRBA3FBA0cNAUH0pMAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgAPCyABIAMQTAsCQCACQQRqIgQoAgAiA0ECcQRAIAQgA0F+cTYCACABIABBAXI2AgQgACABaiAANgIADAELAkAgAkGApcAAKAIARwRAQfykwAAoAgAgAkYNASACIANBeHEiAhBMIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQfykwAAoAgBHDQJB9KTAACAANgIADwtBgKXAACABNgIAQfikwABB+KTAACgCACAAaiIANgIAIAEgAEEBcjYCBEH8pMAAKAIAIAFGBEBB9KTAAEEANgIAQfykwABBADYCAAtBnKXAACgCACICIABPDQJBgKXAACgCACIARQ0CAkBB+KTAACgCACIDQSlJDQBBjKXAACEBA0AgASgCACIEIABNBEAgBCABKAIE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KQMwNwNoIAJBIGogAkGMAWopAgA3AwAgAkEYaiACQYQBaikCADcDACACQRBqIAJB/ABqKQIANwMAIAJBCGogAkH0AGopAgA3AwAgAkEoaiACQZQBaikCADcDACACIAIpAmw3AwAgASACEB8gAUIANwMIIAFCADcDACABQQA2AlAgAUHQmMAAKQMANwMQIAFBGGpB2JjAACkDADcDACABQSBqQeCYwAApAwA3AwAgAUEoakHomMAAKQMANwMAIAFBMGpB8JjAACkDADcDACABQThqQfiYwAApAwA3AwAgAUFAa0GAmcAAKQMANwMAIAFByABqQYiZwAApAwA3AwACQAJAQTBBARChASIDBEAgAkIwNwJsIAIgAzYCaCACQegAaiACQTAQXgJAIAIoAmwiBCACKAJwIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAmghBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCbCACIAQ2AmgLIAIoAmghBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFB0JjAACkDADcDACABQQhqQdiYwAApAwA3AwAgAUEQakHgmMAAKQMANwMAIAFBGGpB6JjAACkDADcDACABQSBqQfCYwAApAwA3AwAgAUEoakH4mMAAKQMANwMAIAFBMGpBgJnAACkDADcDACABQThqQYiZwAApAwA3AwAgACADNgIEIAAgBDYCACACQaABaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC78GAQR/IAAgAWohAgJAAkACQAJAAkAgAEEEaigCACIDQQFxDQAgA0EDcUUNASAAKAIAIgMgAWohASAAIANrIgBB/KTAACgCAEYEQCACKAIEQQNxQQNHDQFB9KTAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADwsgACADEEwLAkAgAkEEaigCACIDQQJxBEAgAkEEaiADQX5xNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAMAQsCQCACQYClwAAoAgBHBEBB/KTAACgCACACRg0BIAIgA0F4cSICEEwgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABB/KTAACgCAEcNAkH0pMAAIAE2AgAPC0GApcAAIAA2AgBB+KTAAEH4pMAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABB/KTAACgCAEcNAkH0pMAAQQA2AgBB/KTAAEEANgIADwtB/KTAACAANgIAQfSkwABB9KTAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyABQYACSQ0DIABCADcCECAAQRxqAn9BACABQQh2IgNFDQAaQR8gAUH///8HSw0AGiABQQYgA2ciAmtBH3F2QQFxIAJBAXRrQT5qCyICNgIAIAJBAnRB9KPAAGohAwJAAkBB6KHAACgCACIEQQEgAkEfcXQiBXEEQCADKAIAIgNBBGooAgBBeHEgAUcNASADIQIMAgtB6KHAACAEIAVyNgIAIAMgADYCAAwECyABQQBBGSACQQF2a0EfcSACQR9GG3QhBANAIAMgBEEddkEEcWpBEGoiBSgCACICRQ0DIARBAXQhBCACIQMgAkEEaigCAEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBGGpBADYCACAAIAI2AgwgACABNgIICw8LIAUgADYCAAsgAEEYaiADNgIAIAAgADYCDCAAIAA2AggPCyABQQN2IgJBA3RB7KHAAGohAQJ/QeShwAAoAgAiA0EBIAJ0IgJxBEAgASgCCAwBC0HkocAAIAIgA3I2AgAgAQshAiABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggL1AYBBH8jAEHQAWsiAiQAIAJBygBqQgA3AQAgAkHSAGpBADsBACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkHkAGpCADcCACACQewAakIANwIAIAJB9ABqQgA3AgAgAkH8AGpBADoAACACQf0AakEANgAAIAJBgQFqQQA7AAAgAkGDAWpBADoAACACQQA7AUQgAkEANgFGIAJBwAA2AkAgAkGIAWogAkFAa0HEABCLARogAkE4aiACQcQBaikCADcDACACQTBqIAJBvAFqKQIANwMAIAJBKGogAkG0AWopAgA3AwAgAkEgaiACQawBaikCADcDACACQRhqIAJBpAFqKQIANwMAIAJBEGogAkGcAWopAgA3AwAgAkEIaiACQZQBaikCADcDACACIAIpAowBNwMAIAEgAhARIAFCADcDCCABQgA3AwAgAUEANgJQIAFBkJnAACkDADcDECABQRhqQZiZwAApAwA3AwAgAUEgakGgmcAAKQMANwMAIAFBKGpBqJnAACkDADcDACABQTBqQbCZwAApAwA3AwAgAUE4akG4mcAAKQMANwMAIAFBQGtBwJnAACkDADcDACABQcgAakHImcAAKQMANwMAAkACQEHAAEEBEKEBIgMEQCACQsAANwKMASACIAM2AogBIAJBiAFqIAJBwAAQXgJAIAIoAowBIgQgAigCkAEiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCiAEhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCjAEgAiAENgKIAQsgAigCiAEhBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFBkJnAACkDADcDACABQQhqQZiZwAApAwA3AwAgAUEQakGgmcAAKQMANwMAIAFBGGpBqJnAACkDADcDACABQSBqQbCZwAApAwA3AwAgAUEoakG4mcAAKQMANwMAIAFBMGpBwJnAACkDADcDACABQThqQciZwAApAwA3AwAgACADNgIEIAAgBDYCACACQdABaiQADwtBwABBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBgEKfyMAQTBrIgIkACACQSRqQYCHwAA2AgAgAkEDOgAoIAJCgICAgIAENwMIIAIgADYCICACQQA2AhggAkEANgIQAn8CQAJAAkAgASgCCCIDBEAgASgCACEFIAEoAgQiCCABQQxqKAIAIgYgBiAISxsiBkUNASABQRRqKAIAIQcgASgCECEJIAAgBSgCACAFKAIEQYyHwAAoAgARAwANAyAFQQhqIQECQAJAA0AgAiADQQRqKAIANgIMIAIgA0Ecai0AADoAKCACIANBCGooAgA2AgggA0EYaigCACEAQQAhBAJAAkACQCADQRRqKAIAQQFrDgIAAgELIAAgB08NAyAAQQN0IAlqIgooAgRBA0cNASAKKAIAKAIAIQALQQEhBAsgAiAANgIUIAIgBDYCECADQRBqKAIAIQBBACEEAkACQAJAIANBDGooAgBBAWsOAgACAQsgACAHTw0EIABBA3QgCWoiCigCBEEDRw0BIAooAgAoAgAh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IQEgACgCGCEAA0AgBkF/aiIGRQRAQQAPCyAAIAcgASgCEBEBAEUNAAsLIAULtwUBBH8jAEGQAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJBADsBNCACQQA2ATYgAkEoNgIwIAJBgAFqIAJB0ABqKQMANwMAIAJB+ABqIAJByABqKQMANwMAIAJB8ABqIAJBQGspAwA3AwAgAkHoAGogAkE4aikDADcDACACQYgBaiACQdgAaigCADYCACACIAIpAzA3A2AgAkEgaiACQfwAaikCADcDACACQRhqIAJB9ABqKQIANwMAIAJBEGogAkHsAGopAgA3AwAgAkEoaiACQYQBaikCADcDACACIAIpAmQ3AwggASACQQhqEE0gAUIANwMAIAFBADYCMCABQdCXwAApAwA3AwggAUEQakHYl8AAKQMANwMAIAFBGGpB4JfAACkDADcDACABQSBqQeiXwAApAwA3AwAgAUEoakHwl8AAKQMANwMAAkACQEEoQQEQoQEiAwRAIAJCKDcCZCACIAM2AmAgAkHgAGogAkEIakEoEF4CQCACKAJkIgQgAigCaCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AmQgAiAENgJgCyACKAJgIQQgAUIANwMAIAFBADYCMCABQQhqIgFB0JfAACkDADcDACABQQhqQdiXwAApAwA3AwAgAUEQakHgl8AAKQMANwMAIAFBGGpB6JfAACkDADcDACABQSBqQfCXwAApAwA3AwAgACADNgIEIAAgBDYCACACQZABaiQADwtBKEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8YEAQR/IwBBoAFrIgIkACACQTpqQgA3AQAgAkHCAGpBADsBACACQcQAakIANwIAIAJBzABqQgA3AgAgAkHUAGpCADcCACACQdwAakIANwIAIAJBADsBNCACQQA2ATYgAkEwNgIwIAJBkAFqIAJB2ABqKQMANwMAIAJBiAFqIAJB0ABqKQMANwMAIAJBgAFqIAJByABqKQMANwMAIAJB+ABqIAJBQGspAwA3AwAgAkHwAGogAkE4aikDADcDACACQZgBaiACQeAAaigCADYCACACIAIpAzA3A2ggAkEgaiACQYwBaikCADcDACACQRhqIAJBhAFqKQIANwMAIAJBEGogAkH8AGopAgA3AwAgAkEIaiACQfQAaikCADcDACACQShqIAJBlAFqKQIANwMAIAIgAikCbDcDACABIAIQYyABQQBByAEQkQEiBUEANgLIAQJAAkBBMEEBEKEBIgEEQCACQjA3AmwgAiABNgJoIAJB6ABqIAJBMBBeAkAgAigCbCIDIAIoAnAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCaCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJsIAIgAzYCaAsgAigCaCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJBoAFqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALxgQBBH8jAEGgAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkEAOwE0IAJBADYBNiACQTA2AjAgAkGQAWogAkHYAGopAwA3AwAgAkGIAWogAkHQAGopAwA3AwAgAkGAAWogAkHIAGopAwA3AwAgAkH4AGogAkFAaykDADcDACACQfAAaiACQThqKQMANwMAIAJBmAFqIAJB4ABqKAIANgIAIAIgAikDMDcDaCACQSBqIAJBjAFqKQIANwMAIAJBGGogAkGEAWopAgA3AwAgAkEQaiACQfwAaikCADcDACACQQhqIAJB9ABqKQIANwMAIAJBKGogAkGUAWopAgA3AwAgAiACKQJsNwMAIAEgAhBkIAFBAEHIARCRASIFQQA2AsgBAkACQEEwQQEQoQEiAQRAIAJCMDcCbCACIAE2AmggAkHoAGogAkEwEF4CQCACKAJsIgMgAigCcCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJoIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AmwgAiADNgJoCyACKAJoIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkGgAWokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAu8BAEEfyMAQaADayICJAAgAkHyAmpCADcBACACQfoCakEAOwEAIAJB/AJqQgA3AgAgAkGEA2pCADcCACACQYwDakIANwIAIAJBlANqQgA3AgAgAkEAOwHsAiACQQA2Ae4CIAJBMDYC6AIgAkHYAGogAkGQA2opAwA3AwAgAkHQAGogAkGIA2opAwA3AwAgAkHIAGogAkGAA2opAwA3AwAgAkFAayACQfgCaikDADcDACACQThqIAJB8AJqKQMANwMAIAJB4ABqIAJBmANqKAIANgIAIAIgAikD6AI3AzAgAkEgaiACQdQAaikCADcDACACQRhqIAJBzABqKQIANwMAIAJBEGogAkHEAGopAgA3AwAgAkEIaiACQTxqKQIANwMAIAJBKGogAkHcAGopAgA3AwAgAiACKQI0NwMAIAJBMGogAUG4AhCLARogAkEwaiACEGMCQAJAQTBBARChASIDBEAgAkIwNwI0IAIgAzYCMCACQTBqIAJBMBBeAkAgAigCNCIEIAIoAjgiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCMCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgI0IAIgBDYCMAsgAigCMCEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALvAQBBH8jAEGgA2siAiQAIAJB8gJqQgA3AQAgAkH6AmpBADsBACACQfwCakIANwIAIAJBhANqQgA3AgAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB7AIgAkEANgHuAiACQTA2AugCIAJB2ABqIAJBkANqKQMANwMAIAJB0ABqIAJBiANqKQMANwMAIAJByABqIAJBgANqKQMANwMAIAJBQGsgAkH4AmopAwA3AwAgAkE4aiACQfACaikDADcDACACQeAAaiACQZgDaigCADYCACACIAIpA+gCNwMwIAJBIGogAkHUAGopAgA3AwAgAkEYaiACQcwAaikCADcDACACQRBqIAJBxABqKQIANwMAIAJBCGogAkE8aikCADcDACACQShqIAJB3ABqKQIANwMAIAIgAikCNDcDACACQTBqIAFBuAIQiwEaIAJBMGogAhBkAkACQEEwQQEQoQEiAwRAIAJCMDcCNCACIAM2AjAgAkEwaiACQTAQXgJAIAIoAjQiBCACKAI4IgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAjAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCNCACIAQ2AjALIAIoAjAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC7wEAQR/IwBBwAJrIgIkACACQZICakIANwEAIAJBmgJqQQA7AQAgAkGcAmpCADcCACACQaQCakIANwIAIAJBrAJqQgA3AgAgAkG0AmpCADcCACACQQA7AYwCIAJBADYBjgIgAkEwNgKIAiACQdgAaiACQbACaikDADcDACACQdAAaiACQagCaikDADcDACACQcgAaiACQaACaikDADcDACACQUBrIAJBmAJqKQMANwMAIAJBOGogAkGQAmopAwA3AwAgAkHgAGogAkG4AmooAgA2AgAgAiACKQOIAjcDMCACQSBqIAJB1ABqKQIANwMAIAJBGGogAkHMAGopAgA3AwAgAkEQaiACQcQAaikCADcDACACQQhqIAJBPGopAgA3AwAgAkEoaiACQdwAaikCADcDACACIAIpAjQ3AwAgAkEwaiABQdgBEIsBGiACQTBqIAIQHwJAAkBBMEEBEKEBIgMEQCACQjA3AjQgAiADNgIwIAJBMGogAkEwEF4CQCACKAI0IgQgAigCOCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIwIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjQgAiAENgIwCyACKAIwIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAmokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGs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AkHwAGokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvMBAEEfyMAQdABayICJAAgAkHKAGpCADcBACACQdIAakEAOwEAIAJB1ABqQgA3AgAgAkHcAGpCADcCACACQeQAakIANwIAIAJB7ABqQgA3AgAgAkH0AGpCADcCACACQfwAakEAOgAAIAJB/QBqQQA2AAAgAkGBAWpBADsAACACQYMBakEAOgAAIAJBADsBRCACQQA2AUYgAkHAADYCQCACQYgBaiACQUBrQcQAEIsBGiACQThqIAJBxAFqKQIANwMAIAJBMGogAkG8AWopAgA3AwAgAkEoaiACQbQBaikCADcDACACQSBqIAJBrAFqKQIANwMAIAJBGGogAkGkAWopAgA3AwAgAkEQaiACQZwBaikCADcDACACQQhqIAJBlAFqKQIANwMAIAIgAikCjAE3AwAgASACEFsgAUEAQcgBEJEBIgVBADYCyAECQAJAQcAAQQEQoQEiAQRAIAJCwAA3AowBIAIgATYCiAEgAkGIAWogAkHAABBeAkAgAigCjAEiAyACKAKQASIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAKIASEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgKMASACIAM2AogBCyACKAKIASEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB0AFqJAAPC0HAAEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC8wEAQR/IwBB0AFrIgIkACACQcoAakIANwEAIAJB0gBqQQA7AQAgAkHUAGpCADcCACACQdwAakIANwIAIAJB5ABqQgA3AgAgAkHsAGpCADcCACACQfQAakIANwIAIAJB/ABqQQA6AAAgAkH9AGpBADYAACACQYEBakEAOwAAIAJBgwFqQQA6AAAgAkEAOwFEIAJBADYBRiACQcAANgJAIAJBiAFqIAJBQGtBxAAQiwEaIAJBOGogAkHEAWopAgA3AwAgAkEwaiACQbwBaikCADcDACACQShqIAJBtAFqKQIANwMAIAJBIGogAkGsAWopAgA3AwAgAkEYaiACQaQBaikCADcDACACQRBqIAJBnAFqKQIANwMAIAJBCGogAkGUAWopAgA3AwAgAiACKQKMATcDACABIAIQXCABQQBByAEQkQEiBUEANgLIAQJAAkBBwABBARChASIBBEAgAkLAADcCjAEgAiABNgKIASACQYgBaiACQcAAEF4CQCACKAKMASIDIAIoApABIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAogBIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AowBIAIgAzYCiAELIAIoAogBIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHQAWokAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQWwJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQXAJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEHgAmsiAiQAIAJBogJqQgA3AQAgAkGqAmpBADsBACACQawCakIANwIAIAJBtAJqQgA3AgAgAkG8AmpCADcCACACQcQCakIANwIAIAJBzAJqQgA3AgAgAkHUAmpBADoAACACQdUCakEANgAAIAJB2QJqQQA7AAAgAkHbAmpBADoAACACQQA7AZwCIAJBADYBngIgAkHAADYCmAIgAkFAayACQZgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3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AABzOgAAIAVBAWoiBUHIAEcNAAsgABAOIAZByABJDQJByAAhBSACQcgAaiECIAhByABqIQgMAAsACyACIARqIgYgBEkNAiAGQcgASw0DIAAgBGpBzAFqIAEgAhCLARogACgCyAEgAmohBwwBCyAAQcwBaiABIARqIAcQiwEaCyAAIAc2AsgBIANBQGskAA8LIAQgBkHAm8AAEH4ACyAGQcgAQcCbwAAQfQALIARByABB0JvAABB+AAsgBCACQeCbwAAQfQALIANBNGpBBjYCACADQSRqQQI2AgAgA0IDNwIUIANBuJ7AADYCECADQQY2AiwgAyADQQxqNgI4IANB3J7AADYCPCADIANBKGo2AiAgAyADQTxqNgIwIAMgA0E4ajYCKCADQRBqQeCewAAQkAEAC5sEAQd/IwBBQGoiAyQAAkACQAJAAkACQAJAAkBB6AAgACgCyAEiBGsiBiACTQRAIAQEQCAEQekATw0GIAAgBGpBzAFqIAEgBhCLARogAiAGayECIAEgBmohAQNAIAAgBWoiBCAELQAAIARBzAFqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDgsgAiACQegAcCIHayEEIAIgB0kNBiAEQegASQ0BIAFB6ABqIQggASECIAQhBkHoACEFA0AgAyAFNgIMIAVB6ABHDQggBkGYf2ohBkEAIQUDQCAAIAVqIgkgCS0AACACIAVqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDiAGQegASQ0CQegAIQUgAkHoAGohAiAIQegAaiEIDAALAAsgAiAEaiIGIARJDQIgBkHoAEsNAyAAIARqQcwBaiABIAIQiwEaIAAoAsgBIAJqIQcMAQsgAEHMAWogASAEaiAHEIsBGgsgACAHNgLIASADQUBrJAAPCyAEIAZBwJvAABB+AAsgBkHoAEHAm8AAEH0ACyAEQegAQdCbwAAQfgALIAQgAkHgm8AAEH0ACyADQTRqQQY2AgAgA0EkakECNgIAIANCAzcCFCADQbiewAA2AhAgA0EGNgIsIAMgA0EMajYCOCADQdiewAA2AjwgAyADQShqNgIgIAMgA0E8ajYCMCADIANBOGo2AiggA0EQakHgnsAAEJABAAvkAwEEfyMAQcABayICJAAgAkGiAWpCADcBACACQaoBakEAOwEAIAJBrAFqQgA3AgAgAkG0AWpCADcCACACQQA7AZwBIAJBADYBngEgAkEgNgKYASACQUBrIAJBsAFqKQMANwMAIAJBOGogAkGoAWopAwA3AwAgAkEwaiACQaABaikDADcDACACQcgAaiACQbgBaigCADYCACACIAIpA5gBNwMoIAJBGGogAkE8aikCADcDACACQRBqIAJBNGopAgA3AwAgAkEgaiACQcQAaikCADcDACACIAIpAiw3AwggAkEoaiABQfAAEIsBGiACQShqIAJBCGoQOwJAAkBBIEEBEKEBIgMEQCACQiA3AiwgAiADNgIoIAJBKGogAkEIakEgEF4CQCACKAIsIgQgAigCMCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIoIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiwgAiAENgIoCyACKAIoIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAWokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBAEFfyMAQYABayICJAAgAkHyAGpCADcBACACQfoAakEAOwEAIAJBADsBbCACQQA2AW4gAkEQNgJoIAJBGGogAkHwAGoiBCkDADcDACACQSBqIAJB+ABqKAIANgIAIAJBCGoiBSACQRxqKQIANwMAIAIgAikDaDcDECACIAIpAhQ3AwAgAkEQaiABQdQAEIsBGgJAAkACQCACKAIQIgNBEEkEQCACQRBqQQRyIgYgA2pBECADayIDIAMQkQEaIAJBADYCECACQSRqIgMgBhALIAQgAkHcAGopAgA3AwAgAiACQdQAaikCADcDaCADIAJB6ABqEAsgBSACQSxqKQIANwMAIAIgAikCJDcDAEEQQQEQoQEiA0UNASACQhA3AhQgAiADNgIQIAJBEGogAkEQEF4CQCACKAIUIgQgAigCGCIDRgRAIAQhAwwBCyAEIANJDQMgBEUNACACKAIQIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0FCyACIAM2AhQgAiAENgIQCyACKAIQIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGAAWokAA8LQbCawABBFyACQegAakGgl8AAQbCXwAAQeQALQRBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqEFogAUIANwMAIAFBADYCHCABQfiXwAApAwA3AwggAUEQakGAmMAAKQMANwMAIAFBGGpBiJjAACgCADYCAAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUIANwMAIAFBADYCHCABQQhqIgFB+JfAACkDADcDACABQQhqQYCYwAApAwA3AwAgAUEQakGImMAAKAIANgIAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqECAgAUEANgIcIAFCADcDACABQRhqQYiYwAAoAgA2AgAgAUEQakGAmMAAKQMANwMAIAFB+JfAACkDADcDCAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUEANgIcIAFCADcDACABQQhqIgFBEGpBiJjAACgCADYCACABQQhqQYCYwAApAwA3AwAgAUH4l8AAKQMANwMAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvlAwEEfyMAQfAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQTRqQgA3AgAgAkE8akIANwIAIAJBADsBJCACQQA2ASYgAkEgNgIgIAJB4ABqIAJBOGopAwA3AwAgAkHYAGogAkEwaikDADcDACACQdAAaiACQShqKQMANwMAIAJB6ABqIAJBQGsoAgA2AgAgAiACKQMgNwNIIAJBEGogAkHcAGopAgA3AwAgAkEIaiACQdQAaikCADcDACACQRhqIAJB5ABqKQIANwMAIAIgAikCTDcDACABIAIQZiABQQBByAEQkQEiBUEANgLIAQJAAkBBIEEBEKEBIgEEQCACQiA3AkwgAiABNgJIIAJByABqIAJBIBBeAkAgAigCTCIDIAIoAlAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCSCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJMIAIgAzYCSAsgAigCSCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB8ABqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAAL5QMBBH8jAEHwAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBPGpCADcCACACQQA7ASQgAkEANgEmIAJBIDYCICACQeAAaiACQThqKQMANwMAIAJB2ABqIAJBMGopAwA3AwAgAkHQAGogAkEoaikDADcDACACQegAaiACQUBrKAIANgIAIAIgAikDIDcDSCACQRBqIAJB3ABqKQIANwMAIAJBCGogAkHUAGopAgA3AwAgAkEYaiACQeQAaikCADcDACACIAIpAkw3AwAgASACEGcgAUEAQcgBEJEBIgVBADYCyAECQAJAQSBBARChASIBBEAgAkIgNwJMIAIgATYCSCACQcgAaiACQSAQXgJAIAIoAkwiAyACKAJQIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkghBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCTCACIAM2AkgLIAIoAkghAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQfAAaiQADwtBIEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9wDAQR/IwBBoANrIgIkACACQYIDakIANwEAIAJBigNqQQA7AQAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB/AIgAkEANgH+AiACQSA2AvgCIAJBOGogAkGQA2opAwA3AwAgAkEwaiACQYgDaikDADcDACACQShqIAJBgANqKQMANwMAIAJBQGsgAkGYA2ooAgA2AgAgAiACKQP4AjcDICACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAJBGGogAkE8aikCADcDACACIAIpAiQ3AwAgAkEgaiABQdgCEIsBGiACQSBqIAIQZgJAAkBBIEEBEKEBIgMEQCACQiA3AiQgAiADNgIgIAJBIGogAkEgEF4CQCACKAIkIgQgAigCKCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiQgAiAENgIgCyACKAIgIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvcAwEEfyMAQaADayICJAAgAkGCA2pCADcBACACQYoDakEAOwEAIAJBjANqQgA3AgAgAkGUA2pCADcCACACQQA7AfwCIAJBADYB/gIgAkEgNgL4AiACQThqIAJBkANqKQMANwMAIAJBMGogAkGIA2opAwA3AwAgAkEoaiACQYADaikDADcDACACQUBrIAJBmANqKAIANgIAIAIgAikD+AI3AyAgAkEQaiACQTRqKQIANwMAIAJBCGogAkEsaikCADcDACACQRhqIAJBPGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHYAhCLARogAkEgaiACEGcCQAJAQSBBARChASIDBEAgAkIgNwIkIAIgAzYCICACQSBqIAJBIBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAAL0wMBBH8jAEHgAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBHDYCICACQTxqQQA2AgAgAkEAOwEkIAJBADYBJiACQdgAaiACQThqKQMANwMAIAJB0ABqIAJBMGopAwA3AwAgAkHIAGogAkEoaikDADcDACACIAIpAyA3A0AgAkEYaiACQdwAaigCADYCACACQRBqIAJB1ABqKQIANwMAIAJBCGogAkHMAGopAgA3AwAgAiACKQJENwMAIAEgAhBoIAFBAEHIARCRASIFQQA2AsgBAkACQEEcQQEQoQEiAQRAIAJCHDcCRCACIAE2AkAgAkFAayACQRwQXgJAIAIoAkQiAyACKAJIIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkAhBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCRCACIAM2AkALIAIoAkAhAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQeAAaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9MDAQR/IwBB4ABrIgIkACACQSpqQgA3AQAgAkEyakEAOwEAIAJBNGpCADcCACACQRw2AiAgAkE8akEANgIAIAJBADsBJCACQQA2ASYgAkHYAGogAkE4aikDADcDACACQdAAaiACQTBqKQMANwMAIAJByABqIAJBKGopAwA3AwAgAiACKQMgNwNAIAJBGGogAkHcAGooAgA2AgAgAkEQaiACQdQAaikCADcDACACQQhqIAJBzABqKQIANwMAIAIgAikCRDcDACABIAIQaSABQQBByAEQkQEiBUEANgLIAQJAAkBBHEEBEKEBIgEEQCACQhw3AkQgAiABNgJAIAJBQGsgAkEcEF4CQCACKAJEIgMgAigCSCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJAIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AkQgAiADNgJACyACKAJAIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHgAGokAA8LQRxBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAvkAwIJfwF+IwBBoAFrIgIkACACQUBrIAFBBGoQciABKAIAIQggAkH4AGoiAyABQTxqKQAANwMAIAJB8ABqIgQgAUE0aikAADcDACACQegAaiIFIAFBLGopAAA3AwAgAkHgAGoiBiABQSRqKQAANwMAIAJB2ABqIgcgAUEcaikAADcDACACIAEpABQ3A1AgAkGQAWogAUHEAGoQciACQQhqIgkgBykDADcDACACQRBqIgcgBikDADcDACACQRhqIgYgBSkDADcDACACQSBqIgUgBCkDADcDACACQShqIgQgAykDADcDACACQTBqIgMgAikDkAEiCzcDACACQThqIgogAkGYAWopAwA3AwAgAiALNwOAASACIAIpA1A3AwBB1ABBBBChASIBRQRAQdQAQQRBtKXAACgCACIAQQIgABsRAAAACyABIAg2AgAgASACKQNANwIEIAEgAikDADcCFCABQQxqIAJByABqKQMANwIAIAFBHGogCSkDADcCACABQSRqIAcpAwA3AgAgAUEsaiAGKQMANwIAIAFBNGogBSkDADcCACABQTxqIAQpAwA3AgAgAUHEAGogAykDADcCACABQcwAaiAKKQMANwIAIABB9I/AADYCBCAAIAE2AgAgAkGgAWokAAvLAwEEfyMAQaADayICJAAgAkGKA2pCADcBACACQZIDakEAOwEAIAJBlANqQgA3AgAgAkEcNgKAAyACQZwDakEANgIAIAJBADsBhAMgAkEANgGGAyACQThqIAJBmANqKQMANwMAIAJBMGogAkGQA2opAwA3AwAgAkEoaiACQYgDaikDADcDACACIAIpA4ADNwMgIAJBGGogAkE8aigCADYCACACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAIgAikCJDcDACACQSBqIAFB4AIQiwEaIAJBIGogAhBpAkACQEEcQQEQoQEiAwRAIAJCHDcCJCACIAM2AiAgAkEgaiACQRwQXgJAIAIoAiQiBCACKAIoIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAiAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCJCACIAQ2AiALIAIoAiAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8sDAQR/IwBBoANrIgIkACACQYoDakIANwEAIAJBkgNqQQA7AQAgAkGUA2pCADcCACACQRw2AoADIAJBnANqQQA2AgAgAkEAOwGEAyACQQA2AYYDIAJBOGogAkGYA2opAwA3AwAgAkEwaiACQZADaikDADcDACACQShqIAJBiANqKQMANwMAIAIgAikDgAM3AyAgAkEYaiACQTxqKAIANgIAIAJBEGogAkE0aikCADcDACACQQhqIAJBLGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHgAhCLARogAkEgaiACEGgCQAJAQRxBARChASIDBEAgAkIcNwIkIAIgAzYCICACQSBqIAJBHBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EcQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALywMBBH8jAEGwAWsiAiQAIAJBmgFqQgA3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HCIEayIFIAJNBEAgAEEIaiEHIAQEQCAEQcEATw0GIAQgAEEgaiIEaiABIAUQiwEaIAcgBBAHIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAcgBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQSBqIAEgAhCLARogACgCHCACaiEFDAELIABBIGogASAIaiAFEIsBGgsgACAFNgIcIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQALtAMBBn8jAEFAaiIDJAAgACAAKQMAIAKtfDcDAAJAAkACQAJAAkACQEHAACAAKAIIIgRrIgUgAk0EQCAAQcwAaiEHIAQEQCAEQcEATw0GIAQgAEEMaiIEaiABIAUQiwEaIAcgBBAKIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAogBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQQxqIAEgAhCLARogACgCCCACaiEFDAELIABBDGogASAIaiAFEIsBGgsgACAFNgIIIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQAL0QMCBX8CfiAAQdQAaiECIABBEGohAyAAQQhqKQMAIQYgACkDACEHAkACQCAAKAJQIgFBgAFGBEAgAyACQQEQDEEAIQEgAEEA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AXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACAAIAAoAgRBAXI2AgQgASACEBQMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgAEEEaigCACIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIABBBGogBCABQQFxckECcjYCACAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBAUCyAAQQhqIQMLIAMLiwMCBn8BfiMAQfAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaikDADcDACACQeAAaiIFIAFBIGopAwA3AwAgAkHoAGoiBiABQShqKQMANwMAIAIgASkDCDcDSCABKQMAIQggAkEIaiABQTRqEGUgASgCMCEHQfgAQQgQoQEiAUUEQEH4AEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAINwMAIAEgAikDSDcDCCABIAc2AjAgASACKQMINwI0IAFBEGogAykDADcDACABQRhqIAQpAwA3AwAgAUEgaiAFKQMANwMAIAFBKGogBikDADcDACABQTxqIAJBEGopAwA3AgAgAUHEAGogAkEYaikDADcCACABQcwAaiACQSBqKQMANwIAIAFB1ABqIAJBKGopAwA3AgAgAUHcAGogAkEwaikDADcCACABQeQAaiACQThqKQMANwIAIAFB7ABqIAJBQGspAwA3AgAgAEHgjMAANgIEIAAgATYCACACQfAAaiQAC4YDAQR/IwBBkAFrIgIkACACQYIBakIANwEAIAJBigFqQQA7AQAgAkEAOwF8IAJBADYBfiACQRA2AnggAkEgaiACQYABaikDADcDACACQShqIAJBiAFqKAIANgIAIAJBEGogAkEkaikCADcDACACIAIpA3g3AxggAiACKQIcNwMIIAJBGGogAUHgABCLARogAkEYaiACQQhqEF0CQAJAQRBBARChASIDBEAgAkIQNwIcIAIgAzYCGCACQRhqIAJBCGpBEBBeAkAgAigCHCIEIAIoAiAiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCGCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIcIAIgBDYCGAsgAigCGCEEIAEQ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QT8gBmsQkQEaQcAAIAAoAjBrQQdNBEAgBCADEAYgACgCMCICQcEATw0CIABBNGpBACACEJEBGgsgAEHsAGogB0IDhjcCACAEIAMQBiAAQQA2AjAgASAAKAIINgAAIAEgAEEMaigCADYABCABIABBEGooAgA2AAggASAAQRRqKAIANgAMIAEgAEEYaigCADYAECABIABBHGooAgA2ABQgASAAQSBqKAIANgAYIAEgAEEkaigCADYAHCABIABBKGooAgA2ACAgASAAQSxqKAIANgAkDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAvwAgIGfwF+IwBBEGsiBCQAIABBDGohBSAAQcwAaiEDIAApAwAhCAJAAkAgACgCCCICQcAARgRAIAMgBRAKQQAhAiAAQQA2AggMAQsgAkE/Sw0BCyAAQQhqIgYgAmpBBGpBgAE6AAAgACAAKAIIIgdBAWoiAjYCCAJAIAJBwQBJBEAgAiAGakEEakEAQT8gB2sQkQEaQcAAIAAoAghrQQdNBEAgAyAFEAogACgCCCICQcEATw0CIABBDGpBACACEJEBGgsgAEHEAGogCEIDhjcCACADIAUQCiAAQQA2AgggBEEIaiICIABB3ABqNgIEIAIgAzYCACAEKAIMIAQoAggiAGtBAnYiA0EEIANBBEkbIgIEQEEAIQMDQCABIAAoAgA2AAAgAEEEaiEAIAFBBGohASADQQFqIgMgAkkNAAsLIARBEGokAA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAAL1AIBAX8gABBUIAEgACgCTCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAAgASAAQdAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAQgASAAQdQAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAggASAAQdgAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAwgASAAQdwAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABAgASAAQeAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABQgASAAQeQAaigCACIAQRh0IABBCHRBgID8B3FyIABBCHZBgP4DcSAAQRh2cnI2ABgL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQeCQwAA2AgQgACABNgIAIAJB4ABqJAAL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQYSRwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQYSNwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQbCNwAA2AgQgACABNgIAIAJB4ABqJAAL3QICBX8BfiAAQQxqIQIgAEHMAGohAyAAKQMAIQYCQAJAIAAoAggiAUHAAEYEQCADIAJBARAEQQAhASAAQQA2AggMAQsgAUE/Sw0BCyAAQQhqIgQgAWpBBGpBgAE6AAAgACAAKAIIIgVBAWoiATYCCAJAIAFBwQBJBEAgASAEakEEakEAQT8gBWsQkQEaQcAAIAAoAghrQQdNBEAgAyACQQEQBCAAKAIIIgFBwQBPDQIgAEEMakEAIAEQkQEaCyAAQcQAaiAGQiiGQoCAgICAgMD/AIMgBkI4hoQgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcCACADIAJBARAEIABBADYCCA8LIAFBwABBgJrAABB+AAsgAUHAAEGQmsAAEH0ACyABQcAAQaCawAAQfAALvgICBX8BfiMAQTBrIgQkAEEnIQICQCAAQpDOAFQEQCAAIQcMAQsDQCAEQQlqIAJqIgNBfGogACAAQpDOAIAiB0LwsX9+fKciBUH//wNxQeQAbiIGQQF0QdqIwABqLwAAOwAAIANBfmogBkGcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAACACQXxqIQIgAEL/wdcvViAHIQANAAsLIAenIgNB4wBKBEAgAkF+aiICIARBCWpqIAenIgVB//8DcUHkAG4iA0Gcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAAAsCQCADQQpOBEAgAkF+aiICIARBCWpqIANBAXRB2ojAAGovAAA7AAAMAQsgAkF/aiICIARBCWpqIANBMGo6AAALIAFByKDAAEEAIARBCWogAmpBJyACaxAYIARBMGokAAu/AgEDfyMAQRBrIgIkAAJAIAAoAgAiAAJ/AkAgAUGAAU8EQCACQQA2AgwgAUGAEEkNASABQYCABEkEQCACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAMLIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyAAKAIIIgMgAEEEaigCAEYEfyAAQQEQaiAAKAIIBSADCyAAKAIAaiABOgAAIAAgACgCCEEBajYCCAwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgsiARBqIABBCGoiAygCACIEIAAoAgBqIAJBDGogARCLARogAyABIARqNgIACyACQRBqJABBAAvLAgEIfyMAQYABayIBQShqIgJCADcDACABQSBqIgNCADcDACABQRhqIgRCADcDACABQRBqIgVCADcDACABQQhqIgZCADcDACABQgA3AwAgAUHaAGpCADcBACABQeIAakEAOwEAIAFBEDYCUCABQQA7AVQgAUEANgFWIAFB+ABqIAFB4ABqKAIANgIAIAFB8ABqIAFB2ABqKQMANwMAIAFByABqIgcgAUH0AGopAgA3AwAgASABKQNQNwNoIAEgASkCbDcDQCABQThqIgggBykDADcDACABIAEpA0A3AzAgAEHMAGogCCkDADcAACAAQcQAaiABKQMwNwAAIABBPGogAikDADcAACAAQTRqIAMpAwA3AAAgAEEsaiAEKQMANwAAIABBJGogBSkDADcAACAAQRxqIAYpAwA3AAAgACABKQMANwAUIABBADYCAAuxAgEDfyMAQYABayIEJAAgACgCACEAAkACQAJ/AkAgASgCACIDQRBxRQRAIAAoAgAhAiADQSBxDQEgAq0gARBVDAILIAAoAgAhAkEAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEF/aiEAIAJBBHYiAg0ACyAAQYABaiICQYEBTw0CIAFB2IvAAEECIAAgBGpBgAFqQQAgAGsQGAwBC0EAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPDQIgAUHYi8AAQQIgACAEakGAAWpBACAAaxAYCyAEQYABaiQADwsgAkGAAUHIi8AAEH4ACyACQYABQciLwAAQfgALrAICA38CfiAAIAApAwAiBiACrUIDhnwiBzcDACAAQQhqIgMgAykDACAHIAZUrXw3AwACQAJAQYABIAAoAlAiA2siBCACTQRAIABBEGoiBSADBEAgA0GBAU8NAiADIABB1ABqIgNqIAEgBBCLARogAEEANgJQIAUgA0EBEAwgAiAEayECIAEgBGohAQsgASACQQd2EAwgAkH/AHEiA0GBAU8NAiAAQdQAaiABIAJBgH9xaiADEIsBGiAAIAM2AlAPCwJAIAIgA2oiBCADTwRAIARBgAFLDQEgACADakHUAGogASACEIsBGiAAIAAoAlAgAmo2AlAPCyADIARB0JnAABB+AAsgBEGAAUHQmcAAEH0ACyADQYABQeCZwAAQfgALIANBgAFB8JnAABB9AAu8AgIFfwF+IABBIGohAyAAQQhqIQQgACkDACEHAkACQCAAKAIcIgJBwABGBEAgBCADEAdBACECIABBADYCHAwBCyACQT9LDQELIABBHGoiBSACakEEakGAAToAACAAIAAoAhwiBkEBaiICNgIcAkAgAkHBAEkEQCACIAVqQQRqQQBBPyAGaxCRARpBwAAgACgCHGtBB00EQCAEIAMQByAAKAIcIgJBwQBPDQIgAEEgakEAIAIQkQEaCyAAQdgAaiAHQgOGNwIAIAQgAxAHIABBADYCHCABIAAoAgg2AAAgASAAQQxqKAIANgAEIAEgAEEQaigCADYACCABIABBFGooAgA2AAwgASAAQRhqKAIANgAQDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAu1AgEDfyMAQRBrIgQkACAAKALIASICQccATQRAIAAgAmpBzAFqQQY6AAAgAkEBaiIDQcgARwRAIAAgA2pBzAFqQQBBxwAgAmsQkQEaC0EAIQIgAEEANgLIASAAQZMCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkHIAEcNAAsgABAOIAEgACkAADcAACABQThqIABBOGopAAA3AAAgAUEwaiAAQTBqKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGknsAAEHkAC7UCAQN/IwBBEGsiBCQAIAAoAsgBIgJBxwBNBEAgACACakHMAWpBAToAACACQQFqIgNByABHBEAgACADakHMAWpBAEHHACACaxCRARoLQQAhAiAAQQA2AsgBIABBkwJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQcgARw0ACyAAEA4gASAAKQAANwAAIAFBOGogAEE4aikAADcAACABQTBqIABBMGopAAA3AAAgAUEoaiAAQShqKQAANwAAIAFBIGogAEEgaikAADcAACABQRhqIABBGGopAAA3AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQeSdwAAQeQALswICBX8BfiAAQQxqIQMgAEHMAGohBCAAKQMAIQcCQAJAIAAoAggiAkHAAEYEQCAEIAMQDUEAIQIgAEEANgIIDAELIAJBP0sNAQsgAEEIaiIFIAJqQQRqQYABOgAAIAAgACgCCCIGQQFqIgI2AggCQCACQcEASQRAIAIgBWpBBGpBAEE/IAZrEJEBGkHAACAAKAIIa0EHTQRAIAQgAxANIAAoAggiAkHBAE8NAiAAQQxqQQAgAhCRARoLIABBxABqIAdCA4Y3AgAgBCADEA0gAEEANgIIIAEgACgCTDYAACABIABB0ABqKAIANgAEIAEgAEHUAGooAgA2AAggASAAQdgAaigCADYADA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAALhgIBBH8CQCAAQQRqKAIAIgYgAEEIaigCACIFayACTwRAIAAoAgAhBAwBCwJAAn8gAiAFaiIDIAVPBEBBACAGQQF0IgUgAyAFIANLGyIDQQggA0EISxsiA0EASA0BGgJAIAAoAgBBACAGGyIERQRAIANBARChASIEDQQMAQsgAyAGRg0DIAZFBEAgA0EBEKEBIgRFDQEMBAsgBCAGQQEgAxCaASIEDQMLQQEMAQtBAAsiBARAIAMgBEG0pcAAKAIAIgBBAiAAGxEAAAALEJsBAAsgACAENgIAIABBBGogAzYCACAAQQhqKAIAIQULIAQgBWogASACEIsBGiAAQQhqIAIgBWo2AgALjAIBA38gACAAKQMAIAKtQgOGfDcDAAJAAkBBwAAgACgCCCIDayIEIAJNBEAgAEHMAGoiBSADBEAgA0HBAE8NAiADIABBDGoiA2ogASAEEIsBGiAAQQA2AgggBSADQQEQBCACIARrIQIgASAEaiEBCyABIAJBBnYQBCACQT9xIgNBwQBPDQIgAEEMaiABIAJBQHFqIAMQiwEaIAAgAzYCCA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQQxqIAEgAhCLARogACAAKAIIIAJqNgIIDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEG8jMAANgIEIAAgATYCACACQdAAaiQAC4gCAQN/IAAgACkDACACrXw3AwACQAJAQcAAIAAoAhwiA2siBCACTQRAIABBCGoiBSADBEAgA0HBAE8NAiADIABBIGoiA2ogASAEEIsBGiAAQQA2AhwgBSADQQEQCCACIARrIQIgASAEaiEBCyABIAJBBnYQCCACQT9xIgNBwQBPDQIgAEEgaiABIAJBQHFqIAMQiwEaIAAgAzYCHA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQSBqIAEgAhCLARogACAAKAIcIAJqNgIcDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEGokcAANgIEIAAgATYCACACQdAAaiQAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBBjoAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGUnsAAEHkAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBAToAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHUncAAEHkAC/MBAQR/IwBBkAFrIgIkACACQQA2AgAgAkEEciEFA0AgAyAFaiABIANqLQAAOgAAIAIgAigCAEEBaiIENgIAIANBAWoiA0HAAEcNAAsgBEE/TQRAIARBwAAQfwALIAJByABqIAJBxAAQiwEaIABBOGogAkGEAWopAgA3AAAgAEEwaiACQfwAaikCADcAACAAQShqIAJB9ABqKQIANwAAIABBIGogAkHsAGopAgA3AAAgAEEYaiACQeQAaikCADcAACAAQRBqIAJB3ABqKQIANwAAIABBCGogAkHUAGopAgA3AAAgACACKQJMNwAAIAJBkAFqJAAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGHAU0EQCAAIAJqQcwBakEBOgAAIAJBAWoiA0GIAUcEQCAAIANqQcwBakEAQYcBIAJrEJEBGgtBACECIABBADYCyAEgAEHTAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBiAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHEncAAEHkAC/UBAQN/IwBBEGsiBCQAIAAoAsgBIgJBhwFNBEAgACACakHMAWpBBjoAACACQQFqIgNBiAFHBEAgACADakHMAWpBAEGHASACaxCRARoLQQAhAiAAQQA2AsgBIABB0wJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQYgBRw0ACyAAEA4gASAAKQAANwAAIAFBGGogAEEYaikAADcAACABQRBqIABBEGopAAA3AAAgAUEIaiAAQQhqKQAANwAAIARBEGokAA8LQbCawABBFyAEQQhqQciawABBhJ7AABB5AAv1AQEDfyMAQRBrIgQkACAAKALIASICQY8BTQRAIAAgAmpBzAFqQQE6AAAgAkEBaiIDQZABRwRAIAAgA2pBzAFqQQBBjwEgAmsQkQEaC0EAIQIgAEEANgLIASAAQdsCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkGQAUcNAAsgABAOIAEgACkAADcAACABQRhqIABBGGooAAA2AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQdiawAAQeQAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGPAU0EQCAAIAJqQcwBakEGOgAAIAJBAWoiA0GQAUcEQCAAIANqQcwBakEAQY8BIAJrEJEBGgtBACECIABBADYCyAEgAEHbAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBkAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKAAANgAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEH0ncAAEHkAC8MBAQJ/AkACQCAAQQRqKAIAIgMgACgCCCICayABSQRAIAEgAmoiASACSQ0BIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQECQCAAKAIAQQAgAxsiAUUEQCACQQEQoQEhAQwBCyACIANGDQAgA0UEQCACQQEQoQEhAQwBCyABIANBASACEJoBIQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxCbAQALIAJBAUG0pcAAKAIAIgBBAiAAGxEAAAALhQEBBH8jAEGgAWsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQcgARw0A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JAAgAkGIAWogAUHIARCLARogAiABQcwBahBuIAEoAsgBIQNB2AJBCBChASIBRQRAQdgCQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBiAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkGIARCLARogAEGsj8AANgIEIAAgATYCACACQdACaiQAC34BAX8jAEFAaiIFJAAgBSABNgIMIAUgADYCCCAFIAM2AhQgBSACNgIQIAVBLGpBAjYCACAFQTxqQQQ2AgAgBUICNwIcIAVB8IvAADYCGCAFQQE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJABAAuVAQAgAEIANwMIIABCADcDACAAQQA2AlAgAEGQmcAAKQMANwMQIABBGGpBmJnAACkDADcDACAAQSBqQaCZwAApAwA3AwAgAEEoakGomcAAKQMANwMAIABBMGpBsJnAACkDADcDACAAQThqQbiZwAApAwA3AwAgAEFAa0HAmcAAKQMANwMAIABByABqQciZwAApAwA3AwALlQEAIABCADcDCCAAQgA3AwAgAEEANgJQIABB0JjAACkDADcDECAAQRhqQdiYwAApAwA3AwAgAEEgakHgmMAAKQMANwMAIABBKGpB6JjAACkDADcDACAAQTBqQfCYwAApAwA3AwAgAEE4akH4mMAAKQMANwMAIABBQGtBgJnAACkDADcDACAAQcgAakGImcAAKQMANwMAC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEFNgIAIANCAjcCDCADQYiIwAA2AgggA0EFNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCQAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQU2AgAgA0ICNwIMIANBpIrAADYCCCADQQU2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJABAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBBTYCACADQgI3AgwgA0HcisAANgIIIANBBTYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkAEAC3ABAX8jAEEwayICJAAgAiABNgIEIAIgADYCACACQRxqQQI2AgAgAkEsakEFNgIAIAJCAjcCDCACQcyRwAA2AgggAkEFNgIkIAIgAkEgajYCGCACIAJBBGo2AiggAiACNgIgIAJBCGpB3JHAABCQAQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEBYgAkEgaiQAC30BAn9BASEAQeChwABB4KHAACgCAEEBajYCAAJAAkBBqKXAACgCAEEBRwRAQailwABCgYCAgBA3AwAMAQtBrKXAAEGspcAAKAIAQQFqIgA2AgAgAEECSw0BC0GwpcAAKAIAIgFBf0wNAEGwpcAAIAE2AgAgAEEBSw0AAAsAC2ICAX8BfiMAQRBrIgIkAAJAIAEEQCABKAIADQEgAUF/NgIAIAJBCGogASgCBCABQQhqKAIAKAIQEQAAIAIpAwghAyABQQA2AgAgACADNwIAIAJBEGokAA8LEJ0BAAsQngEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSwECfwJAIAAEQCAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgABAQIAEgAigCABEEACACKAIEBEAgARAQCw8LEJ0BAAsQngEAC0gAAkAgAARAIAAoAgANASAAQX82AgAgACgCBCABIAIgAEEIaigCACgCDBECACACBEAgARAQCyAAQQA2AgAPCxCdAQALEJ4BAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQEADQEaCyACRQRAQQAPCyAAKAIYIAIgAyAAQRxqKAIAKAIMEQMACwtdACAAQgA3AwAgAEEANgIwIABB0JfAACkDADcDCCAAQRBqQdiXwAApAwA3AwAgAEEYakHgl8AAKQMANwMAIABBIGpB6JfAACkDADcDACAAQShqQfCXwAApAwA3AwALSAEBfyMAQSBrIgMkACADQRRqQQA2AgAgA0HIoMAANgIQIANCATcCBCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQkAEAC1AAIABBADYCCCAAQgA3AwAgAEGsmMAAKQIANwJMIABB1ABqQbSYwAApAgA3AgAgAEHcAGpBvJjAACkCADcCACAAQeQAakHEmMAAKQIANwIAC1AAIABBADYCCCAAQgA3AwAgAEGMmMAAKQIANwJMIABB1ABqQZSYwAApAgA3AgAgAEHcAGpBnJjAACkCADcCACAAQeQAakGkmMAAKQIANwIACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQEgA0EBaiEDIAJBf2oiAg0ACwsgAAs1AQJ/IAAoAgAiACACEGogAEEIaiIDKAIAIgQgACgCAGogASACEIsBGiADIAIgBGo2AgBBAAsrAAJAIABBfEsNACAARQRAQQQPCyAAIABBfUlBAnQQoQEiAEUNACAADwsACz0AIABCADcDACAAQQA2AhwgAEH4l8AAKQMANwMIIABBEGpBgJjAACkDADcDACAAQRhqQYiYwAAoAgA2AgALPQAgAEEANgIcIABCADcDACAAQRhqQYiYwAAoAgA2AgAgAEEQakGAmMAAKQMANwMAIABB+JfAACkDADcDCAtMAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkGYiMAANgIEIAJByKDAADYCACACKAIIRQRAQZ2gwABBK0HIoMAAEIgBAAsQgQEACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkF/aiICDQALCyAACy4AIABBADYCCCAAQgA3AwAgAEHUAGpByJfAACkCADcCACAAQcCXwAApAgA3AkwLIAACQCABQXxLDQAgACABQQQgAhCaASIARQ0AIAAPCwALHAAgASgCGEH/h8AAQQggAUEcaigCACgCDBEDAAscACABKAIYQYKMwABBBSABQRxqKAIAKAIMEQMACxQAIAAoAgAgASAAKAIEKAIMEQEACxAAIAEgACgCACAAKAIEEBILEgAgAEEAQcgBEJEBQQA2AsgBCwsAIAEEQCAAEBALCwwAIAAgASACIAMQFwsSAEHEhsAAQRFB2IbAABCIAQALDgAgACgCABoDQAwACwALDQBB76DAAEEbEKABAAsOAEGKocAAQc8AEKABAAsLACAANQIAIAEQVQsJACAAIAEQAQALGQACfyABQQlPBEAgASAAEEYMAQsgABAJCwsNAEKtqduM/5imovgACwQAQRALBABBKAsEAEEUCwUAQcAACwQA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AAAvaG9tZS9sdWNhY2Fzb25hdG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmxvY2stYnVmZmVyLTAuOS4wL3NyYy9saWIucnMvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzAGgNEABYAAAASAAAAAEAAABoDRAAWAAAAE8AAAABAAAAaA0QAFgAAABWAAAAAQAAAGgNEABYAAAAZgAAAAEAAABoDRAAWAAAAG0AAAABAAAAaA0QAFgAAAB0AAAAAQAAAGgNEABYAAAAewAAAAEAAACQAAAA5A8QAC0AAAAREBAADAAAAFAPEAABAAAAYAAAAIgAAABoAAAASAAAAHAPEAB0AAAAEAAAAAkAAAAvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvbWFjcm9zL21vZC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVYEBAAFwAAALQBAAAeAAAAc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ2LjAgKDA0NDg4YWZlMyAyMDIwLTA4LTI0KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNjggKGEwNGUxODk3MSk="); +let wasm; + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let WASM_VECTOR_LEN = 0; + +let cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** +* @param {string} algorithm +* @returns {DenoHash} +*/ +export function create_hash(algorithm) { + var ptr0 = passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ret = wasm.create_hash(ptr0, len0); + return DenoHash.__wrap(ret); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +/** +* @param {DenoHash} hash +* @param {Uint8Array} data +*/ +export function update_hash(hash, data) { + _assertClass(hash, DenoHash); + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.update_hash(hash.ptr, ptr0, len0); +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} + +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +/** +* @param {DenoHash} hash +* @returns {Uint8Array} +*/ +export function digest_hash(hash) { + try { + const retptr = wasm.__wbindgen_export_2.value - 16; + wasm.__wbindgen_export_2.value = retptr; + _assertClass(hash, DenoHash); + wasm.digest_hash(retptr, hash.ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally { + wasm.__wbindgen_export_2.value += 16; + } +} + +/** +*/ +export class DenoHash { + + static __wrap(ptr) { + const obj = Object.create(DenoHash.prototype); + obj.ptr = ptr; + + return obj; + } + + free() { + const ptr = this.ptr; + this.ptr = 0; + + wasm.__wbg_denohash_free(ptr); + } +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +async function init(input) { + if (typeof input === 'undefined') { + input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); + }; + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + const { instance, module } = await load(await input, imports); + + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + + return wasm; +} + +export default init; + diff --git a/bundler/tests/.cache/deno/0c7ae39177272e7cc7929cdc37af066f08d303eb.ts b/bundler/tests/.cache/deno/0c7ae39177272e7cc7929cdc37af066f08d303eb.ts new file mode 100644 index 00000000000..86cc874fe57 --- /dev/null +++ b/bundler/tests/.cache/deno/0c7ae39177272e7cc7929cdc37af066f08d303eb.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xmap.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XMap(f, xf) { + this.xf = xf; + this.f = f; +} +XMap.prototype['@@transducer/init'] = _xfBase.init; +XMap.prototype['@@transducer/result'] = _xfBase.result; +XMap.prototype['@@transducer/step'] = function(result, input) { + return this.xf['@@transducer/step'](result, this.f(input)); +}; + +var _xmap = _curry2(function _xmap(f, xf) { return new XMap(f, xf); }); +export default _xmap; diff --git a/bundler/tests/.cache/deno/0c7c964a9fa6eb6c0d13fa7542363da68da91e1e.ts b/bundler/tests/.cache/deno/0c7c964a9fa6eb6c0d13fa7542363da68da91e1e.ts new file mode 100644 index 00000000000..1e85d5920a9 --- /dev/null +++ b/bundler/tests/.cache/deno/0c7c964a9fa6eb6c0d13fa7542363da68da91e1e.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/std@0.77.0/io/writers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { decode, encode } from "../encoding/utf8.ts"; + +/** Writer utility for buffering string chunks */ +export class StringWriter implements Writer, WriterSync { + private chunks: Uint8Array[] = []; + private byteLength = 0; + private cache: string | undefined; + + constructor(private base: string = "") { + const c = encode(base); + this.chunks.push(c); + this.byteLength += c.byteLength; + } + + write(p: Uint8Array): Promise { + return Promise.resolve(this.writeSync(p)); + } + + writeSync(p: Uint8Array): number { + this.chunks.push(p); + this.byteLength += p.byteLength; + this.cache = undefined; + return p.byteLength; + } + + toString(): string { + if (this.cache) { + return this.cache; + } + const buf = new Uint8Array(this.byteLength); + let offs = 0; + for (const chunk of this.chunks) { + buf.set(chunk, offs); + offs += chunk.byteLength; + } + this.cache = decode(buf); + return this.cache; + } +} diff --git a/bundler/tests/.cache/deno/0cd7f74af998eea7ac9eb8d676fe7ebf85a2f5cf.ts b/bundler/tests/.cache/deno/0cd7f74af998eea7ac9eb8d676fe7ebf85a2f5cf.ts new file mode 100644 index 00000000000..a71e48d4dc3 --- /dev/null +++ b/bundler/tests/.cache/deno/0cd7f74af998eea7ac9eb8d676fe7ebf85a2f5cf.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/drop.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xdrop from './internal/_xdrop.js'; +import slice from './slice.js'; + + +/** + * Returns all but the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `drop` method). + * + * Dispatches to the `drop` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} A copy of list without the first `n` elements + * @see R.take, R.transduce, R.dropLast, R.dropWhile + * @example + * + * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.drop(3, ['foo', 'bar', 'baz']); //=> [] + * R.drop(4, ['foo', 'bar', 'baz']); //=> [] + * R.drop(3, 'ramda'); //=> 'da' + */ +var drop = _curry2(_dispatchable(['drop'], _xdrop, function drop(n, xs) { + return slice(Math.max(0, n), Infinity, xs); +})); +export default drop; diff --git a/bundler/tests/.cache/deno/0d07b97042b0ea4818087ca2b6e808496581bb52.ts b/bundler/tests/.cache/deno/0d07b97042b0ea4818087ca2b6e808496581bb52.ts new file mode 100644 index 00000000000..5723fb98325 --- /dev/null +++ b/bundler/tests/.cache/deno/0d07b97042b0ea4818087ca2b6e808496581bb52.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/nodejsCustomInspectSymbol.js + + +/* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ +const nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined; +export default nodejsCustomInspectSymbol; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/0d11afcb85ce307ca57356ebc5e83b4a32ca9cd7.ts b/bundler/tests/.cache/deno/0d11afcb85ce307ca57356ebc5e83b4a32ca9cd7.ts new file mode 100644 index 00000000000..f19cd4abdfb --- /dev/null +++ b/bundler/tests/.cache/deno/0d11afcb85ce307ca57356ebc5e83b4a32ca9cd7.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.73.0/path/_interface.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/0d13bad4776062d351b45fa0be0cc06239fbb9f1.ts b/bundler/tests/.cache/deno/0d13bad4776062d351b45fa0be0cc06239fbb9f1.ts new file mode 100644 index 00000000000..079b71f361f --- /dev/null +++ b/bundler/tests/.cache/deno/0d13bad4776062d351b45fa0be0cc06239fbb9f1.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.79.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/0d24ee36aec622d55db1ac9087c2eb045d25fd78.ts b/bundler/tests/.cache/deno/0d24ee36aec622d55db1ac9087c2eb045d25fd78.ts new file mode 100644 index 00000000000..3071ecc92d0 --- /dev/null +++ b/bundler/tests/.cache/deno/0d24ee36aec622d55db1ac9087c2eb045d25fd78.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case/vendor/camelCaseUpperRegexp.ts + + +const camelCaseUpperRegexp: RegExp = + /([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A])([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A][a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A])/g; + +export default camelCaseUpperRegexp; diff --git a/bundler/tests/.cache/deno/0d46a97f5f1e7e868c2dffc8a349254afcb53f54.ts b/bundler/tests/.cache/deno/0d46a97f5f1e7e868c2dffc8a349254afcb53f54.ts new file mode 100644 index 00000000000..854c656fa14 --- /dev/null +++ b/bundler/tests/.cache/deno/0d46a97f5f1e7e868c2dffc8a349254afcb53f54.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xdropRepeatsWith.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XDropRepeatsWith(pred, xf) { + this.xf = xf; + this.pred = pred; + this.lastValue = undefined; + this.seenFirstValue = false; +} + +XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init; +XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result; +XDropRepeatsWith.prototype['@@transducer/step'] = function(result, input) { + var sameAsLast = false; + if (!this.seenFirstValue) { + this.seenFirstValue = true; + } else if (this.pred(this.lastValue, input)) { + sameAsLast = true; + } + this.lastValue = input; + return sameAsLast ? result : this.xf['@@transducer/step'](result, input); +}; + +var _xdropRepeatsWith = _curry2(function _xdropRepeatsWith(pred, xf) { return new XDropRepeatsWith(pred, xf); }); +export default _xdropRepeatsWith; diff --git a/bundler/tests/.cache/deno/0d47e0f97f3400f94d64ddaea361b231dfec322a.ts b/bundler/tests/.cache/deno/0d47e0f97f3400f94d64ddaea361b231dfec322a.ts new file mode 100644 index 00000000000..aa7c403605c --- /dev/null +++ b/bundler/tests/.cache/deno/0d47e0f97f3400f94d64ddaea361b231dfec322a.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std@0.83.0/io/bufio.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/0dd29d6944d00bffe1f39444ea233e2fd11c7006.ts b/bundler/tests/.cache/deno/0dd29d6944d00bffe1f39444ea233e2fd11c7006.ts new file mode 100644 index 00000000000..c6c820e6af9 --- /dev/null +++ b/bundler/tests/.cache/deno/0dd29d6944d00bffe1f39444ea233e2fd11c7006.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/x/mysql/src/packets/builders/auth.ts + + +import auth from "../../auth.ts"; +import { BufferWriter } from "../../buffer.ts"; +import ServerCapabilities from "../../constant/capabilities.ts"; +import { Charset } from "../../constant/charset.ts"; +import type { HandshakeBody } from "../parsers/handshake.ts"; + +/** @ignore */ +export function buildAuth( + packet: HandshakeBody, + params: { username: string; password?: string; db?: string }, +): Uint8Array { + const clientParam: number = + (params.db ? ServerCapabilities.CLIENT_CONNECT_WITH_DB : 0) | + ServerCapabilities.CLIENT_PLUGIN_AUTH | + ServerCapabilities.CLIENT_LONG_PASSWORD | + ServerCapabilities.CLIENT_PROTOCOL_41 | + ServerCapabilities.CLIENT_TRANSACTIONS | + ServerCapabilities.CLIENT_MULTI_RESULTS | + ServerCapabilities.CLIENT_SECURE_CONNECTION | + (ServerCapabilities.CLIENT_LONG_FLAG & packet.serverCapabilities) | + (ServerCapabilities.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA & + packet.serverCapabilities) | + (ServerCapabilities.CLIENT_DEPRECATE_EOF & packet.serverCapabilities); + + if (packet.serverCapabilities & ServerCapabilities.CLIENT_PLUGIN_AUTH) { + const writer = new BufferWriter(new Uint8Array(1000)); + writer + .writeUint32(clientParam) + .writeUint32(2 ** 24 - 1) + .write(Charset.UTF8_GENERAL_CI) + .skip(23) + .writeNullTerminatedString(params.username); + if (params.password) { + const authData = auth( + packet.authPluginName, + params.password, + packet.seed, + ); + if ( + clientParam & + ServerCapabilities.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA || + clientParam & ServerCapabilities.CLIENT_SECURE_CONNECTION + ) { + // request lenenc-int length of auth-response and string[n] auth-response + writer.write(authData.length); + writer.writeBuffer(authData); + } else { + writer.writeBuffer(authData); + writer.write(0); + } + } else { + writer.write(0); + } + if (clientParam & ServerCapabilities.CLIENT_CONNECT_WITH_DB && params.db) { + writer.writeNullTerminatedString(params.db); + } + if (clientParam & ServerCapabilities.CLIENT_PLUGIN_AUTH) { + writer.writeNullTerminatedString(packet.authPluginName); + } + return writer.wroteData; + } + return Uint8Array.from([]); +} diff --git a/bundler/tests/.cache/deno/0de042643e033407fefa8933f0387a5f4271257c.ts b/bundler/tests/.cache/deno/0de042643e033407fefa8933f0387a5f4271257c.ts new file mode 100644 index 00000000000..5939d65f9bb --- /dev/null +++ b/bundler/tests/.cache/deno/0de042643e033407fefa8933f0387a5f4271257c.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isDate.ts + + +/** + * @ignore + */ +const isValidFormat = (format: string) => { + return /(^(y{4}|y{2})[\/-](m{1,2})[\/-](d{1,2})$)|(^(m{1,2})[\/-](d{1,2})[\/-]((y{4}|y{2})$))|(^(d{1,2})[\/-](m{1,2})[\/-]((y{4}|y{2})$))/gi.test( + format + ); +}; + +/** + * @ignore + */ +const zip = (date: string[], format: string[]) => { + const zippedArr = []; + const len = Math.min(date.length, format.length); + + for (let i = 0; i < len; i++) { + zippedArr.push([date[i], format[i]]); + } + + return zippedArr; +}; + +export const isDate = (input: any, format = 'YYYY/MM/DD') => { + if (typeof input === 'string' && isValidFormat(format)) { + const splitter = /[-/]/; + const dateAndFormat = zip( + input.split(splitter), + format.toLowerCase().split(splitter) + ); + const dateObj = {} as any; + + for (const [dateWord, formatWord] of dateAndFormat) { + if (dateWord.length !== formatWord.length) { + return false; + } + + dateObj[formatWord.charAt(0)] = dateWord; + } + + return ( + new Date(`${dateObj.m}/${dateObj.d}/${dateObj.y}`).getDate() === + +dateObj.d + ); + } + + return ( + Object.prototype.toString.call(input) === '[object Date]' && isFinite(input) + ); +}; diff --git a/bundler/tests/.cache/deno/0e10ac285f46cdbd723a2e09e09540b56bb39d77.ts b/bundler/tests/.cache/deno/0e10ac285f46cdbd723a2e09e09540b56bb39d77.ts new file mode 100644 index 00000000000..51f17b4265f --- /dev/null +++ b/bundler/tests/.cache/deno/0e10ac285f46cdbd723a2e09e09540b56bb39d77.ts @@ -0,0 +1,123 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isCurrency.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type CurrencyOptions = { + symbol?: string; + requireSymbol?: boolean; + allowSpaceAfterSymbol?: boolean; + symbolAfterDigits?: boolean; + allowNegatives?: boolean; + parensForNegatives?: boolean; + negativeSignBeforeDigits?: boolean; + negativeSignAfterDigits?: boolean; + allowNegativeSignPlaceholder?: boolean; + thousandsSeparator?: string; + decimalSeparator?: string; + allowDecimal?: boolean; + requireDecimal?: boolean; + digitsAfterDecimal?: number[]; + allowSpaceAfterDigits?: boolean; +}; + +/** + * @ignore + */ +const currencyRegex = (options: Required) => { + let decimalDigits = `\\d{${options.digitsAfterDecimal[0]}}`; + options.digitsAfterDecimal.forEach((digit, index) => { + if (index !== 0) decimalDigits = `${decimalDigits}|\\d{${digit}}`; + }); + + const symbol = `(${options.symbol.replace(/\W/, (m) => `\\${m}`)})${ + options.requireSymbol ? '' : '?' + }`, + negative = '-?', + whole_dollar_amount_without_sep = '[1-9]\\d*', + whole_dollar_amount_with_sep = `[1-9]\\d{0,2}(\\${options.thousandsSeparator}\\d{3})*`, + valid_whole_dollar_amounts = [ + '0', + whole_dollar_amount_without_sep, + whole_dollar_amount_with_sep, + ], + whole_dollar_amount = `(${valid_whole_dollar_amounts.join('|')})?`, + decimal_amount = `(\\${options.decimalSeparator}(${decimalDigits}))${ + options.requireDecimal ? '' : '?' + }`; + + let pattern = + whole_dollar_amount + + (options.allowDecimal || options.requireDecimal ? decimal_amount : ''); + + // default is negative sign before symbol, but there are two other options (besides parens) + if (options.allowNegatives && !options.parensForNegatives) { + if (options.negativeSignAfterDigits) { + pattern += negative; + } else if (options.negativeSignBeforeDigits) { + pattern = negative + pattern; + } + } + + // South African Rand, for example, uses R 123 (space) and R-123 (no space) + if (options.allowNegativeSignPlaceholder) { + pattern = `( (?!\\-))?${pattern}`; + } else if (options.allowSpaceAfterSymbol) { + pattern = ` ?${pattern}`; + } else if (options.allowSpaceAfterDigits) { + pattern += '( (?!$))?'; + } + + if (options.symbolAfterDigits) { + pattern += symbol; + } else { + pattern = symbol + pattern; + } + + if (options.allowNegatives) { + if (options.parensForNegatives) { + pattern = `(\\(${pattern}\\)|${pattern})`; + } else if ( + !(options.negativeSignBeforeDigits || options.negativeSignAfterDigits) + ) { + pattern = negative + pattern; + } + } + + // ensure there's a dollar and/or decimal amount, and that + // it doesn't start with a space or a negative sign followed by a space + return new RegExp(`^(?!-? )(?=.*\\d)${pattern}$`); +}; + +/** + * @ignore + */ +const defaultCurrencyOptions: CurrencyOptions = { + symbol: '$', + requireSymbol: false, + allowSpaceAfterSymbol: false, + symbolAfterDigits: false, + allowNegatives: true, + parensForNegatives: false, + negativeSignBeforeDigits: false, + negativeSignAfterDigits: false, + allowNegativeSignPlaceholder: false, + thousandsSeparator: ',', + decimalSeparator: '.', + allowDecimal: true, + requireDecimal: false, + digitsAfterDecimal: [2], + allowSpaceAfterDigits: false, +}; + +export const isCurrency = (str: string, options?: CurrencyOptions) => { + assertString(str); + + options = { + ...defaultCurrencyOptions, + ...options, + }; + + return currencyRegex(options as Required).test(str); +}; diff --git a/bundler/tests/.cache/deno/0e357b6b47106575272f7ed539c47656b9e86d3d.ts b/bundler/tests/.cache/deno/0e357b6b47106575272f7ed539c47656b9e86d3d.ts new file mode 100644 index 00000000000..6d462a5d930 --- /dev/null +++ b/bundler/tests/.cache/deno/0e357b6b47106575272f7ed539c47656b9e86d3d.ts @@ -0,0 +1,207 @@ +// Loaded from https://deno.land/std@0.81.0/http/cookie.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Structured similarly to Go's cookie.go +// https://github.com/golang/go/blob/master/src/net/http/cookie.go +import { assert } from "../_util/assert.ts"; +import { toIMF } from "../datetime/mod.ts"; + +export type Cookies = Record; + +export interface Cookie { + /** Name of the cookie. */ + name: string; + /** Value of the cookie. */ + value: string; + /** Expiration date of the cookie. */ + expires?: Date; + /** Max-Age of the Cookie. Must be integer superior to 0. */ + maxAge?: number; + /** Specifies those hosts to which the cookie will be sent. */ + domain?: string; + /** Indicates a URL path that must exist in the request. */ + path?: string; + /** Indicates if the cookie is made using SSL & HTTPS. */ + secure?: boolean; + /** Indicates that cookie is not accessible via JavaScript. **/ + httpOnly?: boolean; + /** Allows servers to assert that a cookie ought not to + * be sent along with cross-site requests. */ + sameSite?: SameSite; + /** Additional key value pairs with the form "key=value" */ + unparsed?: string[]; +} + +export type SameSite = "Strict" | "Lax" | "None"; + +const FIELD_CONTENT_REGEXP = /^(?=[\x20-\x7E]*$)[^()@<>,;:\\"\[\]?={}\s]+$/; + +function toString(cookie: Cookie): string { + if (!cookie.name) { + return ""; + } + const out: string[] = []; + validateCookieName(cookie.name); + validateCookieValue(cookie.name, cookie.value); + out.push(`${cookie.name}=${cookie.value}`); + + // Fallback for invalid Set-Cookie + // ref: https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + if (cookie.name.startsWith("__Secure")) { + cookie.secure = true; + } + if (cookie.name.startsWith("__Host")) { + cookie.path = "/"; + cookie.secure = true; + delete cookie.domain; + } + + if (cookie.secure) { + out.push("Secure"); + } + if (cookie.httpOnly) { + out.push("HttpOnly"); + } + if (typeof cookie.maxAge === "number" && Number.isInteger(cookie.maxAge)) { + assert(cookie.maxAge > 0, "Max-Age must be an integer superior to 0"); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + out.push(`Domain=${cookie.domain}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + if (cookie.path) { + validatePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires) { + const dateString = toIMF(cookie.expires); + out.push(`Expires=${dateString}`); + } + if (cookie.unparsed) { + out.push(cookie.unparsed.join("; ")); + } + return out.join("; "); +} + +/** + * Validate Cookie Name. + * @param name Cookie name. + */ +function validateCookieName(name: string | undefined | null): void { + if (name && !FIELD_CONTENT_REGEXP.test(name)) { + throw new TypeError(`Invalid cookie name: "${name}".`); + } +} + +/** + * Validate Path Value. + * @see https://tools.ietf.org/html/rfc6265#section-4.1.2.4 + * @param path Path value. + */ +function validatePath(path: string | null): void { + if (path == null) { + return; + } + for (let i = 0; i < path.length; i++) { + const c = path.charAt(i); + if ( + c < String.fromCharCode(0x20) || c > String.fromCharCode(0x7E) || c == ";" + ) { + throw new Error( + path + ": Invalid cookie path char '" + c + "'", + ); + } + } +} + +/** + *Validate Cookie Value. + * @see https://tools.ietf.org/html/rfc6265#section-4.1 + * @param value Cookie value. + */ +function validateCookieValue(name: string, value: string | null): void { + if (value == null || name == null) return; + for (let i = 0; i < value.length; i++) { + const c = value.charAt(i); + if ( + c < String.fromCharCode(0x21) || c == String.fromCharCode(0x22) || + c == String.fromCharCode(0x2c) || c == String.fromCharCode(0x3b) || + c == String.fromCharCode(0x5c) || c == String.fromCharCode(0x7f) + ) { + throw new Error( + "RFC2616 cookie '" + name + "' cannot have '" + c + "' as value", + ); + } + if (c > String.fromCharCode(0x80)) { + throw new Error( + "RFC2616 cookie '" + name + "' can only have US-ASCII chars as value" + + c.charCodeAt(0).toString(16), + ); + } + } +} + +/** + * Parse the cookies of the Server Request + * @param req An object which has a `headers` property + */ +export function getCookies(req: { headers: Headers }): Cookies { + const cookie = req.headers.get("Cookie"); + if (cookie != null) { + const out: Cookies = {}; + const c = cookie.split(";"); + for (const kv of c) { + const [cookieKey, ...cookieVal] = kv.split("="); + assert(cookieKey != null); + const key = cookieKey.trim(); + out[key] = cookieVal.join("="); + } + return out; + } + return {}; +} + +/** + * Set the cookie header properly in the Response + * @param res An object which has a headers property + * @param cookie Cookie to set + * + * Example: + * + * ```ts + * setCookie(response, { name: 'deno', value: 'runtime', + * httpOnly: true, secure: true, maxAge: 2, domain: "deno.land" }); + * ``` + */ +export function setCookie(res: { headers?: Headers }, cookie: Cookie): void { + if (!res.headers) { + res.headers = new Headers(); + } + // TODO (zekth) : Add proper parsing of Set-Cookie headers + // Parsing cookie headers to make consistent set-cookie header + // ref: https://tools.ietf.org/html/rfc6265#section-4.1.1 + const v = toString(cookie); + if (v) { + res.headers.append("Set-Cookie", v); + } +} + +/** + * Set the cookie header properly in the Response to delete it + * @param res Server Response + * @param name Name of the cookie to Delete + * Example: + * + * deleteCookie(res,'foo'); + */ +export function deleteCookie(res: { headers?: Headers }, name: string): void { + setCookie(res, { + name: name, + value: "", + expires: new Date(0), + }); +} diff --git a/bundler/tests/.cache/deno/0edccd409d61a4468d09126b0d058cde514f2056.ts b/bundler/tests/.cache/deno/0edccd409d61a4468d09126b0d058cde514f2056.ts new file mode 100644 index 00000000000..9b207f811de --- /dev/null +++ b/bundler/tests/.cache/deno/0edccd409d61a4468d09126b0d058cde514f2056.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/std@0.77.0/io/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export * from "./bufio.ts"; +export * from "./ioutil.ts"; +export * from "./readers.ts"; +export * from "./writers.ts"; +export * from "./streams.ts"; diff --git a/bundler/tests/.cache/deno/0ef781beeea83aa8b2b5e6dad06dad46e12064be.ts b/bundler/tests/.cache/deno/0ef781beeea83aa8b2b5e6dad06dad46e12064be.ts new file mode 100644 index 00000000000..7b3ffcf4a1d --- /dev/null +++ b/bundler/tests/.cache/deno/0ef781beeea83aa8b2b5e6dad06dad46e12064be.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_clone.js + + +import _cloneRegExp from './_cloneRegExp.js'; +import type from '../type.js'; + + +/** + * Copies an object. + * + * @private + * @param {*} value The value to be copied + * @param {Array} refFrom Array containing the source references + * @param {Array} refTo Array containing the copied source references + * @param {Boolean} deep Whether or not to perform deep cloning. + * @return {*} The copied value. + */ +export default function _clone(value, refFrom, refTo, deep) { + var copy = function copy(copiedValue) { + var len = refFrom.length; + var idx = 0; + while (idx < len) { + if (value === refFrom[idx]) { + return refTo[idx]; + } + idx += 1; + } + refFrom[idx] = value; + refTo[idx] = copiedValue; + for (var key in value) { + if (value.hasOwnProperty(key)) { + copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key]; + } + } + return copiedValue; + }; + switch (type(value)) { + case 'Object': return copy(Object.create(Object.getPrototypeOf(value))); + case 'Array': return copy([]); + case 'Date': return new Date(value.valueOf()); + case 'RegExp': return _cloneRegExp(value); + default: return value; + } +} diff --git a/bundler/tests/.cache/deno/0ef9a4598fa5881690a2f4b35c76defd573a8523.ts b/bundler/tests/.cache/deno/0ef9a4598fa5881690a2f4b35c76defd573a8523.ts new file mode 100644 index 00000000000..eebeb61681d --- /dev/null +++ b/bundler/tests/.cache/deno/0ef9a4598fa5881690a2f4b35c76defd573a8523.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pick.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a partial copy of an object containing only the keys specified. If + * the key does not exist, the property is ignored. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.omit, R.props + * @example + * + * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} + */ +var pick = _curry2(function pick(names, obj) { + var result = {}; + var idx = 0; + while (idx < names.length) { + if (names[idx] in obj) { + result[names[idx]] = obj[names[idx]]; + } + idx += 1; + } + return result; +}); +export default pick; diff --git a/bundler/tests/.cache/deno/0f4f26c742d59b7600f30283fbcabab7c92d3f6d.ts b/bundler/tests/.cache/deno/0f4f26c742d59b7600f30283fbcabab7c92d3f6d.ts new file mode 100644 index 00000000000..461df4d0c7f --- /dev/null +++ b/bundler/tests/.cache/deno/0f4f26c742d59b7600f30283fbcabab7c92d3f6d.ts @@ -0,0 +1,84 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/relationships.ts + + +import type { ModelSchema } from "./model.ts"; +import { DataTypes, FieldTypeString, RelationshipType } from "./data-types.ts"; +import { PivotModel } from "./model-pivot.ts"; + +type RelationshipOptions = { + primaryKey?: string; + foreignKey?: string; +}; + +export const Relationships = { + /** Define a one-to-one or one-to-many relationship for a given model. */ + belongsTo(model: ModelSchema): RelationshipType { + return { + type: DataTypes.INTEGER, + relationship: { + kind: "single", + model, + }, + }; + }, + + /** Add corresponding fields to each model for a one-to-one relationship. */ + oneToOne( + modelA: ModelSchema, + modelB: ModelSchema, + options?: RelationshipOptions, + ) { + let primaryKey = options?.primaryKey; + let foreignKey = options?.foreignKey; + + modelA.fields[primaryKey || `${modelB.name.toLowerCase()}Id`] = this + .belongsTo(modelB); + modelB.fields[foreignKey || `${modelA.name.toLowerCase()}Id`] = this + .belongsTo(modelA); + }, + + /** Generate a many-to-many pivot model for two given models. + * + * const AirportFlight = Relationships.manyToMany(Airport, Flight); + */ + manyToMany( + modelA: ModelSchema, + modelB: ModelSchema, + options?: RelationshipOptions, + ): ModelSchema { + let primaryKey = options?.primaryKey; + let foreignKey = options?.foreignKey; + + const pivotClassName = `${modelA.table}_${modelB.table}`; + const modelAFieldName = primaryKey || `${modelA.name.toLowerCase()}Id`; + const modelBFieldName = foreignKey || `${modelB.name.toLowerCase()}Id`; + + class PivotClass extends PivotModel { + static table = pivotClassName; + + static fields = { + id: { + primaryKey: true, + autoIncrement: true, + }, + [modelAFieldName]: Relationships.belongsTo(modelA), + [modelBFieldName]: Relationships.belongsTo(modelB), + }; + + static _pivotsModels = { + [modelA.name]: modelA, + [modelB.name]: modelB, + }; + + static _pivotsFields = { + [modelA.name]: modelAFieldName, + [modelB.name]: modelBFieldName, + }; + } + + modelA.pivot[modelB.name] = PivotClass; + modelB.pivot[modelA.name] = PivotClass; + + return PivotClass; + }, +}; diff --git a/bundler/tests/.cache/deno/0f6f644c56410f6a8540ac63779169fec060c331.ts b/bundler/tests/.cache/deno/0f6f644c56410f6a8540ac63779169fec060c331.ts new file mode 100644 index 00000000000..4ea4feccd96 --- /dev/null +++ b/bundler/tests/.cache/deno/0f6f644c56410f6a8540ac63779169fec060c331.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/zipObj.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates a new object out of a list of keys and a list of values. + * Key/value pairing is truncated to the length of the shorter of the two lists. + * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [String] -> [*] -> {String: *} + * @param {Array} keys The array that will be properties on the output object. + * @param {Array} values The list of values on the output object. + * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`. + * @example + * + * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} + */ +var zipObj = _curry2(function zipObj(keys, values) { + var idx = 0; + var len = Math.min(keys.length, values.length); + var out = {}; + while (idx < len) { + out[keys[idx]] = values[idx]; + idx += 1; + } + return out; +}); +export default zipObj; diff --git a/bundler/tests/.cache/deno/0f7dfad28dcd32a1ab1390591772d2adc69b73d7.ts b/bundler/tests/.cache/deno/0f7dfad28dcd32a1ab1390591772d2adc69b73d7.ts new file mode 100644 index 00000000000..0940beb9928 --- /dev/null +++ b/bundler/tests/.cache/deno/0f7dfad28dcd32a1ab1390591772d2adc69b73d7.ts @@ -0,0 +1,185 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/context.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import type { Application, State } from "./application.ts"; +import { Cookies } from "./cookies.ts"; +import { acceptable, acceptWebSocket, WebSocket } from "./deps.ts"; +import { createHttpError } from "./httpError.ts"; +import type { KeyStack } from "./keyStack.ts"; +import { Request } from "./request.ts"; +import { Response } from "./response.ts"; +import { send, SendOptions } from "./send.ts"; +import { + ServerSentEventTarget, + ServerSentEventTargetOptions, +} from "./server_sent_event.ts"; +import type { ErrorStatus, ServerRequest } from "./types.d.ts"; + +export interface ContextSendOptions extends SendOptions { + /** The filename to send, which will be resolved based on the other options. + * If this property is omitted, the current context's `.request.url.pathname` + * will be used. */ + path?: string; +} + +/** Provides context about the current request and response to middleware + * functions. */ +// deno-lint-ignore no-explicit-any +export class Context> { + #socket?: WebSocket; + #sse?: ServerSentEventTarget; + + /** A reference to the current application. */ + app: Application; + + /** An object which allows access to cookies, mediating both the request and + * response. */ + cookies: Cookies; + + /** Is `true` if the current connection is upgradeable to a web socket. + * Otherwise the value is `false`. Use `.upgrade()` to upgrade the connection + * and return the web socket. */ + get isUpgradable(): boolean { + return acceptable(this.request); + } + + /** Determines if the request should be responded to. If `false` when the + * middleware completes processing, the response will not be sent back to the + * requestor. Typically this is used if the middleware will take over low + * level processing of requests and responses, for example if using web + * sockets. This automatically gets set to `false` when the context is + * upgraded to a web socket via the `.upgrade()` method. + * + * The default is `true`. */ + respond: boolean; + + /** An object which contains information about the current request. */ + request: Request; + + /** An object which contains information about the response that will be sent + * when the middleware finishes processing. */ + response: Response; + + /** If the the current context has been upgraded, then this will be set to + * with the web socket, otherwise it is `undefined`. */ + get socket(): WebSocket | undefined { + return this.#socket; + } + + /** The object to pass state to front-end views. This can be typed by + * supplying the generic state argument when creating a new app. For + * example: + * + * ```ts + * const app = new Application<{ foo: string }>(); + * ``` + * + * Or can be contextually inferred based on setting an initial state object: + * + * ```ts + * const app = new Application({ state: { foo: "bar" } }); + * ``` + */ + state: S; + + constructor( + app: Application, + serverRequest: ServerRequest, + secure = false, + ) { + this.app = app; + this.state = app.state; + this.request = new Request(serverRequest, app.proxy, secure); + this.respond = true; + this.response = new Response(this.request); + this.cookies = new Cookies(this.request, this.response, { + keys: this.app.keys as KeyStack | undefined, + secure: this.request.secure, + }); + } + + /** Asserts the condition and if the condition fails, creates an HTTP error + * with the provided status (which defaults to `500`). The error status by + * default will be set on the `.response.status`. + */ + assert( + // deno-lint-ignore no-explicit-any + condition: any, + errorStatus: ErrorStatus = 500, + message?: string, + props?: Record, + ): asserts condition { + if (condition) { + return; + } + const err = createHttpError(errorStatus, message); + if (props) { + Object.assign(err, props); + } + throw err; + } + + /** Asynchronously fulfill a response with a file from the local file + * system. + * + * If the `options.path` is not supplied, the file to be sent will default + * to this `.request.url.pathname`. + * + * Requires Deno read permission. */ + send(options: ContextSendOptions): Promise { + const { path = this.request.url.pathname, ...sendOptions } = options; + return send(this, path, sendOptions); + } + + /** Convert the connection to stream events, returning an event target for + * sending server sent events. Events dispatched on the returned target will + * be sent to the client and be available in the client's `EventSource` that + * initiated the connection. + * + * This will set `.respond` to `false`. */ + sendEvents(options?: ServerSentEventTargetOptions): ServerSentEventTarget { + if (this.#sse) { + return this.#sse; + } + this.respond = false; + return this.#sse = new ServerSentEventTarget( + this.app, + this.request.serverRequest, + options, + ); + } + + /** Create and throw an HTTP Error, which can be used to pass status + * information which can be caught by other middleware to send more + * meaningful error messages back to the client. The passed error status will + * be set on the `.response.status` by default as well. + */ + throw( + errorStatus: ErrorStatus, + message?: string, + props?: Record, + ): never { + const err = createHttpError(errorStatus, message); + if (props) { + Object.assign(err, props); + } + throw err; + } + + /** Take the current request and upgrade it to a web socket, resolving with + * the web socket object. This will set `.respond` to `false`. */ + async upgrade(): Promise { + if (this.#socket) { + return this.#socket; + } + const { conn, r: bufReader, w: bufWriter, headers } = + this.request.serverRequest; + this.#socket = await acceptWebSocket( + { conn, bufReader, bufWriter, headers }, + ); + this.respond = false; + return this.#socket; + } +} diff --git a/bundler/tests/.cache/deno/0f8cfd82f215e35382a230fd72bcd7094f42c8ce.ts b/bundler/tests/.cache/deno/0f8cfd82f215e35382a230fd72bcd7094f42c8ce.ts new file mode 100644 index 00000000000..f4fe63b06cf --- /dev/null +++ b/bundler/tests/.cache/deno/0f8cfd82f215e35382a230fd72bcd7094f42c8ce.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isHexadecimal.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; + +export const isHexadecimal = (str: string) => { + assertString(str); + return hexadecimal.test(str); +}; diff --git a/bundler/tests/.cache/deno/0fa28d6816fcab5d11ba4ee1ede2a72680b8b6c0.ts b/bundler/tests/.cache/deno/0fa28d6816fcab5d11ba4ee1ede2a72680b8b6c0.ts new file mode 100644 index 00000000000..957121e8092 --- /dev/null +++ b/bundler/tests/.cache/deno/0fa28d6816fcab5d11ba4ee1ede2a72680b8b6c0.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/update.js + + +import _curry3 from './internal/_curry3.js'; +import adjust from './adjust.js'; +import always from './always.js'; + + +/** + * Returns a new copy of the array with the element at the provided index + * replaced with the given value. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} idx The index to update. + * @param {*} x The value to exist at the given index of the returned array. + * @param {Array|Arguments} list The source array-like object to be updated. + * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`. + * @see R.adjust + * @example + * + * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c'] + * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_'] + * @symb R.update(-1, a, [b, c]) = [b, a] + * @symb R.update(0, a, [b, c]) = [a, c] + * @symb R.update(1, a, [b, c]) = [b, a] + */ +var update = _curry3(function update(idx, x, list) { + return adjust(idx, always(x), list); +}); +export default update; diff --git a/bundler/tests/.cache/deno/0ff16ed81878dbaa6c6dce1a42c7e986260c2c1d.ts b/bundler/tests/.cache/deno/0ff16ed81878dbaa6c6dce1a42c7e986260c2c1d.ts new file mode 100644 index 00000000000..dd16dd6b566 --- /dev/null +++ b/bundler/tests/.cache/deno/0ff16ed81878dbaa6c6dce1a42c7e986260c2c1d.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/median.js + + +import _curry1 from './internal/_curry1.js'; +import mean from './mean.js'; + + +/** + * Returns the median of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.mean + * @example + * + * R.median([2, 9, 7]); //=> 7 + * R.median([7, 2, 10, 9]); //=> 8 + * R.median([]); //=> NaN + */ +var median = _curry1(function median(list) { + var len = list.length; + if (len === 0) { + return NaN; + } + var width = 2 - len % 2; + var idx = (len - width) / 2; + return mean(Array.prototype.slice.call(list, 0).sort(function(a, b) { + return a < b ? -1 : a > b ? 1 : 0; + }).slice(idx, idx + width)); +}); +export default median; diff --git a/bundler/tests/.cache/deno/10211d0af78bc73c80c5c4de7927515eaf13db69.ts b/bundler/tests/.cache/deno/10211d0af78bc73c80c5c4de7927515eaf13db69.ts new file mode 100644 index 00000000000..7fda3bd7d55 --- /dev/null +++ b/bundler/tests/.cache/deno/10211d0af78bc73c80c5c4de7927515eaf13db69.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.67.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/102b68862ac1918ef4cf8a2b19164384c89f8290.ts b/bundler/tests/.cache/deno/102b68862ac1918ef4cf8a2b19164384c89f8290.ts new file mode 100644 index 00000000000..8c5fbfbd3ca --- /dev/null +++ b/bundler/tests/.cache/deno/102b68862ac1918ef4cf8a2b19164384c89f8290.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBoolean.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const isBoolean = (str: string) => { + assertString(str); + return ['true', 'false', '1', '0'].indexOf(str) >= 0; +}; diff --git a/bundler/tests/.cache/deno/102eb79561b7bc6a50ed8bae5d2a37ac9b465a42.ts b/bundler/tests/.cache/deno/102eb79561b7bc6a50ed8bae5d2a37ac9b465a42.ts new file mode 100644 index 00000000000..caf0f5952ad --- /dev/null +++ b/bundler/tests/.cache/deno/102eb79561b7bc6a50ed8bae5d2a37ac9b465a42.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/collection/mod.ts + + +export { Collection } from "./collection.ts"; diff --git a/bundler/tests/.cache/deno/105e20f2af89b6331d0b5b450ea2998c90fa869c.ts b/bundler/tests/.cache/deno/105e20f2af89b6331d0b5b450ea2998c90fa869c.ts new file mode 100644 index 00000000000..c16895e647c --- /dev/null +++ b/bundler/tests/.cache/deno/105e20f2af89b6331d0b5b450ea2998c90fa869c.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/bool.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import { isBoolean } from "../utils.ts"; + +function resolveYamlBoolean(data: string): boolean { + const max = data.length; + + return ( + (max === 4 && (data === "true" || data === "True" || data === "TRUE")) || + (max === 5 && (data === "false" || data === "False" || data === "FALSE")) + ); +} + +function constructYamlBoolean(data: string): boolean { + return data === "true" || data === "True" || data === "TRUE"; +} + +export const bool = new Type("tag:yaml.org,2002:bool", { + construct: constructYamlBoolean, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isBoolean, + represent: { + lowercase(object: boolean): string { + return object ? "true" : "false"; + }, + uppercase(object: boolean): string { + return object ? "TRUE" : "FALSE"; + }, + camelcase(object: boolean): string { + return object ? "True" : "False"; + }, + }, + resolve: resolveYamlBoolean, +}); diff --git a/bundler/tests/.cache/deno/10c5d90b3aecacee0f0511e8ea317f3174d065ce.ts b/bundler/tests/.cache/deno/10c5d90b3aecacee0f0511e8ea317f3174d065ce.ts new file mode 100644 index 00000000000..01e1cb694f8 --- /dev/null +++ b/bundler/tests/.cache/deno/10c5d90b3aecacee0f0511e8ea317f3174d065ce.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/objOf.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates an object containing a single key:value pair. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @sig String -> a -> {String:a} + * @param {String} key + * @param {*} val + * @return {Object} + * @see R.pair + * @example + * + * const matchPhrases = R.compose( + * R.objOf('must'), + * R.map(R.objOf('match_phrase')) + * ); + * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} + */ +var objOf = _curry2(function objOf(key, val) { + var obj = {}; + obj[key] = val; + return obj; +}); +export default objOf; diff --git a/bundler/tests/.cache/deno/1133466265e7072d7293c6c60857590974a94e3e.ts b/bundler/tests/.cache/deno/1133466265e7072d7293c6c60857590974a94e3e.ts new file mode 100644 index 00000000000..c40f251a676 --- /dev/null +++ b/bundler/tests/.cache/deno/1133466265e7072d7293c6c60857590974a94e3e.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/partialObject.js + + +import mergeDeepRight from './mergeDeepRight.js'; +import _curry2 from './internal/_curry2.js'; + +/** + * Takes a function `f` and an object, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the object + * provided initially merged deeply (right) with the object provided as an argument to `g`. + * + * @func + * @memberOf R + * @category Function + * @sig (({ a, b, c, ..., n }) -> x) -> { a, b, c, ...} -> ({ d, e, f, ..., n } -> x) + * @param {Function} f + * @param {Object} props + * @return {Function} + * @see R.partial, R.partialRight, R.curry, R.mergeDeepRight + * @example + * + * const multiply2 = ({ a, b }) => a * b; + * const double = R.partialObject(multiply2, { a: 2 }); + * double({ b: 2 }); //=> 4 + * + * const greet = ({ salutation, title, firstName, lastName }) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * const sayHello = R.partialObject(greet, { salutation: 'Hello' }); + * const sayHelloToMs = R.partialObject(sayHello, { title: 'Ms.' }); + * sayHelloToMs({ firstName: 'Jane', lastName: 'Jones' }); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partialObject(f, { a, b })({ c, d }) = f({ a, b, c, d }) + */ + +export default _curry2((f, o) => (props) => f.call(this, mergeDeepRight(o, props))); diff --git a/bundler/tests/.cache/deno/11349b40e4bb0ed8d54e10349a3f20d8763b3eab.ts b/bundler/tests/.cache/deno/11349b40e4bb0ed8d54e10349a3f20d8763b3eab.ts new file mode 100644 index 00000000000..e810bf293c7 --- /dev/null +++ b/bundler/tests/.cache/deno/11349b40e4bb0ed8d54e10349a3f20d8763b3eab.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/objectValues.js + + +/* eslint-disable no-redeclare */ +// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221 +const objectValues = Object.values || (obj => Object.keys(obj).map(key => obj[key])); + +export default objectValues; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/115a40773b0e1166b5298d48028e9f966d50d7c4.ts b/bundler/tests/.cache/deno/115a40773b0e1166b5298d48028e9f966d50d7c4.ts new file mode 100644 index 00000000000..4339de2e5b2 --- /dev/null +++ b/bundler/tests/.cache/deno/115a40773b0e1166b5298d48028e9f966d50d7c4.ts @@ -0,0 +1,77 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/separateOperations.js + + +import { Kind } from '../language/kinds.js'; +import { visit } from '../language/visitor.js'; + +/** + * separateOperations accepts a single AST document which may contain many + * operations and fragments and returns a collection of AST documents each of + * which contains a single operation as well the fragment definitions it + * refers to. + */ +export function separateOperations(documentAST) { + const operations = []; + const depGraph = Object.create(null); + let fromName; // Populate metadata and build a dependency graph. + + visit(documentAST, { + OperationDefinition(node) { + fromName = opName(node); + operations.push(node); + }, + + FragmentDefinition(node) { + fromName = node.name.value; + }, + + FragmentSpread(node) { + const toName = node.name.value; + let dependents = depGraph[fromName]; + + if (dependents === undefined) { + dependents = depGraph[fromName] = Object.create(null); + } + + dependents[toName] = true; + } + + }); // For each operation, produce a new synthesized AST which includes only what + // is necessary for completing that operation. + + const separatedDocumentASTs = Object.create(null); + + for (const operation of operations) { + const operationName = opName(operation); + const dependencies = Object.create(null); + collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted + // to retain the same order as the original document. + + separatedDocumentASTs[operationName] = { + kind: Kind.DOCUMENT, + definitions: documentAST.definitions.filter(node => node === operation || node.kind === Kind.FRAGMENT_DEFINITION && dependencies[node.name.value]) + }; + } + + return separatedDocumentASTs; +} + +// Provides the empty string for anonymous operations. +function opName(operation) { + return operation.name ? operation.name.value : ''; +} // From a dependency graph, collects a list of transitive dependencies by +// recursing through a dependency graph. + + +function collectTransitiveDependencies(collected, depGraph, fromName) { + const immediateDeps = depGraph[fromName]; + + if (immediateDeps) { + for (const toName of Object.keys(immediateDeps)) { + if (!collected[toName]) { + collected[toName] = true; + collectTransitiveDependencies(collected, depGraph, toName); + } + } + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/115e402f22b76a4d9cf60ca6db4f6eb2d8e968aa.ts b/bundler/tests/.cache/deno/115e402f22b76a4d9cf60ca6db4f6eb2d8e968aa.ts new file mode 100644 index 00000000000..9492b1a7940 --- /dev/null +++ b/bundler/tests/.cache/deno/115e402f22b76a4d9cf60ca6db4f6eb2d8e968aa.ts @@ -0,0 +1,205 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/PNGEncoder.ts + + +import { IOBuffer } from './iobuffer/IOBuffer.ts'; +import { deflate } from './pako/index.js'; + +import { pngSignature, crc } from './common.ts'; +import { + DeflateFunctionOptions, + IPNGEncoderOptions, + IImageData, + IDecodedPNG, + PNGDataArray, + BitDepth, +} from './types.ts'; +import { + ColorType, + CompressionMethod, + FilterMethod, + InterlaceMethod, +} from './internalTypes.ts'; + +const defaultZlibOptions: DeflateFunctionOptions = { + level: 3, +}; + +export default class PNGEncoder extends IOBuffer { + private _png: IDecodedPNG; + private _zlibOptions: DeflateFunctionOptions; + private _colorType: ColorType; + + public constructor(data: IImageData, options: IPNGEncoderOptions = {}) { + super(); + this._colorType = ColorType.UNKNOWN; + this._zlibOptions = Object.assign({}, defaultZlibOptions, options.zlib); + this._png = this._checkData(data); + this.setBigEndian(); + } + + public encode(): Uint8Array { + this.encodeSignature(); + this.encodeIHDR(); + this.encodeData(); + this.encodeIEND(); + return this.toArray(); + } + + // https://www.w3.org/TR/PNG/#5PNG-file-signature + private encodeSignature(): void { + this.writeBytes(pngSignature); + } + + // https://www.w3.org/TR/PNG/#11IHDR + private encodeIHDR(): void { + this.writeUint32(13); + + this.writeChars('IHDR'); + + this.writeUint32(this._png.width); + this.writeUint32(this._png.height); + this.writeByte(this._png.depth); + this.writeByte(this._colorType); + this.writeByte(CompressionMethod.DEFLATE); + this.writeByte(FilterMethod.ADAPTIVE); + this.writeByte(InterlaceMethod.NO_INTERLACE); + + this.writeCrc(17); + } + + // https://www.w3.org/TR/PNG/#11IEND + private encodeIEND(): void { + this.writeUint32(0); + + this.writeChars('IEND'); + + this.writeCrc(4); + } + + // https://www.w3.org/TR/PNG/#11IDAT + private encodeIDAT(data: PNGDataArray): void { + this.writeUint32(data.length); + + this.writeChars('IDAT'); + + this.writeBytes(data); + + this.writeCrc(data.length + 4); + } + + private encodeData(): void { + const { width, height, channels, depth, data } = this._png; + const slotsPerLine = channels * width; + const newData = new IOBuffer().setBigEndian(); + let offset = 0; + for (let i = 0; i < height; i++) { + newData.writeByte(0); // no filter + /* istanbul ignore else */ + if (depth === 8) { + offset = writeDataBytes(data, newData, slotsPerLine, offset); + } else if (depth === 16) { + offset = writeDataUint16(data, newData, slotsPerLine, offset); + } else { + throw new Error('unreachable'); + } + } + const buffer = newData.toArray(); + const compressed = deflate(buffer, this._zlibOptions); + this.encodeIDAT(compressed); + } + + private _checkData(data: IImageData): IDecodedPNG { + const { colorType, channels, depth } = getColorType(data); + const png: IDecodedPNG = { + width: checkInteger(data.width, 'width'), + height: checkInteger(data.height, 'height'), + channels: channels, + data: data.data, + depth: depth, + text: {}, + }; + this._colorType = colorType; + const expectedSize = png.width * png.height * channels; + if (png.data.length !== expectedSize) { + throw new RangeError( + `wrong data size. Found ${png.data.length}, expected ${expectedSize}`, + ); + } + return png; + } + + private writeCrc(length: number): void { + this.writeUint32( + crc( + new Uint8Array( + this.buffer, + this.byteOffset + this.offset - length, + length, + ), + length, + ), + ); + } +} + +function checkInteger(value: number, name: string): number { + if (Number.isInteger(value) && value > 0) { + return value; + } + throw new TypeError(`${name} must be a positive integer`); +} + +function getColorType( + data: IImageData, +): { channels: number; depth: BitDepth; colorType: ColorType } { + const { channels = 4, depth = 8 } = data; + if (channels !== 4 && channels !== 3 && channels !== 2 && channels !== 1) { + throw new RangeError(`unsupported number of channels: ${channels}`); + } + if (depth !== 8 && depth !== 16) { + throw new RangeError(`unsupported bit depth: ${depth}`); + } + + const returnValue = { channels, depth, colorType: ColorType.UNKNOWN }; + switch (channels) { + case 4: + returnValue.colorType = ColorType.TRUECOLOUR_ALPHA; + break; + case 3: + returnValue.colorType = ColorType.TRUECOLOUR; + break; + case 1: + returnValue.colorType = ColorType.GREYSCALE; + break; + case 2: + returnValue.colorType = ColorType.GREYSCALE_ALPHA; + break; + default: + throw new Error(`unsupported number of channels: ${channels}`); + } + return returnValue; +} + +function writeDataBytes( + data: PNGDataArray, + newData: IOBuffer, + slotsPerLine: number, + offset: number, +): number { + for (let j = 0; j < slotsPerLine; j++) { + newData.writeByte(data[offset++]); + } + return offset; +} + +function writeDataUint16( + data: PNGDataArray, + newData: IOBuffer, + slotsPerLine: number, + offset: number, +): number { + for (let j = 0; j < slotsPerLine; j++) { + newData.writeUint16(data[offset++]); + } + return offset; +} diff --git a/bundler/tests/.cache/deno/11731133752a9f2dfb2bc8c2653138a5fbcbd000.ts b/bundler/tests/.cache/deno/11731133752a9f2dfb2bc8c2653138a5fbcbd000.ts new file mode 100644 index 00000000000..e86dd005062 --- /dev/null +++ b/bundler/tests/.cache/deno/11731133752a9f2dfb2bc8c2653138a5fbcbd000.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeWithKey.js + + +import _curry3 from './internal/_curry3.js'; +import _has from './internal/_has.js'; + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the key + * and the values associated with the key in each object, with the result being + * used as the value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWithKey, R.merge, R.mergeWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeWithKey(concatValues, + * { a: true, thing: 'foo', values: [10, 20] }, + * { b: true, thing: 'bar', values: [15, 35] }); + * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } + * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 } + */ +var mergeWithKey = _curry3(function mergeWithKey(fn, l, r) { + var result = {}; + var k; + + for (k in l) { + if (_has(k, l)) { + result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k]; + } + } + + for (k in r) { + if (_has(k, r) && !(_has(k, result))) { + result[k] = r[k]; + } + } + + return result; +}); +export default mergeWithKey; diff --git a/bundler/tests/.cache/deno/119f1607e3e28768f400a64e01095baf828bcf81.ts b/bundler/tests/.cache/deno/119f1607e3e28768f400a64e01095baf828bcf81.ts new file mode 100644 index 00000000000..9a0f0a49a0c --- /dev/null +++ b/bundler/tests/.cache/deno/119f1607e3e28768f400a64e01095baf828bcf81.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/mime/multipart.ts + + +export * from "https://deno.land/std@0.81.0/mime/multipart.ts"; diff --git a/bundler/tests/.cache/deno/11ba86e63300472c082d26d8a3f1e4d8fe8fe76f.ts b/bundler/tests/.cache/deno/11ba86e63300472c082d26d8a3f1e4d8fe8fe76f.ts new file mode 100644 index 00000000000..fd7f12da154 --- /dev/null +++ b/bundler/tests/.cache/deno/11ba86e63300472c082d26d8a3f1e4d8fe8fe76f.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case/titleCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function titleCase(value: string, locale?: string): string { + return normalCase(value, locale).replace(/^.| ./g, function ( + m: string, + ): string { + return upperCase(m, locale); + }); +} diff --git a/bundler/tests/.cache/deno/12443b1c9163cb6b513538c9e3bed70f14aad464.ts b/bundler/tests/.cache/deno/12443b1c9163cb6b513538c9e3bed70f14aad464.ts new file mode 100644 index 00000000000..18653341ed8 --- /dev/null +++ b/bundler/tests/.cache/deno/12443b1c9163cb6b513538c9e3bed70f14aad464.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std@0.67.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ + +let NATIVE_OS: typeof Deno.build.os = "linux"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const navigator = (globalThis as any).navigator; +if (globalThis.Deno != null) { + NATIVE_OS = Deno.build.os; +} else if (navigator?.appVersion?.includes?.("Win") ?? false) { + NATIVE_OS = "windows"; +} +// TODO(nayeemrmn): Improve OS detection in browsers beyond Windows. + +export const isWindows = NATIVE_OS == "windows"; + +export { NATIVE_OS }; diff --git a/bundler/tests/.cache/deno/125d246dc76a9a556045ceeae1153d884ebfdbf4.ts b/bundler/tests/.cache/deno/125d246dc76a9a556045ceeae1153d884ebfdbf4.ts new file mode 100644 index 00000000000..bb722d6d15f --- /dev/null +++ b/bundler/tests/.cache/deno/125d246dc76a9a556045ceeae1153d884ebfdbf4.ts @@ -0,0 +1,150 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/rsa_internal.ts + + +import { power_mod } from "./../math.ts"; +import { eme_oaep_encode, eme_oaep_decode } from "./eme_oaep.ts"; +import { os2ip, i2osp } from "./primitives.ts"; +import { concat, random_bytes } from "./../helper.ts"; +import { ber_decode, ber_simple } from "./basic_encoding_rule.ts"; +import { RawBinary } from "../binary.ts"; + +/** + * @param n public key modulus + * @param e public key exponent + * @param m message representative + */ +export function rsaep(n: bigint, e: bigint, m: bigint): bigint { + return power_mod(m, e, n); +} + +/** + * @param n private key modulus + * @param d private key exponent + * @param c ciphertext representative + */ +export function rsadp(n: bigint, d: bigint, c: bigint): bigint { + return power_mod(c, d, n); +} + +export function rsa_oaep_encrypt( + bytes: number, + n: bigint, + e: bigint, + m: Uint8Array, + algorithm: "sha1" | "sha256", +) { + const em = eme_oaep_encode(new Uint8Array(0), m, bytes, algorithm); + const msg = os2ip(em); + const c = rsaep(n, e, msg); + return i2osp(c, bytes); +} + +export function rsa_oaep_decrypt( + bytes: number, + n: bigint, + d: bigint, + c: Uint8Array, + algorithm: "sha1" | "sha256", +) { + const em = rsadp(n, d, os2ip(c)); + const m = eme_oaep_decode( + new Uint8Array(0), + i2osp(em, bytes), + bytes, + algorithm, + ); + return m; +} + +export function rsa_pkcs1_encrypt( + bytes: number, + n: bigint, + e: bigint, + m: Uint8Array, +) { + const p = concat([0x00, 0x02], random_bytes(bytes - m.length - 3), [0x00], m); + const msg = os2ip(p); + const c = rsaep(n, e, msg); + return i2osp(c, bytes); +} + +export function rsa_pkcs1_decrypt( + bytes: number, + n: bigint, + d: bigint, + c: Uint8Array, +) { + const em = i2osp(rsadp(n, d, os2ip(c)), bytes); + + if (em[0] !== 0) throw "Decryption error"; + if (em[1] !== 0x02) throw "Decryption error"; + + let psCursor = 2; + for (; psCursor < em.length; psCursor++) { + if (em[psCursor] === 0x00) break; + } + + if (psCursor < 10) throw "Decryption error"; + + return em.slice(psCursor + 1); +} + +export function rsa_pkcs1_verify( + bytes: number, + n: bigint, + d: bigint, + s: Uint8Array, + m: Uint8Array, +): boolean { + let em = i2osp(rsadp(n, d, os2ip(s)), bytes); + + if (em[0] !== 0) throw "Decryption error"; + if (em[1] !== 0x01) throw "Decryption error"; + + let psCursor = 2; + for (; psCursor < em.length; psCursor++) { + if (em[psCursor] === 0x00) break; + } + + if (psCursor < 10) throw "Decryption error"; + + // Removing padding + em = em.slice(psCursor + 1); + + // Parsing the BER + const ber: [[number, null], Uint8Array] = ber_simple(ber_decode(em)) as any; + const decryptedMessage = ber[1]; + + // Comparing the value + if (decryptedMessage.length !== m.length) return false; + for (let i = 0; i < decryptedMessage.length; i++) { + if (decryptedMessage[i] !== m[i]) return false; + } + + return true; +} + +export function rsa_pkcs1_sign( + bytes: number, + n: bigint, + d: bigint, + message: Uint8Array, +): RawBinary { + // deno-fmt-ignore + const oid = [0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00] + const der = [ + 0x30, + message.length + 2 + oid.length, + ...oid, + 0x04, + message.length, + ...message, + ]; + + const ps = new Array(bytes - 3 - der.length).fill(0xff); + const em = new Uint8Array([0x00, 0x01, ...ps, 0x00, ...der]); + + const msg = os2ip(em); + const c = rsaep(n, d, msg); + return new RawBinary(i2osp(c, bytes)); +} diff --git a/bundler/tests/.cache/deno/1269588bea35e23194ed43f8a7cbe30f6032827e.ts b/bundler/tests/.cache/deno/1269588bea35e23194ed43f8a7cbe30f6032827e.ts new file mode 100644 index 00000000000..a1e549bccdc --- /dev/null +++ b/bundler/tests/.cache/deno/1269588bea35e23194ed43f8a7cbe30f6032827e.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.80.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/12718a69cb4870a5d8f43e95389215a652e1ff23.ts b/bundler/tests/.cache/deno/12718a69cb4870a5d8f43e95389215a652e1ff23.ts new file mode 100644 index 00000000000..c02bc61e869 --- /dev/null +++ b/bundler/tests/.cache/deno/12718a69cb4870a5d8f43e95389215a652e1ff23.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/iobuffer/utf8.ts + + +const decoder = new TextDecoder('utf-8'); + +export function decode(bytes: Uint8Array): string { + return decoder.decode(bytes); +} + +const encoder = new TextEncoder(); + +export function encode(str: string): Uint8Array { + return encoder.encode(str); +} diff --git a/bundler/tests/.cache/deno/12dae7a3ff121d6d76dd029a5e0768673415815f.ts b/bundler/tests/.cache/deno/12dae7a3ff121d6d76dd029a5e0768673415815f.ts new file mode 100644 index 00000000000..ebf927b6f27 --- /dev/null +++ b/bundler/tests/.cache/deno/12dae7a3ff121d6d76dd029a5e0768673415815f.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std/async/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/12e9060a896dc887aeb65cdc0ea52ce8133476f5.ts b/bundler/tests/.cache/deno/12e9060a896dc887aeb65cdc0ea52ce8133476f5.ts new file mode 100644 index 00000000000..53b4edb3355 --- /dev/null +++ b/bundler/tests/.cache/deno/12e9060a896dc887aeb65cdc0ea52ce8133476f5.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/KnownFragmentNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Known fragment names + * + * A GraphQL document is only valid if all `...Fragment` fragment spreads refer + * to fragments defined in the same document. + */ +export function KnownFragmentNamesRule(context) { + return { + FragmentSpread(node) { + const fragmentName = node.name.value; + const fragment = context.getFragment(fragmentName); + + if (!fragment) { + context.reportError(new GraphQLError(`Unknown fragment "${fragmentName}".`, node.name)); + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/12f5bc47dce97aab7d2b439371a8325000270cd8.ts b/bundler/tests/.cache/deno/12f5bc47dce97aab7d2b439371a8325000270cd8.ts new file mode 100644 index 00000000000..afdaa66c6b7 --- /dev/null +++ b/bundler/tests/.cache/deno/12f5bc47dce97aab7d2b439371a8325000270cd8.ts @@ -0,0 +1,431 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/application.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { Context } from "./context.ts"; +import { + serve as defaultServe, + serveTLS as defaultServeTls, + Status, + STATUS_TEXT, +} from "./deps.ts"; +import { Key, KeyStack } from "./keyStack.ts"; +import { compose, Middleware } from "./middleware.ts"; +import type { + Serve, + Server, + ServerRequest, + ServerResponse, + ServeTls, +} from "./types.d.ts"; + +export interface ListenOptionsBase { + hostname?: string; + port: number; + secure?: false; + signal?: AbortSignal; +} + +export interface ListenOptionsTls { + certFile: string; + hostname?: string; + keyFile: string; + port: number; + secure: true; + signal?: AbortSignal; +} + +export type ListenOptions = ListenOptionsTls | ListenOptionsBase; + +function isOptionsTls(options: ListenOptions): options is ListenOptionsTls { + return options.secure === true; +} + +interface ApplicationErrorEventListener { + (evt: ApplicationErrorEvent): void | Promise; +} + +interface ApplicationErrorEventListenerObject { + handleEvent(evt: ApplicationErrorEvent): void | Promise; +} + +interface ApplicationErrorEventInit extends ErrorEventInit { + context?: Context; +} + +type ApplicationErrorEventListenerOrEventListenerObject = + | ApplicationErrorEventListener + | ApplicationErrorEventListenerObject; + +interface ApplicationListenEventListener { + (evt: ApplicationListenEvent): void | Promise; +} + +interface ApplicationListenEventListenerObject { + handleEvent(evt: ApplicationListenEvent): void | Promise; +} + +interface ApplicationListenEventInit extends EventInit { + hostname?: string; + port: number; + secure: boolean; +} + +type ApplicationListenEventListenerOrEventListenerObject = + | ApplicationListenEventListener + | ApplicationListenEventListenerObject; + +export interface ApplicationOptions { + /** An initial set of keys (or instance of `KeyGrip`) to be used for signing + * cookies produced by the application. */ + keys?: KeyStack | Key[]; + + /** If set to `true`, proxy headers will be trusted when processing requests. + * This defaults to `false`. */ + proxy?: boolean; + + /** The `server()` function to be used to read requests. + * + * _Not used generally, as this is just for mocking for test purposes_ */ + serve?: Serve; + + /** The `server()` function to be used to read requests. + * + * _Not used generally, as this is just for mocking for test purposes_ */ + serveTls?: ServeTls; + + /** The initial state object for the application, of which the type can be + * used to infer the type of the state for both the application and any of the + * application's context. */ + state?: S; +} + +interface RequestState { + handling: Set>; + closing: boolean; + closed: boolean; + server: Server; +} + +// deno-lint-ignore no-explicit-any +export type State = Record; + +const ADDR_REGEXP = /^\[?([^\]]*)\]?:([0-9]{1,5})$/; + +export class ApplicationErrorEvent extends ErrorEvent { + context?: Context; + + constructor(eventInitDict: ApplicationErrorEventInit) { + super("error", eventInitDict); + this.context = eventInitDict.context; + } +} + +export class ApplicationListenEvent extends Event { + hostname?: string; + port: number; + secure: boolean; + + constructor(eventInitDict: ApplicationListenEventInit) { + super("listen", eventInitDict); + this.hostname = eventInitDict.hostname; + this.port = eventInitDict.port; + this.secure = eventInitDict.secure; + } +} + +/** A class which registers middleware (via `.use()`) and then processes + * inbound requests against that middleware (via `.listen()`). + * + * The `context.state` can be typed via passing a generic argument when + * constructing an instance of `Application`. + */ +// deno-lint-ignore no-explicit-any +export class Application> + extends EventTarget { + #composedMiddleware?: (context: Context) => Promise; + #keys?: KeyStack; + #middleware: Middleware>[] = []; + #serve: Serve; + #serveTls: ServeTls; + + /** A set of keys, or an instance of `KeyStack` which will be used to sign + * cookies read and set by the application to avoid tampering with the + * cookies. */ + get keys(): KeyStack | Key[] | undefined { + return this.#keys; + } + + set keys(keys: KeyStack | Key[] | undefined) { + if (!keys) { + this.#keys = undefined; + return; + } else if (Array.isArray(keys)) { + this.#keys = new KeyStack(keys); + } else { + this.#keys = keys; + } + } + + /** If `true`, proxy headers will be trusted when processing requests. This + * defaults to `false`. */ + proxy: boolean; + + /** Generic state of the application, which can be specified by passing the + * generic argument when constructing: + * + * const app = new Application<{ foo: string }>(); + * + * Or can be contextually inferred based on setting an initial state object: + * + * const app = new Application({ state: { foo: "bar" } }); + * + */ + state: AS; + + constructor(options: ApplicationOptions = {}) { + super(); + const { + state, + keys, + proxy, + serve = defaultServe, + serveTls = defaultServeTls, + } = options; + + this.proxy = proxy ?? false; + this.keys = keys; + this.state = state ?? {} as AS; + this.#serve = serve; + this.#serveTls = serveTls; + } + + #getComposed = (): ((context: Context) => Promise) => { + if (!this.#composedMiddleware) { + this.#composedMiddleware = compose(this.#middleware); + } + return this.#composedMiddleware; + }; + + /** Deal with uncaught errors in either the middleware or sending the + * response. */ + // deno-lint-ignore no-explicit-any + #handleError = (context: Context, error: any): void => { + if (!(error instanceof Error)) { + error = new Error(`non-error thrown: ${JSON.stringify(error)}`); + } + const { message } = error; + this.dispatchEvent(new ApplicationErrorEvent({ context, message, error })); + if (!context.response.writable) { + return; + } + for (const key of context.response.headers.keys()) { + context.response.headers.delete(key); + } + if (error.headers && error.headers instanceof Headers) { + for (const [key, value] of error.headers) { + context.response.headers.set(key, value); + } + } + context.response.type = "text"; + const status: Status = context.response.status = + error instanceof Deno.errors.NotFound + ? 404 + : error.status && typeof error.status === "number" + ? error.status + : 500; + context.response.body = error.expose + ? error.message + : STATUS_TEXT.get(status); + }; + + /** Processing registered middleware on each request. */ + #handleRequest = async ( + request: ServerRequest, + secure: boolean, + state: RequestState, + ): Promise => { + const context = new Context(this, request, secure); + let resolve: () => void; + const handlingPromise = new Promise((res) => resolve = res); + state.handling.add(handlingPromise); + if (!state.closing && !state.closed) { + try { + await this.#getComposed()(context); + } catch (err) { + this.#handleError(context, err); + } + } + if (context.respond === false) { + context.response.destroy(); + resolve!(); + state.handling.delete(handlingPromise); + return; + } + try { + await request.respond(await context.response.toServerResponse()); + if (state.closing) { + state.server.close(); + state.closed = true; + } + } catch (err) { + this.#handleError(context, err); + } finally { + context.response.destroy(); + resolve!(); + state.handling.delete(handlingPromise); + } + }; + + /** Add an event listener for an `"error"` event which occurs when an + * un-caught error occurs when processing the middleware or during processing + * of the response. */ + addEventListener( + type: "error", + listener: ApplicationErrorEventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void; + /** Add an event listener for a `"listen"` event which occurs when the server + * has successfully opened but before any requests start being processed. */ + addEventListener( + type: "listen", + listener: ApplicationListenEventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void; + /** Add an event listener for an event. Currently valid event types are + * `"error"` and `"listen"`. */ + addEventListener( + type: "error" | "listen", + listener: EventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void { + super.addEventListener(type, listener, options); + } + + /** Handle an individual server request, returning the server response. This + * is similar to `.listen()`, but opening the connection and retrieving + * requests are not the responsibility of the application. If the generated + * context gets set to not to respond, then the method resolves with + * `undefined`, otherwise it resolves with a request that is compatible with + * `std/http/server`. */ + handle = async ( + request: ServerRequest, + secure = false, + ): Promise => { + if (!this.#middleware.length) { + throw new TypeError("There is no middleware to process requests."); + } + const context = new Context(this, request, secure); + try { + await this.#getComposed()(context); + } catch (err) { + this.#handleError(context, err); + } + if (context.respond === false) { + context.response.destroy(); + return; + } + try { + const response = await context.response.toServerResponse(); + context.response.destroy(); + return response; + } catch (err) { + this.#handleError(context, err); + throw err; + } + }; + + /** Start listening for requests, processing registered middleware on each + * request. If the options `.secure` is undefined or `false`, the listening + * will be over HTTP. If the options `.secure` property is `true`, a + * `.certFile` and a `.keyFile` property need to be supplied and requests + * will be processed over HTTPS. */ + async listen(addr: string): Promise; + /** Start listening for requests, processing registered middleware on each + * request. If the options `.secure` is undefined or `false`, the listening + * will be over HTTP. If the options `.secure` property is `true`, a + * `.certFile` and a `.keyFile` property need to be supplied and requests + * will be processed over HTTPS. */ + async listen(options: ListenOptions): Promise; + async listen(options: string | ListenOptions): Promise { + if (!this.#middleware.length) { + throw new TypeError("There is no middleware to process requests."); + } + if (typeof options === "string") { + const match = ADDR_REGEXP.exec(options); + if (!match) { + throw TypeError(`Invalid address passed: "${options}"`); + } + const [, hostname, portStr] = match; + options = { hostname, port: parseInt(portStr, 10) }; + } + const server = isOptionsTls(options) + ? this.#serveTls(options) + : this.#serve(options); + const { signal } = options; + const state = { + closed: false, + closing: false, + handling: new Set>(), + server, + }; + if (signal) { + signal.addEventListener("abort", () => { + if (!state.handling.size) { + server.close(); + state.closed = true; + } + state.closing = true; + }); + } + const { hostname, port, secure = false } = options; + this.dispatchEvent( + new ApplicationListenEvent({ hostname, port, secure }), + ); + try { + for await (const request of server) { + this.#handleRequest(request, secure, state); + } + await Promise.all(state.handling); + } catch (error) { + const message = error instanceof Error + ? error.message + : "Application Error"; + this.dispatchEvent( + new ApplicationErrorEvent({ message, error }), + ); + } + } + + /** Register middleware to be used with the application. Middleware will + * be processed in the order it is added, but middleware can control the flow + * of execution via the use of the `next()` function that the middleware + * function will be called with. The `context` object provides information + * about the current state of the application. + * + * Basic usage: + * + * ```ts + * const import { Application } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx, next) => { + * ctx.request; // contains request information + * ctx.response; // setups up information to use in the response; + * await next(); // manages the flow control of the middleware execution + * }); + * + * await app.listen({ port: 80 }); + * ``` + */ + use( + ...middleware: Middleware>[] + ): Application { + this.#middleware.push(...middleware); + this.#composedMiddleware = undefined; + // deno-lint-ignore no-explicit-any + return this as Application; + } +} diff --git a/bundler/tests/.cache/deno/130b0b16b08e2328afef5d1c788e881e0381f6a8.ts b/bundler/tests/.cache/deno/130b0b16b08e2328afef5d1c788e881e0381f6a8.ts new file mode 100644 index 00000000000..ea56f3c499c --- /dev/null +++ b/bundler/tests/.cache/deno/130b0b16b08e2328afef5d1c788e881e0381f6a8.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/error.ts + + +export interface MongoErrorInfo { + ok: 0; + errmsg: string; + code: number; + codeName: string; +} + +export class MongoError extends Error { + constructor(info: MongoErrorInfo) { + super(`MongoError: ${JSON.stringify(info)}`); + } +} diff --git a/bundler/tests/.cache/deno/131bef49857a0c38175f5a4a39ce9e2666475603.ts b/bundler/tests/.cache/deno/131bef49857a0c38175f5a4a39ce9e2666475603.ts new file mode 100644 index 00000000000..f3f01821180 --- /dev/null +++ b/bundler/tests/.cache/deno/131bef49857a0c38175f5a4a39ce9e2666475603.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/updateOne.js + + +import { mongobj, matches } from '../../deps.ts'; +import { ReadFileStream, WriteFileStream } from '../storage.ts'; + +export default async (filename ,query, operators, projection) => { + const readStream = new ReadFileStream(filename); + const writeStream = new WriteFileStream(filename); + let updated = []; + query = query || {}; + return new Promise((resolve, reject) => { + readStream.on('document', obj => { + if (matches(query, obj) && !updated.length) { + mongobj.update(obj, operators); + updated.push(obj) + } + writeStream.emit("write", obj) + }) + readStream.on("end", () => { + writeStream.emit("end"); + }) + writeStream.on("close", () => { + return resolve(updated[0] || null) + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/13302b6e4b7bfb7b8c496b9eb7fb4b383ca294c8.ts b/bundler/tests/.cache/deno/13302b6e4b7bfb7b8c496b9eb7fb4b383ca294c8.ts new file mode 100644 index 00000000000..641f671a9cf --- /dev/null +++ b/bundler/tests/.cache/deno/13302b6e4b7bfb7b8c496b9eb7fb4b383ca294c8.ts @@ -0,0 +1,77 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/KnownArgumentNamesRule.js + + +import didYouMean from '../../jsutils/didYouMean.js'; +import suggestionList from '../../jsutils/suggestionList.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { specifiedDirectives } from '../../type/directives.js'; + +/** + * Known argument names + * + * A GraphQL field is only valid if all supplied arguments are defined by + * that field. + */ +export function KnownArgumentNamesRule(context) { + return { ...KnownArgumentNamesOnDirectivesRule(context), + + Argument(argNode) { + const argDef = context.getArgument(); + const fieldDef = context.getFieldDef(); + const parentType = context.getParentType(); + + if (!argDef && fieldDef && parentType) { + const argName = argNode.name.value; + const knownArgsNames = fieldDef.args.map(arg => arg.name); + const suggestions = suggestionList(argName, knownArgsNames); + context.reportError(new GraphQLError(`Unknown argument "${argName}" on field "${parentType.name}.${fieldDef.name}".` + didYouMean(suggestions), argNode)); + } + } + + }; +} +/** + * @internal + */ + +export function KnownArgumentNamesOnDirectivesRule(context) { + const directiveArgs = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema ? schema.getDirectives() : specifiedDirectives; + + for (const directive of definedDirectives) { + directiveArgs[directive.name] = directive.args.map(arg => arg.name); + } + + const astDefinitions = context.getDocument().definitions; + + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const argsNodes = def.arguments ?? []; + directiveArgs[def.name.value] = argsNodes.map(arg => arg.name.value); + } + } + + return { + Directive(directiveNode) { + const directiveName = directiveNode.name.value; + const knownArgs = directiveArgs[directiveName]; + + if (directiveNode.arguments && knownArgs) { + for (const argNode of directiveNode.arguments) { + const argName = argNode.name.value; + + if (knownArgs.indexOf(argName) === -1) { + const suggestions = suggestionList(argName, knownArgs); + context.reportError(new GraphQLError(`Unknown argument "${argName}" on directive "@${directiveName}".` + didYouMean(suggestions), argNode)); + } + } + } + + return false; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1342fad556c7fa0a167607771800a427e263df6c.ts b/bundler/tests/.cache/deno/1342fad556c7fa0a167607771800a427e263df6c.ts new file mode 100644 index 00000000000..5be77fa6535 --- /dev/null +++ b/bundler/tests/.cache/deno/1342fad556c7fa0a167607771800a427e263df6c.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/splitAt.js + + +import _curry2 from './internal/_curry2.js'; +import length from './length.js'; +import slice from './slice.js'; + + +/** + * Splits a given list or string at a given index. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig Number -> [a] -> [[a], [a]] + * @sig Number -> String -> [String, String] + * @param {Number} index The index where the array/string is split. + * @param {Array|String} array The array/string to be split. + * @return {Array} + * @example + * + * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] + * R.splitAt(5, 'hello world'); //=> ['hello', ' world'] + * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r'] + */ +var splitAt = _curry2(function splitAt(index, array) { + return [slice(0, index, array), slice(index, length(array), array)]; +}); +export default splitAt; diff --git a/bundler/tests/.cache/deno/13700e6667201f37bc20bba0db87388b49b2ec72.ts b/bundler/tests/.cache/deno/13700e6667201f37bc20bba0db87388b49b2ec72.ts new file mode 100644 index 00000000000..fdfd8de9b01 --- /dev/null +++ b/bundler/tests/.cache/deno/13700e6667201f37bc20bba0db87388b49b2ec72.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std/log/levels.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/** Get log level numeric values through enum constants + */ +export enum LogLevels { + NOTSET = 0, + DEBUG = 10, + INFO = 20, + WARNING = 30, + ERROR = 40, + CRITICAL = 50, +} + +/** Permitted log level names */ +export const LogLevelNames = Object.keys(LogLevels).filter((key) => + isNaN(Number(key)) +); + +/** Union of valid log level strings */ +export type LevelName = keyof typeof LogLevels; + +const byLevel: Record = { + [String(LogLevels.NOTSET)]: "NOTSET", + [String(LogLevels.DEBUG)]: "DEBUG", + [String(LogLevels.INFO)]: "INFO", + [String(LogLevels.WARNING)]: "WARNING", + [String(LogLevels.ERROR)]: "ERROR", + [String(LogLevels.CRITICAL)]: "CRITICAL", +}; + +/** Returns the numeric log level associated with the passed, + * stringy log level name. + */ +export function getLevelByName(name: LevelName): number { + switch (name) { + case "NOTSET": + return LogLevels.NOTSET; + case "DEBUG": + return LogLevels.DEBUG; + case "INFO": + return LogLevels.INFO; + case "WARNING": + return LogLevels.WARNING; + case "ERROR": + return LogLevels.ERROR; + case "CRITICAL": + return LogLevels.CRITICAL; + default: + throw new Error(`no log level found for "${name}"`); + } +} + +/** Returns the stringy log level name provided the numeric log level */ +export function getLevelName(level: number): LevelName { + const levelName = byLevel[level]; + if (levelName) { + return levelName; + } + throw new Error(`no level name found for level: ${level}`); +} diff --git a/bundler/tests/.cache/deno/13aad9ce013f3be95ff24d7ae53b20355b9e0e6f.ts b/bundler/tests/.cache/deno/13aad9ce013f3be95ff24d7ae53b20355b9e0e6f.ts new file mode 100644 index 00000000000..6eb193fb0b9 --- /dev/null +++ b/bundler/tests/.cache/deno/13aad9ce013f3be95ff24d7ae53b20355b9e0e6f.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/modulo.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Divides the first parameter by the second and returns the remainder. Note + * that this function preserves the JavaScript-style behavior for modulo. For + * mathematical modulo see [`mathMod`](#mathMod). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The value to the divide. + * @param {Number} b The pseudo-modulus + * @return {Number} The result of `b % a`. + * @see R.mathMod + * @example + * + * R.modulo(17, 3); //=> 2 + * // JS behavior: + * R.modulo(-17, 3); //=> -2 + * R.modulo(17, -3); //=> 2 + * + * const isOdd = R.modulo(R.__, 2); + * isOdd(42); //=> 0 + * isOdd(21); //=> 1 + */ +var modulo = _curry2(function modulo(a, b) { return a % b; }); +export default modulo; diff --git a/bundler/tests/.cache/deno/1408020c1eb166e22d33bda9e6488190119a70bd.ts b/bundler/tests/.cache/deno/1408020c1eb166e22d33bda9e6488190119a70bd.ts new file mode 100644 index 00000000000..d471a6fe389 --- /dev/null +++ b/bundler/tests/.cache/deno/1408020c1eb166e22d33bda9e6488190119a70bd.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std@0.85.0/io/bufio.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/1428cf4db6bc088ba76d68090af3bdada70f249f.ts b/bundler/tests/.cache/deno/1428cf4db6bc088ba76d68090af3bdada70f249f.ts new file mode 100644 index 00000000000..7d3244f8121 --- /dev/null +++ b/bundler/tests/.cache/deno/1428cf4db6bc088ba76d68090af3bdada70f249f.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isSlug.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const charsetRegex = /^[^\s-_](?!.*?[-_]{2,})([a-z0-9-\\]{1,})[^\s]*[^-_\s]$/; + +export const isSlug = (str: string) => { + assertString(str); + return charsetRegex.test(str); +}; diff --git a/bundler/tests/.cache/deno/143995c47cdcea6c5a105c392ad766d23a5eb33f.ts b/bundler/tests/.cache/deno/143995c47cdcea6c5a105c392ad766d23a5eb33f.ts new file mode 100644 index 00000000000..aa91ba67ca3 --- /dev/null +++ b/bundler/tests/.cache/deno/143995c47cdcea6c5a105c392ad766d23a5eb33f.ts @@ -0,0 +1,68 @@ +// Loaded from https://deno.land/std@0.77.0/fs/ensure_file.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist. + * these directories are created. If the file already exists, + * it is NOTMODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureFile(filePath: string): Promise { + try { + // if file exists + const stat = await Deno.lstat(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + await ensureDir(path.dirname(filePath)); + // create file + await Deno.writeFile(filePath, new Uint8Array()); + return; + } + + throw err; + } +} + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist, + * these directories are created. If the file already exists, + * it is NOT MODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureFileSync(filePath: string): void { + try { + // if file exists + const stat = Deno.lstatSync(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + ensureDirSync(path.dirname(filePath)); + // create file + Deno.writeFileSync(filePath, new Uint8Array()); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/144981b6498020d07db7b00d051fa52657ec40a4.ts b/bundler/tests/.cache/deno/144981b6498020d07db7b00d051fa52657ec40a4.ts new file mode 100644 index 00000000000..abefb36220c --- /dev/null +++ b/bundler/tests/.cache/deno/144981b6498020d07db7b00d051fa52657ec40a4.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/deps.ts + + +export { encode as encodeJPG, decode as decodeJPG, Image } from "https://deno.land/x/jpegts@1.1/mod.ts"; diff --git a/bundler/tests/.cache/deno/1479eafa0ae9e55770fbed944a0b7d21f23d9fe4.ts b/bundler/tests/.cache/deno/1479eafa0ae9e55770fbed944a0b7d21f23d9fe4.ts new file mode 100644 index 00000000000..177c8fb8a47 --- /dev/null +++ b/bundler/tests/.cache/deno/1479eafa0ae9e55770fbed944a0b7d21f23d9fe4.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/merge.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +function resolveYamlMerge(data: string): boolean { + return data === "<<" || data === null; +} + +export const merge = new Type("tag:yaml.org,2002:merge", { + kind: "scalar", + resolve: resolveYamlMerge, +}); diff --git a/bundler/tests/.cache/deno/149ca7cd67e99d4dbdfdb2334423f29f486a3565.ts b/bundler/tests/.cache/deno/149ca7cd67e99d4dbdfdb2334423f29f486a3565.ts new file mode 100644 index 00000000000..0df1770c38a --- /dev/null +++ b/bundler/tests/.cache/deno/149ca7cd67e99d4dbdfdb2334423f29f486a3565.ts @@ -0,0 +1,383 @@ +// Loaded from https://deno.land/std@0.81.0/http/_io.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { assert } from "../_util/assert.ts"; +import { encoder } from "../encoding/utf8.ts"; +import { Response, ServerRequest } from "./server.ts"; +import { STATUS_TEXT } from "./http_status.ts"; + +export function emptyReader(): Deno.Reader { + return { + read(_: Uint8Array): Promise { + return Promise.resolve(null); + }, + }; +} + +export function bodyReader(contentLength: number, r: BufReader): Deno.Reader { + let totalRead = 0; + let finished = false; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + let result: number | null; + const remaining = contentLength - totalRead; + if (remaining >= buf.byteLength) { + result = await r.read(buf); + } else { + const readBuf = buf.subarray(0, remaining); + result = await r.read(readBuf); + } + if (result !== null) { + totalRead += result; + } + finished = totalRead === contentLength; + return result; + } + return { read }; +} + +export function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO: handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Deno.errors.InvalidData("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +function isProhibidedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} + +/** Read trailer headers from reader and append values to headers. "trailer" + * field will be deleted. */ +export async function readTrailers( + headers: Headers, + r: BufReader, +): Promise { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMIMEHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibidedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +export async function writeChunkedBody( + w: BufWriter, + r: Deno.Reader, +): Promise { + for await (const chunk of Deno.iter(r)) { + if (chunk.byteLength <= 0) continue; + const start = encoder.encode(`${chunk.byteLength.toString(16)}\r\n`); + const end = encoder.encode("\r\n"); + await w.write(start); + await w.write(chunk); + await w.write(end); + await w.flush(); + } + + const endChunk = encoder.encode("0\r\n\r\n"); + await w.write(endChunk); +} + +/** Write trailer headers to writer. It should mostly should be called after + * `writeResponse()`. */ +export async function writeTrailers( + w: Deno.Writer, + headers: Headers, + trailers: Headers, +): Promise { + const trailer = headers.get("trailer"); + if (trailer === null) { + throw new TypeError("Missing trailer header."); + } + const transferEncoding = headers.get("transfer-encoding"); + if (transferEncoding === null || !transferEncoding.match(/^chunked/)) { + throw new TypeError( + `Trailers are only allowed for "transfer-encoding: chunked", got "transfer-encoding: ${transferEncoding}".`, + ); + } + const writer = BufWriter.create(w); + const trailerNames = trailer.split(",").map((s) => s.trim().toLowerCase()); + const prohibitedTrailers = trailerNames.filter((k) => + isProhibidedForTrailer(k) + ); + if (prohibitedTrailers.length > 0) { + throw new TypeError( + `Prohibited trailer names: ${Deno.inspect(prohibitedTrailers)}.`, + ); + } + const undeclared = [...trailers.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new TypeError(`Undeclared trailers: ${Deno.inspect(undeclared)}.`); + } + for (const [key, value] of trailers) { + await writer.write(encoder.encode(`${key}: ${value}\r\n`)); + } + await writer.write(encoder.encode("\r\n")); + await writer.flush(); +} + +export async function writeResponse( + w: Deno.Writer, + r: Response, +): Promise { + const protoMajor = 1; + const protoMinor = 1; + const statusCode = r.status || 200; + const statusText = STATUS_TEXT.get(statusCode); + const writer = BufWriter.create(w); + if (!statusText) { + throw new Deno.errors.InvalidData("Bad status code"); + } + if (!r.body) { + r.body = new Uint8Array(); + } + if (typeof r.body === "string") { + r.body = encoder.encode(r.body); + } + + let out = `HTTP/${protoMajor}.${protoMinor} ${statusCode} ${statusText}\r\n`; + + const headers = r.headers ?? new Headers(); + + if (r.body && !headers.get("content-length")) { + if (r.body instanceof Uint8Array) { + out += `content-length: ${r.body.byteLength}\r\n`; + } else if (!headers.get("transfer-encoding")) { + out += "transfer-encoding: chunked\r\n"; + } + } + + for (const [key, value] of headers) { + out += `${key}: ${value}\r\n`; + } + + out += `\r\n`; + + const header = encoder.encode(out); + const n = await writer.write(header); + assert(n === header.byteLength); + + if (r.body instanceof Uint8Array) { + const n = await writer.write(r.body); + assert(n === r.body.byteLength); + } else if (headers.has("content-length")) { + const contentLength = headers.get("content-length"); + assert(contentLength != null); + const bodyLength = parseInt(contentLength); + const n = await Deno.copy(r.body, writer); + assert(n === bodyLength); + } else { + await writeChunkedBody(writer, r.body); + } + if (r.trailers) { + const t = await r.trailers(); + await writeTrailers(writer, headers, t); + } + await writer.flush(); +} + +/** + * ParseHTTPVersion parses a HTTP version string. + * "HTTP/1.0" returns (1, 0). + * Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792 + */ +export function parseHTTPVersion(vers: string): [number, number] { + switch (vers) { + case "HTTP/1.1": + return [1, 1]; + + case "HTTP/1.0": + return [1, 0]; + + default: { + const Big = 1000000; // arbitrary upper bound + + if (!vers.startsWith("HTTP/")) { + break; + } + + const dot = vers.indexOf("."); + if (dot < 0) { + break; + } + + const majorStr = vers.substring(vers.indexOf("/") + 1, dot); + const major = Number(majorStr); + if (!Number.isInteger(major) || major < 0 || major > Big) { + break; + } + + const minorStr = vers.substring(dot + 1); + const minor = Number(minorStr); + if (!Number.isInteger(minor) || minor < 0 || minor > Big) { + break; + } + + return [major, minor]; + } + } + + throw new Error(`malformed HTTP version ${vers}`); +} + +export async function readRequest( + conn: Deno.Conn, + bufr: BufReader, +): Promise { + const tp = new TextProtoReader(bufr); + const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 + if (firstLine === null) return null; + const headers = await tp.readMIMEHeader(); + if (headers === null) throw new Deno.errors.UnexpectedEof(); + + const req = new ServerRequest(); + req.conn = conn; + req.r = bufr; + [req.method, req.url, req.proto] = firstLine.split(" ", 3); + [req.protoMinor, req.protoMajor] = parseHTTPVersion(req.proto); + req.headers = headers; + fixLength(req); + return req; +} + +function fixLength(req: ServerRequest): void { + const contentLength = req.headers.get("Content-Length"); + if (contentLength) { + const arrClen = contentLength.split(","); + if (arrClen.length > 1) { + const distinct = [...new Set(arrClen.map((e): string => e.trim()))]; + if (distinct.length > 1) { + throw Error("cannot contain multiple Content-Length headers"); + } else { + req.headers.set("Content-Length", distinct[0]); + } + } + const c = req.headers.get("Content-Length"); + if (req.method === "HEAD" && c && c !== "0") { + throw Error("http: method cannot contain a Content-Length"); + } + if (c && req.headers.has("transfer-encoding")) { + // A sender MUST NOT send a Content-Length header field in any message + // that contains a Transfer-Encoding header field. + // rfc: https://tools.ietf.org/html/rfc7230#section-3.3.2 + throw new Error( + "http: Transfer-Encoding and Content-Length cannot be send together", + ); + } + } +} diff --git a/bundler/tests/.cache/deno/14caf10dcb6d28d0c7f647aeb882cc69b928e20c.ts b/bundler/tests/.cache/deno/14caf10dcb6d28d0c7f647aeb882cc69b928e20c.ts new file mode 100644 index 00000000000..22de3d70325 --- /dev/null +++ b/bundler/tests/.cache/deno/14caf10dcb6d28d0c7f647aeb882cc69b928e20c.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unnest.js + + +import _identity from './internal/_identity.js'; +import chain from './chain.js'; + + +/** + * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from + * any [Chain](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain c => c (c a) -> c a + * @param {*} list + * @return {*} + * @see R.flatten, R.chain + * @example + * + * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] + * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] + */ +var unnest = chain(_identity); +export default unnest; diff --git a/bundler/tests/.cache/deno/14d2cb6efaa975d346dd8d3811810e8c910c4912.ts b/bundler/tests/.cache/deno/14d2cb6efaa975d346dd8d3811810e8c910c4912.ts new file mode 100644 index 00000000000..781a27f8a3e --- /dev/null +++ b/bundler/tests/.cache/deno/14d2cb6efaa975d346dd8d3811810e8c910c4912.ts @@ -0,0 +1,1272 @@ +// Loaded from https://deno.land/x/jpegts@1.1/lib/encoder.ts + + +/* + Copyright (c) 2008, Adobe Systems Incorporated + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Adobe Systems Incorporated nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* +JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009 + +Basic GUI blocking jpeg encoder +*/ +import { Image } from "./image.ts"; + +function JPEGEncoder(quality: number) { + const ffloor = Math.floor; + const YTable = new Array(64); + const UVTable = new Array(64); + const fdtbl_Y = new Array(64); + const fdtbl_UV = new Array(64); + // @ts-ignore + let YDC_HT; + // @ts-ignore + let UVDC_HT; + // @ts-ignore + let YAC_HT; + // @ts-ignore + let UVAC_HT; + + const bitcode = new Array(65535); + const category = new Array(65535); + const outputfDCTQuant = new Array(64); + const DU = new Array(64); + let byteout = []; + let bytenew = 0; + let bytepos = 7; + + const YDU = new Array(64); + const UDU = new Array(64); + const VDU = new Array(64); + const clt = new Array(256); + const RGB_YUV_TABLE = new Array(2048); + // @ts-ignore + let currentQuality; + + const ZigZag = [ + 0, + 1, + 5, + 6, + 14, + 15, + 27, + 28, + 2, + 4, + 7, + 13, + 16, + 26, + 29, + 42, + 3, + 8, + 12, + 17, + 25, + 30, + 41, + 43, + 9, + 11, + 18, + 24, + 31, + 40, + 44, + 53, + 10, + 19, + 23, + 32, + 39, + 45, + 52, + 54, + 20, + 22, + 33, + 38, + 46, + 51, + 55, + 60, + 21, + 34, + 37, + 47, + 50, + 56, + 59, + 61, + 35, + 36, + 48, + 49, + 57, + 58, + 62, + 63, + ]; + + const std_dc_luminance_nrcodes = [ + 0, + 0, + 1, + 5, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ]; + const std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + const std_ac_luminance_nrcodes = [ + 0, + 0, + 2, + 1, + 3, + 3, + 2, + 4, + 3, + 5, + 5, + 4, + 4, + 0, + 0, + 1, + 0x7d, + ]; + const std_ac_luminance_values = [ + 0x01, + 0x02, + 0x03, + 0x00, + 0x04, + 0x11, + 0x05, + 0x12, + 0x21, + 0x31, + 0x41, + 0x06, + 0x13, + 0x51, + 0x61, + 0x07, + 0x22, + 0x71, + 0x14, + 0x32, + 0x81, + 0x91, + 0xa1, + 0x08, + 0x23, + 0x42, + 0xb1, + 0xc1, + 0x15, + 0x52, + 0xd1, + 0xf0, + 0x24, + 0x33, + 0x62, + 0x72, + 0x82, + 0x09, + 0x0a, + 0x16, + 0x17, + 0x18, + 0x19, + 0x1a, + 0x25, + 0x26, + 0x27, + 0x28, + 0x29, + 0x2a, + 0x34, + 0x35, + 0x36, + 0x37, + 0x38, + 0x39, + 0x3a, + 0x43, + 0x44, + 0x45, + 0x46, + 0x47, + 0x48, + 0x49, + 0x4a, + 0x53, + 0x54, + 0x55, + 0x56, + 0x57, + 0x58, + 0x59, + 0x5a, + 0x63, + 0x64, + 0x65, + 0x66, + 0x67, + 0x68, + 0x69, + 0x6a, + 0x73, + 0x74, + 0x75, + 0x76, + 0x77, + 0x78, + 0x79, + 0x7a, + 0x83, + 0x84, + 0x85, + 0x86, + 0x87, + 0x88, + 0x89, + 0x8a, + 0x92, + 0x93, + 0x94, + 0x95, + 0x96, + 0x97, + 0x98, + 0x99, + 0x9a, + 0xa2, + 0xa3, + 0xa4, + 0xa5, + 0xa6, + 0xa7, + 0xa8, + 0xa9, + 0xaa, + 0xb2, + 0xb3, + 0xb4, + 0xb5, + 0xb6, + 0xb7, + 0xb8, + 0xb9, + 0xba, + 0xc2, + 0xc3, + 0xc4, + 0xc5, + 0xc6, + 0xc7, + 0xc8, + 0xc9, + 0xca, + 0xd2, + 0xd3, + 0xd4, + 0xd5, + 0xd6, + 0xd7, + 0xd8, + 0xd9, + 0xda, + 0xe1, + 0xe2, + 0xe3, + 0xe4, + 0xe5, + 0xe6, + 0xe7, + 0xe8, + 0xe9, + 0xea, + 0xf1, + 0xf2, + 0xf3, + 0xf4, + 0xf5, + 0xf6, + 0xf7, + 0xf8, + 0xf9, + 0xfa, + ]; + + const std_dc_chrominance_nrcodes = [ + 0, + 0, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + ]; + const std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + const std_ac_chrominance_nrcodes = [ + 0, + 0, + 2, + 1, + 2, + 4, + 4, + 3, + 4, + 7, + 5, + 4, + 4, + 0, + 1, + 2, + 0x77, + ]; + const std_ac_chrominance_values = [ + 0x00, + 0x01, + 0x02, + 0x03, + 0x11, + 0x04, + 0x05, + 0x21, + 0x31, + 0x06, + 0x12, + 0x41, + 0x51, + 0x07, + 0x61, + 0x71, + 0x13, + 0x22, + 0x32, + 0x81, + 0x08, + 0x14, + 0x42, + 0x91, + 0xa1, + 0xb1, + 0xc1, + 0x09, + 0x23, + 0x33, + 0x52, + 0xf0, + 0x15, + 0x62, + 0x72, + 0xd1, + 0x0a, + 0x16, + 0x24, + 0x34, + 0xe1, + 0x25, + 0xf1, + 0x17, + 0x18, + 0x19, + 0x1a, + 0x26, + 0x27, + 0x28, + 0x29, + 0x2a, + 0x35, + 0x36, + 0x37, + 0x38, + 0x39, + 0x3a, + 0x43, + 0x44, + 0x45, + 0x46, + 0x47, + 0x48, + 0x49, + 0x4a, + 0x53, + 0x54, + 0x55, + 0x56, + 0x57, + 0x58, + 0x59, + 0x5a, + 0x63, + 0x64, + 0x65, + 0x66, + 0x67, + 0x68, + 0x69, + 0x6a, + 0x73, + 0x74, + 0x75, + 0x76, + 0x77, + 0x78, + 0x79, + 0x7a, + 0x82, + 0x83, + 0x84, + 0x85, + 0x86, + 0x87, + 0x88, + 0x89, + 0x8a, + 0x92, + 0x93, + 0x94, + 0x95, + 0x96, + 0x97, + 0x98, + 0x99, + 0x9a, + 0xa2, + 0xa3, + 0xa4, + 0xa5, + 0xa6, + 0xa7, + 0xa8, + 0xa9, + 0xaa, + 0xb2, + 0xb3, + 0xb4, + 0xb5, + 0xb6, + 0xb7, + 0xb8, + 0xb9, + 0xba, + 0xc2, + 0xc3, + 0xc4, + 0xc5, + 0xc6, + 0xc7, + 0xc8, + 0xc9, + 0xca, + 0xd2, + 0xd3, + 0xd4, + 0xd5, + 0xd6, + 0xd7, + 0xd8, + 0xd9, + 0xda, + 0xe2, + 0xe3, + 0xe4, + 0xe5, + 0xe6, + 0xe7, + 0xe8, + 0xe9, + 0xea, + 0xf2, + 0xf3, + 0xf4, + 0xf5, + 0xf6, + 0xf7, + 0xf8, + 0xf9, + 0xfa, + ]; + // @ts-ignore + function initQuantTables(sf) { + const YQT = [ + 16, + 11, + 10, + 16, + 24, + 40, + 51, + 61, + 12, + 12, + 14, + 19, + 26, + 58, + 60, + 55, + 14, + 13, + 16, + 24, + 40, + 57, + 69, + 56, + 14, + 17, + 22, + 29, + 51, + 87, + 80, + 62, + 18, + 22, + 37, + 56, + 68, + 109, + 103, + 77, + 24, + 35, + 55, + 64, + 81, + 104, + 113, + 92, + 49, + 64, + 78, + 87, + 103, + 121, + 120, + 101, + 72, + 92, + 95, + 98, + 112, + 100, + 103, + 99, + ]; + + for (let i = 0; i < 64; i++) { + let t = ffloor((YQT[i] * sf + 50) / 100); + if (t < 1) { + t = 1; + } else if (t > 255) { + t = 255; + } + YTable[ZigZag[i]] = t; + } + const UVQT = [ + 17, + 18, + 24, + 47, + 99, + 99, + 99, + 99, + 18, + 21, + 26, + 66, + 99, + 99, + 99, + 99, + 24, + 26, + 56, + 99, + 99, + 99, + 99, + 99, + 47, + 66, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + 99, + ]; + for (let j = 0; j < 64; j++) { + let u = ffloor((UVQT[j] * sf + 50) / 100); + if (u < 1) { + u = 1; + } else if (u > 255) { + u = 255; + } + UVTable[ZigZag[j]] = u; + } + const aasf = [ + 1.0, + 1.387039845, + 1.306562965, + 1.175875602, + 1.0, + 0.785694958, + 0.541196100, + 0.275899379, + ]; + let k = 0; + for (let row = 0; row < 8; row++) { + for (let col = 0; col < 8; col++) { + fdtbl_Y[k] = (1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); + fdtbl_UV[k] = + (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); + k++; + } + } + } + + // @ts-ignore + function computeHuffmanTbl(nrcodes, std_table) { + let codevalue = 0; + let pos_in_table = 0; + const HT = new Array(); + for (let k = 1; k <= 16; k++) { + for (let j = 1; j <= nrcodes[k]; j++) { + HT[std_table[pos_in_table]] = []; + HT[std_table[pos_in_table]][0] = codevalue; + HT[std_table[pos_in_table]][1] = k; + pos_in_table++; + codevalue++; + } + codevalue *= 2; + } + return HT; + } + + function initHuffmanTbl() { + YDC_HT = computeHuffmanTbl( + std_dc_luminance_nrcodes, + std_dc_luminance_values, + ); + UVDC_HT = computeHuffmanTbl( + std_dc_chrominance_nrcodes, + std_dc_chrominance_values, + ); + YAC_HT = computeHuffmanTbl( + std_ac_luminance_nrcodes, + std_ac_luminance_values, + ); + UVAC_HT = computeHuffmanTbl( + std_ac_chrominance_nrcodes, + std_ac_chrominance_values, + ); + } + + function initCategoryNumber() { + let nrlower = 1; + let nrupper = 2; + for (let cat = 1; cat <= 15; cat++) { + // Positive numbers + for (let nr = nrlower; nr < nrupper; nr++) { + category[32767 + nr] = cat; + bitcode[32767 + nr] = []; + bitcode[32767 + nr][1] = cat; + bitcode[32767 + nr][0] = nr; + } + // Negative numbers + for (let nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) { + category[32767 + nrneg] = cat; + bitcode[32767 + nrneg] = []; + bitcode[32767 + nrneg][1] = cat; + bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg; + } + nrlower <<= 1; + nrupper <<= 1; + } + } + + function initRGBYUVTable() { + for (let i = 0; i < 256; i++) { + RGB_YUV_TABLE[i] = 19595 * i; + RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i; + RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000; + RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i; + RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i; + RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807FFF; + RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i; + RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i; + } + } + + // IO functions + // @ts-ignore + function writeBits(bs) { + const value = bs[0]; + let posval = bs[1] - 1; + while (posval >= 0) { + if (value & (1 << posval)) { + bytenew |= (1 << bytepos); + } + posval--; + bytepos--; + if (bytepos < 0) { + if (bytenew === 0xFF) { + writeByte(0xFF); + writeByte(0); + } else { + writeByte(bytenew); + } + bytepos = 7; + bytenew = 0; + } + } + } + + // @ts-ignore + function writeByte(value) { + // byteout.push(clt[value]); // write char directly instead of converting later + byteout.push(value); + } + + // @ts-ignore + function writeWord(value) { + writeByte((value >> 8) & 0xFF); + writeByte((value) & 0xFF); + } + + // DCT & quantization core + // @ts-ignore + function fDCTQuant(data, fdtbl) { + let d0, d1, d2, d3, d4, d5, d6, d7; + /* Pass 1: process rows. */ + let dataOff = 0; + let i; + const I8 = 8; + const I64 = 64; + for (i = 0; i < I8; ++i) { + d0 = data[dataOff]; + d1 = data[dataOff + 1]; + d2 = data[dataOff + 2]; + d3 = data[dataOff + 3]; + d4 = data[dataOff + 4]; + d5 = data[dataOff + 5]; + d6 = data[dataOff + 6]; + d7 = data[dataOff + 7]; + + const tmp0 = d0 + d7; + const tmp7 = d0 - d7; + const tmp1 = d1 + d6; + const tmp6 = d1 - d6; + const tmp2 = d2 + d5; + const tmp5 = d2 - d5; + const tmp3 = d3 + d4; + const tmp4 = d3 - d4; + + /* Even part */ + let tmp10 = tmp0 + tmp3; /* phase 2 */ + const tmp13 = tmp0 - tmp3; + let tmp11 = tmp1 + tmp2; + let tmp12 = tmp1 - tmp2; + + data[dataOff] = tmp10 + tmp11; /* phase 3 */ + data[dataOff + 4] = tmp10 - tmp11; + + const z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */ + data[dataOff + 2] = tmp13 + z1; /* phase 5 */ + data[dataOff + 6] = tmp13 - z1; + + /* Odd part */ + tmp10 = tmp4 + tmp5; /* phase 2 */ + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + /* The rotator is modified from fig 4-8 to avoid extra negations. */ + const z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */ + const z2 = 0.541196100 * tmp10 + z5; /* c2-c6 */ + const z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */ + const z3 = tmp11 * 0.707106781; /* c4 */ + + const z11 = tmp7 + z3; /* phase 5 */ + const z13 = tmp7 - z3; + + data[dataOff + 5] = z13 + z2; /* phase 6 */ + data[dataOff + 3] = z13 - z2; + data[dataOff + 1] = z11 + z4; + data[dataOff + 7] = z11 - z4; + + dataOff += 8; /* advance pointer to next row */ + } + + /* Pass 2: process columns. */ + dataOff = 0; + for (i = 0; i < I8; ++i) { + d0 = data[dataOff]; + d1 = data[dataOff + 8]; + d2 = data[dataOff + 16]; + d3 = data[dataOff + 24]; + d4 = data[dataOff + 32]; + d5 = data[dataOff + 40]; + d6 = data[dataOff + 48]; + d7 = data[dataOff + 56]; + + const tmp0p2 = d0 + d7; + const tmp7p2 = d0 - d7; + const tmp1p2 = d1 + d6; + const tmp6p2 = d1 - d6; + const tmp2p2 = d2 + d5; + const tmp5p2 = d2 - d5; + const tmp3p2 = d3 + d4; + const tmp4p2 = d3 - d4; + + /* Even part */ + let tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */ + const tmp13p2 = tmp0p2 - tmp3p2; + let tmp11p2 = tmp1p2 + tmp2p2; + let tmp12p2 = tmp1p2 - tmp2p2; + + data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */ + data[dataOff + 32] = tmp10p2 - tmp11p2; + + const z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */ + data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */ + data[dataOff + 48] = tmp13p2 - z1p2; + + /* Odd part */ + tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */ + tmp11p2 = tmp5p2 + tmp6p2; + tmp12p2 = tmp6p2 + tmp7p2; + + /* The rotator is modified from fig 4-8 to avoid extra negations. */ + const z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */ + const z2p2 = 0.541196100 * tmp10p2 + z5p2; /* c2-c6 */ + const z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */ + const z3p2 = tmp11p2 * 0.707106781; /* c4 */ + + const z11p2 = tmp7p2 + z3p2; /* phase 5 */ + const z13p2 = tmp7p2 - z3p2; + + data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */ + data[dataOff + 24] = z13p2 - z2p2; + data[dataOff + 8] = z11p2 + z4p2; + data[dataOff + 56] = z11p2 - z4p2; + + dataOff++; /* advance pointer to next column */ + } + + // Quantize/descale the coefficients + let fDCTQuant1; + for (i = 0; i < I64; ++i) { + // Apply the quantization and scaling factor & Round to nearest integer + fDCTQuant1 = data[i] * fdtbl[i]; + outputfDCTQuant[i] = (fDCTQuant1 > 0.0) + ? ((fDCTQuant1 + 0.5) | 0) + : ((fDCTQuant1 - 0.5) | 0); + } + return outputfDCTQuant; + } + + function writeAPP0() { + writeWord(0xFFE0); // marker + writeWord(16); // length + writeByte(0x4A); // J + writeByte(0x46); // F + writeByte(0x49); // I + writeByte(0x46); // F + writeByte(0); // = "JFIF",'\0' + writeByte(1); // versionhi + writeByte(1); // versionlo + writeByte(0); // xyunits + writeWord(1); // xdensity + writeWord(1); // ydensity + writeByte(0); // thumbnwidth + writeByte(0); // thumbnheight + } + + // @ts-ignore + function writeSOF0(width, height) { + writeWord(0xFFC0); // marker + writeWord(17); // length, truecolor YUV JPG + writeByte(8); // precision + writeWord(height); + writeWord(width); + writeByte(3); // nrofcomponents + writeByte(1); // IdY + writeByte(0x11); // HVY + writeByte(0); // QTY + writeByte(2); // IdU + writeByte(0x11); // HVU + writeByte(1); // QTU + writeByte(3); // IdV + writeByte(0x11); // HVV + writeByte(1); // QTV + } + + function writeDQT() { + writeWord(0xFFDB); // marker + writeWord(132); // length + writeByte(0); + for (let i = 0; i < 64; i++) { + writeByte(YTable[i]); + } + writeByte(1); + for (let j = 0; j < 64; j++) { + writeByte(UVTable[j]); + } + } + + function writeDHT() { + writeWord(0xFFC4); // marker + writeWord(0x01A2); // length + + writeByte(0); // HTYDCinfo + for (let i = 0; i < 16; i++) { + writeByte(std_dc_luminance_nrcodes[i + 1]); + } + for (let j = 0; j <= 11; j++) { + writeByte(std_dc_luminance_values[j]); + } + + writeByte(0x10); // HTYACinfo + for (let k = 0; k < 16; k++) { + writeByte(std_ac_luminance_nrcodes[k + 1]); + } + for (let l = 0; l <= 161; l++) { + writeByte(std_ac_luminance_values[l]); + } + + writeByte(1); // HTUDCinfo + for (let m = 0; m < 16; m++) { + writeByte(std_dc_chrominance_nrcodes[m + 1]); + } + for (let n = 0; n <= 11; n++) { + writeByte(std_dc_chrominance_values[n]); + } + + writeByte(0x11); // HTUACinfo + for (let o = 0; o < 16; o++) { + writeByte(std_ac_chrominance_nrcodes[o + 1]); + } + for (let p = 0; p <= 161; p++) { + writeByte(std_ac_chrominance_values[p]); + } + } + + function writeSOS() { + writeWord(0xFFDA); // marker + writeWord(12); // length + writeByte(3); // nrofcomponents + writeByte(1); // IdY + writeByte(0); // HTY + writeByte(2); // IdU + writeByte(0x11); // HTU + writeByte(3); // IdV + writeByte(0x11); // HTV + writeByte(0); // Ss + writeByte(0x3f); // Se + writeByte(0); // Bf + } + + // @ts-ignore + function processDU(CDU, fdtbl, DC, HTDC, HTAC) { + const EOB = HTAC[0x00]; + const M16zeroes = HTAC[0xF0]; + let pos; + const I16 = 16; + const I63 = 63; + const I64 = 64; + const DU_DCT = fDCTQuant(CDU, fdtbl); + // ZigZag reorder + for (let j = 0; j < I64; ++j) { + DU[ZigZag[j]] = DU_DCT[j]; + } + const Diff = DU[0] - DC; + DC = DU[0]; + // Encode DC + if (Diff === 0) { + writeBits(HTDC[0]); // Diff might be 0 + } else { + pos = 32767 + Diff; + writeBits(HTDC[category[pos]]); + writeBits(bitcode[pos]); + } + // Encode ACs + let end0pos = 63; // was const... which is crazy + for (; (end0pos > 0) && (DU[end0pos] === 0); end0pos--) {} + // end0pos = first element in reverse order !=0 + if (end0pos === 0) { + writeBits(EOB); + return DC; + } + let i = 1; + let lng; + while (i <= end0pos) { + const startpos = i; + for (; (DU[i] === 0) && (i <= end0pos); ++i) {} + let nrzeroes = i - startpos; + if (nrzeroes >= I16) { + lng = nrzeroes >> 4; + for (let nrmarker = 1; nrmarker <= lng; ++nrmarker) { + writeBits(M16zeroes); + } + nrzeroes = nrzeroes & 0xF; + } + pos = 32767 + DU[i]; + writeBits(HTAC[(nrzeroes << 4) + category[pos]]); + writeBits(bitcode[pos]); + i++; + } + if (end0pos !== I63) { + writeBits(EOB); + } + return DC; + } + + function initCharLookupTable() { + const sfcc = String.fromCharCode; + for (let i = 0; i < 256; i++) { ///// ACHTUNG // 255 + clt[i] = sfcc(i); + } + } + // @ts-ignore + this.encode = function (image, q) { + if (q) { setQuality(q); } + + // Initialize bit writer + byteout = new Array(); + bytenew = 0; + bytepos = 7; + + // Add JPEG headers + writeWord(0xFFD8); // SOI + writeAPP0(); + writeDQT(); + writeSOF0(image.width, image.height); + writeDHT(); + writeSOS(); + + // Encode 8x8 macroblocks + let DCY = 0; + let DCU = 0; + let DCV = 0; + + bytenew = 0; + bytepos = 7; + + this.encode.displayName = "_encode_"; + + const imageData = image.data; + const width = image.width; + const height = image.height; + + const quadWidth = width * 4; + + let x, y = 0; + let r, g, b; + let start, p, col, row, pos; + while (y < height) { + x = 0; + while (x < quadWidth) { + start = quadWidth * y + x; + + for (pos = 0; pos < 64; pos++) { + row = pos >> 3; // /8 + col = (pos & 7) * 4; // %8 + p = start + (row * quadWidth) + col; + + if (y + row >= height) { // padding bottom + p -= (quadWidth * (y + 1 + row - height)); + } + + if (x + col >= quadWidth) { // padding right + p -= ((x + col) - quadWidth + 4); + } + + r = imageData[p++]; + g = imageData[p++]; + b = imageData[p]; + + /* // calculate YUV values dynamically + YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80 + UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b)); + VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b)); + */ + + // use lookup table (slightly faster) + YDU[pos] = + ((RGB_YUV_TABLE[r] + RGB_YUV_TABLE[(g + 256) >> 0] + + RGB_YUV_TABLE[(b + 512) >> 0]) >> 16) - 128; + UDU[pos] = + ((RGB_YUV_TABLE[(r + 768) >> 0] + RGB_YUV_TABLE[(g + 1024) >> 0] + + RGB_YUV_TABLE[(b + 1280) >> 0]) >> 16) - 128; + VDU[pos] = + ((RGB_YUV_TABLE[(r + 1280) >> 0] + RGB_YUV_TABLE[(g + 1536) >> 0] + + RGB_YUV_TABLE[(b + 1792) >> 0]) >> 16) - 128; + } + + // @ts-ignore + DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + // @ts-ignore + DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + // @ts-ignore + DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + x += 32; + } + y += 8; + } + + //////////////////////////////////////////////////////////////// + + // Do the bit alignment of the EOI marker + if (bytepos >= 0) { + const fillbits = []; + fillbits[1] = bytepos + 1; + fillbits[0] = (1 << (bytepos + 1)) - 1; + writeBits(fillbits); + } + + writeWord(0xFFD9); // EOI + + return new Uint8Array(byteout); + }; + + // @ts-ignore + function setQuality(q) { + if (q <= 0) { + q = 1; + } + if (q > 100) { + q = 100; + } + + // @ts-ignore + if (currentQuality === q) { return; } // don't recalc if unchanged + + let sf = 0; + if (q < 50) { + sf = Math.floor(5000 / q); + } else { + sf = Math.floor(200 - q * 2); + } + + initQuantTables(sf); + currentQuality = q; + } + + function init() { + if (!quality) { quality = 50; } + // Create tables + initCharLookupTable(); + initHuffmanTbl(); + initCategoryNumber(); + initRGBYUVTable(); + + setQuality(quality); + } + + init(); +} + +export const encode = function (imgData: Image, qu: number = 50): Image { + // @ts-ignore + const encoder = new JPEGEncoder(qu); + const data = encoder.encode(imgData, qu); + const result = new Image(); + result.data = data; + result.width = imgData.width; + result.height = imgData.height; + + return result; +}; diff --git a/bundler/tests/.cache/deno/14d686bf665411aa7e9a837a8ac56363826d259c.ts b/bundler/tests/.cache/deno/14d686bf665411aa7e9a837a8ac56363826d259c.ts new file mode 100644 index 00000000000..c91c76f47c1 --- /dev/null +++ b/bundler/tests/.cache/deno/14d686bf665411aa7e9a837a8ac56363826d259c.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isFullWidth.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; + +export const isFullWidth = (str: string) => { + assertString(str); + return fullWidth.test(str); +}; diff --git a/bundler/tests/.cache/deno/14db2faaba580d87d8e87a2f10bf8c7883f41f34.ts b/bundler/tests/.cache/deno/14db2faaba580d87d8e87a2f10bf8c7883f41f34.ts new file mode 100644 index 00000000000..e9b8257afda --- /dev/null +++ b/bundler/tests/.cache/deno/14db2faaba580d87d8e87a2f10bf8c7883f41f34.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/binary.js + + +import _curry1 from './internal/_curry1.js'; +import nAry from './nAry.js'; + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 2 parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (a -> b -> c -> ... -> z) -> ((a, b) -> z) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 2. + * @see R.nAry, R.unary + * @example + * + * const takesThreeArgs = function(a, b, c) { + * return [a, b, c]; + * }; + * takesThreeArgs.length; //=> 3 + * takesThreeArgs(1, 2, 3); //=> [1, 2, 3] + * + * const takesTwoArgs = R.binary(takesThreeArgs); + * takesTwoArgs.length; //=> 2 + * // Only 2 arguments are passed to the wrapped function + * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] + * @symb R.binary(f)(a, b, c) = f(a, b) + */ +var binary = _curry1(function binary(fn) { + return nAry(2, fn); +}); +export default binary; diff --git a/bundler/tests/.cache/deno/1542c900f31b210398965de49f3748a3062fc398.ts b/bundler/tests/.cache/deno/1542c900f31b210398965de49f3748a3062fc398.ts new file mode 100644 index 00000000000..403bc0aa631 --- /dev/null +++ b/bundler/tests/.cache/deno/1542c900f31b210398965de49f3748a3062fc398.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pair.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category List + * @sig a -> b -> (a,b) + * @param {*} fst + * @param {*} snd + * @return {Array} + * @see R.objOf, R.of + * @example + * + * R.pair('foo', 'bar'); //=> ['foo', 'bar'] + */ +var pair = _curry2(function pair(fst, snd) { return [fst, snd]; }); +export default pair; diff --git a/bundler/tests/.cache/deno/154c6073e975b13f958f5ec193d87807d5ce9747.ts b/bundler/tests/.cache/deno/154c6073e975b13f958f5ec193d87807d5ce9747.ts new file mode 100644 index 00000000000..0210c7d1c3b --- /dev/null +++ b/bundler/tests/.cache/deno/154c6073e975b13f958f5ec193d87807d5ce9747.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isLocale.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const localeReg = /^[A-z]{2,4}([_-]([A-z]{4}|[\d]{3}))?([_-]([A-z]{2}|[\d]{3}))?$/; + +export const isLocale = (str: string) => { + assertString(str); + + if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') { + return true; + } + + return localeReg.test(str); +}; diff --git a/bundler/tests/.cache/deno/15650a0a33ba60fb495e9b783eff58745b9513b1.ts b/bundler/tests/.cache/deno/15650a0a33ba60fb495e9b783eff58745b9513b1.ts new file mode 100644 index 00000000000..e21b889303c --- /dev/null +++ b/bundler/tests/.cache/deno/15650a0a33ba60fb495e9b783eff58745b9513b1.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/bytes_formater@v1.4.0/mod.ts + + +export { format } from "./format.ts"; +export { setColorEnabled } from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/15ca3aadb89225d3e76fe28fdf4ca49c4f83e4f7.ts b/bundler/tests/.cache/deno/15ca3aadb89225d3e76fe28fdf4ca49c4f83e4f7.ts new file mode 100644 index 00000000000..8e113fac774 --- /dev/null +++ b/bundler/tests/.cache/deno/15ca3aadb89225d3e76fe28fdf4ca49c4f83e4f7.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/findDeprecatedUsages.js + + +import { GraphQLError } from '../error/GraphQLError.js'; +import { visit } from '../language/visitor.js'; +import { getNamedType } from '../type/definition.js'; +import { TypeInfo, visitWithTypeInfo } from './TypeInfo.js'; +/** + * A validation rule which reports deprecated usages. + * + * Returns a list of GraphQLError instances describing each deprecated use. + */ + +export function findDeprecatedUsages(schema, ast) { + const errors = []; + const typeInfo = new TypeInfo(schema); + visit(ast, visitWithTypeInfo(typeInfo, { + Field(node) { + const parentType = typeInfo.getParentType(); + const fieldDef = typeInfo.getFieldDef(); + + if (parentType && fieldDef?.deprecationReason != null) { + errors.push(new GraphQLError(`The field "${parentType.name}.${fieldDef.name}" is deprecated. ` + fieldDef.deprecationReason, node)); + } + }, + + EnumValue(node) { + const type = getNamedType(typeInfo.getInputType()); + const enumVal = typeInfo.getEnumValue(); + + if (type && enumVal?.deprecationReason != null) { + errors.push(new GraphQLError(`The enum value "${type.name}.${enumVal.name}" is deprecated. ` + enumVal.deprecationReason, node)); + } + } + + })); + return errors; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/15cac5f1f1891cdfa29e2c62647fad5a090482c5.ts b/bundler/tests/.cache/deno/15cac5f1f1891cdfa29e2c62647fad5a090482c5.ts new file mode 100644 index 00000000000..6646ff6d66d --- /dev/null +++ b/bundler/tests/.cache/deno/15cac5f1f1891cdfa29e2c62647fad5a090482c5.ts @@ -0,0 +1,187 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/utils/strings.js + + +// String encode/decode helpers +import * as utils from "./common.js"; + + +// Quick check if we can use fast array to bin string conversion +// +// - apply(Array) can fail on Android 2.2 +// - apply(Uint8Array) can fail on iOS 5.1 Safari +// +var STR_APPLY_OK = true; +var STR_APPLY_UIA_OK = true; + +try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; } +try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } + + +// Table with utf8 lengths (calculated by first byte of sequence) +// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, +// because max possible codepoint is 0x10ffff +var _utf8len = new utils.Buf8(256); +for (var q = 0; q < 256; q++) { + _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1); +} +_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start + + +// convert string to array (typed, when possible) +export function string2buf (str) { + var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; + + // count binary size + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; + } + + // allocate buffer + buf = new utils.Buf8(buf_len); + + // convert + for (i = 0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + if (c < 0x80) { + /* one byte */ + buf[i++] = c; + } else if (c < 0x800) { + /* two bytes */ + buf[i++] = 0xC0 | (c >>> 6); + buf[i++] = 0x80 | (c & 0x3f); + } else if (c < 0x10000) { + /* three bytes */ + buf[i++] = 0xE0 | (c >>> 12); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } else { + /* four bytes */ + buf[i++] = 0xf0 | (c >>> 18); + buf[i++] = 0x80 | (c >>> 12 & 0x3f); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } + } + + return buf; +}; + +// Helper (used in 2 places) +function _buf2binstring(buf, len) { + // On Chrome, the arguments in a function call that are allowed is `65534`. + // If the length of the buffer is smaller than that, we can use this optimization, + // otherwise we will take a slower path. + if (len < 65534) { + if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) { + return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len)); + } + } + + var result = ''; + for (var i = 0; i < len; i++) { + result += String.fromCharCode(buf[i]); + } + return result; +} + + +// Convert byte array to binary string +export function buf2binstring (buf) { + return _buf2binstring(buf, buf.length); +}; + + +// Convert binary string (typed, when possible) +export function binstring2buf (str) { + var buf = new utils.Buf8(str.length); + for (var i = 0, len = buf.length; i < len; i++) { + buf[i] = str.charCodeAt(i); + } + return buf; +}; + + +// convert array to string +export function buf2string (buf, max) { + var i, out, c, c_len; + var len = max || buf.length; + + // Reserve max possible length (2 words per char) + // NB: by unknown reasons, Array is significantly faster for + // String.fromCharCode.apply than Uint16Array. + var utf16buf = new Array(len * 2); + + for (out = 0, i = 0; i < len;) { + c = buf[i++]; + // quick process ascii + if (c < 0x80) { utf16buf[out++] = c; continue; } + + c_len = _utf8len[c]; + // skip 5 & 6 byte codes + if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; } + + // apply mask on first byte + c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; + // join the rest + while (c_len > 1 && i < len) { + c = (c << 6) | (buf[i++] & 0x3f); + c_len--; + } + + // terminated by end of string? + if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; } + + if (c < 0x10000) { + utf16buf[out++] = c; + } else { + c -= 0x10000; + utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff); + utf16buf[out++] = 0xdc00 | (c & 0x3ff); + } + } + + return _buf2binstring(utf16buf, out); +}; + + +// Calculate max possible position in utf8 buffer, +// that will not break sequence. If that's not possible +// - (very small limits) return max size as is. +// +// buf[] - utf8 bytes array +// max - length limit (mandatory); +export function utf8border (buf, max) { + var pos; + + max = max || buf.length; + if (max > buf.length) { max = buf.length; } + + // go back from last position, until start of sequence found + pos = max - 1; + while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; } + + // Very small and broken sequence, + // return max, because we should return something anyway. + if (pos < 0) { return max; } + + // If we came to start of buffer - that means buffer is too small, + // return max too. + if (pos === 0) { return max; } + + return (pos + _utf8len[buf[pos]] > max) ? pos : max; +}; diff --git a/bundler/tests/.cache/deno/15e012f58ce28a8f6da346ff8bfcd6e41d822f0e.ts b/bundler/tests/.cache/deno/15e012f58ce28a8f6da346ff8bfcd6e41d822f0e.ts new file mode 100644 index 00000000000..23c01b09f00 --- /dev/null +++ b/bundler/tests/.cache/deno/15e012f58ce28a8f6da346ff8bfcd6e41d822f0e.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dropRepeatsWith.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xdropRepeatsWith from './internal/_xdropRepeatsWith.js'; +import last from './last.js'; + + +/** + * Returns a new list without any consecutively repeating elements. Equality is + * determined by applying the supplied predicate to each pair of consecutive elements. The + * first element in a series of equal elements will be preserved. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig ((a, a) -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; + * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] + */ +var dropRepeatsWith = _curry2(_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) { + var result = []; + var idx = 1; + var len = list.length; + if (len !== 0) { + result[0] = list[0]; + while (idx < len) { + if (!pred(last(result), list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + } + return result; +})); +export default dropRepeatsWith; diff --git a/bundler/tests/.cache/deno/15ff69e5ba79d52cb453376285fe4fd42ba6f193.ts b/bundler/tests/.cache/deno/15ff69e5ba79d52cb453376285fe4fd42ba6f193.ts new file mode 100644 index 00000000000..76ce145fa0d --- /dev/null +++ b/bundler/tests/.cache/deno/15ff69e5ba79d52cb453376285fe4fd42ba6f193.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/SingleFieldSubscriptionsRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Subscriptions must only include one field. + * + * A GraphQL subscription is valid only if it contains a single root field. + */ +export function SingleFieldSubscriptionsRule(context) { + return { + OperationDefinition(node) { + if (node.operation === 'subscription') { + if (node.selectionSet.selections.length !== 1) { + context.reportError(new GraphQLError(node.name ? `Subscription "${node.name.value}" must select only one top level field.` : 'Anonymous Subscription must select only one top level field.', node.selectionSet.selections.slice(1))); + } + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/161cdbb1659c8dc2529af32f1c9b9343ad2917a6.ts b/bundler/tests/.cache/deno/161cdbb1659c8dc2529af32f1c9b9343ad2917a6.ts new file mode 100644 index 00000000000..49c98881149 --- /dev/null +++ b/bundler/tests/.cache/deno/161cdbb1659c8dc2529af32f1c9b9343ad2917a6.ts @@ -0,0 +1,136 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/basic_encoding_rule.ts + + +interface BasicEncodingRule { + type: number; + length: number; + totalLength: number; + value: BasicEncodingRuleValue; +} + +type BasicEncodingRuleValue = + | Uint8Array + | string + | number + | BasicEncodingRule[] + | null + | bigint; +type BasicEncodingSimpleValue = + | Uint8Array + | string + | number + | null + | bigint + | BasicEncodingSimpleValue[]; + +export function ber_decode( + bytes: Uint8Array, + from?: number, + to?: number, +): BasicEncodingRule { + return ber_next(bytes); +} + +function ber_sequence( + bytes: Uint8Array, + from: number, + length: number, +): BasicEncodingRule[] { + const end = from + length; + let res: BasicEncodingRule[] = []; + let ptr = from; + + while (ptr < end) { + const next = ber_next(bytes, ptr); + res.push(next); + ptr += next.totalLength; + } + + return res; +} + +function ber_integer(bytes: Uint8Array, from: number, length: number): bigint { + let n = 0n; + for (const b of bytes.slice(from, from + length)) { + n = (n << 8n) + BigInt(b); + } + return n; +} + +function ber_oid(bytes: Uint8Array, from: number, length: number): string { + const id = [ + (bytes[from] / 40) | 0, + (bytes[from] % 40), + ]; + let value = 0; + + for (const b of bytes.slice(from + 1, from + length)) { + if (b > 128) value += value * 127 + (b - 128); + else { + value = value * 128 + b; + id.push(value); + value = 0; + } + } + + return id.join("."); +} + +function ber_unknown( + bytes: Uint8Array, + from: number, + length: number, +): Uint8Array { + return bytes.slice(from, from + length); +} + +export function ber_simple(n: BasicEncodingRule): BasicEncodingSimpleValue { + if (Array.isArray(n.value)) return n.value.map((x) => ber_simple(x)); + return n.value as BasicEncodingSimpleValue; +} + +function ber_next( + bytes: Uint8Array, + from?: number, + to?: number, +): BasicEncodingRule { + if (!from) from = 0; + if (!to) to = bytes.length; + + let ptr = from; + + const type = bytes[ptr++]; + let size = bytes[ptr++]; + + if ((size & 0x80) > 0) { + let ext = size - 0x80; + size = 0; + + while (--ext >= 0) { + size = (size << 8) + bytes[ptr++]; + } + } + + // Sequence + let value = null; + if (type === 0x30) { + value = ber_sequence(bytes, ptr, size); + } else if (type === 0x2) { + value = ber_integer(bytes, ptr, size); + } else if (type === 0x3) { + value = ber_sequence(bytes, ptr + 1, size - 1); + } else if (type === 0x5) { + value = null; + } else if (type === 0x6) { + value = ber_oid(bytes, ptr, size); + } else { + value = ber_unknown(bytes, ptr, size); + } + + return { + totalLength: (ptr - from) + size, + type, + length: size, + value, + }; +} diff --git a/bundler/tests/.cache/deno/164b33e52b6c7ad35bd1f384d1a3ef8d13ff20d2.ts b/bundler/tests/.cache/deno/164b33e52b6c7ad35bd1f384d1a3ef8d13ff20d2.ts new file mode 100644 index 00000000000..190f556f2c6 --- /dev/null +++ b/bundler/tests/.cache/deno/164b33e52b6c7ad35bd1f384d1a3ef8d13ff20d2.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/resolver.ts + + +/* @generated from adl */ +import { declResolver, ScopedDecl } from "./runtime/adl.ts"; +import { _AST_MAP as dnit_manifest } from "./dnit/manifest.ts"; +import { _AST_MAP as sys_types } from "./sys/types.ts"; + +export const ADL: { [key: string]: ScopedDecl } = { + ...dnit_manifest, + ...sys_types, +}; + +export const RESOLVER = declResolver(ADL); diff --git a/bundler/tests/.cache/deno/165c97bcca11ffb39b2a4cb938e798e6f6d4b03a.ts b/bundler/tests/.cache/deno/165c97bcca11ffb39b2a4cb938e798e6f6d4b03a.ts new file mode 100644 index 00000000000..23aa01b6d65 --- /dev/null +++ b/bundler/tests/.cache/deno/165c97bcca11ffb39b2a4cb938e798e6f6d4b03a.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/liftN.js + + +import _curry2 from './internal/_curry2.js'; +import _reduce from './internal/_reduce.js'; +import ap from './ap.js'; +import curryN from './curryN.js'; +import map from './map.js'; + + +/** + * "lifts" a function to be the specified arity, so that it may "map over" that + * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig Number -> (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.lift, R.ap + * @example + * + * const madd3 = R.liftN(3, (...args) => R.sum(args)); + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + */ +var liftN = _curry2(function liftN(arity, fn) { + var lifted = curryN(arity, fn); + return curryN(arity, function() { + return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); + }); +}); +export default liftN; diff --git a/bundler/tests/.cache/deno/16636f1df996bc362111d560f402836346a3aff6.ts b/bundler/tests/.cache/deno/16636f1df996bc362111d560f402836346a3aff6.ts new file mode 100644 index 00000000000..6204ff6dfe1 --- /dev/null +++ b/bundler/tests/.cache/deno/16636f1df996bc362111d560f402836346a3aff6.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema/core.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { json } from "./json.ts"; + +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +export const core = new Schema({ + include: [json], +}); diff --git a/bundler/tests/.cache/deno/1672b7e2822cbaf4f5934b9c66f2047d44700339.ts b/bundler/tests/.cache/deno/1672b7e2822cbaf4f5934b9c66f2047d44700339.ts new file mode 100644 index 00000000000..3a25d9a2b69 --- /dev/null +++ b/bundler/tests/.cache/deno/1672b7e2822cbaf4f5934b9c66f2047d44700339.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/nthArg.js + + +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; +import nth from './nth.js'; + + +/** + * Returns a function which returns its nth argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig Number -> *... -> * + * @param {Number} n + * @return {Function} + * @example + * + * R.nthArg(1)('a', 'b', 'c'); //=> 'b' + * R.nthArg(-1)('a', 'b', 'c'); //=> 'c' + * @symb R.nthArg(-1)(a, b, c) = c + * @symb R.nthArg(0)(a, b, c) = a + * @symb R.nthArg(1)(a, b, c) = b + */ +var nthArg = _curry1(function nthArg(n) { + var arity = n < 0 ? 1 : n + 1; + return curryN(arity, function() { + return nth(n, arguments); + }); +}); +export default nthArg; diff --git a/bundler/tests/.cache/deno/16ac259d1b48b671c9d665f2209489e5dce17781.ts b/bundler/tests/.cache/deno/16ac259d1b48b671c9d665f2209489e5dce17781.ts new file mode 100644 index 00000000000..41cae488f8b --- /dev/null +++ b/bundler/tests/.cache/deno/16ac259d1b48b671c9d665f2209489e5dce17781.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/allPass.js + + +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; +import max from './max.js'; +import pluck from './pluck.js'; +import reduce from './reduce.js'; + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if every one of the provided predicates is satisfied + * by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.anyPass + * @example + * + * const isQueen = R.propEq('rank', 'Q'); + * const isSpade = R.propEq('suit', '♠︎'); + * const isQueenOfSpades = R.allPass([isQueen, isSpade]); + * + * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false + * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true + */ +var allPass = _curry1(function allPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function() { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (!preds[idx].apply(this, arguments)) { + return false; + } + idx += 1; + } + return true; + }); +}); +export default allPass; diff --git a/bundler/tests/.cache/deno/16c4065cd22a2681274a9b18d81f316f1f7fa9f5.ts b/bundler/tests/.cache/deno/16c4065cd22a2681274a9b18d81f316f1f7fa9f5.ts new file mode 100644 index 00000000000..a792ade89b7 --- /dev/null +++ b/bundler/tests/.cache/deno/16c4065cd22a2681274a9b18d81f316f1f7fa9f5.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBase32.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const base32 = /^[A-Z2-7]+=*$/; + +export const isBase32 = (str: string) => { + assertString(str); + + const len = str.length; + if (len > 0 && len % 8 === 0 && base32.test(str)) { + return true; + } + return false; +}; diff --git a/bundler/tests/.cache/deno/1702411109bea52e10527b6966cb752526c7d275.ts b/bundler/tests/.cache/deno/1702411109bea52e10527b6966cb752526c7d275.ts new file mode 100644 index 00000000000..2ef1821e425 --- /dev/null +++ b/bundler/tests/.cache/deno/1702411109bea52e10527b6966cb752526c7d275.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/mod.js + + +import _find from './find.js'; +import _insert from './insert.js'; +import _findOne from './findOne.js'; +import _update from './update.js'; +import _updateOne from './updateOne.js'; +import _remove from './remove.js'; +import _removeOne from './removeOne.js'; + +export { + _find, + _insert, + _findOne, + _update, + _updateOne, + _remove, + _removeOne +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/171424772f8b3d18b9b5e50b83712d4620f9079e.ts b/bundler/tests/.cache/deno/171424772f8b3d18b9b5e50b83712d4620f9079e.ts new file mode 100644 index 00000000000..27009ba0c84 --- /dev/null +++ b/bundler/tests/.cache/deno/171424772f8b3d18b9b5e50b83712d4620f9079e.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/omit.js + + +import _curry2 from './internal/_curry2.js'; + +/** + * Returns a partial copy of an object omitting the keys specified. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [String] -> {String: *} -> {String: *} + * @param {Array} names an array of String property names to omit from the new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with properties from `names` not on it. + * @see R.pick + * @example + * + * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} + */ +var omit = _curry2(function omit(names, obj) { + var result = {}; + var index = {}; + var idx = 0; + var len = names.length; + + while (idx < len) { + index[names[idx]] = 1; + idx += 1; + } + + for (var prop in obj) { + if (!index.hasOwnProperty(prop)) { + result[prop] = obj[prop]; + } + } + return result; +}); +export default omit; diff --git a/bundler/tests/.cache/deno/173dbbf770a1b85799ff97f4ffeed8e29422a496.ts b/bundler/tests/.cache/deno/173dbbf770a1b85799ff97f4ffeed8e29422a496.ts new file mode 100644 index 00000000000..ee7946630b8 --- /dev/null +++ b/bundler/tests/.cache/deno/173dbbf770a1b85799ff97f4ffeed8e29422a496.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.85.0/flags/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/1740f39d7a42300c56c23e098ead3427c76289f5.ts b/bundler/tests/.cache/deno/1740f39d7a42300c56c23e098ead3427c76289f5.ts new file mode 100644 index 00000000000..4ed574d9249 --- /dev/null +++ b/bundler/tests/.cache/deno/1740f39d7a42300c56c23e098ead3427c76289f5.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.84.0/async/delay.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/1775349c1d11b975768f47e60e70d21aad1b1006.ts b/bundler/tests/.cache/deno/1775349c1d11b975768f47e60e70d21aad1b1006.ts new file mode 100644 index 00000000000..8c4ae7603aa --- /dev/null +++ b/bundler/tests/.cache/deno/1775349c1d11b975768f47e60e70d21aad1b1006.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.77.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/178b1aa522fff69339fedb6b2e9ec497a42384c3.ts b/bundler/tests/.cache/deno/178b1aa522fff69339fedb6b2e9ec497a42384c3.ts new file mode 100644 index 00000000000..5691b7449b6 --- /dev/null +++ b/bundler/tests/.cache/deno/178b1aa522fff69339fedb6b2e9ec497a42384c3.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/fmt/colors.ts + + +export * from "https://deno.land/std@0.81.0/fmt/colors.ts"; diff --git a/bundler/tests/.cache/deno/17e969504f75c0a60cb0dbb8f915b07533dc4068.ts b/bundler/tests/.cache/deno/17e969504f75c0a60cb0dbb8f915b07533dc4068.ts new file mode 100644 index 00000000000..fad1576e1c5 --- /dev/null +++ b/bundler/tests/.cache/deno/17e969504f75c0a60cb0dbb8f915b07533dc4068.ts @@ -0,0 +1,166 @@ +// Loaded from https://deno.land/std@0.74.0/textproto/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/tree/master/src/net/textproto +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +import type { BufReader } from "../io/bufio.ts"; +import { concat } from "../bytes/mod.ts"; +import { decode } from "../encoding/utf8.ts"; + +// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9 +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g; + +function str(buf: Uint8Array | null | undefined): string { + if (buf == null) { + return ""; + } else { + return decode(buf); + } +} + +function charCode(s: string): number { + return s.charCodeAt(0); +} + +export class TextProtoReader { + constructor(readonly r: BufReader) {} + + /** readLine() reads a single line from the TextProtoReader, + * eliding the final \n or \r\n from the returned string. + */ + async readLine(): Promise { + const s = await this.readLineSlice(); + if (s === null) return null; + return str(s); + } + + /** ReadMIMEHeader reads a MIME-style header from r. + * The header is a sequence of possibly continued Key: Value lines + * ending in a blank line. + * The returned map m maps CanonicalMIMEHeaderKey(key) to a + * sequence of values in the same order encountered in the input. + * + * For example, consider this input: + * + * My-Key: Value 1 + * Long-Key: Even + * Longer Value + * My-Key: Value 2 + * + * Given that input, ReadMIMEHeader returns the map: + * + * map[string][]string{ + * "My-Key": {"Value 1", "Value 2"}, + * "Long-Key": {"Even Longer Value"}, + * } + */ + async readMIMEHeader(): Promise { + const m = new Headers(); + let line: Uint8Array | undefined; + + // The first line cannot start with a leading space. + let buf = await this.r.peek(1); + if (buf === null) { + return null; + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + line = (await this.readLineSlice()) as Uint8Array; + } + + buf = await this.r.peek(1); + if (buf === null) { + throw new Deno.errors.UnexpectedEof(); + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + throw new Deno.errors.InvalidData( + `malformed MIME header initial line: ${str(line)}`, + ); + } + + while (true) { + const kv = await this.readLineSlice(); // readContinuedLineSlice + if (kv === null) throw new Deno.errors.UnexpectedEof(); + if (kv.byteLength === 0) return m; + + // Key ends at first colon + let i = kv.indexOf(charCode(":")); + if (i < 0) { + throw new Deno.errors.InvalidData( + `malformed MIME header line: ${str(kv)}`, + ); + } + + //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey)); + const key = str(kv.subarray(0, i)); + + // As per RFC 7230 field-name is a token, + // tokens consist of one or more chars. + // We could throw `Deno.errors.InvalidData` here, + // but better to be liberal in what we + // accept, so if we get an empty key, skip it. + if (key == "") { + continue; + } + + // Skip initial spaces in value. + i++; // skip colon + while ( + i < kv.byteLength && + (kv[i] == charCode(" ") || kv[i] == charCode("\t")) + ) { + i++; + } + const value = str(kv.subarray(i)).replace( + invalidHeaderCharRegex, + encodeURI, + ); + + // In case of invalid header we swallow the error + // example: "Audio Mode" => invalid due to space in the key + try { + m.append(key, value); + } catch { + // Pass + } + } + } + + async readLineSlice(): Promise { + // this.closeDot(); + let line: Uint8Array | undefined; + while (true) { + const r = await this.r.readLine(); + if (r === null) return null; + const { line: l, more } = r; + + // Avoid the copy if the first call produced a full line. + if (!line && !more) { + // TODO(ry): + // This skipSpace() is definitely misplaced, but I don't know where it + // comes from nor how to fix it. + if (this.skipSpace(l) === 0) { + return new Uint8Array(0); + } + return l; + } + line = line ? concat(line, l) : l; + if (!more) { + break; + } + } + return line; + } + + skipSpace(l: Uint8Array): number { + let n = 0; + for (let i = 0; i < l.length; i++) { + if (l[i] === charCode(" ") || l[i] === charCode("\t")) { + continue; + } + n++; + } + return n; + } +} diff --git a/bundler/tests/.cache/deno/1830fc4231d7949065108ba406eea9cfe33d4ef0.ts b/bundler/tests/.cache/deno/1830fc4231d7949065108ba406eea9cfe33d4ef0.ts new file mode 100644 index 00000000000..56b1c16e899 --- /dev/null +++ b/bundler/tests/.cache/deno/1830fc4231d7949065108ba406eea9cfe33d4ef0.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.74.0/encoding/utf8.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/185373cd877407f0d49b9157e0ea4c689775dc60.ts b/bundler/tests/.cache/deno/185373cd877407f0d49b9157e0ea4c689775dc60.ts new file mode 100644 index 00000000000..d2358cca60c --- /dev/null +++ b/bundler/tests/.cache/deno/185373cd877407f0d49b9157e0ea4c689775dc60.ts @@ -0,0 +1,78 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/error.ts + + +import { Status } from "./constants.ts"; + +export default class SqliteError extends Error { + /** + * SqliteError + * + * Extension over the standard JS Error object + * to also contain class members for error code + * and error code name. + * + * This class is not exported by the module and + * should only be obtained from exceptions raised + * in this module. + */ + constructor(message: string, code?: number) { + super(message); + this.name = "SqliteError"; + this.code = typeof code === "number" ? code : Status.Unknown; + } + + /** + * SqliteError.code + * + * The SQLite result status code, + * see the SQLite docs for more + * information about each code. + * + * https://www.sqlite.org/rescode.html + * + * Beyond the SQLite status codes, this member + * can also contain custom status codes specific + * to this library (starting from 1000). + * + * Errors that originate in the JavaScript part of + * the library will not have an associated status + * code. For these errors, the code will be + * `Status.Unknown`. + * + * | JS name | code | JS name (cont.) | code | + * |------------------|------|------------------|------| + * | SqliteOk | 0 | SqliteEmpty | 16 | + * | SqliteError | 1 | SqliteSchema | 17 | + * | SqliteInternal | 2 | SqliteTooBig | 18 | + * | SqlitePerm | 3 | SqliteConstraint | 19 | + * | SqliteAbort | 4 | SqliteMismatch | 20 | + * | SqliteBusy | 5 | SqliteMisuse | 21 | + * | SqliteLocked | 6 | SqliteNoLFS | 22 | + * | SqliteNoMem | 7 | SqliteAuth | 23 | + * | SqliteReadOnly | 8 | SqliteFormat | 24 | + * | SqliteInterrupt | 9 | SqliteRange | 25 | + * | SqliteIOErr | 10 | SqliteNotADB | 26 | + * | SqliteCorrupt | 11 | SqliteNotice | 27 | + * | SqliteNotFound | 12 | SqliteWarning | 28 | + * | SqliteFull | 13 | SqliteRow | 100 | + * | SqliteCantOpen | 14 | SqliteDone | 101 | + * | SqliteProtocol | 15 | Unknown | -1 | + * + * These codes are accessible via + * the exported `Status` object. + */ + code: number; + + /** + * SqliteError.codeName + * + * Key of code in exported `status` + * object. + * + * E.g. if `code` is `19`, + * `codeName` would be `SqliteConstraint`. + */ + get codeName(): keyof typeof Status { + return Status[this.code] as keyof typeof Status; + } +} diff --git a/bundler/tests/.cache/deno/1883a3d58b753cc5f249c4a88aa65dfa9f311b68.ts b/bundler/tests/.cache/deno/1883a3d58b753cc5f249c4a88aa65dfa9f311b68.ts new file mode 100644 index 00000000000..d644a72bb04 --- /dev/null +++ b/bundler/tests/.cache/deno/1883a3d58b753cc5f249c4a88aa65dfa9f311b68.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/media_types@v2.5.1/deps.ts + + +// Copyright 2020 the oak authors. All rights reserved. MIT license. + +export { extname } from "https://deno.land/std@0.73.0/path/mod.ts"; diff --git a/bundler/tests/.cache/deno/188998fe8bd8ae01bbc6e2ec7935e16a377a2f42.ts b/bundler/tests/.cache/deno/188998fe8bd8ae01bbc6e2ec7935e16a377a2f42.ts new file mode 100644 index 00000000000..d7d426596c7 --- /dev/null +++ b/bundler/tests/.cache/deno/188998fe8bd8ae01bbc6e2ec7935e16a377a2f42.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/std/log/handlers.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, LevelName, LogLevels } from "./levels.ts"; +import type { LogRecord } from "./logger.ts"; +import { blue, bold, red, yellow } from "../fmt/colors.ts"; +import { exists, existsSync } from "../fs/exists.ts"; +import { BufWriterSync } from "../io/bufio.ts"; + +const DEFAULT_FORMATTER = "{levelName} {msg}"; +type FormatterFunction = (logRecord: LogRecord) => string; +type LogMode = "a" | "w" | "x"; + +interface HandlerOptions { + formatter?: string | FormatterFunction; +} + +export class BaseHandler { + level: number; + levelName: LevelName; + formatter: string | FormatterFunction; + + constructor(levelName: LevelName, options: HandlerOptions = {}) { + this.level = getLevelByName(levelName); + this.levelName = levelName; + + this.formatter = options.formatter || DEFAULT_FORMATTER; + } + + handle(logRecord: LogRecord): void { + if (this.level > logRecord.level) return; + + const msg = this.format(logRecord); + return this.log(msg); + } + + format(logRecord: LogRecord): string { + if (this.formatter instanceof Function) { + return this.formatter(logRecord); + } + + return this.formatter.replace(/{(\S+)}/g, (match, p1): string => { + const value = logRecord[p1 as keyof LogRecord]; + + // do not interpolate missing values + if (value == null) { + return match; + } + + return String(value); + }); + } + + log(_msg: string): void {} + async setup(): Promise {} + async destroy(): Promise {} +} + +export class ConsoleHandler extends BaseHandler { + format(logRecord: LogRecord): string { + let msg = super.format(logRecord); + + switch (logRecord.level) { + case LogLevels.INFO: + msg = blue(msg); + break; + case LogLevels.WARNING: + msg = yellow(msg); + break; + case LogLevels.ERROR: + msg = red(msg); + break; + case LogLevels.CRITICAL: + msg = bold(red(msg)); + break; + default: + break; + } + + return msg; + } + + log(msg: string): void { + console.log(msg); + } +} + +export abstract class WriterHandler extends BaseHandler { + protected _writer!: Deno.Writer; + #encoder = new TextEncoder(); + + abstract log(msg: string): void; +} + +interface FileHandlerOptions extends HandlerOptions { + filename: string; + mode?: LogMode; +} + +export class FileHandler extends WriterHandler { + protected _file: Deno.File | undefined; + protected _buf!: BufWriterSync; + protected _filename: string; + protected _mode: LogMode; + protected _openOptions: Deno.OpenOptions; + protected _encoder = new TextEncoder(); + #unloadCallback = (): Promise => this.destroy(); + + constructor(levelName: LevelName, options: FileHandlerOptions) { + super(levelName, options); + this._filename = options.filename; + // default to append mode, write only + this._mode = options.mode ? options.mode : "a"; + this._openOptions = { + createNew: this._mode === "x", + create: this._mode !== "x", + append: this._mode === "a", + truncate: this._mode !== "a", + write: true, + }; + } + + async setup(): Promise { + this._file = await Deno.open(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + + addEventListener("unload", this.#unloadCallback); + } + + handle(logRecord: LogRecord): void { + super.handle(logRecord); + + // Immediately flush if log level is higher than ERROR + if (logRecord.level > LogLevels.ERROR) { + this.flush(); + } + } + + log(msg: string): void { + this._buf.writeSync(this._encoder.encode(msg + "\n")); + } + + flush(): void { + if (this._buf?.buffered() > 0) { + this._buf.flush(); + } + } + + destroy(): Promise { + this.flush(); + this._file?.close(); + this._file = undefined; + removeEventListener("unload", this.#unloadCallback); + return Promise.resolve(); + } +} + +interface RotatingFileHandlerOptions extends FileHandlerOptions { + maxBytes: number; + maxBackupCount: number; +} + +export class RotatingFileHandler extends FileHandler { + #maxBytes: number; + #maxBackupCount: number; + #currentFileSize = 0; + + constructor(levelName: LevelName, options: RotatingFileHandlerOptions) { + super(levelName, options); + this.#maxBytes = options.maxBytes; + this.#maxBackupCount = options.maxBackupCount; + } + + async setup(): Promise { + if (this.#maxBytes < 1) { + this.destroy(); + throw new Error("maxBytes cannot be less than 1"); + } + if (this.#maxBackupCount < 1) { + this.destroy(); + throw new Error("maxBackupCount cannot be less than 1"); + } + await super.setup(); + + if (this._mode === "w") { + // Remove old backups too as it doesn't make sense to start with a clean + // log file, but old backups + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + await Deno.remove(this._filename + "." + i); + } + } + } else if (this._mode === "x") { + // Throw if any backups also exist + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + this.destroy(); + throw new Deno.errors.AlreadyExists( + "Backup log file " + this._filename + "." + i + " already exists", + ); + } + } + } else { + this.#currentFileSize = (await Deno.stat(this._filename)).size; + } + } + + log(msg: string): void { + const msgByteLength = this._encoder.encode(msg).byteLength + 1; + + if (this.#currentFileSize + msgByteLength > this.#maxBytes) { + this.rotateLogFiles(); + this.#currentFileSize = 0; + } + + this._buf.writeSync(this._encoder.encode(msg + "\n")); + this.#currentFileSize += msgByteLength; + } + + rotateLogFiles(): void { + this._buf.flush(); + Deno.close(this._file!.rid); + + for (let i = this.#maxBackupCount - 1; i >= 0; i--) { + const source = this._filename + (i === 0 ? "" : "." + i); + const dest = this._filename + "." + (i + 1); + + if (existsSync(source)) { + Deno.renameSync(source, dest); + } + } + + this._file = Deno.openSync(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + } +} diff --git a/bundler/tests/.cache/deno/188a854bf2fcf891f3add27ab83bb40a0153d5ae.ts b/bundler/tests/.cache/deno/188a854bf2fcf891f3add27ab83bb40a0153d5ae.ts new file mode 100644 index 00000000000..821cd1087f7 --- /dev/null +++ b/bundler/tests/.cache/deno/188a854bf2fcf891f3add27ab83bb40a0153d5ae.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/trim.js + + +import _curry1 from './internal/_curry1.js'; + + +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + + '\u2029\uFEFF'; +var zeroWidth = '\u200b'; +var hasProtoTrim = (typeof String.prototype.trim === 'function'); +/** + * Removes (strips) whitespace from both ends of the string. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category String + * @sig String -> String + * @param {String} str The string to trim. + * @return {String} Trimmed version of `str`. + * @example + * + * R.trim(' xyz '); //=> 'xyz' + * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] + */ +var trim = !hasProtoTrim || (ws.trim() || !zeroWidth.trim()) ? + _curry1(function trim(str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); + }) : + _curry1(function trim(str) { + return str.trim(); + }); +export default trim; diff --git a/bundler/tests/.cache/deno/18c31ad6227f598945da9d3bae0cf9301715c209.ts b/bundler/tests/.cache/deno/18c31ad6227f598945da9d3bae0cf9301715c209.ts new file mode 100644 index 00000000000..a0ae1827c78 --- /dev/null +++ b/bundler/tests/.cache/deno/18c31ad6227f598945da9d3bae0cf9301715c209.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.77.0/async/deferred.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/18c64b58700d8fb706632e781cb0ed077aa00a64.ts b/bundler/tests/.cache/deno/18c64b58700d8fb706632e781cb0ed077aa00a64.ts new file mode 100644 index 00000000000..07428c44061 --- /dev/null +++ b/bundler/tests/.cache/deno/18c64b58700d8fb706632e781cb0ed077aa00a64.ts @@ -0,0 +1,177 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/send.ts + + +/*! + * Adapted from koa-send at https://github.com/koajs/send and which is licensed + * with the MIT license. + */ + +import type { Context } from "./context.ts"; +import { createHttpError } from "./httpError.ts"; +import { basename, extname, parse, sep } from "./deps.ts"; +import { decodeComponent, resolvePath } from "./util.ts"; + +export interface SendOptions { + /** Try to serve the brotli version of a file automatically when brotli is + * supported by a client and if the requested file with `.br` extension + * exists. (defaults to `true`) */ + brotli?: boolean; + + /** Try to match extensions from passed array to search for file when no + * extension is sufficed in URL. First found is served. (defaults to + * `undefined`) */ + extensions?: string[]; + + /** If `true`, format the path to serve static file servers and not require a + * trailing slash for directories, so that you can do both `/directory` and + * `/directory/`. (defaults to `true`) */ + format?: boolean; + + /** Try to serve the gzipped version of a file automatically when gzip is + * supported by a client and if the requested file with `.gz` extension + * exists. (defaults to `true`). */ + gzip?: boolean; + + /** Allow transfer of hidden files. (defaults to `false`) */ + hidden?: boolean; + + /** Tell the browser the resource is immutable and can be cached + * indefinitely. (defaults to `false`) */ + immutable?: boolean; + + /** Name of the index file to serve automatically when visiting the root + * location. (defaults to none) */ + index?: string; + + /** Browser cache max-age in milliseconds. (defaults to `0`) */ + maxage?: number; + + /** Root directory to restrict file access. */ + root: string; +} + +function isHidden(path: string) { + const pathArr = path.split("/"); + for (const segment of pathArr) { + if (segment[0] === "." && segment !== "." && segment !== "..") { + return true; + } + return false; + } +} + +async function exists(path: string): Promise { + try { + return (await Deno.stat(path)).isFile; + } catch { + return false; + } +} + +/** Asynchronously fulfill a response with a file from the local file + * system. + * + * Requires Deno read permission for the `root` directory. */ +export async function send( + // deno-lint-ignore no-explicit-any + { request, response }: Context, + path: string, + options: SendOptions = { root: "" }, +): Promise { + const { + brotli = true, + extensions, + format = true, + gzip = true, + hidden = false, + immutable = false, + index, + maxage = 0, + root, + } = options; + const trailingSlash = path[path.length - 1] === "/"; + path = decodeComponent(path.substr(parse(path).root.length)); + if (index && trailingSlash) { + path += index; + } + + if (!hidden && isHidden(path)) { + throw createHttpError(403); + } + + path = resolvePath(root, path); + + let encodingExt = ""; + if ( + brotli && + request.acceptsEncodings("br", "identity") === "br" && + (await exists(`${path}.br`)) + ) { + path = `${path}.br`; + response.headers.set("Content-Encoding", "br"); + response.headers.delete("Content-Length"); + encodingExt = ".br"; + } else if ( + gzip && + request.acceptsEncodings("gzip", "identity") === "gzip" && + (await exists(`${path}.gz`)) + ) { + path = `${path}.gz`; + response.headers.set("Content-Encoding", "gzip"); + response.headers.delete("Content-Length"); + encodingExt = ".gz"; + } + + if (extensions && !/\.[^/]*$/.exec(path)) { + for (let ext of extensions) { + if (!/^\./.exec(ext)) { + ext = `.${ext}`; + } + if (await exists(`${path}${ext}`)) { + path += ext; + break; + } + } + } + + let stats: Deno.FileInfo; + try { + stats = await Deno.stat(path); + + if (stats.isDirectory) { + if (format && index) { + path += `/${index}`; + stats = await Deno.stat(path); + } else { + return; + } + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + throw createHttpError(404, err.message); + } + throw createHttpError(500, err.message); + } + + response.headers.set("Content-Length", String(stats.size)); + if (!response.headers.has("Last-Modified") && stats.mtime) { + response.headers.set("Last-Modified", stats.mtime.toUTCString()); + } + if (!response.headers.has("Cache-Control")) { + const directives = [`max-age=${(maxage / 1000) | 0}`]; + if (immutable) { + directives.push("immutable"); + } + response.headers.set("Cache-Control", directives.join(",")); + } + if (!response.type) { + response.type = encodingExt !== "" + ? extname(basename(path, encodingExt)) + : extname(path); + } + const file = await Deno.open(path, { read: true }); + response.addResource(file.rid); + response.body = file; + + return path; +} diff --git a/bundler/tests/.cache/deno/18f9b2005cbb455af48eb310c3ea2f787cfd071c.ts b/bundler/tests/.cache/deno/18f9b2005cbb455af48eb310c3ea2f787cfd071c.ts new file mode 100644 index 00000000000..465821e2391 --- /dev/null +++ b/bundler/tests/.cache/deno/18f9b2005cbb455af48eb310c3ea2f787cfd071c.ts @@ -0,0 +1,2167 @@ +// Loaded from https://deno.land/x/dso@v1.0.0/src/Reflect.ts + + +// @ts-nocheck +/*! ***************************************************************************** +Copyright (C) Microsoft. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +namespace Reflect { + // Metadata Proposal + // https://rbuckton.github.io/reflect-metadata/ + + type HashMap = Record; + + interface BufferLike { + [offset: number]: number; + length: number; + } + + type IteratorResult = + | { value: T; done: false } + | { value: never; done: true }; + + interface Iterator { + next(value?: any): IteratorResult; + throw?(value: any): IteratorResult; + return?(value?: T): IteratorResult; + } + + interface Iterable { + "@@iterator"(): Iterator; + } + + interface IterableIterator extends Iterator { + "@@iterator"(): IterableIterator; + } + + interface Map extends Iterable<[K, V]> { + size: number; + has(key: K): boolean; + get(key: K): V; + set(key: K, value?: V): this; + delete(key: K): boolean; + clear(): void; + keys(): IterableIterator; + values(): IterableIterator; + entries(): IterableIterator<[K, V]>; + } + + interface MapConstructor { + new (): Map; + new (): Map; + prototype: Map; + } + + interface Set extends Iterable { + size: number; + has(value: T): boolean; + add(value: T): this; + delete(value: T): boolean; + clear(): void; + keys(): IterableIterator; + values(): IterableIterator; + entries(): IterableIterator<[T, T]>; + } + + interface SetConstructor { + new (): Set; + new (): Set; + prototype: Set; + } + + interface WeakMap { + clear(): void; + delete(key: K): boolean; + get(key: K): V; + has(key: K): boolean; + set(key: K, value?: V): WeakMap; + } + + interface WeakMapConstructor { + new (): WeakMap; + new (): WeakMap; + prototype: WeakMap; + } + + type MemberDecorator = ( + target: Object, + propertyKey: string | symbol, + descriptor?: TypedPropertyDescriptor, + ) => TypedPropertyDescriptor | void; + declare const Symbol: { iterator: symbol; toPrimitive: symbol }; + declare const Set: SetConstructor; + declare const WeakMap: WeakMapConstructor; + declare const Map: MapConstructor; + declare const global: any; + + // @ts-ignore + declare const crypto: Crypto; + + // @ts-ignore + declare const msCrypto: Crypto; + declare const process: any; + + /** + * Applies a set of decorators to a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @returns The result of applying the provided decorators. + * @remarks Decorators are applied in reverse order of their positions in the array. + * @example + * + * class Example { } + * + * // constructor + * Example = Reflect.decorate(decoratorsArray, Example); + * + */ + export declare function decorate( + decorators: ClassDecorator[], + target: Function, + ): Function; + + /** + * Applies a set of decorators to a property of a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @param propertyKey The property key to decorate. + * @param attributes A property descriptor. + * @remarks Decorators are applied in reverse order. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod() { } + * method() { } + * } + * + * // property (on constructor) + * Reflect.decorate(decoratorsArray, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.decorate(decoratorsArray, Example.prototype, "property"); + * + * // method (on constructor) + * Object.defineProperty(Example, "staticMethod", + * Reflect.decorate(decoratorsArray, Example, "staticMethod", + * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); + * + * // method (on prototype) + * Object.defineProperty(Example.prototype, "method", + * Reflect.decorate(decoratorsArray, Example.prototype, "method", + * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); + * + */ + export declare function decorate( + decorators: (PropertyDecorator | MethodDecorator)[], + target: any, + propertyKey: string | symbol, + attributes?: PropertyDescriptor | null, + ): PropertyDescriptor | undefined; + + /** + * Applies a set of decorators to a property of a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @param propertyKey The property key to decorate. + * @param attributes A property descriptor. + * @remarks Decorators are applied in reverse order. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod() { } + * method() { } + * } + * + * // property (on constructor) + * Reflect.decorate(decoratorsArray, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.decorate(decoratorsArray, Example.prototype, "property"); + * + * // method (on constructor) + * Object.defineProperty(Example, "staticMethod", + * Reflect.decorate(decoratorsArray, Example, "staticMethod", + * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); + * + * // method (on prototype) + * Object.defineProperty(Example.prototype, "method", + * Reflect.decorate(decoratorsArray, Example.prototype, "method", + * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); + * + */ + export declare function decorate( + decorators: (PropertyDecorator | MethodDecorator)[], + target: any, + propertyKey: string | symbol, + attributes: PropertyDescriptor, + ): PropertyDescriptor; + + /** + * A default metadata decorator factory that can be used on a class, class member, or parameter. + * @param metadataKey The key for the metadata entry. + * @param metadataValue The value for the metadata entry. + * @returns A decorator function. + * @remarks + * If `metadataKey` is already defined for the target and target key, the + * metadataValue for that key will be overwritten. + * @example + * + * // constructor + * @Reflect.metadata(key, value) + * class Example { + * } + * + * // property (on constructor, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * static staticProperty; + * } + * + * // property (on prototype, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * property; + * } + * + * // method (on constructor) + * class Example { + * @Reflect.metadata(key, value) + * static staticMethod() { } + * } + * + * // method (on prototype) + * class Example { + * @Reflect.metadata(key, value) + * method() { } + * } + * + */ + export declare function metadata( + metadataKey: any, + metadataValue: any, + ): { + (target: Function): void; + (target: any, propertyKey: string | symbol): void; + }; + + /** + * Define a unique metadata entry on the target. + * @param metadataKey A key used to store and retrieve metadata. + * @param metadataValue A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @example + * + * class Example { + * } + * + * // constructor + * Reflect.defineMetadata("custom:annotation", options, Example); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): ClassDecorator { + * return target => Reflect.defineMetadata("custom:annotation", options, target); + * } + * + */ + export declare function defineMetadata( + metadataKey: any, + metadataValue: any, + target: any, + ): void; + + /** + * Define a unique metadata entry on the target. + * @param metadataKey A key used to store and retrieve metadata. + * @param metadataValue A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @param propertyKey The property key for the target. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * Reflect.defineMetadata("custom:annotation", Number, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.defineMetadata("custom:annotation", Number, Example.prototype, "property"); + * + * // method (on constructor) + * Reflect.defineMetadata("custom:annotation", Number, Example, "staticMethod"); + * + * // method (on prototype) + * Reflect.defineMetadata("custom:annotation", Number, Example.prototype, "method"); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): PropertyDecorator { + * return (target, key) => Reflect.defineMetadata("custom:annotation", options, target, key); + * } + * + */ + export declare function defineMetadata( + metadataKey: any, + metadataValue: any, + target: any, + propertyKey: string | symbol, + ): void; + + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.hasMetadata("custom:annotation", Example); + * + */ + export declare function hasMetadata(metadataKey: any, target: any): boolean; + + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "method"); + * + */ + export declare function hasMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + /** + * Gets a value indicating whether the target object has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.hasOwnMetadata("custom:annotation", Example); + * + */ + export declare function hasOwnMetadata( + metadataKey: any, + target: any, + ): boolean; + + /** + * Gets a value indicating whether the target object has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + export declare function hasOwnMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.getMetadata("custom:annotation", Example); + * + */ + export declare function getMetadata(metadataKey: any, target: any): any; + + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "method"); + * + */ + export declare function getMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): any; + + /** + * Gets the metadata value for the provided metadata key on the target object. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.getOwnMetadata("custom:annotation", Example); + * + */ + export declare function getOwnMetadata(metadataKey: any, target: any): any; + + /** + * Gets the metadata value for the provided metadata key on the target object. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + export declare function getOwnMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): any; + + /** + * Gets the metadata keys defined on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.getMetadataKeys(Example); + * + */ + export declare function getMetadataKeys(target: any): any[]; + + /** + * Gets the metadata keys defined on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "method"); + * + */ + export declare function getMetadataKeys( + target: any, + propertyKey: string | symbol, + ): any[]; + + /** + * Gets the unique metadata keys defined on the target object. + * @param target The target object on which the metadata is defined. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.getOwnMetadataKeys(Example); + * + */ + export declare function getOwnMetadataKeys(target: any): any[]; + + /** + * Gets the unique metadata keys defined on the target object. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "method"); + * + */ + export declare function getOwnMetadataKeys( + target: any, + propertyKey: string | symbol, + ): any[]; + + /** + * Deletes the metadata entry from the target object with the provided key. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * class Example { + * } + * + * // constructor + * result = Reflect.deleteMetadata("custom:annotation", Example); + * + */ + export declare function deleteMetadata( + metadataKey: any, + target: any, + ): boolean; + + /** + * Deletes the metadata entry from the target object with the provided key. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey The property key for the target. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * static staticMethod(p) { } + * method(p) { } + * } + * + * // property (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method"); + * + */ + export declare function deleteMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + (function ( + this: any, + factory: ( + exporter: ( + key: K, + value: typeof Reflect[K], + ) => void, + ) => void, + ) { + var self; + const root = typeof global === "object" + ? global + : typeof self === "object" + ? self + : typeof this === "object" + ? this + : Function("return this;")(); + + let exporter = makeExporter(Reflect); + if (typeof root.Reflect === "undefined") { + root.Reflect = Reflect; + } else { + exporter = makeExporter(root.Reflect, exporter); + } + + factory(exporter); + + function makeExporter( + target: typeof Reflect, + previous?: ( + key: K, + value: typeof Reflect[K], + ) => void, + ) { + return ( + key: K, + value: typeof Reflect[K], + ) => { + if (typeof target[key] !== "function") { + Object.defineProperty(target, key, { + configurable: true, + writable: true, + value, + }); + } + if (previous) previous(key, value); + }; + } + })(function (exporter) { + const hasOwn = Object.prototype.hasOwnProperty; + + // feature test for Symbol support + const supportsSymbol = typeof Symbol === "function"; + const toPrimitiveSymbol = + supportsSymbol && typeof Symbol.toPrimitive !== "undefined" + ? Symbol.toPrimitive + : "@@toPrimitive"; + const iteratorSymbol = + supportsSymbol && typeof Symbol.iterator !== "undefined" + ? Symbol.iterator + : "@@iterator"; + const supportsCreate = typeof Object.create === "function"; // feature test for Object.create support + const supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support + const downLevel = !supportsCreate && !supportsProto; + + const HashMap = { + // create an object in dictionary mode (a.k.a. "slow" mode in v8) + create: supportsCreate + ? () => MakeDictionary(Object.create(null) as HashMap) + : supportsProto + ? () => MakeDictionary({ __proto__: null as any } as HashMap) + : () => MakeDictionary({} as HashMap), + + has: downLevel + ? (map: HashMap, key: string | number | symbol) => + hasOwn.call(map, key) + : (map: HashMap, key: string | number | symbol) => key in map, + + get: downLevel + ? (map: HashMap, key: string | number | symbol): V | undefined => + hasOwn.call(map, key) ? map[key as string | number] : undefined + : (map: HashMap, key: string | number | symbol): V | undefined => + map[key as string | number], + }; + + // Load global or shim versions of Map, Set, and WeakMap + const functionPrototype = Object.getPrototypeOf(Function); + const usePolyfill = typeof process === "object" && + process.env && + process.env["REFLECT_METADATA_USE_MAP_POLYFILL"] === "true"; + const _Map: typeof Map = !usePolyfill && + typeof Map === "function" && + typeof Map.prototype.entries === "function" + ? Map + : CreateMapPolyfill(); + const _Set: typeof Set = !usePolyfill && + typeof Set === "function" && + typeof Set.prototype.entries === "function" + ? Set + : CreateSetPolyfill(); + const _WeakMap: typeof WeakMap = + !usePolyfill && typeof WeakMap === "function" + ? WeakMap + : CreateWeakMapPolyfill(); + + // [[Metadata]] internal slot + // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots + const Metadata = new _WeakMap< + any, + Map> + >(); + + function decorate(decorators: ClassDecorator[], target: Function): Function; + function decorate( + decorators: (PropertyDecorator | MethodDecorator)[], + target: any, + propertyKey: string | symbol, + attributes?: PropertyDescriptor | null, + ): PropertyDescriptor | undefined; + function decorate( + decorators: (PropertyDecorator | MethodDecorator)[], + target: any, + propertyKey: string | symbol, + attributes: PropertyDescriptor, + ): PropertyDescriptor; + + /** + * Applies a set of decorators to a property of a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @param propertyKey (Optional) The property key to decorate. + * @param attributes (Optional) The property descriptor for the target key. + * @remarks Decorators are applied in reverse order. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Example = Reflect.decorate(decoratorsArray, Example); + * + * // property (on constructor) + * Reflect.decorate(decoratorsArray, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.decorate(decoratorsArray, Example.prototype, "property"); + * + * // method (on constructor) + * Object.defineProperty(Example, "staticMethod", + * Reflect.decorate(decoratorsArray, Example, "staticMethod", + * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); + * + * // method (on prototype) + * Object.defineProperty(Example.prototype, "method", + * Reflect.decorate(decoratorsArray, Example.prototype, "method", + * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); + * + */ + function decorate( + decorators: (ClassDecorator | MemberDecorator)[], + target: any, + propertyKey?: string | symbol, + attributes?: PropertyDescriptor | null, + ): PropertyDescriptor | Function | undefined { + if (!IsUndefined(propertyKey)) { + if (!IsArray(decorators)) throw new TypeError(); + if (!IsObject(target)) throw new TypeError(); + if ( + !IsObject(attributes) && + !IsUndefined(attributes) && + !IsNull(attributes) + ) { + throw new TypeError(); + } + if (IsNull(attributes)) attributes = undefined; + propertyKey = ToPropertyKey(propertyKey); + return DecorateProperty( + decorators, + target, + propertyKey, + attributes, + ); + } else { + if (!IsArray(decorators)) throw new TypeError(); + if (!IsConstructor(target)) throw new TypeError(); + return DecorateConstructor( + decorators, + target, + ); + } + } + + exporter("decorate", decorate); + + // 4.1.2 Reflect.metadata(metadataKey, metadataValue) + // https://rbuckton.github.io/reflect-metadata/#reflect.metadata + + /** + * A default metadata decorator factory that can be used on a class, class member, or parameter. + * @param metadataKey The key for the metadata entry. + * @param metadataValue The value for the metadata entry. + * @returns A decorator function. + * @remarks + * If `metadataKey` is already defined for the target and target key, the + * metadataValue for that key will be overwritten. + * @example + * + * // constructor + * @Reflect.metadata(key, value) + * class Example { + * } + * + * // property (on constructor, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * static staticProperty; + * } + * + * // property (on prototype, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * property; + * } + * + * // method (on constructor) + * class Example { + * @Reflect.metadata(key, value) + * static staticMethod() { } + * } + * + * // method (on prototype) + * class Example { + * @Reflect.metadata(key, value) + * method() { } + * } + * + */ + function metadata(metadataKey: any, metadataValue: any) { + function decorator(target: Function): void; + function decorator(target: any, propertyKey: string | symbol): void; + function decorator(target: any, propertyKey?: string | symbol): void { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey)) { + throw new TypeError(); + } + OrdinaryDefineOwnMetadata( + metadataKey, + metadataValue, + target, + propertyKey, + ); + } + return decorator; + } + + exporter("metadata", metadata); + + // 4.1.3 Reflect.defineMetadata(metadataKey, metadataValue, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect.definemetadata + + function defineMetadata( + metadataKey: any, + metadataValue: any, + target: any, + ): void; + function defineMetadata( + metadataKey: any, + metadataValue: any, + target: any, + propertyKey: string | symbol, + ): void; + + /** + * Define a unique metadata entry on the target. + * @param metadataKey A key used to store and retrieve metadata. + * @param metadataValue A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @param propertyKey (Optional) The property key for the target. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Reflect.defineMetadata("custom:annotation", options, Example); + * + * // property (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "property"); + * + * // method (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticMethod"); + * + * // method (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "method"); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): Decorator { + * return (target, key?) => Reflect.defineMetadata("custom:annotation", options, target, key); + * } + * + */ + function defineMetadata( + metadataKey: any, + metadataValue: any, + target: any, + propertyKey?: string | symbol, + ): void { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryDefineOwnMetadata( + metadataKey, + metadataValue, + target, + propertyKey, + ); + } + + exporter("defineMetadata", defineMetadata); + + // 4.1.4 Reflect.hasMetadata(metadataKey, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect.hasmetadata + + function hasMetadata(metadataKey: any, target: any): boolean; + function hasMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasMetadata( + metadataKey: any, + target: any, + propertyKey?: string | symbol, + ): boolean { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasMetadata(metadataKey, target, propertyKey); + } + + exporter("hasMetadata", hasMetadata); + + // 4.1.5 Reflect.hasOwnMetadata(metadataKey, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-hasownmetadata + + function hasOwnMetadata(metadataKey: any, target: any): boolean; + function hasOwnMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + /** + * Gets a value indicating whether the target object has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasOwnMetadata( + metadataKey: any, + target: any, + propertyKey?: string | symbol, + ): boolean { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey); + } + + exporter("hasOwnMetadata", hasOwnMetadata); + + // 4.1.6 Reflect.getMetadata(metadataKey, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-getmetadata + + function getMetadata(metadataKey: any, target: any): any; + function getMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): any; + + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getMetadata( + metadataKey: any, + target: any, + propertyKey?: string | symbol, + ): any { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetMetadata(metadataKey, target, propertyKey); + } + + exporter("getMetadata", getMetadata); + + // 4.1.7 Reflect.getOwnMetadata(metadataKey, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-getownmetadata + + function getOwnMetadata(metadataKey: any, target: any): any; + function getOwnMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): any; + + /** + * Gets the metadata value for the provided metadata key on the target object. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getOwnMetadata( + metadataKey: any, + target: any, + propertyKey?: string | symbol, + ): any { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey); + } + + exporter("getOwnMetadata", getOwnMetadata); + + // 4.1.8 Reflect.getMetadataKeys(target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-getmetadatakeys + + function getMetadataKeys(target: any): any[]; + function getMetadataKeys(target: any, propertyKey: string | symbol): any[]; + + /** + * Gets the metadata keys defined on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "method"); + * + */ + function getMetadataKeys( + target: any, + propertyKey?: string | symbol, + ): any[] { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryMetadataKeys(target, propertyKey); + } + + exporter("getMetadataKeys", getMetadataKeys); + + // 4.1.9 Reflect.getOwnMetadataKeys(target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-getownmetadata + + function getOwnMetadataKeys(target: any): any[]; + function getOwnMetadataKeys( + target: any, + propertyKey: string | symbol, + ): any[]; + + /** + * Gets the unique metadata keys defined on the target object. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "method"); + * + */ + function getOwnMetadataKeys( + target: any, + propertyKey?: string | symbol, + ): any[] { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + return OrdinaryOwnMetadataKeys(target, propertyKey); + } + + exporter("getOwnMetadataKeys", getOwnMetadataKeys); + + // 4.1.10 Reflect.deleteMetadata(metadataKey, target [, propertyKey]) + // https://rbuckton.github.io/reflect-metadata/#reflect-deletemetadata + + function deleteMetadata(metadataKey: any, target: any): boolean; + function deleteMetadata( + metadataKey: any, + target: any, + propertyKey: string | symbol, + ): boolean; + + /** + * Deletes the metadata entry from the target object with the provided key. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.deleteMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function deleteMetadata( + metadataKey: any, + target: any, + propertyKey?: string | symbol, + ): boolean { + if (!IsObject(target)) throw new TypeError(); + if (!IsUndefined(propertyKey)) propertyKey = ToPropertyKey(propertyKey); + const metadataMap = GetOrCreateMetadataMap( + target, + propertyKey, + /*Create*/ false, + ); + if (IsUndefined(metadataMap)) return false; + if (!metadataMap.delete(metadataKey)) return false; + if (metadataMap.size > 0) return true; + const targetMetadata = Metadata.get(target); + targetMetadata.delete(propertyKey); + if (targetMetadata.size > 0) return true; + Metadata.delete(target); + return true; + } + + exporter("deleteMetadata", deleteMetadata); + + function DecorateConstructor( + decorators: ClassDecorator[], + target: Function, + ): Function { + for (let i = decorators.length - 1; i >= 0; --i) { + const decorator = decorators[i]; + const decorated = decorator(target); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsConstructor(decorated)) throw new TypeError(); + target = decorated; + } + } + return target; + } + + function DecorateProperty( + decorators: MemberDecorator[], + target: any, + propertyKey: string | symbol, + descriptor: PropertyDescriptor | undefined, + ): PropertyDescriptor | undefined { + for (let i = decorators.length - 1; i >= 0; --i) { + const decorator = decorators[i]; + const decorated = decorator(target, propertyKey, descriptor); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsObject(decorated)) throw new TypeError(); + descriptor = decorated; + } + } + return descriptor; + } + + // 2.1.1 GetOrCreateMetadataMap(O, P, Create) + // https://rbuckton.github.io/reflect-metadata/#getorcreatemetadatamap + function GetOrCreateMetadataMap( + O: any, + P: string | symbol | undefined, + Create: true, + ): Map; + function GetOrCreateMetadataMap( + O: any, + P: string | symbol | undefined, + Create: false, + ): Map | undefined; + function GetOrCreateMetadataMap( + O: any, + P: string | symbol | undefined, + Create: boolean, + ): Map | undefined { + let targetMetadata = Metadata.get(O); + if (IsUndefined(targetMetadata)) { + if (!Create) return undefined; + targetMetadata = new _Map>(); + Metadata.set(O, targetMetadata); + } + let metadataMap = targetMetadata.get(P); + if (IsUndefined(metadataMap)) { + if (!Create) return undefined; + metadataMap = new _Map(); + targetMetadata.set(P, metadataMap); + } + return metadataMap; + } + + // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata + function OrdinaryHasMetadata( + MetadataKey: any, + O: any, + P: string | symbol | undefined, + ): boolean { + const hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return true; + const parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) return OrdinaryHasMetadata(MetadataKey, parent, P); + return false; + } + + // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata + function OrdinaryHasOwnMetadata( + MetadataKey: any, + O: any, + P: string | symbol | undefined, + ): boolean { + const metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) return false; + return ToBoolean(metadataMap.has(MetadataKey)); + } + + // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata + function OrdinaryGetMetadata( + MetadataKey: any, + O: any, + P: string | symbol | undefined, + ): any { + const hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return OrdinaryGetOwnMetadata(MetadataKey, O, P); + const parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) return OrdinaryGetMetadata(MetadataKey, parent, P); + return undefined; + } + + // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata + function OrdinaryGetOwnMetadata( + MetadataKey: any, + O: any, + P: string | symbol | undefined, + ): any { + const metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) return undefined; + return metadataMap.get(MetadataKey); + } + + // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata + function OrdinaryDefineOwnMetadata( + MetadataKey: any, + MetadataValue: any, + O: any, + P: string | symbol | undefined, + ): void { + const metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true); + metadataMap.set(MetadataKey, MetadataValue); + } + + // 3.1.6.1 OrdinaryMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys + function OrdinaryMetadataKeys( + O: any, + P: string | symbol | undefined, + ): any[] { + const ownKeys = OrdinaryOwnMetadataKeys(O, P); + const parent = OrdinaryGetPrototypeOf(O); + if (parent === null) return ownKeys; + const parentKeys = OrdinaryMetadataKeys(parent, P); + if (parentKeys.length <= 0) return ownKeys; + if (ownKeys.length <= 0) return parentKeys; + const set = new _Set(); + const keys: any[] = []; + for (const key of ownKeys) { + const hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + for (const key of parentKeys) { + const hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + return keys; + } + + // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys + function OrdinaryOwnMetadataKeys( + O: any, + P: string | symbol | undefined, + ): any[] { + const keys: any[] = []; + const metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) return keys; + const keysObj = metadataMap.keys(); + const iterator = GetIterator(keysObj); + let k = 0; + while (true) { + const next = IteratorStep(iterator); + if (!next) { + keys.length = k; + return keys; + } + const nextValue = IteratorValue(next); + try { + keys[k] = nextValue; + } catch (e) { + try { + IteratorClose(iterator); + } finally { + throw e; + } + } + k++; + } + } + + // 6 ECMAScript Data Typ0es and Values + // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values + function Type(x: any): Tag { + if (x === null) return Tag.Null; + switch (typeof x) { + case "undefined": + return Tag.Undefined; + case "boolean": + return Tag.Boolean; + case "string": + return Tag.String; + case "symbol": + return Tag.Symbol; + case "number": + return Tag.Number; + case "object": + return x === null ? Tag.Null : Tag.Object; + default: + return Tag.Object; + } + } + + // 6.1 ECMAScript Language Types + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types + const enum Tag { + Undefined, + Null, + Boolean, + String, + Symbol, + Number, + Object, + } + + // 6.1.1 The Undefined Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type + function IsUndefined(x: any): x is undefined { + return x === undefined; + } + + // 6.1.2 The Null Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type + function IsNull(x: any): x is null { + return x === null; + } + + // 6.1.5 The Symbol Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type + function IsSymbol(x: any): x is symbol { + return typeof x === "symbol"; + } + + // 6.1.7 The Object Type + // https://tc39.github.io/ecma262/#sec-object-type + function IsObject< + T, + >(x: T | undefined | null | boolean | string | symbol | number): x is T { + return typeof x === "object" ? x !== null : typeof x === "function"; + } + + // 7.1 Type Conversion + // https://tc39.github.io/ecma262/#sec-type-conversion + + // 7.1.1 ToPrimitive(input [, PreferredType]) + // https://tc39.github.io/ecma262/#sec-toprimitive + function ToPrimitive( + input: any, + PreferredType?: Tag, + ): undefined | null | boolean | string | symbol | number { + switch (Type(input)) { + case Tag.Undefined: + return input; + case Tag.Null: + return input; + case Tag.Boolean: + return input; + case Tag.String: + return input; + case Tag.Symbol: + return input; + case Tag.Number: + return input; + } + const hint: "string" | "number" | "default" = PreferredType === Tag.String + ? "string" + : PreferredType === Tag.Number + ? "number" + : "default"; + const exoticToPrim = GetMethod(input, toPrimitiveSymbol); + if (exoticToPrim !== undefined) { + const result = exoticToPrim.call(input, hint); + if (IsObject(result)) throw new TypeError(); + return result; + } + return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint); + } + + // 7.1.1.1 OrdinaryToPrimitive(O, hint) + // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive + function OrdinaryToPrimitive( + O: any, + hint: "string" | "number", + ): undefined | null | boolean | string | symbol | number { + if (hint === "string") { + const toString = O.toString; + if (IsCallable(toString)) { + const result = toString.call(O); + if (!IsObject(result)) return result; + } + const valueOf = O.valueOf; + if (IsCallable(valueOf)) { + const result = valueOf.call(O); + if (!IsObject(result)) return result; + } + } else { + const valueOf = O.valueOf; + if (IsCallable(valueOf)) { + const result = valueOf.call(O); + if (!IsObject(result)) return result; + } + const toString = O.toString; + if (IsCallable(toString)) { + const result = toString.call(O); + if (!IsObject(result)) return result; + } + } + throw new TypeError(); + } + + // 7.1.2 ToBoolean(argument) + // https://tc39.github.io/ecma262/2016/#sec-toboolean + function ToBoolean(argument: any): boolean { + return !!argument; + } + + // 7.1.12 ToString(argument) + // https://tc39.github.io/ecma262/#sec-tostring + function ToString(argument: any): string { + return "" + argument; + } + + // 7.1.14 ToPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-topropertykey + function ToPropertyKey(argument: any): string | symbol { + const key = ToPrimitive(argument, Tag.String); + if (IsSymbol(key)) return key; + return ToString(key); + } + + // 7.2 Testing and Comparison Operations + // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations + + // 7.2.2 IsArray(argument) + // https://tc39.github.io/ecma262/#sec-isarray + function IsArray(argument: any): argument is any[] { + return Array.isArray + ? Array.isArray(argument) + : argument instanceof Object + ? argument instanceof Array + : Object.prototype.toString.call(argument) === "[object Array]"; + } + + // 7.2.3 IsCallable(argument) + // https://tc39.github.io/ecma262/#sec-iscallable + function IsCallable(argument: any): argument is Function { + // NOTE: This is an approximation as we cannot check for [[Call]] internal method. + return typeof argument === "function"; + } + + // 7.2.4 IsConstructor(argument) + // https://tc39.github.io/ecma262/#sec-isconstructor + function IsConstructor(argument: any): argument is Function { + // NOTE: This is an approximation as we cannot check for [[Construct]] internal method. + return typeof argument === "function"; + } + + // 7.2.7 IsPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-ispropertykey + function IsPropertyKey(argument: any): argument is string | symbol { + switch (Type(argument)) { + case Tag.String: + return true; + case Tag.Symbol: + return true; + default: + return false; + } + } + + // 7.3 Operations on Objects + // https://tc39.github.io/ecma262/#sec-operations-on-objects + + // 7.3.9 GetMethod(V, P) + // https://tc39.github.io/ecma262/#sec-getmethod + function GetMethod(V: any, P: any): Function | undefined { + const func = V[P]; + if (func === undefined || func === null) return undefined; + if (!IsCallable(func)) throw new TypeError(); + return func; + } + + // 7.4 Operations on Iterator Objects + // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects + + function GetIterator(obj: Iterable): Iterator { + const method = GetMethod(obj, iteratorSymbol); + if (!IsCallable(method)) throw new TypeError(); // from Call + const iterator = method.call(obj); + if (!IsObject(iterator)) throw new TypeError(); + return iterator; + } + + // 7.4.4 IteratorValue(iterResult) + // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue + function IteratorValue(iterResult: IteratorResult): T { + return iterResult.value; + } + + // 7.4.5 IteratorStep(iterator) + // https://tc39.github.io/ecma262/#sec-iteratorstep + function IteratorStep(iterator: Iterator): IteratorResult | false { + const result = iterator.next(); + return result.done ? false : result; + } + + // 7.4.6 IteratorClose(iterator, completion) + // https://tc39.github.io/ecma262/#sec-iteratorclose + function IteratorClose(iterator: Iterator) { + const f = iterator["return"]; + if (f) f.call(iterator); + } + + // 9.1 Ordinary Object Internal Methods and Internal Slots + // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots + + // 9.1.1.1 OrdinaryGetPrototypeOf(O) + // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof + function OrdinaryGetPrototypeOf(O: any): any { + const proto = Object.getPrototypeOf(O); + if (typeof O !== "function" || O === functionPrototype) return proto; + + // TypeScript doesn't set __proto__ in ES5, as it's non-standard. + // Try to determine the superclass constructor. Compatible implementations + // must either set __proto__ on a subclass constructor to the superclass constructor, + // or ensure each class has a valid `constructor` property on its prototype that + // points back to the constructor. + + // If this is not the same as Function.[[Prototype]], then this is definately inherited. + // This is the case when in ES6 or when using __proto__ in a compatible browser. + if (proto !== functionPrototype) return proto; + + // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage. + const prototype = O.prototype; + const prototypeProto = prototype && Object.getPrototypeOf(prototype); + if (prototypeProto == null || prototypeProto === Object.prototype) { + return proto; + } + + // If the constructor was not a function, then we cannot determine the heritage. + const constructor = prototypeProto.constructor; + if (typeof constructor !== "function") return proto; + + // If we have some kind of self-reference, then we cannot determine the heritage. + if (constructor === O) return proto; + + // we have a pretty good guess at the heritage. + return constructor; + } + + // naive Map shim + function CreateMapPolyfill(): MapConstructor { + const cacheSentinel = {}; + const arraySentinel: any[] = []; + + class MapIterator< + K, + V, + R extends K | V | [K, V], + > implements IterableIterator { + private _keys: K[]; + private _values: V[]; + private _index = 0; + private _selector: (key: K, value: V) => R; + constructor(keys: K[], values: V[], selector: (key: K, value: V) => R) { + this._keys = keys; + this._values = values; + this._selector = selector; + } + "@@iterator"() { + return this; + } + [iteratorSymbol]() { + return this; + } + next(): IteratorResult { + const index = this._index; + if (index >= 0 && index < this._keys.length) { + const result = this._selector( + this._keys[index], + this._values[index], + ); + if (index + 1 >= this._keys.length) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } else { + this._index++; + } + return { value: result, done: false }; + } + return { value: undefined, done: true }; + } + throw(error: any): IteratorResult { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + throw error; + } + return(value?: R): IteratorResult { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + return { value: value, done: true }; + } + } + + return class Map { + private _keys: K[] = []; + private _values: (V | undefined)[] = []; + private _cacheKey = cacheSentinel; + private _cacheIndex = -2; + get size() { + return this._keys.length; + } + has(key: K): boolean { + return this._find(key, /*insert*/ false) >= 0; + } + get(key: K): V | undefined { + const index = this._find(key, /*insert*/ false); + return index >= 0 ? this._values[index] : undefined; + } + set(key: K, value: V): this { + const index = this._find(key, /*insert*/ true); + this._values[index] = value; + return this; + } + delete(key: K): boolean { + const index = this._find(key, /*insert*/ false); + if (index >= 0) { + const size = this._keys.length; + for (let i = index + 1; i < size; i++) { + this._keys[i - 1] = this._keys[i]; + this._values[i - 1] = this._values[i]; + } + this._keys.length--; + this._values.length--; + if (key === this._cacheKey) { + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + return true; + } + return false; + } + clear(): void { + this._keys.length = 0; + this._values.length = 0; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + keys() { + return new MapIterator(this._keys, this._values, getKey); + } + values() { + return new MapIterator(this._keys, this._values, getValue); + } + entries() { + return new MapIterator(this._keys, this._values, getEntry); + } + "@@iterator"() { + return this.entries(); + } + [iteratorSymbol]() { + return this.entries(); + } + private _find(key: K, insert?: boolean): number { + if (this._cacheKey !== key) { + this._cacheIndex = this._keys.indexOf((this._cacheKey = key)); + } + if (this._cacheIndex < 0 && insert) { + this._cacheIndex = this._keys.length; + this._keys.push(key); + this._values.push(undefined); + } + return this._cacheIndex; + } + }; + + function getKey(key: K, _: V) { + return key; + } + + function getValue(_: K, value: V) { + return value; + } + + function getEntry(key: K, value: V) { + return [key, value] as [K, V]; + } + } + + // naive Set shim + function CreateSetPolyfill(): SetConstructor { + return class Set { + private _map = new _Map(); + get size() { + return this._map.size; + } + has(value: T): boolean { + return this._map.has(value); + } + add(value: T): Set { + return this._map.set(value, value), this; + } + delete(value: T): boolean { + return this._map.delete(value); + } + clear(): void { + this._map.clear(); + } + keys() { + return this._map.keys(); + } + values() { + return this._map.values(); + } + entries() { + return this._map.entries(); + } + "@@iterator"() { + return this.keys(); + } + [iteratorSymbol]() { + return this.keys(); + } + }; + } + + // naive WeakMap shim + function CreateWeakMapPolyfill(): WeakMapConstructor { + const UUID_SIZE = 16; + const keys = HashMap.create(); + const rootKey = CreateUniqueKey(); + return class WeakMap { + private _key = CreateUniqueKey(); + has(target: K): boolean { + const table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? HashMap.has(table, this._key) : false; + } + get(target: K): V { + const table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined + ? HashMap.get(table, this._key) + : undefined; + } + set(target: K, value: V): WeakMap { + const table = GetOrCreateWeakMapTable(target, /*create*/ true); + table[this._key] = value; + return this; + } + delete(target: K): boolean { + const table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? delete table[this._key] : false; + } + clear(): void { + // NOTE: not a real clear, just makes the previous data unreachable + this._key = CreateUniqueKey(); + } + }; + + function CreateUniqueKey(): string { + let key: string; + do key = "@@WeakMap@@" + CreateUUID(); while (HashMap.has(keys, key)); + keys[key] = true; + return key; + } + + function GetOrCreateWeakMapTable< + K, + >(target: K, create: true): HashMap; + function GetOrCreateWeakMapTable< + K, + >(target: K, create: false): HashMap | undefined; + function GetOrCreateWeakMapTable< + K, + >(target: K, create: boolean): HashMap | undefined { + if (!hasOwn.call(target, rootKey)) { + if (!create) return undefined; + Object.defineProperty(target, rootKey, { + value: HashMap.create(), + }); + } + return ( target)[rootKey]; + } + + function FillRandomBytes(buffer: BufferLike, size: number): BufferLike { + for (let i = 0; i < size; ++i) buffer[i] = (Math.random() * 0xff) | 0; + return buffer; + } + + function GenRandomBytes(size: number): BufferLike { + if (typeof Uint8Array === "function") { + if (typeof crypto !== "undefined") { + return crypto.getRandomValues(new Uint8Array(size)) as Uint8Array; + } + if (typeof msCrypto !== "undefined") { + return msCrypto.getRandomValues(new Uint8Array(size)) as Uint8Array; + } + return FillRandomBytes(new Uint8Array(size), size); + } + return FillRandomBytes(new Array(size), size); + } + + function CreateUUID() { + const data = GenRandomBytes(UUID_SIZE); + // mark as random - RFC 4122 § 4.4 + data[6] = (data[6] & 0x4f) | 0x40; + data[8] = (data[8] & 0xbf) | 0x80; + let result = ""; + for (let offset = 0; offset < UUID_SIZE; ++offset) { + const byte = data[offset]; + if (offset === 4 || offset === 6 || offset === 8) result += "-"; + if (byte < 16) result += "0"; + result += byte.toString(16).toLowerCase(); + } + return result; + } + } + + // uses a heuristic used by v8 and chakra to force an object into dictionary mode. + function MakeDictionary(obj: T): T { + ( obj).__ = undefined; + delete ( obj).__; + return obj; + } + }); +} diff --git a/bundler/tests/.cache/deno/18ff653ba0ac6b88cd88d5d70d343792704a10d1.ts b/bundler/tests/.cache/deno/18ff653ba0ac6b88cd88d5d70d343792704a10d1.ts new file mode 100644 index 00000000000..4d200306b02 --- /dev/null +++ b/bundler/tests/.cache/deno/18ff653ba0ac6b88cd88d5d70d343792704a10d1.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfBase.js + + +export default { + init: function() { + return this.xf['@@transducer/init'](); + }, + result: function(result) { + return this.xf['@@transducer/result'](result); + } +}; diff --git a/bundler/tests/.cache/deno/1916719c6dbd64f6dba5c8f871f8d0a314b02f78.ts b/bundler/tests/.cache/deno/1916719c6dbd64f6dba5c8f871f8d0a314b02f78.ts new file mode 100644 index 00000000000..73ef50af3fb --- /dev/null +++ b/bundler/tests/.cache/deno/1916719c6dbd64f6dba5c8f871f8d0a314b02f78.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/oak/negotiation/common.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export interface Specificity { + i: number; + o?: number; + q: number; + s?: number; +} + +export function compareSpecs(a: Specificity, b: Specificity): number { + return ( + b.q - a.q || + (b.s ?? 0) - (a.s ?? 0) || + (a.o ?? 0) - (b.o ?? 0) || + a.i - b.i || + 0 + ); +} + +export function isQuality(spec: Specificity): boolean { + return spec.q > 0; +} diff --git a/bundler/tests/.cache/deno/1947e42aaa95bc1bb5765186b1ca87d18a859e4c.ts b/bundler/tests/.cache/deno/1947e42aaa95bc1bb5765186b1ca87d18a859e4c.ts new file mode 100644 index 00000000000..e41d7e51c4d --- /dev/null +++ b/bundler/tests/.cache/deno/1947e42aaa95bc1bb5765186b1ca87d18a859e4c.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/case/lowerFirstCase.ts + + +import lowerCase from "./lowerCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + str = String(str); + + return lowerCase(str.charAt(0), locale) + str.substr(1); +} diff --git a/bundler/tests/.cache/deno/197458d0a975f158097ae5c3f29fb1a5bdd76ff1.ts b/bundler/tests/.cache/deno/197458d0a975f158097ae5c3f29fb1a5bdd76ff1.ts new file mode 100644 index 00000000000..9f9ea0574a8 --- /dev/null +++ b/bundler/tests/.cache/deno/197458d0a975f158097ae5c3f29fb1a5bdd76ff1.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/head.js + + +import nth from './nth.js'; + + +/** + * Returns the first element of the given list or string. In some libraries + * this function is named `first`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {Array|String} list + * @return {*} + * @see R.tail, R.init, R.last + * @example + * + * R.head(['fi', 'fo', 'fum']); //=> 'fi' + * R.head([]); //=> undefined + * + * R.head('abc'); //=> 'a' + * R.head(''); //=> '' + */ +var head = nth(0); +export default head; diff --git a/bundler/tests/.cache/deno/198351dccca6a94f567522a91e138fc20de08034.ts b/bundler/tests/.cache/deno/198351dccca6a94f567522a91e138fc20de08034.ts new file mode 100644 index 00000000000..5234002d175 --- /dev/null +++ b/bundler/tests/.cache/deno/198351dccca6a94f567522a91e138fc20de08034.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/mod.ts + + +export { DB } from "./src/db.ts"; +export { Empty } from "./src/rows.ts"; +export { Status } from "./src/constants.ts"; diff --git a/bundler/tests/.cache/deno/19a74b46907399a12d5e04a3088c26f2671f5272.ts b/bundler/tests/.cache/deno/19a74b46907399a12d5e04a3088c26f2671f5272.ts new file mode 100644 index 00000000000..13cc1204e09 --- /dev/null +++ b/bundler/tests/.cache/deno/19a74b46907399a12d5e04a3088c26f2671f5272.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/propIs.js + + +import _curry3 from './internal/_curry3.js'; +import prop from './prop.js'; +import is from './is.js'; + + +/** + * Returns `true` if the specified object property is of the given type; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Type + * @sig Type -> String -> Object -> Boolean + * @param {Function} type + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.is, R.propSatisfies + * @example + * + * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true + * R.propIs(Number, 'x', {x: 'foo'}); //=> false + * R.propIs(Number, 'x', {}); //=> false + */ +var propIs = _curry3(function propIs(type, name, obj) { + return is(type, prop(name, obj)); +}); +export default propIs; diff --git a/bundler/tests/.cache/deno/19f113629702d39e47def952114549a15a93cd55.ts b/bundler/tests/.cache/deno/19f113629702d39e47def952114549a15a93cd55.ts new file mode 100644 index 00000000000..c670614a5a9 --- /dev/null +++ b/bundler/tests/.cache/deno/19f113629702d39e47def952114549a15a93cd55.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/chain.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _makeFlat from './internal/_makeFlat.js'; +import _xchain from './internal/_xchain.js'; +import map from './map.js'; + + +/** + * `chain` maps a function over a list and concatenates the results. `chain` + * is also known as `flatMap` in some libraries. + * + * Dispatches to the `chain` method of the second argument, if present, + * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain). + * + * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain m => (a -> m b) -> m a -> m b + * @param {Function} fn The function to map with + * @param {Array} list The list to map over + * @return {Array} The result of flat-mapping `list` with `fn` + * @example + * + * const duplicate = n => [n, n]; + * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] + * + * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1] + */ +var chain = _curry2(_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) { + if (typeof monad === 'function') { + return function(x) { return fn(monad(x))(x); }; + } + return _makeFlat(false)(map(fn, monad)); +})); +export default chain; diff --git a/bundler/tests/.cache/deno/1a02906df54de8682a94e81ec030c5e1748c9c8e.ts b/bundler/tests/.cache/deno/1a02906df54de8682a94e81ec030c5e1748c9c8e.ts new file mode 100644 index 00000000000..4e263b48c1c --- /dev/null +++ b/bundler/tests/.cache/deno/1a02906df54de8682a94e81ec030c5e1748c9c8e.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std@0.85.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/1a53b55b41069a12c154eb051f25deb05f797b90.ts b/bundler/tests/.cache/deno/1a53b55b41069a12c154eb051f25deb05f797b90.ts new file mode 100644 index 00000000000..6896adcd404 --- /dev/null +++ b/bundler/tests/.cache/deno/1a53b55b41069a12c154eb051f25deb05f797b90.ts @@ -0,0 +1,81 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isRFC3339.ts + + +/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */ + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const dateFullYear = /[0-9]{4}/; + +/** + * @ignore + */ +const dateMonth = /(0[1-9]|1[0-2])/; + +/** + * @ignore + */ +const dateMDay = /([12]\d|0[1-9]|3[01])/; + +/** + * @ignore + */ +const timeHour = /([01][0-9]|2[0-3])/; + +/** + * @ignore + */ +const timeMinute = /[0-5][0-9]/; + +/** + * @ignore + */ +const timeSecond = /([0-5][0-9]|60)/; + +/** + * @ignore + */ +const timeSecFrac = /(\.[0-9]+)?/; + +/** + * @ignore + */ +const timeNumOffset = new RegExp(`[-+]${timeHour.source}:${timeMinute.source}`); + +/** + * @ignore + */ +const timeOffset = new RegExp(`([zZ]|${timeNumOffset.source})`); + +/** + * @ignore + */ +const partialTime = new RegExp( + `${timeHour.source}:${timeMinute.source}:${timeSecond.source}${timeSecFrac.source}` +); + +/** + * @ignore + */ +const fullDate = new RegExp( + `${dateFullYear.source}-${dateMonth.source}-${dateMDay.source}` +); + +/** + * @ignore + */ +const fullTime = new RegExp(`${partialTime.source}${timeOffset.source}`); + +/** + * @ignore + */ +const rfc3339 = new RegExp(`${fullDate.source}[ tT]${fullTime.source}`); + +export const isRFC3339 = (str: string) => { + assertString(str); + return rfc3339.test(str); +}; diff --git a/bundler/tests/.cache/deno/1a5b9ab371d52f951f291f13fe96c23ebab22c2f.ts b/bundler/tests/.cache/deno/1a5b9ab371d52f951f291f13fe96c23ebab22c2f.ts new file mode 100644 index 00000000000..9fd08c4bfd2 --- /dev/null +++ b/bundler/tests/.cache/deno/1a5b9ab371d52f951f291f13fe96c23ebab22c2f.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/sortWith.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Sorts a list according to a list of comparators. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Relation + * @sig [(a, a) -> Number] -> [a] -> [a] + * @param {Array} functions A list of comparator functions. + * @param {Array} list The list to sort. + * @return {Array} A new list sorted according to the comarator functions. + * @see R.ascend, R.descend + * @example + * + * const alice = { + * name: 'alice', + * age: 40 + * }; + * const bob = { + * name: 'bob', + * age: 30 + * }; + * const clara = { + * name: 'clara', + * age: 40 + * }; + * const people = [clara, bob, alice]; + * const ageNameSort = R.sortWith([ + * R.descend(R.prop('age')), + * R.ascend(R.prop('name')) + * ]); + * ageNameSort(people); //=> [alice, clara, bob] + */ +var sortWith = _curry2(function sortWith(fns, list) { + return Array.prototype.slice.call(list, 0).sort(function(a, b) { + var result = 0; + var i = 0; + while (result === 0 && i < fns.length) { + result = fns[i](a, b); + i += 1; + } + return result; + }); +}); +export default sortWith; diff --git a/bundler/tests/.cache/deno/1a60eafc82d4d7ac8ae2352f7ca7699df8de3f20.ts b/bundler/tests/.cache/deno/1a60eafc82d4d7ac8ae2352f7ca7699df8de3f20.ts new file mode 100644 index 00000000000..8090cd4b6a5 --- /dev/null +++ b/bundler/tests/.cache/deno/1a60eafc82d4d7ac8ae2352f7ca7699df8de3f20.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/paths.js + + +import _curry2 from './internal/_curry2.js'; +import _isInteger from './internal/_isInteger.js'; +import nth from './nth.js'; + +/** + * Retrieves the values at given paths of an object. + * + * @func + * @memberOf R + * @since v0.27.1 + * @category Object + * @typedefn Idx = [String | Int | Symbol] + * @sig [Idx] -> {a} -> [a | Undefined] + * @param {Array} pathsArray The array of paths to be fetched. + * @param {Object} obj The object to retrieve the nested properties from. + * @return {Array} A list consisting of values at paths specified by "pathsArray". + * @see R.path + * @example + * + * R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3] + * R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined] + */ +var paths = _curry2(function paths(pathsArray, obj) { + return pathsArray.map(function(paths) { + var val = obj; + var idx = 0; + var p; + while (idx < paths.length) { + if (val == null) { + return; + } + p = paths[idx]; + val = _isInteger(p) ? nth(p, val) : val[p]; + idx += 1; + } + return val; + }); +}); +export default paths; diff --git a/bundler/tests/.cache/deno/1a72cbd07cabb6706884b35e157486cd37ea8ec5.ts b/bundler/tests/.cache/deno/1a72cbd07cabb6706884b35e157486cd37ea8ec5.ts new file mode 100644 index 00000000000..f0b1ad3de59 --- /dev/null +++ b/bundler/tests/.cache/deno/1a72cbd07cabb6706884b35e157486cd37ea8ec5.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/std/uuid/_common.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/** + * Converts the byte array to a UUID string + * @param bytes Used to convert Byte to Hex + */ +export function bytesToUuid(bytes: number[] | Uint8Array): string { + const bits = [...bytes].map((bit) => { + const s = bit.toString(16); + return bit < 0x10 ? "0" + s : s; + }); + return [ + ...bits.slice(0, 4), + "-", + ...bits.slice(4, 6), + "-", + ...bits.slice(6, 8), + "-", + ...bits.slice(8, 10), + "-", + ...bits.slice(10, 16), + ].join(""); +} + +/** + * Converts a string to a byte array by converting the hex value to a number. + * @param uuid Value that gets converted. + */ +export function uuidToBytes(uuid: string): number[] { + const bytes: number[] = []; + + uuid.replace(/[a-fA-F0-9]{2}/g, (hex: string): string => { + bytes.push(parseInt(hex, 16)); + return ""; + }); + + return bytes; +} + +/** + * Converts a string to a byte array using the char code. + * @param str Value that gets converted. + */ +export function stringToBytes(str: string): number[] { + str = unescape(encodeURIComponent(str)); + const bytes = new Array(str.length); + for (let i = 0; i < str.length; i++) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} + +/** + * Creates a buffer for creating a SHA-1 hash. + * @param content Buffer for SHA-1 hash. + */ +export function createBuffer(content: number[]): ArrayBuffer { + const arrayBuffer = new ArrayBuffer(content.length); + const uint8Array = new Uint8Array(arrayBuffer); + for (let i = 0; i < content.length; i++) { + uint8Array[i] = content[i]; + } + return arrayBuffer; +} diff --git a/bundler/tests/.cache/deno/1a961bff3c46f42c2f242228b25667e674f87baa.ts b/bundler/tests/.cache/deno/1a961bff3c46f42c2f242228b25667e674f87baa.ts new file mode 100644 index 00000000000..44b1818b376 --- /dev/null +++ b/bundler/tests/.cache/deno/1a961bff3c46f42c2f242228b25667e674f87baa.ts @@ -0,0 +1,98 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/ProvidedRequiredArgumentsRule.js + + +import inspect from '../../jsutils/inspect.js'; +import keyMap from '../../jsutils/keyMap.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { print } from '../../language/printer.js'; +import { specifiedDirectives } from '../../type/directives.js'; +import { isType, isRequiredArgument } from '../../type/definition.js'; + +/** + * Provided required arguments + * + * A field or directive is only valid if all required (non-null without a + * default value) field arguments have been provided. + */ +export function ProvidedRequiredArgumentsRule(context) { + return { ...ProvidedRequiredArgumentsOnDirectivesRule(context), + Field: { + // Validate on leave to allow for deeper errors to appear first. + leave(fieldNode) { + const fieldDef = context.getFieldDef(); + + if (!fieldDef) { + return false; + } + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + + const argNodes = fieldNode.arguments ?? []; + const argNodeMap = keyMap(argNodes, arg => arg.name.value); + + for (const argDef of fieldDef.args) { + const argNode = argNodeMap[argDef.name]; + + if (!argNode && isRequiredArgument(argDef)) { + const argTypeStr = inspect(argDef.type); + context.reportError(new GraphQLError(`Field "${fieldDef.name}" argument "${argDef.name}" of type "${argTypeStr}" is required, but it was not provided.`, fieldNode)); + } + } + } + + } + }; +} +/** + * @internal + */ + +export function ProvidedRequiredArgumentsOnDirectivesRule(context) { + const requiredArgsMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema ? schema.getDirectives() : specifiedDirectives; + + for (const directive of definedDirectives) { + requiredArgsMap[directive.name] = keyMap(directive.args.filter(isRequiredArgument), arg => arg.name); + } + + const astDefinitions = context.getDocument().definitions; + + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const argNodes = def.arguments ?? []; + requiredArgsMap[def.name.value] = keyMap(argNodes.filter(isRequiredArgumentNode), arg => arg.name.value); + } + } + + return { + Directive: { + // Validate on leave to allow for deeper errors to appear first. + leave(directiveNode) { + const directiveName = directiveNode.name.value; + const requiredArgs = requiredArgsMap[directiveName]; + + if (requiredArgs) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const argNodes = directiveNode.arguments ?? []; + const argNodeMap = keyMap(argNodes, arg => arg.name.value); + + for (const argName of Object.keys(requiredArgs)) { + if (!argNodeMap[argName]) { + const argType = requiredArgs[argName].type; + const argTypeStr = isType(argType) ? inspect(argType) : print(argType); + context.reportError(new GraphQLError(`Directive "@${directiveName}" argument "${argName}" of type "${argTypeStr}" is required, but it was not provided.`, directiveNode)); + } + } + } + } + + } + }; +} + +function isRequiredArgumentNode(arg) { + return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1aa8cc6352488fec0e34a6a9d497e25e3779e61c.ts b/bundler/tests/.cache/deno/1aa8cc6352488fec0e34a6a9d497e25e3779e61c.ts new file mode 100644 index 00000000000..0317a6e0fc3 --- /dev/null +++ b/bundler/tests/.cache/deno/1aa8cc6352488fec0e34a6a9d497e25e3779e61c.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/defaultTo.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns the second argument if it is not `null`, `undefined` or `NaN`; + * otherwise the first argument is returned. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Logic + * @sig a -> b -> a | b + * @param {a} default The default value. + * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`. + * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value + * @example + * + * const defaultTo42 = R.defaultTo(42); + * + * defaultTo42(null); //=> 42 + * defaultTo42(undefined); //=> 42 + * defaultTo42(false); //=> false + * defaultTo42('Ramda'); //=> 'Ramda' + * // parseInt('string') results in NaN + * defaultTo42(parseInt('string')); //=> 42 + */ +var defaultTo = _curry2(function defaultTo(d, v) { + return v == null || v !== v ? d : v; +}); +export default defaultTo; diff --git a/bundler/tests/.cache/deno/1b0566230829126fecb541e367fd26ce521069db.ts b/bundler/tests/.cache/deno/1b0566230829126fecb541e367fd26ce521069db.ts new file mode 100644 index 00000000000..f57cd8318ca --- /dev/null +++ b/bundler/tests/.cache/deno/1b0566230829126fecb541e367fd26ce521069db.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.81.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/1b2d0a727fc4a75d47a3e8f0fcd11de718d112a0.ts b/bundler/tests/.cache/deno/1b2d0a727fc4a75d47a3e8f0fcd11de718d112a0.ts new file mode 100644 index 00000000000..42c652fffe6 --- /dev/null +++ b/bundler/tests/.cache/deno/1b2d0a727fc4a75d47a3e8f0fcd11de718d112a0.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.86.0/encoding/utf8.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/1b331576d3a22cb56c3454878ffae3385d3c660a.ts b/bundler/tests/.cache/deno/1b331576d3a22cb56c3454878ffae3385d3c660a.ts new file mode 100644 index 00000000000..9ec3fc4d46e --- /dev/null +++ b/bundler/tests/.cache/deno/1b331576d3a22cb56c3454878ffae3385d3c660a.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/sort.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a copy of the list, sorted according to the comparator function, + * which should accept two values at a time and return a negative number if the + * first value is smaller, a positive number if it's larger, and zero if they + * are equal. Please note that this is a **copy** of the list. It does not + * modify the original. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, a) -> Number) -> [a] -> [a] + * @param {Function} comparator A sorting function :: a -> b -> Int + * @param {Array} list The list to sort + * @return {Array} a new array with its elements sorted by the comparator function. + * @see R.ascend, R.descend + * @example + * + * const diff = function(a, b) { return a - b; }; + * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] + */ +var sort = _curry2(function sort(comparator, list) { + return Array.prototype.slice.call(list, 0).sort(comparator); +}); +export default sort; diff --git a/bundler/tests/.cache/deno/1b4a2b4a6c460f5bd77c1dfd0134e23f17db993f.ts b/bundler/tests/.cache/deno/1b4a2b4a6c460f5bd77c1dfd0134e23f17db993f.ts new file mode 100644 index 00000000000..7d14f87ebc0 --- /dev/null +++ b/bundler/tests/.cache/deno/1b4a2b4a6c460f5bd77c1dfd0134e23f17db993f.ts @@ -0,0 +1,615 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/lexer.js + + +import { syntaxError } from '../error/syntaxError.js'; +import { Token } from './ast.js'; +import { dedentBlockStringValue } from './blockString.js'; +import { TokenKind } from './tokenKind.js'; +/** + * Given a Source object, creates a Lexer for that source. + * A Lexer is a stateful stream generator in that every time + * it is advanced, it returns the next token in the Source. Assuming the + * source lexes, the final Token emitted by the lexer will be of kind + * EOF, after which the lexer will repeatedly return the same EOF token + * whenever called. + */ + +export class Lexer { + /** + * The previously focused non-ignored token. + */ + + /** + * The currently focused non-ignored token. + */ + + /** + * The (1-indexed) line containing the current token. + */ + + /** + * The character offset at which the current line begins. + */ + constructor(source) { + const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null); + this.source = source; + this.lastToken = startOfFileToken; + this.token = startOfFileToken; + this.line = 1; + this.lineStart = 0; + } + /** + * Advances the token stream to the next non-ignored token. + */ + + + advance() { + this.lastToken = this.token; + const token = this.token = this.lookahead(); + return token; + } + /** + * Looks ahead and returns the next non-ignored token, but does not change + * the state of Lexer. + */ + + + lookahead() { + let token = this.token; + + if (token.kind !== TokenKind.EOF) { + do { + // Note: next is only mutable during parsing, so we cast to allow this. + token = token.next ?? (token.next = readToken(this, token)); + } while (token.kind === TokenKind.COMMENT); + } + + return token; + } + +} +/** + * @internal + */ + +export function isPunctuatorTokenKind(kind) { + return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R; +} + +function printCharCode(code) { + return (// NaN/undefined represents access beyond the end of the file. + isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII. + code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form. + `"\\u${('00' + code.toString(16).toUpperCase()).slice(-4)}"` + ); +} +/** + * Gets the next token from the source starting at the given position. + * + * This skips over whitespace until it finds the next lexable token, then lexes + * punctuators immediately or calls the appropriate helper function for more + * complicated tokens. + */ + + +function readToken(lexer, prev) { + const source = lexer.source; + const body = source.body; + const bodyLength = body.length; + const pos = positionAfterWhitespace(body, prev.end, lexer); + const line = lexer.line; + const col = 1 + pos - lexer.lineStart; + + if (pos >= bodyLength) { + return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev); + } + + const code = body.charCodeAt(pos); // SourceCharacter + + switch (code) { + // ! + case 33: + return new Token(TokenKind.BANG, pos, pos + 1, line, col, prev); + // # + + case 35: + return readComment(source, pos, line, col, prev); + // $ + + case 36: + return new Token(TokenKind.DOLLAR, pos, pos + 1, line, col, prev); + // & + + case 38: + return new Token(TokenKind.AMP, pos, pos + 1, line, col, prev); + // ( + + case 40: + return new Token(TokenKind.PAREN_L, pos, pos + 1, line, col, prev); + // ) + + case 41: + return new Token(TokenKind.PAREN_R, pos, pos + 1, line, col, prev); + // . + + case 46: + if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) { + return new Token(TokenKind.SPREAD, pos, pos + 3, line, col, prev); + } + + break; + // : + + case 58: + return new Token(TokenKind.COLON, pos, pos + 1, line, col, prev); + // = + + case 61: + return new Token(TokenKind.EQUALS, pos, pos + 1, line, col, prev); + // @ + + case 64: + return new Token(TokenKind.AT, pos, pos + 1, line, col, prev); + // [ + + case 91: + return new Token(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev); + // ] + + case 93: + return new Token(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev); + // { + + case 123: + return new Token(TokenKind.BRACE_L, pos, pos + 1, line, col, prev); + // | + + case 124: + return new Token(TokenKind.PIPE, pos, pos + 1, line, col, prev); + // } + + case 125: + return new Token(TokenKind.BRACE_R, pos, pos + 1, line, col, prev); + // A-Z _ a-z + + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + return readName(source, pos, line, col, prev); + // - 0-9 + + case 45: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return readNumber(source, pos, code, line, col, prev); + // " + + case 34: + if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) { + return readBlockString(source, pos, line, col, prev, lexer); + } + + return readString(source, pos, line, col, prev); + } + + throw syntaxError(source, pos, unexpectedCharacterMessage(code)); +} +/** + * Report a message that an unexpected character was encountered. + */ + + +function unexpectedCharacterMessage(code) { + if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) { + return `Cannot contain the invalid character ${printCharCode(code)}.`; + } + + if (code === 39) { + // ' + return 'Unexpected single quote character (\'), did you mean to use a double quote (")?'; + } + + return `Cannot parse the unexpected character ${printCharCode(code)}.`; +} +/** + * Reads from body starting at startPosition until it finds a non-whitespace + * character, then returns the position of that character for lexing. + */ + + +function positionAfterWhitespace(body, startPosition, lexer) { + const bodyLength = body.length; + let position = startPosition; + + while (position < bodyLength) { + const code = body.charCodeAt(position); // tab | space | comma | BOM + + if (code === 9 || code === 32 || code === 44 || code === 0xfeff) { + ++position; + } else if (code === 10) { + // new line + ++position; + ++lexer.line; + lexer.lineStart = position; + } else if (code === 13) { + // carriage return + if (body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; + } + + ++lexer.line; + lexer.lineStart = position; + } else { + break; + } + } + + return position; +} +/** + * Reads a comment token from the source file. + * + * #[\u0009\u0020-\uFFFF]* + */ + + +function readComment(source, start, line, col, prev) { + const body = source.body; + let code; + let position = start; + + do { + code = body.charCodeAt(++position); + } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator + code > 0x001f || code === 0x0009)); + + return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position)); +} +/** + * Reads a number token from the source file, either a float + * or an int depending on whether a decimal point appears. + * + * Int: -?(0|[1-9][0-9]*) + * Float: -?(0|[1-9][0-9]*)(\.[0-9]+)?((E|e)(+|-)?[0-9]+)? + */ + + +function readNumber(source, start, firstCode, line, col, prev) { + const body = source.body; + let code = firstCode; + let position = start; + let isFloat = false; + + if (code === 45) { + // - + code = body.charCodeAt(++position); + } + + if (code === 48) { + // 0 + code = body.charCodeAt(++position); + + if (code >= 48 && code <= 57) { + throw syntaxError(source, position, `Invalid number, unexpected digit after 0: ${printCharCode(code)}.`); + } + } else { + position = readDigits(source, position, code); + code = body.charCodeAt(position); + } + + if (code === 46) { + // . + isFloat = true; + code = body.charCodeAt(++position); + position = readDigits(source, position, code); + code = body.charCodeAt(position); + } + + if (code === 69 || code === 101) { + // E e + isFloat = true; + code = body.charCodeAt(++position); + + if (code === 43 || code === 45) { + // + - + code = body.charCodeAt(++position); + } + + position = readDigits(source, position, code); + code = body.charCodeAt(position); + } // Numbers cannot be followed by . or NameStart + + + if (code === 46 || isNameStart(code)) { + throw syntaxError(source, position, `Invalid number, expected digit but got: ${printCharCode(code)}.`); + } + + return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position)); +} +/** + * Returns the new position in the source after reading digits. + */ + + +function readDigits(source, start, firstCode) { + const body = source.body; + let position = start; + let code = firstCode; + + if (code >= 48 && code <= 57) { + // 0 - 9 + do { + code = body.charCodeAt(++position); + } while (code >= 48 && code <= 57); // 0 - 9 + + + return position; + } + + throw syntaxError(source, position, `Invalid number, expected digit but got: ${printCharCode(code)}.`); +} +/** + * Reads a string token from the source file. + * + * "([^"\\\u000A\u000D]|(\\(u[0-9a-fA-F]{4}|["\\/bfnrt])))*" + */ + + +function readString(source, start, line, col, prev) { + const body = source.body; + let position = start + 1; + let chunkStart = position; + let code = 0; + let value = ''; + + while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator + code !== 0x000a && code !== 0x000d) { + // Closing Quote (") + if (code === 34) { + value += body.slice(chunkStart, position); + return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value); + } // SourceCharacter + + + if (code < 0x0020 && code !== 0x0009) { + throw syntaxError(source, position, `Invalid character within String: ${printCharCode(code)}.`); + } + + ++position; + + if (code === 92) { + // \ + value += body.slice(chunkStart, position - 1); + code = body.charCodeAt(position); + + switch (code) { + case 34: + value += '"'; + break; + + case 47: + value += '/'; + break; + + case 92: + value += '\\'; + break; + + case 98: + value += '\b'; + break; + + case 102: + value += '\f'; + break; + + case 110: + value += '\n'; + break; + + case 114: + value += '\r'; + break; + + case 116: + value += '\t'; + break; + + case 117: + { + // uXXXX + const charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4)); + + if (charCode < 0) { + const invalidSequence = body.slice(position + 1, position + 5); + throw syntaxError(source, position, `Invalid character escape sequence: \\u${invalidSequence}.`); + } + + value += String.fromCharCode(charCode); + position += 4; + break; + } + + default: + throw syntaxError(source, position, `Invalid character escape sequence: \\${String.fromCharCode(code)}.`); + } + + ++position; + chunkStart = position; + } + } + + throw syntaxError(source, position, 'Unterminated string.'); +} +/** + * Reads a block string token from the source file. + * + * """("?"?(\\"""|\\(?!=""")|[^"\\]))*""" + */ + + +function readBlockString(source, start, line, col, prev, lexer) { + const body = source.body; + let position = start + 3; + let chunkStart = position; + let code = 0; + let rawValue = ''; + + while (position < body.length && !isNaN(code = body.charCodeAt(position))) { + // Closing Triple-Quote (""") + if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { + rawValue += body.slice(chunkStart, position); + return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue)); + } // SourceCharacter + + + if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) { + throw syntaxError(source, position, `Invalid character within String: ${printCharCode(code)}.`); + } + + if (code === 10) { + // new line + ++position; + ++lexer.line; + lexer.lineStart = position; + } else if (code === 13) { + // carriage return + if (body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; + } + + ++lexer.line; + lexer.lineStart = position; + } else if ( // Escape Triple-Quote (\""") + code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) { + rawValue += body.slice(chunkStart, position) + '"""'; + position += 4; + chunkStart = position; + } else { + ++position; + } + } + + throw syntaxError(source, position, 'Unterminated string.'); +} +/** + * Converts four hexadecimal chars to the integer that the + * string represents. For example, uniCharCode('0','0','0','f') + * will return 15, and uniCharCode('0','0','f','f') returns 255. + * + * Returns a negative number on error, if a char was invalid. + * + * This is implemented by noting that char2hex() returns -1 on error, + * which means the result of ORing the char2hex() will also be negative. + */ + + +function uniCharCode(a, b, c, d) { + return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d); +} +/** + * Converts a hex character to its integer value. + * '0' becomes 0, '9' becomes 9 + * 'A' becomes 10, 'F' becomes 15 + * 'a' becomes 10, 'f' becomes 15 + * + * Returns -1 on error. + */ + + +function char2hex(a) { + return a >= 48 && a <= 57 ? a - 48 // 0-9 + : a >= 65 && a <= 70 ? a - 55 // A-F + : a >= 97 && a <= 102 ? a - 87 // a-f + : -1; +} +/** + * Reads an alphanumeric + underscore name from the source. + * + * [_A-Za-z][_0-9A-Za-z]* + */ + + +function readName(source, start, line, col, prev) { + const body = source.body; + const bodyLength = body.length; + let position = start + 1; + let code = 0; + + while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _ + code >= 48 && code <= 57 || // 0-9 + code >= 65 && code <= 90 || // A-Z + code >= 97 && code <= 122) // a-z + ) { + ++position; + } + + return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position)); +} // _ A-Z a-z + + +function isNameStart(code) { + return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1b50737842a71ff8d90fada6cb46bf96a4012ed9.ts b/bundler/tests/.cache/deno/1b50737842a71ff8d90fada6cb46bf96a4012ed9.ts new file mode 100644 index 00000000000..e52e9833e44 --- /dev/null +++ b/bundler/tests/.cache/deno/1b50737842a71ff8d90fada6cb46bf96a4012ed9.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_curry3.js + + +import _curry1 from './_curry1.js'; +import _curry2 from './_curry2.js'; +import _isPlaceholder from './_isPlaceholder.js'; + + +/** + * Optimized internal three-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +export default function _curry3(fn) { + return function f3(a, b, c) { + switch (arguments.length) { + case 0: + return f3; + case 1: + return _isPlaceholder(a) + ? f3 + : _curry2(function(_b, _c) { return fn(a, _b, _c); }); + case 2: + return _isPlaceholder(a) && _isPlaceholder(b) + ? f3 + : _isPlaceholder(a) + ? _curry2(function(_a, _c) { return fn(_a, b, _c); }) + : _isPlaceholder(b) + ? _curry2(function(_b, _c) { return fn(a, _b, _c); }) + : _curry1(function(_c) { return fn(a, b, _c); }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) + ? f3 + : _isPlaceholder(a) && _isPlaceholder(b) + ? _curry2(function(_a, _b) { return fn(_a, _b, c); }) + : _isPlaceholder(a) && _isPlaceholder(c) + ? _curry2(function(_a, _c) { return fn(_a, b, _c); }) + : _isPlaceholder(b) && _isPlaceholder(c) + ? _curry2(function(_b, _c) { return fn(a, _b, _c); }) + : _isPlaceholder(a) + ? _curry1(function(_a) { return fn(_a, b, c); }) + : _isPlaceholder(b) + ? _curry1(function(_b) { return fn(a, _b, c); }) + : _isPlaceholder(c) + ? _curry1(function(_c) { return fn(a, b, _c); }) + : fn(a, b, c); + } + }; +} diff --git a/bundler/tests/.cache/deno/1b59e61107b04ef461b193fc873a00e993e2157e.ts b/bundler/tests/.cache/deno/1b59e61107b04ef461b193fc873a00e993e2157e.ts new file mode 100644 index 00000000000..ea4284794b9 --- /dev/null +++ b/bundler/tests/.cache/deno/1b59e61107b04ef461b193fc873a00e993e2157e.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isPort.ts + + +// @ts-ignore allowing typedoc to build +import { isInt } from './isInt.ts'; + +export const isPort = (str: string) => { + return isInt(str, { min: 0, max: 65535 }); +}; diff --git a/bundler/tests/.cache/deno/1bb092a8985beb3c101d0c8cebff7023aafe5218.ts b/bundler/tests/.cache/deno/1bb092a8985beb3c101d0c8cebff7023aafe5218.ts new file mode 100644 index 00000000000..f90c623a30d --- /dev/null +++ b/bundler/tests/.cache/deno/1bb092a8985beb3c101d0c8cebff7023aafe5218.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isLength.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type LengthOptions = { + min?: number; + max?: number; +}; + +export const isLength = (str: string, options?: LengthOptions) => { + assertString(str); + + const min = options?.min || 0; + const max = options?.max; + + const surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || []; + const len = str.length - surrogatePairs.length; + return len >= min && (typeof max === 'undefined' || len <= max); +}; diff --git a/bundler/tests/.cache/deno/1bd0ce95901d7d41f02892f345773c2c80aee914.ts b/bundler/tests/.cache/deno/1bd0ce95901d7d41f02892f345773c2c80aee914.ts new file mode 100644 index 00000000000..58dbf21ce54 --- /dev/null +++ b/bundler/tests/.cache/deno/1bd0ce95901d7d41f02892f345773c2c80aee914.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std/hash/_wasm/hash.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import init, { + create_hash as createHash, + DenoHash, + digest_hash as digestHash, + source, + update_hash as updateHash, +} from "./wasm.js"; + +import * as hex from "../../encoding/hex.ts"; +import * as base64 from "../../encoding/base64.ts"; +import type { Hasher, Message, OutputFormat } from "../hasher.ts"; + +await init(source); + +const TYPE_ERROR_MSG = "hash: `data` is invalid type"; + +export class Hash implements Hasher { + #hash: DenoHash; + #digested: boolean; + + constructor(algorithm: string) { + this.#hash = createHash(algorithm); + this.#digested = false; + } + + /** + * Update internal state + * @param data data to update + */ + update(data: Message): this { + let msg: Uint8Array; + + if (typeof data === "string") { + msg = new TextEncoder().encode(data as string); + } else if (typeof data === "object") { + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + msg = new Uint8Array(data); + } else { + throw new Error(TYPE_ERROR_MSG); + } + } else { + throw new Error(TYPE_ERROR_MSG); + } + + updateHash(this.#hash, msg); + + return this; + } + + /** Returns final hash */ + digest(): ArrayBuffer { + if (this.#digested) throw new Error("hash: already digested"); + + this.#digested = true; + return digestHash(this.#hash); + } + + /** + * Returns hash as a string of given format + * @param format format of output string (hex or base64). Default is hex + */ + toString(format: OutputFormat = "hex"): string { + const finalized = new Uint8Array(this.digest()); + + switch (format) { + case "hex": + return hex.encodeToString(finalized); + case "base64": + return base64.encode(finalized); + default: + throw new Error("hash: invalid format"); + } + } +} diff --git a/bundler/tests/.cache/deno/1c2d932450b79c54e05590e6e6a3dce706d77229.ts b/bundler/tests/.cache/deno/1c2d932450b79c54e05590e6e6a3dce706d77229.ts new file mode 100644 index 00000000000..76980b62ceb --- /dev/null +++ b/bundler/tests/.cache/deno/1c2d932450b79c54e05590e6e6a3dce706d77229.ts @@ -0,0 +1,125 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/inspect.js + + +import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol.js'; +const MAX_ARRAY_LENGTH = 10; +const MAX_RECURSIVE_DEPTH = 2; +/** + * Used to print values in error messages. + */ + +export default function inspect(value) { + return formatValue(value, []); +} + +function formatValue(value, seenValues) { + switch (typeof value) { + case 'string': + return JSON.stringify(value); + + case 'function': + return value.name ? `[function ${value.name}]` : '[function]'; + + case 'object': + if (value === null) { + return 'null'; + } + + return formatObjectValue(value, seenValues); + + default: + return String(value); + } +} + +function formatObjectValue(value, previouslySeenValues) { + if (previouslySeenValues.indexOf(value) !== -1) { + return '[Circular]'; + } + + const seenValues = [...previouslySeenValues, value]; + const customInspectFn = getCustomFn(value); + + if (customInspectFn !== undefined) { + // $FlowFixMe(>=0.90.0) + const customValue = customInspectFn.call(value); // check for infinite recursion + + if (customValue !== value) { + return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues); + } + } else if (Array.isArray(value)) { + return formatArray(value, seenValues); + } + + return formatObject(value, seenValues); +} + +function formatObject(object, seenValues) { + const keys = Object.keys(object); + + if (keys.length === 0) { + return '{}'; + } + + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return '[' + getObjectTag(object) + ']'; + } + + const properties = keys.map(key => { + const value = formatValue(object[key], seenValues); + return key + ': ' + value; + }); + return '{ ' + properties.join(', ') + ' }'; +} + +function formatArray(array, seenValues) { + if (array.length === 0) { + return '[]'; + } + + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return '[Array]'; + } + + const len = Math.min(MAX_ARRAY_LENGTH, array.length); + const remaining = array.length - len; + const items = []; + + for (let i = 0; i < len; ++i) { + items.push(formatValue(array[i], seenValues)); + } + + if (remaining === 1) { + items.push('... 1 more item'); + } else if (remaining > 1) { + items.push(`... ${remaining} more items`); + } + + return '[' + items.join(', ') + ']'; +} + +function getCustomFn(object) { + const customInspectFn = object[String(nodejsCustomInspectSymbol)]; + + if (typeof customInspectFn === 'function') { + return customInspectFn; + } + + if (typeof object.inspect === 'function') { + return object.inspect; + } +} + +function getObjectTag(object) { + const tag = Object.prototype.toString.call(object).replace(/^\[object /, '').replace(/]$/, ''); + + if (tag === 'Object' && typeof object.constructor === 'function') { + const name = object.constructor.name; + + if (typeof name === 'string' && name !== '') { + return name; + } + } + + return tag; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1cc7ac0e1510d58095d23a75ae64e342c4d15559.ts b/bundler/tests/.cache/deno/1cc7ac0e1510d58095d23a75ae64e342c4d15559.ts new file mode 100644 index 00000000000..51147f5f93f --- /dev/null +++ b/bundler/tests/.cache/deno/1cc7ac0e1510d58095d23a75ae64e342c4d15559.ts @@ -0,0 +1,1003 @@ +// Loaded from https://deno.land/std@0.81.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/1d264b326a56d2da3f4916061b2d7ba8fd120cdd.ts b/bundler/tests/.cache/deno/1d264b326a56d2da3f4916061b2d7ba8fd120cdd.ts new file mode 100644 index 00000000000..6c7454d499d --- /dev/null +++ b/bundler/tests/.cache/deno/1d264b326a56d2da3f4916061b2d7ba8fd120cdd.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_of.js + + +export default function _of(x) { return [x]; } diff --git a/bundler/tests/.cache/deno/1d2e15181dc539bfe8e9784b45df9eb58aa1bd10.ts b/bundler/tests/.cache/deno/1d2e15181dc539bfe8e9784b45df9eb58aa1bd10.ts new file mode 100644 index 00000000000..12de9655d39 --- /dev/null +++ b/bundler/tests/.cache/deno/1d2e15181dc539bfe8e9784b45df9eb58aa1bd10.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/tap.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xtap from './internal/_xtap.js'; + + +/** + * Runs the given function with the supplied object, then returns the object. + * + * Acts as a transducer if a transformer is given as second parameter. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> *) -> a -> a + * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away. + * @param {*} x + * @return {*} `x`. + * @example + * + * const sayX = x => console.log('x is ' + x); + * R.tap(sayX, 100); //=> 100 + * // logs 'x is 100' + * @symb R.tap(f, a) = a + */ +var tap = _curry2(_dispatchable([], _xtap, function tap(fn, x) { + fn(x); + return x; +})); +export default tap; diff --git a/bundler/tests/.cache/deno/1d7d1c1e1a2c07b345548f79d2e593adb3054812.ts b/bundler/tests/.cache/deno/1d7d1c1e1a2c07b345548f79d2e593adb3054812.ts new file mode 100644 index 00000000000..34e3fd8b7bc --- /dev/null +++ b/bundler/tests/.cache/deno/1d7d1c1e1a2c07b345548f79d2e593adb3054812.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/isNil.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Checks if the input value is `null` or `undefined`. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Type + * @sig * -> Boolean + * @param {*} x The value to test. + * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`. + * @example + * + * R.isNil(null); //=> true + * R.isNil(undefined); //=> true + * R.isNil(0); //=> false + * R.isNil([]); //=> false + */ +var isNil = _curry1(function isNil(x) { return x == null; }); +export default isNil; diff --git a/bundler/tests/.cache/deno/1decd533a4b3cddede80ab6124372e87a6e9ac83.ts b/bundler/tests/.cache/deno/1decd533a4b3cddede80ab6124372e87a6e9ac83.ts new file mode 100644 index 00000000000..3d0792a0b14 --- /dev/null +++ b/bundler/tests/.cache/deno/1decd533a4b3cddede80ab6124372e87a6e9ac83.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/all.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xall from './internal/_xall.js'; + + +/** + * Returns `true` if all elements of the list match the predicate, `false` if + * there are any that don't. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by every element, `false` + * otherwise. + * @see R.any, R.none, R.transduce + * @example + * + * const equals3 = R.equals(3); + * R.all(equals3)([3, 3, 3, 3]); //=> true + * R.all(equals3)([3, 3, 1, 3]); //=> false + */ +var all = _curry2(_dispatchable(['all'], _xall, function all(fn, list) { + var idx = 0; + while (idx < list.length) { + if (!fn(list[idx])) { + return false; + } + idx += 1; + } + return true; +})); +export default all; diff --git a/bundler/tests/.cache/deno/1dfd4a9b35173d9489abdc782f55d0d4b8a431b8.ts b/bundler/tests/.cache/deno/1dfd4a9b35173d9489abdc782f55d0d4b8a431b8.ts new file mode 100644 index 00000000000..1b9617e39e1 --- /dev/null +++ b/bundler/tests/.cache/deno/1dfd4a9b35173d9489abdc782f55d0d4b8a431b8.ts @@ -0,0 +1,61 @@ +// Loaded from https://deno.land/std/encoding/base64.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +// deno-fmt-ignore +const base64abc = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", + "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", + "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", + "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", "+", "/"]; + +/** + * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 + * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation + * @param data + */ +export function encode(data: ArrayBuffer | string): string { + const uint8 = typeof data === "string" + ? new TextEncoder().encode(data) + : data instanceof Uint8Array + ? data + : new Uint8Array(data); + let result = "", + i; + const l = uint8.length; + for (i = 2; i < l; i += 3) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + // 1 octet yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + // 2 octets yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} + +/** + * Decodes a given RFC4648 base64 encoded string + * @param b64 + */ +export function decode(b64: string): Uint8Array { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for (let i = 0; i < size; i++) { + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} diff --git a/bundler/tests/.cache/deno/1e425603b458319a84c69cb564936fca745ddd13.ts b/bundler/tests/.cache/deno/1e425603b458319a84c69cb564936fca745ddd13.ts new file mode 100644 index 00000000000..a2d86b581eb --- /dev/null +++ b/bundler/tests/.cache/deno/1e425603b458319a84c69cb564936fca745ddd13.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/zstream.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +export function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + this.next_in = 0; + /* number of bytes available at input */ + this.avail_in = 0; + /* total number of input bytes read so far */ + this.total_in = 0; + /* next output byte should be put there */ + this.output = null; // JS specific, because we have no pointers + this.next_out = 0; + /* remaining free space at output */ + this.avail_out = 0; + /* total number of bytes output so far */ + this.total_out = 0; + /* last error message, NULL if no error */ + this.msg = ''/*Z_NULL*/; + /* not visible by applications */ + this.state = null; + /* best guess about the data type: binary or text */ + this.data_type = 2/*Z_UNKNOWN*/; + /* adler32 value of the uncompressed data */ + this.adler = 0; +} diff --git a/bundler/tests/.cache/deno/1e5f425f88f8d6a6fe07dd802d9c56d0a464ab10.ts b/bundler/tests/.cache/deno/1e5f425f88f8d6a6fe07dd802d9c56d0a464ab10.ts new file mode 100644 index 00000000000..8d60a21634f --- /dev/null +++ b/bundler/tests/.cache/deno/1e5f425f88f8d6a6fe07dd802d9c56d0a464ab10.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dropRepeats.js + + +import _curry1 from './internal/_curry1.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xdropRepeatsWith from './internal/_xdropRepeatsWith.js'; +import dropRepeatsWith from './dropRepeatsWith.js'; +import equals from './equals.js'; + + +/** + * Returns a new list without any consecutively repeating elements. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2] + */ +var dropRepeats = _curry1( + _dispatchable([], _xdropRepeatsWith(equals), dropRepeatsWith(equals)) +); +export default dropRepeats; diff --git a/bundler/tests/.cache/deno/1e6adcffc2ad6931824a313d09e20e4b1db0c077.ts b/bundler/tests/.cache/deno/1e6adcffc2ad6931824a313d09e20e4b1db0c077.ts new file mode 100644 index 00000000000..a795efdebba --- /dev/null +++ b/bundler/tests/.cache/deno/1e6adcffc2ad6931824a313d09e20e4b1db0c077.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std@0.81.0/datetime/tokenizer.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export type Token = { + type: string; + value: string | number; + index: number; + [key: string]: unknown; +}; + +export interface ReceiverResult { + [name: string]: string | number | unknown; +} +export type CallbackResult = { + type: string; + value: string | number; + [key: string]: unknown; +}; +type CallbackFunction = (value: unknown) => CallbackResult; + +export type TestResult = { value: unknown; length: number } | undefined; +export type TestFunction = ( + string: string, +) => TestResult | undefined; + +export interface Rule { + test: TestFunction; + fn: CallbackFunction; +} + +export class Tokenizer { + rules: Rule[]; + + constructor(rules: Rule[] = []) { + this.rules = rules; + } + + addRule(test: TestFunction, fn: CallbackFunction): Tokenizer { + this.rules.push({ test, fn }); + return this; + } + + tokenize( + string: string, + receiver = (token: Token): ReceiverResult => token, + ): ReceiverResult[] { + function* generator(rules: Rule[]): IterableIterator { + let index = 0; + for (const rule of rules) { + const result = rule.test(string); + if (result) { + const { value, length } = result; + index += length; + string = string.slice(length); + const token = { ...rule.fn(value), index }; + yield receiver(token); + yield* generator(rules); + } + } + } + const tokenGenerator = generator(this.rules); + + const tokens: ReceiverResult[] = []; + + for (const token of tokenGenerator) { + tokens.push(token); + } + + if (string.length) { + throw new Error( + `parser error: string not fully parsed! ${string.slice(0, 25)}`, + ); + } + + return tokens; + } +} diff --git a/bundler/tests/.cache/deno/1e70110a27b77ce4047986f5401326ad4ef7b5c8.ts b/bundler/tests/.cache/deno/1e70110a27b77ce4047986f5401326ad4ef7b5c8.ts new file mode 100644 index 00000000000..41e1c0a9c85 --- /dev/null +++ b/bundler/tests/.cache/deno/1e70110a27b77ce4047986f5401326ad4ef7b5c8.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/takeLast.js + + +import _curry2 from './internal/_curry2.js'; +import drop from './drop.js'; + + +/** + * Returns a new list containing the last `n` elements of the given list. + * If `n > list.length`, returns a list of `list.length` elements. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements to return. + * @param {Array} xs The collection to consider. + * @return {Array} + * @see R.dropLast + * @example + * + * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(3, 'ramda'); //=> 'mda' + */ +var takeLast = _curry2(function takeLast(n, xs) { + return drop(n >= 0 ? xs.length - n : 0, xs); +}); +export default takeLast; diff --git a/bundler/tests/.cache/deno/1ecf7bba1624502a5f3159b7bd7c948afcfa6f8d.ts b/bundler/tests/.cache/deno/1ecf7bba1624502a5f3159b7bd7c948afcfa6f8d.ts new file mode 100644 index 00000000000..f05bcfb1728 --- /dev/null +++ b/bundler/tests/.cache/deno/1ecf7bba1624502a5f3159b7bd7c948afcfa6f8d.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/uniq.js + + +import identity from './identity.js'; +import uniqBy from './uniqBy.js'; + + +/** + * Returns a new list containing only one copy of each element in the original + * list. [`R.equals`](#equals) is used to determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniq([1, 1, 2, 1]); //=> [1, 2] + * R.uniq([1, '1']); //=> [1, '1'] + * R.uniq([[42], [42]]); //=> [[42]] + */ +var uniq = uniqBy(identity); +export default uniq; diff --git a/bundler/tests/.cache/deno/1ee173bc90e59030878ab7e8704cbe8bbedb2622.ts b/bundler/tests/.cache/deno/1ee173bc90e59030878ab7e8704cbe8bbedb2622.ts new file mode 100644 index 00000000000..9864ddd2a79 --- /dev/null +++ b/bundler/tests/.cache/deno/1ee173bc90e59030878ab7e8704cbe8bbedb2622.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/findLast.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xfindLast from './internal/_xfindLast.js'; + + +/** + * Returns the last element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1} + * R.findLast(R.propEq('a', 4))(xs); //=> undefined + */ +var findLast = _curry2(_dispatchable([], _xfindLast, function findLast(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return list[idx]; + } + idx -= 1; + } +})); +export default findLast; diff --git a/bundler/tests/.cache/deno/1f0dc9b13a24de08f6bc89d190c17b85afb3c770.ts b/bundler/tests/.cache/deno/1f0dc9b13a24de08f6bc89d190c17b85afb3c770.ts new file mode 100644 index 00000000000..a753fe066cb --- /dev/null +++ b/bundler/tests/.cache/deno/1f0dc9b13a24de08f6bc89d190c17b85afb3c770.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBefore.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { toDate } from '../helpers/toDate.ts'; + +export const isBefore = (str: string, date = String(new Date())) => { + assertString(str); + + const comparison = toDate(date); + const original = toDate(str); + + return !!(original && comparison && original < comparison); +}; diff --git a/bundler/tests/.cache/deno/1f19c7f6c7f920a1d641403a5a5037fbdc2fe68f.ts b/bundler/tests/.cache/deno/1f19c7f6c7f920a1d641403a5a5037fbdc2fe68f.ts new file mode 100644 index 00000000000..990048da3db --- /dev/null +++ b/bundler/tests/.cache/deno/1f19c7f6c7f920a1d641403a5a5037fbdc2fe68f.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.85.0/hash/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { Hash } from "./_wasm/hash.ts"; +import type { Hasher } from "./hasher.ts"; + +export type { Hasher } from "./hasher.ts"; +export type SupportedAlgorithm = + | "md2" + | "md4" + | "md5" + | "ripemd160" + | "ripemd320" + | "sha1" + | "sha224" + | "sha256" + | "sha384" + | "sha512" + | "sha3-224" + | "sha3-256" + | "sha3-384" + | "sha3-512" + | "keccak224" + | "keccak256" + | "keccak384" + | "keccak512"; + +/** + * Creates a new `Hash` instance. + * + * @param algorithm name of hash algorithm to use + */ +export function createHash(algorithm: SupportedAlgorithm): Hasher { + return new Hash(algorithm as string); +} diff --git a/bundler/tests/.cache/deno/1f429c4cfe3b434f4499e64af941c5f3500798ba.ts b/bundler/tests/.cache/deno/1f429c4cfe3b434f4499e64af941c5f3500798ba.ts new file mode 100644 index 00000000000..1842ae72557 --- /dev/null +++ b/bundler/tests/.cache/deno/1f429c4cfe3b434f4499e64af941c5f3500798ba.ts @@ -0,0 +1,198 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/ValidationContext.js + + +import { Kind } from '../language/kinds.js'; +import { visit } from '../language/visitor.js'; +import { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.js'; + +/** + * An instance of this class is passed as the "this" context to all validators, + * allowing access to commonly useful contextual information from within a + * validation rule. + */ +export class ASTValidationContext { + constructor(ast, onError) { + this._ast = ast; + this._fragments = undefined; + this._fragmentSpreads = new Map(); + this._recursivelyReferencedFragments = new Map(); + this._onError = onError; + } + + reportError(error) { + this._onError(error); + } + + getDocument() { + return this._ast; + } + + getFragment(name) { + let fragments = this._fragments; + + if (!fragments) { + this._fragments = fragments = this.getDocument().definitions.reduce((frags, statement) => { + if (statement.kind === Kind.FRAGMENT_DEFINITION) { + frags[statement.name.value] = statement; + } + + return frags; + }, Object.create(null)); + } + + return fragments[name]; + } + + getFragmentSpreads(node) { + let spreads = this._fragmentSpreads.get(node); + + if (!spreads) { + spreads = []; + const setsToVisit = [node]; + + while (setsToVisit.length !== 0) { + const set = setsToVisit.pop(); + + for (const selection of set.selections) { + if (selection.kind === Kind.FRAGMENT_SPREAD) { + spreads.push(selection); + } else if (selection.selectionSet) { + setsToVisit.push(selection.selectionSet); + } + } + } + + this._fragmentSpreads.set(node, spreads); + } + + return spreads; + } + + getRecursivelyReferencedFragments(operation) { + let fragments = this._recursivelyReferencedFragments.get(operation); + + if (!fragments) { + fragments = []; + const collectedNames = Object.create(null); + const nodesToVisit = [operation.selectionSet]; + + while (nodesToVisit.length !== 0) { + const node = nodesToVisit.pop(); + + for (const spread of this.getFragmentSpreads(node)) { + const fragName = spread.name.value; + + if (collectedNames[fragName] !== true) { + collectedNames[fragName] = true; + const fragment = this.getFragment(fragName); + + if (fragment) { + fragments.push(fragment); + nodesToVisit.push(fragment.selectionSet); + } + } + } + } + + this._recursivelyReferencedFragments.set(operation, fragments); + } + + return fragments; + } + +} +export class SDLValidationContext extends ASTValidationContext { + constructor(ast, schema, onError) { + super(ast, onError); + this._schema = schema; + } + + getSchema() { + return this._schema; + } + +} +export class ValidationContext extends ASTValidationContext { + constructor(schema, ast, typeInfo, onError) { + super(ast, onError); + this._schema = schema; + this._typeInfo = typeInfo; + this._variableUsages = new Map(); + this._recursiveVariableUsages = new Map(); + } + + getSchema() { + return this._schema; + } + + getVariableUsages(node) { + let usages = this._variableUsages.get(node); + + if (!usages) { + const newUsages = []; + const typeInfo = new TypeInfo(this._schema); + visit(node, visitWithTypeInfo(typeInfo, { + VariableDefinition: () => false, + + Variable(variable) { + newUsages.push({ + node: variable, + type: typeInfo.getInputType(), + defaultValue: typeInfo.getDefaultValue() + }); + } + + })); + usages = newUsages; + + this._variableUsages.set(node, usages); + } + + return usages; + } + + getRecursiveVariableUsages(operation) { + let usages = this._recursiveVariableUsages.get(operation); + + if (!usages) { + usages = this.getVariableUsages(operation); + + for (const frag of this.getRecursivelyReferencedFragments(operation)) { + usages = usages.concat(this.getVariableUsages(frag)); + } + + this._recursiveVariableUsages.set(operation, usages); + } + + return usages; + } + + getType() { + return this._typeInfo.getType(); + } + + getParentType() { + return this._typeInfo.getParentType(); + } + + getInputType() { + return this._typeInfo.getInputType(); + } + + getParentInputType() { + return this._typeInfo.getParentInputType(); + } + + getFieldDef() { + return this._typeInfo.getFieldDef(); + } + + getDirective() { + return this._typeInfo.getDirective(); + } + + getArgument() { + return this._typeInfo.getArgument(); + } + +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1f595005ac31bf95953bd02fb3f806bc8ee829ac.ts b/bundler/tests/.cache/deno/1f595005ac31bf95953bd02fb3f806bc8ee829ac.ts new file mode 100644 index 00000000000..4fafa80c992 --- /dev/null +++ b/bundler/tests/.cache/deno/1f595005ac31bf95953bd02fb3f806bc8ee829ac.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/std@0.75.0/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +const hextable = new TextEncoder().encode("0123456789abcdef"); + +/** + * ErrInvalidByte takes an invalid byte and returns an Error. + * @param byte + */ +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])), + ); +} + +/** ErrLength returns an error about odd string length. */ +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value. +function fromHexChar(byte: number): number { + // '0' <= byte && byte <= '9' + if (48 <= byte && byte <= 57) return byte - 48; + // 'a' <= byte && byte <= 'f' + if (97 <= byte && byte <= 102) return byte - 97 + 10; + // 'A' <= byte && byte <= 'F' + if (65 <= byte && byte <= 70) return byte - 65 + 10; + + throw errInvalidByte(byte); +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes. + * @param src + */ +export function encode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(encodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const v = src[i]; + dst[i * 2] = hextable[v >> 4]; + dst[i * 2 + 1] = hextable[v & 0x0f]; + } + return dst; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + return new TextDecoder().decode(encode(src)); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * If the input is malformed an error will be thrown + * the error. + * @param src + */ +export function decode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(decodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const a = fromHexChar(src[i * 2]); + const b = fromHexChar(src[i * 2 + 1]); + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + fromHexChar(src[dst.length * 2]); + throw errLength(); + } + + return dst; +} + +/** + * DecodedLen returns the length of decoding `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return x >>> 1; +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throw an error. + * @param s the `string` to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + return decode(new TextEncoder().encode(s)); +} diff --git a/bundler/tests/.cache/deno/1f5f2fee52bd827e920929dd5763097080e756b4.ts b/bundler/tests/.cache/deno/1f5f2fee52bd827e920929dd5763097080e756b4.ts new file mode 100644 index 00000000000..b4f9bb42b56 --- /dev/null +++ b/bundler/tests/.cache/deno/1f5f2fee52bd827e920929dd5763097080e756b4.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/index.js + + +export { Source } from './source.js'; +export { getLocation } from './location.js'; +export { printLocation, printSourceLocation } from './printLocation.js'; +export { Kind } from './kinds.js'; +export { TokenKind } from './tokenKind.js'; +export { Lexer } from './lexer.js'; +export { parse, parseValue, parseType } from './parser.js'; +export { print } from './printer.js'; +export { visit, visitInParallel, getVisitFn, BREAK } from './visitor.js'; +export { isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './predicates.js'; +export { DirectiveLocation } from './directiveLocation.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/1f87aec459f140142a6c8ce4197c36daf9d959d5.ts b/bundler/tests/.cache/deno/1f87aec459f140142a6c8ce4197c36daf9d959d5.ts new file mode 100644 index 00000000000..7f31eda19ec --- /dev/null +++ b/bundler/tests/.cache/deno/1f87aec459f140142a6c8ce4197c36daf9d959d5.ts @@ -0,0 +1,159 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIBAN.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * List of country codes with + * corresponding IBAN regular expression + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + */ +/** + * @ignore + */ +const ibanRegexThroughCountryCode = { + AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/, + AE: /^(AE[0-9]{2})\d{3}\d{16}$/, + AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/, + AT: /^(AT[0-9]{2})\d{16}$/, + AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/, + BA: /^(BA[0-9]{2})\d{16}$/, + BE: /^(BE[0-9]{2})\d{12}$/, + BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/, + BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/, + BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/, + BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/, + CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/, + CR: /^(CR[0-9]{2})\d{18}$/, + CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/, + CZ: /^(CZ[0-9]{2})\d{20}$/, + DE: /^(DE[0-9]{2})\d{18}$/, + DK: /^(DK[0-9]{2})\d{14}$/, + DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/, + EE: /^(EE[0-9]{2})\d{16}$/, + EG: /^(EG[0-9]{2})\d{25}$/, + ES: /^(ES[0-9]{2})\d{20}$/, + FI: /^(FI[0-9]{2})\d{14}$/, + FO: /^(FO[0-9]{2})\d{14}$/, + FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/, + GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/, + GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/, + GL: /^(GL[0-9]{2})\d{14}$/, + GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/, + GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/, + HR: /^(HR[0-9]{2})\d{17}$/, + HU: /^(HU[0-9]{2})\d{24}$/, + IE: /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/, + IL: /^(IL[0-9]{2})\d{19}$/, + IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/, + IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/, + IS: /^(IS[0-9]{2})\d{22}$/, + IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/, + KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/, + KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/, + LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/, + LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/, + LT: /^(LT[0-9]{2})\d{16}$/, + LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/, + MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/, + ME: /^(ME[0-9]{2})\d{18}$/, + MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/, + MR: /^(MR[0-9]{2})\d{23}$/, + MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/, + MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/, + NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/, + NO: /^(NO[0-9]{2})\d{11}$/, + PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/, + PL: /^(PL[0-9]{2})\d{24}$/, + PS: /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/, + PT: /^(PT[0-9]{2})\d{21}$/, + QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/, + RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/, + RS: /^(RS[0-9]{2})\d{18}$/, + SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/, + SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/, + SE: /^(SE[0-9]{2})\d{20}$/, + SI: /^(SI[0-9]{2})\d{15}$/, + SK: /^(SK[0-9]{2})\d{20}$/, + SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/, + TL: /^(TL[0-9]{2})\d{19}$/, + TN: /^(TN[0-9]{2})\d{20}$/, + TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/, + UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/, + VA: /^(VA[0-9]{2})\d{18}$/, + VG: /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/, + XK: /^(XK[0-9]{2})\d{16}$/, +}; + +/** + * Check whether string has correct universal IBAN format + * The IBAN consists of up to 34 alphanumeric characters, as follows: + * Country Code using ISO 3166-1 alpha-2, two letters + * check digits, two digits and + * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters. + * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z] + * + * @param {string} str - string under validation + * @return {boolean} + */ +/** + * @ignore + */ +const hasValidIbanFormat = (str: string) => { + // Strip white spaces and hyphens + const strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase(); + const isoCountryCode = strippedStr.slice(0, 2).toUpperCase(); + + return ( + isoCountryCode in ibanRegexThroughCountryCode && + (ibanRegexThroughCountryCode as any)[isoCountryCode].test(strippedStr) + ); +}; + +/** + * Check whether string has valid IBAN Checksum + * by performing basic mod-97 operation and + * the remainder should equal 1 + * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string + * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35 + * -- Interpret the string as a decimal integer and + * -- compute the remainder on division by 97 (mod 97) + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + * + * @param {string} str + * @return {boolean} + */ +/** + * @ignore + */ +const hasValidIbanChecksum = (str: string) => { + const strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic + const rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4); + const alphaCapsReplacedWithDigits = rearranged.replace( + /[A-Z]/g, + // @ts-ignore allowing typedoc to build + (char) => char.charCodeAt(0) - 55 + ); + + // @ts-ignore allowing typedoc to build + const remainder = alphaCapsReplacedWithDigits + .match(/\d{1,7}/g) + // @ts-ignore allowing typedoc to build + .reduce((acc, value) => Number(acc + value) % 97, ''); + + // @ts-ignore allowing typedoc to build + return remainder === 1; +}; + +export const isIBAN = (str: string) => { + assertString(str); + + return hasValidIbanFormat(str) && hasValidIbanChecksum(str); +}; diff --git a/bundler/tests/.cache/deno/1fb57519bb17c899ccede64820e37e4a757717ed.ts b/bundler/tests/.cache/deno/1fb57519bb17c899ccede64820e37e4a757717ed.ts new file mode 100644 index 00000000000..b45ea40bd7a --- /dev/null +++ b/bundler/tests/.cache/deno/1fb57519bb17c899ccede64820e37e4a757717ed.ts @@ -0,0 +1,899 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/dumper/dumper.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "../error.ts"; +import type { RepresentFn, StyleVariant, Type } from "../type.ts"; +import * as common from "../utils.ts"; +import { DumperState, DumperStateOptions } from "./dumper_state.ts"; + +type Any = common.Any; +type ArrayObject = common.ArrayObject; + +const _toString = Object.prototype.toString; +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +const CHAR_TAB = 0x09; /* Tab */ +const CHAR_LINE_FEED = 0x0a; /* LF */ +const CHAR_SPACE = 0x20; /* Space */ +const CHAR_EXCLAMATION = 0x21; /* ! */ +const CHAR_DOUBLE_QUOTE = 0x22; /* " */ +const CHAR_SHARP = 0x23; /* # */ +const CHAR_PERCENT = 0x25; /* % */ +const CHAR_AMPERSAND = 0x26; /* & */ +const CHAR_SINGLE_QUOTE = 0x27; /* ' */ +const CHAR_ASTERISK = 0x2a; /* * */ +const CHAR_COMMA = 0x2c; /* , */ +const CHAR_MINUS = 0x2d; /* - */ +const CHAR_COLON = 0x3a; /* : */ +const CHAR_GREATER_THAN = 0x3e; /* > */ +const CHAR_QUESTION = 0x3f; /* ? */ +const CHAR_COMMERCIAL_AT = 0x40; /* @ */ +const CHAR_LEFT_SQUARE_BRACKET = 0x5b; /* [ */ +const CHAR_RIGHT_SQUARE_BRACKET = 0x5d; /* ] */ +const CHAR_GRAVE_ACCENT = 0x60; /* ` */ +const CHAR_LEFT_CURLY_BRACKET = 0x7b; /* { */ +const CHAR_VERTICAL_LINE = 0x7c; /* | */ +const CHAR_RIGHT_CURLY_BRACKET = 0x7d; /* } */ + +const ESCAPE_SEQUENCES: { [char: number]: string } = {}; + +ESCAPE_SEQUENCES[0x00] = "\\0"; +ESCAPE_SEQUENCES[0x07] = "\\a"; +ESCAPE_SEQUENCES[0x08] = "\\b"; +ESCAPE_SEQUENCES[0x09] = "\\t"; +ESCAPE_SEQUENCES[0x0a] = "\\n"; +ESCAPE_SEQUENCES[0x0b] = "\\v"; +ESCAPE_SEQUENCES[0x0c] = "\\f"; +ESCAPE_SEQUENCES[0x0d] = "\\r"; +ESCAPE_SEQUENCES[0x1b] = "\\e"; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5c] = "\\\\"; +ESCAPE_SEQUENCES[0x85] = "\\N"; +ESCAPE_SEQUENCES[0xa0] = "\\_"; +ESCAPE_SEQUENCES[0x2028] = "\\L"; +ESCAPE_SEQUENCES[0x2029] = "\\P"; + +const DEPRECATED_BOOLEANS_SYNTAX = [ + "y", + "Y", + "yes", + "Yes", + "YES", + "on", + "On", + "ON", + "n", + "N", + "no", + "No", + "NO", + "off", + "Off", + "OFF", +]; + +function encodeHex(character: number): string { + const string = character.toString(16).toUpperCase(); + + let handle: string; + let length: number; + if (character <= 0xff) { + handle = "x"; + length = 2; + } else if (character <= 0xffff) { + handle = "u"; + length = 4; + } else if (character <= 0xffffffff) { + handle = "U"; + length = 8; + } else { + throw new YAMLError( + "code point within a string may not be greater than 0xFFFFFFFF", + ); + } + + return `\\${handle}${common.repeat("0", length - string.length)}${string}`; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string: string, spaces: number): string { + const ind = common.repeat(" ", spaces), + length = string.length; + let position = 0, + next = -1, + result = "", + line: string; + + while (position < length) { + next = string.indexOf("\n", position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== "\n") result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state: DumperState, level: number): string { + return `\n${common.repeat(" ", state.indent * level)}`; +} + +function testImplicitResolving(state: DumperState, str: string): boolean { + let type: Type; + for ( + let index = 0, length = state.implicitTypes.length; + index < length; + index += 1 + ) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c: number): boolean { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c: number): boolean { + return ( + (0x00020 <= c && c <= 0x00007e) || + (0x000a1 <= c && c <= 0x00d7ff && c !== 0x2028 && c !== 0x2029) || + (0x0e000 <= c && c <= 0x00fffd && c !== 0xfeff) /* BOM */ || + (0x10000 <= c && c <= 0x10ffff) + ); +} + +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c: number): boolean { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return ( + isPrintable(c) && + c !== 0xfeff && + // - c-flow-indicator + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && + // - ":" - "#" + c !== CHAR_COLON && + c !== CHAR_SHARP + ); +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c: number): boolean { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return ( + isPrintable(c) && + c !== 0xfeff && + !isWhitespace(c) && // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + c !== CHAR_MINUS && + c !== CHAR_QUESTION && + c !== CHAR_COLON && + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && + // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"” + c !== CHAR_SHARP && + c !== CHAR_AMPERSAND && + c !== CHAR_ASTERISK && + c !== CHAR_EXCLAMATION && + c !== CHAR_VERTICAL_LINE && + c !== CHAR_GREATER_THAN && + c !== CHAR_SINGLE_QUOTE && + c !== CHAR_DOUBLE_QUOTE && + // | “%” | “@” | “`”) + c !== CHAR_PERCENT && + c !== CHAR_COMMERCIAL_AT && + c !== CHAR_GRAVE_ACCENT + ); +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string: string): boolean { + const leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +const STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle( + string: string, + singleLineOnly: boolean, + indentPerLevel: number, + lineWidth: number, + testAmbiguousType: (...args: Any[]) => Any, +): number { + const shouldTrackWidth = lineWidth !== -1; + let hasLineBreak = false, + hasFoldableLine = false, // only checked if shouldTrackWidth + previousLineBreak = -1, // count the first line correctly + plain = isPlainSafeFirst(string.charCodeAt(0)) && + !isWhitespace(string.charCodeAt(string.length - 1)); + + let char: number, i: number; + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== " "); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || + (shouldTrackWidth && + i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== " "); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line: string, width: number): string { + if (line === "" || line[0] === " ") return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + const breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + let match; + // start is an inclusive index. end, curr, and next are exclusive. + let start = 0, + end, + curr = 0, + next = 0; + let result = ""; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + // tslint:disable-next-line:no-conditional-assignment + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = curr > start ? curr : next; // derive end <= length-2 + result += `\n${line.slice(start, end)}`; + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += "\n"; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += `${line.slice(start, curr)}\n${line.slice(curr + 1)}`; + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// (See the note for writeScalar.) +function dropEndingNewline(string: string): string { + return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string: string, width: number): string { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + const lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + let result = ((): string => { + let nextLF = string.indexOf("\n"); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + return foldLine(string.slice(0, nextLF), width); + })(); + // If we haven't reached the first content line yet, don't add an extra \n. + let prevMoreIndented = string[0] === "\n" || string[0] === " "; + let moreIndented; + + // rest of the lines + let match; + // tslint:disable-next-line:no-conditional-assignment + while ((match = lineRe.exec(string))) { + const prefix = match[1], + line = match[2]; + moreIndented = line[0] === " "; + result += prefix + + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Escapes a double-quoted string. +function escapeString(string: string): string { + let result = ""; + let char, nextChar; + let escapeSeq; + + for (let i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xd800 && char <= 0xdbff /* high surrogate */) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xdc00 && nextChar <= 0xdfff /* low surrogate */) { + // Combine the surrogate pair and store it escaped. + result += encodeHex( + (char - 0xd800) * 0x400 + nextChar - 0xdc00 + 0x10000, + ); + // Advance index one extra since we already used that char here. + i++; + continue; + } + } + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); + } + + return result; +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string: string, indentPerLevel: number): string { + const indentIndicator = needIndentIndicator(string) + ? String(indentPerLevel) + : ""; + + // note the special case: the string '\n' counts as a "trailing" empty line. + const clip = string[string.length - 1] === "\n"; + const keep = clip && (string[string.length - 2] === "\n" || string === "\n"); + const chomp = keep ? "+" : clip ? "" : "-"; + + return `${indentIndicator}${chomp}\n`; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar( + state: DumperState, + string: string, + level: number, + iskey: boolean, +): void { + state.dump = ((): string => { + if (string.length === 0) { + return "''"; + } + if ( + !state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 + ) { + return `'${string}'`; + } + + const indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower + // bound. + // This behaves better than a constant minimum width which disallows + // narrower options, or an indent threshold which causes the width + // to suddenly increase. + const lineWidth = state.lineWidth === -1 + ? -1 + : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, + // assume implicit for safety. + const singleLineOnly = iskey || + // No block styles in flow mode. + (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(str: string): boolean { + return testImplicitResolving(state, str); + } + + switch ( + chooseScalarStyle( + string, + singleLineOnly, + state.indent, + lineWidth, + testAmbiguity, + ) + ) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return `'${string.replace(/'/g, "''")}'`; + case STYLE_LITERAL: + return `|${blockHeader(string, state.indent)}${ + dropEndingNewline( + indentString(string, indent), + ) + }`; + case STYLE_FOLDED: + return `>${blockHeader(string, state.indent)}${ + dropEndingNewline( + indentString(foldString(string, lineWidth), indent), + ) + }`; + case STYLE_DOUBLE: + return `"${escapeString(string)}"`; + default: + throw new YAMLError("impossible error: invalid scalar style"); + } + })(); +} + +function writeFlowSequence( + state: DumperState, + level: number, + object: Any, +): void { + let _result = ""; + const _tag = state.tag; + + for (let index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += `,${!state.condenseFlow ? " " : ""}`; + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = `[${_result}]`; +} + +function writeBlockSequence( + state: DumperState, + level: number, + object: Any, + compact = false, +): void { + let _result = ""; + const _tag = state.tag; + + for (let index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += "-"; + } else { + _result += "- "; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || "[]"; // Empty sequence if no valid values. +} + +function writeFlowMapping( + state: DumperState, + level: number, + object: Any, +): void { + let _result = ""; + const _tag = state.tag, + objectKeyList = Object.keys(object); + + let pairBuffer: string, objectKey: string, objectValue: Any; + for ( + let index = 0, length = objectKeyList.length; + index < length; + index += 1 + ) { + pairBuffer = state.condenseFlow ? '"' : ""; + + if (index !== 0) pairBuffer += ", "; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += "? "; + + pairBuffer += `${state.dump}${state.condenseFlow ? '"' : ""}:${ + state.condenseFlow ? "" : " " + }`; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = `{${_result}}`; +} + +function writeBlockMapping( + state: DumperState, + level: number, + object: Any, + compact = false, +): void { + const _tag = state.tag, + objectKeyList = Object.keys(object); + let _result = ""; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === "function") { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLError("sortKeys must be a boolean or a function"); + } + + let pairBuffer = "", + objectKey: string, + objectValue: Any, + explicitPair: boolean; + for ( + let index = 0, length = objectKeyList.length; + index < length; + index += 1 + ) { + pairBuffer = ""; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== "?") || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += "?"; + } else { + pairBuffer += "? "; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ":"; + } else { + pairBuffer += ": "; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || "{}"; // Empty mapping if no valid pairs. +} + +function detectType( + state: DumperState, + object: Any, + explicit = false, +): boolean { + const typeList = explicit ? state.explicitTypes : state.implicitTypes; + + let type: Type; + let style: StyleVariant; + let _result: string; + for (let index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ( + (type.instanceOf || type.predicate) && + (!type.instanceOf || + (typeof object === "object" && object instanceof type.instanceOf)) && + (!type.predicate || type.predicate(object)) + ) { + state.tag = explicit ? type.tag : "?"; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === "[object Function]") { + _result = (type.represent as RepresentFn)(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = (type.represent as ArrayObject)[style]( + object, + style, + ); + } else { + throw new YAMLError( + `!<${type.tag}> tag resolver accepts not "${style}" style`, + ); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode( + state: DumperState, + level: number, + object: Any, + block: boolean, + compact: boolean, + iskey = false, +): boolean { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + const type = _toString.call(state.dump); + + if (block) { + block = state.flowLevel < 0 || state.flowLevel > level; + } + + const objectOrArray = type === "[object Object]" || type === "[object Array]"; + + let duplicateIndex = -1; + let duplicate = false; + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ( + (state.tag !== null && state.tag !== "?") || + duplicate || + (state.indent !== 2 && level > 0) + ) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = `*ref_${duplicateIndex}`; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === "[object Object]") { + if (block && Object.keys(state.dump).length !== 0) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = `&ref_${duplicateIndex}${state.dump}`; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = `&ref_${duplicateIndex} ${state.dump}`; + } + } + } else if (type === "[object Array]") { + const arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; + if (block && state.dump.length !== 0) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { + state.dump = `&ref_${duplicateIndex}${state.dump}`; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { + state.dump = `&ref_${duplicateIndex} ${state.dump}`; + } + } + } else if (type === "[object String]") { + if (state.tag !== "?") { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new YAMLError(`unacceptable kind of an object to dump ${type}`); + } + + if (state.tag !== null && state.tag !== "?") { + state.dump = `!<${state.tag}> ${state.dump}`; + } + } + + return true; +} + +function inspectNode( + object: Any, + objects: Any[], + duplicatesIndexes: number[], +): void { + if (object !== null && typeof object === "object") { + const index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (let idx = 0, length = object.length; idx < length; idx += 1) { + inspectNode(object[idx], objects, duplicatesIndexes); + } + } else { + const objectKeyList = Object.keys(object); + + for ( + let idx = 0, length = objectKeyList.length; + idx < length; + idx += 1 + ) { + inspectNode(object[objectKeyList[idx]], objects, duplicatesIndexes); + } + } + } + } +} + +function getDuplicateReferences( + object: Record, + state: DumperState, +): void { + const objects: Any[] = [], + duplicatesIndexes: number[] = []; + + inspectNode(object, objects, duplicatesIndexes); + + const length = duplicatesIndexes.length; + for (let index = 0; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +export function dump(input: Any, options?: DumperStateOptions): string { + options = options || {}; + + const state = new DumperState(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + if (writeNode(state, 0, input, true, true)) return `${state.dump}\n`; + + return ""; +} diff --git a/bundler/tests/.cache/deno/1fd0175804216d11e14cfa6fe2663b4c3f62ac2f.ts b/bundler/tests/.cache/deno/1fd0175804216d11e14cfa6fe2663b4c3f62ac2f.ts new file mode 100644 index 00000000000..03e601d3986 --- /dev/null +++ b/bundler/tests/.cache/deno/1fd0175804216d11e14cfa6fe2663b4c3f62ac2f.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isWhitelisted.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const isWhitelisted = (str: string, chars: string[]) => { + assertString(str); + for (let i = str.length - 1; i >= 0; i--) { + if (chars.indexOf(str[i]) === -1) { + return false; + } + } + return true; +}; diff --git a/bundler/tests/.cache/deno/1ff509c9694ea91930285d4ac609e7dd403917f0.ts b/bundler/tests/.cache/deno/1ff509c9694ea91930285d4ac609e7dd403917f0.ts new file mode 100644 index 00000000000..6f1a17f0d18 --- /dev/null +++ b/bundler/tests/.cache/deno/1ff509c9694ea91930285d4ac609e7dd403917f0.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std@0.73.0/async/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/1ff6a595e378303b3b5dad0661049f3137822aa8.ts b/bundler/tests/.cache/deno/1ff6a595e378303b3b5dad0661049f3137822aa8.ts new file mode 100644 index 00000000000..430dc467ca5 --- /dev/null +++ b/bundler/tests/.cache/deno/1ff6a595e378303b3b5dad0661049f3137822aa8.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/std/uuid/v4.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { bytesToUuid } from "./_common.ts"; + +const UUID_RE = + /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +/** + * Validates the UUID v4. + * @param id UUID value. + */ +export function validate(id: string): boolean { + return UUID_RE.test(id); +} + +/** Generates a RFC4122 v4 UUID (pseudo-randomly-based) */ +export function generate(): string { + const rnds = crypto.getRandomValues(new Uint8Array(16)); + + rnds[6] = (rnds[6] & 0x0f) | 0x40; // Version 4 + rnds[8] = (rnds[8] & 0x3f) | 0x80; // Variant 10 + + return bytesToUuid(rnds); +} diff --git a/bundler/tests/.cache/deno/20e4512d5c898122c7d93fc59c314fc1610d96b6.ts b/bundler/tests/.cache/deno/20e4512d5c898122c7d93fc59c314fc1610d96b6.ts new file mode 100644 index 00000000000..0ede7fb0bfc --- /dev/null +++ b/bundler/tests/.cache/deno/20e4512d5c898122c7d93fc59c314fc1610d96b6.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/jpegts@1.1/mod.ts + + +export { decode } from "./lib/decoder.ts" +export { encode } from "./lib/encoder.ts" +export { Image } from "./lib/image.ts" +export { Pixel } from "./lib/pixel.ts" diff --git a/bundler/tests/.cache/deno/212822c05c6e42e4f774ec561becbdf587150b2f.ts b/bundler/tests/.cache/deno/212822c05c6e42e4f774ec561becbdf587150b2f.ts new file mode 100644 index 00000000000..2f1329c79c0 --- /dev/null +++ b/bundler/tests/.cache/deno/212822c05c6e42e4f774ec561becbdf587150b2f.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/router.ts + + +import type { HandlerFunc } from "./types.ts"; +import type { Context } from "./context.ts"; + +import { Node } from "./vendor/https/deno.land/x/router/mod.ts"; +import { hasTrailingSlash, NotFoundHandler } from "./util.ts"; + +export class Router { + trees: Record = {}; + + add(method: string, path: string, h: HandlerFunc): void { + if (path[0] !== "/") { + path = `/${path}`; + } + + if (hasTrailingSlash(path)) { + path = path.slice(0, path.length - 1); + } + + let root = this.trees[method]; + if (!root) { + root = new Node(); + this.trees[method] = root; + } + + root.add(path, h); + } + + find(method: string, c: Context): HandlerFunc { + const node = this.trees[method]; + let path = c.path; + if (hasTrailingSlash(path)) { + path = path.slice(0, path.length - 1); + } + let h: HandlerFunc | undefined; + if (node) { + const [handle, params] = node.find(path); + if (params) { + for (const [k, v] of params) { + c.params[k] = v; + } + } + + if (handle) { + h = handle as HandlerFunc; + } + } + + return h ?? NotFoundHandler; + } +} diff --git a/bundler/tests/.cache/deno/214868c4b3fe07f8136d5c9bacdd210c92358372.ts b/bundler/tests/.cache/deno/214868c4b3fe07f8136d5c9bacdd210c92358372.ts new file mode 100644 index 00000000000..ef3efb99b3c --- /dev/null +++ b/bundler/tests/.cache/deno/214868c4b3fe07f8136d5c9bacdd210c92358372.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMongoId.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { isHexadecimal } from './isHexadecimal.ts'; + +export const isMongoId = (str: string) => { + assertString(str); + return isHexadecimal(str) && str.length === 24; +}; diff --git a/bundler/tests/.cache/deno/21ecfb5d36b7bde52b3ad64e6d594b0c8b4547b3.ts b/bundler/tests/.cache/deno/21ecfb5d36b7bde52b3ad64e6d594b0c8b4547b3.ts new file mode 100644 index 00000000000..3a3ed0dfe3e --- /dev/null +++ b/bundler/tests/.cache/deno/21ecfb5d36b7bde52b3ad64e6d594b0c8b4547b3.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.85.0/path/common.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/2245d08f0e8ec31c6412dc4041c0ca6fcb5e5423.ts b/bundler/tests/.cache/deno/2245d08f0e8ec31c6412dc4041c0ca6fcb5e5423.ts new file mode 100644 index 00000000000..0fb4b3daac1 --- /dev/null +++ b/bundler/tests/.cache/deno/2245d08f0e8ec31c6412dc4041c0ca6fcb5e5423.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isDataURI.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i; + +/** + * @ignore + */ +const validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; + +/** + * @ignore + */ +const validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; + +export const isDataURI = (str: string) => { + assertString(str); + + let data = str.split(','); + + if (data.length < 2) { + return false; + } + + const attributes = (data.shift() as string).trim().split(';'); + const schemeAndMediaType = attributes.shift() as string; + + if (schemeAndMediaType.substr(0, 5) !== 'data:') { + return false; + } + + const mediaType = schemeAndMediaType.substr(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (let i = 0; i < attributes.length; i++) { + if ( + i === attributes.length - 1 && + attributes[i].toLowerCase() === 'base64' + ) { + // ok + } else if (!validAttribute.test(attributes[i])) { + return false; + } + } + + for (let i = 0; i < data.length; i++) { + if (!validData.test(data[i])) { + return false; + } + } + + return true; +}; diff --git a/bundler/tests/.cache/deno/22d4cff3c725f357baab702365bd0574fd9ac91f.ts b/bundler/tests/.cache/deno/22d4cff3c725f357baab702365bd0574fd9ac91f.ts new file mode 100644 index 00000000000..63cd2b13738 --- /dev/null +++ b/bundler/tests/.cache/deno/22d4cff3c725f357baab702365bd0574fd9ac91f.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_stepCat.js + + +import _objectAssign from './_objectAssign.js'; +import _identity from './_identity.js'; +import _isArrayLike from './_isArrayLike.js'; +import _isTransformer from './_isTransformer.js'; +import objOf from '../objOf.js'; + + +var _stepCatArray = { + '@@transducer/init': Array, + '@@transducer/step': function(xs, x) { + xs.push(x); + return xs; + }, + '@@transducer/result': _identity +}; +var _stepCatString = { + '@@transducer/init': String, + '@@transducer/step': function(a, b) { return a + b; }, + '@@transducer/result': _identity +}; +var _stepCatObject = { + '@@transducer/init': Object, + '@@transducer/step': function(result, input) { + return _objectAssign( + result, + _isArrayLike(input) ? objOf(input[0], input[1]) : input + ); + }, + '@@transducer/result': _identity +}; + +export default function _stepCat(obj) { + if (_isTransformer(obj)) { + return obj; + } + if (_isArrayLike(obj)) { + return _stepCatArray; + } + if (typeof obj === 'string') { + return _stepCatString; + } + if (typeof obj === 'object') { + return _stepCatObject; + } + throw new Error('Cannot create transformer for ' + obj); +} diff --git a/bundler/tests/.cache/deno/23757f2a45edf09f858ba2b3dd6b3d1ca9908dc2.ts b/bundler/tests/.cache/deno/23757f2a45edf09f858ba2b3dd6b3d1ca9908dc2.ts new file mode 100644 index 00000000000..0b96b236fc3 --- /dev/null +++ b/bundler/tests/.cache/deno/23757f2a45edf09f858ba2b3dd6b3d1ca9908dc2.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/mysql/src/auth_plugin/crypt.ts + + +import { RSA } from "https://deno.land/x/god_crypto@v0.2.0/mod.ts"; +function encryptWithPublicKey(key: string, data: Uint8Array): Uint8Array { + const publicKey = RSA.parseKey(key); + return RSA.encrypt(data, publicKey); +} + +export { encryptWithPublicKey }; diff --git a/bundler/tests/.cache/deno/23ea8eb81de07a565c0781f28bcd6b4725d81f70.ts b/bundler/tests/.cache/deno/23ea8eb81de07a565c0781f28bcd6b4725d81f70.ts new file mode 100644 index 00000000000..85d61807c15 --- /dev/null +++ b/bundler/tests/.cache/deno/23ea8eb81de07a565c0781f28bcd6b4725d81f70.ts @@ -0,0 +1,546 @@ +// Loaded from https://deno.land/std@0.75.0/hash/sha256.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* + * Adapted to deno from: + * + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; +// deno-fmt-ignore +const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +] as const; + +const blocks: number[] = []; + +export class Sha256 { + #block!: number; + #blocks!: number[]; + #bytes!: number; + #finalized!: boolean; + #first!: boolean; + #h0!: number; + #h1!: number; + #h2!: number; + #h3!: number; + #h4!: number; + #h5!: number; + #h6!: number; + #h7!: number; + #hashed!: boolean; + #hBytes!: number; + #is224!: boolean; + #lastByteIndex = 0; + #start!: number; + + constructor(is224 = false, sharedMemory = false) { + this.init(is224, sharedMemory); + } + + protected init(is224: boolean, sharedMemory: boolean): void { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + if (is224) { + this.#h0 = 0xc1059ed8; + this.#h1 = 0x367cd507; + this.#h2 = 0x3070dd17; + this.#h3 = 0xf70e5939; + this.#h4 = 0xffc00b31; + this.#h5 = 0x68581511; + this.#h6 = 0x64f98fa7; + this.#h7 = 0xbefa4fa4; + } else { + // 256 + this.#h0 = 0x6a09e667; + this.#h1 = 0xbb67ae85; + this.#h2 = 0x3c6ef372; + this.#h3 = 0xa54ff53a; + this.#h4 = 0x510e527f; + this.#h5 = 0x9b05688c; + this.#h6 = 0x1f83d9ab; + this.#h7 = 0x5be0cd19; + } + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + this.#first = true; + this.#is224 = is224; + } + + /** Update hash + * + * @param message The message you want to hash. + */ + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) << 0; + this.#bytes = this.#bytes % 4294967296; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + protected hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f = this.#h5; + let g = this.#h6; + let h = this.#h7; + const blocks = this.#blocks; + let s0: number; + let s1: number; + let maj: number; + let t1: number; + let t2: number; + let ch: number; + let ab: number; + let da: number; + let cd: number; + let bc: number; + + for (let j = 16; j < 64; ++j) { + // rightrotate + t1 = blocks[j - 15]; + s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3); + t1 = blocks[j - 2]; + s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ + (t1 >>> 10); + blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0; + } + + bc = b & c; + for (let j = 0; j < 64; j += 4) { + if (this.#first) { + if (this.#is224) { + ab = 300032; + t1 = blocks[0] - 1413257819; + h = (t1 - 150054599) << 0; + d = (t1 + 24177077) << 0; + } else { + ab = 704751109; + t1 = blocks[0] - 210244248; + h = (t1 - 1521486534) << 0; + d = (t1 + 143694565) << 0; + } + this.#first = false; + } else { + s0 = ((a >>> 2) | (a << 30)) ^ + ((a >>> 13) | (a << 19)) ^ + ((a >>> 22) | (a << 10)); + s1 = ((e >>> 6) | (e << 26)) ^ + ((e >>> 11) | (e << 21)) ^ + ((e >>> 25) | (e << 7)); + ab = a & b; + maj = ab ^ (a & c) ^ bc; + ch = (e & f) ^ (~e & g); + t1 = h + s1 + ch + K[j] + blocks[j]; + t2 = s0 + maj; + h = (d + t1) << 0; + d = (t1 + t2) << 0; + } + s0 = ((d >>> 2) | (d << 30)) ^ + ((d >>> 13) | (d << 19)) ^ + ((d >>> 22) | (d << 10)); + s1 = ((h >>> 6) | (h << 26)) ^ + ((h >>> 11) | (h << 21)) ^ + ((h >>> 25) | (h << 7)); + da = d & a; + maj = da ^ (d & b) ^ ab; + ch = (h & e) ^ (~h & f); + t1 = g + s1 + ch + K[j + 1] + blocks[j + 1]; + t2 = s0 + maj; + g = (c + t1) << 0; + c = (t1 + t2) << 0; + s0 = ((c >>> 2) | (c << 30)) ^ + ((c >>> 13) | (c << 19)) ^ + ((c >>> 22) | (c << 10)); + s1 = ((g >>> 6) | (g << 26)) ^ + ((g >>> 11) | (g << 21)) ^ + ((g >>> 25) | (g << 7)); + cd = c & d; + maj = cd ^ (c & a) ^ da; + ch = (g & h) ^ (~g & e); + t1 = f + s1 + ch + K[j + 2] + blocks[j + 2]; + t2 = s0 + maj; + f = (b + t1) << 0; + b = (t1 + t2) << 0; + s0 = ((b >>> 2) | (b << 30)) ^ + ((b >>> 13) | (b << 19)) ^ + ((b >>> 22) | (b << 10)); + s1 = ((f >>> 6) | (f << 26)) ^ + ((f >>> 11) | (f << 21)) ^ + ((f >>> 25) | (f << 7)); + bc = b & c; + maj = bc ^ (b & d) ^ cd; + ch = (f & g) ^ (~f & h); + t1 = e + s1 + ch + K[j + 3] + blocks[j + 3]; + t2 = s0 + maj; + e = (a + t1) << 0; + a = (t1 + t2) << 0; + } + + this.#h0 = (this.#h0 + a) << 0; + this.#h1 = (this.#h1 + b) << 0; + this.#h2 = (this.#h2 + c) << 0; + this.#h3 = (this.#h3 + d) << 0; + this.#h4 = (this.#h4 + e) << 0; + this.#h5 = (this.#h5 + f) << 0; + this.#h6 = (this.#h6 + g) << 0; + this.#h7 = (this.#h7 + h) << 0; + } + + /** Return hash in hex string. */ + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + let hex = HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + + HEX_CHARS[(h5 >> 28) & 0x0f] + + HEX_CHARS[(h5 >> 24) & 0x0f] + + HEX_CHARS[(h5 >> 20) & 0x0f] + + HEX_CHARS[(h5 >> 16) & 0x0f] + + HEX_CHARS[(h5 >> 12) & 0x0f] + + HEX_CHARS[(h5 >> 8) & 0x0f] + + HEX_CHARS[(h5 >> 4) & 0x0f] + + HEX_CHARS[h5 & 0x0f] + + HEX_CHARS[(h6 >> 28) & 0x0f] + + HEX_CHARS[(h6 >> 24) & 0x0f] + + HEX_CHARS[(h6 >> 20) & 0x0f] + + HEX_CHARS[(h6 >> 16) & 0x0f] + + HEX_CHARS[(h6 >> 12) & 0x0f] + + HEX_CHARS[(h6 >> 8) & 0x0f] + + HEX_CHARS[(h6 >> 4) & 0x0f] + + HEX_CHARS[h6 & 0x0f]; + if (!this.#is224) { + hex += HEX_CHARS[(h7 >> 28) & 0x0f] + + HEX_CHARS[(h7 >> 24) & 0x0f] + + HEX_CHARS[(h7 >> 20) & 0x0f] + + HEX_CHARS[(h7 >> 16) & 0x0f] + + HEX_CHARS[(h7 >> 12) & 0x0f] + + HEX_CHARS[(h7 >> 8) & 0x0f] + + HEX_CHARS[(h7 >> 4) & 0x0f] + + HEX_CHARS[h7 & 0x0f]; + } + return hex; + } + + /** Return hash in hex string. */ + toString(): string { + return this.hex(); + } + + /** Return hash in integer array. */ + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + const arr = [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + (h5 >> 24) & 0xff, + (h5 >> 16) & 0xff, + (h5 >> 8) & 0xff, + h5 & 0xff, + (h6 >> 24) & 0xff, + (h6 >> 16) & 0xff, + (h6 >> 8) & 0xff, + h6 & 0xff, + ]; + if (!this.#is224) { + arr.push( + (h7 >> 24) & 0xff, + (h7 >> 16) & 0xff, + (h7 >> 8) & 0xff, + h7 & 0xff, + ); + } + return arr; + } + + /** Return hash in integer array. */ + array(): number[] { + return this.digest(); + } + + /** Return hash in ArrayBuffer. */ + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(this.#is224 ? 28 : 32); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + dataView.setUint32(20, this.#h5); + dataView.setUint32(24, this.#h6); + if (!this.#is224) { + dataView.setUint32(28, this.#h7); + } + return buffer; + } +} + +export class HmacSha256 extends Sha256 { + #inner: boolean; + #is224: boolean; + #oKeyPad: number[]; + #sharedMemory: boolean; + + constructor(secretKey: Message, is224 = false, sharedMemory = false) { + super(is224, sharedMemory); + + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length = secretKey.length; + let index = 0; + for (let i = 0; i < length; ++i) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + + if (key.length > 64) { + key = new Sha256(is224, true).update(key).array(); + } + + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; ++i) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#is224 = is224; + this.#sharedMemory = sharedMemory; + } + + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#is224, this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/23f4b2f19f08795e4cc4cbeda7d20befdc86cde0.ts b/bundler/tests/.cache/deno/23f4b2f19f08795e4cc4cbeda7d20befdc86cde0.ts new file mode 100644 index 00000000000..a1ff248aa44 --- /dev/null +++ b/bundler/tests/.cache/deno/23f4b2f19f08795e4cc4cbeda7d20befdc86cde0.ts @@ -0,0 +1,109 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/getIntrospectionQuery.js + + +export function getIntrospectionQuery(options) { + const optionsWithDefault = { + descriptions: true, + directiveIsRepeatable: false, + schemaDescription: false, + ...options + }; + const descriptions = optionsWithDefault.descriptions ? 'description' : ''; + const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : ''; + const schemaDescription = optionsWithDefault.schemaDescription ? descriptions : ''; + return ` + query IntrospectionQuery { + __schema { + ${schemaDescription} + queryType { name } + mutationType { name } + subscriptionType { name } + types { + ...FullType + } + directives { + name + ${descriptions} + ${directiveIsRepeatable} + locations + args { + ...InputValue + } + } + } + } + + fragment FullType on __Type { + kind + name + ${descriptions} + fields(includeDeprecated: true) { + name + ${descriptions} + args { + ...InputValue + } + type { + ...TypeRef + } + isDeprecated + deprecationReason + } + inputFields { + ...InputValue + } + interfaces { + ...TypeRef + } + enumValues(includeDeprecated: true) { + name + ${descriptions} + isDeprecated + deprecationReason + } + possibleTypes { + ...TypeRef + } + } + + fragment InputValue on __InputValue { + name + ${descriptions} + type { ...TypeRef } + defaultValue + } + + fragment TypeRef on __Type { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + } + } + } + } + } + } + } + } + `; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/24215edc904104698eb3a4674075d856ef5956aa.ts b/bundler/tests/.cache/deno/24215edc904104698eb3a4674075d856ef5956aa.ts new file mode 100644 index 00000000000..5b783c79b6d --- /dev/null +++ b/bundler/tests/.cache/deno/24215edc904104698eb3a4674075d856ef5956aa.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/nth.js + + +import _curry2 from './internal/_curry2.js'; +import _isString from './internal/_isString.js'; + + +/** + * Returns the nth element of the given list or string. If n is negative the + * element at index length + n is returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> a | Undefined + * @sig Number -> String -> String + * @param {Number} offset + * @param {*} list + * @return {*} + * @example + * + * const list = ['foo', 'bar', 'baz', 'quux']; + * R.nth(1, list); //=> 'bar' + * R.nth(-1, list); //=> 'quux' + * R.nth(-99, list); //=> undefined + * + * R.nth(2, 'abc'); //=> 'c' + * R.nth(3, 'abc'); //=> '' + * @symb R.nth(-1, [a, b, c]) = c + * @symb R.nth(0, [a, b, c]) = a + * @symb R.nth(1, [a, b, c]) = b + */ +var nth = _curry2(function nth(offset, list) { + var idx = offset < 0 ? list.length + offset : offset; + return _isString(list) ? list.charAt(idx) : list[idx]; +}); +export default nth; diff --git a/bundler/tests/.cache/deno/2453e4e427d8028ee0e560424008c732c2d30aaa.ts b/bundler/tests/.cache/deno/2453e4e427d8028ee0e560424008c732c2d30aaa.ts new file mode 100644 index 00000000000..859ed209cc6 --- /dev/null +++ b/bundler/tests/.cache/deno/2453e4e427d8028ee0e560424008c732c2d30aaa.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.85.0/path/glob.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/24dddb52e5c4f8f5b0aa00d7f13efc5e08831eca.ts b/bundler/tests/.cache/deno/24dddb52e5c4f8f5b0aa00d7f13efc5e08831eca.ts new file mode 100644 index 00000000000..dc48dd46428 --- /dev/null +++ b/bundler/tests/.cache/deno/24dddb52e5c4f8f5b0aa00d7f13efc5e08831eca.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.80.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/25191601e5fc11d54bc4340fc01f921f04b8eeff.ts b/bundler/tests/.cache/deno/25191601e5fc11d54bc4340fc01f921f04b8eeff.ts new file mode 100644 index 00000000000..e9905b25b11 --- /dev/null +++ b/bundler/tests/.cache/deno/25191601e5fc11d54bc4340fc01f921f04b8eeff.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/composeWith.js + + +import _curry2 from './internal/_curry2.js'; +import pipeWith from './pipeWith.js'; +import reverse from './reverse.js'; + + +/** + * Performs right-to-left function composition using transforming function. The last function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of composeWith is not automatically curried. Transforming function is not used + * on the last argument. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Function + * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z) + * @param {Function} transformer The transforming function + * @param {Array} functions The functions to compose + * @return {Function} + * @see R.compose, R.pipeWith + * @example + * + * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res)); + * + * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2 + * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined + * + * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, i(...args))) + */ +var composeWith = _curry2(function composeWith(xf, list) { + return pipeWith.apply(this, [xf, reverse(list)]); +}); +export default composeWith; diff --git a/bundler/tests/.cache/deno/253fbaf75096c30a50e76b998acd4d4a19101a94.ts b/bundler/tests/.cache/deno/253fbaf75096c30a50e76b998acd4d4a19101a94.ts new file mode 100644 index 00000000000..a7aeb9cea99 --- /dev/null +++ b/bundler/tests/.cache/deno/253fbaf75096c30a50e76b998acd4d4a19101a94.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/mod.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export { binary } from "./binary.ts"; +export { bool } from "./bool.ts"; +export { float } from "./float.ts"; +export { int } from "./int.ts"; +export { map } from "./map.ts"; +export { merge } from "./merge.ts"; +export { nil } from "./nil.ts"; +export { omap } from "./omap.ts"; +export { pairs } from "./pairs.ts"; +export { seq } from "./seq.ts"; +export { set } from "./set.ts"; +export { str } from "./str.ts"; +export { timestamp } from "./timestamp.ts"; diff --git a/bundler/tests/.cache/deno/254cb219f9b8bf4d4bd27151b9c6b9451f5aa485.ts b/bundler/tests/.cache/deno/254cb219f9b8bf4d4bd27151b9c6b9451f5aa485.ts new file mode 100644 index 00000000000..28abf790a2b --- /dev/null +++ b/bundler/tests/.cache/deno/254cb219f9b8bf4d4bd27151b9c6b9451f5aa485.ts @@ -0,0 +1,303 @@ +// Loaded from https://deno.land/x/oak/response.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { AsyncIterableReader } from "./async_iterable_reader.ts"; +import { contentType, Status } from "./deps.ts"; +import type { Request } from "./request.ts"; +import type { ServerResponse } from "./types.d.ts"; +import { encodeUrl, isHtml, isRedirectStatus } from "./util.ts"; + +type Body = + | string + | number + | bigint + | boolean + | symbol + // deno-lint-ignore ban-types + | object + | undefined + | null; +type BodyFunction = () => Body | Promise; + +/** A symbol that indicates to `response.redirect()` to attempt to redirect + * back to the request referrer. For example: + * + * ```ts + * import { Application, REDIRECT_BACK } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * if (ctx.request.url.pathName === "/back") { + * ctx.response.redirect(REDIRECT_BACK, "/"); + * } + * }); + * + * await app.listen({ port: 80 }); + * ``` + */ +export const REDIRECT_BACK = Symbol("redirect backwards"); + +const BODY_TYPES = ["string", "number", "bigint", "boolean", "symbol"]; + +const encoder = new TextEncoder(); + +/** Guard for Async Iterables */ +// deno-lint-ignore no-explicit-any +function isAsyncIterable(value: unknown): value is AsyncIterable { + return typeof value === "object" && value !== null && + Symbol.asyncIterator in value && + // deno-lint-ignore no-explicit-any + typeof (value as any)[Symbol.asyncIterator] === "function"; +} + +/** Guard for `Deno.Reader`. */ +function isReader(value: unknown): value is Deno.Reader { + return typeof value === "object" && value !== null && "read" in value && + typeof (value as Record).read === "function"; +} + +function toUint8Array(body: Body): Uint8Array { + let bodyText: string; + if (BODY_TYPES.includes(typeof body)) { + bodyText = String(body); + } else { + bodyText = JSON.stringify(body); + } + return encoder.encode(bodyText); +} + +async function convertBody( + body: Body | BodyFunction, + type?: string, +): Promise<[Uint8Array | Deno.Reader | undefined, string | undefined]> { + let result: Uint8Array | Deno.Reader | undefined; + if (BODY_TYPES.includes(typeof body)) { + const bodyText = String(body); + result = encoder.encode(bodyText); + type = type ?? (isHtml(bodyText) ? "html" : "text/plain"); + } else if (body instanceof Uint8Array || isReader(body)) { + result = body; + } else if (isAsyncIterable(body)) { + result = new AsyncIterableReader(body, toUint8Array); + } else if (body && typeof body === "object") { + result = encoder.encode(JSON.stringify(body)); + type = type ?? "json"; + } else if (typeof body === "function") { + const result = body.call(null); + return convertBody(await result, type); + } else if (body) { + throw new TypeError("Response body was set but could not convert."); + } + return [result, type]; +} + +/** An interface to control what response will be sent when the middleware + * finishes processing the request. */ +export class Response { + #body?: Body | BodyFunction; + #headers = new Headers(); + #request: Request; + #resources: number[] = []; + #serverResponse?: ServerResponse; + #status?: Status; + #type?: string; + #writable = true; + + #getBody = async (): Promise => { + const [body, type] = await convertBody(this.body, this.type); + this.type = type; + return body; + }; + + #setContentType = (): void => { + if (this.type) { + const contentTypeString = contentType(this.type); + if (contentTypeString && !this.headers.has("Content-Type")) { + this.headers.append("Content-Type", contentTypeString); + } + } + }; + + /** The body of the response. The body will be automatically processed when + * the response is being sent and converted to a `Uint8Array` or a + * `Deno.Reader`. + * + * Automatic conversion to a `Deno.Reader` occurs for async iterables. */ + get body(): Body | BodyFunction { + return this.#body; + } + + /** The body of the response. The body will be automatically processed when + * the response is being sent and converted to a `Uint8Array` or a + * `Deno.Reader`. + * + * Automatic conversion to a `Deno.Reader` occurs for async iterables. */ + set body(value: Body | BodyFunction) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#body = value; + } + + /** Headers that will be returned in the response. */ + get headers(): Headers { + return this.#headers; + } + + /** Headers that will be returned in the response. */ + set headers(value: Headers) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#headers = value; + } + + /** The HTTP status of the response. If this has not been explicitly set, + * reading the value will return what would be the value of status if the + * response were sent at this point in processing the middleware. If the body + * has been set, the status will be `200 OK`. If a value for the body has + * not been set yet, the status will be `404 Not Found`. */ + get status(): Status { + if (this.#status) { + return this.#status; + } + const typeofbody = typeof this.body; + return this.body && + (BODY_TYPES.includes(typeofbody) || typeofbody === "object") + ? Status.OK + : Status.NotFound; + } + + /** The HTTP status of the response. If this has not been explicitly set, + * reading the value will return what would be the value of status if the + * response were sent at this point in processing the middleware. If the body + * has been set, the status will be `200 OK`. If a value for the body has + * not been set yet, the status will be `404 Not Found`. */ + set status(value: Status) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#status = value; + } + + /** The media type, or extension of the response. Setting this value will + * ensure an appropriate `Content-Type` header is added to the response. */ + get type(): string | undefined { + return this.#type; + } + /** The media type, or extension of the response. Setting this value will + * ensure an appropriate `Content-Type` header is added to the response. */ + set type(value: string | undefined) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#type = value; + } + + /** A read-only property which determines if the response is writable or not. + * Once the response has been processed, this value is set to `false`. */ + get writable(): boolean { + return this.#writable; + } + + constructor(request: Request) { + this.#request = request; + } + + /** Add a resource to the list of resources that will be closed when the + * request is destroyed. */ + addResource(rid: number): void { + this.#resources.push(rid); + } + + /** Release any resources that are being tracked by the response. */ + destroy(): void { + this.#writable = false; + this.#body = undefined; + this.#serverResponse = undefined; + for (const rid of this.#resources) { + Deno.close(rid); + } + } + + /** Sets the response to redirect to the supplied `url`. + * + * If the `.status` is not currently a redirect status, the status will be set + * to `302 Found`. + * + * The body will be set to a message indicating the redirection is occurring. + */ + redirect(url: string | URL): void; + /** Sets the response to redirect back to the referrer if available, with an + * optional `alt` URL if there is no referrer header on the request. If there + * is no referrer header, nor an `alt` parameter, the redirect is set to `/`. + * + * If the `.status` is not currently a redirect status, the status will be set + * to `302 Found`. + * + * The body will be set to a message indicating the redirection is occurring. + */ + redirect(url: typeof REDIRECT_BACK, alt?: string | URL): void; + redirect( + url: string | URL | typeof REDIRECT_BACK, + alt: string | URL = "/", + ): void { + if (url === REDIRECT_BACK) { + url = this.#request.headers.get("Referrer") ?? String(alt); + } else if (typeof url === "object") { + url = String(url); + } + this.headers.set("Location", encodeUrl(url)); + if (!this.status || !isRedirectStatus(this.status)) { + this.status = Status.Found; + } + + if (this.#request.accepts("html")) { + url = encodeURI(url); + this.type = "text/html; charset=utf-8"; + this.body = `Redirecting to ${url}.`; + return; + } + this.type = "text/plain; charset=utf-8"; + this.body = `Redirecting to ${url}.`; + } + + /** Take this response and convert it to the response used by the Deno net + * server. Calling this will set the response to not be writable. + * + * Most users will have no need to call this method. */ + async toServerResponse(): Promise { + if (this.#serverResponse) { + return this.#serverResponse; + } + // Process the body + const body = await this.#getBody(); + + // If there is a response type, set the content type header + this.#setContentType(); + + const { headers } = this; + + // If there is no body and no content type and no set length, then set the + // content length to 0 + if ( + !( + body || + headers.has("Content-Type") || + headers.has("Content-Length") + ) + ) { + headers.append("Content-Length", "0"); + } + + this.#writable = false; + return this.#serverResponse = { + status: this.#status ?? (body ? Status.OK : Status.NotFound), + body, + headers, + }; + } +} diff --git a/bundler/tests/.cache/deno/25ae65fc43783464c3514ac80a82a7c2b7e7b259.ts b/bundler/tests/.cache/deno/25ae65fc43783464c3514ac80a82a7c2b7e7b259.ts new file mode 100644 index 00000000000..d3b6efbfa65 --- /dev/null +++ b/bundler/tests/.cache/deno/25ae65fc43783464c3514ac80a82a7c2b7e7b259.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/identical.js + + +import _objectIs from './internal/_objectIs.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns true if its arguments are identical, false otherwise. Values are + * identical if they reference the same memory. `NaN` is identical to `NaN`; + * `0` and `-0` are not identical. + * + * Note this is merely a curried version of ES6 `Object.is`. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * const o = {}; + * R.identical(o, o); //=> true + * R.identical(1, 1); //=> true + * R.identical(1, '1'); //=> false + * R.identical([], []); //=> false + * R.identical(0, -0); //=> false + * R.identical(NaN, NaN); //=> true + */ +var identical = _curry2(_objectIs); +export default identical; diff --git a/bundler/tests/.cache/deno/26011cfcdccf2c97ce392f5122ffdf185e7c86c6.ts b/bundler/tests/.cache/deno/26011cfcdccf2c97ce392f5122ffdf185e7c86c6.ts new file mode 100644 index 00000000000..dee987490d3 --- /dev/null +++ b/bundler/tests/.cache/deno/26011cfcdccf2c97ce392f5122ffdf185e7c86c6.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/mysql/src/util.ts + + +export function xor(a: Uint8Array, b: Uint8Array): Uint8Array { + return a.map((byte, index) => { + return byte ^ b[index]; + }); +} diff --git a/bundler/tests/.cache/deno/2611e46d39df5923363309b9adb4c81731694129.ts b/bundler/tests/.cache/deno/2611e46d39df5923363309b9adb4c81731694129.ts new file mode 100644 index 00000000000..4e1aff85140 --- /dev/null +++ b/bundler/tests/.cache/deno/2611e46d39df5923363309b9adb4c81731694129.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.81.0/_util/os.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/26229dc3fa7de5f57e16c6d1cf5aa281c6692c78.ts b/bundler/tests/.cache/deno/26229dc3fa7de5f57e16c6d1cf5aa281c6692c78.ts new file mode 100644 index 00000000000..6a778a94fde --- /dev/null +++ b/bundler/tests/.cache/deno/26229dc3fa7de5f57e16c6d1cf5aa281c6692c78.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isDivisibleBy.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { toFloat } from '../helpers/toFloat.ts'; + +export const isDivisibleBy = (str: string, num: string) => { + assertString(str); + + return toFloat(str) % parseInt(num, 10) === 0; +}; diff --git a/bundler/tests/.cache/deno/264c6f8a074a064dbf16fe3f4c24d50065a9611e.ts b/bundler/tests/.cache/deno/264c6f8a074a064dbf16fe3f4c24d50065a9611e.ts new file mode 100644 index 00000000000..0da5e24c65f --- /dev/null +++ b/bundler/tests/.cache/deno/264c6f8a074a064dbf16fe3f4c24d50065a9611e.ts @@ -0,0 +1,60 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_indexOf.js + + +import equals from '../equals.js'; + + +export default function _indexOf(list, a, idx) { + var inf, item; + // Array.prototype.indexOf doesn't exist below IE9 + if (typeof list.indexOf === 'function') { + switch (typeof a) { + case 'number': + if (a === 0) { + // manually crawl the list to distinguish between +0 and -0 + inf = 1 / a; + while (idx < list.length) { + item = list[idx]; + if (item === 0 && 1 / item === inf) { + return idx; + } + idx += 1; + } + return -1; + } else if (a !== a) { + // NaN + while (idx < list.length) { + item = list[idx]; + if (typeof item === 'number' && item !== item) { + return idx; + } + idx += 1; + } + return -1; + } + // non-zero numbers can utilise Set + return list.indexOf(a, idx); + + // all these types can utilise Set + case 'string': + case 'boolean': + case 'function': + case 'undefined': + return list.indexOf(a, idx); + + case 'object': + if (a === null) { + // null can utilise Set + return list.indexOf(a, idx); + } + } + } + // anything else not covered above, defer to R.equals + while (idx < list.length) { + if (equals(list[idx], a)) { + return idx; + } + idx += 1; + } + return -1; +} diff --git a/bundler/tests/.cache/deno/2661a946a5032d7f962249e461492beeaf3d511f.ts b/bundler/tests/.cache/deno/2661a946a5032d7f962249e461492beeaf3d511f.ts new file mode 100644 index 00000000000..78c5b9d11cf --- /dev/null +++ b/bundler/tests/.cache/deno/2661a946a5032d7f962249e461492beeaf3d511f.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isSemVer.ts + + +// @ts-ignore allowing typedoc to build +import { multilineRegexp } from '../helpers/multilineRegex.ts'; +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * Regular Expression to match + * semantic versioning (SemVer) + * built from multi-line, multi-parts regexp + * Reference: https://semver.org/ + */ +/** + * @ignore + */ +const semanticVersioningRegex = multilineRegexp([ + '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', + '(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))', + '?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$', +]); + +export const isSemVer = (str: string) => { + assertString(str); + + return semanticVersioningRegex.test(str); +}; diff --git a/bundler/tests/.cache/deno/27462e170380c6afdec6fd4a7bcf61d114bb0d3a.ts b/bundler/tests/.cache/deno/27462e170380c6afdec6fd4a7bcf61d114bb0d3a.ts new file mode 100644 index 00000000000..aed5a10517b --- /dev/null +++ b/bundler/tests/.cache/deno/27462e170380c6afdec6fd4a7bcf61d114bb0d3a.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/of.js + + +import _curry1 from './internal/_curry1.js'; +import _of from './internal/_of.js'; + + +/** + * Returns a singleton array containing the value provided. + * + * Note this `of` is different from the ES6 `of`; See + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> [a] + * @param {*} x any value + * @return {Array} An array wrapping `x`. + * @example + * + * R.of(null); //=> [null] + * R.of([42]); //=> [[42]] + */ +var of = _curry1(_of); +export default of; diff --git a/bundler/tests/.cache/deno/27dc4d2dd7eb352391ca33475abe6dd1dfadb61c.ts b/bundler/tests/.cache/deno/27dc4d2dd7eb352391ca33475abe6dd1dfadb61c.ts new file mode 100644 index 00000000000..b523830c3e5 --- /dev/null +++ b/bundler/tests/.cache/deno/27dc4d2dd7eb352391ca33475abe6dd1dfadb61c.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/bytes_formater@v1.4.0/format.ts + + +import { green } from "./deps.ts"; + +export function format(data: ArrayBufferView) { + const bytes = new Uint8Array(data.buffer); + let out = " +-------------------------------------------------+\n"; + out += ` |${ + green(" 0 1 2 3 4 5 6 7 8 9 a b c d e f ") + }|\n`; + out += + "+--------+-------------------------------------------------+----------------+\n"; + + const lineCount = Math.ceil(bytes.length / 16); + + for (let line = 0; line < lineCount; line++) { + const start = line * 16; + const addr = start.toString(16).padStart(8, "0"); + const lineBytes = bytes.slice(start, start + 16); + + out += `|${green(addr)}| `; + + lineBytes.forEach( + (byte) => (out += byte.toString(16).padStart(2, "0") + " "), + ); + + if (lineBytes.length < 16) { + out += " ".repeat(16 - lineBytes.length); + } + + out += "|"; + + lineBytes.forEach(function (byte) { + return (out += byte > 31 && byte < 127 + ? green(String.fromCharCode(byte)) + : "."); + }); + + if (lineBytes.length < 16) { + out += " ".repeat(16 - lineBytes.length); + } + + out += "|\n"; + } + out += + "+--------+-------------------------------------------------+----------------+"; + return out; +} diff --git a/bundler/tests/.cache/deno/27e585629f2edc542d9103600a9f4b46e97cd38b.ts b/bundler/tests/.cache/deno/27e585629f2edc542d9103600a9f4b46e97cd38b.ts new file mode 100644 index 00000000000..0fc0353c955 --- /dev/null +++ b/bundler/tests/.cache/deno/27e585629f2edc542d9103600a9f4b46e97cd38b.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lte.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns `true` if the first argument is less than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.gte + * @example + * + * R.lte(2, 1); //=> false + * R.lte(2, 2); //=> true + * R.lte(2, 3); //=> true + * R.lte('a', 'z'); //=> true + * R.lte('z', 'a'); //=> false + */ +var lte = _curry2(function lte(a, b) { return a <= b; }); +export default lte; diff --git a/bundler/tests/.cache/deno/27e68e7896365acf65e2f7d3748c899d59dad587.ts b/bundler/tests/.cache/deno/27e68e7896365acf65e2f7d3748c899d59dad587.ts new file mode 100644 index 00000000000..5fd4464c7be --- /dev/null +++ b/bundler/tests/.cache/deno/27e68e7896365acf65e2f7d3748c899d59dad587.ts @@ -0,0 +1,185 @@ +// Loaded from https://deno.land/x/oak/context.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import type { Application, State } from "./application.ts"; +import { Cookies } from "./cookies.ts"; +import { acceptable, acceptWebSocket, WebSocket } from "./deps.ts"; +import { createHttpError } from "./httpError.ts"; +import type { KeyStack } from "./keyStack.ts"; +import { Request } from "./request.ts"; +import { Response } from "./response.ts"; +import { send, SendOptions } from "./send.ts"; +import { + ServerSentEventTarget, + ServerSentEventTargetOptions, +} from "./server_sent_event.ts"; +import type { ErrorStatus, ServerRequest } from "./types.d.ts"; + +export interface ContextSendOptions extends SendOptions { + /** The filename to send, which will be resolved based on the other options. + * If this property is omitted, the current context's `.request.url.pathname` + * will be used. */ + path?: string; +} + +/** Provides context about the current request and response to middleware + * functions. */ +// deno-lint-ignore no-explicit-any +export class Context> { + #socket?: WebSocket; + #sse?: ServerSentEventTarget; + + /** A reference to the current application. */ + app: Application; + + /** An object which allows access to cookies, mediating both the request and + * response. */ + cookies: Cookies; + + /** Is `true` if the current connection is upgradeable to a web socket. + * Otherwise the value is `false`. Use `.upgrade()` to upgrade the connection + * and return the web socket. */ + get isUpgradable(): boolean { + return acceptable(this.request); + } + + /** Determines if the request should be responded to. If `false` when the + * middleware completes processing, the response will not be sent back to the + * requestor. Typically this is used if the middleware will take over low + * level processing of requests and responses, for example if using web + * sockets. This automatically gets set to `false` when the context is + * upgraded to a web socket via the `.upgrade()` method. + * + * The default is `true`. */ + respond: boolean; + + /** An object which contains information about the current request. */ + request: Request; + + /** An object which contains information about the response that will be sent + * when the middleware finishes processing. */ + response: Response; + + /** If the the current context has been upgraded, then this will be set to + * with the web socket, otherwise it is `undefined`. */ + get socket(): WebSocket | undefined { + return this.#socket; + } + + /** The object to pass state to front-end views. This can be typed by + * supplying the generic state argument when creating a new app. For + * example: + * + * ```ts + * const app = new Application<{ foo: string }>(); + * ``` + * + * Or can be contextually inferred based on setting an initial state object: + * + * ```ts + * const app = new Application({ state: { foo: "bar" } }); + * ``` + */ + state: S; + + constructor( + app: Application, + serverRequest: ServerRequest, + secure = false, + ) { + this.app = app; + this.state = app.state; + this.request = new Request(serverRequest, app.proxy, secure); + this.respond = true; + this.response = new Response(this.request); + this.cookies = new Cookies(this.request, this.response, { + keys: this.app.keys as KeyStack | undefined, + secure: this.request.secure, + }); + } + + /** Asserts the condition and if the condition fails, creates an HTTP error + * with the provided status (which defaults to `500`). The error status by + * default will be set on the `.response.status`. + */ + assert( + // deno-lint-ignore no-explicit-any + condition: any, + errorStatus: ErrorStatus = 500, + message?: string, + props?: Record, + ): asserts condition { + if (condition) { + return; + } + const err = createHttpError(errorStatus, message); + if (props) { + Object.assign(err, props); + } + throw err; + } + + /** Asynchronously fulfill a response with a file from the local file + * system. + * + * If the `options.path` is not supplied, the file to be sent will default + * to this `.request.url.pathname`. + * + * Requires Deno read permission. */ + send(options: ContextSendOptions): Promise { + const { path = this.request.url.pathname, ...sendOptions } = options; + return send(this, path, sendOptions); + } + + /** Convert the connection to stream events, returning an event target for + * sending server sent events. Events dispatched on the returned target will + * be sent to the client and be available in the client's `EventSource` that + * initiated the connection. + * + * This will set `.respond` to `false`. */ + sendEvents(options?: ServerSentEventTargetOptions): ServerSentEventTarget { + if (this.#sse) { + return this.#sse; + } + this.respond = false; + return this.#sse = new ServerSentEventTarget( + this.app, + this.request.serverRequest, + options, + ); + } + + /** Create and throw an HTTP Error, which can be used to pass status + * information which can be caught by other middleware to send more + * meaningful error messages back to the client. The passed error status will + * be set on the `.response.status` by default as well. + */ + throw( + errorStatus: ErrorStatus, + message?: string, + props?: Record, + ): never { + const err = createHttpError(errorStatus, message); + if (props) { + Object.assign(err, props); + } + throw err; + } + + /** Take the current request and upgrade it to a web socket, resolving with + * the web socket object. This will set `.respond` to `false`. */ + async upgrade(): Promise { + if (this.#socket) { + return this.#socket; + } + const { conn, r: bufReader, w: bufWriter, headers } = + this.request.serverRequest; + this.#socket = await acceptWebSocket( + { conn, bufReader, bufWriter, headers }, + ); + this.respond = false; + return this.#socket; + } +} diff --git a/bundler/tests/.cache/deno/27e92fa1ee8580ba9ac4ecb4ee98d941111687ac.ts b/bundler/tests/.cache/deno/27e92fa1ee8580ba9ac4ecb4ee98d941111687ac.ts new file mode 100644 index 00000000000..0da095abb24 --- /dev/null +++ b/bundler/tests/.cache/deno/27e92fa1ee8580ba9ac4ecb4ee98d941111687ac.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.73.0/_util/has_own_property.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * Determines whether an object has a property with the specified name. + * Avoid calling prototype builtin `hasOwnProperty` for two reasons: + * + * 1. `hasOwnProperty` is defined on the object as something else: + * + * const options = { + * ending: 'utf8', + * hasOwnProperty: 'foo' + * }; + * options.hasOwnProperty('ending') // throws a TypeError + * + * 2. The object doesn't inherit from `Object.prototype`: + * + * const options = Object.create(null); + * options.ending = 'utf8'; + * options.hasOwnProperty('ending'); // throws a TypeError + * + * @param obj A Object. + * @param v A property name. + * @see https://eslint.org/docs/rules/no-prototype-builtins + */ +export function hasOwnProperty(obj: T, v: PropertyKey): boolean { + if (obj == null) { + return false; + } + return Object.prototype.hasOwnProperty.call(obj, v); +} diff --git a/bundler/tests/.cache/deno/28bd60dc23fe1221d19c06b781ac2bfe434e61e3.ts b/bundler/tests/.cache/deno/28bd60dc23fe1221d19c06b781ac2bfe434e61e3.ts new file mode 100644 index 00000000000..b9eea9f9652 --- /dev/null +++ b/bundler/tests/.cache/deno/28bd60dc23fe1221d19c06b781ac2bfe434e61e3.ts @@ -0,0 +1,278 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/response.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { contentType, Status } from "./deps.ts"; +import type { Request } from "./request.ts"; +import type { ServerResponse } from "./types.d.ts"; +import { encodeUrl, isHtml, isRedirectStatus } from "./util.ts"; + +type Body = + | string + | number + | bigint + | boolean + | symbol + // deno-lint-ignore ban-types + | object + | undefined + | null; +type BodyFunction = () => Body | Promise; + +/** A symbol that indicates to `response.redirect()` to attempt to redirect + * back to the request referrer. For example: + * + * ```ts + * import { Application, REDIRECT_BACK } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * if (ctx.request.url.pathName === "/back") { + * ctx.response.redirect(REDIRECT_BACK, "/"); + * } + * }); + * + * await app.listen({ port: 80 }); + * ``` + */ +export const REDIRECT_BACK = Symbol("redirect backwards"); + +const BODY_TYPES = ["string", "number", "bigint", "boolean", "symbol"]; + +const encoder = new TextEncoder(); + +/** Guard for `Deno.Reader`. */ +// deno-lint-ignore no-explicit-any +function isReader(value: any): value is Deno.Reader { + return value && typeof value === "object" && "read" in value && + typeof value.read === "function"; +} + +async function convertBody( + body: Body | BodyFunction, + type?: string, +): Promise<[Uint8Array | Deno.Reader | undefined, string | undefined]> { + let result: Uint8Array | Deno.Reader | undefined; + if (BODY_TYPES.includes(typeof body)) { + const bodyText = String(body); + result = encoder.encode(bodyText); + type = type ?? (isHtml(bodyText) ? "html" : "text/plain"); + } else if (body instanceof Uint8Array || isReader(body)) { + result = body; + } else if (body && typeof body === "object") { + result = encoder.encode(JSON.stringify(body)); + type = type ?? "json"; + } else if (typeof body === "function") { + const result = body.call(null); + return convertBody(await result, type); + } else if (body) { + throw new TypeError("Response body was set but could not convert."); + } + return [result, type]; +} + +/** An interface to control what response will be sent when the middleware + * finishes processing the request. */ +export class Response { + #body?: Body | BodyFunction; + #headers = new Headers(); + #request: Request; + #resources: number[] = []; + #serverResponse?: ServerResponse; + #status?: Status; + #type?: string; + #writable = true; + + #getBody = async (): Promise => { + const [body, type] = await convertBody(this.body, this.type); + this.type = type; + return body; + }; + + #setContentType = (): void => { + if (this.type) { + const contentTypeString = contentType(this.type); + if (contentTypeString && !this.headers.has("Content-Type")) { + this.headers.append("Content-Type", contentTypeString); + } + } + }; + + /** The body of the response. The body will be automatically processed when + * the response is being sent and converted to a `Uint8Array` or a + * `Deno.Reader`. */ + get body(): Body | BodyFunction { + return this.#body; + } + + /** The body of the response. The body will be automatically processed when + * the response is being sent and converted to a `Uint8Array` or a + * `Deno.Reader`. */ + set body(value: Body | BodyFunction) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#body = value; + } + + /** Headers that will be returned in the response. */ + get headers(): Headers { + return this.#headers; + } + + /** Headers that will be returned in the response. */ + set headers(value: Headers) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#headers = value; + } + + /** The HTTP status of the response. If this has not been explicitly set, + * reading the value will return what would be the value of status if the + * response were sent at this point in processing the middleware. If the body + * has been set, the status will be `200 OK`. If a value for the body has + * not been set yet, the status will be `404 Not Found`. */ + get status(): Status { + if (this.#status) { + return this.#status; + } + const typeofbody = typeof this.body; + return this.body && + (BODY_TYPES.includes(typeofbody) || typeofbody === "object") + ? Status.OK + : Status.NotFound; + } + + /** The HTTP status of the response. If this has not been explicitly set, + * reading the value will return what would be the value of status if the + * response were sent at this point in processing the middleware. If the body + * has been set, the status will be `200 OK`. If a value for the body has + * not been set yet, the status will be `404 Not Found`. */ + set status(value: Status) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#status = value; + } + + /** The media type, or extension of the response. Setting this value will + * ensure an appropriate `Content-Type` header is added to the response. */ + get type(): string | undefined { + return this.#type; + } + /** The media type, or extension of the response. Setting this value will + * ensure an appropriate `Content-Type` header is added to the response. */ + set type(value: string | undefined) { + if (!this.#writable) { + throw new Error("The response is not writable."); + } + this.#type = value; + } + + /** A read-only property which determines if the response is writable or not. + * Once the response has been processed, this value is set to `false`. */ + get writable(): boolean { + return this.#writable; + } + + constructor(request: Request) { + this.#request = request; + } + + /** Add a resource to the list of resources that will be closed when the + * request is destroyed. */ + addResource(rid: number): void { + this.#resources.push(rid); + } + + /** Release any resources that are being tracked by the response. */ + destroy(): void { + this.#writable = false; + this.#body = undefined; + this.#serverResponse = undefined; + for (const rid of this.#resources) { + Deno.close(rid); + } + } + + /** Sets the response to redirect to the supplied `url`. + * + * If the `.status` is not currently a redirect status, the status will be set + * to `302 Found`. + * + * The body will be set to a message indicating the redirection is occurring. + */ + redirect(url: string | URL): void; + /** Sets the response to redirect back to the referrer if available, with an + * optional `alt` URL if there is no referrer header on the request. If there + * is no referrer header, nor an `alt` parameter, the redirect is set to `/`. + * + * If the `.status` is not currently a redirect status, the status will be set + * to `302 Found`. + * + * The body will be set to a message indicating the redirection is occurring. + */ + redirect(url: typeof REDIRECT_BACK, alt?: string | URL): void; + redirect( + url: string | URL | typeof REDIRECT_BACK, + alt: string | URL = "/", + ): void { + if (url === REDIRECT_BACK) { + url = this.#request.headers.get("Referrer") ?? String(alt); + } else if (typeof url === "object") { + url = String(url); + } + this.headers.set("Location", encodeUrl(url)); + if (!this.status || !isRedirectStatus(this.status)) { + this.status = Status.Found; + } + + if (this.#request.accepts("html")) { + url = encodeURI(url); + this.type = "text/html; charset=utf-8"; + this.body = `Redirecting to ${url}.`; + return; + } + this.type = "text/plain; charset=utf-8"; + this.body = `Redirecting to ${url}.`; + } + + /** Take this response and convert it to the response used by the Deno net + * server. Calling this will set the response to not be writable. + * + * Most users will have no need to call this method. */ + async toServerResponse(): Promise { + if (this.#serverResponse) { + return this.#serverResponse; + } + // Process the body + const body = await this.#getBody(); + + // If there is a response type, set the content type header + this.#setContentType(); + + const { headers } = this; + + // If there is no body and no content type and no set length, then set the + // content length to 0 + if ( + !( + body || + headers.has("Content-Type") || + headers.has("Content-Length") + ) + ) { + headers.append("Content-Length", "0"); + } + + this.#writable = false; + return this.#serverResponse = { + status: this.#status ?? (body ? Status.OK : Status.NotFound), + body, + headers, + }; + } +} diff --git a/bundler/tests/.cache/deno/28c92ae545e5e5ba5a1df5a7918d590089ce701d.ts b/bundler/tests/.cache/deno/28c92ae545e5e5ba5a1df5a7918d590089ce701d.ts new file mode 100644 index 00000000000..a0cdbb9bf17 --- /dev/null +++ b/bundler/tests/.cache/deno/28c92ae545e5e5ba5a1df5a7918d590089ce701d.ts @@ -0,0 +1,955 @@ +// Loaded from https://deno.land/std@0.77.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +// It will solve the relative path from `from` to `to`, for instance: +// from = 'C:\\orandea\\test\\aaa' +// to = 'C:\\orandea\\impl\\bbb' +// The output of the function should be: '..\\..\\impl\\bbb' +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/28de55c65e4113976616b3871cff5973c733e391.ts b/bundler/tests/.cache/deno/28de55c65e4113976616b3871cff5973c733e391.ts new file mode 100644 index 00000000000..181f576fad8 --- /dev/null +++ b/bundler/tests/.cache/deno/28de55c65e4113976616b3871cff5973c733e391.ts @@ -0,0 +1,127 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/coerceInputValue.js + + +import arrayFrom from '../polyfills/arrayFrom.js'; +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import didYouMean from '../jsutils/didYouMean.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import isCollection from '../jsutils/isCollection.js'; +import suggestionList from '../jsutils/suggestionList.js'; +import printPathArray from '../jsutils/printPathArray.js'; +import { addPath, pathToArray } from '../jsutils/Path.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { isLeafType, isInputObjectType, isListType, isNonNullType } from '../type/definition.js'; + +/** + * Coerces a JavaScript value given a GraphQL Input Type. + */ +export function coerceInputValue(inputValue, type, onError = defaultOnError) { + return coerceInputValueImpl(inputValue, type, onError); +} + +function defaultOnError(path, invalidValue, error) { + let errorPrefix = 'Invalid value ' + inspect(invalidValue); + + if (path.length > 0) { + errorPrefix += ` at "value${printPathArray(path)}"`; + } + + error.message = errorPrefix + ': ' + error.message; + throw error; +} + +function coerceInputValueImpl(inputValue, type, onError, path) { + if (isNonNullType(type)) { + if (inputValue != null) { + return coerceInputValueImpl(inputValue, type.ofType, onError, path); + } + + onError(pathToArray(path), inputValue, new GraphQLError(`Expected non-nullable type "${inspect(type)}" not to be null.`)); + return; + } + + if (inputValue == null) { + // Explicitly return the value null. + return null; + } + + if (isListType(type)) { + const itemType = type.ofType; + + if (isCollection(inputValue)) { + return arrayFrom(inputValue, (itemValue, index) => { + const itemPath = addPath(path, index); + return coerceInputValueImpl(itemValue, itemType, onError, itemPath); + }); + } // Lists accept a non-list value as a list of one. + + + return [coerceInputValueImpl(inputValue, itemType, onError, path)]; + } + + if (isInputObjectType(type)) { + if (!isObjectLike(inputValue)) { + onError(pathToArray(path), inputValue, new GraphQLError(`Expected type "${type.name}" to be an object.`)); + return; + } + + const coercedValue = {}; + const fieldDefs = type.getFields(); + + for (const field of objectValues(fieldDefs)) { + const fieldValue = inputValue[field.name]; + + if (fieldValue === undefined) { + if (field.defaultValue !== undefined) { + coercedValue[field.name] = field.defaultValue; + } else if (isNonNullType(field.type)) { + const typeStr = inspect(field.type); + onError(pathToArray(path), inputValue, new GraphQLError(`Field "${field.name}" of required type "${typeStr}" was not provided.`)); + } + + continue; + } + + coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, addPath(path, field.name)); + } // Ensure every provided field is defined. + + + for (const fieldName of Object.keys(inputValue)) { + if (!fieldDefs[fieldName]) { + const suggestions = suggestionList(fieldName, Object.keys(type.getFields())); + onError(pathToArray(path), inputValue, new GraphQLError(`Field "${fieldName}" is not defined by type "${type.name}".` + didYouMean(suggestions))); + } + } + + return coercedValue; + } + + if (isLeafType(type)) { + let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(), + // which can throw to indicate failure. If it throws, maintain a reference + // to the original error. + + try { + parseResult = type.parseValue(inputValue); + } catch (error) { + if (error instanceof GraphQLError) { + onError(pathToArray(path), inputValue, error); + } else { + onError(pathToArray(path), inputValue, new GraphQLError(`Expected type "${type.name}". ` + error.message, undefined, undefined, undefined, undefined, error)); + } + + return; + } + + if (parseResult === undefined) { + onError(pathToArray(path), inputValue, new GraphQLError(`Expected type "${type.name}".`)); + } + + return parseResult; + } // Not reachable. All possible input types have been considered. + + + invariant(false, 'Unexpected input type: ' + inspect(type)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/2912a85a196c595e5785799639a6de461b24d928.ts b/bundler/tests/.cache/deno/2912a85a196c595e5785799639a6de461b24d928.ts new file mode 100644 index 00000000000..28a0f612529 --- /dev/null +++ b/bundler/tests/.cache/deno/2912a85a196c595e5785799639a6de461b24d928.ts @@ -0,0 +1,200 @@ +// Loaded from https://deno.land/std@0.84.0/http/http_status.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** HTTP status codes */ +export enum Status { + /** RFC 7231, 6.2.1 */ + Continue = 100, + /** RFC 7231, 6.2.2 */ + SwitchingProtocols = 101, + /** RFC 2518, 10.1 */ + Processing = 102, + /** RFC 8297 **/ + EarlyHints = 103, + /** RFC 7231, 6.3.1 */ + OK = 200, + /** RFC 7231, 6.3.2 */ + Created = 201, + /** RFC 7231, 6.3.3 */ + Accepted = 202, + /** RFC 7231, 6.3.4 */ + NonAuthoritativeInfo = 203, + /** RFC 7231, 6.3.5 */ + NoContent = 204, + /** RFC 7231, 6.3.6 */ + ResetContent = 205, + /** RFC 7233, 4.1 */ + PartialContent = 206, + /** RFC 4918, 11.1 */ + MultiStatus = 207, + /** RFC 5842, 7.1 */ + AlreadyReported = 208, + /** RFC 3229, 10.4.1 */ + IMUsed = 226, + + /** RFC 7231, 6.4.1 */ + MultipleChoices = 300, + /** RFC 7231, 6.4.2 */ + MovedPermanently = 301, + /** RFC 7231, 6.4.3 */ + Found = 302, + /** RFC 7231, 6.4.4 */ + SeeOther = 303, + /** RFC 7232, 4.1 */ + NotModified = 304, + /** RFC 7231, 6.4.5 */ + UseProxy = 305, + /** RFC 7231, 6.4.7 */ + TemporaryRedirect = 307, + /** RFC 7538, 3 */ + PermanentRedirect = 308, + + /** RFC 7231, 6.5.1 */ + BadRequest = 400, + /** RFC 7235, 3.1 */ + Unauthorized = 401, + /** RFC 7231, 6.5.2 */ + PaymentRequired = 402, + /** RFC 7231, 6.5.3 */ + Forbidden = 403, + /** RFC 7231, 6.5.4 */ + NotFound = 404, + /** RFC 7231, 6.5.5 */ + MethodNotAllowed = 405, + /** RFC 7231, 6.5.6 */ + NotAcceptable = 406, + /** RFC 7235, 3.2 */ + ProxyAuthRequired = 407, + /** RFC 7231, 6.5.7 */ + RequestTimeout = 408, + /** RFC 7231, 6.5.8 */ + Conflict = 409, + /** RFC 7231, 6.5.9 */ + Gone = 410, + /** RFC 7231, 6.5.10 */ + LengthRequired = 411, + /** RFC 7232, 4.2 */ + PreconditionFailed = 412, + /** RFC 7231, 6.5.11 */ + RequestEntityTooLarge = 413, + /** RFC 7231, 6.5.12 */ + RequestURITooLong = 414, + /** RFC 7231, 6.5.13 */ + UnsupportedMediaType = 415, + /** RFC 7233, 4.4 */ + RequestedRangeNotSatisfiable = 416, + /** RFC 7231, 6.5.14 */ + ExpectationFailed = 417, + /** RFC 7168, 2.3.3 */ + Teapot = 418, + /** RFC 7540, 9.1.2 */ + MisdirectedRequest = 421, + /** RFC 4918, 11.2 */ + UnprocessableEntity = 422, + /** RFC 4918, 11.3 */ + Locked = 423, + /** RFC 4918, 11.4 */ + FailedDependency = 424, + /** RFC 8470, 5.2 */ + TooEarly = 425, + /** RFC 7231, 6.5.15 */ + UpgradeRequired = 426, + /** RFC 6585, 3 */ + PreconditionRequired = 428, + /** RFC 6585, 4 */ + TooManyRequests = 429, + /** RFC 6585, 5 */ + RequestHeaderFieldsTooLarge = 431, + /** RFC 7725, 3 */ + UnavailableForLegalReasons = 451, + + /** RFC 7231, 6.6.1 */ + InternalServerError = 500, + /** RFC 7231, 6.6.2 */ + NotImplemented = 501, + /** RFC 7231, 6.6.3 */ + BadGateway = 502, + /** RFC 7231, 6.6.4 */ + ServiceUnavailable = 503, + /** RFC 7231, 6.6.5 */ + GatewayTimeout = 504, + /** RFC 7231, 6.6.6 */ + HTTPVersionNotSupported = 505, + /** RFC 2295, 8.1 */ + VariantAlsoNegotiates = 506, + /** RFC 4918, 11.5 */ + InsufficientStorage = 507, + /** RFC 5842, 7.2 */ + LoopDetected = 508, + /** RFC 2774, 7 */ + NotExtended = 510, + /** RFC 6585, 6 */ + NetworkAuthenticationRequired = 511, +} + +export const STATUS_TEXT = new Map([ + [Status.Continue, "Continue"], + [Status.SwitchingProtocols, "Switching Protocols"], + [Status.Processing, "Processing"], + [Status.EarlyHints, "Early Hints"], + [Status.OK, "OK"], + [Status.Created, "Created"], + [Status.Accepted, "Accepted"], + [Status.NonAuthoritativeInfo, "Non-Authoritative Information"], + [Status.NoContent, "No Content"], + [Status.ResetContent, "Reset Content"], + [Status.PartialContent, "Partial Content"], + [Status.MultiStatus, "Multi-Status"], + [Status.AlreadyReported, "Already Reported"], + [Status.IMUsed, "IM Used"], + [Status.MultipleChoices, "Multiple Choices"], + [Status.MovedPermanently, "Moved Permanently"], + [Status.Found, "Found"], + [Status.SeeOther, "See Other"], + [Status.NotModified, "Not Modified"], + [Status.UseProxy, "Use Proxy"], + [Status.TemporaryRedirect, "Temporary Redirect"], + [Status.PermanentRedirect, "Permanent Redirect"], + [Status.BadRequest, "Bad Request"], + [Status.Unauthorized, "Unauthorized"], + [Status.PaymentRequired, "Payment Required"], + [Status.Forbidden, "Forbidden"], + [Status.NotFound, "Not Found"], + [Status.MethodNotAllowed, "Method Not Allowed"], + [Status.NotAcceptable, "Not Acceptable"], + [Status.ProxyAuthRequired, "Proxy Authentication Required"], + [Status.RequestTimeout, "Request Timeout"], + [Status.Conflict, "Conflict"], + [Status.Gone, "Gone"], + [Status.LengthRequired, "Length Required"], + [Status.PreconditionFailed, "Precondition Failed"], + [Status.RequestEntityTooLarge, "Request Entity Too Large"], + [Status.RequestURITooLong, "Request URI Too Long"], + [Status.UnsupportedMediaType, "Unsupported Media Type"], + [Status.RequestedRangeNotSatisfiable, "Requested Range Not Satisfiable"], + [Status.ExpectationFailed, "Expectation Failed"], + [Status.Teapot, "I'm a teapot"], + [Status.MisdirectedRequest, "Misdirected Request"], + [Status.UnprocessableEntity, "Unprocessable Entity"], + [Status.Locked, "Locked"], + [Status.FailedDependency, "Failed Dependency"], + [Status.TooEarly, "Too Early"], + [Status.UpgradeRequired, "Upgrade Required"], + [Status.PreconditionRequired, "Precondition Required"], + [Status.TooManyRequests, "Too Many Requests"], + [Status.RequestHeaderFieldsTooLarge, "Request Header Fields Too Large"], + [Status.UnavailableForLegalReasons, "Unavailable For Legal Reasons"], + [Status.InternalServerError, "Internal Server Error"], + [Status.NotImplemented, "Not Implemented"], + [Status.BadGateway, "Bad Gateway"], + [Status.ServiceUnavailable, "Service Unavailable"], + [Status.GatewayTimeout, "Gateway Timeout"], + [Status.HTTPVersionNotSupported, "HTTP Version Not Supported"], + [Status.VariantAlsoNegotiates, "Variant Also Negotiates"], + [Status.InsufficientStorage, "Insufficient Storage"], + [Status.LoopDetected, "Loop Detected"], + [Status.NotExtended, "Not Extended"], + [Status.NetworkAuthenticationRequired, "Network Authentication Required"], +]); diff --git a/bundler/tests/.cache/deno/298ac5cb1f292fbd1e88d1cb6f8a6a2f92620f4b.ts b/bundler/tests/.cache/deno/298ac5cb1f292fbd1e88d1cb6f8a6a2f92620f4b.ts new file mode 100644 index 00000000000..16c86060b70 --- /dev/null +++ b/bundler/tests/.cache/deno/298ac5cb1f292fbd1e88d1cb6f8a6a2f92620f4b.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std@0.84.0/io/bufio.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/29e96043b98c596a88a9ecb45fc25c9e62e292d0.ts b/bundler/tests/.cache/deno/29e96043b98c596a88a9ecb45fc25c9e62e292d0.ts new file mode 100644 index 00000000000..c6ef006a926 --- /dev/null +++ b/bundler/tests/.cache/deno/29e96043b98c596a88a9ecb45fc25c9e62e292d0.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/intersperse.js + + +import _checkForMethod from './internal/_checkForMethod.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates a new list with the separator interposed between elements. + * + * Dispatches to the `intersperse` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} separator The element to add to the list. + * @param {Array} list The list to be interposed. + * @return {Array} The new list. + * @example + * + * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's'] + */ +var intersperse = _curry2(_checkForMethod('intersperse', function intersperse(separator, list) { + var out = []; + var idx = 0; + var length = list.length; + while (idx < length) { + if (idx === length - 1) { + out.push(list[idx]); + } else { + out.push(list[idx], separator); + } + idx += 1; + } + return out; +})); +export default intersperse; diff --git a/bundler/tests/.cache/deno/2a148ed2236f95bf3d312375264d5b808491bbb3.ts b/bundler/tests/.cache/deno/2a148ed2236f95bf3d312375264d5b808491bbb3.ts new file mode 100644 index 00000000000..c2a7b617829 --- /dev/null +++ b/bundler/tests/.cache/deno/2a148ed2236f95bf3d312375264d5b808491bbb3.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/applyTo.js + + +import _curry2 from './internal/_curry2.js'; + +/** + * Takes a value and applies a function to it. + * + * This function is also known as the `thrush` combinator. + * + * @func + * @memberOf R + * @since v0.25.0 + * @category Function + * @sig a -> (a -> b) -> b + * @param {*} x The value + * @param {Function} f The function to apply + * @return {*} The result of applying `f` to `x` + * @example + * + * const t42 = R.applyTo(42); + * t42(R.identity); //=> 42 + * t42(R.add(1)); //=> 43 + */ +var applyTo = _curry2(function applyTo(x, f) { return f(x); }); +export default applyTo; diff --git a/bundler/tests/.cache/deno/2a49ade11cb9979e607b3f10474f75c7bb9b8683.ts b/bundler/tests/.cache/deno/2a49ade11cb9979e607b3f10474f75c7bb9b8683.ts new file mode 100644 index 00000000000..b80680349eb --- /dev/null +++ b/bundler/tests/.cache/deno/2a49ade11cb9979e607b3f10474f75c7bb9b8683.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.85.0/encoding/base64.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +// deno-fmt-ignore +const base64abc = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", + "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", + "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", + "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", "+", "/"]; + +/** + * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 + * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation + * @param data + */ +export function encode(data: ArrayBuffer | string): string { + const uint8 = + typeof data === "string" + ? new TextEncoder().encode(data) + : data instanceof Uint8Array + ? data + : new Uint8Array(data); + let result = "", + i; + const l = uint8.length; + for (i = 2; i < l; i += 3) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + // 1 octet yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + // 2 octets yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} + +/** + * Decodes a given RFC4648 base64 encoded string + * @param b64 + */ +export function decode(b64: string): Uint8Array { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for (let i = 0; i < size; i++) { + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} diff --git a/bundler/tests/.cache/deno/2a4f10b4b743fbf437d81567a8a0af2ab149a14a.ts b/bundler/tests/.cache/deno/2a4f10b4b743fbf437d81567a8a0af2ab149a14a.ts new file mode 100644 index 00000000000..42d3d18136e --- /dev/null +++ b/bundler/tests/.cache/deno/2a4f10b4b743fbf437d81567a8a0af2ab149a14a.ts @@ -0,0 +1,597 @@ +// Loaded from https://deno.land/std/datetime/formatter.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { + CallbackResult, + ReceiverResult, + Rule, + TestFunction, + TestResult, + Tokenizer, +} from "./tokenizer.ts"; + +function digits(value: string | number, count = 2): string { + return String(value).padStart(count, "0"); +} + +// as declared as in namespace Intl +type DateTimeFormatPartTypes = + | "day" + | "dayPeriod" + // | "era" + | "hour" + | "literal" + | "minute" + | "month" + | "second" + | "timeZoneName" + // | "weekday" + | "year" + | "fractionalSecond"; + +interface DateTimeFormatPart { + type: DateTimeFormatPartTypes; + value: string; +} + +type TimeZone = "UTC"; + +interface Options { + timeZone?: TimeZone; +} + +function createLiteralTestFunction(value: string): TestFunction { + return (string: string): TestResult => { + return string.startsWith(value) + ? { value, length: value.length } + : undefined; + }; +} + +function createMatchTestFunction(match: RegExp): TestFunction { + return (string: string): TestResult => { + const result = match.exec(string); + if (result) return { value: result, length: result[0].length }; + }; +} + +// according to unicode symbols (http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) +const defaultRules = [ + { + test: createLiteralTestFunction("yyyy"), + fn: (): CallbackResult => ({ type: "year", value: "numeric" }), + }, + { + test: createLiteralTestFunction("yy"), + fn: (): CallbackResult => ({ type: "year", value: "2-digit" }), + }, + + { + test: createLiteralTestFunction("MM"), + fn: (): CallbackResult => ({ type: "month", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("M"), + fn: (): CallbackResult => ({ type: "month", value: "numeric" }), + }, + { + test: createLiteralTestFunction("dd"), + fn: (): CallbackResult => ({ type: "day", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("d"), + fn: (): CallbackResult => ({ type: "day", value: "numeric" }), + }, + + { + test: createLiteralTestFunction("HH"), + fn: (): CallbackResult => ({ type: "hour", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("H"), + fn: (): CallbackResult => ({ type: "hour", value: "numeric" }), + }, + { + test: createLiteralTestFunction("hh"), + fn: (): CallbackResult => ({ + type: "hour", + value: "2-digit", + hour12: true, + }), + }, + { + test: createLiteralTestFunction("h"), + fn: (): CallbackResult => ({ + type: "hour", + value: "numeric", + hour12: true, + }), + }, + { + test: createLiteralTestFunction("mm"), + fn: (): CallbackResult => ({ type: "minute", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("m"), + fn: (): CallbackResult => ({ type: "minute", value: "numeric" }), + }, + { + test: createLiteralTestFunction("ss"), + fn: (): CallbackResult => ({ type: "second", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("s"), + fn: (): CallbackResult => ({ type: "second", value: "numeric" }), + }, + { + test: createLiteralTestFunction("SSS"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 3 }), + }, + { + test: createLiteralTestFunction("SS"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 2 }), + }, + { + test: createLiteralTestFunction("S"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 1 }), + }, + + { + test: createLiteralTestFunction("a"), + fn: (value: unknown): CallbackResult => ({ + type: "dayPeriod", + value: value as string, + }), + }, + + // quoted literal + { + test: createMatchTestFunction(/^(')(?\\.|[^\']*)\1/), + fn: (match: unknown): CallbackResult => ({ + type: "literal", + value: (match as RegExpExecArray).groups!.value as string, + }), + }, + // literal + { + test: createMatchTestFunction(/^.+?\s*/), + fn: (match: unknown): CallbackResult => ({ + type: "literal", + value: (match as RegExpExecArray)[0], + }), + }, +]; + +type FormatPart = { + type: DateTimeFormatPartTypes; + value: string | number; + hour12?: boolean; +}; +type Format = FormatPart[]; + +export class DateTimeFormatter { + #format: Format; + + constructor(formatString: string, rules: Rule[] = defaultRules) { + const tokenizer = new Tokenizer(rules); + this.#format = tokenizer.tokenize( + formatString, + ({ type, value, hour12 }) => { + const result = { + type, + value, + } as unknown as ReceiverResult; + if (hour12) result.hour12 = hour12 as boolean; + return result; + }, + ) as Format; + } + + format(date: Date, options: Options = {}): string { + let string = ""; + + const utc = options.timeZone === "UTC"; + + for (const token of this.#format) { + const type = token.type; + + switch (type) { + case "year": { + const value = utc ? date.getUTCFullYear() : date.getFullYear(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2).slice(-2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "month": { + const value = (utc ? date.getUTCMonth() : date.getMonth()) + 1; + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "day": { + const value = utc ? date.getUTCDate() : date.getDate(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "hour": { + let value = utc ? date.getUTCHours() : date.getHours(); + value -= token.hour12 && date.getHours() > 12 ? 12 : 0; + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "minute": { + const value = utc ? date.getUTCMinutes() : date.getMinutes(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "second": { + const value = utc ? date.getUTCSeconds() : date.getSeconds(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "fractionalSecond": { + const value = utc + ? date.getUTCMilliseconds() + : date.getMilliseconds(); + string += digits(value, Number(token.value)); + break; + } + // FIXME(bartlomieju) + case "timeZoneName": { + // string += utc ? "Z" : token.value + break; + } + case "dayPeriod": { + string += token.value ? (date.getHours() >= 12 ? "PM" : "AM") : ""; + break; + } + case "literal": { + string += token.value; + break; + } + + default: + throw Error(`FormatterError: { ${token.type} ${token.value} }`); + } + } + + return string; + } + + parseToParts(string: string): DateTimeFormatPart[] { + const parts: DateTimeFormatPart[] = []; + + for (const token of this.#format) { + const type = token.type; + + let value = ""; + switch (token.type) { + case "year": { + switch (token.value) { + case "numeric": { + value = /^\d{1,4}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + } + break; + } + case "month": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + case "narrow": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + case "short": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + case "long": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "day": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "hour": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + if (token.hour12 && parseInt(value) > 12) { + console.error( + `Trying to parse hour greater than 12. Use 'H' instead of 'h'.`, + ); + } + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + if (token.hour12 && parseInt(value) > 12) { + console.error( + `Trying to parse hour greater than 12. Use 'HH' instead of 'hh'.`, + ); + } + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "minute": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "second": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "fractionalSecond": { + value = new RegExp(`^\\d{${token.value}}`).exec(string) + ?.[0] as string; + break; + } + case "timeZoneName": { + value = token.value as string; + break; + } + case "dayPeriod": { + value = /^(A|P)M/.exec(string)?.[0] as string; + break; + } + case "literal": { + if (!string.startsWith(token.value as string)) { + throw Error( + `Literal "${token.value}" not found "${string.slice(0, 25)}"`, + ); + } + value = token.value as string; + break; + } + + default: + throw Error(`${token.type} ${token.value}`); + } + + if (!value) { + throw Error( + `value not valid for token { ${type} ${value} } ${ + string.slice( + 0, + 25, + ) + }`, + ); + } + parts.push({ type, value }); + + string = string.slice(value.length); + } + + if (string.length) { + throw Error( + `datetime string was not fully parsed! ${string.slice(0, 25)}`, + ); + } + + return parts; + } + + /** sort & filter dateTimeFormatPart */ + sortDateTimeFormatPart(parts: DateTimeFormatPart[]): DateTimeFormatPart[] { + let result: DateTimeFormatPart[] = []; + const typeArray = [ + "year", + "month", + "day", + "hour", + "minute", + "second", + "fractionalSecond", + ]; + for (const type of typeArray) { + const current = parts.findIndex((el) => el.type === type); + if (current !== -1) { + result = result.concat(parts.splice(current, 1)); + } + } + result = result.concat(parts); + return result; + } + + partsToDate(parts: DateTimeFormatPart[]): Date { + const date = new Date(); + const utc = parts.find( + (part) => part.type === "timeZoneName" && part.value === "UTC", + ); + + utc ? date.setUTCHours(0, 0, 0, 0) : date.setHours(0, 0, 0, 0); + for (const part of parts) { + switch (part.type) { + case "year": { + const value = Number(part.value.padStart(4, "20")); + utc ? date.setUTCFullYear(value) : date.setFullYear(value); + break; + } + case "month": { + const value = Number(part.value) - 1; + utc ? date.setUTCMonth(value) : date.setMonth(value); + break; + } + case "day": { + const value = Number(part.value); + utc ? date.setUTCDate(value) : date.setDate(value); + break; + } + case "hour": { + let value = Number(part.value); + const dayPeriod = parts.find( + (part: DateTimeFormatPart) => part.type === "dayPeriod", + ); + if (dayPeriod?.value === "PM") value += 12; + utc ? date.setUTCHours(value) : date.setHours(value); + break; + } + case "minute": { + const value = Number(part.value); + utc ? date.setUTCMinutes(value) : date.setMinutes(value); + break; + } + case "second": { + const value = Number(part.value); + utc ? date.setUTCSeconds(value) : date.setSeconds(value); + break; + } + case "fractionalSecond": { + const value = Number(part.value); + utc ? date.setUTCMilliseconds(value) : date.setMilliseconds(value); + break; + } + } + } + return date; + } + + parse(string: string): Date { + const parts = this.parseToParts(string); + const sortParts = this.sortDateTimeFormatPart(parts); + return this.partsToDate(sortParts); + } +} diff --git a/bundler/tests/.cache/deno/2a7bb7657d73da4a00f49d87322148f3eb15a422.ts b/bundler/tests/.cache/deno/2a7bb7657d73da4a00f49d87322148f3eb15a422.ts new file mode 100644 index 00000000000..aa7e7f60bc3 --- /dev/null +++ b/bundler/tests/.cache/deno/2a7bb7657d73da4a00f49d87322148f3eb15a422.ts @@ -0,0 +1,85 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/rsa_js.ts + + +import { + rsa_oaep_encrypt, + rsa_pkcs1_encrypt, + rsa_oaep_decrypt, + rsa_pkcs1_decrypt, + rsa_pkcs1_verify, + rsa_pkcs1_sign, +} from "./rsa_internal.ts"; +import { RawBinary } from "./../binary.ts"; +import type { RSAOption, RSASignOption } from "./common.ts"; +import { createHash } from "../hash.ts"; +import type { RSAKey } from "./rsa_key.ts"; + +export class PureRSA { + static async encrypt(key: RSAKey, message: Uint8Array, options: RSAOption) { + if (!key.e) throw "Invalid RSA key"; + + if (options.padding === "oaep") { + return new RawBinary(rsa_oaep_encrypt( + key.length, + key.n, + key.e, + message, + options.hash, + )); + } else if (options.padding === "pkcs1") { + return new RawBinary( + rsa_pkcs1_encrypt(key.length, key.n, key.e, message), + ); + } + + throw "Invalid parameters"; + } + + static async decrypt(key: RSAKey, ciper: Uint8Array, options: RSAOption) { + if (!key.d) throw "Invalid RSA key"; + + if (options.padding === "oaep") { + return new RawBinary(rsa_oaep_decrypt( + key.length, + key.n, + key.d, + ciper, + options.hash, + )); + } else if (options.padding === "pkcs1") { + return new RawBinary( + rsa_pkcs1_decrypt(key.length, key.n, key.d, ciper), + ); + } + + throw "Invalid parameters"; + } + + static async verify( + key: RSAKey, + signature: Uint8Array, + message: Uint8Array, + options: RSASignOption, + ) { + if (!key.e) throw "Invalid RSA key"; + + return rsa_pkcs1_verify( + key.length, + key.n, + key.e, + signature, + createHash(options.hash).update(message).digest(), + ); + } + + static async sign(key: RSAKey, message: Uint8Array, options: RSASignOption) { + if (!key.d) throw "You need private key to sign the message"; + + return rsa_pkcs1_sign( + key.length, + key.n, + key.d, + createHash(options.hash).update(message).digest(), + ); + } +} diff --git a/bundler/tests/.cache/deno/2aa86467537e9d09af6d641d0c97285a8806f65d.ts b/bundler/tests/.cache/deno/2aa86467537e9d09af6d641d0c97285a8806f65d.ts new file mode 100644 index 00000000000..02a5b5ae3d1 --- /dev/null +++ b/bundler/tests/.cache/deno/2aa86467537e9d09af6d641d0c97285a8806f65d.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/predicates.js + + +import { Kind } from './kinds.js'; +export function isDefinitionNode(node) { + return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node); +} +export function isExecutableDefinitionNode(node) { + return node.kind === Kind.OPERATION_DEFINITION || node.kind === Kind.FRAGMENT_DEFINITION; +} +export function isSelectionNode(node) { + return node.kind === Kind.FIELD || node.kind === Kind.FRAGMENT_SPREAD || node.kind === Kind.INLINE_FRAGMENT; +} +export function isValueNode(node) { + return node.kind === Kind.VARIABLE || node.kind === Kind.INT || node.kind === Kind.FLOAT || node.kind === Kind.STRING || node.kind === Kind.BOOLEAN || node.kind === Kind.NULL || node.kind === Kind.ENUM || node.kind === Kind.LIST || node.kind === Kind.OBJECT; +} +export function isTypeNode(node) { + return node.kind === Kind.NAMED_TYPE || node.kind === Kind.LIST_TYPE || node.kind === Kind.NON_NULL_TYPE; +} +export function isTypeSystemDefinitionNode(node) { + return node.kind === Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === Kind.DIRECTIVE_DEFINITION; +} +export function isTypeDefinitionNode(node) { + return node.kind === Kind.SCALAR_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION; +} +export function isTypeSystemExtensionNode(node) { + return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node); +} +export function isTypeExtensionNode(node) { + return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/2adbfab19da02fbe2ff485f9c907b5b023afc151.ts b/bundler/tests/.cache/deno/2adbfab19da02fbe2ff485f9c907b5b023afc151.ts new file mode 100644 index 00000000000..1847bbb4d32 --- /dev/null +++ b/bundler/tests/.cache/deno/2adbfab19da02fbe2ff485f9c907b5b023afc151.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/types.ts + + +import type { ServerRequest } from "./vendor/https/deno.land/std/http/server.ts"; +import type { Context } from "./context.ts"; +import type { Application } from "./app.ts"; + +/** `Renderer` is the interface that wraps the `render` function. */ +export type Renderer = { + templates?: string; + render(name: string, data: T): Promise; +}; + +/* `HandlerFunc` defines a function to serve HTTP requests. */ +export type HandlerFunc = (c: Context) => Promise | unknown; + +/* `MiddlewareFunc` defines a function to process middleware. */ +export type MiddlewareFunc = (next: HandlerFunc) => HandlerFunc; + +export type ContextOptions = { app: Application; r: ServerRequest }; diff --git a/bundler/tests/.cache/deno/2ae6669cfb6f655894f8861c3ae839388b467167.ts b/bundler/tests/.cache/deno/2ae6669cfb6f655894f8861c3ae839388b467167.ts new file mode 100644 index 00000000000..2f4f90b2dbe --- /dev/null +++ b/bundler/tests/.cache/deno/2ae6669cfb6f655894f8861c3ae839388b467167.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/instanceOf.js + + +/** + * A replacement for instanceof which includes an error warning when multi-realm + * constructors are detected. + */ +// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production +// See: https://webpack.js.org/guides/production/ +export default Deno.env.NODE_ENV === 'production' ? +/* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ +// eslint-disable-next-line no-shadow +function instanceOf(value, constructor) { + return value instanceof constructor; +} : // eslint-disable-next-line no-shadow +function instanceOf(value, constructor) { + if (value instanceof constructor) { + return true; + } + + if (value) { + const valueClass = value.constructor; + const className = constructor.name; + + if (className && valueClass && valueClass.name === className) { + throw new Error(`Cannot use ${className} "${value}" from another module or realm. + +Ensure that there is only one instance of "graphql" in the node_modules +directory. If different versions of "graphql" are the dependencies of other +relied on modules, use "resolutions" to ensure only one version is installed. + +https://yarnpkg.com/en/docs/selective-version-resolutions + +Duplicate "graphql" modules cannot be used at the same time since different +versions may have different capabilities and behavior. The data from one +version used in the function from another could produce confusing and +spurious results.`); + } + } + + return false; +}; diff --git a/bundler/tests/.cache/deno/2aeb963553d95da69a2f534fba2a864e731cdd74.ts b/bundler/tests/.cache/deno/2aeb963553d95da69a2f534fba2a864e731cdd74.ts new file mode 100644 index 00000000000..3c04698697c --- /dev/null +++ b/bundler/tests/.cache/deno/2aeb963553d95da69a2f534fba2a864e731cdd74.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/uniqBy.js + + +import _Set from './internal/_Set.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied function to + * each list element. Prefers the first item if the supplied function produces + * the same value on two items. [`R.equals`](#equals) is used for comparison. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> b) -> [a] -> [a] + * @param {Function} fn A function used to produce a value to use during comparisons. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10] + */ +var uniqBy = _curry2(function uniqBy(fn, list) { + var set = new _Set(); + var result = []; + var idx = 0; + var appliedItem, item; + + while (idx < list.length) { + item = list[idx]; + appliedItem = fn(item); + if (set.add(appliedItem)) { + result.push(item); + } + idx += 1; + } + return result; +}); +export default uniqBy; diff --git a/bundler/tests/.cache/deno/2b206cba17cc968297d736bf2465e83e79ae74ad.ts b/bundler/tests/.cache/deno/2b206cba17cc968297d736bf2465e83e79ae74ad.ts new file mode 100644 index 00000000000..42aea708ccb --- /dev/null +++ b/bundler/tests/.cache/deno/2b206cba17cc968297d736bf2465e83e79ae74ad.ts @@ -0,0 +1,985 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/definition.js + + +// FIXME + +/* eslint-disable import/no-cycle */ +import objectEntries from '../polyfills/objectEntries.js'; +import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols.js'; +import inspect from '../jsutils/inspect.js'; +import keyMap from '../jsutils/keyMap.js'; +import mapValue from '../jsutils/mapValue.js'; +import toObjMap from '../jsutils/toObjMap.js'; +import devAssert from '../jsutils/devAssert.js'; +import keyValMap from '../jsutils/keyValMap.js'; +import instanceOf from '../jsutils/instanceOf.js'; +import didYouMean from '../jsutils/didYouMean.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import identityFunc from '../jsutils/identityFunc.js'; +import defineToJSON from '../jsutils/defineToJSON.js'; +import suggestionList from '../jsutils/suggestionList.js'; +import { Kind } from '../language/kinds.js'; +import { print } from '../language/printer.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { valueFromASTUntyped } from '../utilities/valueFromASTUntyped.js'; +export function isType(type) { + return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type); +} +export function assertType(type) { + if (!isType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL type.`); + } + + return type; +} +/** + * There are predicates for each kind of GraphQL type. + */ + +// eslint-disable-next-line no-redeclare +export function isScalarType(type) { + return instanceOf(type, GraphQLScalarType); +} +export function assertScalarType(type) { + if (!isScalarType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Scalar type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isObjectType(type) { + return instanceOf(type, GraphQLObjectType); +} +export function assertObjectType(type) { + if (!isObjectType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Object type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isInterfaceType(type) { + return instanceOf(type, GraphQLInterfaceType); +} +export function assertInterfaceType(type) { + if (!isInterfaceType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Interface type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isUnionType(type) { + return instanceOf(type, GraphQLUnionType); +} +export function assertUnionType(type) { + if (!isUnionType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Union type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isEnumType(type) { + return instanceOf(type, GraphQLEnumType); +} +export function assertEnumType(type) { + if (!isEnumType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Enum type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isInputObjectType(type) { + return instanceOf(type, GraphQLInputObjectType); +} +export function assertInputObjectType(type) { + if (!isInputObjectType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Input Object type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isListType(type) { + return instanceOf(type, GraphQLList); +} +export function assertListType(type) { + if (!isListType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL List type.`); + } + + return type; +} +// eslint-disable-next-line no-redeclare +export function isNonNullType(type) { + return instanceOf(type, GraphQLNonNull); +} +export function assertNonNullType(type) { + if (!isNonNullType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL Non-Null type.`); + } + + return type; +} +/** + * These types may be used as input types for arguments and directives. + */ + +export function isInputType(type) { + return isScalarType(type) || isEnumType(type) || isInputObjectType(type) || isWrappingType(type) && isInputType(type.ofType); +} +export function assertInputType(type) { + if (!isInputType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL input type.`); + } + + return type; +} +/** + * These types may be used as output types as the result of fields. + */ + +export function isOutputType(type) { + return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isWrappingType(type) && isOutputType(type.ofType); +} +export function assertOutputType(type) { + if (!isOutputType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL output type.`); + } + + return type; +} +/** + * These types may describe types which may be leaf values. + */ + +export function isLeafType(type) { + return isScalarType(type) || isEnumType(type); +} +export function assertLeafType(type) { + if (!isLeafType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL leaf type.`); + } + + return type; +} +/** + * These types may describe the parent context of a selection set. + */ + +export function isCompositeType(type) { + return isObjectType(type) || isInterfaceType(type) || isUnionType(type); +} +export function assertCompositeType(type) { + if (!isCompositeType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL composite type.`); + } + + return type; +} +/** + * These types may describe the parent context of a selection set. + */ + +export function isAbstractType(type) { + return isInterfaceType(type) || isUnionType(type); +} +export function assertAbstractType(type) { + if (!isAbstractType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL abstract type.`); + } + + return type; +} +/** + * List Type Wrapper + * + * A list is a wrapping type which points to another type. + * Lists are often created within the context of defining the fields of + * an object type. + * + * Example: + * + * const PersonType = new GraphQLObjectType({ + * name: 'Person', + * fields: () => ({ + * parents: { type: GraphQLList(PersonType) }, + * children: { type: GraphQLList(PersonType) }, + * }) + * }) + * + */ +// FIXME: workaround to fix issue with Babel parser + +/* :: +declare class GraphQLList<+T: GraphQLType> { + +ofType: T; + static (ofType: T): GraphQLList; + // Note: constructors cannot be used for covariant types. Drop the "new". + constructor(ofType: GraphQLType): void; +} +*/ + +export function GraphQLList(ofType) { + if (this instanceof GraphQLList) { + this.ofType = assertType(ofType); + } else { + return new GraphQLList(ofType); + } +} // Need to cast through any to alter the prototype. + +GraphQLList.prototype.toString = function toString() { + return '[' + String(this.ofType) + ']'; +}; + +Object.defineProperty(GraphQLList.prototype, SYMBOL_TO_STRING_TAG, { + get() { + return 'GraphQLList'; + } + +}); +defineToJSON(GraphQLList); +/** + * Non-Null Type Wrapper + * + * A non-null is a wrapping type which points to another type. + * Non-null types enforce that their values are never null and can ensure + * an error is raised if this ever occurs during a request. It is useful for + * fields which you can make a strong guarantee on non-nullability, for example + * usually the id field of a database row will never be null. + * + * Example: + * + * const RowType = new GraphQLObjectType({ + * name: 'Row', + * fields: () => ({ + * id: { type: GraphQLNonNull(GraphQLString) }, + * }) + * }) + * + * Note: the enforcement of non-nullability occurs within the executor. + */ +// FIXME: workaround to fix issue with Babel parser + +/* :: +declare class GraphQLNonNull<+T: GraphQLNullableType> { + +ofType: T; + static (ofType: T): GraphQLNonNull; + // Note: constructors cannot be used for covariant types. Drop the "new". + constructor(ofType: GraphQLType): void; +} +*/ + +export function GraphQLNonNull(ofType) { + if (this instanceof GraphQLNonNull) { + this.ofType = assertNullableType(ofType); + } else { + return new GraphQLNonNull(ofType); + } +} // Need to cast through any to alter the prototype. + +GraphQLNonNull.prototype.toString = function toString() { + return String(this.ofType) + '!'; +}; + +Object.defineProperty(GraphQLNonNull.prototype, SYMBOL_TO_STRING_TAG, { + get() { + return 'GraphQLNonNull'; + } + +}); +defineToJSON(GraphQLNonNull); +/** + * These types wrap and modify other types + */ + +export function isWrappingType(type) { + return isListType(type) || isNonNullType(type); +} +export function assertWrappingType(type) { + if (!isWrappingType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL wrapping type.`); + } + + return type; +} +/** + * These types can all accept null as a value. + */ + +export function isNullableType(type) { + return isType(type) && !isNonNullType(type); +} +export function assertNullableType(type) { + if (!isNullableType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL nullable type.`); + } + + return type; +} +/* eslint-disable no-redeclare */ + +export function getNullableType(type) { + /* eslint-enable no-redeclare */ + if (type) { + return isNonNullType(type) ? type.ofType : type; + } +} +/** + * These named types do not include modifiers like List or NonNull. + */ + +export function isNamedType(type) { + return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type); +} +export function assertNamedType(type) { + if (!isNamedType(type)) { + throw new Error(`Expected ${inspect(type)} to be a GraphQL named type.`); + } + + return type; +} +/* eslint-disable no-redeclare */ + +export function getNamedType(type) { + /* eslint-enable no-redeclare */ + if (type) { + let unwrappedType = type; + + while (isWrappingType(unwrappedType)) { + unwrappedType = unwrappedType.ofType; + } + + return unwrappedType; + } +} +/** + * Used while defining GraphQL types to allow for circular references in + * otherwise immutable type definitions. + */ + +function resolveThunk(thunk) { + // $FlowFixMe(>=0.90.0) + return typeof thunk === 'function' ? thunk() : thunk; +} + +function undefineIfEmpty(arr) { + return arr && arr.length > 0 ? arr : undefined; +} +/** + * Scalar Type Definition + * + * The leaf values of any request and input values to arguments are + * Scalars (or Enums) and are defined with a name and a series of functions + * used to parse input from ast or variables and to ensure validity. + * + * If a type's serialize function does not return a value (i.e. it returns + * `undefined`) then an error will be raised and a `null` value will be returned + * in the response. If the serialize function returns `null`, then no error will + * be included in the response. + * + * Example: + * + * const OddType = new GraphQLScalarType({ + * name: 'Odd', + * serialize(value) { + * if (value % 2 === 1) { + * return value; + * } + * } + * }); + * + */ + + +export class GraphQLScalarType { + constructor(config) { + const parseValue = config.parseValue ?? identityFunc; + this.name = config.name; + this.description = config.description; + this.serialize = config.serialize ?? identityFunc; + this.parseValue = parseValue; + + this.parseLiteral = config.parseLiteral ?? (node => parseValue(valueFromASTUntyped(node))); + + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + devAssert(typeof config.name === 'string', 'Must provide name.'); + devAssert(config.serialize == null || typeof config.serialize === 'function', `${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`); + + if (config.parseLiteral) { + devAssert(typeof config.parseValue === 'function' && typeof config.parseLiteral === 'function', `${this.name} must provide both "parseValue" and "parseLiteral" functions.`); + } + } + + toConfig() { + return { + name: this.name, + description: this.description, + serialize: this.serialize, + parseValue: this.parseValue, + parseLiteral: this.parseLiteral, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLScalarType'; + } + +} +defineToJSON(GraphQLScalarType); + +/** + * Object Type Definition + * + * Almost all of the GraphQL types you define will be object types. Object types + * have a name, but most importantly describe their fields. + * + * Example: + * + * const AddressType = new GraphQLObjectType({ + * name: 'Address', + * fields: { + * street: { type: GraphQLString }, + * number: { type: GraphQLInt }, + * formatted: { + * type: GraphQLString, + * resolve(obj) { + * return obj.number + ' ' + obj.street + * } + * } + * } + * }); + * + * When two types need to refer to each other, or a type needs to refer to + * itself in a field, you can use a function expression (aka a closure or a + * thunk) to supply the fields lazily. + * + * Example: + * + * const PersonType = new GraphQLObjectType({ + * name: 'Person', + * fields: () => ({ + * name: { type: GraphQLString }, + * bestFriend: { type: PersonType }, + * }) + * }); + * + */ +export class GraphQLObjectType { + constructor(config) { + this.name = config.name; + this.description = config.description; + this.isTypeOf = config.isTypeOf; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + this._fields = defineFieldMap.bind(undefined, config); + this._interfaces = defineInterfaces.bind(undefined, config); + devAssert(typeof config.name === 'string', 'Must provide name.'); + devAssert(config.isTypeOf == null || typeof config.isTypeOf === 'function', `${this.name} must provide "isTypeOf" as a function, ` + `but got: ${inspect(config.isTypeOf)}.`); + } + + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } + + return this._fields; + } + + getInterfaces() { + if (typeof this._interfaces === 'function') { + this._interfaces = this._interfaces(); + } + + return this._interfaces; + } + + toConfig() { + return { + name: this.name, + description: this.description, + interfaces: this.getInterfaces(), + fields: fieldsToFieldsConfig(this.getFields()), + isTypeOf: this.isTypeOf, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes || [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLObjectType'; + } + +} +defineToJSON(GraphQLObjectType); + +function defineInterfaces(config) { + const interfaces = resolveThunk(config.interfaces) ?? []; + devAssert(Array.isArray(interfaces), `${config.name} interfaces must be an Array or a function which returns an Array.`); + return interfaces; +} + +function defineFieldMap(config) { + const fieldMap = resolveThunk(config.fields); + devAssert(isPlainObj(fieldMap), `${config.name} fields must be an object with field names as keys or a function which returns such an object.`); + return mapValue(fieldMap, (fieldConfig, fieldName) => { + devAssert(isPlainObj(fieldConfig), `${config.name}.${fieldName} field config must be an object.`); + devAssert(!('isDeprecated' in fieldConfig), `${config.name}.${fieldName} should provide "deprecationReason" instead of "isDeprecated".`); + devAssert(fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function', `${config.name}.${fieldName} field resolver must be a function if ` + `provided, but got: ${inspect(fieldConfig.resolve)}.`); + const argsConfig = fieldConfig.args ?? {}; + devAssert(isPlainObj(argsConfig), `${config.name}.${fieldName} args must be an object with argument names as keys.`); + const args = objectEntries(argsConfig).map(([argName, argConfig]) => ({ + name: argName, + description: argConfig.description, + type: argConfig.type, + defaultValue: argConfig.defaultValue, + extensions: argConfig.extensions && toObjMap(argConfig.extensions), + astNode: argConfig.astNode + })); + return { + name: fieldName, + description: fieldConfig.description, + type: fieldConfig.type, + args, + resolve: fieldConfig.resolve, + subscribe: fieldConfig.subscribe, + isDeprecated: fieldConfig.deprecationReason != null, + deprecationReason: fieldConfig.deprecationReason, + extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions), + astNode: fieldConfig.astNode + }; + }); +} + +function isPlainObj(obj) { + return isObjectLike(obj) && !Array.isArray(obj); +} + +function fieldsToFieldsConfig(fields) { + return mapValue(fields, field => ({ + description: field.description, + type: field.type, + args: argsToArgsConfig(field.args), + resolve: field.resolve, + subscribe: field.subscribe, + deprecationReason: field.deprecationReason, + extensions: field.extensions, + astNode: field.astNode + })); +} +/** + * @internal + */ + + +export function argsToArgsConfig(args) { + return keyValMap(args, arg => arg.name, arg => ({ + description: arg.description, + type: arg.type, + defaultValue: arg.defaultValue, + extensions: arg.extensions, + astNode: arg.astNode + })); +} +export function isRequiredArgument(arg) { + return isNonNullType(arg.type) && arg.defaultValue === undefined; +} + +/** + * Interface Type Definition + * + * When a field can return one of a heterogeneous set of types, a Interface type + * is used to describe what types are possible, what fields are in common across + * all types, as well as a function to determine which type is actually used + * when the field is resolved. + * + * Example: + * + * const EntityType = new GraphQLInterfaceType({ + * name: 'Entity', + * fields: { + * name: { type: GraphQLString } + * } + * }); + * + */ +export class GraphQLInterfaceType { + constructor(config) { + this.name = config.name; + this.description = config.description; + this.resolveType = config.resolveType; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + this._fields = defineFieldMap.bind(undefined, config); + this._interfaces = defineInterfaces.bind(undefined, config); + devAssert(typeof config.name === 'string', 'Must provide name.'); + devAssert(config.resolveType == null || typeof config.resolveType === 'function', `${this.name} must provide "resolveType" as a function, ` + `but got: ${inspect(config.resolveType)}.`); + } + + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } + + return this._fields; + } + + getInterfaces() { + if (typeof this._interfaces === 'function') { + this._interfaces = this._interfaces(); + } + + return this._interfaces; + } + + toConfig() { + return { + name: this.name, + description: this.description, + interfaces: this.getInterfaces(), + fields: fieldsToFieldsConfig(this.getFields()), + resolveType: this.resolveType, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLInterfaceType'; + } + +} +defineToJSON(GraphQLInterfaceType); + +/** + * Union Type Definition + * + * When a field can return one of a heterogeneous set of types, a Union type + * is used to describe what types are possible as well as providing a function + * to determine which type is actually used when the field is resolved. + * + * Example: + * + * const PetType = new GraphQLUnionType({ + * name: 'Pet', + * types: [ DogType, CatType ], + * resolveType(value) { + * if (value instanceof Dog) { + * return DogType; + * } + * if (value instanceof Cat) { + * return CatType; + * } + * } + * }); + * + */ +export class GraphQLUnionType { + constructor(config) { + this.name = config.name; + this.description = config.description; + this.resolveType = config.resolveType; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + this._types = defineTypes.bind(undefined, config); + devAssert(typeof config.name === 'string', 'Must provide name.'); + devAssert(config.resolveType == null || typeof config.resolveType === 'function', `${this.name} must provide "resolveType" as a function, ` + `but got: ${inspect(config.resolveType)}.`); + } + + getTypes() { + if (typeof this._types === 'function') { + this._types = this._types(); + } + + return this._types; + } + + toConfig() { + return { + name: this.name, + description: this.description, + types: this.getTypes(), + resolveType: this.resolveType, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLUnionType'; + } + +} +defineToJSON(GraphQLUnionType); + +function defineTypes(config) { + const types = resolveThunk(config.types); + devAssert(Array.isArray(types), `Must provide Array of types or a function which returns such an array for Union ${config.name}.`); + return types; +} + +/** + * Enum Type Definition + * + * Some leaf values of requests and input values are Enums. GraphQL serializes + * Enum values as strings, however internally Enums can be represented by any + * kind of type, often integers. + * + * Example: + * + * const RGBType = new GraphQLEnumType({ + * name: 'RGB', + * values: { + * RED: { value: 0 }, + * GREEN: { value: 1 }, + * BLUE: { value: 2 } + * } + * }); + * + * Note: If a value is not provided in a definition, the name of the enum value + * will be used as its internal value. + */ +export class GraphQLEnumType +/* */ +{ + constructor(config) { + this.name = config.name; + this.description = config.description; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + this._values = defineEnumValues(this.name, config.values); + this._valueLookup = new Map(this._values.map(enumValue => [enumValue.value, enumValue])); + this._nameLookup = keyMap(this._values, value => value.name); + devAssert(typeof config.name === 'string', 'Must provide name.'); + } + + getValues() { + return this._values; + } + + getValue(name) { + return this._nameLookup[name]; + } + + serialize(outputValue) { + const enumValue = this._valueLookup.get(outputValue); + + if (enumValue === undefined) { + throw new GraphQLError(`Enum "${this.name}" cannot represent value: ${inspect(outputValue)}`); + } + + return enumValue.name; + } + + parseValue(inputValue) + /* T */ + { + if (typeof inputValue !== 'string') { + const valueStr = inspect(inputValue); + throw new GraphQLError(`Enum "${this.name}" cannot represent non-string value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr)); + } + + const enumValue = this.getValue(inputValue); + + if (enumValue == null) { + throw new GraphQLError(`Value "${inputValue}" does not exist in "${this.name}" enum.` + didYouMeanEnumValue(this, inputValue)); + } + + return enumValue.value; + } + + parseLiteral(valueNode, _variables) + /* T */ + { + // Note: variables will be resolved to a value before calling this function. + if (valueNode.kind !== Kind.ENUM) { + const valueStr = print(valueNode); + throw new GraphQLError(`Enum "${this.name}" cannot represent non-enum value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr), valueNode); + } + + const enumValue = this.getValue(valueNode.value); + + if (enumValue == null) { + const valueStr = print(valueNode); + throw new GraphQLError(`Value "${valueStr}" does not exist in "${this.name}" enum.` + didYouMeanEnumValue(this, valueStr), valueNode); + } + + return enumValue.value; + } + + toConfig() { + const values = keyValMap(this.getValues(), value => value.name, value => ({ + description: value.description, + value: value.value, + deprecationReason: value.deprecationReason, + extensions: value.extensions, + astNode: value.astNode + })); + return { + name: this.name, + description: this.description, + values, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLEnumType'; + } + +} +defineToJSON(GraphQLEnumType); + +function didYouMeanEnumValue(enumType, unknownValueStr) { + const allNames = enumType.getValues().map(value => value.name); + const suggestedValues = suggestionList(unknownValueStr, allNames); + return didYouMean('the enum value', suggestedValues); +} + +function defineEnumValues(typeName, valueMap) { + devAssert(isPlainObj(valueMap), `${typeName} values must be an object with value names as keys.`); + return objectEntries(valueMap).map(([valueName, valueConfig]) => { + devAssert(isPlainObj(valueConfig), `${typeName}.${valueName} must refer to an object with a "value" key ` + `representing an internal value but got: ${inspect(valueConfig)}.`); + devAssert(!('isDeprecated' in valueConfig), `${typeName}.${valueName} should provide "deprecationReason" instead of "isDeprecated".`); + return { + name: valueName, + description: valueConfig.description, + value: valueConfig.value !== undefined ? valueConfig.value : valueName, + isDeprecated: valueConfig.deprecationReason != null, + deprecationReason: valueConfig.deprecationReason, + extensions: valueConfig.extensions && toObjMap(valueConfig.extensions), + astNode: valueConfig.astNode + }; + }); +} + +/** + * Input Object Type Definition + * + * An input object defines a structured collection of fields which may be + * supplied to a field argument. + * + * Using `NonNull` will ensure that a value must be provided by the query + * + * Example: + * + * const GeoPoint = new GraphQLInputObjectType({ + * name: 'GeoPoint', + * fields: { + * lat: { type: GraphQLNonNull(GraphQLFloat) }, + * lon: { type: GraphQLNonNull(GraphQLFloat) }, + * alt: { type: GraphQLFloat, defaultValue: 0 }, + * } + * }); + * + */ +export class GraphQLInputObjectType { + constructor(config) { + this.name = config.name; + this.description = config.description; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes); + this._fields = defineInputFieldMap.bind(undefined, config); + devAssert(typeof config.name === 'string', 'Must provide name.'); + } + + getFields() { + if (typeof this._fields === 'function') { + this._fields = this._fields(); + } + + return this._fields; + } + + toConfig() { + const fields = mapValue(this.getFields(), field => ({ + description: field.description, + type: field.type, + defaultValue: field.defaultValue, + extensions: field.extensions, + astNode: field.astNode + })); + return { + name: this.name, + description: this.description, + fields, + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [] + }; + } + + toString() { + return this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLInputObjectType'; + } + +} +defineToJSON(GraphQLInputObjectType); + +function defineInputFieldMap(config) { + const fieldMap = resolveThunk(config.fields); + devAssert(isPlainObj(fieldMap), `${config.name} fields must be an object with field names as keys or a function which returns such an object.`); + return mapValue(fieldMap, (fieldConfig, fieldName) => { + devAssert(!('resolve' in fieldConfig), `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`); + return { + name: fieldName, + description: fieldConfig.description, + type: fieldConfig.type, + defaultValue: fieldConfig.defaultValue, + extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions), + astNode: fieldConfig.astNode + }; + }); +} + +export function isRequiredInputField(field) { + return isNonNullType(field.type) && field.defaultValue === undefined; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/2b85ac5eb77f99400bf84a9424fc4de3e0475e48.ts b/bundler/tests/.cache/deno/2b85ac5eb77f99400bf84a9424fc4de3e0475e48.ts new file mode 100644 index 00000000000..d74b41cbe8e --- /dev/null +++ b/bundler/tests/.cache/deno/2b85ac5eb77f99400bf84a9424fc4de3e0475e48.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.84.0/encoding/utf8.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/2b9aa922c0505f3cae5a1babf57f87feb67c278e.ts b/bundler/tests/.cache/deno/2b9aa922c0505f3cae5a1babf57f87feb67c278e.ts new file mode 100644 index 00000000000..a04148fc614 --- /dev/null +++ b/bundler/tests/.cache/deno/2b9aa922c0505f3cae5a1babf57f87feb67c278e.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isRgbColor.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/; + +/** + * @ignore + */ +const rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/; + +/** + * @ignore + */ +const rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/; + +/** + * @ignore + */ +const rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/; + +export const isRgbColor = (str: string, includePercentValues = true) => { + assertString(str); + + if (!includePercentValues) { + return rgbColor.test(str) || rgbaColor.test(str); + } + + return ( + rgbColor.test(str) || + rgbaColor.test(str) || + rgbColorPercent.test(str) || + rgbaColorPercent.test(str) + ); +}; diff --git a/bundler/tests/.cache/deno/2bb0930ebf629f0da142ad9e1271c5c148e4944e.ts b/bundler/tests/.cache/deno/2bb0930ebf629f0da142ad9e1271c5c148e4944e.ts new file mode 100644 index 00000000000..97609bb0976 --- /dev/null +++ b/bundler/tests/.cache/deno/2bb0930ebf629f0da142ad9e1271c5c148e4944e.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/gzheader.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +export function GZheader() { + /* true if compressed data believed to be text */ + this.text = 0; + /* modification time */ + this.time = 0; + /* extra flags (not used when writing a gzip file) */ + this.xflags = 0; + /* operating system */ + this.os = 0; + /* pointer to extra field or Z_NULL if none */ + this.extra = null; + /* extra field length (valid if extra != Z_NULL) */ + this.extra_len = 0; // Actually, we don't need it in JS, + // but leave for few code modifications + + // + // Setup limits is not necessary because in js we should not preallocate memory + // for inflate use constant limit in 65536 bytes + // + + /* space at extra (only when reading header) */ + // this.extra_max = 0; + /* pointer to zero-terminated file name or Z_NULL */ + this.name = ''; + /* space at name (only when reading header) */ + // this.name_max = 0; + /* pointer to zero-terminated comment or Z_NULL */ + this.comment = ''; + /* space at comment (only when reading header) */ + // this.comm_max = 0; + /* true if there was or will be a header crc */ + this.hcrc = 0; + /* true when done reading gzip header (not used when writing a gzip file) */ + this.done = false; +} diff --git a/bundler/tests/.cache/deno/2c0f916aad3a2664589f13bd555e6d7ca230f463.ts b/bundler/tests/.cache/deno/2c0f916aad3a2664589f13bd555e6d7ca230f463.ts new file mode 100644 index 00000000000..5591a164aff --- /dev/null +++ b/bundler/tests/.cache/deno/2c0f916aad3a2664589f13bd555e6d7ca230f463.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isAscii.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const ascii = /^[\x00-\x7F]+$/; + +export const isAscii = (str: string) => { + assertString(str); + return ascii.test(str); +}; diff --git a/bundler/tests/.cache/deno/2c829318184ed6639358ba8c587ecc74e074fa74.ts b/bundler/tests/.cache/deno/2c829318184ed6639358ba8c587ecc74e074fa74.ts new file mode 100644 index 00000000000..99094388b46 --- /dev/null +++ b/bundler/tests/.cache/deno/2c829318184ed6639358ba8c587ecc74e074fa74.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/error/formatError.js + + +import devAssert from '../jsutils/devAssert.js'; + +/** + * Given a GraphQLError, format it according to the rules described by the + * Response Format, Errors section of the GraphQL Specification. + */ +export function formatError(error) { + devAssert(error, 'Received null or undefined error.'); + const message = error.message ?? 'An unknown error occurred.'; + const locations = error.locations; + const path = error.path; + const extensions = error.extensions; + return extensions ? { + message, + locations, + path, + extensions + } : { + message, + locations, + path + }; +} +/** + * @see https://github.com/graphql/graphql-spec/blob/master/spec/Section%207%20--%20Response.md#errors + */ \ No newline at end of file diff --git a/bundler/tests/.cache/deno/2c95bfb85b9454cdc2563b45c46a55d3eb3e22f9.ts b/bundler/tests/.cache/deno/2c95bfb85b9454cdc2563b45c46a55d3eb3e22f9.ts new file mode 100644 index 00000000000..873b93f246a --- /dev/null +++ b/bundler/tests/.cache/deno/2c95bfb85b9454cdc2563b45c46a55d3eb3e22f9.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/mysql/mod.ts + + +export type { ClientConfig } from "./src/client.ts"; +export { Client } from "./src/client.ts"; +export { Connection } from "./src/connection.ts"; + +export type { LoggerConfig } from "./src/logger.ts"; +export { configLogger } from "./src/logger.ts"; + +export { log } from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/2c9ab67ec6b292145ce3387a2d66ac5e20322116.ts b/bundler/tests/.cache/deno/2c9ab67ec6b292145ce3387a2d66ac5e20322116.ts new file mode 100644 index 00000000000..31408434811 --- /dev/null +++ b/bundler/tests/.cache/deno/2c9ab67ec6b292145ce3387a2d66ac5e20322116.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/where.js + + +import _curry2 from './internal/_curry2.js'; +import _has from './internal/_has.js'; + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec. Each of the spec's own properties must be a predicate function. + * Each predicate is applied to the value of the corresponding property of the + * test object. `where` returns true if all the predicates return true, false + * otherwise. + * + * `where` is well suited to declaratively expressing constraints for other + * functions such as [`filter`](#filter) and [`find`](#find). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Object + * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.propSatisfies, R.whereEq + * @example + * + * // pred :: Object -> Boolean + * const pred = R.where({ + * a: R.equals('foo'), + * b: R.complement(R.equals('bar')), + * x: R.gt(R.__, 10), + * y: R.lt(R.__, 20) + * }); + * + * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true + * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false + */ +var where = _curry2(function where(spec, testObj) { + for (var prop in spec) { + if (_has(prop, spec) && !spec[prop](testObj[prop])) { + return false; + } + } + return true; +}); +export default where; diff --git a/bundler/tests/.cache/deno/2cb81a47a21610dbaec5920cc0c2c766d85a15a6.ts b/bundler/tests/.cache/deno/2cb81a47a21610dbaec5920cc0c2c766d85a15a6.ts new file mode 100644 index 00000000000..6f2977decb8 --- /dev/null +++ b/bundler/tests/.cache/deno/2cb81a47a21610dbaec5920cc0c2c766d85a15a6.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_assoc.js + + +import _isArray from './_isArray.js'; +import _isInteger from './_isInteger.js'; + +/** + * Makes a shallow clone of an object, setting or overriding the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @private + * @param {String|Number} prop The property name to set + * @param {*} val The new value + * @param {Object|Array} obj The object to clone + * @return {Object|Array} A new object equivalent to the original except for the changed property. + */ +export default function _assoc(prop, val, obj) { + if (_isInteger(prop) && _isArray(obj)) { + var arr = [].concat(obj); + arr[prop] = val; + return arr; + } + + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + result[prop] = val; + return result; +} diff --git a/bundler/tests/.cache/deno/2cc038acc3fd43bd5da344af0274fd101aa8daea.ts b/bundler/tests/.cache/deno/2cc038acc3fd43bd5da344af0274fd101aa8daea.ts new file mode 100644 index 00000000000..8d1c2ebd479 --- /dev/null +++ b/bundler/tests/.cache/deno/2cc038acc3fd43bd5da344af0274fd101aa8daea.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std/io/bufio.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/2d91840595800da7c7a080a47ad734733d020438.ts b/bundler/tests/.cache/deno/2d91840595800da7c7a080a47ad734733d020438.ts new file mode 100644 index 00000000000..a80f06854e2 --- /dev/null +++ b/bundler/tests/.cache/deno/2d91840595800da7c7a080a47ad734733d020438.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/pairs.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _toString = Object.prototype.toString; + +function resolveYamlPairs(data: Any[][]): boolean { + const result = new Array(data.length); + + for (let index = 0; index < data.length; index++) { + const pair = data[index]; + + if (_toString.call(pair) !== "[object Object]") return false; + + const keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [keys[0], pair[keys[0] as Any]]; + } + + return true; +} + +function constructYamlPairs(data: string): Any[] { + if (data === null) return []; + + const result = new Array(data.length); + + for (let index = 0; index < data.length; index += 1) { + const pair = data[index]; + + const keys = Object.keys(pair); + + result[index] = [keys[0], pair[keys[0] as Any]]; + } + + return result; +} + +export const pairs = new Type("tag:yaml.org,2002:pairs", { + construct: constructYamlPairs, + kind: "sequence", + resolve: resolveYamlPairs, +}); diff --git a/bundler/tests/.cache/deno/2daddb70e9028c84a3ab6b1842002c2c1be2fa34.ts b/bundler/tests/.cache/deno/2daddb70e9028c84a3ab6b1842002c2c1be2fa34.ts new file mode 100644 index 00000000000..d1289a415c2 --- /dev/null +++ b/bundler/tests/.cache/deno/2daddb70e9028c84a3ab6b1842002c2c1be2fa34.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pathSatisfies.js + + +import _curry3 from './internal/_curry3.js'; +import path from './path.js'; + + +/** + * Returns `true` if the specified object property at given path satisfies the + * given predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Logic + * @typedefn Idx = String | Int | Symbol + * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean + * @param {Function} pred + * @param {Array} propPath + * @param {*} obj + * @return {Boolean} + * @see R.propSatisfies, R.path + * @example + * + * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true + * R.pathSatisfies(R.is(Object), [], {x: {y: 2}}); //=> true + */ +var pathSatisfies = _curry3(function pathSatisfies(pred, propPath, obj) { + return pred(path(propPath, obj)); +}); +export default pathSatisfies; diff --git a/bundler/tests/.cache/deno/2dd9daf0365ff7332ecf10d95e54c759b4948c2f.ts b/bundler/tests/.cache/deno/2dd9daf0365ff7332ecf10d95e54c759b4948c2f.ts new file mode 100644 index 00000000000..205c17b6959 --- /dev/null +++ b/bundler/tests/.cache/deno/2dd9daf0365ff7332ecf10d95e54c759b4948c2f.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/primitives.ts + + +import { createHash } from "./../hash.ts"; + +type HashFunction = (b: Uint8Array) => Uint8Array; +type HashAlgorithm = "sha1" | "sha256"; + +/** + * I2OSP converts a nonnegative integer to an octet string of a specified length. + * @param x nonnegative integer to be converted + * @param length intended length of the resulting octet string + */ +export function i2osp(x: bigint, length: number): Uint8Array { + const t = new Uint8Array(length); + for (let i = length - 1; i >= 0; i--) { + if (x === 0n) break; + t[i] = Number(x & 255n); + x = x >> 8n; + } + + return t; +} + +export function os2ip(m: Uint8Array): bigint { + let n = 0n; + for (const c of m) n = (n << 8n) + BigInt(c); + return n; +} + +/** + * MGF1 is a Mask Generation Function based on a hash function. + * https://tools.ietf.org/html/rfc3447#appendix-B.2.1 + * + * @param seed seed from which mask is generated, an octet string + * @param length intended length in octets of the mask + * @param hash Hash function + */ +export function mgf1( + seed: Uint8Array, + length: number, + hash: HashFunction | HashAlgorithm, +): Uint8Array { + let counter = 0n; + let output: number[] = []; + + while (output.length < length) { + let h; + const c = i2osp(counter, 4); + + if (typeof hash === "function") { + h = hash(new Uint8Array([...seed, ...c])); + } else { + h = new Uint8Array( + createHash(hash).update(new Uint8Array([...seed, ...c])).digest(), + ); + } + + output = [...output, ...h]; + counter++; + } + + return new Uint8Array(output.slice(0, length)); +} diff --git a/bundler/tests/.cache/deno/2dde8fd41dc224af301d4dae192fd3ff2d2d8ea4.ts b/bundler/tests/.cache/deno/2dde8fd41dc224af301d4dae192fd3ff2d2d8ea4.ts new file mode 100644 index 00000000000..e4af2d0ad4a --- /dev/null +++ b/bundler/tests/.cache/deno/2dde8fd41dc224af301d4dae192fd3ff2d2d8ea4.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isEthereumAddress.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const eth = /^(0x)[0-9a-f]{40}$/i; + +export const isEthereumAddress = (str: string) => { + assertString(str); + return eth.test(str); +}; diff --git a/bundler/tests/.cache/deno/2e608badf8e4c4f7e7f2f8fba093e9c5cfa16aef.ts b/bundler/tests/.cache/deno/2e608badf8e4c4f7e7f2f8fba093e9c5cfa16aef.ts new file mode 100644 index 00000000000..e3229af6ff3 --- /dev/null +++ b/bundler/tests/.cache/deno/2e608badf8e4c4f7e7f2f8fba093e9c5cfa16aef.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.79.0/path/_interface.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/2ea9f96bcef16acd5a14b3b12a64faf9ce974cf1.ts b/bundler/tests/.cache/deno/2ea9f96bcef16acd5a14b3b12a64faf9ce974cf1.ts new file mode 100644 index 00000000000..91d38f4236b --- /dev/null +++ b/bundler/tests/.cache/deno/2ea9f96bcef16acd5a14b3b12a64faf9ce974cf1.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/x/mysql/src/deferred.ts + + +import { Deferred, deferred } from "../deps.ts"; + +/** @ignore */ +export class DeferredStack { + private _queue: Deferred[] = []; + private _size = 0; + + constructor( + readonly _maxSize: number, + private _array: T[] = [], + private readonly creator: () => Promise, + ) { + this._size = _array.length; + } + + get size(): number { + return this._size; + } + + get maxSize(): number { + return this._maxSize; + } + + get available(): number { + return this._array.length; + } + + async pop(): Promise { + if (this._array.length) { + return this._array.pop()!; + } else if (this._size < this._maxSize) { + this._size++; + let item: T; + try { + item = await this.creator(); + } catch (err) { + this._size--; + throw err; + } + return item; + } + const defer = deferred(); + this._queue.push(defer); + return await defer; + } + + /** Returns false if the item is consumed by a deferred pop */ + push(item: T): boolean { + if (this._queue.length) { + this._queue.shift()!.resolve(item); + return false; + } else { + this._array.push(item); + return true; + } + } + + tryPopAvailable() { + return this._array.pop(); + } + + remove(item: T): boolean { + const index = this._array.indexOf(item); + if (index < 0) return false; + this._array.splice(index, 1); + this._size--; + return true; + } + + reduceSize() { + this._size--; + } +} diff --git a/bundler/tests/.cache/deno/2eb2a9bbb4a98bf9058a8541d9e5776223322ead.ts b/bundler/tests/.cache/deno/2eb2a9bbb4a98bf9058a8541d9e5776223322ead.ts new file mode 100644 index 00000000000..9ab72ec8327 --- /dev/null +++ b/bundler/tests/.cache/deno/2eb2a9bbb4a98bf9058a8541d9e5776223322ead.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/into.js + + +import _clone from './internal/_clone.js'; +import _curry3 from './internal/_curry3.js'; +import _isTransformer from './internal/_isTransformer.js'; +import _reduce from './internal/_reduce.js'; +import _stepCat from './internal/_stepCat.js'; + + +/** + * Transforms the items of the list with the transducer and appends the + * transformed items to the accumulator using an appropriate iterator function + * based on the accumulator type. + * + * The accumulator can be an array, string, object or a transformer. Iterated + * items will be appended to arrays and concatenated to strings. Objects will + * be merged directly or 2-item arrays will be merged as key, value pairs. + * + * The accumulator can also be a transformer object that provides a 2-arity + * reducing iterator function, step, 0-arity initial value function, init, and + * 1-arity result extraction function result. The step function is used as the + * iterator function in reduce. The result function is used to convert the + * final accumulator into the return type and in most cases is R.identity. The + * init function is used to provide the initial accumulator. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the + * transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig a -> (b -> b) -> [c] -> a + * @param {*} acc The initial accumulator value. + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.transduce + * @example + * + * const numbers = [1, 2, 3, 4]; + * const transducer = R.compose(R.map(R.add(1)), R.take(2)); + * + * R.into([], transducer, numbers); //=> [2, 3] + * + * const intoArray = R.into([]); + * intoArray(transducer, numbers); //=> [2, 3] + */ +var into = _curry3(function into(acc, xf, list) { + return _isTransformer(acc) ? + _reduce(xf(acc), acc['@@transducer/init'](), list) : + _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list); +}); +export default into; diff --git a/bundler/tests/.cache/deno/2ef2bd5be99dcd0298be30f72f284528f693b921.ts b/bundler/tests/.cache/deno/2ef2bd5be99dcd0298be30f72f284528f693b921.ts new file mode 100644 index 00000000000..cacd0cc5635 --- /dev/null +++ b/bundler/tests/.cache/deno/2ef2bd5be99dcd0298be30f72f284528f693b921.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.86.0/io/ioutil.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/2f2e2e321041c2a2def9cdb74571e35ce247b8b0.ts b/bundler/tests/.cache/deno/2f2e2e321041c2a2def9cdb74571e35ce247b8b0.ts new file mode 100644 index 00000000000..eecc1ddf2a9 --- /dev/null +++ b/bundler/tests/.cache/deno/2f2e2e321041c2a2def9cdb74571e35ce247b8b0.ts @@ -0,0 +1,61 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISO8601.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// from http://goo.gl/0ejHHW +/** + * @ignore + */ +const iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; + +/** + * @ignore + */ +const isValidDate = (str: string) => { + // str must have passed the ISO8601 check + // this check is meant to catch invalid dates + // like 2009-02-31 + // first check for ordinal dates + const ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/); + if (ordinalMatch) { + const oYear = Number(ordinalMatch[1]); + const oDay = Number(ordinalMatch[2]); + // if is leap year + if ((oYear % 4 === 0 && oYear % 100 !== 0) || oYear % 400 === 0) + return oDay <= 366; + return oDay <= 365; + } + + // @ts-ignore allowing typedoc to build + const match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number); + const year = match[1]; + const month = match[2]; + const day = match[3]; + const monthString = month ? `0${month}`.slice(-2) : month; + const dayString = day ? `0${day}`.slice(-2) : day; + + // create a date object and compare + const d = new Date(`${year}-${monthString || '01'}-${dayString || '01'}`); + if (month && day) { + return ( + d.getUTCFullYear() === year && + d.getUTCMonth() + 1 === month && + d.getUTCDate() === day + ); + } + return true; +}; + +type ISO8601Options = { + strict?: boolean; +}; + +export const isISO8601 = (str: string, options?: ISO8601Options) => { + assertString(str); + const check = iso8601.test(str); + if (!options) return check; + if (check && options.strict) return isValidDate(str); + return check; +}; diff --git a/bundler/tests/.cache/deno/2f4a062634f232715eddb20bb0db67b256d8d214.ts b/bundler/tests/.cache/deno/2f4a062634f232715eddb20bb0db67b256d8d214.ts new file mode 100644 index 00000000000..cfffe60c913 --- /dev/null +++ b/bundler/tests/.cache/deno/2f4a062634f232715eddb20bb0db67b256d8d214.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.79.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/2f6c7999de82334780169a0ad1aa18457941dd57.ts b/bundler/tests/.cache/deno/2f6c7999de82334780169a0ad1aa18457941dd57.ts new file mode 100644 index 00000000000..49d16e72791 --- /dev/null +++ b/bundler/tests/.cache/deno/2f6c7999de82334780169a0ad1aa18457941dd57.ts @@ -0,0 +1,1527 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/parser.js + + +import inspect from '../jsutils/inspect.js'; +import devAssert from '../jsutils/devAssert.js'; +import { syntaxError } from '../error/syntaxError.js'; +import { Kind } from './kinds.js'; +import { Source } from './source.js'; +import { DirectiveLocation } from './directiveLocation.js'; +import { TokenKind } from './tokenKind.js'; +import { Lexer, isPunctuatorTokenKind } from './lexer.js'; +import { Location } from './ast.js'; +/** + * Configuration options to control parser behavior + */ + +/** + * Given a GraphQL source, parses it into a Document. + * Throws GraphQLError if a syntax error is encountered. + */ +export function parse(source, options) { + const parser = new Parser(source, options); + return parser.parseDocument(); +} +/** + * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for + * that value. + * Throws GraphQLError if a syntax error is encountered. + * + * This is useful within tools that operate upon GraphQL Values directly and + * in isolation of complete GraphQL documents. + * + * Consider providing the results to the utility function: valueFromAST(). + */ + +export function parseValue(source, options) { + const parser = new Parser(source, options); + parser.expectToken(TokenKind.SOF); + const value = parser.parseValueLiteral(false); + parser.expectToken(TokenKind.EOF); + return value; +} +/** + * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for + * that type. + * Throws GraphQLError if a syntax error is encountered. + * + * This is useful within tools that operate upon GraphQL Types directly and + * in isolation of complete GraphQL documents. + * + * Consider providing the results to the utility function: typeFromAST(). + */ + +export function parseType(source, options) { + const parser = new Parser(source, options); + parser.expectToken(TokenKind.SOF); + const type = parser.parseTypeReference(); + parser.expectToken(TokenKind.EOF); + return type; +} + +class Parser { + constructor(source, options) { + const sourceObj = typeof source === 'string' ? new Source(source) : source; + devAssert(sourceObj instanceof Source, `Must provide Source. Received: ${inspect(sourceObj)}.`); + this._lexer = new Lexer(sourceObj); + this._options = options; + } + /** + * Converts a name lex token into a name parse node. + */ + + + parseName() { + const token = this.expectToken(TokenKind.NAME); + return { + kind: Kind.NAME, + value: token.value, + loc: this.loc(token) + }; + } // Implements the parsing rules in the Document section. + + /** + * Document : Definition+ + */ + + + parseDocument() { + const start = this._lexer.token; + return { + kind: Kind.DOCUMENT, + definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF), + loc: this.loc(start) + }; + } + /** + * Definition : + * - ExecutableDefinition + * - TypeSystemDefinition + * - TypeSystemExtension + * + * ExecutableDefinition : + * - OperationDefinition + * - FragmentDefinition + */ + + + parseDefinition() { + if (this.peek(TokenKind.NAME)) { + switch (this._lexer.token.value) { + case 'query': + case 'mutation': + case 'subscription': + return this.parseOperationDefinition(); + + case 'fragment': + return this.parseFragmentDefinition(); + + case 'schema': + case 'scalar': + case 'type': + case 'interface': + case 'union': + case 'enum': + case 'input': + case 'directive': + return this.parseTypeSystemDefinition(); + + case 'extend': + return this.parseTypeSystemExtension(); + } + } else if (this.peek(TokenKind.BRACE_L)) { + return this.parseOperationDefinition(); + } else if (this.peekDescription()) { + return this.parseTypeSystemDefinition(); + } + + throw this.unexpected(); + } // Implements the parsing rules in the Operations section. + + /** + * OperationDefinition : + * - SelectionSet + * - OperationType Name? VariableDefinitions? Directives? SelectionSet + */ + + + parseOperationDefinition() { + const start = this._lexer.token; + + if (this.peek(TokenKind.BRACE_L)) { + return { + kind: Kind.OPERATION_DEFINITION, + operation: 'query', + name: undefined, + variableDefinitions: [], + directives: [], + selectionSet: this.parseSelectionSet(), + loc: this.loc(start) + }; + } + + const operation = this.parseOperationType(); + let name; + + if (this.peek(TokenKind.NAME)) { + name = this.parseName(); + } + + return { + kind: Kind.OPERATION_DEFINITION, + operation, + name, + variableDefinitions: this.parseVariableDefinitions(), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + loc: this.loc(start) + }; + } + /** + * OperationType : one of query mutation subscription + */ + + + parseOperationType() { + const operationToken = this.expectToken(TokenKind.NAME); + + switch (operationToken.value) { + case 'query': + return 'query'; + + case 'mutation': + return 'mutation'; + + case 'subscription': + return 'subscription'; + } + + throw this.unexpected(operationToken); + } + /** + * VariableDefinitions : ( VariableDefinition+ ) + */ + + + parseVariableDefinitions() { + return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R); + } + /** + * VariableDefinition : Variable : Type DefaultValue? Directives[Const]? + */ + + + parseVariableDefinition() { + const start = this._lexer.token; + return { + kind: Kind.VARIABLE_DEFINITION, + variable: this.parseVariable(), + type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), + defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined, + directives: this.parseDirectives(true), + loc: this.loc(start) + }; + } + /** + * Variable : $ Name + */ + + + parseVariable() { + const start = this._lexer.token; + this.expectToken(TokenKind.DOLLAR); + return { + kind: Kind.VARIABLE, + name: this.parseName(), + loc: this.loc(start) + }; + } + /** + * SelectionSet : { Selection+ } + */ + + + parseSelectionSet() { + const start = this._lexer.token; + return { + kind: Kind.SELECTION_SET, + selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R), + loc: this.loc(start) + }; + } + /** + * Selection : + * - Field + * - FragmentSpread + * - InlineFragment + */ + + + parseSelection() { + return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); + } + /** + * Field : Alias? Name Arguments? Directives? SelectionSet? + * + * Alias : Name : + */ + + + parseField() { + const start = this._lexer.token; + const nameOrAlias = this.parseName(); + let alias; + let name; + + if (this.expectOptionalToken(TokenKind.COLON)) { + alias = nameOrAlias; + name = this.parseName(); + } else { + name = nameOrAlias; + } + + return { + kind: Kind.FIELD, + alias, + name, + arguments: this.parseArguments(false), + directives: this.parseDirectives(false), + selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined, + loc: this.loc(start) + }; + } + /** + * Arguments[Const] : ( Argument[?Const]+ ) + */ + + + parseArguments(isConst) { + const item = isConst ? this.parseConstArgument : this.parseArgument; + return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); + } + /** + * Argument[Const] : Name : Value[?Const] + */ + + + parseArgument() { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return { + kind: Kind.ARGUMENT, + name, + value: this.parseValueLiteral(false), + loc: this.loc(start) + }; + } + + parseConstArgument() { + const start = this._lexer.token; + return { + kind: Kind.ARGUMENT, + name: this.parseName(), + value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)), + loc: this.loc(start) + }; + } // Implements the parsing rules in the Fragments section. + + /** + * Corresponds to both FragmentSpread and InlineFragment in the spec. + * + * FragmentSpread : ... FragmentName Directives? + * + * InlineFragment : ... TypeCondition? Directives? SelectionSet + */ + + + parseFragment() { + const start = this._lexer.token; + this.expectToken(TokenKind.SPREAD); + const hasTypeCondition = this.expectOptionalKeyword('on'); + + if (!hasTypeCondition && this.peek(TokenKind.NAME)) { + return { + kind: Kind.FRAGMENT_SPREAD, + name: this.parseFragmentName(), + directives: this.parseDirectives(false), + loc: this.loc(start) + }; + } + + return { + kind: Kind.INLINE_FRAGMENT, + typeCondition: hasTypeCondition ? this.parseNamedType() : undefined, + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + loc: this.loc(start) + }; + } + /** + * FragmentDefinition : + * - fragment FragmentName on TypeCondition Directives? SelectionSet + * + * TypeCondition : NamedType + */ + + + parseFragmentDefinition() { + const start = this._lexer.token; + this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes + // the grammar of FragmentDefinition: + // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet + + if (this._options?.experimentalFragmentVariables === true) { + return { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + variableDefinitions: this.parseVariableDefinitions(), + typeCondition: (this.expectKeyword('on'), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + loc: this.loc(start) + }; + } + + return { + kind: Kind.FRAGMENT_DEFINITION, + name: this.parseFragmentName(), + typeCondition: (this.expectKeyword('on'), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet(), + loc: this.loc(start) + }; + } + /** + * FragmentName : Name but not `on` + */ + + + parseFragmentName() { + if (this._lexer.token.value === 'on') { + throw this.unexpected(); + } + + return this.parseName(); + } // Implements the parsing rules in the Values section. + + /** + * Value[Const] : + * - [~Const] Variable + * - IntValue + * - FloatValue + * - StringValue + * - BooleanValue + * - NullValue + * - EnumValue + * - ListValue[?Const] + * - ObjectValue[?Const] + * + * BooleanValue : one of `true` `false` + * + * NullValue : `null` + * + * EnumValue : Name but not `true`, `false` or `null` + */ + + + parseValueLiteral(isConst) { + const token = this._lexer.token; + + switch (token.kind) { + case TokenKind.BRACKET_L: + return this.parseList(isConst); + + case TokenKind.BRACE_L: + return this.parseObject(isConst); + + case TokenKind.INT: + this._lexer.advance(); + + return { + kind: Kind.INT, + value: token.value, + loc: this.loc(token) + }; + + case TokenKind.FLOAT: + this._lexer.advance(); + + return { + kind: Kind.FLOAT, + value: token.value, + loc: this.loc(token) + }; + + case TokenKind.STRING: + case TokenKind.BLOCK_STRING: + return this.parseStringLiteral(); + + case TokenKind.NAME: + this._lexer.advance(); + + switch (token.value) { + case 'true': + return { + kind: Kind.BOOLEAN, + value: true, + loc: this.loc(token) + }; + + case 'false': + return { + kind: Kind.BOOLEAN, + value: false, + loc: this.loc(token) + }; + + case 'null': + return { + kind: Kind.NULL, + loc: this.loc(token) + }; + + default: + return { + kind: Kind.ENUM, + value: token.value, + loc: this.loc(token) + }; + } + + case TokenKind.DOLLAR: + if (!isConst) { + return this.parseVariable(); + } + + break; + } + + throw this.unexpected(); + } + + parseStringLiteral() { + const token = this._lexer.token; + + this._lexer.advance(); + + return { + kind: Kind.STRING, + value: token.value, + block: token.kind === TokenKind.BLOCK_STRING, + loc: this.loc(token) + }; + } + /** + * ListValue[Const] : + * - [ ] + * - [ Value[?Const]+ ] + */ + + + parseList(isConst) { + const start = this._lexer.token; + + const item = () => this.parseValueLiteral(isConst); + + return { + kind: Kind.LIST, + values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R), + loc: this.loc(start) + }; + } + /** + * ObjectValue[Const] : + * - { } + * - { ObjectField[?Const]+ } + */ + + + parseObject(isConst) { + const start = this._lexer.token; + + const item = () => this.parseObjectField(isConst); + + return { + kind: Kind.OBJECT, + fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R), + loc: this.loc(start) + }; + } + /** + * ObjectField[Const] : Name : Value[?Const] + */ + + + parseObjectField(isConst) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return { + kind: Kind.OBJECT_FIELD, + name, + value: this.parseValueLiteral(isConst), + loc: this.loc(start) + }; + } // Implements the parsing rules in the Directives section. + + /** + * Directives[Const] : Directive[?Const]+ + */ + + + parseDirectives(isConst) { + const directives = []; + + while (this.peek(TokenKind.AT)) { + directives.push(this.parseDirective(isConst)); + } + + return directives; + } + /** + * Directive[Const] : @ Name Arguments[?Const]? + */ + + + parseDirective(isConst) { + const start = this._lexer.token; + this.expectToken(TokenKind.AT); + return { + kind: Kind.DIRECTIVE, + name: this.parseName(), + arguments: this.parseArguments(isConst), + loc: this.loc(start) + }; + } // Implements the parsing rules in the Types section. + + /** + * Type : + * - NamedType + * - ListType + * - NonNullType + */ + + + parseTypeReference() { + const start = this._lexer.token; + let type; + + if (this.expectOptionalToken(TokenKind.BRACKET_L)) { + type = this.parseTypeReference(); + this.expectToken(TokenKind.BRACKET_R); + type = { + kind: Kind.LIST_TYPE, + type, + loc: this.loc(start) + }; + } else { + type = this.parseNamedType(); + } + + if (this.expectOptionalToken(TokenKind.BANG)) { + return { + kind: Kind.NON_NULL_TYPE, + type, + loc: this.loc(start) + }; + } + + return type; + } + /** + * NamedType : Name + */ + + + parseNamedType() { + const start = this._lexer.token; + return { + kind: Kind.NAMED_TYPE, + name: this.parseName(), + loc: this.loc(start) + }; + } // Implements the parsing rules in the Type Definition section. + + /** + * TypeSystemDefinition : + * - SchemaDefinition + * - TypeDefinition + * - DirectiveDefinition + * + * TypeDefinition : + * - ScalarTypeDefinition + * - ObjectTypeDefinition + * - InterfaceTypeDefinition + * - UnionTypeDefinition + * - EnumTypeDefinition + * - InputObjectTypeDefinition + */ + + + parseTypeSystemDefinition() { + // Many definitions begin with a description and require a lookahead. + const keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token; + + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case 'schema': + return this.parseSchemaDefinition(); + + case 'scalar': + return this.parseScalarTypeDefinition(); + + case 'type': + return this.parseObjectTypeDefinition(); + + case 'interface': + return this.parseInterfaceTypeDefinition(); + + case 'union': + return this.parseUnionTypeDefinition(); + + case 'enum': + return this.parseEnumTypeDefinition(); + + case 'input': + return this.parseInputObjectTypeDefinition(); + + case 'directive': + return this.parseDirectiveDefinition(); + } + } + + throw this.unexpected(keywordToken); + } + + peekDescription() { + return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); + } + /** + * Description : StringValue + */ + + + parseDescription() { + if (this.peekDescription()) { + return this.parseStringLiteral(); + } + } + /** + * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ } + */ + + + parseSchemaDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('schema'); + const directives = this.parseDirectives(true); + const operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R); + return { + kind: Kind.SCHEMA_DEFINITION, + description, + directives, + operationTypes, + loc: this.loc(start) + }; + } + /** + * OperationTypeDefinition : OperationType : NamedType + */ + + + parseOperationTypeDefinition() { + const start = this._lexer.token; + const operation = this.parseOperationType(); + this.expectToken(TokenKind.COLON); + const type = this.parseNamedType(); + return { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation, + type, + loc: this.loc(start) + }; + } + /** + * ScalarTypeDefinition : Description? scalar Name Directives[Const]? + */ + + + parseScalarTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('scalar'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + return { + kind: Kind.SCALAR_TYPE_DEFINITION, + description, + name, + directives, + loc: this.loc(start) + }; + } + /** + * ObjectTypeDefinition : + * Description? + * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition? + */ + + + parseObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('type'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseDirectives(true); + const fields = this.parseFieldsDefinition(); + return { + kind: Kind.OBJECT_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * ImplementsInterfaces : + * - implements `&`? NamedType + * - ImplementsInterfaces & NamedType + */ + + + parseImplementsInterfaces() { + const types = []; + + if (this.expectOptionalKeyword('implements')) { + // Optional leading ampersand + this.expectOptionalToken(TokenKind.AMP); + + do { + types.push(this.parseNamedType()); + } while (this.expectOptionalToken(TokenKind.AMP) || // Legacy support for the SDL? + this._options?.allowLegacySDLImplementsInterfaces === true && this.peek(TokenKind.NAME)); + } + + return types; + } + /** + * FieldsDefinition : { FieldDefinition+ } + */ + + + parseFieldsDefinition() { + // Legacy support for the SDL? + if (this._options?.allowLegacySDLEmptyFields === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) { + this._lexer.advance(); + + this._lexer.advance(); + + return []; + } + + return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R); + } + /** + * FieldDefinition : + * - Description? Name ArgumentsDefinition? : Type Directives[Const]? + */ + + + parseFieldDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + const directives = this.parseDirectives(true); + return { + kind: Kind.FIELD_DEFINITION, + description, + name, + arguments: args, + type, + directives, + loc: this.loc(start) + }; + } + /** + * ArgumentsDefinition : ( InputValueDefinition+ ) + */ + + + parseArgumentDefs() { + return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R); + } + /** + * InputValueDefinition : + * - Description? Name : Type DefaultValue? Directives[Const]? + */ + + + parseInputValueDef() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + let defaultValue; + + if (this.expectOptionalToken(TokenKind.EQUALS)) { + defaultValue = this.parseValueLiteral(true); + } + + const directives = this.parseDirectives(true); + return { + kind: Kind.INPUT_VALUE_DEFINITION, + description, + name, + type, + defaultValue, + directives, + loc: this.loc(start) + }; + } + /** + * InterfaceTypeDefinition : + * - Description? interface Name Directives[Const]? FieldsDefinition? + */ + + + parseInterfaceTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('interface'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseDirectives(true); + const fields = this.parseFieldsDefinition(); + return { + kind: Kind.INTERFACE_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * UnionTypeDefinition : + * - Description? union Name Directives[Const]? UnionMemberTypes? + */ + + + parseUnionTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('union'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const types = this.parseUnionMemberTypes(); + return { + kind: Kind.UNION_TYPE_DEFINITION, + description, + name, + directives, + types, + loc: this.loc(start) + }; + } + /** + * UnionMemberTypes : + * - = `|`? NamedType + * - UnionMemberTypes | NamedType + */ + + + parseUnionMemberTypes() { + const types = []; + + if (this.expectOptionalToken(TokenKind.EQUALS)) { + // Optional leading pipe + this.expectOptionalToken(TokenKind.PIPE); + + do { + types.push(this.parseNamedType()); + } while (this.expectOptionalToken(TokenKind.PIPE)); + } + + return types; + } + /** + * EnumTypeDefinition : + * - Description? enum Name Directives[Const]? EnumValuesDefinition? + */ + + + parseEnumTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('enum'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const values = this.parseEnumValuesDefinition(); + return { + kind: Kind.ENUM_TYPE_DEFINITION, + description, + name, + directives, + values, + loc: this.loc(start) + }; + } + /** + * EnumValuesDefinition : { EnumValueDefinition+ } + */ + + + parseEnumValuesDefinition() { + return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R); + } + /** + * EnumValueDefinition : Description? EnumValue Directives[Const]? + * + * EnumValue : Name + */ + + + parseEnumValueDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + const directives = this.parseDirectives(true); + return { + kind: Kind.ENUM_VALUE_DEFINITION, + description, + name, + directives, + loc: this.loc(start) + }; + } + /** + * InputObjectTypeDefinition : + * - Description? input Name Directives[Const]? InputFieldsDefinition? + */ + + + parseInputObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('input'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const fields = this.parseInputFieldsDefinition(); + return { + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + description, + name, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * InputFieldsDefinition : { InputValueDefinition+ } + */ + + + parseInputFieldsDefinition() { + return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R); + } + /** + * TypeSystemExtension : + * - SchemaExtension + * - TypeExtension + * + * TypeExtension : + * - ScalarTypeExtension + * - ObjectTypeExtension + * - InterfaceTypeExtension + * - UnionTypeExtension + * - EnumTypeExtension + * - InputObjectTypeDefinition + */ + + + parseTypeSystemExtension() { + const keywordToken = this._lexer.lookahead(); + + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case 'schema': + return this.parseSchemaExtension(); + + case 'scalar': + return this.parseScalarTypeExtension(); + + case 'type': + return this.parseObjectTypeExtension(); + + case 'interface': + return this.parseInterfaceTypeExtension(); + + case 'union': + return this.parseUnionTypeExtension(); + + case 'enum': + return this.parseEnumTypeExtension(); + + case 'input': + return this.parseInputObjectTypeExtension(); + } + } + + throw this.unexpected(keywordToken); + } + /** + * SchemaExtension : + * - extend schema Directives[Const]? { OperationTypeDefinition+ } + * - extend schema Directives[Const] + */ + + + parseSchemaExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('schema'); + const directives = this.parseDirectives(true); + const operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R); + + if (directives.length === 0 && operationTypes.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.SCHEMA_EXTENSION, + directives, + operationTypes, + loc: this.loc(start) + }; + } + /** + * ScalarTypeExtension : + * - extend scalar Name Directives[Const] + */ + + + parseScalarTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('scalar'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + + if (directives.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.SCALAR_TYPE_EXTENSION, + name, + directives, + loc: this.loc(start) + }; + } + /** + * ObjectTypeExtension : + * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend type Name ImplementsInterfaces? Directives[Const] + * - extend type Name ImplementsInterfaces + */ + + + parseObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('type'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseDirectives(true); + const fields = this.parseFieldsDefinition(); + + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.OBJECT_TYPE_EXTENSION, + name, + interfaces, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * InterfaceTypeExtension : + * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend interface Name ImplementsInterfaces? Directives[Const] + * - extend interface Name ImplementsInterfaces + */ + + + parseInterfaceTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('interface'); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseDirectives(true); + const fields = this.parseFieldsDefinition(); + + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.INTERFACE_TYPE_EXTENSION, + name, + interfaces, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * UnionTypeExtension : + * - extend union Name Directives[Const]? UnionMemberTypes + * - extend union Name Directives[Const] + */ + + + parseUnionTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('union'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const types = this.parseUnionMemberTypes(); + + if (directives.length === 0 && types.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.UNION_TYPE_EXTENSION, + name, + directives, + types, + loc: this.loc(start) + }; + } + /** + * EnumTypeExtension : + * - extend enum Name Directives[Const]? EnumValuesDefinition + * - extend enum Name Directives[Const] + */ + + + parseEnumTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('enum'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const values = this.parseEnumValuesDefinition(); + + if (directives.length === 0 && values.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.ENUM_TYPE_EXTENSION, + name, + directives, + values, + loc: this.loc(start) + }; + } + /** + * InputObjectTypeExtension : + * - extend input Name Directives[Const]? InputFieldsDefinition + * - extend input Name Directives[Const] + */ + + + parseInputObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword('extend'); + this.expectKeyword('input'); + const name = this.parseName(); + const directives = this.parseDirectives(true); + const fields = this.parseInputFieldsDefinition(); + + if (directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + + return { + kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, + name, + directives, + fields, + loc: this.loc(start) + }; + } + /** + * DirectiveDefinition : + * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations + */ + + + parseDirectiveDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword('directive'); + this.expectToken(TokenKind.AT); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + const repeatable = this.expectOptionalKeyword('repeatable'); + this.expectKeyword('on'); + const locations = this.parseDirectiveLocations(); + return { + kind: Kind.DIRECTIVE_DEFINITION, + description, + name, + arguments: args, + repeatable, + locations, + loc: this.loc(start) + }; + } + /** + * DirectiveLocations : + * - `|`? DirectiveLocation + * - DirectiveLocations | DirectiveLocation + */ + + + parseDirectiveLocations() { + // Optional leading pipe + this.expectOptionalToken(TokenKind.PIPE); + const locations = []; + + do { + locations.push(this.parseDirectiveLocation()); + } while (this.expectOptionalToken(TokenKind.PIPE)); + + return locations; + } + /* + * DirectiveLocation : + * - ExecutableDirectiveLocation + * - TypeSystemDirectiveLocation + * + * ExecutableDirectiveLocation : one of + * `QUERY` + * `MUTATION` + * `SUBSCRIPTION` + * `FIELD` + * `FRAGMENT_DEFINITION` + * `FRAGMENT_SPREAD` + * `INLINE_FRAGMENT` + * + * TypeSystemDirectiveLocation : one of + * `SCHEMA` + * `SCALAR` + * `OBJECT` + * `FIELD_DEFINITION` + * `ARGUMENT_DEFINITION` + * `INTERFACE` + * `UNION` + * `ENUM` + * `ENUM_VALUE` + * `INPUT_OBJECT` + * `INPUT_FIELD_DEFINITION` + */ + + + parseDirectiveLocation() { + const start = this._lexer.token; + const name = this.parseName(); + + if (DirectiveLocation[name.value] !== undefined) { + return name; + } + + throw this.unexpected(start); + } // Core parsing utility functions + + /** + * Returns a location object, used to identify the place in + * the source that created a given parsed object. + */ + + + loc(startToken) { + if (this._options?.noLocation !== true) { + return new Location(startToken, this._lexer.lastToken, this._lexer.source); + } + } + /** + * Determines if the next token is of a given kind + */ + + + peek(kind) { + return this._lexer.token.kind === kind; + } + /** + * If the next token is of the given kind, return that token after advancing + * the lexer. Otherwise, do not change the parser state and throw an error. + */ + + + expectToken(kind) { + const token = this._lexer.token; + + if (token.kind === kind) { + this._lexer.advance(); + + return token; + } + + throw syntaxError(this._lexer.source, token.start, `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`); + } + /** + * If the next token is of the given kind, return that token after advancing + * the lexer. Otherwise, do not change the parser state and return undefined. + */ + + + expectOptionalToken(kind) { + const token = this._lexer.token; + + if (token.kind === kind) { + this._lexer.advance(); + + return token; + } + + return undefined; + } + /** + * If the next token is a given keyword, advance the lexer. + * Otherwise, do not change the parser state and throw an error. + */ + + + expectKeyword(value) { + const token = this._lexer.token; + + if (token.kind === TokenKind.NAME && token.value === value) { + this._lexer.advance(); + } else { + throw syntaxError(this._lexer.source, token.start, `Expected "${value}", found ${getTokenDesc(token)}.`); + } + } + /** + * If the next token is a given keyword, return "true" after advancing + * the lexer. Otherwise, do not change the parser state and return "false". + */ + + + expectOptionalKeyword(value) { + const token = this._lexer.token; + + if (token.kind === TokenKind.NAME && token.value === value) { + this._lexer.advance(); + + return true; + } + + return false; + } + /** + * Helper function for creating an error when an unexpected lexed token + * is encountered. + */ + + + unexpected(atToken) { + const token = atToken ?? this._lexer.token; + return syntaxError(this._lexer.source, token.start, `Unexpected ${getTokenDesc(token)}.`); + } + /** + * Returns a possibly empty list of parse nodes, determined by + * the parseFn. This list begins with a lex token of openKind + * and ends with a lex token of closeKind. Advances the parser + * to the next lex token after the closing token. + */ + + + any(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + + while (!this.expectOptionalToken(closeKind)) { + nodes.push(parseFn.call(this)); + } + + return nodes; + } + /** + * Returns a list of parse nodes, determined by the parseFn. + * It can be empty only if open token is missing otherwise it will always + * return non-empty list that begins with a lex token of openKind and ends + * with a lex token of closeKind. Advances the parser to the next lex token + * after the closing token. + */ + + + optionalMany(openKind, parseFn, closeKind) { + if (this.expectOptionalToken(openKind)) { + const nodes = []; + + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + + return nodes; + } + + return []; + } + /** + * Returns a non-empty list of parse nodes, determined by + * the parseFn. This list begins with a lex token of openKind + * and ends with a lex token of closeKind. Advances the parser + * to the next lex token after the closing token. + */ + + + many(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + + return nodes; + } + +} +/** + * A helper function to describe a token as a string for debugging + */ + + +function getTokenDesc(token) { + const value = token.value; + return getTokenKindDesc(token.kind) + (value != null ? ` "${value}"` : ''); +} +/** + * A helper function to describe a token kind as a string for debugging + */ + + +function getTokenKindDesc(kind) { + return isPunctuatorTokenKind(kind) ? `"${kind}"` : kind; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/2fd936944f47059be9e6b71bdb70f181821ac7fc.ts b/bundler/tests/.cache/deno/2fd936944f47059be9e6b71bdb70f181821ac7fc.ts new file mode 100644 index 00000000000..467c4f5b431 --- /dev/null +++ b/bundler/tests/.cache/deno/2fd936944f47059be9e6b71bdb70f181821ac7fc.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeWith.js + + +import _curry3 from './internal/_curry3.js'; +import mergeWithKey from './mergeWithKey.js'; + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the values + * associated with the key in each object, with the result being used as the + * value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig ((a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWith, R.merge, R.mergeWithKey + * @example + * + * R.mergeWith(R.concat, + * { a: true, values: [10, 20] }, + * { b: true, values: [15, 35] }); + * //=> { a: true, b: true, values: [10, 20, 15, 35] } + */ +var mergeWith = _curry3(function mergeWith(fn, l, r) { + return mergeWithKey(function(_, _l, _r) { + return fn(_l, _r); + }, l, r); +}); +export default mergeWith; diff --git a/bundler/tests/.cache/deno/2fe78d73018d170c2f18b33bd51c3c048497ec10.ts b/bundler/tests/.cache/deno/2fe78d73018d170c2f18b33bd51c3c048497ec10.ts new file mode 100644 index 00000000000..93d390bdba3 --- /dev/null +++ b/bundler/tests/.cache/deno/2fe78d73018d170c2f18b33bd51c3c048497ec10.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/find.js + + +import { matches, project } from '../../deps.ts'; +import { ReadFileStream } from '../storage.ts'; + +export default async (filename, query, projection) => { + let stream = new ReadFileStream(filename); + let found = []; + query = query || {}; + stream.on('document', obj => { + if (matches(query , obj)){ + obj = Object.keys(projection).length ? project(obj, projection) : obj; + found.push(obj) + } + }) + return new Promise((resolve, reject) => { + stream.on('end', () => { + resolve(found); + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3045ecf37e4546ef147d10dd710c7e3b5402725e.ts b/bundler/tests/.cache/deno/3045ecf37e4546ef147d10dd710c7e3b5402725e.ts new file mode 100644 index 00000000000..5d1bb14107f --- /dev/null +++ b/bundler/tests/.cache/deno/3045ecf37e4546ef147d10dd710c7e3b5402725e.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lensPath.js + + +import _curry1 from './internal/_curry1.js'; +import assocPath from './assocPath.js'; +import lens from './lens.js'; +import path from './path.js'; + + +/** + * Returns a lens whose focus is the specified path. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig [Idx] -> Lens s a + * @param {Array} path The path to use. + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * const xHeadYLens = R.lensPath(['x', 0, 'y']); + * + * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> 2 + * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]} + * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} + */ +var lensPath = _curry1(function lensPath(p) { + return lens(path(p), assocPath(p)); +}); +export default lensPath; diff --git a/bundler/tests/.cache/deno/30467d4514b2e2a5967a15089df54be1a2f73293.ts b/bundler/tests/.cache/deno/30467d4514b2e2a5967a15089df54be1a2f73293.ts new file mode 100644 index 00000000000..1892ee7bf0e --- /dev/null +++ b/bundler/tests/.cache/deno/30467d4514b2e2a5967a15089df54be1a2f73293.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/valueFromASTUntyped.js + + +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import keyValMap from '../jsutils/keyValMap.js'; +import { Kind } from '../language/kinds.js'; + +/** + * Produces a JavaScript value given a GraphQL Value AST. + * + * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value + * will reflect the provided GraphQL value AST. + * + * | GraphQL Value | JavaScript Value | + * | -------------------- | ---------------- | + * | Input Object | Object | + * | List | Array | + * | Boolean | Boolean | + * | String / Enum | String | + * | Int / Float | Number | + * | Null | null | + * + */ +export function valueFromASTUntyped(valueNode, variables) { + switch (valueNode.kind) { + case Kind.NULL: + return null; + + case Kind.INT: + return parseInt(valueNode.value, 10); + + case Kind.FLOAT: + return parseFloat(valueNode.value); + + case Kind.STRING: + case Kind.ENUM: + case Kind.BOOLEAN: + return valueNode.value; + + case Kind.LIST: + return valueNode.values.map(node => valueFromASTUntyped(node, variables)); + + case Kind.OBJECT: + return keyValMap(valueNode.fields, field => field.name.value, field => valueFromASTUntyped(field.value, variables)); + + case Kind.VARIABLE: + return variables?.[valueNode.name.value]; + } // Not reachable. All possible value nodes have been considered. + + + invariant(false, 'Unexpected value node: ' + inspect(valueNode)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3071a5627ae9109da7cb390903b736e5b30a4e73.ts b/bundler/tests/.cache/deno/3071a5627ae9109da7cb390903b736e5b30a4e73.ts new file mode 100644 index 00000000000..de437c52043 --- /dev/null +++ b/bundler/tests/.cache/deno/3071a5627ae9109da7cb390903b736e5b30a4e73.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xwrap.js + + +function XWrap(fn) { + this.f = fn; +} +XWrap.prototype['@@transducer/init'] = function() { + throw new Error('init not implemented on XWrap'); +}; +XWrap.prototype['@@transducer/result'] = function(acc) { return acc; }; +XWrap.prototype['@@transducer/step'] = function(acc, x) { + return this.f(acc, x); +}; + +export default function _xwrap(fn) { return new XWrap(fn); } diff --git a/bundler/tests/.cache/deno/308ac6e65b35fc9e67066bfbcf2d8037ed624076.ts b/bundler/tests/.cache/deno/308ac6e65b35fc9e67066bfbcf2d8037ed624076.ts new file mode 100644 index 00000000000..e9cc498ca58 --- /dev/null +++ b/bundler/tests/.cache/deno/308ac6e65b35fc9e67066bfbcf2d8037ed624076.ts @@ -0,0 +1,17 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/map.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +export const map = new Type("tag:yaml.org,2002:map", { + construct(data): Any { + return data !== null ? data : {}; + }, + kind: "mapping", +}); diff --git a/bundler/tests/.cache/deno/3092d97fa5354a6587505256a1f13a0d139c48b3.ts b/bundler/tests/.cache/deno/3092d97fa5354a6587505256a1f13a0d139c48b3.ts new file mode 100644 index 00000000000..f9d6112b58d --- /dev/null +++ b/bundler/tests/.cache/deno/3092d97fa5354a6587505256a1f13a0d139c48b3.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std/async/deferred.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/30c6394910dd3e93e42f215a3a77df4199acc956.ts b/bundler/tests/.cache/deno/30c6394910dd3e93e42f215a3a77df4199acc956.ts new file mode 100644 index 00000000000..763c7621906 --- /dev/null +++ b/bundler/tests/.cache/deno/30c6394910dd3e93e42f215a3a77df4199acc956.ts @@ -0,0 +1,211 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/rows.ts + + +import { getStr } from "./wasm.ts"; +import { Status, Types, Values } from "./constants.ts"; +import SqliteError from "./error.ts"; +import { RowObjects } from "./row_objects.ts"; + +export interface ColumnName { + name: string; + originName: string; + tableName: string; +} + +export class Rows { + private _db: any; + private _stmt: number; + private _done: boolean; + + /** + * Rows + * + * Rows represent a set of results from a query. + * They are iterable and yield arrays with + * the data from the selected columns. + * + * This class is not exported from the module + * and the only correct way to obtain a `Rows` + * object is by making a database query. + */ + constructor(db: any, stmt: number) { + this._db = db; + this._stmt = stmt; + this._done = false; + + if (!this._db) { + this._done = true; + } + } + + /** + * Rows.return + * + * Implements the closing iterator + * protocol. See also: + * https://exploringjs.com/es6/ch_iteration.html#sec_closing-iterators + */ + return(): IteratorResult { + if (this._done) { + return { done: true, value: undefined }; + } + // Release transaction slot + this._db._wasm.finalize(this._stmt); + this._db._transactions.delete(this); + this._done = true; + return { done: true, value: undefined }; + } + + /** + * Rows.done + * + * Deprecated, prefer `Rows.return`. + */ + done() { + this.return(); + } + + /** + * Rows.next + * + * Implements the iterator protocol. + */ + next(): IteratorResult { + if (this._done) return { value: undefined, done: true }; + // Load row data and advance statement + const row = this._get(); + const status = this._db._wasm.step(this._stmt); + switch (status) { + case Status.SqliteRow: + // NO OP + break; + case Status.SqliteDone: + this.return(); + break; + default: + this.return(); + throw this._db._error(status); + break; + } + return { value: row, done: false }; + } + + /** + * Rows.columns + * + * Call this if you need column names from the result of a select query. + * + * This method returns an array of objects, where each object has the following properties: + * + * | Property | Value | + * |--------------|--------------------------------------------| + * | `name` | the result of `sqlite3_column_name` | + * | `originName` | the result of `sqlite3_column_origin_name` | + * | `tableName` | the result of `sqlite3_column_table_name` | + */ + columns(): ColumnName[] { + if (this._done) { + throw new SqliteError( + "Unable to retrieve column names as transaction is finalized.", + ); + } + + const columnCount = this._db._wasm.column_count(this._stmt); + const columns: ColumnName[] = []; + for (let i = 0; i < columnCount; i++) { + const name = getStr( + this._db._wasm, + this._db._wasm.column_name(this._stmt, i), + ); + const originName = getStr( + this._db._wasm, + this._db._wasm.column_origin_name(this._stmt, i), + ); + const tableName = getStr( + this._db._wasm, + this._db._wasm.column_table_name(this._stmt, i), + ); + columns.push({ name, originName, tableName }); + } + return columns; + } + + /** + * Rows.asObjects + * + * Call this if you need to ouput the rows as objects. + * + * const rows = [...db.query("SELECT name FROM users;").asObjects()]; + */ + asObjects>(): RowObjects { + return new RowObjects(this); + } + + [Symbol.iterator]() { + return this; + } + + private _get(): any[] { + // Get results from row + const row = []; + // return row; + for ( + let i = 0, c = this._db._wasm.column_count(this._stmt); + i < c; + i++ + ) { + switch (this._db._wasm.column_type(this._stmt, i)) { + case Types.Integer: + row.push(this._db._wasm.column_int(this._stmt, i)); + break; + case Types.Float: + row.push(this._db._wasm.column_double(this._stmt, i)); + break; + case Types.Text: + row.push( + getStr( + this._db._wasm, + this._db._wasm.column_text(this._stmt, i), + ), + ); + break; + case Types.Blob: { + const ptr = this._db._wasm.column_blob(this._stmt, i); + if (ptr === 0) { + // Zero pointer results in null + row.push(null); + } else { + const length = this._db._wasm.column_bytes(this._stmt, i); + // Slice should copy the bytes, as it makes a shallow copy + row.push( + new Uint8Array(this._db._wasm.memory.buffer, ptr, length).slice(), + ); + } + break; + } + case Types.BigInteger: { + const ptr = this._db._wasm.column_text(this._stmt, i); + row.push(BigInt(getStr(this._db._wasm, ptr))); + break; + } + default: + // TODO: Differentiate between NULL and not-recognized? + row.push(null); + break; + } + } + return row; + } +} + +/** + * Empty + * + * A special constant. This is a `Rows` object + * which has no results. It is still iterable, + * however it won't yield any results. + * + * `Empty` is returned from queries which return + * no data. + */ +export const Empty = new Rows(null, Values.Null); diff --git a/bundler/tests/.cache/deno/30c84d7c3fe94bbcb5fab74ab49f850c573889bd.ts b/bundler/tests/.cache/deno/30c84d7c3fe94bbcb5fab74ab49f850c573889bd.ts new file mode 100644 index 00000000000..f94501e2948 --- /dev/null +++ b/bundler/tests/.cache/deno/30c84d7c3fe94bbcb5fab74ab49f850c573889bd.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/once/index.js + + +/// + +/** + * Create a function that calls and cache a function once + * @template Return + * @param {() => Return} fn Function to be invoked once + * @returns {() => Return} Function that returns result of first-time execution of `fn` + * + * @example + * import once from 'https://ksxgithub.github.io/deno-once/index.js' + * const ran = once(Math.random) + * console.log(ran() === ran()) // => true + */ +export function once (fn) { + let main = () => { + const value = fn() + main = () => value + return value + } + return () => main() +} + +export default once diff --git a/bundler/tests/.cache/deno/30d697ee62a77eb7f64d3db051b6ba272d9c87cb.ts b/bundler/tests/.cache/deno/30d697ee62a77eb7f64d3db051b6ba272d9c87cb.ts new file mode 100644 index 00000000000..fb68f153e46 --- /dev/null +++ b/bundler/tests/.cache/deno/30d697ee62a77eb7f64d3db051b6ba272d9c87cb.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/std@0.85.0/io/readers.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/0452f9460f50f0f0aba18df43dc2b31906fb66cc/src/io/io.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +import { encode } from "../encoding/utf8.ts"; + +/** Reader utility for strings */ +export class StringReader extends Deno.Buffer { + constructor(s: string) { + super(encode(s).buffer); + } +} + +/** Reader utility for combining multiple readers */ +export class MultiReader implements Deno.Reader { + private readonly readers: Deno.Reader[]; + private currentIndex = 0; + + constructor(...readers: Deno.Reader[]) { + this.readers = readers; + } + + async read(p: Uint8Array): Promise { + const r = this.readers[this.currentIndex]; + if (!r) return null; + const result = await r.read(p); + if (result === null) { + this.currentIndex++; + return 0; + } + return result; + } +} + +/** + * A `LimitedReader` reads from `reader` but limits the amount of data returned to just `limit` bytes. + * Each call to `read` updates `limit` to reflect the new amount remaining. + * `read` returns `null` when `limit` <= `0` or + * when the underlying `reader` returns `null`. + */ +export class LimitedReader implements Deno.Reader { + constructor(public reader: Deno.Reader, public limit: number) {} + + async read(p: Uint8Array): Promise { + if (this.limit <= 0) { + return null; + } + + if (p.length > this.limit) { + p = p.subarray(0, this.limit); + } + const n = await this.reader.read(p); + if (n == null) { + return null; + } + + this.limit -= n; + return n; + } +} diff --git a/bundler/tests/.cache/deno/3107840a16f38d2c8595a86c1780768dcce3279f.ts b/bundler/tests/.cache/deno/3107840a16f38d2c8595a86c1780768dcce3279f.ts new file mode 100644 index 00000000000..fc3711776b8 --- /dev/null +++ b/bundler/tests/.cache/deno/3107840a16f38d2c8595a86c1780768dcce3279f.ts @@ -0,0 +1,546 @@ +// Loaded from https://deno.land/std@0.84.0/hash/sha256.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* + * Adapted to deno from: + * + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; +// deno-fmt-ignore +const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +] as const; + +const blocks: number[] = []; + +export class Sha256 { + #block!: number; + #blocks!: number[]; + #bytes!: number; + #finalized!: boolean; + #first!: boolean; + #h0!: number; + #h1!: number; + #h2!: number; + #h3!: number; + #h4!: number; + #h5!: number; + #h6!: number; + #h7!: number; + #hashed!: boolean; + #hBytes!: number; + #is224!: boolean; + #lastByteIndex = 0; + #start!: number; + + constructor(is224 = false, sharedMemory = false) { + this.init(is224, sharedMemory); + } + + protected init(is224: boolean, sharedMemory: boolean): void { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + if (is224) { + this.#h0 = 0xc1059ed8; + this.#h1 = 0x367cd507; + this.#h2 = 0x3070dd17; + this.#h3 = 0xf70e5939; + this.#h4 = 0xffc00b31; + this.#h5 = 0x68581511; + this.#h6 = 0x64f98fa7; + this.#h7 = 0xbefa4fa4; + } else { + // 256 + this.#h0 = 0x6a09e667; + this.#h1 = 0xbb67ae85; + this.#h2 = 0x3c6ef372; + this.#h3 = 0xa54ff53a; + this.#h4 = 0x510e527f; + this.#h5 = 0x9b05688c; + this.#h6 = 0x1f83d9ab; + this.#h7 = 0x5be0cd19; + } + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + this.#first = true; + this.#is224 = is224; + } + + /** Update hash + * + * @param message The message you want to hash. + */ + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) << 0; + this.#bytes = this.#bytes % 4294967296; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + protected hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f = this.#h5; + let g = this.#h6; + let h = this.#h7; + const blocks = this.#blocks; + let s0: number; + let s1: number; + let maj: number; + let t1: number; + let t2: number; + let ch: number; + let ab: number; + let da: number; + let cd: number; + let bc: number; + + for (let j = 16; j < 64; ++j) { + // rightrotate + t1 = blocks[j - 15]; + s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3); + t1 = blocks[j - 2]; + s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ + (t1 >>> 10); + blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0; + } + + bc = b & c; + for (let j = 0; j < 64; j += 4) { + if (this.#first) { + if (this.#is224) { + ab = 300032; + t1 = blocks[0] - 1413257819; + h = (t1 - 150054599) << 0; + d = (t1 + 24177077) << 0; + } else { + ab = 704751109; + t1 = blocks[0] - 210244248; + h = (t1 - 1521486534) << 0; + d = (t1 + 143694565) << 0; + } + this.#first = false; + } else { + s0 = ((a >>> 2) | (a << 30)) ^ + ((a >>> 13) | (a << 19)) ^ + ((a >>> 22) | (a << 10)); + s1 = ((e >>> 6) | (e << 26)) ^ + ((e >>> 11) | (e << 21)) ^ + ((e >>> 25) | (e << 7)); + ab = a & b; + maj = ab ^ (a & c) ^ bc; + ch = (e & f) ^ (~e & g); + t1 = h + s1 + ch + K[j] + blocks[j]; + t2 = s0 + maj; + h = (d + t1) << 0; + d = (t1 + t2) << 0; + } + s0 = ((d >>> 2) | (d << 30)) ^ + ((d >>> 13) | (d << 19)) ^ + ((d >>> 22) | (d << 10)); + s1 = ((h >>> 6) | (h << 26)) ^ + ((h >>> 11) | (h << 21)) ^ + ((h >>> 25) | (h << 7)); + da = d & a; + maj = da ^ (d & b) ^ ab; + ch = (h & e) ^ (~h & f); + t1 = g + s1 + ch + K[j + 1] + blocks[j + 1]; + t2 = s0 + maj; + g = (c + t1) << 0; + c = (t1 + t2) << 0; + s0 = ((c >>> 2) | (c << 30)) ^ + ((c >>> 13) | (c << 19)) ^ + ((c >>> 22) | (c << 10)); + s1 = ((g >>> 6) | (g << 26)) ^ + ((g >>> 11) | (g << 21)) ^ + ((g >>> 25) | (g << 7)); + cd = c & d; + maj = cd ^ (c & a) ^ da; + ch = (g & h) ^ (~g & e); + t1 = f + s1 + ch + K[j + 2] + blocks[j + 2]; + t2 = s0 + maj; + f = (b + t1) << 0; + b = (t1 + t2) << 0; + s0 = ((b >>> 2) | (b << 30)) ^ + ((b >>> 13) | (b << 19)) ^ + ((b >>> 22) | (b << 10)); + s1 = ((f >>> 6) | (f << 26)) ^ + ((f >>> 11) | (f << 21)) ^ + ((f >>> 25) | (f << 7)); + bc = b & c; + maj = bc ^ (b & d) ^ cd; + ch = (f & g) ^ (~f & h); + t1 = e + s1 + ch + K[j + 3] + blocks[j + 3]; + t2 = s0 + maj; + e = (a + t1) << 0; + a = (t1 + t2) << 0; + } + + this.#h0 = (this.#h0 + a) << 0; + this.#h1 = (this.#h1 + b) << 0; + this.#h2 = (this.#h2 + c) << 0; + this.#h3 = (this.#h3 + d) << 0; + this.#h4 = (this.#h4 + e) << 0; + this.#h5 = (this.#h5 + f) << 0; + this.#h6 = (this.#h6 + g) << 0; + this.#h7 = (this.#h7 + h) << 0; + } + + /** Return hash in hex string. */ + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + let hex = HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + + HEX_CHARS[(h5 >> 28) & 0x0f] + + HEX_CHARS[(h5 >> 24) & 0x0f] + + HEX_CHARS[(h5 >> 20) & 0x0f] + + HEX_CHARS[(h5 >> 16) & 0x0f] + + HEX_CHARS[(h5 >> 12) & 0x0f] + + HEX_CHARS[(h5 >> 8) & 0x0f] + + HEX_CHARS[(h5 >> 4) & 0x0f] + + HEX_CHARS[h5 & 0x0f] + + HEX_CHARS[(h6 >> 28) & 0x0f] + + HEX_CHARS[(h6 >> 24) & 0x0f] + + HEX_CHARS[(h6 >> 20) & 0x0f] + + HEX_CHARS[(h6 >> 16) & 0x0f] + + HEX_CHARS[(h6 >> 12) & 0x0f] + + HEX_CHARS[(h6 >> 8) & 0x0f] + + HEX_CHARS[(h6 >> 4) & 0x0f] + + HEX_CHARS[h6 & 0x0f]; + if (!this.#is224) { + hex += HEX_CHARS[(h7 >> 28) & 0x0f] + + HEX_CHARS[(h7 >> 24) & 0x0f] + + HEX_CHARS[(h7 >> 20) & 0x0f] + + HEX_CHARS[(h7 >> 16) & 0x0f] + + HEX_CHARS[(h7 >> 12) & 0x0f] + + HEX_CHARS[(h7 >> 8) & 0x0f] + + HEX_CHARS[(h7 >> 4) & 0x0f] + + HEX_CHARS[h7 & 0x0f]; + } + return hex; + } + + /** Return hash in hex string. */ + toString(): string { + return this.hex(); + } + + /** Return hash in integer array. */ + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + const arr = [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + (h5 >> 24) & 0xff, + (h5 >> 16) & 0xff, + (h5 >> 8) & 0xff, + h5 & 0xff, + (h6 >> 24) & 0xff, + (h6 >> 16) & 0xff, + (h6 >> 8) & 0xff, + h6 & 0xff, + ]; + if (!this.#is224) { + arr.push( + (h7 >> 24) & 0xff, + (h7 >> 16) & 0xff, + (h7 >> 8) & 0xff, + h7 & 0xff, + ); + } + return arr; + } + + /** Return hash in integer array. */ + array(): number[] { + return this.digest(); + } + + /** Return hash in ArrayBuffer. */ + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(this.#is224 ? 28 : 32); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + dataView.setUint32(20, this.#h5); + dataView.setUint32(24, this.#h6); + if (!this.#is224) { + dataView.setUint32(28, this.#h7); + } + return buffer; + } +} + +export class HmacSha256 extends Sha256 { + #inner: boolean; + #is224: boolean; + #oKeyPad: number[]; + #sharedMemory: boolean; + + constructor(secretKey: Message, is224 = false, sharedMemory = false) { + super(is224, sharedMemory); + + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length = secretKey.length; + let index = 0; + for (let i = 0; i < length; ++i) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + + if (key.length > 64) { + key = new Sha256(is224, true).update(key).array(); + } + + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; ++i) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#is224 = is224; + this.#sharedMemory = sharedMemory; + } + + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#is224, this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/3110941b544aeddb79a8d11bccdf87816b1b6a64.ts b/bundler/tests/.cache/deno/3110941b544aeddb79a8d11bccdf87816b1b6a64.ts new file mode 100644 index 00000000000..2eff812c7ae --- /dev/null +++ b/bundler/tests/.cache/deno/3110941b544aeddb79a8d11bccdf87816b1b6a64.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.80.0/_util/os.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/311b044f42a6ac82a6bce30cf0731193f8b9be39.ts b/bundler/tests/.cache/deno/311b044f42a6ac82a6bce30cf0731193f8b9be39.ts new file mode 100644 index 00000000000..dac0dca57da --- /dev/null +++ b/bundler/tests/.cache/deno/311b044f42a6ac82a6bce30cf0731193f8b9be39.ts @@ -0,0 +1,171 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/index.ts + + +import { Resize } from './lib/resize/resize.js'; +import { encodeJPG, decodeJPG, Image as ImageJPG } from "./deps.ts"; +import { encode as encodePNG, decode as decodePNG } from './lib/decoders/fast-png/index.ts'; +import { IImageData as ImagePNG } from './lib/decoders/fast-png/types.ts'; +import { mimeType } from './mime-type.ts'; +import type { ResizeOptions, DimensionsOptions } from './types.ts'; + + +/** + * Resize image. JPG and PNG formats are supported. + * @param {Uint8Array} imgFile - image file + * @param {ResizeOptions} options - options for resize + */ +export function resize(imgFile: Uint8Array, options: ResizeOptions): Promise { + return new Promise((resolve, reject) => { + const mime = mimeType(imgFile); + + if(mime === 'image/jpeg') { + resizeJPG(imgFile, options) + .then(img => resolve(img)) + .catch(error => reject(error)); + } else if (mime === 'image/png') { + resizePNG(imgFile, options) + .then(img => resolve(img)) + .catch(error => reject(error)); + } else { + reject('Unknown format.'); + } + }); +} + +/** + * Resize JPG file. + * @param imgFile - Image file + * @param options - options for resize + */ +function resizeJPG(imgFile: Uint8Array, {width, height, aspectRatio = true}: ResizeOptions): Promise { + return new Promise((resolve, reject) => { + try { + const decoded: ImageJPG = decodeJPG(imgFile); + + const { targetWidth, targetHeight } = getDimensions({ + originalWidth: decoded.width, + originalHeight: decoded.height, + width, + height, + aspectRatio + }); + + const resized = new Resize(decoded.width, decoded.height, targetWidth, targetHeight, true, true, false, async (buffer: Uint8Array) => { + const image: any = { + width: targetWidth, + height: targetHeight, + data: buffer + }; + + try { + const raw = encodeJPG(image, 100); //Quality 100 (default is 50) + resolve(raw.data); + } catch(error) { + reject(error); + } + }); + + resized.resize(decoded.data); + } catch (error) { + reject(error); + } + }); +} + + +/** + * Resize PNG file. + * @param imgFile - Image file + * @param options - options for resize + */ +function resizePNG(imgFile: Uint8Array, {width, height, aspectRatio = true}: ResizeOptions): Promise { + return new Promise((resolve, reject) => { + try { + const decoded: ImagePNG = decodePNG(imgFile); + + const { targetWidth, targetHeight } = getDimensions({ + originalWidth: decoded.width, + originalHeight: decoded.height, + width, + height, + aspectRatio + }); + + const resized = new Resize(decoded.width, decoded.height, targetWidth, targetHeight, false, true, false, async (buffer: Uint8Array) => { + const image: ImagePNG = { + width: targetWidth, + height: targetHeight, + data: buffer, + depth: decoded.depth, + channels: decoded.channels + }; + + try { + const raw = encodePNG(image); //Quality 100 (default is 50) + resolve(raw); + } catch(error) { + reject(error); + } + }); + + resized.resize(decoded.data); + } catch (error) { + reject(error); + } + }); +} + +/** + * Get dimensions for resizing an image + * @param options - options for resize + * - for landscape, width has priority + * - for portrait, height has priority + */ +function getDimensions(options: DimensionsOptions): {targetWidth: number, targetHeight: number} { + const { + originalWidth, + originalHeight, + width, + height, + aspectRatio = true + } = options || {}; + + // Don't keep aspect ratio + if(!aspectRatio) { + return { + targetWidth: width || originalWidth, + targetHeight: height || originalHeight + }; + } + + // Keep aspect ratio + const _aspectRatio = originalWidth / originalHeight; + let targetWidth; + let targetHeight; + + if(_aspectRatio > 1) { // landscape + if(width) { + targetWidth = width; + targetHeight = Math.trunc(width / _aspectRatio); + } else if(!width && height){ + targetWidth = Math.trunc(height * _aspectRatio); + targetHeight = height; + } else { + targetWidth = 100; + targetHeight = Math.trunc(100 / _aspectRatio); + } + } else { //portrait + if(height) { + targetWidth = Math.trunc(height * _aspectRatio); + targetHeight = height; + } else if(width && !height){ + targetWidth = width; + targetHeight = Math.trunc(width / _aspectRatio); + } else { + targetWidth = Math.trunc(100 * _aspectRatio); + targetHeight = 100; + } + } + + return { targetWidth, targetHeight }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/31309ebe9dce51093b18db91b1f0ab39782026ff.ts b/bundler/tests/.cache/deno/31309ebe9dce51093b18db91b1f0ab39782026ff.ts new file mode 100644 index 00000000000..640d25b4d77 --- /dev/null +++ b/bundler/tests/.cache/deno/31309ebe9dce51093b18db91b1f0ab39782026ff.ts @@ -0,0 +1,190 @@ +// Loaded from https://deno.land/std@0.77.0/log/logger.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, getLevelName, LogLevels } from "./levels.ts"; +import type { LevelName } from "./levels.ts"; +import type { BaseHandler } from "./handlers.ts"; + +// deno-lint-ignore no-explicit-any +export type GenericFunction = (...args: any[]) => any; + +export interface LogRecordOptions { + msg: string; + args: unknown[]; + level: number; + loggerName: string; +} + +export class LogRecord { + readonly msg: string; + #args: unknown[]; + #datetime: Date; + readonly level: number; + readonly levelName: string; + readonly loggerName: string; + + constructor(options: LogRecordOptions) { + this.msg = options.msg; + this.#args = [...options.args]; + this.level = options.level; + this.loggerName = options.loggerName; + this.#datetime = new Date(); + this.levelName = getLevelName(options.level); + } + get args(): unknown[] { + return [...this.#args]; + } + get datetime(): Date { + return new Date(this.#datetime.getTime()); + } +} + +export interface LoggerOptions { + handlers?: BaseHandler[]; +} + +export class Logger { + #level: LogLevels; + #handlers: BaseHandler[]; + readonly #loggerName: string; + + constructor( + loggerName: string, + levelName: LevelName, + options: LoggerOptions = {}, + ) { + this.#loggerName = loggerName; + this.#level = getLevelByName(levelName); + this.#handlers = options.handlers || []; + } + + get level(): LogLevels { + return this.#level; + } + set level(level: LogLevels) { + this.#level = level; + } + + get levelName(): LevelName { + return getLevelName(this.#level); + } + set levelName(levelName: LevelName) { + this.#level = getLevelByName(levelName); + } + + get loggerName(): string { + return this.#loggerName; + } + + set handlers(hndls: BaseHandler[]) { + this.#handlers = hndls; + } + get handlers(): BaseHandler[] { + return this.#handlers; + } + + /** If the level of the logger is greater than the level to log, then nothing + * is logged, otherwise a log record is passed to each log handler. `msg` data + * passed in is returned. If a function is passed in, it is only evaluated + * if the msg will be logged and the return value will be the result of the + * function, not the function itself, unless the function isn't called, in which + * case undefined is returned. All types are coerced to strings for logging. + */ + private _log( + level: number, + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + if (this.level > level) { + return msg instanceof Function ? undefined : msg; + } + + let fnResult: T | undefined; + let logMessage: string; + if (msg instanceof Function) { + fnResult = msg(); + logMessage = this.asString(fnResult); + } else { + logMessage = this.asString(msg); + } + const record: LogRecord = new LogRecord({ + msg: logMessage, + args: args, + level: level, + loggerName: this.loggerName, + }); + + this.#handlers.forEach((handler): void => { + handler.handle(record); + }); + + return msg instanceof Function ? fnResult : msg; + } + + asString(data: unknown): string { + if (typeof data === "string") { + return data; + } else if ( + data === null || + typeof data === "number" || + typeof data === "bigint" || + typeof data === "boolean" || + typeof data === "undefined" || + typeof data === "symbol" + ) { + return String(data); + } else if (typeof data === "object") { + return JSON.stringify(data); + } + return "undefined"; + } + + debug(msg: () => T, ...args: unknown[]): T | undefined; + debug(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.DEBUG, msg, ...args); + } + + info(msg: () => T, ...args: unknown[]): T | undefined; + info(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.INFO, msg, ...args); + } + + warning(msg: () => T, ...args: unknown[]): T | undefined; + warning(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.WARNING, msg, ...args); + } + + error(msg: () => T, ...args: unknown[]): T | undefined; + error(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.ERROR, msg, ...args); + } + + critical(msg: () => T, ...args: unknown[]): T | undefined; + critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] + ): T; + critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.CRITICAL, msg, ...args); + } +} diff --git a/bundler/tests/.cache/deno/318cfebee0c056540312db81fb342856d7419560.ts b/bundler/tests/.cache/deno/318cfebee0c056540312db81fb342856d7419560.ts new file mode 100644 index 00000000000..03b85c58f85 --- /dev/null +++ b/bundler/tests/.cache/deno/318cfebee0c056540312db81fb342856d7419560.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.84.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/31b201cc9177f641a2f4eec0ee0d85e177865877.ts b/bundler/tests/.cache/deno/31b201cc9177f641a2f4eec0ee0d85e177865877.ts new file mode 100644 index 00000000000..3ed5aa6ae18 --- /dev/null +++ b/bundler/tests/.cache/deno/31b201cc9177f641a2f4eec0ee0d85e177865877.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.77.0/path/_interface.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/32615335700c96432bcbee6e4106f30b8961719b.ts b/bundler/tests/.cache/deno/32615335700c96432bcbee6e4106f30b8961719b.ts new file mode 100644 index 00000000000..7c015811ca8 --- /dev/null +++ b/bundler/tests/.cache/deno/32615335700c96432bcbee6e4106f30b8961719b.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.80.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/33072e22acf735c097cc99f588a01404695de266.ts b/bundler/tests/.cache/deno/33072e22acf735c097cc99f588a01404695de266.ts new file mode 100644 index 00000000000..81d9b2d3d5d --- /dev/null +++ b/bundler/tests/.cache/deno/33072e22acf735c097cc99f588a01404695de266.ts @@ -0,0 +1,296 @@ +// Loaded from https://deno.land/std@0.77.0/fs/copy.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType, isSubdir } from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +const isWindows = Deno.build.os === "windows"; + +export interface CopyOptions { + /** + * overwrite existing file or directory. Default is `false` + */ + overwrite?: boolean; + /** + * When `true`, will set last modification and access times to the ones of the + * original source files. + * When `false`, timestamp behavior is OS-dependent. + * Default is `false`. + */ + preserveTimestamps?: boolean; +} + +async function ensureValidCopy( + src: string, + dest: string, + options: CopyOptions, + isCopyFolder = false, +): Promise { + let destStat: Deno.FileInfo; + + try { + destStat = await Deno.lstat(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (isCopyFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +function ensureValidCopySync( + src: string, + dest: string, + options: CopyOptions, + isCopyFolder = false, +): Deno.FileInfo | undefined { + let destStat: Deno.FileInfo; + try { + destStat = Deno.lstatSync(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (isCopyFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +/* copy file to dest */ +async function copyFile( + src: string, + dest: string, + options: CopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + await Deno.copyFile(src, dest); + if (options.preserveTimestamps) { + const statInfo = await Deno.stat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy file to dest synchronously */ +function copyFileSync(src: string, dest: string, options: CopyOptions): void { + ensureValidCopySync(src, dest, options); + Deno.copyFileSync(src, dest); + if (options.preserveTimestamps) { + const statInfo = Deno.statSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest */ +async function copySymLink( + src: string, + dest: string, + options: CopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + const originSrcFilePath = await Deno.readLink(src); + const type = getFileInfoType(await Deno.lstat(src)); + if (isWindows) { + await Deno.symlink(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + await Deno.symlink(originSrcFilePath, dest); + } + if (options.preserveTimestamps) { + const statInfo = await Deno.lstat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest synchronously */ +function copySymlinkSync( + src: string, + dest: string, + options: CopyOptions, +): void { + ensureValidCopySync(src, dest, options); + const originSrcFilePath = Deno.readLinkSync(src); + const type = getFileInfoType(Deno.lstatSync(src)); + if (isWindows) { + Deno.symlinkSync(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + Deno.symlinkSync(originSrcFilePath, dest); + } + + if (options.preserveTimestamps) { + const statInfo = Deno.lstatSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy folder from src to dest. */ +async function copyDir( + src: string, + dest: string, + options: CopyOptions, +): Promise { + const destStat = await ensureValidCopy(src, dest, options, true); + + if (!destStat) { + await ensureDir(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = await Deno.stat(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for await (const entry of Deno.readDir(src)) { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + await copySymLink(srcPath, destPath, options); + } else if (entry.isDirectory) { + await copyDir(srcPath, destPath, options); + } else if (entry.isFile) { + await copyFile(srcPath, destPath, options); + } + } +} + +/* copy folder from src to dest synchronously */ +function copyDirSync(src: string, dest: string, options: CopyOptions): void { + const destStat = ensureValidCopySync(src, dest, options, true); + + if (!destStat) { + ensureDirSync(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = Deno.statSync(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for (const entry of Deno.readDirSync(src)) { + assert(entry.name != null, "file.name must be set"); + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + copySymlinkSync(srcPath, destPath, options); + } else if (entry.isDirectory) { + copyDirSync(srcPath, destPath, options); + } else if (entry.isFile) { + copyFileSync(srcPath, destPath, options); + } + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export async function copy( + src: string, + dest: string, + options: CopyOptions = {}, +): Promise { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = await Deno.lstat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + await copySymLink(src, dest, options); + } else if (srcStat.isDirectory) { + await copyDir(src, dest, options); + } else if (srcStat.isFile) { + await copyFile(src, dest, options); + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export function copySync( + src: string, + dest: string, + options: CopyOptions = {}, +): void { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = Deno.lstatSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + copySymlinkSync(src, dest, options); + } else if (srcStat.isDirectory) { + copyDirSync(src, dest, options); + } else if (srcStat.isFile) { + copyFileSync(src, dest, options); + } +} diff --git a/bundler/tests/.cache/deno/332f04df8c92ae06934b7b4796c04983ccb2f417.ts b/bundler/tests/.cache/deno/332f04df8c92ae06934b7b4796c04983ccb2f417.ts new file mode 100644 index 00000000000..1a639351f9e --- /dev/null +++ b/bundler/tests/.cache/deno/332f04df8c92ae06934b7b4796c04983ccb2f417.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reject.js + + +import _complement from './internal/_complement.js'; +import _curry2 from './internal/_curry2.js'; +import filter from './filter.js'; + + +/** + * The complement of [`filter`](#filter). + * + * Acts as a transducer if a transformer is given in list position. Filterable + * objects include plain objects or any object that has a filter method such + * as `Array`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} + * @see R.filter, R.transduce, R.addIndex + * @example + * + * const isOdd = (n) => n % 2 === 1; + * + * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4] + * + * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +var reject = _curry2(function reject(pred, filterable) { + return filter(_complement(pred), filterable); +}); +export default reject; diff --git a/bundler/tests/.cache/deno/33964b38f887091acd435fe7b733ca6cb3750929.ts b/bundler/tests/.cache/deno/33964b38f887091acd435fe7b733ca6cb3750929.ts new file mode 100644 index 00000000000..b2a01428ed5 --- /dev/null +++ b/bundler/tests/.cache/deno/33964b38f887091acd435fe7b733ca6cb3750929.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std@0.84.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/33c0fdd50cdbbdbb549caced907347d1b887654e.ts b/bundler/tests/.cache/deno/33c0fdd50cdbbdbb549caced907347d1b887654e.ts new file mode 100644 index 00000000000..6038f06376c --- /dev/null +++ b/bundler/tests/.cache/deno/33c0fdd50cdbbdbb549caced907347d1b887654e.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/both.js + + +import _curry2 from './internal/_curry2.js'; +import _isFunction from './internal/_isFunction.js'; +import and from './and.js'; +import lift from './lift.js'; + + +/** + * A function which calls the two provided functions and returns the `&&` + * of the results. + * It returns the result of the first function if it is false-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * false-y value. + * + * In addition to functions, `R.both` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f A predicate + * @param {Function} g Another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. + * @see R.either, R.and + * @example + * + * const gt10 = R.gt(R.__, 10) + * const lt20 = R.lt(R.__, 20) + * const f = R.both(gt10, lt20); + * f(15); //=> true + * f(30); //=> false + * + * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false) + * R.both([false, false, 'a'], [11]); //=> [false, false, 11] + */ +var both = _curry2(function both(f, g) { + return _isFunction(f) ? + function _both() { + return f.apply(this, arguments) && g.apply(this, arguments); + } : + lift(and)(f, g); +}); +export default both; diff --git a/bundler/tests/.cache/deno/33d2b160da0ca6dc13a71b273d4e7333a2e71499.ts b/bundler/tests/.cache/deno/33d2b160da0ca6dc13a71b273d4e7333a2e71499.ts new file mode 100644 index 00000000000..564cece4e3e --- /dev/null +++ b/bundler/tests/.cache/deno/33d2b160da0ca6dc13a71b273d4e7333a2e71499.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/remove.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Removes the sub-list of `list` starting at index `start` and containing + * `count` elements. _Note that this is not destructive_: it returns a copy of + * the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} start The position to start removing elements + * @param {Number} count The number of elements to remove + * @param {Array} list The list to remove from + * @return {Array} A new Array with `count` elements from `start` removed. + * @see R.without + * @example + * + * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8] + */ +var remove = _curry3(function remove(start, count, list) { + var result = Array.prototype.slice.call(list, 0); + result.splice(start, count); + return result; +}); +export default remove; diff --git a/bundler/tests/.cache/deno/33f049cc805c7770d22edf5afbf67151aa93cf0a.ts b/bundler/tests/.cache/deno/33f049cc805c7770d22edf5afbf67151aa93cf0a.ts new file mode 100644 index 00000000000..94ace68a4eb --- /dev/null +++ b/bundler/tests/.cache/deno/33f049cc805c7770d22edf5afbf67151aa93cf0a.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pickBy.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a partial copy of an object containing only the keys that satisfy + * the supplied predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v} + * @param {Function} pred A predicate to determine whether or not a key + * should be included on the output object. + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties that satisfy `pred` + * on it. + * @see R.pick, R.filter + * @example + * + * const isUpperCase = (val, key) => key.toUpperCase() === key; + * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} + */ +var pickBy = _curry2(function pickBy(test, obj) { + var result = {}; + for (var prop in obj) { + if (test(obj[prop], prop, obj)) { + result[prop] = obj[prop]; + } + } + return result; +}); +export default pickBy; diff --git a/bundler/tests/.cache/deno/3416aa739965577e0d41ee5d94ff08b10c7b713d.ts b/bundler/tests/.cache/deno/3416aa739965577e0d41ee5d94ff08b10c7b713d.ts new file mode 100644 index 00000000000..9ea0418538e --- /dev/null +++ b/bundler/tests/.cache/deno/3416aa739965577e0d41ee5d94ff08b10c7b713d.ts @@ -0,0 +1,77 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/keys.js + + +import _curry1 from './internal/_curry1.js'; +import _has from './internal/_has.js'; +import _isArguments from './internal/_isArguments.js'; + +// cover IE < 9 keys issues +var hasEnumBug = !({toString: null}).propertyIsEnumerable('toString'); +var nonEnumerableProps = [ + 'constructor', 'valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString' +]; +// Safari bug +var hasArgsEnumBug = (function() { + 'use strict'; + return arguments.propertyIsEnumerable('length'); +}()); + +var contains = function contains(list, item) { + var idx = 0; + while (idx < list.length) { + if (list[idx] === item) { + return true; + } + idx += 1; + } + return false; +}; + +/** + * Returns a list containing the names of all the enumerable own properties of + * the supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own properties. + * @see R.keysIn, R.values + * @example + * + * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] + */ +var keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? + _curry1(function keys(obj) { + return Object(obj) !== obj ? [] : Object.keys(obj); + }) : + _curry1(function keys(obj) { + if (Object(obj) !== obj) { + return []; + } + var prop, nIdx; + var ks = []; + var checkArgsLength = hasArgsEnumBug && _isArguments(obj); + for (prop in obj) { + if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) { + ks[ks.length] = prop; + } + } + if (hasEnumBug) { + nIdx = nonEnumerableProps.length - 1; + while (nIdx >= 0) { + prop = nonEnumerableProps[nIdx]; + if (_has(prop, obj) && !contains(ks, prop)) { + ks[ks.length] = prop; + } + nIdx -= 1; + } + } + return ks; + }); +export default keys; diff --git a/bundler/tests/.cache/deno/34d3e04b554f3b12e1370b7d81d5f36c42a8901d.ts b/bundler/tests/.cache/deno/34d3e04b554f3b12e1370b7d81d5f36c42a8901d.ts new file mode 100644 index 00000000000..b3b5c366701 --- /dev/null +++ b/bundler/tests/.cache/deno/34d3e04b554f3b12e1370b7d81d5f36c42a8901d.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/bytes_formater@v1.4.0/deps.ts + + +export { + green, + setColorEnabled, +} from "https://deno.land/std@0.77.0/fmt/colors.ts"; diff --git a/bundler/tests/.cache/deno/3504307e6e5de33948f67a9150b0ee9653189cea.ts b/bundler/tests/.cache/deno/3504307e6e5de33948f67a9150b0ee9653189cea.ts new file mode 100644 index 00000000000..d169187face --- /dev/null +++ b/bundler/tests/.cache/deno/3504307e6e5de33948f67a9150b0ee9653189cea.ts @@ -0,0 +1,266 @@ +// Loaded from https://deno.land/x/args@1.0.7/flag-types.ts + + +import { + once, +} from "./deps.ts"; + +import { + FlagType, + ValueType, +} from "./types.ts"; + +import { + ok, + err, + flagPrefix, + findFlags, +} from "./utils.ts"; + +import { + MissingFlag, + ConflictFlags, + MissingValue, + UnexpectedFlag, + ValueParsingFailure, +} from "./flag-errors.ts"; + +const listFlags = ( + name: Name, + descriptor: { + readonly alias?: Iterable; + }, +): [Name, ...string[]] => [name, ...descriptor.alias || []]; + +const fmtTitle = (name: string, descriptor: { + readonly alias?: Iterable; +}): string => + listFlags(name, descriptor) + .map((flag) => flagPrefix(flag) + flag) + .join(", "); + +const fmtTypeHelp = (help?: () => string) => + help + ? "\n" + help() + : ""; + +type FlagHelpFunc = FlagType["help"]; +const FlagHelpFunc = ( + name: string, + descriptor: { + readonly alias?: readonly string[]; + readonly describe?: string; + }, +): FlagHelpFunc => + once(() => ({ + title: fmtTitle(name, descriptor), + description: descriptor.describe, + })); + +const sharedProps = ( + typeName: string, + descriptor?: { + readonly type: ValueType; + }, +) => ({ + [Symbol.toStringTag]: typeName + ( + descriptor ? `(${descriptor.type[Symbol.toStringTag]})` : "" + ), +}); + +interface FlagDescriptorSharedProps { + /** Flag aliases */ + readonly alias?: readonly string[]; + /** Flag description */ + readonly describe?: string; +} + +/** + * Declare a flag that terminates the program + */ +export const EarlyExitFlag = ( + name: Name, + descriptor: EarlyExitDescriptor, +): FlagType => ({ + name, + extract(args) { + const findRes = findFlags(args, listFlags(name, descriptor)); + if (findRes.length) return descriptor.exit(); + return ok({ value: undefined, consumedFlags: new Set() }); + }, + help: FlagHelpFunc(name, descriptor), + ...sharedProps("EarlyExitFlag"), +}); + +/** + * Interface of descriptor of {@link EarlyExitFlag} + */ +export interface EarlyExitDescriptor extends FlagDescriptorSharedProps { + /** + * Exit function to call + */ + readonly exit: () => never; +} + +/** + * Declare a binary flag: + * * value is `true` if the flag is found in argument list once or multiple times + * * value is `false` if the flag isn't found in argument list + */ +export const BinaryFlag = ( + name: Name, + descriptor: FlagDescriptor = {}, +): FlagType => ({ + name, + extract(args) { + const findRes = findFlags(args, listFlags(name, descriptor)); + return ok({ + value: Boolean(findRes.length), + consumedFlags: new Set(findRes), + }); + }, + help: FlagHelpFunc(name, descriptor), + ...sharedProps("BinaryFlag"), +}); + +export { BinaryFlag as Flag }; + +/** + * Declare a count flag: Value is number of occurrences + */ +export const CountFlag = ( + name: Name, + descriptor: FlagDescriptor = {}, +): FlagType => ({ + name, + extract(args) { + const allNames = listFlags(name, descriptor); + const findRes = findFlags(args, allNames); + const value = findRes + .map((flag) => + flag.type === "single-flag" + ? 1 + : flag.name + .filter((name) => allNames.includes(name)) + .length + ) + .reduce((acc, cur) => acc + cur, 0); + return ok({ + value, + consumedFlags: new Set(findRes), + }); + }, + help: FlagHelpFunc(name, descriptor), + ...sharedProps("CountFlag"), +}); + +/** + * Interface of descriptor of {@link BinaryFlag} and {@link CountFlag} + */ +export interface FlagDescriptor extends FlagDescriptorSharedProps {} + +/** + * Declare an option, including: + * * A flag + * * A value right after the flag + */ +export const Option = ( + name: Name, + descriptor: OptionDescriptor, +): FlagType => ({ + name, + extract(args) { + const flags = listFlags(name, descriptor); + const findRes = findFlags(args, flags); + if (!findRes.length) return err(new MissingFlag(name)); + if (findRes.length !== 1) return err(new ConflictFlags(flags)); + const [res] = findRes; + const valPos = res.index + 1; + if (args.length <= valPos) return err(new MissingValue(res.name)); + const val = args[valPos]; + if (val.type !== "value") return err(new UnexpectedFlag(res.name, val.raw)); + const parseResult = descriptor.type.extract([val.raw]); + if (!parseResult.tag) { + return err(new ValueParsingFailure(res.name, parseResult.error)); + } + return ok({ + value: parseResult.value, + consumedFlags: new Set([res, val]), + }); + }, + help: once(() => ({ + title: `${fmtTitle(name, descriptor)} <${descriptor.type.getTypeName()}>`, + description: (descriptor.describe || "") + + fmtTypeHelp(descriptor.type.help), + })), + ...sharedProps("Option", descriptor), +}); + +/** + * Interface of descriptor of {@link Option} + * @template Value Type of value + */ +export interface OptionDescriptor extends FlagDescriptorSharedProps { + /** Value parser and type */ + readonly type: ValueType; +} + +/** + * Turn an option partial: + * * If the option does not have a value, return default value + * * If the option has a value, return that value + */ +export const Partial = ( + x: FlagType, + def: Default, + descDef: string = String(def), +): FlagType => ({ + name: x.name, + extract(args) { + const result = x.extract(args); + if (result.tag) return result; + if (result.error instanceof MissingFlag) { + return ok({ + value: def, + consumedFlags: new Set(), + }); + } + return result; + }, + help: once(() => { + const { title, description } = x.help(); + return { + title: `${title} [default: ${descDef}]`, + description, + }; + }), + ...sharedProps(`Partial(${x[Symbol.toStringTag]})`), +}); + +/** + * Declare a partial option: + * * If a value is found, return that value + * * If not, return default value + */ +export const PartialOption = ( + name: Name, + descriptor: PartialOptionDescriptor, +): FlagType => + Partial( + Option(name, descriptor), + descriptor.default, + descriptor.describeDefault, + ); + +/** + * Interface of descriptor of {@link PartialOption} + * @template Value Type of value + * @template Default Type of default value + */ +export interface PartialOptionDescriptor + extends OptionDescriptor { + /** Default value */ + readonly default: Default; + /** Default value description */ + readonly describeDefault?: string; +} diff --git a/bundler/tests/.cache/deno/352e08deec75cc5239a03e6dfe0188ccc5121753.ts b/bundler/tests/.cache/deno/352e08deec75cc5239a03e6dfe0188ccc5121753.ts new file mode 100644 index 00000000000..a64f55a3557 --- /dev/null +++ b/bundler/tests/.cache/deno/352e08deec75cc5239a03e6dfe0188ccc5121753.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/append.js + + +import _concat from './internal/_concat.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a new list containing the contents of the given list, followed by + * the given element. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The element to add to the end of the new list. + * @param {Array} list The list of elements to add a new item to. + * list. + * @return {Array} A new list containing the elements of the old list followed by `el`. + * @see R.prepend + * @example + * + * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests'] + * R.append('tests', []); //=> ['tests'] + * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] + */ +var append = _curry2(function append(el, list) { + return _concat(list, [el]); +}); +export default append; diff --git a/bundler/tests/.cache/deno/3585e6feea6092da3750047f296439657b52a12d.ts b/bundler/tests/.cache/deno/3585e6feea6092da3750047f296439657b52a12d.ts new file mode 100644 index 00000000000..325f3c6d6e9 --- /dev/null +++ b/bundler/tests/.cache/deno/3585e6feea6092da3750047f296439657b52a12d.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/std@0.85.0/fs/eol.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** EndOfLine character enum */ +export enum EOL { + LF = "\n", + CRLF = "\r\n", +} + +const regDetect = /(?:\r?\n)/g; + +/** + * Detect the EOL character for string input. + * returns null if no newline + */ +export function detect(content: string): EOL | null { + const d = content.match(regDetect); + if (!d || d.length === 0) { + return null; + } + const hasCRLF = d.some((x: string): boolean => x === EOL.CRLF); + + return hasCRLF ? EOL.CRLF : EOL.LF; +} + +/** Format the file to the targeted EOL */ +export function format(content: string, eol: EOL): string { + return content.replace(regDetect, eol); +} diff --git a/bundler/tests/.cache/deno/3589024f603e12aa898c36c2f1bf050d07274544.ts b/bundler/tests/.cache/deno/3589024f603e12aa898c36c2f1bf050d07274544.ts new file mode 100644 index 00000000000..e9ac65a698c --- /dev/null +++ b/bundler/tests/.cache/deno/3589024f603e12aa898c36c2f1bf050d07274544.ts @@ -0,0 +1,420 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/validate.js + + +import find from '../polyfills/find.js'; +import flatMap from '../polyfills/flatMap.js'; +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { locatedError } from '../error/locatedError.js'; +import { isValidNameError } from '../utilities/assertValidName.js'; +import { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.js'; +import { isDirective } from './directives.js'; +import { isIntrospectionType } from './introspection.js'; +import { assertSchema } from './schema.js'; +import { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument } from './definition.js'; +/** + * Implements the "Type Validation" sub-sections of the specification's + * "Type System" section. + * + * Validation runs synchronously, returning an array of encountered errors, or + * an empty array if no errors were encountered and the Schema is valid. + */ + +export function validateSchema(schema) { + // First check to ensure the provided value is in fact a GraphQLSchema. + assertSchema(schema); // If this Schema has already been validated, return the previous results. + + if (schema.__validationErrors) { + return schema.__validationErrors; + } // Validate the schema, producing a list of errors. + + + const context = new SchemaValidationContext(schema); + validateRootTypes(context); + validateDirectives(context); + validateTypes(context); // Persist the results of validation before returning to ensure validation + // does not run multiple times for this schema. + + const errors = context.getErrors(); + schema.__validationErrors = errors; + return errors; +} +/** + * Utility function which asserts a schema is valid by throwing an error if + * it is invalid. + */ + +export function assertValidSchema(schema) { + const errors = validateSchema(schema); + + if (errors.length !== 0) { + throw new Error(errors.map(error => error.message).join('\n\n')); + } +} + +class SchemaValidationContext { + constructor(schema) { + this._errors = []; + this.schema = schema; + } + + reportError(message, nodes) { + const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes; + + this.addError(new GraphQLError(message, _nodes)); + } + + addError(error) { + this._errors.push(error); + } + + getErrors() { + return this._errors; + } + +} + +function validateRootTypes(context) { + const schema = context.schema; + const queryType = schema.getQueryType(); + + if (!queryType) { + context.reportError('Query root type must be provided.', schema.astNode); + } else if (!isObjectType(queryType)) { + context.reportError(`Query root type must be Object type, it cannot be ${inspect(queryType)}.`, getOperationTypeNode(schema, queryType, 'query')); + } + + const mutationType = schema.getMutationType(); + + if (mutationType && !isObjectType(mutationType)) { + context.reportError('Mutation root type must be Object type if provided, it cannot be ' + `${inspect(mutationType)}.`, getOperationTypeNode(schema, mutationType, 'mutation')); + } + + const subscriptionType = schema.getSubscriptionType(); + + if (subscriptionType && !isObjectType(subscriptionType)) { + context.reportError('Subscription root type must be Object type if provided, it cannot be ' + `${inspect(subscriptionType)}.`, getOperationTypeNode(schema, subscriptionType, 'subscription')); + } +} + +function getOperationTypeNode(schema, type, operation) { + const operationNodes = getAllSubNodes(schema, node => node.operationTypes); + + for (const node of operationNodes) { + if (node.operation === operation) { + return node.type; + } + } + + return type.astNode; +} + +function validateDirectives(context) { + for (const directive of context.schema.getDirectives()) { + // Ensure all directives are in fact GraphQL directives. + if (!isDirective(directive)) { + context.reportError(`Expected directive but got: ${inspect(directive)}.`, directive?.astNode); + continue; + } // Ensure they are named correctly. + + + validateName(context, directive); // TODO: Ensure proper locations. + // Ensure the arguments are valid. + + for (const arg of directive.args) { + // Ensure they are named correctly. + validateName(context, arg); // Ensure the type is an input type. + + if (!isInputType(arg.type)) { + context.reportError(`The type of @${directive.name}(${arg.name}:) must be Input Type ` + `but got: ${inspect(arg.type)}.`, arg.astNode); + } + } + } +} + +function validateName(context, node) { + // Ensure names are valid, however introspection types opt out. + const error = isValidNameError(node.name); + + if (error) { + context.addError(locatedError(error, node.astNode)); + } +} + +function validateTypes(context) { + const validateInputObjectCircularRefs = createInputObjectCircularRefsValidator(context); + const typeMap = context.schema.getTypeMap(); + + for (const type of objectValues(typeMap)) { + // Ensure all provided types are in fact GraphQL type. + if (!isNamedType(type)) { + context.reportError(`Expected GraphQL named type but got: ${inspect(type)}.`, type.astNode); + continue; + } // Ensure it is named correctly (excluding introspection types). + + + if (!isIntrospectionType(type)) { + validateName(context, type); + } + + if (isObjectType(type)) { + // Ensure fields are valid + validateFields(context, type); // Ensure objects implement the interfaces they claim to. + + validateInterfaces(context, type); + } else if (isInterfaceType(type)) { + // Ensure fields are valid. + validateFields(context, type); // Ensure interfaces implement the interfaces they claim to. + + validateInterfaces(context, type); + } else if (isUnionType(type)) { + // Ensure Unions include valid member types. + validateUnionMembers(context, type); + } else if (isEnumType(type)) { + // Ensure Enums have valid values. + validateEnumValues(context, type); + } else if (isInputObjectType(type)) { + // Ensure Input Object fields are valid. + validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references + + validateInputObjectCircularRefs(type); + } + } +} + +function validateFields(context, type) { + const fields = objectValues(type.getFields()); // Objects and Interfaces both must define one or more fields. + + if (fields.length === 0) { + context.reportError(`Type ${type.name} must define one or more fields.`, getAllNodes(type)); + } + + for (const field of fields) { + // Ensure they are named correctly. + validateName(context, field); // Ensure the type is an output type + + if (!isOutputType(field.type)) { + context.reportError(`The type of ${type.name}.${field.name} must be Output Type ` + `but got: ${inspect(field.type)}.`, field.astNode?.type); + } // Ensure the arguments are valid + + + for (const arg of field.args) { + const argName = arg.name; // Ensure they are named correctly. + + validateName(context, arg); // Ensure the type is an input type + + if (!isInputType(arg.type)) { + context.reportError(`The type of ${type.name}.${field.name}(${argName}:) must be Input ` + `Type but got: ${inspect(arg.type)}.`, arg.astNode?.type); + } + } + } +} + +function validateInterfaces(context, type) { + const ifaceTypeNames = Object.create(null); + + for (const iface of type.getInterfaces()) { + if (!isInterfaceType(iface)) { + context.reportError(`Type ${inspect(type)} must only implement Interface types, ` + `it cannot implement ${inspect(iface)}.`, getAllImplementsInterfaceNodes(type, iface)); + continue; + } + + if (type === iface) { + context.reportError(`Type ${type.name} cannot implement itself because it would create a circular reference.`, getAllImplementsInterfaceNodes(type, iface)); + continue; + } + + if (ifaceTypeNames[iface.name]) { + context.reportError(`Type ${type.name} can only implement ${iface.name} once.`, getAllImplementsInterfaceNodes(type, iface)); + continue; + } + + ifaceTypeNames[iface.name] = true; + validateTypeImplementsAncestors(context, type, iface); + validateTypeImplementsInterface(context, type, iface); + } +} + +function validateTypeImplementsInterface(context, type, iface) { + const typeFieldMap = type.getFields(); // Assert each interface field is implemented. + + for (const ifaceField of objectValues(iface.getFields())) { + const fieldName = ifaceField.name; + const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type. + + if (!typeField) { + context.reportError(`Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`, [ifaceField.astNode, ...getAllNodes(type)]); + continue; + } // Assert interface field type is satisfied by type field type, by being + // a valid subtype. (covariant) + + + if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) { + context.reportError(`Interface field ${iface.name}.${fieldName} expects type ` + `${inspect(ifaceField.type)} but ${type.name}.${fieldName} ` + `is type ${inspect(typeField.type)}.`, [ifaceField.astNode.type, typeField.astNode.type]); + } // Assert each interface field arg is implemented. + + + for (const ifaceArg of ifaceField.args) { + const argName = ifaceArg.name; + const typeArg = find(typeField.args, arg => arg.name === argName); // Assert interface field arg exists on object field. + + if (!typeArg) { + context.reportError(`Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`, [ifaceArg.astNode, typeField.astNode]); + continue; + } // Assert interface field arg type matches object field arg type. + // (invariant) + // TODO: change to contravariant? + + + if (!isEqualType(ifaceArg.type, typeArg.type)) { + context.reportError(`Interface field argument ${iface.name}.${fieldName}(${argName}:) ` + `expects type ${inspect(ifaceArg.type)} but ` + `${type.name}.${fieldName}(${argName}:) is type ` + `${inspect(typeArg.type)}.`, [ifaceArg.astNode.type, typeArg.astNode.type]); + } // TODO: validate default values? + + } // Assert additional arguments must not be required. + + + for (const typeArg of typeField.args) { + const argName = typeArg.name; + const ifaceArg = find(ifaceField.args, arg => arg.name === argName); + + if (!ifaceArg && isRequiredArgument(typeArg)) { + context.reportError(`Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`, [typeArg.astNode, ifaceField.astNode]); + } + } + } +} + +function validateTypeImplementsAncestors(context, type, iface) { + const ifaceInterfaces = type.getInterfaces(); + + for (const transitive of iface.getInterfaces()) { + if (ifaceInterfaces.indexOf(transitive) === -1) { + context.reportError(transitive === type ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.` : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`, [...getAllImplementsInterfaceNodes(iface, transitive), ...getAllImplementsInterfaceNodes(type, iface)]); + } + } +} + +function validateUnionMembers(context, union) { + const memberTypes = union.getTypes(); + + if (memberTypes.length === 0) { + context.reportError(`Union type ${union.name} must define one or more member types.`, getAllNodes(union)); + } + + const includedTypeNames = Object.create(null); + + for (const memberType of memberTypes) { + if (includedTypeNames[memberType.name]) { + context.reportError(`Union type ${union.name} can only include type ${memberType.name} once.`, getUnionMemberTypeNodes(union, memberType.name)); + continue; + } + + includedTypeNames[memberType.name] = true; + + if (!isObjectType(memberType)) { + context.reportError(`Union type ${union.name} can only include Object types, ` + `it cannot include ${inspect(memberType)}.`, getUnionMemberTypeNodes(union, String(memberType))); + } + } +} + +function validateEnumValues(context, enumType) { + const enumValues = enumType.getValues(); + + if (enumValues.length === 0) { + context.reportError(`Enum type ${enumType.name} must define one or more values.`, getAllNodes(enumType)); + } + + for (const enumValue of enumValues) { + const valueName = enumValue.name; // Ensure valid name. + + validateName(context, enumValue); + + if (valueName === 'true' || valueName === 'false' || valueName === 'null') { + context.reportError(`Enum type ${enumType.name} cannot include value: ${valueName}.`, enumValue.astNode); + } + } +} + +function validateInputFields(context, inputObj) { + const fields = objectValues(inputObj.getFields()); + + if (fields.length === 0) { + context.reportError(`Input Object type ${inputObj.name} must define one or more fields.`, getAllNodes(inputObj)); + } // Ensure the arguments are valid + + + for (const field of fields) { + // Ensure they are named correctly. + validateName(context, field); // Ensure the type is an input type + + if (!isInputType(field.type)) { + context.reportError(`The type of ${inputObj.name}.${field.name} must be Input Type ` + `but got: ${inspect(field.type)}.`, field.astNode?.type); + } + } +} + +function createInputObjectCircularRefsValidator(context) { + // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js.js'. + // Tracks already visited types to maintain O(N) and to ensure that cycles + // are not redundantly reported. + const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors + + const fieldPath = []; // Position in the type path + + const fieldPathIndexByTypeName = Object.create(null); + return detectCycleRecursive; // This does a straight-forward DFS to find cycles. + // It does not terminate when a cycle was found but continues to explore + // the graph to find all possible cycles. + + function detectCycleRecursive(inputObj) { + if (visitedTypes[inputObj.name]) { + return; + } + + visitedTypes[inputObj.name] = true; + fieldPathIndexByTypeName[inputObj.name] = fieldPath.length; + const fields = objectValues(inputObj.getFields()); + + for (const field of fields) { + if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) { + const fieldType = field.type.ofType; + const cycleIndex = fieldPathIndexByTypeName[fieldType.name]; + fieldPath.push(field); + + if (cycleIndex === undefined) { + detectCycleRecursive(fieldType); + } else { + const cyclePath = fieldPath.slice(cycleIndex); + const pathStr = cyclePath.map(fieldObj => fieldObj.name).join('.'); + context.reportError(`Cannot reference Input Object "${fieldType.name}" within itself through a series of non-null fields: "${pathStr}".`, cyclePath.map(fieldObj => fieldObj.astNode)); + } + + fieldPath.pop(); + } + } + + fieldPathIndexByTypeName[inputObj.name] = undefined; + } +} + +function getAllNodes(object) { + const { + astNode, + extensionASTNodes + } = object; + return astNode ? extensionASTNodes ? [astNode].concat(extensionASTNodes) : [astNode] : extensionASTNodes ?? []; +} + +function getAllSubNodes(object, getter) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + return flatMap(getAllNodes(object), item => getter(item) ?? []); +} + +function getAllImplementsInterfaceNodes(type, iface) { + return getAllSubNodes(type, typeNode => typeNode.interfaces).filter(ifaceNode => ifaceNode.name.value === iface.name); +} + +function getUnionMemberTypeNodes(union, typeName) { + return getAllSubNodes(union, unionNode => unionNode.types).filter(typeNode => typeNode.name.value === typeName); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/364b9c2423817567fb857d4fa511095fa696552d.ts b/bundler/tests/.cache/deno/364b9c2423817567fb857d4fa511095fa696552d.ts new file mode 100644 index 00000000000..ae23f1a1477 --- /dev/null +++ b/bundler/tests/.cache/deno/364b9c2423817567fb857d4fa511095fa696552d.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/utils/uri.ts + + +// mongodb://username:password@example.com:27017,example2.com:27017,...,example.comN:27017/database?key=value&keyN=valueN +import { ConnectOptions } from "../types.ts"; + +export function parse(uri: string): ConnectOptions { + const uriObject = new URL(decodeURIComponent(uri)); + const search: { [key: string]: any } = {}; + uriObject.searchParams.forEach((val, key) => { + search[key] = val; + }); + const domain_socket = getDomainSocket(); + + const dbName = getDbName(); + const auth = { + user: decodeURIComponent(uriObject.username), + password: decodeURIComponent(uriObject.password), + }; + return { + servers: [ + { + host: uriObject.hostname, + port: parseInt(uriObject.port) || 27017, + domainSocket: domain_socket, + }, + ], + dbName, + auth, + ...search, + }; + + function isSock(pathname: string, sockFlag: string) { + return pathname.includes(sockFlag); + } + + function getDomainSocket() { + const pathname = uriObject.pathname; + const sockFlag = ".sock"; + if (isSock(pathname, sockFlag)) { + const index = pathname.indexOf(sockFlag); + return decodeURIComponent(pathname.slice(0, index + 5)); + } + return ""; + } + + function getDbName() { + const defaultDbName = "admin"; + const pathname = uriObject.pathname; + const sockFlag = ".sock"; + if (isSock(pathname, sockFlag)) { + const index = pathname.indexOf(sockFlag) + sockFlag.length + 1; + return pathname.slice(index) || defaultDbName; + } + return pathname.slice(1) || defaultDbName; + } +} diff --git a/bundler/tests/.cache/deno/3678092871664d8c241c90a551036889ee7b660a.ts b/bundler/tests/.cache/deno/3678092871664d8c241c90a551036889ee7b660a.ts new file mode 100644 index 00000000000..6d04eb9520c --- /dev/null +++ b/bundler/tests/.cache/deno/3678092871664d8c241c90a551036889ee7b660a.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/args@1.0.7/symbols.ts + + +/** Value of `tag` when argv is a complete and list of valid options */ +export const MAIN_COMMAND = Symbol("MAIN_COMMAND"); +export type MAIN_COMMAND = typeof MAIN_COMMAND; + +/** Value of `tag` when argv is failed to parse */ +export const PARSE_FAILURE = Symbol("PARSE_FAILURE"); +export type PARSE_FAILURE = typeof PARSE_FAILURE; diff --git a/bundler/tests/.cache/deno/36a58f47cf7519b081e17a0358a65b13a6a9e70e.ts b/bundler/tests/.cache/deno/36a58f47cf7519b081e17a0358a65b13a6a9e70e.ts new file mode 100644 index 00000000000..30029623085 --- /dev/null +++ b/bundler/tests/.cache/deno/36a58f47cf7519b081e17a0358a65b13a6a9e70e.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/comparator.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Makes a comparator function out of a function that reports whether the first + * element is less than the second. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((a, b) -> Boolean) -> ((a, b) -> Number) + * @param {Function} pred A predicate function of arity two which will return `true` if the first argument + * is less than the second, `false` otherwise + * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0` + * @example + * + * const byAge = R.comparator((a, b) => a.age < b.age); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByIncreasingAge = R.sort(byAge, people); + * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] + */ +var comparator = _curry1(function comparator(pred) { + return function(a, b) { + return pred(a, b) ? -1 : pred(b, a) ? 1 : 0; + }; +}); +export default comparator; diff --git a/bundler/tests/.cache/deno/36d9ffde34e1a40d3aa45ff5b72be9eeda6e5aec.ts b/bundler/tests/.cache/deno/36d9ffde34e1a40d3aa45ff5b72be9eeda6e5aec.ts new file mode 100644 index 00000000000..16367f63cc1 --- /dev/null +++ b/bundler/tests/.cache/deno/36d9ffde34e1a40d3aa45ff5b72be9eeda6e5aec.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/case@v2.1.0/upperFirstCase.ts + + +import upperCase from "./upperCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + str = String(str); + + return upperCase(str.charAt(0), locale) + str.substr(1); +} diff --git a/bundler/tests/.cache/deno/37094f801b2385d9eb12b7ef1b7245c51fd0b159.ts b/bundler/tests/.cache/deno/37094f801b2385d9eb12b7ef1b7245c51fd0b159.ts new file mode 100644 index 00000000000..67254e64368 --- /dev/null +++ b/bundler/tests/.cache/deno/37094f801b2385d9eb12b7ef1b7245c51fd0b159.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueVariableNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique variable names + * + * A GraphQL operation is only valid if all its variables are uniquely named. + */ +export function UniqueVariableNamesRule(context) { + let knownVariableNames = Object.create(null); + return { + OperationDefinition() { + knownVariableNames = Object.create(null); + }, + + VariableDefinition(node) { + const variableName = node.variable.name.value; + + if (knownVariableNames[variableName]) { + context.reportError(new GraphQLError(`There can be only one variable named "$${variableName}".`, [knownVariableNames[variableName], node.variable.name])); + } else { + knownVariableNames[variableName] = node.variable.name; + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/37667401348e9860ebb01bdb22863259522ef044.ts b/bundler/tests/.cache/deno/37667401348e9860ebb01bdb22863259522ef044.ts new file mode 100644 index 00000000000..e8bf6bd3f8d --- /dev/null +++ b/bundler/tests/.cache/deno/37667401348e9860ebb01bdb22863259522ef044.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.80.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/3793b332a77bf20451ca9d67aa64cbb84baabf4f.ts b/bundler/tests/.cache/deno/3793b332a77bf20451ca9d67aa64cbb84baabf4f.ts new file mode 100644 index 00000000000..a2fe9131cb1 --- /dev/null +++ b/bundler/tests/.cache/deno/3793b332a77bf20451ca9d67aa64cbb84baabf4f.ts @@ -0,0 +1,620 @@ +// Loaded from https://deno.land/std@0.84.0/testing/asserts.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. Do not rely on good formatting of values +// for AssertionError messages in browsers. + +import { bold, gray, green, red, stripColor, white } from "../fmt/colors.ts"; +import { diff, DiffResult, DiffType } from "./_diff.ts"; + +const CAN_NOT_DISPLAY = "[Cannot display]"; + +interface Constructor { + // deno-lint-ignore no-explicit-any + new (...args: any[]): any; +} + +export class AssertionError extends Error { + constructor(message: string) { + super(message); + this.name = "AssertionError"; + } +} + +/** + * Converts the input into a string. Objects, Sets and Maps are sorted so as to + * make tests less flaky + * @param v Value to be formatted + */ +export function _format(v: unknown): string { + return globalThis.Deno + ? Deno.inspect(v, { + depth: Infinity, + sorted: true, + trailingComma: true, + compact: false, + iterableLimit: Infinity, + }) + : `"${String(v).replace(/(?=["\\])/g, "\\")}"`; +} + +/** + * Colors the output of assertion diffs + * @param diffType Difference type, either added or removed + */ +function createColor(diffType: DiffType): (s: string) => string { + switch (diffType) { + case DiffType.added: + return (s: string): string => green(bold(s)); + case DiffType.removed: + return (s: string): string => red(bold(s)); + default: + return white; + } +} + +/** + * Prefixes `+` or `-` in diff output + * @param diffType Difference type, either added or removed + */ +function createSign(diffType: DiffType): string { + switch (diffType) { + case DiffType.added: + return "+ "; + case DiffType.removed: + return "- "; + default: + return " "; + } +} + +function buildMessage(diffResult: ReadonlyArray>): string[] { + const messages: string[] = []; + messages.push(""); + messages.push(""); + messages.push( + ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${ + green(bold("Expected")) + }`, + ); + messages.push(""); + messages.push(""); + diffResult.forEach((result: DiffResult): void => { + const c = createColor(result.type); + messages.push(c(`${createSign(result.type)}${result.value}`)); + }); + messages.push(""); + + return messages; +} + +function isKeyedCollection(x: unknown): x is Set { + return [Symbol.iterator, "size"].every((k) => k in (x as Set)); +} + +/** + * Deep equality comparison used in assertions + * @param c actual value + * @param d expected value + */ +export function equal(c: unknown, d: unknown): boolean { + const seen = new Map(); + return (function compare(a: unknown, b: unknown): boolean { + // Have to render RegExp & Date for string comparison + // unless it's mistreated as object + if ( + a && + b && + ((a instanceof RegExp && b instanceof RegExp) || + (a instanceof URL && b instanceof URL)) + ) { + return String(a) === String(b); + } + if (a instanceof Date && b instanceof Date) { + const aTime = a.getTime(); + const bTime = b.getTime(); + // Check for NaN equality manually since NaN is not + // equal to itself. + if (Number.isNaN(aTime) && Number.isNaN(bTime)) { + return true; + } + return a.getTime() === b.getTime(); + } + if (Object.is(a, b)) { + return true; + } + if (a && typeof a === "object" && b && typeof b === "object") { + if (seen.get(a) === b) { + return true; + } + if (Object.keys(a || {}).length !== Object.keys(b || {}).length) { + return false; + } + if (isKeyedCollection(a) && isKeyedCollection(b)) { + if (a.size !== b.size) { + return false; + } + + let unmatchedEntries = a.size; + + for (const [aKey, aValue] of a.entries()) { + for (const [bKey, bValue] of b.entries()) { + /* Given that Map keys can be references, we need + * to ensure that they are also deeply equal */ + if ( + (aKey === aValue && bKey === bValue && compare(aKey, bKey)) || + (compare(aKey, bKey) && compare(aValue, bValue)) + ) { + unmatchedEntries--; + } + } + } + + return unmatchedEntries === 0; + } + const merged = { ...a, ...b }; + for (const key in merged) { + type Key = keyof typeof merged; + if (!compare(a && a[key as Key], b && b[key as Key])) { + return false; + } + } + seen.set(a, b); + return true; + } + return false; + })(c, d); +} + +/** Make an assertion, error will be thrown if `expr` does not have truthy value. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` and `expected` are equal, deeply. If not + * deeply equal, then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertEquals(1, 2) + *``` + */ +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertEquals(actual: T, expected: T, msg?: string): void; +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (equal(actual, expected)) { + return; + } + let message = ""; + const actualString = _format(actual); + const expectedString = _format(expected); + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + if (msg) { + message = msg; + } + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not equal, deeply. + * If not then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertNotEquals(1, 2) + *``` + */ +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotEquals(actual: T, expected: T, msg?: string): void; +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (!equal(actual, expected)) { + return; + } + let actualString: string; + let expectedString: string; + try { + actualString = String(actual); + } catch (e) { + actualString = "[Cannot display]"; + } + try { + expectedString = String(expected); + } catch (e) { + expectedString = "[Cannot display]"; + } + if (!msg) { + msg = `actual: ${actualString} expected: ${expectedString}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` and `expected` are strictly equal. If + * not then throw. + * ```ts + * assertStrictEquals(1, 2) + * ``` + */ +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual === expected) { + return; + } + + let message: string; + + if (msg) { + message = msg; + } else { + const actualString = _format(actual); + const expectedString = _format(expected); + + if (actualString === expectedString) { + const withOffset = actualString + .split("\n") + .map((l) => ` ${l}`) + .join("\n"); + message = + `Values have the same structure but are not reference-equal:\n\n${ + red(withOffset) + }\n`; + } else { + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not strictly equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + } + } + + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not strictly equal. + * If the values are strictly equal then throw. + * ```ts + * assertNotStrictEquals(1, 1) + * ``` + */ +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual !== expected) { + return; + } + + throw new AssertionError( + msg ?? `Expected "actual" to be strictly unequal to: ${_format(actual)}\n`, + ); +} + +/** + * Make an assertion that actual is not null or undefined. If not + * then thrown. + */ +export function assertExists( + actual: unknown, + msg?: string, +): void { + if (actual === undefined || actual === null) { + if (!msg) { + msg = + `actual: "${actual}" expected to match anything but null or undefined`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that actual includes expected. If not + * then thrown. + */ +export function assertStringIncludes( + actual: string, + expected: string, + msg?: string, +): void { + if (!actual.includes(expected)) { + if (!msg) { + msg = `actual: "${actual}" expected to contain: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` includes the `expected` values. + * If not then an error will be thrown. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertArrayIncludes([1, 2], [2]) + *``` + */ +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void { + const missing: unknown[] = []; + for (let i = 0; i < expected.length; i++) { + let found = false; + for (let j = 0; j < actual.length; j++) { + if (equal(expected[i], actual[j])) { + found = true; + break; + } + } + if (!found) { + missing.push(expected[i]); + } + } + if (missing.length === 0) { + return; + } + if (!msg) { + msg = `actual: "${_format(actual)}" expected to include: "${ + _format(expected) + }"\nmissing: ${_format(missing)}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` match RegExp `expected`. If not + * then thrown + */ +export function assertMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (!expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` not match RegExp `expected`. If match + * then thrown + */ +export function assertNotMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to not match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` object is a subset of `expected` object, deeply. + * If not, then throw. + */ +export function assertObjectMatch( + actual: Record, + expected: Record, +): void { + type loose = Record; + const seen = new WeakMap(); + return assertEquals( + (function filter(a: loose, b: loose): loose { + // Prevent infinite loop with circular references with same filter + if ((seen.has(a)) && (seen.get(a) === b)) { + return a; + } + seen.set(a, b); + // Filter keys and symbols which are present in both actual and expected + const filtered = {} as loose; + const entries = [ + ...Object.getOwnPropertyNames(a), + ...Object.getOwnPropertySymbols(a), + ] + .filter((key) => key in b) + .map((key) => [key, a[key as string]]) as Array<[string, unknown]>; + // Build filtered object and filter recursively on nested objects references + for (const [key, value] of entries) { + if (typeof value === "object") { + const subset = (b as loose)[key]; + if ((typeof subset === "object") && (subset)) { + filtered[key] = filter(value as loose, subset as loose); + continue; + } + } + filtered[key] = value; + } + return filtered; + })(actual, expected), + expected, + ); +} + +/** + * Forcefully throws a failed assertion + */ +export function fail(msg?: string): void { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + assert(false, `Failed assertion${msg ? `: ${msg}` : "."}`); +} + +/** + * Executes a function, expecting it to throw. If it does not, then it + * throws. An error class and a string that should be included in the + * error message can also be asserted. + */ +export function assertThrows( + fn: () => T, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Error { + let doesThrow = false; + let error = null; + try { + fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but was "${e.constructor.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** + * Executes a function which returns a promise, expecting it to throw or reject. + * If it does not, then it throws. An error class and a string that should be + * included in the error message can also be asserted. + */ +export async function assertThrowsAsync( + fn: () => Promise, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Promise { + let doesThrow = false; + let error = null; + try { + await fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown or rejected."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but got "${e.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** Use this to stub out methods that will throw when invoked. */ +export function unimplemented(msg?: string): never { + throw new AssertionError(msg || "unimplemented"); +} + +/** Use this to assert unreachable code. */ +export function unreachable(): never { + throw new AssertionError("unreachable"); +} diff --git a/bundler/tests/.cache/deno/379897dde2013e28e4dd6aad1799278b33185c05.ts b/bundler/tests/.cache/deno/379897dde2013e28e4dd6aad1799278b33185c05.ts new file mode 100644 index 00000000000..c24883957ad --- /dev/null +++ b/bundler/tests/.cache/deno/379897dde2013e28e4dd6aad1799278b33185c05.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std@0.83.0/bytes/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/3798c8a49f0bf5773b960edc923b342587d24ab2.ts b/bundler/tests/.cache/deno/3798c8a49f0bf5773b960edc923b342587d24ab2.ts new file mode 100644 index 00000000000..b1442a73405 --- /dev/null +++ b/bundler/tests/.cache/deno/3798c8a49f0bf5773b960edc923b342587d24ab2.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/FragmentsOnCompositeTypesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { print } from '../../language/printer.js'; +import { isCompositeType } from '../../type/definition.js'; +import { typeFromAST } from '../../utilities/typeFromAST.js'; + +/** + * Fragments on composite type + * + * Fragments use a type condition to determine if they apply, since fragments + * can only be spread into a composite type (object, interface, or union), the + * type condition must also be a composite type. + */ +export function FragmentsOnCompositeTypesRule(context) { + return { + InlineFragment(node) { + const typeCondition = node.typeCondition; + + if (typeCondition) { + const type = typeFromAST(context.getSchema(), typeCondition); + + if (type && !isCompositeType(type)) { + const typeStr = print(typeCondition); + context.reportError(new GraphQLError(`Fragment cannot condition on non composite type "${typeStr}".`, typeCondition)); + } + } + }, + + FragmentDefinition(node) { + const type = typeFromAST(context.getSchema(), node.typeCondition); + + if (type && !isCompositeType(type)) { + const typeStr = print(node.typeCondition); + context.reportError(new GraphQLError(`Fragment "${node.name.value}" cannot condition on non composite type "${typeStr}".`, node.typeCondition)); + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/37ada358cd3553060693de58827836ea941f815e.ts b/bundler/tests/.cache/deno/37ada358cd3553060693de58827836ea941f815e.ts new file mode 100644 index 00000000000..4dff21de2ef --- /dev/null +++ b/bundler/tests/.cache/deno/37ada358cd3553060693de58827836ea941f815e.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/differenceWith.js + + +import _includesWith from './internal/_includesWith.js'; +import _curry3 from './internal/_curry3.js'; + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith + * @example + * + * const cmp = (x, y) => x.a === y.a; + * const l1 = [{a: 1}, {a: 2}, {a: 3}]; + * const l2 = [{a: 3}, {a: 4}]; + * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] + */ +var differenceWith = _curry3(function differenceWith(pred, first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!_includesWith(pred, first[idx], second) && + !_includesWith(pred, first[idx], out)) { + out.push(first[idx]); + } + idx += 1; + } + return out; +}); +export default differenceWith; diff --git a/bundler/tests/.cache/deno/37e099d5f3f8b70b3676d571046257b38035c369.ts b/bundler/tests/.cache/deno/37e099d5f3f8b70b3676d571046257b38035c369.ts new file mode 100644 index 00000000000..7ee70436ab8 --- /dev/null +++ b/bundler/tests/.cache/deno/37e099d5f3f8b70b3676d571046257b38035c369.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.85.0/_util/os.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/37fa8e38db997d39d0c970daf33f0b5231299ed9.ts b/bundler/tests/.cache/deno/37fa8e38db997d39d0c970daf33f0b5231299ed9.ts new file mode 100644 index 00000000000..5231e87979e --- /dev/null +++ b/bundler/tests/.cache/deno/37fa8e38db997d39d0c970daf33f0b5231299ed9.ts @@ -0,0 +1,75 @@ +// Loaded from https://deno.land/x/oak/keyStack.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +// This was inspired by [keygrip](https://github.com/crypto-utils/keygrip/) +// which allows signing of data (cookies) to prevent tampering, but also allows +// for easy key rotation without needing to resign the data. + +import { HmacSha256 } from "./deps.ts"; +import { compare } from "./tssCompare.ts"; + +export type Data = string | number[] | ArrayBuffer | Uint8Array; +export type Key = string | number[] | ArrayBuffer | Uint8Array; + +const replacements: Record = { + "/": "_", + "+": "-", + "=": "", +}; + +export class KeyStack { + #keys: Key[]; + + /** A class which accepts an array of keys that are used to sign and verify + * data and allows easy key rotation without invalidation of previously signed + * data. + * + * @param keys An array of keys, of which the index 0 will be used to sign + * data, but verification can happen against any key. + */ + constructor(keys: Key[]) { + if (!(0 in keys)) { + throw new TypeError("keys must contain at least one value"); + } + this.#keys = keys; + } + + #sign = (data: Data, key: Key): string => { + return btoa( + String.fromCharCode.apply( + undefined, + // deno-lint-ignore no-explicit-any + new Uint8Array(new HmacSha256(key).update(data).arrayBuffer()) as any, + ), + ) + .replace(/\/|\+|=/g, (c) => replacements[c]); + }; + + /** Take `data` and return a SHA256 HMAC digest that uses the current 0 index + * of the `keys` passed to the constructor. This digest is in the form of a + * URL safe base64 encoded string. */ + sign(data: Data): string { + return this.#sign(data, this.#keys[0]); + } + + /** Given `data` and a `digest`, verify that one of the `keys` provided the + * constructor was used to generate the `digest`. Returns `true` if one of + * the keys was used, otherwise `false`. */ + verify(data: Data, digest: string): boolean { + return this.indexOf(data, digest) > -1; + } + + /** Given `data` and a `digest`, return the current index of the key in the + * `keys` passed the constructor that was used to generate the digest. If no + * key can be found, the method returns `-1`. */ + indexOf(data: Data, digest: string): number { + for (let i = 0; i < this.#keys.length; i++) { + if (compare(digest, this.#sign(data, this.#keys[i]))) { + return i; + } + } + return -1; + } +} diff --git a/bundler/tests/.cache/deno/382fb214d775279b6be7e1e1f6e3028d3922f449.ts b/bundler/tests/.cache/deno/382fb214d775279b6be7e1e1f6e3028d3922f449.ts new file mode 100644 index 00000000000..74a94ef3dc1 --- /dev/null +++ b/bundler/tests/.cache/deno/382fb214d775279b6be7e1e1f6e3028d3922f449.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/math.ts + + +export function power_mod(n: bigint, p: bigint, m: bigint): bigint { + if (p === 1n) return n; + if (p % 2n === 0n) { + const t = power_mod(n, p >> 1n, m); + return (t * t) % m + } else { + const t = power_mod(n, p >> 1n, m); + return (t * t * n) % m + } + } \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3850ad9b007a1dc556f63f7c7995a5d602f65e5e.ts b/bundler/tests/.cache/deno/3850ad9b007a1dc556f63f7c7995a5d602f65e5e.ts new file mode 100644 index 00000000000..17ecd8c8fa7 --- /dev/null +++ b/bundler/tests/.cache/deno/3850ad9b007a1dc556f63f7c7995a5d602f65e5e.ts @@ -0,0 +1,602 @@ +// Loaded from https://deno.land/std@0.77.0/testing/asserts.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. Do not rely on good formatting of values + * for AssertionError messages in browsers. */ + +import { bold, gray, green, red, stripColor, white } from "../fmt/colors.ts"; +import { diff, DiffResult, DiffType } from "./_diff.ts"; + +const CAN_NOT_DISPLAY = "[Cannot display]"; + +interface Constructor { + // deno-lint-ignore no-explicit-any + new (...args: any[]): any; +} + +export class AssertionError extends Error { + constructor(message: string) { + super(message); + this.name = "AssertionError"; + } +} + +export function _format(v: unknown): string { + return globalThis.Deno + ? Deno.inspect(v, { + depth: Infinity, + sorted: true, + trailingComma: true, + compact: false, + iterableLimit: Infinity, + }) + : `"${String(v).replace(/(?=["\\])/g, "\\")}"`; +} + +function createColor(diffType: DiffType): (s: string) => string { + switch (diffType) { + case DiffType.added: + return (s: string): string => green(bold(s)); + case DiffType.removed: + return (s: string): string => red(bold(s)); + default: + return white; + } +} + +function createSign(diffType: DiffType): string { + switch (diffType) { + case DiffType.added: + return "+ "; + case DiffType.removed: + return "- "; + default: + return " "; + } +} + +function buildMessage(diffResult: ReadonlyArray>): string[] { + const messages: string[] = []; + messages.push(""); + messages.push(""); + messages.push( + ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${ + green(bold("Expected")) + }`, + ); + messages.push(""); + messages.push(""); + diffResult.forEach((result: DiffResult): void => { + const c = createColor(result.type); + messages.push(c(`${createSign(result.type)}${result.value}`)); + }); + messages.push(""); + + return messages; +} + +function isKeyedCollection(x: unknown): x is Set { + return [Symbol.iterator, "size"].every((k) => k in (x as Set)); +} + +export function equal(c: unknown, d: unknown): boolean { + const seen = new Map(); + return (function compare(a: unknown, b: unknown): boolean { + // Have to render RegExp & Date for string comparison + // unless it's mistreated as object + if ( + a && + b && + ((a instanceof RegExp && b instanceof RegExp) || + (a instanceof URL && b instanceof URL)) + ) { + return String(a) === String(b); + } + if (a instanceof Date && b instanceof Date) { + const aTime = a.getTime(); + const bTime = b.getTime(); + // Check for NaN equality manually since NaN is not + // equal to itself. + if (Number.isNaN(aTime) && Number.isNaN(bTime)) { + return true; + } + return a.getTime() === b.getTime(); + } + if (Object.is(a, b)) { + return true; + } + if (a && typeof a === "object" && b && typeof b === "object") { + if (seen.get(a) === b) { + return true; + } + if (Object.keys(a || {}).length !== Object.keys(b || {}).length) { + return false; + } + if (isKeyedCollection(a) && isKeyedCollection(b)) { + if (a.size !== b.size) { + return false; + } + + let unmatchedEntries = a.size; + + for (const [aKey, aValue] of a.entries()) { + for (const [bKey, bValue] of b.entries()) { + /* Given that Map keys can be references, we need + * to ensure that they are also deeply equal */ + if ( + (aKey === aValue && bKey === bValue && compare(aKey, bKey)) || + (compare(aKey, bKey) && compare(aValue, bValue)) + ) { + unmatchedEntries--; + } + } + } + + return unmatchedEntries === 0; + } + const merged = { ...a, ...b }; + for (const key in merged) { + type Key = keyof typeof merged; + if (!compare(a && a[key as Key], b && b[key as Key])) { + return false; + } + } + seen.set(a, b); + return true; + } + return false; + })(c, d); +} + +/** Make an assertion, error will be thrown if `expr` does not have truthy value. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` and `expected` are equal, deeply. If not + * deeply equal, then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertEquals(1, 2) + *``` + */ +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertEquals(actual: T, expected: T, msg?: string): void; +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (equal(actual, expected)) { + return; + } + let message = ""; + const actualString = _format(actual); + const expectedString = _format(expected); + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + if (msg) { + message = msg; + } + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not equal, deeply. + * If not then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertNotEquals(1, 2) + *``` + */ +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotEquals(actual: T, expected: T, msg?: string): void; +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (!equal(actual, expected)) { + return; + } + let actualString: string; + let expectedString: string; + try { + actualString = String(actual); + } catch (e) { + actualString = "[Cannot display]"; + } + try { + expectedString = String(expected); + } catch (e) { + expectedString = "[Cannot display]"; + } + if (!msg) { + msg = `actual: ${actualString} expected: ${expectedString}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` and `expected` are strictly equal. If + * not then throw. + * ```ts + * assertStrictEquals(1, 2) + * ``` + */ +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual === expected) { + return; + } + + let message: string; + + if (msg) { + message = msg; + } else { + const actualString = _format(actual); + const expectedString = _format(expected); + + if (actualString === expectedString) { + const withOffset = actualString + .split("\n") + .map((l) => ` ${l}`) + .join("\n"); + message = + `Values have the same structure but are not reference-equal:\n\n${ + red(withOffset) + }\n`; + } else { + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not strictly equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + } + } + + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not strictly equal. + * If the values are strictly equal then throw. + * ```ts + * assertNotStrictEquals(1, 1) + * ``` + */ +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual !== expected) { + return; + } + + throw new AssertionError( + msg ?? `Expected "actual" to be strictly unequal to: ${_format(actual)}\n`, + ); +} + +/** + * Make an assertion that actual is not null or undefined. If not + * then thrown. + */ +export function assertExists( + actual: unknown, + msg?: string, +): void { + if (actual === undefined || actual === null) { + if (!msg) { + msg = + `actual: "${actual}" expected to match anything but null or undefined`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that actual includes expected. If not + * then thrown. + */ +export function assertStringIncludes( + actual: string, + expected: string, + msg?: string, +): void { + if (!actual.includes(expected)) { + if (!msg) { + msg = `actual: "${actual}" expected to contain: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` includes the `expected` values. + * If not then an error will be thrown. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertArrayIncludes([1, 2], [2]) + *``` + */ +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void { + const missing: unknown[] = []; + for (let i = 0; i < expected.length; i++) { + let found = false; + for (let j = 0; j < actual.length; j++) { + if (equal(expected[i], actual[j])) { + found = true; + break; + } + } + if (!found) { + missing.push(expected[i]); + } + } + if (missing.length === 0) { + return; + } + if (!msg) { + msg = `actual: "${_format(actual)}" expected to include: "${ + _format(expected) + }"\nmissing: ${_format(missing)}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` match RegExp `expected`. If not + * then thrown + */ +export function assertMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (!expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` not match RegExp `expected`. If match + * then thrown + */ +export function assertNotMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to not match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` object is a subset of `expected` object, deeply. + * If not, then throw. + */ +export function assertObjectMatch( + actual: Record, + expected: Record, +): void { + type loose = Record; + const seen = new WeakMap(); + return assertEquals( + (function filter(a: loose, b: loose): loose { + // Prevent infinite loop with circular references with same filter + if ((seen.has(a)) && (seen.get(a) === b)) { + return a; + } + seen.set(a, b); + // Filter keys and symbols which are present in both actual and expected + const filtered = {} as loose; + const entries = [ + ...Object.getOwnPropertyNames(a), + ...Object.getOwnPropertySymbols(a), + ] + .filter((key) => key in b) + .map((key) => [key, a[key as string]]) as Array<[string, unknown]>; + // Build filtered object and filter recursively on nested objects references + for (const [key, value] of entries) { + if (typeof value === "object") { + const subset = (b as loose)[key]; + if ((typeof subset === "object") && (subset)) { + filtered[key] = filter(value as loose, subset as loose); + continue; + } + } + filtered[key] = value; + } + return filtered; + })(actual, expected), + expected, + ); +} + +/** + * Forcefully throws a failed assertion + */ +export function fail(msg?: string): void { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + assert(false, `Failed assertion${msg ? `: ${msg}` : "."}`); +} + +/** + * Executes a function, expecting it to throw. If it does not, then it + * throws. An error class and a string that should be included in the + * error message can also be asserted. + */ +export function assertThrows( + fn: () => T, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Error { + let doesThrow = false; + let error = null; + try { + fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but was "${e.constructor.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** + * Executes a function which returns a promise, expecting it to throw or reject. + * If it does not, then it throws. An error class and a string that should be + * included in the error message can also be asserted. + */ +export async function assertThrowsAsync( + fn: () => Promise, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Promise { + let doesThrow = false; + let error = null; + try { + await fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown or rejected."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but got "${e.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** Use this to stub out methods that will throw when invoked. */ +export function unimplemented(msg?: string): never { + throw new AssertionError(msg || "unimplemented"); +} + +/** Use this to assert unreachable code. */ +export function unreachable(): never { + throw new AssertionError("unreachable"); +} diff --git a/bundler/tests/.cache/deno/3858f99323dcd3c6022994c7938f381c970cef22.ts b/bundler/tests/.cache/deno/3858f99323dcd3c6022994c7938f381c970cef22.ts new file mode 100644 index 00000000000..e88e73d097e --- /dev/null +++ b/bundler/tests/.cache/deno/3858f99323dcd3c6022994c7938f381c970cef22.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/str.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +export const str = new Type("tag:yaml.org,2002:str", { + construct(data): string { + return data !== null ? data : ""; + }, + kind: "scalar", +}); diff --git a/bundler/tests/.cache/deno/385f8b715c7a2fddc633d77ce27c09c2c35e05a4.ts b/bundler/tests/.cache/deno/385f8b715c7a2fddc633d77ce27c09c2c35e05a4.ts new file mode 100644 index 00000000000..e1f73e8fd55 --- /dev/null +++ b/bundler/tests/.cache/deno/385f8b715c7a2fddc633d77ce27c09c2c35e05a4.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/printLocation.js + + +import { getLocation } from './location.js'; +/** + * Render a helpful description of the location in the GraphQL Source document. + */ + +export function printLocation(location) { + return printSourceLocation(location.source, getLocation(location.source, location.start)); +} +/** + * Render a helpful description of the location in the GraphQL Source document. + */ + +export function printSourceLocation(source, sourceLocation) { + const firstLineColumnOffset = source.locationOffset.column - 1; + const body = whitespace(firstLineColumnOffset) + source.body; + const lineIndex = sourceLocation.line - 1; + const lineOffset = source.locationOffset.line - 1; + const lineNum = sourceLocation.line + lineOffset; + const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; + const columnNum = sourceLocation.column + columnOffset; + const locationStr = `${source.name}:${lineNum}:${columnNum}\n`; + const lines = body.split(/\r\n|[\n\r]/g); + const locationLine = lines[lineIndex]; // Special case for minified documents + + if (locationLine.length > 120) { + const subLineIndex = Math.floor(columnNum / 80); + const subLineColumnNum = columnNum % 80; + const subLines = []; + + for (let i = 0; i < locationLine.length; i += 80) { + subLines.push(locationLine.slice(i, i + 80)); + } + + return locationStr + printPrefixedLines([[`${lineNum}`, subLines[0]], ...subLines.slice(1, subLineIndex + 1).map(subLine => ['', subLine]), [' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]); + } + + return locationStr + printPrefixedLines([// Lines specified like this: ["prefix", "string"], + [`${lineNum - 1}`, lines[lineIndex - 1]], [`${lineNum}`, locationLine], ['', whitespace(columnNum - 1) + '^'], [`${lineNum + 1}`, lines[lineIndex + 1]]]); +} + +function printPrefixedLines(lines) { + const existingLines = lines.filter(([_, line]) => line !== undefined); + const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length)); + return existingLines.map(([prefix, line]) => leftPad(padLen, prefix) + (line ? ' | ' + line : ' |')).join('\n'); +} + +function whitespace(len) { + return Array(len + 1).join(' '); +} + +function leftPad(len, str) { + return whitespace(len - str.length) + str; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/387a6383dd2b4f4a368b70241684ee8f4d3bd5ab.ts b/bundler/tests/.cache/deno/387a6383dd2b4f4a368b70241684ee8f4d3bd5ab.ts new file mode 100644 index 00000000000..84df70e6100 --- /dev/null +++ b/bundler/tests/.cache/deno/387a6383dd2b4f4a368b70241684ee8f4d3bd5ab.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/cond.js + + +import _arity from './internal/_arity.js'; +import _curry1 from './internal/_curry1.js'; +import map from './map.js'; +import max from './max.js'; +import reduce from './reduce.js'; + + +/** + * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic. + * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments + * to `fn` are applied to each of the predicates in turn until one returns a + * "truthy" value, at which point `fn` returns the result of applying its + * arguments to the corresponding transformer. If none of the predicates + * matches, `fn` returns undefined. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Logic + * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *) + * @param {Array} pairs A list of [predicate, transformer] + * @return {Function} + * @see R.ifElse, R.unless, R.when + * @example + * + * const fn = R.cond([ + * [R.equals(0), R.always('water freezes at 0°C')], + * [R.equals(100), R.always('water boils at 100°C')], + * [R.T, temp => 'nothing special happens at ' + temp + '°C'] + * ]); + * fn(0); //=> 'water freezes at 0°C' + * fn(50); //=> 'nothing special happens at 50°C' + * fn(100); //=> 'water boils at 100°C' + */ +var cond = _curry1(function cond(pairs) { + var arity = reduce( + max, + 0, + map(function(pair) { return pair[0].length; }, pairs) + ); + return _arity(arity, function() { + var idx = 0; + while (idx < pairs.length) { + if (pairs[idx][0].apply(this, arguments)) { + return pairs[idx][1].apply(this, arguments); + } + idx += 1; + } + }); +}); +export default cond; diff --git a/bundler/tests/.cache/deno/393bfd3edea12e72d832ea8cf5b3aa39ed1e412f.ts b/bundler/tests/.cache/deno/393bfd3edea12e72d832ea8cf5b3aa39ed1e412f.ts new file mode 100644 index 00000000000..051580ba9fa --- /dev/null +++ b/bundler/tests/.cache/deno/393bfd3edea12e72d832ea8cf5b3aa39ed1e412f.ts @@ -0,0 +1,346 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/inffast.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +// See state defs from inflate.js +var BAD = 30; /* got a data error -- remain here until reset */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. + + Entry assumptions: + + state.mode === LEN + strm.avail_in >= 6 + strm.avail_out >= 258 + start >= strm.avail_out + state.bits < 8 + + On return, state.mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm.avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm.avail_out >= 258 for each loop to avoid checking for + output space. + */ +export function inflate_fast(strm, start) { + var state; + var _in; /* local strm.input */ + var last; /* have enough input while in < last */ + var _out; /* local strm.output */ + var beg; /* inflate()'s initial strm.output */ + var end; /* while out < end, enough space available */ +//#ifdef INFLATE_STRICT + var dmax; /* maximum distance from zlib header */ +//#endif + var wsize; /* window size or zero if not using window */ + var whave; /* valid bytes in the window */ + var wnext; /* window write index */ + // Use `s_window` instead `window`, avoid conflict with instrumentation tools + var s_window; /* allocated sliding window, if wsize != 0 */ + var hold; /* local strm.hold */ + var bits; /* local strm.bits */ + var lcode; /* local strm.lencode */ + var dcode; /* local strm.distcode */ + var lmask; /* mask for first level of length codes */ + var dmask; /* mask for first level of distance codes */ + var here; /* retrieved table entry */ + var op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + var len; /* match length, unused bytes */ + var dist; /* match distance */ + var from; /* where to copy match from */ + var from_source; + + + var input, output; // JS specific, because we have no pointers + + /* copy state to local variables */ + state = strm.state; + //here = state.here; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); +//#ifdef INFLATE_STRICT + dmax = state.dmax; +//#endif + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; + + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + + here = lcode[hold & lmask]; + + dolen: + for (;;) { // Goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + if (op === 0) { /* literal */ + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + output[_out++] = here & 0xffff/*here.val*/; + } + else if (op & 16) { /* length base */ + len = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & ((1 << op) - 1); + hold >>>= op; + bits -= op; + } + //Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; + + dodist: + for (;;) { // goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + + if (op & 16) { /* distance base */ + dist = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & ((1 << op) - 1); +//#ifdef INFLATE_STRICT + if (dist > dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } +//#endif + hold >>>= op; + bits -= op; + //Tracevv((stderr, "inflate: distance %u\n", dist)); + op = _out - beg; /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } + +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// if (len <= op - whave) { +// do { +// output[_out++] = 0; +// } while (--len); +// continue top; +// } +// len -= op - whave; +// do { +// output[_out++] = 0; +// } while (--op > whave); +// if (op === 0) { +// from = _out - dist; +// do { +// output[_out++] = output[from++]; +// } while (--len); +// continue top; +// } +//#endif + } + from = 0; // window index + from_source = s_window; + if (wnext === 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } + else { + from = _out - dist; /* copy direct from output */ + do { /* minimum length is three */ + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } + else if ((op & 64) === 0) { /* 2nd level distance code */ + here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dodist; + } + else { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" + } + } + else if ((op & 64) === 0) { /* 2nd level length code */ + here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dolen; + } + else if (op & 32) { /* end-of-block */ + //Tracevv((stderr, "inflate: end of block\n")); + state.mode = TYPE; + break top; + } + else { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" + } + } while (_in < last && _out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; + + /* update state and return */ + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); + strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); + state.hold = hold; + state.bits = bits; + return; +}; diff --git a/bundler/tests/.cache/deno/399734cfcb1e8b780ad70844d1b170f76d69aef9.ts b/bundler/tests/.cache/deno/399734cfcb1e8b780ad70844d1b170f76d69aef9.ts new file mode 100644 index 00000000000..374518877a5 --- /dev/null +++ b/bundler/tests/.cache/deno/399734cfcb1e8b780ad70844d1b170f76d69aef9.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case@v2.1.0/vendor/camelCaseRegexp.ts + + +const camelCaseRegexp: RegExp = + /([a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A])/g; + +export default camelCaseRegexp; diff --git a/bundler/tests/.cache/deno/39c57fb7d5e8b1eab5c56a2768a456f19e997da6.ts b/bundler/tests/.cache/deno/39c57fb7d5e8b1eab5c56a2768a456f19e997da6.ts new file mode 100644 index 00000000000..fc3027c409a --- /dev/null +++ b/bundler/tests/.cache/deno/39c57fb7d5e8b1eab5c56a2768a456f19e997da6.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/construct.js + + +import _curry1 from './internal/_curry1.js'; +import constructN from './constructN.js'; + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> {*}) -> (* -> {*}) + * @param {Function} fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @see R.invoker + * @example + * + * // Constructor function + * function Animal(kind) { + * this.kind = kind; + * }; + * Animal.prototype.sighting = function() { + * return "It's a " + this.kind + "!"; + * } + * + * const AnimalConstructor = R.construct(Animal) + * + * // Notice we no longer need the 'new' keyword: + * AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}}; + * + * const animalTypes = ["Lion", "Tiger", "Bear"]; + * const animalSighting = R.invoker(0, 'sighting'); + * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor); + * R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] + */ +var construct = _curry1(function construct(Fn) { + return constructN(Fn.length, Fn); +}); +export default construct; diff --git a/bundler/tests/.cache/deno/39d8215623f076360b970fefe381ad99a8a77160.ts b/bundler/tests/.cache/deno/39d8215623f076360b970fefe381ad99a8a77160.ts new file mode 100644 index 00000000000..06f60894315 --- /dev/null +++ b/bundler/tests/.cache/deno/39d8215623f076360b970fefe381ad99a8a77160.ts @@ -0,0 +1,218 @@ +// Loaded from https://deno.land/x/oak/request.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import type { + Body, + BodyForm, + BodyFormData, + BodyJson, + BodyOptions, + BodyRaw, + BodyReader, + BodyText, +} from "./body.ts"; +import { RequestBody } from "./body.ts"; +import type { HTTPMethods, ServerRequest } from "./types.d.ts"; +import { preferredCharsets } from "./negotiation/charset.ts"; +import { preferredEncodings } from "./negotiation/encoding.ts"; +import { preferredLanguages } from "./negotiation/language.ts"; +import { preferredMediaTypes } from "./negotiation/mediaType.ts"; + +const decoder = new TextDecoder(); + +/** An interface which provides information about the current request. */ +export class Request { + #body: RequestBody; + #proxy: boolean; + #secure: boolean; + #serverRequest: ServerRequest; + #url?: URL; + + /** Is `true` if the request has a body, otherwise `false`. */ + get hasBody(): boolean { + return this.#body.has(); + } + + /** The `Headers` supplied in the request. */ + get headers(): Headers { + return this.#serverRequest.headers; + } + + /** Request remote address. When the application's `.proxy` is true, the + * `X-Forwarded-For` will be used to determine the requesting remote address. + */ + get ip(): string { + return this.#proxy + ? this.ips[0] + : (this.#serverRequest.conn.remoteAddr as Deno.NetAddr).hostname; + } + + /** When the application's `.proxy` is `true`, this will be set to an array of + * IPs, ordered from upstream to downstream, based on the value of the header + * `X-Forwarded-For`. When `false` an empty array is returned. */ + get ips(): string[] { + return this.#proxy + ? (this.#serverRequest.headers.get("x-forwarded-for") ?? + (this.#serverRequest.conn.remoteAddr as Deno.NetAddr).hostname).split( + /\s*,\s*/, + ) + : []; + } + + /** The HTTP Method used by the request. */ + get method(): HTTPMethods { + return this.#serverRequest.method as HTTPMethods; + } + + /** Shortcut to `request.url.protocol === "https:"`. */ + get secure(): boolean { + return this.#secure; + } + + /** Set to the value of the _original_ Deno server request. */ + get serverRequest(): ServerRequest { + return this.#serverRequest; + } + + /** A parsed URL for the request which complies with the browser standards. + * When the application's `.proxy` is `true`, this value will be based off of + * the `X-Forwarded-Proto` and `X-Forwarded-Host` header values if present in + * the request. */ + get url(): URL { + if (!this.#url) { + const serverRequest = this.#serverRequest; + let proto: string; + let host: string; + if (this.#proxy) { + proto = serverRequest + .headers.get("x-forwarded-proto")?.split(/\s*,\s*/, 1)[0] ?? + "http"; + host = serverRequest.headers.get("x-forwarded-host") ?? + serverRequest.headers.get("host") ?? ""; + } else { + proto = this.#secure ? "https" : "http"; + host = serverRequest.headers.get("host") ?? ""; + } + try { + this.#url = new URL(`${proto}://${host}${serverRequest.url}`); + } catch { + throw new TypeError( + `The server request URL of "${proto}://${host}${serverRequest.url}" is invalid.`, + ); + } + } + return this.#url; + } + + constructor(serverRequest: ServerRequest, proxy = false, secure = false) { + this.#proxy = proxy; + this.#secure = secure; + this.#serverRequest = serverRequest; + this.#body = new RequestBody(serverRequest); + } + + /** Returns an array of media types, accepted by the requestor, in order of + * preference. If there are no encodings supplied by the requestor, + * `undefined` is returned. + */ + accepts(): string[] | undefined; + /** For a given set of media types, return the best match accepted by the + * requestor. If there are no encoding that match, then the method returns + * `undefined`. + */ + accepts(...types: string[]): string | undefined; + accepts(...types: string[]): string | string[] | undefined { + const acceptValue = this.#serverRequest.headers.get("Accept"); + if (!acceptValue) { + return; + } + if (types.length) { + return preferredMediaTypes(acceptValue, types)[0]; + } + return preferredMediaTypes(acceptValue); + } + + /** Returns an array of charsets, accepted by the requestor, in order of + * preference. If there are no charsets supplied by the requestor, + * `undefined` is returned. + */ + acceptsCharsets(): string[] | undefined; + /** For a given set of charsets, return the best match accepted by the + * requestor. If there are no charsets that match, then the method returns + * `undefined`. */ + acceptsCharsets(...charsets: string[]): string | undefined; + acceptsCharsets(...charsets: string[]): string[] | string | undefined { + const acceptCharsetValue = this.#serverRequest.headers.get( + "Accept-Charset", + ); + if (!acceptCharsetValue) { + return; + } + if (charsets.length) { + return preferredCharsets(acceptCharsetValue, charsets)[0]; + } + return preferredCharsets(acceptCharsetValue); + } + + /** Returns an array of encodings, accepted by the requestor, in order of + * preference. If there are no encodings supplied by the requestor, + * `undefined` is returned. + */ + acceptsEncodings(): string[] | undefined; + /** For a given set of encodings, return the best match accepted by the + * requestor. If there are no encodings that match, then the method returns + * `undefined`. + * + * **NOTE:** You should always supply `identity` as one of the encodings + * to ensure that there is a match when the `Accept-Encoding` header is part + * of the request. + */ + acceptsEncodings(...encodings: string[]): string | undefined; + acceptsEncodings(...encodings: string[]): string[] | string | undefined { + const acceptEncodingValue = this.#serverRequest.headers.get( + "Accept-Encoding", + ); + if (!acceptEncodingValue) { + return; + } + if (encodings.length) { + return preferredEncodings(acceptEncodingValue, encodings)[0]; + } + return preferredEncodings(acceptEncodingValue); + } + + /** Returns an array of languages, accepted by the requestor, in order of + * preference. If there are no languages supplied by the requestor, + * `undefined` is returned. + */ + acceptsLanguages(): string[] | undefined; + /** For a given set of languages, return the best match accepted by the + * requestor. If there are no languages that match, then the method returns + * `undefined`. */ + acceptsLanguages(...langs: string[]): string | undefined; + acceptsLanguages(...langs: string[]): string[] | string | undefined { + const acceptLanguageValue = this.#serverRequest.headers.get( + "Accept-Language", + ); + if (!acceptLanguageValue) { + return; + } + if (langs.length) { + return preferredLanguages(acceptLanguageValue, langs)[0]; + } + return preferredLanguages(acceptLanguageValue); + } + + body(options: BodyOptions<"form">): BodyForm; + body(options: BodyOptions<"form-data">): BodyFormData; + body(options: BodyOptions<"json">): BodyJson; + body(options: BodyOptions<"raw">): BodyRaw; + body(options: BodyOptions<"reader">): BodyReader; + body(options: BodyOptions<"text">): BodyText; + body(options?: BodyOptions): Body; + body(options: BodyOptions = {}): Body | BodyReader { + return this.#body.get(options); + } +} diff --git a/bundler/tests/.cache/deno/3a098f75df7a43a9b5b61a85bd989e9827ff73f4.ts b/bundler/tests/.cache/deno/3a098f75df7a43a9b5b61a85bd989e9827ff73f4.ts new file mode 100644 index 00000000000..c68d9bbf316 --- /dev/null +++ b/bundler/tests/.cache/deno/3a098f75df7a43a9b5b61a85bd989e9827ff73f4.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case@v2.1.0/headerCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function headerCase(value: string, locale?: string): string { + return normalCase(value, locale, "-").replace(/^.|-./g, function ( + m: string, + ): string { + return upperCase(m, locale); + }); +} diff --git a/bundler/tests/.cache/deno/3a3c5f0d0418996103c8c061b02b5aa6967a9149.ts b/bundler/tests/.cache/deno/3a3c5f0d0418996103c8c061b02b5aa6967a9149.ts new file mode 100644 index 00000000000..c3b1877e51a --- /dev/null +++ b/bundler/tests/.cache/deno/3a3c5f0d0418996103c8c061b02b5aa6967a9149.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/forEachObjIndexed.js + + +import _curry2 from './internal/_curry2.js'; +import keys from './keys.js'; + + +/** + * Iterate over an input `object`, calling a provided function `fn` for each + * key and value in the object. + * + * `fn` receives three argument: *(value, key, obj)*. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Object + * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a + * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`. + * @param {Object} obj The object to iterate over. + * @return {Object} The original object. + * @example + * + * const printKeyConcatValue = (value, key) => console.log(key + ':' + value); + * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2} + * // logs x:1 + * // logs y:2 + * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b} + */ +var forEachObjIndexed = _curry2(function forEachObjIndexed(fn, obj) { + var keyList = keys(obj); + var idx = 0; + while (idx < keyList.length) { + var key = keyList[idx]; + fn(obj[key], key, obj); + idx += 1; + } + return obj; +}); +export default forEachObjIndexed; diff --git a/bundler/tests/.cache/deno/3a3f8c7742754003bcc33fe80a730f2687e2953d.ts b/bundler/tests/.cache/deno/3a3f8c7742754003bcc33fe80a730f2687e2953d.ts new file mode 100644 index 00000000000..404b34c51f5 --- /dev/null +++ b/bundler/tests/.cache/deno/3a3f8c7742754003bcc33fe80a730f2687e2953d.ts @@ -0,0 +1,93 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isEAN.ts + + +/** + * The most commonly used EAN standard is + * the thirteen-digit EAN-13, while the + * less commonly used 8-digit EAN-8 barcode was + * introduced for use on small packages. + * EAN consists of: + * GS1 prefix, manufacturer code, product code and check digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number + */ + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13 + * and Regular Expression for valid EANs (EAN-8, EAN-13), + * with exact numberic matching of 8 or 13 digits [0-9] + */ +/** + * @ignore + */ +const LENGTH_EAN_8 = 8; +/** + * @ignore + */ +const validEanRegex = /^(\d{8}|\d{13})$/; + +/** + * Get position weight given: + * EAN length and digit index/position + * + * @param {number} length + * @param {number} index + * @return {number} + */ +/** + * @ignore + */ +const getPositionWeightThroughLengthAndIndex = ( + length: number, + index: number +) => { + if (length === LENGTH_EAN_8) { + return index % 2 === 0 ? 3 : 1; + } + + return index % 2 === 0 ? 1 : 3; +}; + +/** + * Calculate EAN Check Digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit + * + * @param {string} ean + * @return {number} + */ +/** + * @ignore + */ +const calculateCheckDigit = (ean: string) => { + const checksum = ean + .slice(0, -1) + .split('') + .map( + (char, index) => + Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index) + ) + .reduce((acc, partialSum) => acc + partialSum, 0); + + const remainder = 10 - (checksum % 10); + + return remainder < 10 ? remainder : 0; +}; + +/** + * Check if string is valid EAN: + * Matches EAN-8/EAN-13 regex + * Has valid check digit. + * + * @param {string} str + * @return {boolean} + */ +export const isEAN = (str: string) => { + assertString(str); + const actualCheckDigit = Number(str.slice(-1)); + + return ( + validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str) + ); +}; diff --git a/bundler/tests/.cache/deno/3a4bd1647fad45ea3867eca226ed0f04a4ad4c59.ts b/bundler/tests/.cache/deno/3a4bd1647fad45ea3867eca226ed0f04a4ad4c59.ts new file mode 100644 index 00000000000..b96c4463863 --- /dev/null +++ b/bundler/tests/.cache/deno/3a4bd1647fad45ea3867eca226ed0f04a4ad4c59.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/yaml.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export type { ParseOptions } from "./_yaml/parse.ts"; +export { parse, parseAll } from "./_yaml/parse.ts"; +export type { DumpOptions as StringifyOptions } from "./_yaml/stringify.ts"; +export { stringify } from "./_yaml/stringify.ts"; +export type { SchemaDefinition } from "./_yaml/schema.ts"; +export type { StyleVariant } from "./_yaml/type.ts"; +export { + CORE_SCHEMA, + DEFAULT_SCHEMA, + FAILSAFE_SCHEMA, + JSON_SCHEMA, +} from "./_yaml/schema/mod.ts"; diff --git a/bundler/tests/.cache/deno/3ac2bd047b9ba1be58300229449b7156ab7cd574.ts b/bundler/tests/.cache/deno/3ac2bd047b9ba1be58300229449b7156ab7cd574.ts new file mode 100644 index 00000000000..b315b09f936 --- /dev/null +++ b/bundler/tests/.cache/deno/3ac2bd047b9ba1be58300229449b7156ab7cd574.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/min.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns the smaller of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.minBy, R.max + * @example + * + * R.min(789, 123); //=> 123 + * R.min('a', 'b'); //=> 'a' + */ +var min = _curry2(function min(a, b) { return b < a ? b : a; }); +export default min; diff --git a/bundler/tests/.cache/deno/3b08cd07127347972d2820716d52dd7289fa88b5.ts b/bundler/tests/.cache/deno/3b08cd07127347972d2820716d52dd7289fa88b5.ts new file mode 100644 index 00000000000..3cc2cfabdf0 --- /dev/null +++ b/bundler/tests/.cache/deno/3b08cd07127347972d2820716d52dd7289fa88b5.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xaperture.js + + +import _concat from './_concat.js'; +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XAperture(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); +} +XAperture.prototype['@@transducer/init'] = _xfBase.init; +XAperture.prototype['@@transducer/result'] = function(result) { + this.acc = null; + return this.xf['@@transducer/result'](result); +}; +XAperture.prototype['@@transducer/step'] = function(result, input) { + this.store(input); + return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; +}; +XAperture.prototype.store = function(input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } +}; +XAperture.prototype.getCopy = function() { + return _concat(Array.prototype.slice.call(this.acc, this.pos), + Array.prototype.slice.call(this.acc, 0, this.pos) + ); +}; + +var _xaperture = _curry2(function _xaperture(n, xf) { return new XAperture(n, xf); }); +export default _xaperture; diff --git a/bundler/tests/.cache/deno/3b373f028b882501b8c6b5a2e6c2bd5283c8d47e.ts b/bundler/tests/.cache/deno/3b373f028b882501b8c6b5a2e6c2bd5283c8d47e.ts new file mode 100644 index 00000000000..260a36238b0 --- /dev/null +++ b/bundler/tests/.cache/deno/3b373f028b882501b8c6b5a2e6c2bd5283c8d47e.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std@0.77.0/fs/empty_dir.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { join } from "../path/mod.ts"; + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function emptyDir(dir: string): Promise { + try { + const items = []; + for await (const dirEntry of Deno.readDir(dir)) { + items.push(dirEntry); + } + + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + await Deno.remove(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + + // if not exist. then create it + await Deno.mkdir(dir, { recursive: true }); + } +} + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function emptyDirSync(dir: string): void { + try { + const items = [...Deno.readDirSync(dir)]; + + // If the directory exists, remove all entries inside it. + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + Deno.removeSync(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + // if not exist. then create it + Deno.mkdirSync(dir, { recursive: true }); + return; + } +} diff --git a/bundler/tests/.cache/deno/3b4085fbc035b6168d9644998667560e05bfaf41.ts b/bundler/tests/.cache/deno/3b4085fbc035b6168d9644998667560e05bfaf41.ts new file mode 100644 index 00000000000..73d087345f0 --- /dev/null +++ b/bundler/tests/.cache/deno/3b4085fbc035b6168d9644998667560e05bfaf41.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/mod.ts + + +export { resize } from './index.ts'; +export { mimeType } from "./mime-type.ts"; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3b437217e8cf22be2af56d8376bced4617c7bd5b.ts b/bundler/tests/.cache/deno/3b437217e8cf22be2af56d8376bced4617c7bd5b.ts new file mode 100644 index 00000000000..348cebe02f5 --- /dev/null +++ b/bundler/tests/.cache/deno/3b437217e8cf22be2af56d8376bced4617c7bd5b.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_complement.js + + +export default function _complement(f) { + return function() { + return !f.apply(this, arguments); + }; +} diff --git a/bundler/tests/.cache/deno/3b89b750a778120833224f10d70d16e3c03b9d73.ts b/bundler/tests/.cache/deno/3b89b750a778120833224f10d70d16e3c03b9d73.ts new file mode 100644 index 00000000000..9f8e1814c66 --- /dev/null +++ b/bundler/tests/.cache/deno/3b89b750a778120833224f10d70d16e3c03b9d73.ts @@ -0,0 +1,96 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/buildASTSchema.js + + +import devAssert from '../jsutils/devAssert.js'; +import { Kind } from '../language/kinds.js'; +import { parse } from '../language/parser.js'; +import { assertValidSDL } from '../validation/validate.js'; +import { GraphQLSchema } from '../type/schema.js'; +import { GraphQLSkipDirective, GraphQLIncludeDirective, GraphQLDeprecatedDirective } from '../type/directives.js'; +import { extendSchemaImpl } from './extendSchema.js'; + +/** + * This takes the ast of a schema document produced by the parse function in + * src/language/parser.js. + * + * If no schema definition is provided, then it will look for types named Query + * and Mutation. + * + * Given that AST it constructs a GraphQLSchema. The resulting schema + * has no resolve methods, so execution will use default resolvers. + * + * Accepts options as a second argument: + * + * - commentDescriptions: + * Provide true to use preceding comments as the description. + * + */ +export function buildASTSchema(documentAST, options) { + devAssert(documentAST != null && documentAST.kind === Kind.DOCUMENT, 'Must provide valid Document AST.'); + + if (options?.assumeValid !== true && options?.assumeValidSDL !== true) { + assertValidSDL(documentAST); + } + + const config = extendSchemaImpl(emptySchemaConfig, documentAST, options); + + if (config.astNode == null) { + for (const type of config.types) { + switch (type.name) { + // Note: While this could make early assertions to get the correctly + // typed values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + case 'Query': + config.query = type; + break; + + case 'Mutation': + config.mutation = type; + break; + + case 'Subscription': + config.subscription = type; + break; + } + } + } + + const { + directives + } = config; // If specified directives were not explicitly declared, add them. + + if (!directives.some(directive => directive.name === 'skip')) { + directives.push(GraphQLSkipDirective); + } + + if (!directives.some(directive => directive.name === 'include')) { + directives.push(GraphQLIncludeDirective); + } + + if (!directives.some(directive => directive.name === 'deprecated')) { + directives.push(GraphQLDeprecatedDirective); + } + + return new GraphQLSchema(config); +} +const emptySchemaConfig = new GraphQLSchema({ + directives: [] +}).toConfig(); +/** + * A helper function to build a GraphQLSchema directly from a source + * document. + */ + +export function buildSchema(source, options) { + const document = parse(source, { + noLocation: options?.noLocation, + allowLegacySDLEmptyFields: options?.allowLegacySDLEmptyFields, + allowLegacySDLImplementsInterfaces: options?.allowLegacySDLImplementsInterfaces, + experimentalFragmentVariables: options?.experimentalFragmentVariables + }); + return buildASTSchema(document, { + commentDescriptions: options?.commentDescriptions, + assumeValidSDL: options?.assumeValidSDL, + assumeValid: options?.assumeValid + }); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3b8d3da1bca78ca84087bd5c253f4f9931be6e92.ts b/bundler/tests/.cache/deno/3b8d3da1bca78ca84087bd5c253f4f9931be6e92.ts new file mode 100644 index 00000000000..0768206fe3d --- /dev/null +++ b/bundler/tests/.cache/deno/3b8d3da1bca78ca84087bd5c253f4f9931be6e92.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/mod.ts + + +export * from './rsa.ts'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3ba0531bf4b13bac91a2b8da5c1ede27d80e5d39.ts b/bundler/tests/.cache/deno/3ba0531bf4b13bac91a2b8da5c1ede27d80e5d39.ts new file mode 100644 index 00000000000..e3428ae19b1 --- /dev/null +++ b/bundler/tests/.cache/deno/3ba0531bf4b13bac91a2b8da5c1ede27d80e5d39.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/union.js + + +import _concat from './internal/_concat.js'; +import _curry2 from './internal/_curry2.js'; +import compose from './compose.js'; +import uniq from './uniq.js'; + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @example + * + * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4] + */ +var union = _curry2(compose(uniq, _concat)); +export default union; diff --git a/bundler/tests/.cache/deno/3bac48484497dd58844174023b47fb0119d8acfc.ts b/bundler/tests/.cache/deno/3bac48484497dd58844174023b47fb0119d8acfc.ts new file mode 100644 index 00000000000..95b513d5fd3 --- /dev/null +++ b/bundler/tests/.cache/deno/3bac48484497dd58844174023b47fb0119d8acfc.ts @@ -0,0 +1,168 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/valueFromAST.js + + +import objectValues from '../polyfills/objectValues.js'; +import keyMap from '../jsutils/keyMap.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import { Kind } from '../language/kinds.js'; +import { isLeafType, isInputObjectType, isListType, isNonNullType } from '../type/definition.js'; +/** + * Produces a JavaScript value given a GraphQL Value AST. + * + * A GraphQL type must be provided, which will be used to interpret different + * GraphQL Value literals. + * + * Returns `undefined` when the value could not be validly coerced according to + * the provided type. + * + * | GraphQL Value | JSON Value | + * | -------------------- | ------------- | + * | Input Object | Object | + * | List | Array | + * | Boolean | Boolean | + * | String | String | + * | Int / Float | Number | + * | Enum Value | Mixed | + * | NullValue | null | + * + */ + +export function valueFromAST(valueNode, type, variables) { + if (!valueNode) { + // When there is no node, then there is also no value. + // Importantly, this is different from returning the value null. + return; + } + + if (valueNode.kind === Kind.VARIABLE) { + const variableName = valueNode.name.value; + + if (variables == null || variables[variableName] === undefined) { + // No valid return value. + return; + } + + const variableValue = variables[variableName]; + + if (variableValue === null && isNonNullType(type)) { + return; // Invalid: intentionally return no value. + } // Note: This does no further checking that this variable is correct. + // This assumes that this query has been validated and the variable + // usage here is of the correct type. + + + return variableValue; + } + + if (isNonNullType(type)) { + if (valueNode.kind === Kind.NULL) { + return; // Invalid: intentionally return no value. + } + + return valueFromAST(valueNode, type.ofType, variables); + } + + if (valueNode.kind === Kind.NULL) { + // This is explicitly returning the value null. + return null; + } + + if (isListType(type)) { + const itemType = type.ofType; + + if (valueNode.kind === Kind.LIST) { + const coercedValues = []; + + for (const itemNode of valueNode.values) { + if (isMissingVariable(itemNode, variables)) { + // If an array contains a missing variable, it is either coerced to + // null or if the item type is non-null, it considered invalid. + if (isNonNullType(itemType)) { + return; // Invalid: intentionally return no value. + } + + coercedValues.push(null); + } else { + const itemValue = valueFromAST(itemNode, itemType, variables); + + if (itemValue === undefined) { + return; // Invalid: intentionally return no value. + } + + coercedValues.push(itemValue); + } + } + + return coercedValues; + } + + const coercedValue = valueFromAST(valueNode, itemType, variables); + + if (coercedValue === undefined) { + return; // Invalid: intentionally return no value. + } + + return [coercedValue]; + } + + if (isInputObjectType(type)) { + if (valueNode.kind !== Kind.OBJECT) { + return; // Invalid: intentionally return no value. + } + + const coercedObj = Object.create(null); + const fieldNodes = keyMap(valueNode.fields, field => field.name.value); + + for (const field of objectValues(type.getFields())) { + const fieldNode = fieldNodes[field.name]; + + if (!fieldNode || isMissingVariable(fieldNode.value, variables)) { + if (field.defaultValue !== undefined) { + coercedObj[field.name] = field.defaultValue; + } else if (isNonNullType(field.type)) { + return; // Invalid: intentionally return no value. + } + + continue; + } + + const fieldValue = valueFromAST(fieldNode.value, field.type, variables); + + if (fieldValue === undefined) { + return; // Invalid: intentionally return no value. + } + + coercedObj[field.name] = fieldValue; + } + + return coercedObj; + } + + if (isLeafType(type)) { + // Scalars and Enums fulfill parsing a literal value via parseLiteral(). + // Invalid values represent a failure to parse correctly, in which case + // no value is returned. + let result; + + try { + result = type.parseLiteral(valueNode, variables); + } catch (_error) { + return; // Invalid: intentionally return no value. + } + + if (result === undefined) { + return; // Invalid: intentionally return no value. + } + + return result; + } // Not reachable. All possible input types have been considered. + + + invariant(false, 'Unexpected input type: ' + inspect(type)); +} // Returns true if the provided valueNode is a variable which is not defined +// in the set of variables. + +function isMissingVariable(valueNode, variables) { + return valueNode.kind === Kind.VARIABLE && (variables == null || variables[valueNode.name.value] === undefined); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3bc335e3bb47f6972b05ad5341cd795804fa0723.ts b/bundler/tests/.cache/deno/3bc335e3bb47f6972b05ad5341cd795804fa0723.ts new file mode 100644 index 00000000000..de4390b2092 --- /dev/null +++ b/bundler/tests/.cache/deno/3bc335e3bb47f6972b05ad5341cd795804fa0723.ts @@ -0,0 +1,265 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMobilePhone.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type PhoneLocale = + | 'am-AM' + | 'ar-AE' + | 'ar-BH' + | 'ar-DZ' + | 'ar-EG' + | 'ar-IQ' + | 'ar-JO' + | 'ar-KW' + | 'ar-LY' + | 'ar-SA' + | 'ar-SY' + | 'ar-TN' + | 'bs-BA' + | 'be-BY' + | 'bg-BG' + | 'bn-BD' + | 'cs-CZ' + | 'da-DK' + | 'de-DE' + | 'de-AT' + | 'de-CH' + | 'el-GR' + | 'en-AU' + | 'en-GB' + | 'en-GG' + | 'en-GH' + | 'en-HK' + | 'en-MO' + | 'en-IE' + | 'en-IN' + | 'en-KE' + | 'en-MT' + | 'en-MU' + | 'en-NG' + | 'en-NZ' + | 'en-PK' + | 'en-RW' + | 'en-SG' + | 'en-SL' + | 'en-TZ' + | 'en-UG' + | 'en-US' + | 'en-ZA' + | 'en-ZM' + | 'en-ZW' + | 'es-CO' + | 'es-CL' + | 'es-CR' + | 'es-EC' + | 'es-ES' + | 'es-MX' + | 'es-PA' + | 'es-PY' + | 'es-UY' + | 'et-EE' + | 'fa-IR' + | 'fi-FI' + | 'fj-FJ' + | 'fo-FO' + | 'fr-FR' + | 'fr-GF' + | 'fr-GP' + | 'fr-MQ' + | 'fr-RE' + | 'he-IL' + | 'hu-HU' + | 'id-ID' + | 'it-IT' + | 'ja-JP' + | 'kk-KZ' + | 'kl-GL' + | 'ko-KR' + | 'lt-LT' + | 'ms-MY' + | 'nb-NO' + | 'ne-NP' + | 'nl-BE' + | 'nl-NL' + | 'nn-NO' + | 'pl-PL' + | 'pt-BR' + | 'pt-PT' + | 'ro-RO' + | 'ru-RU' + | 'sl-SI' + | 'sk-SK' + | 'sr-RS' + | 'sv-SE' + | 'th-TH' + | 'tr-TR' + | 'uk-UA' + | 'vi-VN' + | 'zh-CN' + | 'zh-TW' + | 'en-CA' + | 'fr-BE' + | 'zh-HK' + | 'zh-MO' + | 'any'; + +/** + * @ignore + */ +const phones = { + 'am-AM': /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/, + 'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/, + 'ar-BH': /^(\+?973)?(3|6)\d{7}$/, + 'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/, + 'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/, + 'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/, + 'ar-JO': /^(\+?962|0)?7[789]\d{7}$/, + 'ar-KW': /^(\+?965)[569]\d{7}$/, + 'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/, + 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, + 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, + 'ar-TN': /^(\+?216)?[2459]\d{7}$/, + 'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/, + 'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/, + 'bg-BG': /^(\+?359|0)?8[789]\d{7}$/, + 'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/, + 'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'de-DE': /^(\+49)?0?[1|3]([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7}$/, + 'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/, + 'de-CH': /^(\+41|0)(7[5-9])\d{1,7}$/, + 'el-GR': /^(\+?30|0)?(69\d{8})$/, + 'en-AU': /^(\+?61|0)4\d{8}$/, + 'en-GB': /^(\+?44|0)7\d{9}$/, + 'en-GG': /^(\+?44|0)1481\d{6}$/, + 'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|28)\d{7}$/, + 'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/, + 'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/, + 'en-IE': /^(\+?353|0)8[356789]\d{7}$/, + 'en-IN': /^(\+?91|0)?[6789]\d{9}$/, + 'en-KE': /^(\+?254|0)(7|1)\d{8}$/, + 'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/, + 'en-MU': /^(\+?230|0)?\d{8}$/, + 'en-NG': /^(\+?234|0)?[789]\d{9}$/, + 'en-NZ': /^(\+?64|0)[28]\d{7,9}$/, + 'en-PK': /^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$|^\d{11}$|^\d{4}-\d{7}$/, + 'en-RW': /^(\+?250|0)?[7]\d{8}$/, + 'en-SG': /^(\+65)?[689]\d{7}$/, + 'en-SL': /^(?:0|94|\+94)?(7(0|1|2|5|6|7|8)( |-)?\d)\d{6}$/, + 'en-TZ': /^(\+?255|0)?[67]\d{8}$/, + 'en-UG': /^(\+?256|0)?[7]\d{8}$/, + 'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/, + 'en-ZA': /^(\+?27|0)\d{9}$/, + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, + 'en-ZW': /^(\+263)[0-9]{9}$/, + 'es-CO': /^(\+?57)?([1-8]{1}|3[0-9]{2})?[2-9]{1}\d{6}$/, + 'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/, + 'es-CR': /^(\+506)?[2-8]\d{7}$/, + 'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/, + 'es-ES': /^(\+?34)?[6|7]\d{8}$/, + 'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/, + 'es-PA': /^(\+?507)\d{7,8}$/, + 'es-PY': /^(\+?595|0)9[9876]\d{7}$/, + 'es-UY': /^(\+598|0)9[1-9][\d]{6}$/, + 'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/, + 'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/, + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/, + 'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/, + 'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'fr-FR': /^(\+?33|0)[67]\d{8}$/, + 'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/, + 'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/, + 'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/, + 'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/, + 'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/, + 'hu-HU': /^(\+?36)(20|30|70)\d{7}$/, + 'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/, + 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, + 'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/, + 'kk-KZ': /^(\+?7|8)?7\d{9}$/, + 'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/, + 'lt-LT': /^(\+370|8)\d{8}$/, + 'ms-MY': /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/, + 'nb-NO': /^(\+?47)?[49]\d{7}$/, + 'ne-NP': /^(\+?977)?9[78]\d{8}$/, + 'nl-BE': /^(\+?32|0)4?\d{8}$/, + 'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/, + 'nn-NO': /^(\+?47)?[49]\d{7}$/, + 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, + 'pt-BR': /(?=^(\+?5{2}\-?|0)[1-9]{2}\-?\d{4}\-?\d{4}$)(^(\+?5{2}\-?|0)[1-9]{2}\-?[6-9]{1}\d{3}\-?\d{4}$)|(^(\+?5{2}\-?|0)[1-9]{2}\-?9[6-9]{1}\d{3}\-?\d{4}$)/, + 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, + 'ro-RO': /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/, + 'ru-RU': /^(\+?7|8)?9\d{9}$/, + 'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/, + 'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, + 'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/, + 'th-TH': /^(\+66|66|0)\d{9}$/, + 'tr-TR': /^(\+?90|0)?5\d{9}$/, + 'uk-UA': /^(\+?38|8)?0\d{9}$/, + 'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/, + 'vi-VN': /^(\+?84|0)((3([2-9]))|(5([2689]))|(7([0|6-9]))|(8([1-6|89]))|(9([0-9])))([0-9]{7})$/, + 'zh-CN': /^((\+|00)86)?1([3568][0-9]|4[579]|6[67]|7[01235678]|9[012356789])[0-9]{8}$/, + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, + 'en-CA': /^$/, + 'fr-BE': /^$/, + 'zh-HK': /^$/, + 'zh-MO': /^$/, +}; + +// aliases +phones['en-CA'] = phones['en-US']; +phones['fr-BE'] = phones['nl-BE']; +phones['zh-HK'] = phones['en-HK']; +phones['zh-MO'] = phones['en-MO']; + +type MobilePhoneOptions = { + strictMode?: boolean; +}; + +export const isMobilePhone = ( + str: string, + locale: PhoneLocale, + options?: MobilePhoneOptions +) => { + assertString(str); + if (options && options.strictMode && !str.startsWith('+')) { + return false; + } + if (Array.isArray(locale)) { + return locale.some((key) => { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + // @ts-ignore allowing typedoc to build + const phone = phones[key]; + if (phone.test(str)) { + return true; + } + } + return false; + }); + } else if (locale in phones) { + // @ts-ignore allowing typedoc to build + return phones[locale].test(str); + // alias falsey locale as 'any' + } else if (!locale || locale === 'any') { + for (const key in phones) { + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + // @ts-ignore allowing typedoc to build + const phone = phones[key]; + if (phone.test(str)) { + return true; + } + } + } + return false; + } + throw new Error(`Invalid locale '${locale}'`); +}; + +export const mobileLocales = Object.keys(phones); diff --git a/bundler/tests/.cache/deno/3c1635262d8f3d1037702adc003746c5c374368d.ts b/bundler/tests/.cache/deno/3c1635262d8f3d1037702adc003746c5c374368d.ts new file mode 100644 index 00000000000..deb641cf97a --- /dev/null +++ b/bundler/tests/.cache/deno/3c1635262d8f3d1037702adc003746c5c374368d.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.74.0/async/deferred.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/3c2d47ccff377b24d6ae77e2b699cbbd92216035.ts b/bundler/tests/.cache/deno/3c2d47ccff377b24d6ae77e2b699cbbd92216035.ts new file mode 100644 index 00000000000..c2ed1dca17e --- /dev/null +++ b/bundler/tests/.cache/deno/3c2d47ccff377b24d6ae77e2b699cbbd92216035.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unapply.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Takes a function `fn`, which takes a single array argument, and returns a + * function which: + * + * - takes any number of positional arguments; + * - passes these arguments to `fn` as an array; and + * - returns the result. + * + * In other words, `R.unapply` derives a variadic function from a function which + * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply). + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Function + * @sig ([*...] -> a) -> (*... -> a) + * @param {Function} fn + * @return {Function} + * @see R.apply + * @example + * + * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]' + * @symb R.unapply(f)(a, b) = f([a, b]) + */ +var unapply = _curry1(function unapply(fn) { + return function() { + return fn(Array.prototype.slice.call(arguments, 0)); + }; +}); +export default unapply; diff --git a/bundler/tests/.cache/deno/3c3780ce414ce84ff43ba13138603e36a2238d32.ts b/bundler/tests/.cache/deno/3c3780ce414ce84ff43ba13138603e36a2238d32.ts new file mode 100644 index 00000000000..bfa0d646f8d --- /dev/null +++ b/bundler/tests/.cache/deno/3c3780ce414ce84ff43ba13138603e36a2238d32.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/pairs.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _toString = Object.prototype.toString; + +function resolveYamlPairs(data: Any[][]): boolean { + const result = new Array(data.length); + + for (let index = 0; index < data.length; index++) { + const pair = data[index]; + + if (_toString.call(pair) !== "[object Object]") return false; + + const keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [keys[0], pair[keys[0] as Any]]; + } + + return true; +} + +function constructYamlPairs(data: string): Any[] { + if (data === null) return []; + + const result = new Array(data.length); + + for (let index = 0; index < data.length; index += 1) { + const pair = data[index]; + + const keys = Object.keys(pair); + + result[index] = [keys[0], pair[keys[0] as Any]]; + } + + return result; +} + +export const pairs = new Type("tag:yaml.org,2002:pairs", { + construct: constructYamlPairs, + kind: "sequence", + resolve: resolveYamlPairs, +}); diff --git a/bundler/tests/.cache/deno/3ca4d838cd9a64dafd9511d60dee20f34a50994e.ts b/bundler/tests/.cache/deno/3ca4d838cd9a64dafd9511d60dee20f34a50994e.ts new file mode 100644 index 00000000000..ea28f7fdf05 --- /dev/null +++ b/bundler/tests/.cache/deno/3ca4d838cd9a64dafd9511d60dee20f34a50994e.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/isPromise.js + + +/** + * Returns true if the value acts like a Promise, i.e. has a "then" function, + * otherwise returns false. + */ +// eslint-disable-next-line no-redeclare +export default function isPromise(value) { + return typeof value?.then === 'function'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3ca6ae490be155fa7cff01b8012d58c846cffc82.ts b/bundler/tests/.cache/deno/3ca6ae490be155fa7cff01b8012d58c846cffc82.ts new file mode 100644 index 00000000000..e17bef8c8e9 --- /dev/null +++ b/bundler/tests/.cache/deno/3ca6ae490be155fa7cff01b8012d58c846cffc82.ts @@ -0,0 +1,597 @@ +// Loaded from https://deno.land/std@0.81.0/datetime/formatter.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { + CallbackResult, + ReceiverResult, + Rule, + TestFunction, + TestResult, + Tokenizer, +} from "./tokenizer.ts"; + +function digits(value: string | number, count = 2): string { + return String(value).padStart(count, "0"); +} + +// as declared as in namespace Intl +type DateTimeFormatPartTypes = + | "day" + | "dayPeriod" + // | "era" + | "hour" + | "literal" + | "minute" + | "month" + | "second" + | "timeZoneName" + // | "weekday" + | "year" + | "fractionalSecond"; + +interface DateTimeFormatPart { + type: DateTimeFormatPartTypes; + value: string; +} + +type TimeZone = "UTC"; + +interface Options { + timeZone?: TimeZone; +} + +function createLiteralTestFunction(value: string): TestFunction { + return (string: string): TestResult => { + return string.startsWith(value) + ? { value, length: value.length } + : undefined; + }; +} + +function createMatchTestFunction(match: RegExp): TestFunction { + return (string: string): TestResult => { + const result = match.exec(string); + if (result) return { value: result, length: result[0].length }; + }; +} + +// according to unicode symbols (http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table) +const defaultRules = [ + { + test: createLiteralTestFunction("yyyy"), + fn: (): CallbackResult => ({ type: "year", value: "numeric" }), + }, + { + test: createLiteralTestFunction("yy"), + fn: (): CallbackResult => ({ type: "year", value: "2-digit" }), + }, + + { + test: createLiteralTestFunction("MM"), + fn: (): CallbackResult => ({ type: "month", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("M"), + fn: (): CallbackResult => ({ type: "month", value: "numeric" }), + }, + { + test: createLiteralTestFunction("dd"), + fn: (): CallbackResult => ({ type: "day", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("d"), + fn: (): CallbackResult => ({ type: "day", value: "numeric" }), + }, + + { + test: createLiteralTestFunction("HH"), + fn: (): CallbackResult => ({ type: "hour", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("H"), + fn: (): CallbackResult => ({ type: "hour", value: "numeric" }), + }, + { + test: createLiteralTestFunction("hh"), + fn: (): CallbackResult => ({ + type: "hour", + value: "2-digit", + hour12: true, + }), + }, + { + test: createLiteralTestFunction("h"), + fn: (): CallbackResult => ({ + type: "hour", + value: "numeric", + hour12: true, + }), + }, + { + test: createLiteralTestFunction("mm"), + fn: (): CallbackResult => ({ type: "minute", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("m"), + fn: (): CallbackResult => ({ type: "minute", value: "numeric" }), + }, + { + test: createLiteralTestFunction("ss"), + fn: (): CallbackResult => ({ type: "second", value: "2-digit" }), + }, + { + test: createLiteralTestFunction("s"), + fn: (): CallbackResult => ({ type: "second", value: "numeric" }), + }, + { + test: createLiteralTestFunction("SSS"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 3 }), + }, + { + test: createLiteralTestFunction("SS"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 2 }), + }, + { + test: createLiteralTestFunction("S"), + fn: (): CallbackResult => ({ type: "fractionalSecond", value: 1 }), + }, + + { + test: createLiteralTestFunction("a"), + fn: (value: unknown): CallbackResult => ({ + type: "dayPeriod", + value: value as string, + }), + }, + + // quoted literal + { + test: createMatchTestFunction(/^(')(?\\.|[^\']*)\1/), + fn: (match: unknown): CallbackResult => ({ + type: "literal", + value: (match as RegExpExecArray).groups!.value as string, + }), + }, + // literal + { + test: createMatchTestFunction(/^.+?\s*/), + fn: (match: unknown): CallbackResult => ({ + type: "literal", + value: (match as RegExpExecArray)[0], + }), + }, +]; + +type FormatPart = { + type: DateTimeFormatPartTypes; + value: string | number; + hour12?: boolean; +}; +type Format = FormatPart[]; + +export class DateTimeFormatter { + #format: Format; + + constructor(formatString: string, rules: Rule[] = defaultRules) { + const tokenizer = new Tokenizer(rules); + this.#format = tokenizer.tokenize( + formatString, + ({ type, value, hour12 }) => { + const result = { + type, + value, + } as unknown as ReceiverResult; + if (hour12) result.hour12 = hour12 as boolean; + return result; + }, + ) as Format; + } + + format(date: Date, options: Options = {}): string { + let string = ""; + + const utc = options.timeZone === "UTC"; + + for (const token of this.#format) { + const type = token.type; + + switch (type) { + case "year": { + const value = utc ? date.getUTCFullYear() : date.getFullYear(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2).slice(-2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "month": { + const value = (utc ? date.getUTCMonth() : date.getMonth()) + 1; + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "day": { + const value = utc ? date.getUTCDate() : date.getDate(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "hour": { + let value = utc ? date.getUTCHours() : date.getHours(); + value -= token.hour12 && date.getHours() > 12 ? 12 : 0; + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "minute": { + const value = utc ? date.getUTCMinutes() : date.getMinutes(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "second": { + const value = utc ? date.getUTCSeconds() : date.getSeconds(); + switch (token.value) { + case "numeric": { + string += value; + break; + } + case "2-digit": { + string += digits(value, 2); + break; + } + default: + throw Error( + `FormatterError: value "${token.value}" is not supported`, + ); + } + break; + } + case "fractionalSecond": { + const value = utc + ? date.getUTCMilliseconds() + : date.getMilliseconds(); + string += digits(value, Number(token.value)); + break; + } + // FIXME(bartlomieju) + case "timeZoneName": { + // string += utc ? "Z" : token.value + break; + } + case "dayPeriod": { + string += token.value ? (date.getHours() >= 12 ? "PM" : "AM") : ""; + break; + } + case "literal": { + string += token.value; + break; + } + + default: + throw Error(`FormatterError: { ${token.type} ${token.value} }`); + } + } + + return string; + } + + parseToParts(string: string): DateTimeFormatPart[] { + const parts: DateTimeFormatPart[] = []; + + for (const token of this.#format) { + const type = token.type; + + let value = ""; + switch (token.type) { + case "year": { + switch (token.value) { + case "numeric": { + value = /^\d{1,4}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + } + break; + } + case "month": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + case "narrow": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + case "short": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + case "long": { + value = /^[a-zA-Z]+/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "day": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "hour": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + if (token.hour12 && parseInt(value) > 12) { + console.error( + `Trying to parse hour greater than 12. Use 'H' instead of 'h'.`, + ); + } + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + if (token.hour12 && parseInt(value) > 12) { + console.error( + `Trying to parse hour greater than 12. Use 'HH' instead of 'hh'.`, + ); + } + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "minute": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "second": { + switch (token.value) { + case "numeric": { + value = /^\d{1,2}/.exec(string)?.[0] as string; + break; + } + case "2-digit": { + value = /^\d{2}/.exec(string)?.[0] as string; + break; + } + default: + throw Error( + `ParserError: value "${token.value}" is not supported`, + ); + } + break; + } + case "fractionalSecond": { + value = new RegExp(`^\\d{${token.value}}`).exec(string) + ?.[0] as string; + break; + } + case "timeZoneName": { + value = token.value as string; + break; + } + case "dayPeriod": { + value = /^(A|P)M/.exec(string)?.[0] as string; + break; + } + case "literal": { + if (!string.startsWith(token.value as string)) { + throw Error( + `Literal "${token.value}" not found "${string.slice(0, 25)}"`, + ); + } + value = token.value as string; + break; + } + + default: + throw Error(`${token.type} ${token.value}`); + } + + if (!value) { + throw Error( + `value not valid for token { ${type} ${value} } ${ + string.slice( + 0, + 25, + ) + }`, + ); + } + parts.push({ type, value }); + + string = string.slice(value.length); + } + + if (string.length) { + throw Error( + `datetime string was not fully parsed! ${string.slice(0, 25)}`, + ); + } + + return parts; + } + + /** sort & filter dateTimeFormatPart */ + sortDateTimeFormatPart(parts: DateTimeFormatPart[]): DateTimeFormatPart[] { + let result: DateTimeFormatPart[] = []; + const typeArray = [ + "year", + "month", + "day", + "hour", + "minute", + "second", + "fractionalSecond", + ]; + for (const type of typeArray) { + const current = parts.findIndex((el) => el.type === type); + if (current !== -1) { + result = result.concat(parts.splice(current, 1)); + } + } + result = result.concat(parts); + return result; + } + + partsToDate(parts: DateTimeFormatPart[]): Date { + const date = new Date(); + const utc = parts.find( + (part) => part.type === "timeZoneName" && part.value === "UTC", + ); + + utc ? date.setUTCHours(0, 0, 0, 0) : date.setHours(0, 0, 0, 0); + for (const part of parts) { + switch (part.type) { + case "year": { + const value = Number(part.value.padStart(4, "20")); + utc ? date.setUTCFullYear(value) : date.setFullYear(value); + break; + } + case "month": { + const value = Number(part.value) - 1; + utc ? date.setUTCMonth(value) : date.setMonth(value); + break; + } + case "day": { + const value = Number(part.value); + utc ? date.setUTCDate(value) : date.setDate(value); + break; + } + case "hour": { + let value = Number(part.value); + const dayPeriod = parts.find( + (part: DateTimeFormatPart) => part.type === "dayPeriod", + ); + if (dayPeriod?.value === "PM") value += 12; + utc ? date.setUTCHours(value) : date.setHours(value); + break; + } + case "minute": { + const value = Number(part.value); + utc ? date.setUTCMinutes(value) : date.setMinutes(value); + break; + } + case "second": { + const value = Number(part.value); + utc ? date.setUTCSeconds(value) : date.setSeconds(value); + break; + } + case "fractionalSecond": { + const value = Number(part.value); + utc ? date.setUTCMilliseconds(value) : date.setMilliseconds(value); + break; + } + } + } + return date; + } + + parse(string: string): Date { + const parts = this.parseToParts(string); + const sortParts = this.sortDateTimeFormatPart(parts); + return this.partsToDate(sortParts); + } +} diff --git a/bundler/tests/.cache/deno/3cbfe67e10ce1d3d8f0f3472ea3f360e2760e5a6.ts b/bundler/tests/.cache/deno/3cbfe67e10ce1d3d8f0f3472ea3f360e2760e5a6.ts new file mode 100644 index 00000000000..3ee2f3012e5 --- /dev/null +++ b/bundler/tests/.cache/deno/3cbfe67e10ce1d3d8f0f3472ea3f360e2760e5a6.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_flatCat.js + + +import _forceReduced from './_forceReduced.js'; +import _isArrayLike from './_isArrayLike.js'; +import _reduce from './_reduce.js'; +import _xfBase from './_xfBase.js'; + +var preservingReduced = function(xf) { + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function(result) { + return xf['@@transducer/result'](result); + }, + '@@transducer/step': function(result, input) { + var ret = xf['@@transducer/step'](result, input); + return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret; + } + }; +}; + +var _flatCat = function _xcat(xf) { + var rxf = preservingReduced(xf); + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function(result) { + return rxf['@@transducer/result'](result); + }, + '@@transducer/step': function(result, input) { + return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input); + } + }; +}; + +export default _flatCat; diff --git a/bundler/tests/.cache/deno/3d2b41247f84e36b4d7e23f12802d5ec0f5d3c40.ts b/bundler/tests/.cache/deno/3d2b41247f84e36b4d7e23f12802d5ec0f5d3c40.ts new file mode 100644 index 00000000000..69ab8fead19 --- /dev/null +++ b/bundler/tests/.cache/deno/3d2b41247f84e36b4d7e23f12802d5ec0f5d3c40.ts @@ -0,0 +1,98 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/validate.js + + +import devAssert from '../jsutils/devAssert.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { visit, visitInParallel } from '../language/visitor.js'; +import { assertValidSchema } from '../type/validate.js'; +import { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.js'; +import { specifiedRules, specifiedSDLRules } from './specifiedRules.js'; +import { SDLValidationContext, ValidationContext } from './ValidationContext.js'; +/** + * Implements the "Validation" section of the spec. + * + * Validation runs synchronously, returning an array of encountered errors, or + * an empty array if no errors were encountered and the document is valid. + * + * A list of specific validation rules may be provided. If not provided, the + * default list of rules defined by the GraphQL specification will be used. + * + * Each validation rules is a function which returns a visitor + * (see the language/visitor API). Visitor methods are expected to return + * GraphQLErrors, or Arrays of GraphQLErrors when invalid. + * + * Optionally a custom TypeInfo instance may be provided. If not provided, one + * will be created from the provided schema. + */ + +export function validate(schema, documentAST, rules = specifiedRules, typeInfo = new TypeInfo(schema), options = { + maxErrors: undefined +}) { + devAssert(documentAST, 'Must provide document.'); // If the schema used for validation is invalid, throw an error. + + assertValidSchema(schema); + const abortObj = Object.freeze({}); + const errors = []; + const context = new ValidationContext(schema, documentAST, typeInfo, error => { + if (options.maxErrors != null && errors.length >= options.maxErrors) { + errors.push(new GraphQLError('Too many validation errors, error limit reached. Validation aborted.')); + throw abortObj; + } + + errors.push(error); + }); // This uses a specialized visitor which runs multiple visitors in parallel, + // while maintaining the visitor skip and break API. + + const visitor = visitInParallel(rules.map(rule => rule(context))); // Visit the whole document with each instance of all provided rules. + + try { + visit(documentAST, visitWithTypeInfo(typeInfo, visitor)); + } catch (e) { + if (e !== abortObj) { + throw e; + } + } + + return errors; +} +/** + * @internal + */ + +export function validateSDL(documentAST, schemaToExtend, rules = specifiedSDLRules) { + const errors = []; + const context = new SDLValidationContext(documentAST, schemaToExtend, error => { + errors.push(error); + }); + const visitors = rules.map(rule => rule(context)); + visit(documentAST, visitInParallel(visitors)); + return errors; +} +/** + * Utility function which asserts a SDL document is valid by throwing an error + * if it is invalid. + * + * @internal + */ + +export function assertValidSDL(documentAST) { + const errors = validateSDL(documentAST); + + if (errors.length !== 0) { + throw new Error(errors.map(error => error.message).join('\n\n')); + } +} +/** + * Utility function which asserts a SDL document is valid by throwing an error + * if it is invalid. + * + * @internal + */ + +export function assertValidSDLExtension(documentAST, schema) { + const errors = validateSDL(documentAST, schema); + + if (errors.length !== 0) { + throw new Error(errors.map(error => error.message).join('\n\n')); + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3e32d7366080e14b09fd00723476eef3f1553f9a.ts b/bundler/tests/.cache/deno/3e32d7366080e14b09fd00723476eef3f1553f9a.ts new file mode 100644 index 00000000000..47d60a79f70 --- /dev/null +++ b/bundler/tests/.cache/deno/3e32d7366080e14b09fd00723476eef3f1553f9a.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/std@0.77.0/fs/move.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { exists, existsSync } from "./exists.ts"; +import { isSubdir } from "./_util.ts"; + +interface MoveOptions { + overwrite?: boolean; +} + +/** Moves a file or directory */ +export async function move( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): Promise { + const srcStat = await Deno.stat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (await exists(dest)) { + await Deno.remove(dest, { recursive: true }); + } + await Deno.rename(src, dest); + } else { + if (await exists(dest)) { + throw new Error("dest already exists."); + } + await Deno.rename(src, dest); + } + + return; +} + +/** Moves a file or directory synchronously */ +export function moveSync( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): void { + const srcStat = Deno.statSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (existsSync(dest)) { + Deno.removeSync(dest, { recursive: true }); + } + Deno.renameSync(src, dest); + } else { + if (existsSync(dest)) { + throw new Error("dest already exists."); + } + Deno.renameSync(src, dest); + } +} diff --git a/bundler/tests/.cache/deno/3e3d8eaa4ec0cb288527634f6d76f6bd4cb81c2a.ts b/bundler/tests/.cache/deno/3e3d8eaa4ec0cb288527634f6d76f6bd4cb81c2a.ts new file mode 100644 index 00000000000..63c12aa45fc --- /dev/null +++ b/bundler/tests/.cache/deno/3e3d8eaa4ec0cb288527634f6d76f6bd4cb81c2a.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/source.js + + +import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols.js'; +import devAssert from '../jsutils/devAssert.js'; + +/** + * A representation of source input to GraphQL. + * `name` and `locationOffset` are optional. They are useful for clients who + * store GraphQL documents in source files; for example, if the GraphQL input + * starts at line 40 in a file named Foo.graphql, it might be useful for name to + * be "Foo.graphql" and location to be `{ line: 40, column: 0 }`. + * line and column in locationOffset are 1-indexed + */ +export class Source { + constructor(body, name = 'GraphQL request', locationOffset = { + line: 1, + column: 1 + }) { + this.body = body; + this.name = name; + this.locationOffset = locationOffset; + devAssert(this.locationOffset.line > 0, 'line in locationOffset is 1-indexed and must be positive.'); + devAssert(this.locationOffset.column > 0, 'column in locationOffset is 1-indexed and must be positive.'); + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'Source'; + } + +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/3e82d08e680d48707a5a75763b1e135150dd00a5.ts b/bundler/tests/.cache/deno/3e82d08e680d48707a5a75763b1e135150dd00a5.ts new file mode 100644 index 00000000000..31bf398a3e4 --- /dev/null +++ b/bundler/tests/.cache/deno/3e82d08e680d48707a5a75763b1e135150dd00a5.ts @@ -0,0 +1,67 @@ +// Loaded from https://deno.land/x/oak/mod.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +export { Application } from "./application.ts"; +export type { + ApplicationOptions, + ListenOptions, + ListenOptionsBase, + ListenOptionsTls, + State, +} from "./application.ts"; +export type { + Body, + BodyForm, + BodyFormData, + BodyJson, + BodyOptions, + BodyRaw, + BodyReader, + BodyText, + BodyType, + BodyUndefined, +} from "./body.ts"; +export { Context } from "./context.ts"; +export type { ContextSendOptions } from "./context.ts"; +export * as helpers from "./helpers.ts"; +export { Cookies } from "./cookies.ts"; +export type { CookiesGetOptions, CookiesSetDeleteOptions } from "./cookies.ts"; +export { HttpError, httpErrors, isHttpError } from "./httpError.ts"; +export { compose as composeMiddleware } from "./middleware.ts"; +export type { Middleware } from "./middleware.ts"; +export { FormDataReader } from "./multipart.ts"; +export type { + FormDataBody, + FormDataFile, + FormDataReadOptions, +} from "./multipart.ts"; + +export { Request } from "./request.ts"; +export { REDIRECT_BACK, Response } from "./response.ts"; +export { Router } from "./router.ts"; +export type { + Route, + RouteParams, + RouterAllowedMethodsOptions, + RouterContext, + RouterMiddleware, + RouterOptions, + RouterParamMiddleware, +} from "./router.ts"; +export { send } from "./send.ts"; +export type { SendOptions } from "./send.ts"; +export { ServerSentEvent, ServerSentEventTarget } from "./server_sent_event.ts"; +export type { ServerSentEventInit } from "./server_sent_event.ts"; +export type { + ErrorStatus, + HTTPMethods, + RedirectStatus, + ServerRequest, + ServerResponse, +} from "./types.d.ts"; +export { isErrorStatus, isRedirectStatus } from "./util.ts"; + +// Re-exported from `net` +export { Status, STATUS_TEXT } from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/3e9ec29bf7ffe6df5bbd10261cc1a3eeb15a74b1.ts b/bundler/tests/.cache/deno/3e9ec29bf7ffe6df5bbd10261cc1a3eeb15a74b1.ts new file mode 100644 index 00000000000..cb0dd61f902 --- /dev/null +++ b/bundler/tests/.cache/deno/3e9ec29bf7ffe6df5bbd10261cc1a3eeb15a74b1.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isNumeric.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { decimal } from '../helpers/alpha.ts'; + +/** + * @ignore + */ +const numericNoSymbols = /^[0-9]+$/; + +type NumericOptions = { + noSymbols?: boolean; + locale?: any; +}; + +export const isNumeric = (str: string, options?: NumericOptions) => { + assertString(str); + + if (options && options.noSymbols) { + return numericNoSymbols.test(str); + } + + return new RegExp( + `^[+-]?([0-9]*[${ + (options || {}).locale ? (decimal as any)[options?.locale] : '.' + }])?[0-9]+$` + ).test(str); +}; diff --git a/bundler/tests/.cache/deno/3f013fb779acb8775ce7f4d245cd2fbb0ed4f6e8.ts b/bundler/tests/.cache/deno/3f013fb779acb8775ce7f4d245cd2fbb0ed4f6e8.ts new file mode 100644 index 00000000000..6124607e502 --- /dev/null +++ b/bundler/tests/.cache/deno/3f013fb779acb8775ce7f4d245cd2fbb0ed4f6e8.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/startsWith.js + + +import _curry2 from './internal/_curry2.js'; +import equals from './equals.js'; +import take from './take.js'; + +/** + * Checks if a list starts with the provided sublist. + * + * Similarly, checks if a string starts with the provided substring. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> [a] -> Boolean + * @sig String -> String -> Boolean + * @param {*} prefix + * @param {*} list + * @return {Boolean} + * @see R.endsWith + * @example + * + * R.startsWith('a', 'abc') //=> true + * R.startsWith('b', 'abc') //=> false + * R.startsWith(['a'], ['a', 'b', 'c']) //=> true + * R.startsWith(['b'], ['a', 'b', 'c']) //=> false + */ +var startsWith = _curry2(function(prefix, list) { + return equals(take(prefix.length, list), prefix); +}); +export default startsWith; diff --git a/bundler/tests/.cache/deno/3f323f69a88decfb6634eb7fff746520577bdb51.ts b/bundler/tests/.cache/deno/3f323f69a88decfb6634eb7fff746520577bdb51.ts new file mode 100644 index 00000000000..2043cce52ce --- /dev/null +++ b/bundler/tests/.cache/deno/3f323f69a88decfb6634eb7fff746520577bdb51.ts @@ -0,0 +1,111 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/database.ts + + +import { Collection } from "./collection/mod.ts"; +import { CommandCursor, WireProtocol } from "./protocol/mod.ts"; +import { CreateUserOptions, Document } from "./types.ts"; + +interface ListCollectionsReponse { + cursor: { + id: bigint; + ns: string; + firstBatch: [ + { + name: string; + type: "collection"; + }, + ]; + }; + ok: 1; +} + +export interface ListCollectionsResult { + name: string; + type: "collection"; +} + +export class Database { + #protocol: WireProtocol; + + constructor(protocol: WireProtocol, readonly name: string) { + this.#protocol = protocol; + } + + collection(name: string): Collection { + return new Collection(this.#protocol, this.name, name); + } + + listCollections(options?: { + filter?: Document; + nameOnly?: boolean; + authorizedCollections?: boolean; + comment?: Document; + }): CommandCursor { + if (!options) { + options = {}; + } + return new CommandCursor( + this.#protocol, + async () => { + const { cursor } = await this.#protocol.commandSingle< + ListCollectionsReponse + >(this.name, { + listCollections: 1, + ...options, + batchSize: 1, + }); + return { + id: cursor.id, + ns: cursor.ns, + firstBatch: cursor.firstBatch, + }; + }, + ); + } + + async listCollectionNames(options?: { + filter?: Document; + authorizedCollections?: boolean; + comment?: Document; + }): Promise { + const cursor = this.listCollections({ + ...options, + nameOnly: true, + authorizedCollections: true, + }); + const names: string[] = []; + for await (const item of cursor) { + names.push(item!.name); + } + return names; + } + + async createUser( + username: string, + password: string, + options?: CreateUserOptions, + ) { + await this.#protocol.commandSingle(this.name, { + createUser: options?.username ?? username, + pwd: options?.password ?? password, + customData: options?.customData, + roles: options?.roles ?? [], + writeConcern: options?.writeConcern, + authenticationRestrictions: options?.authenticationRestrictions, + mechanisms: options?.mechanisms, + digestPassword: options?.digestPassword, + comment: options?.comment, + }); + } + + async dropUser(username: string, options?: { + writeConcern?: Document; + comment?: Document; + }) { + await this.#protocol.commandSingle(this.name, { + dropUser: username, + writeConcern: options?.writeConcern, + comment: options?.comment, + }); + } +} diff --git a/bundler/tests/.cache/deno/3fd2dd13897d0ea45046ae4ea553294076710878.ts b/bundler/tests/.cache/deno/3fd2dd13897d0ea45046ae4ea553294076710878.ts new file mode 100644 index 00000000000..e59f1b8b38a --- /dev/null +++ b/bundler/tests/.cache/deno/3fd2dd13897d0ea45046ae4ea553294076710878.ts @@ -0,0 +1,794 @@ +// Loaded from https://deno.land/std@0.75.0/hash/sha512.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* + * [js-sha512]{@link https://github.com/emn178/js-sha512} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2018 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +// deno-fmt-ignore +const HEX_CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"] as const; +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; +// deno-fmt-ignore +const K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, + 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, + 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, + 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, + 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, + 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, + 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, + 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, + 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, + 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, + 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, + 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, + 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, + 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] as const; + +const blocks: number[] = []; + +// deno-fmt-ignore +export class Sha512 { + #blocks!: number[]; + #block!: number; + #bits!: number; + #start!: number; + #bytes!: number; + #hBytes!: number; + #lastByteIndex = 0; + #finalized!: boolean; + #hashed!: boolean; + #h0h!: number; + #h0l!: number; + #h1h!: number; + #h1l!: number; + #h2h!: number; + #h2l!: number; + #h3h!: number; + #h3l!: number; + #h4h!: number; + #h4l!: number; + #h5h!: number; + #h5l!: number; + #h6h!: number; + #h6l!: number; + #h7h!: number; + #h7l!: number; + + constructor(bits = 512, sharedMemory = false) { + this.init(bits, sharedMemory); + } + + protected init(bits: number, sharedMemory: boolean): void { + if (sharedMemory) { + blocks[0] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = + blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = blocks[16] = + blocks[17] = blocks[18] = blocks[19] = blocks[20] = blocks[21] = blocks[22] = blocks[23] = blocks[24] = + blocks[25] = blocks[26] = blocks[27] = blocks[28] = blocks[29] = blocks[30] = blocks[31] = blocks[32] = 0; + this.#blocks = blocks; + } else { + this.#blocks = + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + if (bits === 224) { + this.#h0h = 0x8c3d37c8; + this.#h0l = 0x19544da2; + this.#h1h = 0x73e19966; + this.#h1l = 0x89dcd4d6; + this.#h2h = 0x1dfab7ae; + this.#h2l = 0x32ff9c82; + this.#h3h = 0x679dd514; + this.#h3l = 0x582f9fcf; + this.#h4h = 0x0f6d2b69; + this.#h4l = 0x7bd44da8; + this.#h5h = 0x77e36f73; + this.#h5l = 0x04c48942; + this.#h6h = 0x3f9d85a8; + this.#h6l = 0x6a1d36c8; + this.#h7h = 0x1112e6ad; + this.#h7l = 0x91d692a1; + } else if (bits === 256) { + this.#h0h = 0x22312194; + this.#h0l = 0xfc2bf72c; + this.#h1h = 0x9f555fa3; + this.#h1l = 0xc84c64c2; + this.#h2h = 0x2393b86b; + this.#h2l = 0x6f53b151; + this.#h3h = 0x96387719; + this.#h3l = 0x5940eabd; + this.#h4h = 0x96283ee2; + this.#h4l = 0xa88effe3; + this.#h5h = 0xbe5e1e25; + this.#h5l = 0x53863992; + this.#h6h = 0x2b0199fc; + this.#h6l = 0x2c85b8aa; + this.#h7h = 0x0eb72ddc; + this.#h7l = 0x81c52ca2; + } else if (bits === 384) { + this.#h0h = 0xcbbb9d5d; + this.#h0l = 0xc1059ed8; + this.#h1h = 0x629a292a; + this.#h1l = 0x367cd507; + this.#h2h = 0x9159015a; + this.#h2l = 0x3070dd17; + this.#h3h = 0x152fecd8; + this.#h3l = 0xf70e5939; + this.#h4h = 0x67332667; + this.#h4l = 0xffc00b31; + this.#h5h = 0x8eb44a87; + this.#h5l = 0x68581511; + this.#h6h = 0xdb0c2e0d; + this.#h6l = 0x64f98fa7; + this.#h7h = 0x47b5481d; + this.#h7l = 0xbefa4fa4; + } else { // 512 + this.#h0h = 0x6a09e667; + this.#h0l = 0xf3bcc908; + this.#h1h = 0xbb67ae85; + this.#h1l = 0x84caa73b; + this.#h2h = 0x3c6ef372; + this.#h2l = 0xfe94f82b; + this.#h3h = 0xa54ff53a; + this.#h3l = 0x5f1d36f1; + this.#h4h = 0x510e527f; + this.#h4l = 0xade682d1; + this.#h5h = 0x9b05688c; + this.#h5l = 0x2b3e6c1f; + this.#h6h = 0x1f83d9ab; + this.#h6l = 0xfb41bd6b; + this.#h7h = 0x5be0cd19; + this.#h7l = 0x137e2179; + } + this.#bits = bits; + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + } + + update(message: Message): this { + if (this.#finalized) { + return this; + } + let msg: string | number[] | Uint8Array; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + const length = msg.length; + const blocks = this.#blocks; + let index = 0; + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = + blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = blocks[16] = + blocks[17] = blocks[18] = blocks[19] = blocks[20] = blocks[21] = blocks[22] = blocks[23] = blocks[24] = + blocks[25] = blocks[26] = blocks[27] = blocks[28] = blocks[29] = blocks[30] = blocks[31] = blocks[32] = 0; + } + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 128; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 128; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 128) { + this.#block = blocks[32]; + this.#start = i - 128; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) << 0; + this.#bytes = this.#bytes % 4294967296; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[32] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[32]; + if (i >= 112) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = + blocks[9] =blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = blocks[16] = + blocks[17] = blocks[18] = blocks[19] = blocks[20] = blocks[21] = blocks[22] = blocks[23] = blocks[24] = + blocks[25] = blocks[26] = blocks[27] = blocks[28] = blocks[29] = blocks[30] = blocks[31] = blocks[32] = 0; + } + blocks[30] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[31] = this.#bytes << 3; + this.hash(); + } + + protected hash(): void { + const + h0h = this.#h0h, h0l = this.#h0l, h1h = this.#h1h, h1l = this.#h1l, h2h = this.#h2h, h2l = this.#h2l, + h3h = this.#h3h, h3l = this.#h3l, h4h = this.#h4h, h4l = this.#h4l, h5h = this.#h5h, h5l = this.#h5l, + h6h = this.#h6h, h6l = this.#h6l, h7h = this.#h7h, h7l = this.#h7l; + + let s0h, s0l, s1h, s1l, c1, c2, c3, c4, abh, abl, dah, dal, cdh, cdl, bch, bcl, majh, majl, + t1h, t1l, t2h, t2l, chh, chl: number; + + const blocks = this.#blocks; + + for (let j = 32; j < 160; j += 2) { + t1h = blocks[j - 30]; + t1l = blocks[j - 29]; + s0h = ((t1h >>> 1) | (t1l << 31)) ^ ((t1h >>> 8) | (t1l << 24)) ^ (t1h >>> 7); + s0l = ((t1l >>> 1) | (t1h << 31)) ^ ((t1l >>> 8) | (t1h << 24)) ^ ((t1l >>> 7) | (t1h << 25)); + + t1h = blocks[j - 4]; + t1l = blocks[j - 3]; + s1h = ((t1h >>> 19) | (t1l << 13)) ^ ((t1l >>> 29) | (t1h << 3)) ^ (t1h >>> 6); + s1l = ((t1l >>> 19) | (t1h << 13)) ^ ((t1h >>> 29) | (t1l << 3)) ^ ((t1l >>> 6) | (t1h << 26)); + + t1h = blocks[j - 32]; + t1l = blocks[j - 31]; + t2h = blocks[j - 14]; + t2l = blocks[j - 13]; + + c1 = (t2l & 0xffff) + (t1l & 0xffff) + (s0l & 0xffff) + (s1l & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (s0h & 0xffff) + (s1h & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16); + + blocks[j] = (c4 << 16) | (c3 & 0xffff); + blocks[j + 1] = (c2 << 16) | (c1 & 0xffff); + } + + let ah = h0h, al = h0l, bh = h1h, bl = h1l, ch = h2h, cl = h2l, dh = h3h, dl = h3l, eh = h4h, el = h4l, + fh = h5h, fl = h5l, gh = h6h, gl = h6l, hh = h7h, hl = h7l; + + bch = bh & ch; + bcl = bl & cl; + + for (let j = 0; j < 160; j += 8) { + s0h = ((ah >>> 28) | (al << 4)) ^ ((al >>> 2) | (ah << 30)) ^ ((al >>> 7) | (ah << 25)); + s0l = ((al >>> 28) | (ah << 4)) ^ ((ah >>> 2) | (al << 30)) ^ ((ah >>> 7) | (al << 25)); + + s1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((el >>> 9) | (eh << 23)); + s1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((eh >>> 9) | (el << 23)); + + abh = ah & bh; + abl = al & bl; + majh = abh ^ (ah & ch) ^ bch; + majl = abl ^ (al & cl) ^ bcl; + + chh = (eh & fh) ^ (~eh & gh); + chl = (el & fl) ^ (~el & gl); + + t1h = blocks[j]; + t1l = blocks[j + 1]; + t2h = K[j]; + t2l = K[j + 1]; + + c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (hl & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (hl >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (hh & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (hh >>> 16) + (c3 >>> 16); + + t1h = (c4 << 16) | (c3 & 0xffff); + t1l = (c2 << 16) | (c1 & 0xffff); + + c1 = (majl & 0xffff) + (s0l & 0xffff); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + + t2h = (c4 << 16) | (c3 & 0xffff); + t2l = (c2 << 16) | (c1 & 0xffff); + + c1 = (dl & 0xffff) + (t1l & 0xffff); + c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (dh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + hh = (c4 << 16) | (c3 & 0xffff); + hl = (c2 << 16) | (c1 & 0xffff); + + c1 = (t2l & 0xffff) + (t1l & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + dh = (c4 << 16) | (c3 & 0xffff); + dl = (c2 << 16) | (c1 & 0xffff); + + s0h = ((dh >>> 28) | (dl << 4)) ^ ((dl >>> 2) | (dh << 30)) ^ ((dl >>> 7) | (dh << 25)); + s0l = ((dl >>> 28) | (dh << 4)) ^ ((dh >>> 2) | (dl << 30)) ^ ((dh >>> 7) | (dl << 25)); + + s1h = ((hh >>> 14) | (hl << 18)) ^ ((hh >>> 18) | (hl << 14)) ^ ((hl >>> 9) | (hh << 23)); + s1l = ((hl >>> 14) | (hh << 18)) ^ ((hl >>> 18) | (hh << 14)) ^ ((hh >>> 9) | (hl << 23)); + + dah = dh & ah; + dal = dl & al; + majh = dah ^ (dh & bh) ^ abh; + majl = dal ^ (dl & bl) ^ abl; + + chh = (hh & eh) ^ (~hh & fh); + chl = (hl & el) ^ (~hl & fl); + + t1h = blocks[j + 2]; + t1l = blocks[j + 3]; + t2h = K[j + 2]; + t2l = K[j + 3]; + + c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (gl & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (gh & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16); + + t1h = (c4 << 16) | (c3 & 0xffff); + t1l = (c2 << 16) | (c1 & 0xffff); + + c1 = (majl & 0xffff) + (s0l & 0xffff); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + + t2h = (c4 << 16) | (c3 & 0xffff); + t2l = (c2 << 16) | (c1 & 0xffff); + + c1 = (cl & 0xffff) + (t1l & 0xffff); + c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (ch & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + gh = (c4 << 16) | (c3 & 0xffff); + gl = (c2 << 16) | (c1 & 0xffff); + + c1 = (t2l & 0xffff) + (t1l & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + ch = (c4 << 16) | (c3 & 0xffff); + cl = (c2 << 16) | (c1 & 0xffff); + + s0h = ((ch >>> 28) | (cl << 4)) ^ ((cl >>> 2) | (ch << 30)) ^ ((cl >>> 7) | (ch << 25)); + s0l = ((cl >>> 28) | (ch << 4)) ^ ((ch >>> 2) | (cl << 30)) ^ ((ch >>> 7) | (cl << 25)); + + s1h = ((gh >>> 14) | (gl << 18)) ^ ((gh >>> 18) | (gl << 14)) ^ ((gl >>> 9) | (gh << 23)); + s1l = ((gl >>> 14) | (gh << 18)) ^ ((gl >>> 18) | (gh << 14)) ^ ((gh >>> 9) | (gl << 23)); + + cdh = ch & dh; + cdl = cl & dl; + majh = cdh ^ (ch & ah) ^ dah; + majl = cdl ^ (cl & al) ^ dal; + + chh = (gh & hh) ^ (~gh & eh); + chl = (gl & hl) ^ (~gl & el); + + t1h = blocks[j + 4]; + t1l = blocks[j + 5]; + t2h = K[j + 4]; + t2l = K[j + 5]; + + c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (fl & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (fh & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16); + + t1h = (c4 << 16) | (c3 & 0xffff); + t1l = (c2 << 16) | (c1 & 0xffff); + + c1 = (majl & 0xffff) + (s0l & 0xffff); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + + t2h = (c4 << 16) | (c3 & 0xffff); + t2l = (c2 << 16) | (c1 & 0xffff); + + c1 = (bl & 0xffff) + (t1l & 0xffff); + c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (bh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + fh = (c4 << 16) | (c3 & 0xffff); + fl = (c2 << 16) | (c1 & 0xffff); + + c1 = (t2l & 0xffff) + (t1l & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + bh = (c4 << 16) | (c3 & 0xffff); + bl = (c2 << 16) | (c1 & 0xffff); + + s0h = ((bh >>> 28) | (bl << 4)) ^ ((bl >>> 2) | (bh << 30)) ^ ((bl >>> 7) | (bh << 25)); + s0l = ((bl >>> 28) | (bh << 4)) ^ ((bh >>> 2) | (bl << 30)) ^ ((bh >>> 7) | (bl << 25)); + + s1h = ((fh >>> 14) | (fl << 18)) ^ ((fh >>> 18) | (fl << 14)) ^ ((fl >>> 9) | (fh << 23)); + s1l = ((fl >>> 14) | (fh << 18)) ^ ((fl >>> 18) | (fh << 14)) ^ ((fh >>> 9) | (fl << 23)); + + bch = bh & ch; + bcl = bl & cl; + majh = bch ^ (bh & dh) ^ cdh; + majl = bcl ^ (bl & dl) ^ cdl; + + chh = (fh & gh) ^ (~fh & hh); + chl = (fl & gl) ^ (~fl & hl); + + t1h = blocks[j + 6]; + t1l = blocks[j + 7]; + t2h = K[j + 6]; + t2l = K[j + 7]; + + c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (el & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (eh & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16); + + t1h = (c4 << 16) | (c3 & 0xffff); + t1l = (c2 << 16) | (c1 & 0xffff); + + c1 = (majl & 0xffff) + (s0l & 0xffff); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + + t2h = (c4 << 16) | (c3 & 0xffff); + t2l = (c2 << 16) | (c1 & 0xffff); + + c1 = (al & 0xffff) + (t1l & 0xffff); + c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (ah & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + eh = (c4 << 16) | (c3 & 0xffff); + el = (c2 << 16) | (c1 & 0xffff); + + c1 = (t2l & 0xffff) + (t1l & 0xffff); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + + ah = (c4 << 16) | (c3 & 0xffff); + al = (c2 << 16) | (c1 & 0xffff); + } + + c1 = (h0l & 0xffff) + (al & 0xffff); + c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16); + c3 = (h0h & 0xffff) + (ah & 0xffff) + (c2 >>> 16); + c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16); + + this.#h0h = (c4 << 16) | (c3 & 0xffff); + this.#h0l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h1l & 0xffff) + (bl & 0xffff); + c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16); + c3 = (h1h & 0xffff) + (bh & 0xffff) + (c2 >>> 16); + c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16); + + this.#h1h = (c4 << 16) | (c3 & 0xffff); + this.#h1l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h2l & 0xffff) + (cl & 0xffff); + c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16); + c3 = (h2h & 0xffff) + (ch & 0xffff) + (c2 >>> 16); + c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16); + + this.#h2h = (c4 << 16) | (c3 & 0xffff); + this.#h2l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h3l & 0xffff) + (dl & 0xffff); + c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16); + c3 = (h3h & 0xffff) + (dh & 0xffff) + (c2 >>> 16); + c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16); + + this.#h3h = (c4 << 16) | (c3 & 0xffff); + this.#h3l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h4l & 0xffff) + (el & 0xffff); + c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16); + c3 = (h4h & 0xffff) + (eh & 0xffff) + (c2 >>> 16); + c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16); + + this.#h4h = (c4 << 16) | (c3 & 0xffff); + this.#h4l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h5l & 0xffff) + (fl & 0xffff); + c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16); + c3 = (h5h & 0xffff) + (fh & 0xffff) + (c2 >>> 16); + c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16); + + this.#h5h = (c4 << 16) | (c3 & 0xffff); + this.#h5l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h6l & 0xffff) + (gl & 0xffff); + c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16); + c3 = (h6h & 0xffff) + (gh & 0xffff) + (c2 >>> 16); + c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16); + + this.#h6h = (c4 << 16) | (c3 & 0xffff); + this.#h6l = (c2 << 16) | (c1 & 0xffff); + + c1 = (h7l & 0xffff) + (hl & 0xffff); + c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16); + c3 = (h7h & 0xffff) + (hh & 0xffff) + (c2 >>> 16); + c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16); + + this.#h7h = (c4 << 16) | (c3 & 0xffff); + this.#h7l = (c2 << 16) | (c1 & 0xffff); + } + + hex(): string { + this.finalize(); + const + h0h = this.#h0h, h0l = this.#h0l, h1h = this.#h1h, h1l = this.#h1l, h2h = this.#h2h, h2l = this.#h2l, + h3h = this.#h3h, h3l = this.#h3l, h4h = this.#h4h, h4l = this.#h4l, h5h = this.#h5h, h5l = this.#h5l, + h6h = this.#h6h, h6l = this.#h6l, h7h = this.#h7h, h7l = this.#h7l, bits = this.#bits; + let hex = + HEX_CHARS[(h0h >> 28) & 0x0f] + HEX_CHARS[(h0h >> 24) & 0x0f] + + HEX_CHARS[(h0h >> 20) & 0x0f] + HEX_CHARS[(h0h >> 16) & 0x0f] + + HEX_CHARS[(h0h >> 12) & 0x0f] + HEX_CHARS[(h0h >> 8) & 0x0f] + + HEX_CHARS[(h0h >> 4) & 0x0f] + HEX_CHARS[h0h & 0x0f] + + HEX_CHARS[(h0l >> 28) & 0x0f] + HEX_CHARS[(h0l >> 24) & 0x0f] + + HEX_CHARS[(h0l >> 20) & 0x0f] + HEX_CHARS[(h0l >> 16) & 0x0f] + + HEX_CHARS[(h0l >> 12) & 0x0f] + HEX_CHARS[(h0l >> 8) & 0x0f] + + HEX_CHARS[(h0l >> 4) & 0x0f] + HEX_CHARS[h0l & 0x0f] + + HEX_CHARS[(h1h >> 28) & 0x0f] + HEX_CHARS[(h1h >> 24) & 0x0f] + + HEX_CHARS[(h1h >> 20) & 0x0f] + HEX_CHARS[(h1h >> 16) & 0x0f] + + HEX_CHARS[(h1h >> 12) & 0x0f] + HEX_CHARS[(h1h >> 8) & 0x0f] + + HEX_CHARS[(h1h >> 4) & 0x0f] + HEX_CHARS[h1h & 0x0f] + + HEX_CHARS[(h1l >> 28) & 0x0f] + HEX_CHARS[(h1l >> 24) & 0x0f] + + HEX_CHARS[(h1l >> 20) & 0x0f] + HEX_CHARS[(h1l >> 16) & 0x0f] + + HEX_CHARS[(h1l >> 12) & 0x0f] + HEX_CHARS[(h1l >> 8) & 0x0f] + + HEX_CHARS[(h1l >> 4) & 0x0f] + HEX_CHARS[h1l & 0x0f] + + HEX_CHARS[(h2h >> 28) & 0x0f] + HEX_CHARS[(h2h >> 24) & 0x0f] + + HEX_CHARS[(h2h >> 20) & 0x0f] + HEX_CHARS[(h2h >> 16) & 0x0f] + + HEX_CHARS[(h2h >> 12) & 0x0f] + HEX_CHARS[(h2h >> 8) & 0x0f] + + HEX_CHARS[(h2h >> 4) & 0x0f] + HEX_CHARS[h2h & 0x0f] + + HEX_CHARS[(h2l >> 28) & 0x0f] + HEX_CHARS[(h2l >> 24) & 0x0f] + + HEX_CHARS[(h2l >> 20) & 0x0f] + HEX_CHARS[(h2l >> 16) & 0x0f] + + HEX_CHARS[(h2l >> 12) & 0x0f] + HEX_CHARS[(h2l >> 8) & 0x0f] + + HEX_CHARS[(h2l >> 4) & 0x0f] + HEX_CHARS[h2l & 0x0f] + + HEX_CHARS[(h3h >> 28) & 0x0f] + HEX_CHARS[(h3h >> 24) & 0x0f] + + HEX_CHARS[(h3h >> 20) & 0x0f] + HEX_CHARS[(h3h >> 16) & 0x0f] + + HEX_CHARS[(h3h >> 12) & 0x0f] + HEX_CHARS[(h3h >> 8) & 0x0f] + + HEX_CHARS[(h3h >> 4) & 0x0f] + HEX_CHARS[h3h & 0x0f]; + if (bits >= 256) { + hex += + HEX_CHARS[(h3l >> 28) & 0x0f] + HEX_CHARS[(h3l >> 24) & 0x0f] + + HEX_CHARS[(h3l >> 20) & 0x0f] + HEX_CHARS[(h3l >> 16) & 0x0f] + + HEX_CHARS[(h3l >> 12) & 0x0f] + HEX_CHARS[(h3l >> 8) & 0x0f] + + HEX_CHARS[(h3l >> 4) & 0x0f] + HEX_CHARS[h3l & 0x0f]; + } + if (bits >= 384) { + hex += + HEX_CHARS[(h4h >> 28) & 0x0f] + HEX_CHARS[(h4h >> 24) & 0x0f] + + HEX_CHARS[(h4h >> 20) & 0x0f] + HEX_CHARS[(h4h >> 16) & 0x0f] + + HEX_CHARS[(h4h >> 12) & 0x0f] + HEX_CHARS[(h4h >> 8) & 0x0f] + + HEX_CHARS[(h4h >> 4) & 0x0f] + HEX_CHARS[h4h & 0x0f] + + HEX_CHARS[(h4l >> 28) & 0x0f] + HEX_CHARS[(h4l >> 24) & 0x0f] + + HEX_CHARS[(h4l >> 20) & 0x0f] + HEX_CHARS[(h4l >> 16) & 0x0f] + + HEX_CHARS[(h4l >> 12) & 0x0f] + HEX_CHARS[(h4l >> 8) & 0x0f] + + HEX_CHARS[(h4l >> 4) & 0x0f] + HEX_CHARS[h4l & 0x0f] + + HEX_CHARS[(h5h >> 28) & 0x0f] + HEX_CHARS[(h5h >> 24) & 0x0f] + + HEX_CHARS[(h5h >> 20) & 0x0f] + HEX_CHARS[(h5h >> 16) & 0x0f] + + HEX_CHARS[(h5h >> 12) & 0x0f] + HEX_CHARS[(h5h >> 8) & 0x0f] + + HEX_CHARS[(h5h >> 4) & 0x0f] + HEX_CHARS[h5h & 0x0f] + + HEX_CHARS[(h5l >> 28) & 0x0f] + HEX_CHARS[(h5l >> 24) & 0x0f] + + HEX_CHARS[(h5l >> 20) & 0x0f] + HEX_CHARS[(h5l >> 16) & 0x0f] + + HEX_CHARS[(h5l >> 12) & 0x0f] + HEX_CHARS[(h5l >> 8) & 0x0f] + + HEX_CHARS[(h5l >> 4) & 0x0f] + HEX_CHARS[h5l & 0x0f]; + } + if (bits === 512) { + hex += + HEX_CHARS[(h6h >> 28) & 0x0f] + HEX_CHARS[(h6h >> 24) & 0x0f] + + HEX_CHARS[(h6h >> 20) & 0x0f] + HEX_CHARS[(h6h >> 16) & 0x0f] + + HEX_CHARS[(h6h >> 12) & 0x0f] + HEX_CHARS[(h6h >> 8) & 0x0f] + + HEX_CHARS[(h6h >> 4) & 0x0f] + HEX_CHARS[h6h & 0x0f] + + HEX_CHARS[(h6l >> 28) & 0x0f] + HEX_CHARS[(h6l >> 24) & 0x0f] + + HEX_CHARS[(h6l >> 20) & 0x0f] + HEX_CHARS[(h6l >> 16) & 0x0f] + + HEX_CHARS[(h6l >> 12) & 0x0f] + HEX_CHARS[(h6l >> 8) & 0x0f] + + HEX_CHARS[(h6l >> 4) & 0x0f] + HEX_CHARS[h6l & 0x0f] + + HEX_CHARS[(h7h >> 28) & 0x0f] + HEX_CHARS[(h7h >> 24) & 0x0f] + + HEX_CHARS[(h7h >> 20) & 0x0f] + HEX_CHARS[(h7h >> 16) & 0x0f] + + HEX_CHARS[(h7h >> 12) & 0x0f] + HEX_CHARS[(h7h >> 8) & 0x0f] + + HEX_CHARS[(h7h >> 4) & 0x0f] + HEX_CHARS[h7h & 0x0f] + + HEX_CHARS[(h7l >> 28) & 0x0f] + HEX_CHARS[(h7l >> 24) & 0x0f] + + HEX_CHARS[(h7l >> 20) & 0x0f] + HEX_CHARS[(h7l >> 16) & 0x0f] + + HEX_CHARS[(h7l >> 12) & 0x0f] + HEX_CHARS[(h7l >> 8) & 0x0f] + + HEX_CHARS[(h7l >> 4) & 0x0f] + HEX_CHARS[h7l & 0x0f]; + } + return hex; + } + + toString(): string { + return this.hex(); + } + + digest(): number[] { + this.finalize(); + const + h0h = this.#h0h, h0l = this.#h0l, h1h = this.#h1h, h1l = this.#h1l, h2h = this.#h2h, h2l = this.#h2l, + h3h = this.#h3h, h3l = this.#h3l, h4h = this.#h4h, h4l = this.#h4l, h5h = this.#h5h, h5l = this.#h5l, + h6h = this.#h6h, h6l = this.#h6l, h7h = this.#h7h, h7l = this.#h7l, bits = this.#bits; + const arr = [ + (h0h >> 24) & 0xff, (h0h >> 16) & 0xff, (h0h >> 8) & 0xff, h0h & 0xff, + (h0l >> 24) & 0xff, (h0l >> 16) & 0xff, (h0l >> 8) & 0xff, h0l & 0xff, + (h1h >> 24) & 0xff, (h1h >> 16) & 0xff, (h1h >> 8) & 0xff, h1h & 0xff, + (h1l >> 24) & 0xff, (h1l >> 16) & 0xff, (h1l >> 8) & 0xff, h1l & 0xff, + (h2h >> 24) & 0xff, (h2h >> 16) & 0xff, (h2h >> 8) & 0xff, h2h & 0xff, + (h2l >> 24) & 0xff, (h2l >> 16) & 0xff, (h2l >> 8) & 0xff, h2l & 0xff, + (h3h >> 24) & 0xff, (h3h >> 16) & 0xff, (h3h >> 8) & 0xff, h3h & 0xff + ]; + if (bits >= 256) { + arr.push((h3l >> 24) & 0xff, (h3l >> 16) & 0xff, (h3l >> 8) & 0xff, h3l & 0xff); + } + if (bits >= 384) { + arr.push( + (h4h >> 24) & 0xff, (h4h >> 16) & 0xff, (h4h >> 8) & 0xff, h4h & 0xff, + (h4l >> 24) & 0xff, (h4l >> 16) & 0xff, (h4l >> 8) & 0xff, h4l & 0xff, + (h5h >> 24) & 0xff, (h5h >> 16) & 0xff, (h5h >> 8) & 0xff, h5h & 0xff, + (h5l >> 24) & 0xff, (h5l >> 16) & 0xff, (h5l >> 8) & 0xff, h5l & 0xff + ); + } + if (bits === 512) { + arr.push( + (h6h >> 24) & 0xff, (h6h >> 16) & 0xff, (h6h >> 8) & 0xff, h6h & 0xff, + (h6l >> 24) & 0xff, (h6l >> 16) & 0xff, (h6l >> 8) & 0xff, h6l & 0xff, + (h7h >> 24) & 0xff, (h7h >> 16) & 0xff, (h7h >> 8) & 0xff, h7h & 0xff, + (h7l >> 24) & 0xff, (h7l >> 16) & 0xff, (h7l >> 8) & 0xff, h7l & 0xff + ); + } + return arr; + } + + array(): number[] { + return this.digest(); + } + + arrayBuffer(): ArrayBuffer { + this.finalize(); + const bits = this.#bits; + const buffer = new ArrayBuffer(bits / 8); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0h); + dataView.setUint32(4, this.#h0l); + dataView.setUint32(8, this.#h1h); + dataView.setUint32(12, this.#h1l); + dataView.setUint32(16, this.#h2h); + dataView.setUint32(20, this.#h2l); + dataView.setUint32(24, this.#h3h); + if (bits >= 256) { + dataView.setUint32(28, this.#h3l); + } + if (bits >= 384) { + dataView.setUint32(32, this.#h4h); + dataView.setUint32(36, this.#h4l); + dataView.setUint32(40, this.#h5h); + dataView.setUint32(44, this.#h5l); + } + if (bits === 512) { + dataView.setUint32(48, this.#h6h); + dataView.setUint32(52, this.#h6l); + dataView.setUint32(56, this.#h7h); + dataView.setUint32(60, this.#h7l); + } + return buffer; + } +} + +export class HmacSha512 extends Sha512 { + #inner: boolean; + #bits: number; + #oKeyPad: number[]; + #sharedMemory: boolean; + + constructor(secretKey: Message, bits = 512, sharedMemory = false) { + super(bits, sharedMemory); + + let key: number[] | Uint8Array; + + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else if (typeof secretKey === "string") { + const bytes: number[] = []; + const length = secretKey.length; + let index = 0; + let code: number; + for (let i = 0; i < length; ++i) { + code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + key = secretKey; + } + if (key.length > 128) { + key = new Sha512(bits, true).update(key).array(); + } + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 128; ++i) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + this.update(iKeyPad); + this.#inner = true; + this.#bits = bits; + this.#oKeyPad = oKeyPad; + this.#sharedMemory = sharedMemory; + } + + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#bits, this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/406404073e6f71433b759ce6d6aefb1c65d1ebeb.ts b/bundler/tests/.cache/deno/406404073e6f71433b759ce6d6aefb1c65d1ebeb.ts new file mode 100644 index 00000000000..31a1033631a --- /dev/null +++ b/bundler/tests/.cache/deno/406404073e6f71433b759ce6d6aefb1c65d1ebeb.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_quote.js + + +export default function _quote(s) { + var escaped = s + .replace(/\\/g, '\\\\') + .replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace + .replace(/\f/g, '\\f') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\t/g, '\\t') + .replace(/\v/g, '\\v') + .replace(/\0/g, '\\0'); + + return '"' + escaped.replace(/"/g, '\\"') + '"'; +} diff --git a/bundler/tests/.cache/deno/40db14d1cc7c8ffff6230ffb9de8c55ce41c463a.ts b/bundler/tests/.cache/deno/40db14d1cc7c8ffff6230ffb9de8c55ce41c463a.ts new file mode 100644 index 00000000000..9b2952362b3 --- /dev/null +++ b/bundler/tests/.cache/deno/40db14d1cc7c8ffff6230ffb9de8c55ce41c463a.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeRight.js + + +import _objectAssign from './internal/_objectAssign.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey + * @example + * + * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * const withDefaults = R.mergeRight({x: 0, y: 0}); + * withDefaults({y: 2}); //=> {x: 0, y: 2} + * @symb R.mergeRight(a, b) = {...a, ...b} + */ +var mergeRight = _curry2(function mergeRight(l, r) { + return _objectAssign({}, l, r); +}); +export default mergeRight; diff --git a/bundler/tests/.cache/deno/4162f7ba3c0c35cb83344d48c88f402fc435f509.ts b/bundler/tests/.cache/deno/4162f7ba3c0c35cb83344d48c88f402fc435f509.ts new file mode 100644 index 00000000000..e6285b4e094 --- /dev/null +++ b/bundler/tests/.cache/deno/4162f7ba3c0c35cb83344d48c88f402fc435f509.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/case/normalCase.ts + + +import lowerCase from "./lowerCase.ts"; + +import nonWordRegexp from "./vendor/nonWordRegexp.ts"; +import camelCaseRegexp from "./vendor/camelCaseRegexp.ts"; +import camelCaseUpperRegexp from "./vendor/camelCaseUpperRegexp.ts"; + +export default function normalCase( + str: string, + locale?: string, + replacement?: string, +): string { + if (str == null) { + return ""; + } + + replacement = typeof replacement !== "string" ? " " : replacement; + + function replace(match: string, index: number, value: string): string { + if (index === 0 || index === value.length - match.length) { + return ""; + } + + return replacement!; + } + + str = String(str) + // Support camel case ("camelCase" -> "camel Case"). + .replace(camelCaseRegexp, "$1 $2") + // Support odd camel case ("CAMELCase" -> "CAMEL Case"). + .replace(camelCaseUpperRegexp, "$1 $2") + // Remove all non-word characters and replace with a single space. + .replace(nonWordRegexp, replace); + + // Lower case the entire string. + return lowerCase(str, locale); +} diff --git a/bundler/tests/.cache/deno/418160cc50021cdc47ad89dea4da4b4d843efc25.ts b/bundler/tests/.cache/deno/418160cc50021cdc47ad89dea4da4b4d843efc25.ts new file mode 100644 index 00000000000..4a05dad9ffc --- /dev/null +++ b/bundler/tests/.cache/deno/418160cc50021cdc47ad89dea4da4b4d843efc25.ts @@ -0,0 +1,534 @@ +// Loaded from https://deno.land/std@0.84.0/ws/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { decode, encode } from "../encoding/utf8.ts"; +import { hasOwnProperty } from "../_util/has_own_property.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { readLong, readShort, sliceLongToBytes } from "../io/ioutil.ts"; +import { Sha1 } from "../hash/sha1.ts"; +import { writeResponse } from "../http/_io.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { Deferred, deferred } from "../async/deferred.ts"; +import { assert } from "../_util/assert.ts"; +import { concat } from "../bytes/mod.ts"; + +export enum OpCode { + Continue = 0x0, + TextFrame = 0x1, + BinaryFrame = 0x2, + Close = 0x8, + Ping = 0x9, + Pong = 0xa, +} + +export type WebSocketEvent = + | string + | Uint8Array + | WebSocketCloseEvent // Received after closing connection finished. + | WebSocketPingEvent // Received after pong frame responded. + | WebSocketPongEvent; + +export interface WebSocketCloseEvent { + code: number; + reason?: string; +} + +/** Returns true if input value is a WebSocketCloseEvent, false otherwise. */ +export function isWebSocketCloseEvent( + a: WebSocketEvent, +): a is WebSocketCloseEvent { + return hasOwnProperty(a, "code"); +} + +export type WebSocketPingEvent = ["ping", Uint8Array]; + +/** Returns true if input value is a WebSocketPingEvent, false otherwise. */ +export function isWebSocketPingEvent( + a: WebSocketEvent, +): a is WebSocketPingEvent { + return Array.isArray(a) && a[0] === "ping" && a[1] instanceof Uint8Array; +} + +export type WebSocketPongEvent = ["pong", Uint8Array]; + +/** Returns true if input value is a WebSocketPongEvent, false otherwise. */ +export function isWebSocketPongEvent( + a: WebSocketEvent, +): a is WebSocketPongEvent { + return Array.isArray(a) && a[0] === "pong" && a[1] instanceof Uint8Array; +} + +export type WebSocketMessage = string | Uint8Array; + +export interface WebSocketFrame { + isLastFrame: boolean; + opcode: OpCode; + mask?: Uint8Array; + payload: Uint8Array; +} + +export interface WebSocket extends AsyncIterable { + readonly conn: Deno.Conn; + readonly isClosed: boolean; + + [Symbol.asyncIterator](): AsyncIterableIterator; + + /** + * @throws `Deno.errors.ConnectionReset` + */ + send(data: WebSocketMessage): Promise; + + /** + * @param data + * @throws `Deno.errors.ConnectionReset` + */ + ping(data?: WebSocketMessage): Promise; + + /** Close connection after sending close frame to peer. + * This is canonical way of disconnection but it may hang because of peer's response delay. + * Default close code is 1000 (Normal Closure) + * @throws `Deno.errors.ConnectionReset` + */ + close(): Promise; + close(code: number): Promise; + close(code: number, reason: string): Promise; + + /** Close connection forcely without sending close frame to peer. + * This is basically undesirable way of disconnection. Use carefully. */ + closeForce(): void; +} + +/** Unmask masked websocket payload */ +export function unmask(payload: Uint8Array, mask?: Uint8Array): void { + if (mask) { + for (let i = 0, len = payload.length; i < len; i++) { + payload[i] ^= mask[i & 3]; + } + } +} + +/** Write WebSocket frame to inputted writer. */ +export async function writeFrame( + frame: WebSocketFrame, + writer: Deno.Writer, +): Promise { + const payloadLength = frame.payload.byteLength; + let header: Uint8Array; + const hasMask = frame.mask ? 0x80 : 0; + if (frame.mask && frame.mask.byteLength !== 4) { + throw new Error( + "invalid mask. mask must be 4 bytes: length=" + frame.mask.byteLength, + ); + } + if (payloadLength < 126) { + header = new Uint8Array([0x80 | frame.opcode, hasMask | payloadLength]); + } else if (payloadLength < 0xffff) { + header = new Uint8Array([ + 0x80 | frame.opcode, + hasMask | 0b01111110, + payloadLength >>> 8, + payloadLength & 0x00ff, + ]); + } else { + header = new Uint8Array([ + 0x80 | frame.opcode, + hasMask | 0b01111111, + ...sliceLongToBytes(payloadLength), + ]); + } + if (frame.mask) { + header = concat(header, frame.mask); + } + unmask(frame.payload, frame.mask); + header = concat(header, frame.payload); + const w = BufWriter.create(writer); + await w.write(header); + await w.flush(); +} + +/** Read websocket frame from given BufReader + * @throws `Deno.errors.UnexpectedEof` When peer closed connection without close frame + * @throws `Error` Frame is invalid + */ +export async function readFrame(buf: BufReader): Promise { + let b = await buf.readByte(); + assert(b !== null); + let isLastFrame = false; + switch (b >>> 4) { + case 0b1000: + isLastFrame = true; + break; + case 0b0000: + isLastFrame = false; + break; + default: + throw new Error("invalid signature"); + } + const opcode = b & 0x0f; + // has_mask & payload + b = await buf.readByte(); + assert(b !== null); + const hasMask = b >>> 7; + let payloadLength = b & 0b01111111; + if (payloadLength === 126) { + const l = await readShort(buf); + assert(l !== null); + payloadLength = l; + } else if (payloadLength === 127) { + const l = await readLong(buf); + assert(l !== null); + payloadLength = Number(l); + } + // mask + let mask: Uint8Array | undefined; + if (hasMask) { + mask = new Uint8Array(4); + assert((await buf.readFull(mask)) !== null); + } + // payload + const payload = new Uint8Array(payloadLength); + assert((await buf.readFull(payload)) !== null); + return { + isLastFrame, + opcode, + mask, + payload, + }; +} + +class WebSocketImpl implements WebSocket { + readonly conn: Deno.Conn; + private readonly mask?: Uint8Array; + private readonly bufReader: BufReader; + private readonly bufWriter: BufWriter; + private sendQueue: Array<{ + frame: WebSocketFrame; + d: Deferred; + }> = []; + + constructor({ + conn, + bufReader, + bufWriter, + mask, + }: { + conn: Deno.Conn; + bufReader?: BufReader; + bufWriter?: BufWriter; + mask?: Uint8Array; + }) { + this.conn = conn; + this.mask = mask; + this.bufReader = bufReader || new BufReader(conn); + this.bufWriter = bufWriter || new BufWriter(conn); + } + + async *[Symbol.asyncIterator](): AsyncIterableIterator { + let frames: WebSocketFrame[] = []; + let payloadsLength = 0; + while (!this._isClosed) { + let frame: WebSocketFrame; + try { + frame = await readFrame(this.bufReader); + } catch (e) { + this.ensureSocketClosed(); + break; + } + unmask(frame.payload, frame.mask); + switch (frame.opcode) { + case OpCode.TextFrame: + case OpCode.BinaryFrame: + case OpCode.Continue: + frames.push(frame); + payloadsLength += frame.payload.length; + if (frame.isLastFrame) { + const concat = new Uint8Array(payloadsLength); + let offs = 0; + for (const frame of frames) { + concat.set(frame.payload, offs); + offs += frame.payload.length; + } + if (frames[0].opcode === OpCode.TextFrame) { + // text + yield decode(concat); + } else { + // binary + yield concat; + } + frames = []; + payloadsLength = 0; + } + break; + case OpCode.Close: { + // [0x12, 0x34] -> 0x1234 + const code = (frame.payload[0] << 8) | frame.payload[1]; + const reason = decode( + frame.payload.subarray(2, frame.payload.length), + ); + await this.close(code, reason); + yield { code, reason }; + return; + } + case OpCode.Ping: + await this.enqueue({ + opcode: OpCode.Pong, + payload: frame.payload, + isLastFrame: true, + }); + yield ["ping", frame.payload] as WebSocketPingEvent; + break; + case OpCode.Pong: + yield ["pong", frame.payload] as WebSocketPongEvent; + break; + default: + } + } + } + + private dequeue(): void { + const [entry] = this.sendQueue; + if (!entry) return; + if (this._isClosed) return; + const { d, frame } = entry; + writeFrame(frame, this.bufWriter) + .then(() => d.resolve()) + .catch((e) => d.reject(e)) + .finally(() => { + this.sendQueue.shift(); + this.dequeue(); + }); + } + + private enqueue(frame: WebSocketFrame): Promise { + if (this._isClosed) { + throw new Deno.errors.ConnectionReset("Socket has already been closed"); + } + const d = deferred(); + this.sendQueue.push({ d, frame }); + if (this.sendQueue.length === 1) { + this.dequeue(); + } + return d; + } + + send(data: WebSocketMessage): Promise { + const opcode = typeof data === "string" + ? OpCode.TextFrame + : OpCode.BinaryFrame; + const payload = typeof data === "string" ? encode(data) : data; + const isLastFrame = true; + const frame = { + isLastFrame, + opcode, + payload, + mask: this.mask, + }; + return this.enqueue(frame); + } + + ping(data: WebSocketMessage = ""): Promise { + const payload = typeof data === "string" ? encode(data) : data; + const frame = { + isLastFrame: true, + opcode: OpCode.Ping, + mask: this.mask, + payload, + }; + return this.enqueue(frame); + } + + private _isClosed = false; + get isClosed(): boolean { + return this._isClosed; + } + + async close(code = 1000, reason?: string): Promise { + try { + const header = [code >>> 8, code & 0x00ff]; + let payload: Uint8Array; + if (reason) { + const reasonBytes = encode(reason); + payload = new Uint8Array(2 + reasonBytes.byteLength); + payload.set(header); + payload.set(reasonBytes, 2); + } else { + payload = new Uint8Array(header); + } + await this.enqueue({ + isLastFrame: true, + opcode: OpCode.Close, + mask: this.mask, + payload, + }); + } catch (e) { + throw e; + } finally { + this.ensureSocketClosed(); + } + } + + closeForce(): void { + this.ensureSocketClosed(); + } + + private ensureSocketClosed(): void { + if (this.isClosed) return; + try { + this.conn.close(); + } catch (e) { + console.error(e); + } finally { + this._isClosed = true; + const rest = this.sendQueue; + this.sendQueue = []; + rest.forEach((e) => + e.d.reject( + new Deno.errors.ConnectionReset("Socket has already been closed"), + ) + ); + } + } +} + +/** Returns true if input headers are usable for WebSocket, otherwise false. */ +export function acceptable(req: { headers: Headers }): boolean { + const upgrade = req.headers.get("upgrade"); + if (!upgrade || upgrade.toLowerCase() !== "websocket") { + return false; + } + const secKey = req.headers.get("sec-websocket-key"); + return ( + req.headers.has("sec-websocket-key") && + typeof secKey === "string" && + secKey.length > 0 + ); +} + +const kGUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +/** Create value of Sec-WebSocket-Accept header from inputted nonce. */ +export function createSecAccept(nonce: string): string { + const sha1 = new Sha1(); + sha1.update(nonce + kGUID); + const bytes = sha1.digest(); + return btoa(String.fromCharCode(...bytes)); +} + +/** Upgrade inputted TCP connection into WebSocket connection. */ +export async function acceptWebSocket(req: { + conn: Deno.Conn; + bufWriter: BufWriter; + bufReader: BufReader; + headers: Headers; +}): Promise { + const { conn, headers, bufReader, bufWriter } = req; + if (acceptable(req)) { + const sock = new WebSocketImpl({ conn, bufReader, bufWriter }); + const secKey = headers.get("sec-websocket-key"); + if (typeof secKey !== "string") { + throw new Error("sec-websocket-key is not provided"); + } + const secAccept = createSecAccept(secKey); + const newHeaders = new Headers({ + Upgrade: "websocket", + Connection: "Upgrade", + "Sec-WebSocket-Accept": secAccept, + }); + const secProtocol = headers.get("sec-websocket-protocol"); + if (typeof secProtocol === "string") { + newHeaders.set("Sec-WebSocket-Protocol", secProtocol); + } + const secVersion = headers.get("sec-websocket-version"); + if (typeof secVersion === "string") { + newHeaders.set("Sec-WebSocket-Version", secVersion); + } + await writeResponse(bufWriter, { + status: 101, + headers: newHeaders, + }); + return sock; + } + throw new Error("request is not acceptable"); +} + +const kSecChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.~_"; + +/** Returns base64 encoded 16 bytes string for Sec-WebSocket-Key header. */ +export function createSecKey(): string { + let key = ""; + for (let i = 0; i < 16; i++) { + const j = Math.floor(Math.random() * kSecChars.length); + key += kSecChars[j]; + } + return btoa(key); +} + +export async function handshake( + url: URL, + headers: Headers, + bufReader: BufReader, + bufWriter: BufWriter, +): Promise { + const { hostname, pathname, search } = url; + const key = createSecKey(); + + if (!headers.has("host")) { + headers.set("host", hostname); + } + headers.set("upgrade", "websocket"); + headers.set("connection", "upgrade"); + headers.set("sec-websocket-key", key); + headers.set("sec-websocket-version", "13"); + + let headerStr = `GET ${pathname}${search} HTTP/1.1\r\n`; + for (const [key, value] of headers) { + headerStr += `${key}: ${value}\r\n`; + } + headerStr += "\r\n"; + + await bufWriter.write(encode(headerStr)); + await bufWriter.flush(); + + const tpReader = new TextProtoReader(bufReader); + const statusLine = await tpReader.readLine(); + if (statusLine === null) { + throw new Deno.errors.UnexpectedEof(); + } + const m = statusLine.match(/^(?\S+) (?\S+) /); + if (!m) { + throw new Error("ws: invalid status line: " + statusLine); + } + + assert(m.groups); + const { version, statusCode } = m.groups; + if (version !== "HTTP/1.1" || statusCode !== "101") { + throw new Error( + `ws: server didn't accept handshake: ` + + `version=${version}, statusCode=${statusCode}`, + ); + } + + const responseHeaders = await tpReader.readMIMEHeader(); + if (responseHeaders === null) { + throw new Deno.errors.UnexpectedEof(); + } + + const expectedSecAccept = createSecAccept(key); + const secAccept = responseHeaders.get("sec-websocket-accept"); + if (secAccept !== expectedSecAccept) { + throw new Error( + `ws: unexpected sec-websocket-accept header: ` + + `expected=${expectedSecAccept}, actual=${secAccept}`, + ); + } +} + +export function createWebSocket(params: { + conn: Deno.Conn; + bufWriter?: BufWriter; + bufReader?: BufReader; + mask?: Uint8Array; +}): WebSocket { + return new WebSocketImpl(params); +} diff --git a/bundler/tests/.cache/deno/41d365a8ae0e9f5520026d8ac43f8bec2f554a5c.ts b/bundler/tests/.cache/deno/41d365a8ae0e9f5520026d8ac43f8bec2f554a5c.ts new file mode 100644 index 00000000000..078affe968a --- /dev/null +++ b/bundler/tests/.cache/deno/41d365a8ae0e9f5520026d8ac43f8bec2f554a5c.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/negotiation/common.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export interface Specificity { + i: number; + o?: number; + q: number; + s?: number; +} + +export function compareSpecs(a: Specificity, b: Specificity): number { + return ( + b.q - a.q || + (b.s ?? 0) - (a.s ?? 0) || + (a.o ?? 0) - (b.o ?? 0) || + a.i - b.i || + 0 + ); +} + +export function isQuality(spec: Specificity): boolean { + return spec.q > 0; +} diff --git a/bundler/tests/.cache/deno/427901ad1cd16bf868fc4668b6cb7c01d221e744.ts b/bundler/tests/.cache/deno/427901ad1cd16bf868fc4668b6cb7c01d221e744.ts new file mode 100644 index 00000000000..db817e9428f --- /dev/null +++ b/bundler/tests/.cache/deno/427901ad1cd16bf868fc4668b6cb7c01d221e744.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/prop.js + + +import _curry2 from './internal/_curry2.js'; +import _isInteger from './internal/_isInteger.js'; +import nth from './nth.js'; + + +/** + * Returns a function that when supplied an object returns the indicated + * property of that object, if it exists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig Idx -> {s: a} -> a | Undefined + * @param {String|Number} p The property name or array index + * @param {Object} obj The object to query + * @return {*} The value at `obj.p`. + * @see R.path, R.props, R.pluck, R.project, R.nth + * @example + * + * R.prop('x', {x: 100}); //=> 100 + * R.prop('x', {}); //=> undefined + * R.prop(0, [100]); //=> 100 + * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4 + */ + +var prop = _curry2(function prop(p, obj) { + if (obj == null) { + return; + } + return _isInteger(p) ? nth(p, obj) : obj[p]; +}); +export default prop; diff --git a/bundler/tests/.cache/deno/428018a751e2754796c08b89c9ffbf149a799833.ts b/bundler/tests/.cache/deno/428018a751e2754796c08b89c9ffbf149a799833.ts new file mode 100644 index 00000000000..08bf9ea66bc --- /dev/null +++ b/bundler/tests/.cache/deno/428018a751e2754796c08b89c9ffbf149a799833.ts @@ -0,0 +1,106 @@ +// Loaded from https://deno.land/x/args@1.0.7/value-types.ts + + +import { + ValueType, +} from "./types.ts"; + +import { + ok, + err, +} from "./utils.ts"; + +import { + NotANumber, + NotAnInteger, + InvalidChoice, +} from "./value-errors.ts"; + +const sharedProps = (typeName: string) => ({ + [Symbol.toStringTag]: typeName, +}); + +/** Type and parser of text (string) value */ +export const Text: ValueType = { + extract: ([raw]) => ok(raw), + getTypeName: () => "text", + ...sharedProps("Text"), +}; + +/** Type and parser of all number values except NaN and Infinity */ +export const FiniteNumber: ValueType = { + extract([raw]) { + const value = Number(raw); + return isFinite(value) + ? ok(value) + : err(new NotANumber(raw)); + }, + getTypeName: () => "number", + ...sharedProps("FiniteNumber"), +}; + +/** Type and parser of all BigInt values */ +export const Integer: ValueType = { + extract([raw]) { + try { + return ok(BigInt(raw)); + } catch (error) { + return err(new NotAnInteger(raw, error)); + } + }, + getTypeName: () => "integer", + ...sharedProps("Integer"), +}; + +/** + * Create type and parser of choice (union) + * @template Value Union type of choices to make + * @param choices Choices to make + * @returns Type and parser of choices + */ +export function Choice< + Value extends number | string, +>(...choices: { + readonly value: Value; + readonly describe?: string; +}[]): ValueType { + const values = choices.map((x) => x.value); + const valueStrings = values.map((x) => String(x)); + + { // check for duplication + const duplications = valueStrings.filter((x, i) => + valueStrings.indexOf(x) !== i + ); + if (duplications.length) { + throw new RangeError(`Duplicated choices: ${duplications.join(" ")}`); + } + } + + { // check for invalid numbers + const invalidNumbers = values.filter((x) => + typeof x === "number" && !isFinite(x) + ); + if (invalidNumbers.length) { + throw new RangeError(`Invalid numbers: ${invalidNumbers.join(" ")}`); + } + } + + return { + extract([raw]) { + for (const value of values) { + if (value === raw || value === Number(raw)) return ok(value); + } + return err(new InvalidChoice(raw, values)); + }, + getTypeName: () => "choice", + help() { + let text = ""; + for (const { value, describe } of choices) { + const suffix = describe ? `${value}: ${describe}` : String(value); + text += "‣ " + suffix + "\n"; + } + return text.trim(); + }, + ...sharedProps(`Choice(${values.join(",")})`), + }; +} diff --git a/bundler/tests/.cache/deno/428ac176b112223e3c88facf799e013fc8626515.ts b/bundler/tests/.cache/deno/428ac176b112223e3c88facf799e013fc8626515.ts new file mode 100644 index 00000000000..9db2d2f98c1 --- /dev/null +++ b/bundler/tests/.cache/deno/428ac176b112223e3c88facf799e013fc8626515.ts @@ -0,0 +1,457 @@ +// Loaded from https://deno.land/std@0.84.0/hash/sha1.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; + +const blocks: number[] = []; + +export class Sha1 { + #blocks!: number[]; + #block!: number; + #start!: number; + #bytes!: number; + #hBytes!: number; + #finalized!: boolean; + #hashed!: boolean; + + #h0 = 0x67452301; + #h1 = 0xefcdab89; + #h2 = 0x98badcfe; + #h3 = 0x10325476; + #h4 = 0xc3d2e1f0; + #lastByteIndex = 0; + + constructor(sharedMemory = false) { + this.init(sharedMemory); + } + protected init(sharedMemory: boolean) { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + this.#h0 = 0x67452301; + this.#h1 = 0xefcdab89; + this.#h2 = 0x98badcfe; + this.#h3 = 0x10325476; + this.#h4 = 0xc3d2e1f0; + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + } + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) >>> 0; + this.#bytes = this.#bytes >>> 0; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + private hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f: number; + let j: number; + let t: number; + const blocks = this.#blocks; + + for (j = 16; j < 80; ++j) { + t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16]; + blocks[j] = (t << 1) | (t >>> 31); + } + + for (j = 0; j < 20; j += 5) { + f = (b & c) | (~b & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1518500249 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (~a & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1518500249 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (~e & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1518500249 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (~d & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1518500249 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (~c & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1518500249 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 40; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1859775393 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1859775393 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1859775393 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1859775393 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1859775393 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 60; j += 5) { + f = (b & c) | (b & d) | (c & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e - 1894007588 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (a & c) | (b & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d - 1894007588 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (e & b) | (a & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c - 1894007588 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (d & a) | (e & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b - 1894007588 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (c & e) | (d & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a - 1894007588 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 80; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e - 899497514 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d - 899497514 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c - 899497514 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b - 899497514 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a - 899497514 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + this.#h0 = (this.#h0 + a) >>> 0; + this.#h1 = (this.#h1 + b) >>> 0; + this.#h2 = (this.#h2 + c) >>> 0; + this.#h3 = (this.#h3 + d) >>> 0; + this.#h4 = (this.#h4 + e) >>> 0; + } + + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return ( + HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + ); + } + + toString(): string { + return this.hex(); + } + + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + ]; + } + + array(): number[] { + return this.digest(); + } + + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(20); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + + return buffer; + } +} +export class HmacSha1 extends Sha1 { + #sharedMemory: boolean; + #inner: boolean; + #oKeyPad: number[]; + constructor(secretKey: Message, sharedMemory = false) { + super(sharedMemory); + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length: number = secretKey.length; + let index = 0; + for (let i = 0; i < length; i++) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + if (key.length > 64) { + key = new Sha1(true).update(key).array(); + } + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; i++) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#sharedMemory = sharedMemory; + } + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/42a1f8f598baf2256fe7dc56ebfa5f073c5b88e2.ts b/bundler/tests/.cache/deno/42a1f8f598baf2256fe7dc56ebfa5f073c5b88e2.ts new file mode 100644 index 00000000000..85967536efc --- /dev/null +++ b/bundler/tests/.cache/deno/42a1f8f598baf2256fe7dc56ebfa5f073c5b88e2.ts @@ -0,0 +1,353 @@ +// Loaded from https://deno.land/x/oak/cookies.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +// This was heavily influenced by +// [cookies](https://github.com/pillarjs/cookies/blob/master/index.js) + +import type { KeyStack } from "./keyStack.ts"; +import type { Request } from "./request.ts"; +import type { Response } from "./response.ts"; + +export interface CookiesOptions { + keys?: KeyStack; + secure?: boolean; +} + +export interface CookiesGetOptions { + signed?: boolean; +} + +export interface CookiesSetDeleteOptions { + domain?: string; + expires?: Date; + httpOnly?: boolean; + maxAge?: number; + overwrite?: boolean; + path?: string; + secure?: boolean; + sameSite?: "strict" | "lax" | "none" | boolean; + signed?: boolean; +} + +type CookieAttributes = CookiesSetDeleteOptions; + +const matchCache: Record = {}; + +// deno-lint-ignore no-control-regex +const FIELD_CONTENT_REGEXP = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; +const KEY_REGEXP = /(?:^|;) *([^=]*)=[^;]*/g; +const SAME_SITE_REGEXP = /^(?:lax|none|strict)$/i; + +function getPattern(name: string): RegExp { + if (name in matchCache) { + return matchCache[name]; + } + + return matchCache[name] = new RegExp( + `(?:^|;) *${name.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}=([^;]*)`, + ); +} + +function pushCookie(headers: string[], cookie: Cookie): void { + if (cookie.overwrite) { + for (let i = headers.length - 1; i >= 0; i--) { + if (headers[i].indexOf(`${cookie.name}=`) === 0) { + headers.splice(i, 1); + } + } + } + headers.push(cookie.toHeader()); +} + +function validateCookieProperty( + key: string, + value: string | undefined | null, +): void { + if (value && !FIELD_CONTENT_REGEXP.test(value)) { + throw new TypeError(`The ${key} of the cookie (${value}) is invalid.`); + } +} + +class Cookie implements CookieAttributes { + domain?: string; + expires?: Date; + httpOnly = true; + maxAge?: number; + name: string; + overwrite = false; + path = "/"; + sameSite: "strict" | "lax" | "none" | boolean = false; + secure = false; + signed?: boolean; + value: string; + + /** A logical representation of a cookie, used to internally manage the + * cookie instances. */ + constructor( + name: string, + value: string | null, + attributes: CookieAttributes, + ) { + validateCookieProperty("name", name); + validateCookieProperty("value", value); + this.name = name; + this.value = value ?? ""; + Object.assign(this, attributes); + if (!this.value) { + this.expires = new Date(0); + this.maxAge = undefined; + } + + validateCookieProperty("path", this.path); + validateCookieProperty("domain", this.domain); + if ( + this.sameSite && typeof this.sameSite === "string" && + !SAME_SITE_REGEXP.test(this.sameSite) + ) { + throw new TypeError( + `The sameSite of the cookie ("${this.sameSite}") is invalid.`, + ); + } + } + + toHeader(): string { + let header = this.toString(); + if (this.maxAge) { + this.expires = new Date(Date.now() + (this.maxAge * 1000)); + } + + if (this.path) { + header += `; path=${this.path}`; + } + if (this.expires) { + header += `; expires=${this.expires.toUTCString()}`; + } + if (this.domain) { + header += `; domain=${this.domain}`; + } + if (this.sameSite) { + header += `; samesite=${ + this.sameSite === true ? "strict" : this.sameSite.toLowerCase() + }`; + } + if (this.secure) { + header += "; secure"; + } + if (this.httpOnly) { + header += "; httponly"; + } + + return header; + } + + toString(): string { + return `${this.name}=${this.value}`; + } +} + +/** An interface which allows setting and accessing cookies related to both the + * current request and response. */ +export class Cookies { + #cookieKeys?: string[]; + #keys?: KeyStack; + #request: Request; + #response: Response; + #secure?: boolean; + + #requestKeys = (): string[] => { + if (this.#cookieKeys) { + return this.#cookieKeys; + } + const result = this.#cookieKeys = [] as string[]; + const header = this.#request.headers.get("cookie"); + if (!header) { + return result; + } + let matches: RegExpExecArray | null; + while ((matches = KEY_REGEXP.exec(header))) { + const [, key] = matches; + result.push(key); + } + return result; + }; + + constructor( + request: Request, + response: Response, + options: CookiesOptions = {}, + ) { + const { keys, secure } = options; + this.#keys = keys; + this.#request = request; + this.#response = response; + this.#secure = secure; + } + + /** Set a cookie to be deleted in the response. This is a "shortcut" to + * `.set(name, null, options?)`. */ + delete(name: string, options: CookiesSetDeleteOptions = {}): boolean { + this.set(name, null, options); + return true; + } + + /** Iterate over the request's cookies, yielding up a tuple containing the + * key and the value. + * + * If there are keys set on the application, only keys and values that are + * properly signed will be returned. */ + *entries(): IterableIterator<[string, string]> { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield [key, value]; + } + } + } + + forEach( + callback: (key: string, value: string, cookies: this) => void, + // deno-lint-ignore no-explicit-any + thisArg: any = null, + ): void { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + callback.call(thisArg, key, value, this); + } + } + } + + /** Get the value of a cookie from the request. + * + * If the cookie is signed, and the signature is invalid, the cookie will + * be set to be deleted in the the response. If the signature uses an "old" + * key, the cookie will be re-signed with the current key and be added to the + * response to be updated. */ + get(name: string, options: CookiesGetOptions = {}): string | undefined { + const signed = options.signed ?? !!this.#keys; + const nameSig = `${name}.sig`; + + const header = this.#request.headers.get("cookie"); + if (!header) { + return; + } + const match = header.match(getPattern(name)); + if (!match) { + return; + } + const [, value] = match; + if (!signed) { + return value; + } + const digest = this.get(nameSig, { signed: false }); + if (!digest) { + return; + } + const data = `${name}=${value}`; + if (!this.#keys) { + throw new TypeError("keys required for signed cookies"); + } + const index = this.#keys.indexOf(data, digest); + + if (index < 0) { + this.delete(nameSig, { path: "/", signed: false }); + } else { + if (index) { + // the key has "aged" and needs to be re-signed + this.set(nameSig, this.#keys.sign(data), { signed: false }); + } + return value; + } + } + + /** Iterate over the request's cookies, yielding up the keys. + * + * If there are keys set on the application, only the keys that are properly + * signed will be returned. */ + *keys(): IterableIterator { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield key; + } + } + } + + /** Set a cookie in the response. + * + * If there are keys set in the application, cookies will be automatically + * signed, unless overridden by the set options. Cookies can be deleted by + * setting the value to `null`. */ + set( + name: string, + value: string | null, + options: CookiesSetDeleteOptions = {}, + ): this { + const request = this.#request; + const response = this.#response; + let headers = response.headers.get("Set-Cookie") ?? [] as string[]; + if (typeof headers === "string") { + headers = [headers]; + } + const secure = this.#secure !== undefined ? this.#secure : request.secure; + const signed = options.signed ?? !!this.#keys; + + if (!secure && options.secure) { + throw new TypeError( + "Cannot send secure cookie over unencrypted connection.", + ); + } + + const cookie = new Cookie(name, value, options); + cookie.secure = options.secure ?? secure; + pushCookie(headers, cookie); + + if (signed) { + if (!this.#keys) { + throw new TypeError(".keys required for signed cookies."); + } + cookie.value = this.#keys.sign(cookie.toString()); + cookie.name += ".sig"; + pushCookie(headers, cookie); + } + + for (const header of headers) { + response.headers.append("Set-Cookie", header); + } + return this; + } + + /** Iterate over the request's cookies, yielding up each value. + * + * If there are keys set on the application, only the values that are + * properly signed will be returned. */ + *values(): IterableIterator { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield value; + } + } + } + + /** Iterate over the request's cookies, yielding up a tuple containing the + * key and the value. + * + * If there are keys set on the application, only keys and values that are + * properly signed will be returned. */ + *[Symbol.iterator](): IterableIterator<[string, string]> { + const keys = this.#requestKeys(); + for (const key of keys) { + const value = this.get(key); + if (value) { + yield [key, value]; + } + } + } +} diff --git a/bundler/tests/.cache/deno/42af7bbbde622a92649e4d8f524733b0b2d69442.ts b/bundler/tests/.cache/deno/42af7bbbde622a92649e4d8f524733b0b2d69442.ts new file mode 100644 index 00000000000..19d4f1d5a08 --- /dev/null +++ b/bundler/tests/.cache/deno/42af7bbbde622a92649e4d8f524733b0b2d69442.ts @@ -0,0 +1,1004 @@ +// Loaded from https://deno.land/std/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/43454605486473f70df2c2cf3d2637b833e7e72d.ts b/bundler/tests/.cache/deno/43454605486473f70df2c2cf3d2637b833e7e72d.ts new file mode 100644 index 00000000000..e7e4613ebfa --- /dev/null +++ b/bundler/tests/.cache/deno/43454605486473f70df2c2cf3d2637b833e7e72d.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/mysql/src/constant/errors.ts + + +export class ConnnectionError extends Error { + constructor(msg?: string) { + super(msg); + } +} + +export class WriteError extends ConnnectionError { + constructor(msg?: string) { + super(msg); + } +} + +export class ReadError extends ConnnectionError { + constructor(msg?: string) { + super(msg); + } +} + +export class ResponseTimeoutError extends ConnnectionError { + constructor(msg?: string) { + super(msg); + } +} + +export class ProtocolError extends ConnnectionError { + constructor(msg?: string) { + super(msg); + } +} diff --git a/bundler/tests/.cache/deno/436fedb1c26cb2dc05a2583ac302c341b0a257d8.ts b/bundler/tests/.cache/deno/436fedb1c26cb2dc05a2583ac302c341b0a257d8.ts new file mode 100644 index 00000000000..496d7633772 --- /dev/null +++ b/bundler/tests/.cache/deno/436fedb1c26cb2dc05a2583ac302c341b0a257d8.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/bind.js + + +import _arity from './internal/_arity.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates a function that is bound to a context. + * Note: `R.bind` does not provide the additional argument-binding capabilities of + * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Function + * @category Object + * @sig (* -> *) -> {*} -> (* -> *) + * @param {Function} fn The function to bind to context + * @param {Object} thisObj The context to bind `fn` to + * @return {Function} A function that will execute in the context of `thisObj`. + * @see R.partial + * @example + * + * const log = R.bind(console.log, console); + * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} + * // logs {a: 2} + * @symb R.bind(f, o)(a, b) = f.call(o, a, b) + */ +var bind = _curry2(function bind(fn, thisObj) { + return _arity(fn.length, function() { + return fn.apply(thisObj, arguments); + }); +}); +export default bind; diff --git a/bundler/tests/.cache/deno/439854b137b09b029bd1cbb876fe307daf0c3feb.ts b/bundler/tests/.cache/deno/439854b137b09b029bd1cbb876fe307daf0c3feb.ts new file mode 100644 index 00000000000..0739fc4c601 --- /dev/null +++ b/bundler/tests/.cache/deno/439854b137b09b029bd1cbb876fe307daf0c3feb.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/std@0.75.0/encoding/base64url.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import * as base64 from "./base64.ts"; + +/* + * Some variants allow or require omitting the padding '=' signs: + * https://en.wikipedia.org/wiki/Base64#URL_applications + * @param base64url + */ +export function addPaddingToBase64url(base64url: string): string { + if (base64url.length % 4 === 2) return base64url + "=="; + if (base64url.length % 4 === 3) return base64url + "="; + if (base64url.length % 4 === 1) { + throw new TypeError("Illegal base64url string!"); + } + return base64url; +} + +function convertBase64urlToBase64(b64url: string): string { + return addPaddingToBase64url(b64url).replace(/\-/g, "+").replace(/_/g, "/"); +} + +function convertBase64ToBase64url(b64: string): string { + return b64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +} + +/** + * Encodes a given Uint8Array into a base64url representation + * @param uint8 + */ +export function encode(uint8: Uint8Array): string { + return convertBase64ToBase64url(base64.encode(uint8)); +} + +/** + * Converts given base64url encoded data back to original + * @param b64url + */ +export function decode(b64url: string): Uint8Array { + return base64.decode(convertBase64urlToBase64(b64url)); +} diff --git a/bundler/tests/.cache/deno/43de29f75c64b8fc7e379c85644b0f5238ef8e13.ts b/bundler/tests/.cache/deno/43de29f75c64b8fc7e379c85644b0f5238ef8e13.ts new file mode 100644 index 00000000000..86712b6fa3b --- /dev/null +++ b/bundler/tests/.cache/deno/43de29f75c64b8fc7e379c85644b0f5238ef8e13.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/std@0.83.0/log/handlers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, LevelName, LogLevels } from "./levels.ts"; +import type { LogRecord } from "./logger.ts"; +import { blue, bold, red, yellow } from "../fmt/colors.ts"; +import { exists, existsSync } from "../fs/exists.ts"; +import { BufWriterSync } from "../io/bufio.ts"; + +const DEFAULT_FORMATTER = "{levelName} {msg}"; +type FormatterFunction = (logRecord: LogRecord) => string; +type LogMode = "a" | "w" | "x"; + +interface HandlerOptions { + formatter?: string | FormatterFunction; +} + +export class BaseHandler { + level: number; + levelName: LevelName; + formatter: string | FormatterFunction; + + constructor(levelName: LevelName, options: HandlerOptions = {}) { + this.level = getLevelByName(levelName); + this.levelName = levelName; + + this.formatter = options.formatter || DEFAULT_FORMATTER; + } + + handle(logRecord: LogRecord): void { + if (this.level > logRecord.level) return; + + const msg = this.format(logRecord); + return this.log(msg); + } + + format(logRecord: LogRecord): string { + if (this.formatter instanceof Function) { + return this.formatter(logRecord); + } + + return this.formatter.replace(/{(\S+)}/g, (match, p1): string => { + const value = logRecord[p1 as keyof LogRecord]; + + // do not interpolate missing values + if (value == null) { + return match; + } + + return String(value); + }); + } + + log(_msg: string): void {} + async setup(): Promise {} + async destroy(): Promise {} +} + +export class ConsoleHandler extends BaseHandler { + format(logRecord: LogRecord): string { + let msg = super.format(logRecord); + + switch (logRecord.level) { + case LogLevels.INFO: + msg = blue(msg); + break; + case LogLevels.WARNING: + msg = yellow(msg); + break; + case LogLevels.ERROR: + msg = red(msg); + break; + case LogLevels.CRITICAL: + msg = bold(red(msg)); + break; + default: + break; + } + + return msg; + } + + log(msg: string): void { + console.log(msg); + } +} + +export abstract class WriterHandler extends BaseHandler { + protected _writer!: Deno.Writer; + #encoder = new TextEncoder(); + + abstract log(msg: string): void; +} + +interface FileHandlerOptions extends HandlerOptions { + filename: string; + mode?: LogMode; +} + +export class FileHandler extends WriterHandler { + protected _file: Deno.File | undefined; + protected _buf!: BufWriterSync; + protected _filename: string; + protected _mode: LogMode; + protected _openOptions: Deno.OpenOptions; + protected _encoder = new TextEncoder(); + #unloadCallback = (): Promise => this.destroy(); + + constructor(levelName: LevelName, options: FileHandlerOptions) { + super(levelName, options); + this._filename = options.filename; + // default to append mode, write only + this._mode = options.mode ? options.mode : "a"; + this._openOptions = { + createNew: this._mode === "x", + create: this._mode !== "x", + append: this._mode === "a", + truncate: this._mode !== "a", + write: true, + }; + } + + async setup(): Promise { + this._file = await Deno.open(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + + addEventListener("unload", this.#unloadCallback); + } + + handle(logRecord: LogRecord): void { + super.handle(logRecord); + + // Immediately flush if log level is higher than ERROR + if (logRecord.level > LogLevels.ERROR) { + this.flush(); + } + } + + log(msg: string): void { + this._buf.writeSync(this._encoder.encode(msg + "\n")); + } + + flush(): void { + if (this._buf?.buffered() > 0) { + this._buf.flush(); + } + } + + destroy(): Promise { + this.flush(); + this._file?.close(); + this._file = undefined; + removeEventListener("unload", this.#unloadCallback); + return Promise.resolve(); + } +} + +interface RotatingFileHandlerOptions extends FileHandlerOptions { + maxBytes: number; + maxBackupCount: number; +} + +export class RotatingFileHandler extends FileHandler { + #maxBytes: number; + #maxBackupCount: number; + #currentFileSize = 0; + + constructor(levelName: LevelName, options: RotatingFileHandlerOptions) { + super(levelName, options); + this.#maxBytes = options.maxBytes; + this.#maxBackupCount = options.maxBackupCount; + } + + async setup(): Promise { + if (this.#maxBytes < 1) { + this.destroy(); + throw new Error("maxBytes cannot be less than 1"); + } + if (this.#maxBackupCount < 1) { + this.destroy(); + throw new Error("maxBackupCount cannot be less than 1"); + } + await super.setup(); + + if (this._mode === "w") { + // Remove old backups too as it doesn't make sense to start with a clean + // log file, but old backups + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + await Deno.remove(this._filename + "." + i); + } + } + } else if (this._mode === "x") { + // Throw if any backups also exist + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + this.destroy(); + throw new Deno.errors.AlreadyExists( + "Backup log file " + this._filename + "." + i + " already exists", + ); + } + } + } else { + this.#currentFileSize = (await Deno.stat(this._filename)).size; + } + } + + log(msg: string): void { + const msgByteLength = this._encoder.encode(msg).byteLength + 1; + + if (this.#currentFileSize + msgByteLength > this.#maxBytes) { + this.rotateLogFiles(); + this.#currentFileSize = 0; + } + + this._buf.writeSync(this._encoder.encode(msg + "\n")); + this.#currentFileSize += msgByteLength; + } + + rotateLogFiles(): void { + this._buf.flush(); + Deno.close(this._file!.rid); + + for (let i = this.#maxBackupCount - 1; i >= 0; i--) { + const source = this._filename + (i === 0 ? "" : "." + i); + const dest = this._filename + "." + (i + 1); + + if (existsSync(source)) { + Deno.renameSync(source, dest); + } + } + + this._file = Deno.openSync(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + } +} diff --git a/bundler/tests/.cache/deno/445bb7d0616adf21a051238115124cb2eae0fc5f.ts b/bundler/tests/.cache/deno/445bb7d0616adf21a051238115124cb2eae0fc5f.ts new file mode 100644 index 00000000000..7f76e21de69 --- /dev/null +++ b/bundler/tests/.cache/deno/445bb7d0616adf21a051238115124cb2eae0fc5f.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema/default.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { binary, merge, omap, pairs, set, timestamp } from "../type/mod.ts"; +import { core } from "./core.ts"; + +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +export const def = new Schema({ + explicit: [binary, omap, pairs, set], + implicit: [timestamp, merge], + include: [core], +}); diff --git a/bundler/tests/.cache/deno/4499ec1594f4dc7479903a32c1a971f3e373de83.ts b/bundler/tests/.cache/deno/4499ec1594f4dc7479903a32c1a971f3e373de83.ts new file mode 100644 index 00000000000..96e37380673 --- /dev/null +++ b/bundler/tests/.cache/deno/4499ec1594f4dc7479903a32c1a971f3e373de83.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/specifiedRules.js + + +// Spec Section: "Executable Definitions" +import { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.js'; // Spec Section: "Operation Name Uniqueness" + +import { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.js'; // Spec Section: "Lone Anonymous Operation" + +import { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.js'; // Spec Section: "Subscriptions with Single Root Field" + +import { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.js'; // Spec Section: "Fragment Spread Type Existence" + +import { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.js'; // Spec Section: "Fragments on Composite Types" + +import { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.js'; // Spec Section: "Variables are Input Types" + +import { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.js'; // Spec Section: "Leaf Field Selections" + +import { ScalarLeafsRule } from './rules/ScalarLeafsRule.js'; // Spec Section: "Field Selections on Objects, Interfaces, and Unions Types" + +import { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.js'; // Spec Section: "Fragment Name Uniqueness" + +import { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.js'; // Spec Section: "Fragment spread target defined" + +import { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.js'; // Spec Section: "Fragments must be used" + +import { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.js'; // Spec Section: "Fragment spread is possible" + +import { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.js'; // Spec Section: "Fragments must not form cycles" + +import { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.js'; // Spec Section: "Variable Uniqueness" + +import { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.js'; // Spec Section: "All Variable Used Defined" + +import { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.js'; // Spec Section: "All Variables Used" + +import { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.js'; // Spec Section: "Directives Are Defined" + +import { KnownDirectivesRule } from './rules/KnownDirectivesRule.js'; // Spec Section: "Directives Are Unique Per Location" + +import { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.js'; // Spec Section: "Argument Names" + +import { KnownArgumentNamesRule, KnownArgumentNamesOnDirectivesRule } from './rules/KnownArgumentNamesRule.js'; // Spec Section: "Argument Uniqueness" + +import { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.js'; // Spec Section: "Value Type Correctness" + +import { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.js'; // Spec Section: "Argument Optionality" + +import { ProvidedRequiredArgumentsRule, ProvidedRequiredArgumentsOnDirectivesRule } from './rules/ProvidedRequiredArgumentsRule.js'; // Spec Section: "All Variable Usages Are Allowed" + +import { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.js'; // Spec Section: "Field Selection Merging" + +import { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.js'; // Spec Section: "Input Object Field Uniqueness" + +import { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.js'; // SDL-specific validation rules + +import { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.js'; +import { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.js'; +import { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.js'; +import { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.js'; +import { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.js'; +import { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.js'; +import { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.js'; +/** + * This set includes all validation rules defined by the GraphQL spec. + * + * The order of the rules in this list has been adjusted to lead to the + * most clear output when encountering multiple validation errors. + */ + +export const specifiedRules = Object.freeze([ExecutableDefinitionsRule, UniqueOperationNamesRule, LoneAnonymousOperationRule, SingleFieldSubscriptionsRule, KnownTypeNamesRule, FragmentsOnCompositeTypesRule, VariablesAreInputTypesRule, ScalarLeafsRule, FieldsOnCorrectTypeRule, UniqueFragmentNamesRule, KnownFragmentNamesRule, NoUnusedFragmentsRule, PossibleFragmentSpreadsRule, NoFragmentCyclesRule, UniqueVariableNamesRule, NoUndefinedVariablesRule, NoUnusedVariablesRule, KnownDirectivesRule, UniqueDirectivesPerLocationRule, KnownArgumentNamesRule, UniqueArgumentNamesRule, ValuesOfCorrectTypeRule, ProvidedRequiredArgumentsRule, VariablesInAllowedPositionRule, OverlappingFieldsCanBeMergedRule, UniqueInputFieldNamesRule]); +/** + * @internal + */ + +export const specifiedSDLRules = Object.freeze([LoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, KnownTypeNamesRule, KnownDirectivesRule, UniqueDirectivesPerLocationRule, PossibleTypeExtensionsRule, KnownArgumentNamesOnDirectivesRule, UniqueArgumentNamesRule, UniqueInputFieldNamesRule, ProvidedRequiredArgumentsOnDirectivesRule]); \ No newline at end of file diff --git a/bundler/tests/.cache/deno/449b00f05e5d4a8f442f39854ae8759b91fc91f7.ts b/bundler/tests/.cache/deno/449b00f05e5d4a8f442f39854ae8759b91fc91f7.ts new file mode 100644 index 00000000000..3a974d6c0e8 --- /dev/null +++ b/bundler/tests/.cache/deno/449b00f05e5d4a8f442f39854ae8759b91fc91f7.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMD5.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const md5 = /^[a-f0-9]{32}$/; + +export const isMD5 = (str: string) => { + assertString(str); + return md5.test(str); +}; diff --git a/bundler/tests/.cache/deno/44a4e31858c4f87ab373493a0a2fcda0af905bf6.ts b/bundler/tests/.cache/deno/44a4e31858c4f87ab373493a0a2fcda0af905bf6.ts new file mode 100644 index 00000000000..00d177aaf84 --- /dev/null +++ b/bundler/tests/.cache/deno/44a4e31858c4f87ab373493a0a2fcda0af905bf6.ts @@ -0,0 +1,190 @@ +// Loaded from https://deno.land/std@0.74.0/log/logger.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, getLevelName, LogLevels } from "./levels.ts"; +import type { LevelName } from "./levels.ts"; +import type { BaseHandler } from "./handlers.ts"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type GenericFunction = (...args: any[]) => any; + +export interface LogRecordOptions { + msg: string; + args: unknown[]; + level: number; + loggerName: string; +} + +export class LogRecord { + readonly msg: string; + #args: unknown[]; + #datetime: Date; + readonly level: number; + readonly levelName: string; + readonly loggerName: string; + + constructor(options: LogRecordOptions) { + this.msg = options.msg; + this.#args = [...options.args]; + this.level = options.level; + this.loggerName = options.loggerName; + this.#datetime = new Date(); + this.levelName = getLevelName(options.level); + } + get args(): unknown[] { + return [...this.#args]; + } + get datetime(): Date { + return new Date(this.#datetime.getTime()); + } +} + +export interface LoggerOptions { + handlers?: BaseHandler[]; +} + +export class Logger { + #level: LogLevels; + #handlers: BaseHandler[]; + readonly #loggerName: string; + + constructor( + loggerName: string, + levelName: LevelName, + options: LoggerOptions = {}, + ) { + this.#loggerName = loggerName; + this.#level = getLevelByName(levelName); + this.#handlers = options.handlers || []; + } + + get level(): LogLevels { + return this.#level; + } + set level(level: LogLevels) { + this.#level = level; + } + + get levelName(): LevelName { + return getLevelName(this.#level); + } + set levelName(levelName: LevelName) { + this.#level = getLevelByName(levelName); + } + + get loggerName(): string { + return this.#loggerName; + } + + set handlers(hndls: BaseHandler[]) { + this.#handlers = hndls; + } + get handlers(): BaseHandler[] { + return this.#handlers; + } + + /** If the level of the logger is greater than the level to log, then nothing + * is logged, otherwise a log record is passed to each log handler. `msg` data + * passed in is returned. If a function is passed in, it is only evaluated + * if the msg will be logged and the return value will be the result of the + * function, not the function itself, unless the function isn't called, in which + * case undefined is returned. All types are coerced to strings for logging. + */ + private _log( + level: number, + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + if (this.level > level) { + return msg instanceof Function ? undefined : msg; + } + + let fnResult: T | undefined; + let logMessage: string; + if (msg instanceof Function) { + fnResult = msg(); + logMessage = this.asString(fnResult); + } else { + logMessage = this.asString(msg); + } + const record: LogRecord = new LogRecord({ + msg: logMessage, + args: args, + level: level, + loggerName: this.loggerName, + }); + + this.#handlers.forEach((handler): void => { + handler.handle(record); + }); + + return msg instanceof Function ? fnResult : msg; + } + + asString(data: unknown): string { + if (typeof data === "string") { + return data; + } else if ( + data === null || + typeof data === "number" || + typeof data === "bigint" || + typeof data === "boolean" || + typeof data === "undefined" || + typeof data === "symbol" + ) { + return String(data); + } else if (typeof data === "object") { + return JSON.stringify(data); + } + return "undefined"; + } + + debug(msg: () => T, ...args: unknown[]): T | undefined; + debug(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.DEBUG, msg, ...args); + } + + info(msg: () => T, ...args: unknown[]): T | undefined; + info(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.INFO, msg, ...args); + } + + warning(msg: () => T, ...args: unknown[]): T | undefined; + warning(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.WARNING, msg, ...args); + } + + error(msg: () => T, ...args: unknown[]): T | undefined; + error(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.ERROR, msg, ...args); + } + + critical(msg: () => T, ...args: unknown[]): T | undefined; + critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] + ): T; + critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.CRITICAL, msg, ...args); + } +} diff --git a/bundler/tests/.cache/deno/44c08f96c7e6c795415d925868ec0089677994c1.ts b/bundler/tests/.cache/deno/44c08f96c7e6c795415d925868ec0089677994c1.ts new file mode 100644 index 00000000000..9ab45ae3208 --- /dev/null +++ b/bundler/tests/.cache/deno/44c08f96c7e6c795415d925868ec0089677994c1.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/x/url_join/mod.ts + + +export const urlJoin = function (...args: any[]) { + let input; + + if (typeof args[0] === 'object') { + input = args[0]; + } else { + input = [].slice.call(args); + } + + return normalize(input); +}; + +const normalize = (strArray: Array) => { + const resultArray = []; + if (strArray.length === 0) { + return ''; + } + + if (typeof strArray[0] !== 'string') { + throw new TypeError('Url must be a string. Received ' + strArray[0]); + } + + // If the first part is a plain protocol, we combine it with the next part. + if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) { + const first = strArray.shift(); + strArray[0] = first + strArray[0]; + } + + // There must be two or three slashes in the file protocol, two slashes in anything else. + if (strArray[0].match(/^file:\/\/\//)) { + strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1:///'); + } else { + strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1://'); + } + + for (let i = 0; i < strArray.length; i++) { + let component = strArray[i]; + + if (typeof component !== 'string') { + throw new TypeError('Url must be a string. Received ' + component); + } + + if (component === '') { + continue; + } + + if (i > 0) { + // Removing the starting slashes for each component but the first. + component = component.replace(/^[\/]+/, ''); + } + if (i < strArray.length - 1) { + // Removing the ending slashes for each component but the last. + component = component.replace(/[\/]+$/, ''); + } else { + // For the last component we will combine multiple slashes to a single one. + component = component.replace(/[\/]+$/, '/'); + } + + resultArray.push(component); + } + + let str = resultArray.join('/'); + // Each input component is now separated by a single slash except the possible first plain protocol part. + + // remove trailing slash before parameters or hash + str = str.replace(/\/(\?|&|#[^!])/g, '$1'); + + // replace ? in parameters with & + let parts = str.split('?'); + str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&'); + + return str; +}; diff --git a/bundler/tests/.cache/deno/4507642b8b5992a8a74d16a6415658f9a77eb20f.ts b/bundler/tests/.cache/deno/4507642b8b5992a8a74d16a6415658f9a77eb20f.ts new file mode 100644 index 00000000000..4e5d9ab4edf --- /dev/null +++ b/bundler/tests/.cache/deno/4507642b8b5992a8a74d16a6415658f9a77eb20f.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/crc32.js + + +// Note: we can't get significant speed boost here. +// So write code to minimize size - no pregenerated tables +// and array tools dependencies. + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +// Use ordinary array, since untyped makes no boost here +function makeTable() { + var c, table = []; + + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; +} + +// Create table on load. Just 255 signed longs. Not a problem. +var crcTable = makeTable(); + + +export function crc32(crc, buf, len, pos) { + var t = crcTable, + end = pos + len; + + crc ^= -1; + + for (var i = pos; i < end; i++) { + crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + diff --git a/bundler/tests/.cache/deno/451ef1836081b9b98b8a899fc937ee56c45a1289.ts b/bundler/tests/.cache/deno/451ef1836081b9b98b8a899fc937ee56c45a1289.ts new file mode 100644 index 00000000000..d5010a06b32 --- /dev/null +++ b/bundler/tests/.cache/deno/451ef1836081b9b98b8a899fc937ee56c45a1289.ts @@ -0,0 +1,431 @@ +// Loaded from https://deno.land/x/oak/application.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { Context } from "./context.ts"; +import { + serve as defaultServe, + serveTLS as defaultServeTls, + Status, + STATUS_TEXT, +} from "./deps.ts"; +import { Key, KeyStack } from "./keyStack.ts"; +import { compose, Middleware } from "./middleware.ts"; +import type { + Serve, + Server, + ServerRequest, + ServerResponse, + ServeTls, +} from "./types.d.ts"; + +export interface ListenOptionsBase { + hostname?: string; + port: number; + secure?: false; + signal?: AbortSignal; +} + +export interface ListenOptionsTls { + certFile: string; + hostname?: string; + keyFile: string; + port: number; + secure: true; + signal?: AbortSignal; +} + +export type ListenOptions = ListenOptionsTls | ListenOptionsBase; + +function isOptionsTls(options: ListenOptions): options is ListenOptionsTls { + return options.secure === true; +} + +interface ApplicationErrorEventListener { + (evt: ApplicationErrorEvent): void | Promise; +} + +interface ApplicationErrorEventListenerObject { + handleEvent(evt: ApplicationErrorEvent): void | Promise; +} + +interface ApplicationErrorEventInit extends ErrorEventInit { + context?: Context; +} + +type ApplicationErrorEventListenerOrEventListenerObject = + | ApplicationErrorEventListener + | ApplicationErrorEventListenerObject; + +interface ApplicationListenEventListener { + (evt: ApplicationListenEvent): void | Promise; +} + +interface ApplicationListenEventListenerObject { + handleEvent(evt: ApplicationListenEvent): void | Promise; +} + +interface ApplicationListenEventInit extends EventInit { + hostname?: string; + port: number; + secure: boolean; +} + +type ApplicationListenEventListenerOrEventListenerObject = + | ApplicationListenEventListener + | ApplicationListenEventListenerObject; + +export interface ApplicationOptions { + /** An initial set of keys (or instance of `KeyGrip`) to be used for signing + * cookies produced by the application. */ + keys?: KeyStack | Key[]; + + /** If set to `true`, proxy headers will be trusted when processing requests. + * This defaults to `false`. */ + proxy?: boolean; + + /** The `server()` function to be used to read requests. + * + * _Not used generally, as this is just for mocking for test purposes_ */ + serve?: Serve; + + /** The `server()` function to be used to read requests. + * + * _Not used generally, as this is just for mocking for test purposes_ */ + serveTls?: ServeTls; + + /** The initial state object for the application, of which the type can be + * used to infer the type of the state for both the application and any of the + * application's context. */ + state?: S; +} + +interface RequestState { + handling: Set>; + closing: boolean; + closed: boolean; + server: Server; +} + +// deno-lint-ignore no-explicit-any +export type State = Record; + +const ADDR_REGEXP = /^\[?([^\]]*)\]?:([0-9]{1,5})$/; + +export class ApplicationErrorEvent extends ErrorEvent { + context?: Context; + + constructor(eventInitDict: ApplicationErrorEventInit) { + super("error", eventInitDict); + this.context = eventInitDict.context; + } +} + +export class ApplicationListenEvent extends Event { + hostname?: string; + port: number; + secure: boolean; + + constructor(eventInitDict: ApplicationListenEventInit) { + super("listen", eventInitDict); + this.hostname = eventInitDict.hostname; + this.port = eventInitDict.port; + this.secure = eventInitDict.secure; + } +} + +/** A class which registers middleware (via `.use()`) and then processes + * inbound requests against that middleware (via `.listen()`). + * + * The `context.state` can be typed via passing a generic argument when + * constructing an instance of `Application`. + */ +// deno-lint-ignore no-explicit-any +export class Application> + extends EventTarget { + #composedMiddleware?: (context: Context) => Promise; + #keys?: KeyStack; + #middleware: Middleware>[] = []; + #serve: Serve; + #serveTls: ServeTls; + + /** A set of keys, or an instance of `KeyStack` which will be used to sign + * cookies read and set by the application to avoid tampering with the + * cookies. */ + get keys(): KeyStack | Key[] | undefined { + return this.#keys; + } + + set keys(keys: KeyStack | Key[] | undefined) { + if (!keys) { + this.#keys = undefined; + return; + } else if (Array.isArray(keys)) { + this.#keys = new KeyStack(keys); + } else { + this.#keys = keys; + } + } + + /** If `true`, proxy headers will be trusted when processing requests. This + * defaults to `false`. */ + proxy: boolean; + + /** Generic state of the application, which can be specified by passing the + * generic argument when constructing: + * + * const app = new Application<{ foo: string }>(); + * + * Or can be contextually inferred based on setting an initial state object: + * + * const app = new Application({ state: { foo: "bar" } }); + * + */ + state: AS; + + constructor(options: ApplicationOptions = {}) { + super(); + const { + state, + keys, + proxy, + serve = defaultServe, + serveTls = defaultServeTls, + } = options; + + this.proxy = proxy ?? false; + this.keys = keys; + this.state = state ?? {} as AS; + this.#serve = serve; + this.#serveTls = serveTls; + } + + #getComposed = (): ((context: Context) => Promise) => { + if (!this.#composedMiddleware) { + this.#composedMiddleware = compose(this.#middleware); + } + return this.#composedMiddleware; + }; + + /** Deal with uncaught errors in either the middleware or sending the + * response. */ + // deno-lint-ignore no-explicit-any + #handleError = (context: Context, error: any): void => { + if (!(error instanceof Error)) { + error = new Error(`non-error thrown: ${JSON.stringify(error)}`); + } + const { message } = error; + this.dispatchEvent(new ApplicationErrorEvent({ context, message, error })); + if (!context.response.writable) { + return; + } + for (const key of context.response.headers.keys()) { + context.response.headers.delete(key); + } + if (error.headers && error.headers instanceof Headers) { + for (const [key, value] of error.headers) { + context.response.headers.set(key, value); + } + } + context.response.type = "text"; + const status: Status = context.response.status = + error instanceof Deno.errors.NotFound + ? 404 + : error.status && typeof error.status === "number" + ? error.status + : 500; + context.response.body = error.expose + ? error.message + : STATUS_TEXT.get(status); + }; + + /** Processing registered middleware on each request. */ + #handleRequest = async ( + request: ServerRequest, + secure: boolean, + state: RequestState, + ): Promise => { + const context = new Context(this, request, secure); + let resolve: () => void; + const handlingPromise = new Promise((res) => resolve = res); + state.handling.add(handlingPromise); + if (!state.closing && !state.closed) { + try { + await this.#getComposed()(context); + } catch (err) { + this.#handleError(context, err); + } + } + if (context.respond === false) { + context.response.destroy(); + resolve!(); + state.handling.delete(handlingPromise); + return; + } + try { + await request.respond(await context.response.toServerResponse()); + if (state.closing) { + state.server.close(); + state.closed = true; + } + } catch (err) { + this.#handleError(context, err); + } finally { + context.response.destroy(); + resolve!(); + state.handling.delete(handlingPromise); + } + }; + + /** Add an event listener for an `"error"` event which occurs when an + * un-caught error occurs when processing the middleware or during processing + * of the response. */ + addEventListener( + type: "error", + listener: ApplicationErrorEventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void; + /** Add an event listener for a `"listen"` event which occurs when the server + * has successfully opened but before any requests start being processed. */ + addEventListener( + type: "listen", + listener: ApplicationListenEventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void; + /** Add an event listener for an event. Currently valid event types are + * `"error"` and `"listen"`. */ + addEventListener( + type: "error" | "listen", + listener: EventListenerOrEventListenerObject | null, + options?: boolean | AddEventListenerOptions, + ): void { + super.addEventListener(type, listener, options); + } + + /** Handle an individual server request, returning the server response. This + * is similar to `.listen()`, but opening the connection and retrieving + * requests are not the responsibility of the application. If the generated + * context gets set to not to respond, then the method resolves with + * `undefined`, otherwise it resolves with a request that is compatible with + * `std/http/server`. */ + handle = async ( + request: ServerRequest, + secure = false, + ): Promise => { + if (!this.#middleware.length) { + throw new TypeError("There is no middleware to process requests."); + } + const context = new Context(this, request, secure); + try { + await this.#getComposed()(context); + } catch (err) { + this.#handleError(context, err); + } + if (context.respond === false) { + context.response.destroy(); + return; + } + try { + const response = await context.response.toServerResponse(); + context.response.destroy(); + return response; + } catch (err) { + this.#handleError(context, err); + throw err; + } + }; + + /** Start listening for requests, processing registered middleware on each + * request. If the options `.secure` is undefined or `false`, the listening + * will be over HTTP. If the options `.secure` property is `true`, a + * `.certFile` and a `.keyFile` property need to be supplied and requests + * will be processed over HTTPS. */ + async listen(addr: string): Promise; + /** Start listening for requests, processing registered middleware on each + * request. If the options `.secure` is undefined or `false`, the listening + * will be over HTTP. If the options `.secure` property is `true`, a + * `.certFile` and a `.keyFile` property need to be supplied and requests + * will be processed over HTTPS. */ + async listen(options: ListenOptions): Promise; + async listen(options: string | ListenOptions): Promise { + if (!this.#middleware.length) { + throw new TypeError("There is no middleware to process requests."); + } + if (typeof options === "string") { + const match = ADDR_REGEXP.exec(options); + if (!match) { + throw TypeError(`Invalid address passed: "${options}"`); + } + const [, hostname, portStr] = match; + options = { hostname, port: parseInt(portStr, 10) }; + } + const server = isOptionsTls(options) + ? this.#serveTls(options) + : this.#serve(options); + const { signal } = options; + const state = { + closed: false, + closing: false, + handling: new Set>(), + server, + }; + if (signal) { + signal.addEventListener("abort", () => { + if (!state.handling.size) { + server.close(); + state.closed = true; + } + state.closing = true; + }); + } + const { hostname, port, secure = false } = options; + this.dispatchEvent( + new ApplicationListenEvent({ hostname, port, secure }), + ); + try { + for await (const request of server) { + this.#handleRequest(request, secure, state); + } + await Promise.all(state.handling); + } catch (error) { + const message = error instanceof Error + ? error.message + : "Application Error"; + this.dispatchEvent( + new ApplicationErrorEvent({ message, error }), + ); + } + } + + /** Register middleware to be used with the application. Middleware will + * be processed in the order it is added, but middleware can control the flow + * of execution via the use of the `next()` function that the middleware + * function will be called with. The `context` object provides information + * about the current state of the application. + * + * Basic usage: + * + * ```ts + * const import { Application } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx, next) => { + * ctx.request; // contains request information + * ctx.response; // setups up information to use in the response; + * await next(); // manages the flow control of the middleware execution + * }); + * + * await app.listen({ port: 80 }); + * ``` + */ + use( + ...middleware: Middleware>[] + ): Application { + this.#middleware.push(...middleware); + this.#composedMiddleware = undefined; + // deno-lint-ignore no-explicit-any + return this as Application; + } +} diff --git a/bundler/tests/.cache/deno/451fafadda3a0c356f5570e16bcb16350de45397.ts b/bundler/tests/.cache/deno/451fafadda3a0c356f5570e16bcb16350de45397.ts new file mode 100644 index 00000000000..dc91ecde485 --- /dev/null +++ b/bundler/tests/.cache/deno/451fafadda3a0c356f5570e16bcb16350de45397.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/constants.ts + + +export enum Status { + Unknown = -1, // Unknown status + + SqliteOk = 0, // Successful result + SqliteError = 1, // Generic error + SqliteInternal = 2, // Internal logic error in SQLite + SqlitePerm = 3, // Access permission denied + SqliteAbort = 4, // Callback routine requested an abort + SqliteBusy = 5, // The database file is locked + SqliteLocked = 6, // A table in the database is locked + SqliteNoMem = 7, // A malloc() failed + SqliteReadOnly = 8, // Attempt to write a readonly database + SqliteInterrupt = 9, // Operation terminated by sqlite3_interrupt() + SqliteIOErr = 10, // Some kind of disk I/O error occurred + SqliteCorrupt = 11, // The database disk image is malformed + SqliteNotFound = 12, // Unknown opcode in sqlite3_file_control() + SqliteFull = 13, // Insertion failed because database is full + SqliteCantOpen = 14, // Unable to open the database file + SqliteProtocol = 15, // Database lock protocol error + SqliteEmpty = 16, // Internal use only + SqliteSchema = 17, // The database schema changed + SqliteTooBig = 18, // String or BLOB exceeds size limit + SqliteConstraint = 19, // Abort due to constraint violation + SqliteMismatch = 20, // Data type mismatch + SqliteMisuse = 21, // Library used incorrectly + SqliteNoLFS = 22, // Uses OS features not supported on host + SqliteAuth = 23, // Authorization denied + SqliteFormat = 24, // Not used + SqliteRange = 25, // 2nd parameter to sqlite3_bind out of range + SqliteNotADB = 26, // File opened that is not a database file + SqliteNotice = 27, // Notifications from sqlite3_log() + SqliteWarning = 28, // Warnings from sqlite3_log() + SqliteRow = 100, // sqlite3_step() has another row ready + SqliteDone = 101, // sqlite3_step() has finished executing +} + +export enum Types { + Integer = 1, + Float = 2, + Text = 3, + Blob = 4, + Null = 5, + BigInteger = 6, +} + +export enum Values { + Error = -1, + Null = 0, +} diff --git a/bundler/tests/.cache/deno/45324c0f4edb746a00b6b785537bf663118d4762.ts b/bundler/tests/.cache/deno/45324c0f4edb746a00b6b785537bf663118d4762.ts new file mode 100644 index 00000000000..1d48153372f --- /dev/null +++ b/bundler/tests/.cache/deno/45324c0f4edb746a00b6b785537bf663118d4762.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/thunkify.js + + +import curryN from './curryN.js'; +import _curry1 from './internal/_curry1.js'; + +/** + * Creates a thunk out of a function. A thunk delays a calculation until + * its result is needed, providing lazy evaluation of arguments. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Function + * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k) + * @param {Function} fn A function to wrap in a thunk + * @return {Function} Expects arguments for `fn` and returns a new function + * that, when called, applies those arguments to `fn`. + * @see R.partial, R.partialRight + * @example + * + * R.thunkify(R.identity)(42)(); //=> 42 + * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42 + */ +var thunkify = _curry1(function thunkify(fn) { + return curryN(fn.length, function createThunk() { + var fnArgs = arguments; + return function invokeThunk() { + return fn.apply(this, fnArgs); + }; + }); +}); + +export default thunkify; diff --git a/bundler/tests/.cache/deno/4574739cf95aae7e28811fe54088d62720e1f4c5.ts b/bundler/tests/.cache/deno/4574739cf95aae7e28811fe54088d62720e1f4c5.ts new file mode 100644 index 00000000000..768bf82b5fe --- /dev/null +++ b/bundler/tests/.cache/deno/4574739cf95aae7e28811fe54088d62720e1f4c5.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/find.js + + +/* eslint-disable no-redeclare */ +// $FlowFixMe +const find = Array.prototype.find ? function (list, predicate) { + return Array.prototype.find.call(list, predicate); +} : function (list, predicate) { + for (const value of list) { + if (predicate(value)) { + return value; + } + } +}; +export default find; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/45ce4f3ffe80a7e90648316a82a255cdf80cc36a.ts b/bundler/tests/.cache/deno/45ce4f3ffe80a7e90648316a82a255cdf80cc36a.ts new file mode 100644 index 00000000000..da105fbe8e2 --- /dev/null +++ b/bundler/tests/.cache/deno/45ce4f3ffe80a7e90648316a82a255cdf80cc36a.ts @@ -0,0 +1,103 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/rsa_wc.ts + + +import type { RSAOption } from "./common.ts"; +import type { RSAKey } from "./rsa_key.ts"; + +function big_base64(m?: bigint) { + if (m === undefined) return undefined; + + const bytes = []; + + while (m > 0n) { + bytes.push(Number(m & 255n)); + m = m >> 8n; + } + + bytes.reverse(); + let a = btoa(String.fromCharCode.apply(null, bytes)).replace(/=/g, ""); + a = a.replace(/\+/g, "-"); + a = a.replace(/\//g, "_"); + return a; +} + +function getHashFunctionName(hash: string) { + if (hash === "sha1") return "SHA-1"; + if (hash === "sha256") return "SHA-256"; + return ""; +} + +async function createWebCryptoKey( + key: RSAKey, + usage: string, + options: RSAOption, +) { + let jwk: any = { + kty: "RSA", + n: big_base64(key.n), + ext: true, + }; + + if (usage === "encrypt") { + jwk = { ...jwk, e: big_base64(key.e) }; + } else if (usage === "decrypt") { + jwk = { + ...jwk, + d: big_base64(key.d), + e: big_base64(key.e), + p: big_base64(key.p), + q: big_base64(key.q), + dp: big_base64(key.dp), + dq: big_base64(key.dq), + qi: big_base64(key.qi), + }; + } + + // @ts-ignore + return await crypto.subtle.importKey( + "jwk", + jwk, + { + name: "RSA-OAEP", + hash: { name: getHashFunctionName(options.hash) }, + }, + false, + [usage], + ); +} + +export class WebCryptoRSA { + key: RSAKey; + options: RSAOption; + encryptedKey: any = null; + decryptedKey: any = null; + + constructor(key: RSAKey, options: RSAOption) { + this.key = key; + this.options = options; + } + + static isSupported(options: RSAOption) { + if (!crypto.subtle) return false; + if (options.padding !== "oaep") return false; + return true; + } + + static async encrypt(key: RSAKey, m: Uint8Array, options: RSAOption) { + // @ts-ignore + return await crypto.subtle.encrypt( + { name: "RSA-OAEP" }, + await createWebCryptoKey(key, "encrypt", options), + m, + ); + } + + static async decrypt(key: RSAKey, m: Uint8Array, options: RSAOption) { + // @ts-ignore + return await crypto.subtle.decrypt( + { name: "RSA-OAEP" }, + await createWebCryptoKey(key, "decrypt", options), + m, + ); + } +} diff --git a/bundler/tests/.cache/deno/4638df2524daab4791609fd880e83f1d9495244d.ts b/bundler/tests/.cache/deno/4638df2524daab4791609fd880e83f1d9495244d.ts new file mode 100644 index 00000000000..d26e0404a38 --- /dev/null +++ b/bundler/tests/.cache/deno/4638df2524daab4791609fd880e83f1d9495244d.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_toString.js + + +import _includes from './_includes.js'; +import _map from './_map.js'; +import _quote from './_quote.js'; +import _toISOString from './_toISOString.js'; +import keys from '../keys.js'; +import reject from '../reject.js'; + + +export default function _toString(x, seen) { + var recur = function recur(y) { + var xs = seen.concat([x]); + return _includes(y, xs) ? '' : _toString(y, xs); + }; + + // mapPairs :: (Object, [String]) -> [String] + var mapPairs = function(obj, keys) { + return _map(function(k) { return _quote(k) + ': ' + recur(obj[k]); }, keys.slice().sort()); + }; + + switch (Object.prototype.toString.call(x)) { + case '[object Arguments]': + return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))'; + case '[object Array]': + return '[' + _map(recur, x).concat(mapPairs(x, reject(function(k) { return /^\d+$/.test(k); }, keys(x)))).join(', ') + ']'; + case '[object Boolean]': + return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString(); + case '[object Date]': + return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')'; + case '[object Null]': + return 'null'; + case '[object Number]': + return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10); + case '[object String]': + return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x); + case '[object Undefined]': + return 'undefined'; + default: + if (typeof x.toString === 'function') { + var repr = x.toString(); + if (repr !== '[object Object]') { + return repr; + } + } + return '{' + mapPairs(x, keys(x)).join(', ') + '}'; + } +} diff --git a/bundler/tests/.cache/deno/4657b24088bee28fb9a569eb73505893b4026616.ts b/bundler/tests/.cache/deno/4657b24088bee28fb9a569eb73505893b4026616.ts new file mode 100644 index 00000000000..e26f9540d6a --- /dev/null +++ b/bundler/tests/.cache/deno/4657b24088bee28fb9a569eb73505893b4026616.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/nil.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +function resolveYamlNull(data: string): boolean { + const max = data.length; + + return ( + (max === 1 && data === "~") || + (max === 4 && (data === "null" || data === "Null" || data === "NULL")) + ); +} + +function constructYamlNull(): null { + return null; +} + +function isNull(object: unknown): object is null { + return object === null; +} + +export const nil = new Type("tag:yaml.org,2002:null", { + construct: constructYamlNull, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isNull, + represent: { + canonical(): string { + return "~"; + }, + lowercase(): string { + return "null"; + }, + uppercase(): string { + return "NULL"; + }, + camelcase(): string { + return "Null"; + }, + }, + resolve: resolveYamlNull, +}); diff --git a/bundler/tests/.cache/deno/46a1236156395c1fe96936ab72872a84be8adf2c.ts b/bundler/tests/.cache/deno/46a1236156395c1fe96936ab72872a84be8adf2c.ts new file mode 100644 index 00000000000..f9d0d934d91 --- /dev/null +++ b/bundler/tests/.cache/deno/46a1236156395c1fe96936ab72872a84be8adf2c.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.77.0/fs/exists.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** + * Test whether or not the given path exists by checking with the file system + */ +export async function exists(filePath: string): Promise { + try { + await Deno.lstat(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + + throw err; + } +} + +/** + * Test whether or not the given path exists by checking with the file system + */ +export function existsSync(filePath: string): boolean { + try { + Deno.lstatSync(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/46d55f695329edeac0c9687aa3d069a5ba03e620.ts b/bundler/tests/.cache/deno/46d55f695329edeac0c9687aa3d069a5ba03e620.ts new file mode 100644 index 00000000000..7363e2d6312 --- /dev/null +++ b/bundler/tests/.cache/deno/46d55f695329edeac0c9687aa3d069a5ba03e620.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/execution/index.js + + +export { pathToArray as responsePathAsArray } from '../jsutils/Path.js'; +export { execute, defaultFieldResolver, defaultTypeResolver } from './execute.js'; +export { getDirectiveValues } from './values.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/46ea1d082fcd7442a897e7a7533252e2e1f447c4.ts b/bundler/tests/.cache/deno/46ea1d082fcd7442a897e7a7533252e2e1f447c4.ts new file mode 100644 index 00000000000..858aa769316 --- /dev/null +++ b/bundler/tests/.cache/deno/46ea1d082fcd7442a897e7a7533252e2e1f447c4.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isLowercase.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const isLowercase = (str: string) => { + assertString(str); + return str === str.toLowerCase(); +}; diff --git a/bundler/tests/.cache/deno/47c3fca65712b5c5508b03cf96d71d204dd225d7.ts b/bundler/tests/.cache/deno/47c3fca65712b5c5508b03cf96d71d204dd225d7.ts new file mode 100644 index 00000000000..473691dc365 --- /dev/null +++ b/bundler/tests/.cache/deno/47c3fca65712b5c5508b03cf96d71d204dd225d7.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case/pathCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function (value: string, locale?: string): string { + return normalCase(value, locale, "/"); +} diff --git a/bundler/tests/.cache/deno/4858486e9d0a8e7e8ba5a3620a92c99e87b012df.ts b/bundler/tests/.cache/deno/4858486e9d0a8e7e8ba5a3620a92c99e87b012df.ts new file mode 100644 index 00000000000..7f30189c895 --- /dev/null +++ b/bundler/tests/.cache/deno/4858486e9d0a8e7e8ba5a3620a92c99e87b012df.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case/vendor/camelCaseRegexp.ts + + +const camelCaseRegexp: RegExp = + /([a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A])/g; + +export default camelCaseRegexp; diff --git a/bundler/tests/.cache/deno/48814d77cdb52ba4ae4ba9d5dcb8163d57fb6b3c.ts b/bundler/tests/.cache/deno/48814d77cdb52ba4ae4ba9d5dcb8163d57fb6b3c.ts new file mode 100644 index 00000000000..0ce04eaf601 --- /dev/null +++ b/bundler/tests/.cache/deno/48814d77cdb52ba4ae4ba9d5dcb8163d57fb6b3c.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/times.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Calls an input function `n` times, returning an array containing the results + * of those function calls. + * + * `fn` is passed one argument: The current value of `n`, which begins at `0` + * and is gradually incremented to `n - 1`. + * + * @func + * @memberOf R + * @since v0.2.3 + * @category List + * @sig (Number -> a) -> Number -> [a] + * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`. + * @param {Number} n A value between `0` and `n - 1`. Increments after each function call. + * @return {Array} An array containing the return values of all calls to `fn`. + * @see R.repeat + * @example + * + * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4] + * @symb R.times(f, 0) = [] + * @symb R.times(f, 1) = [f(0)] + * @symb R.times(f, 2) = [f(0), f(1)] + */ +var times = _curry2(function times(fn, n) { + var len = Number(n); + var idx = 0; + var list; + + if (len < 0 || isNaN(len)) { + throw new RangeError('n must be a non-negative number'); + } + list = new Array(len); + while (idx < len) { + list[idx] = fn(idx); + idx += 1; + } + return list; +}); +export default times; diff --git a/bundler/tests/.cache/deno/48886e92913f00dcd683a27a6c2be3e5ab28cde1.ts b/bundler/tests/.cache/deno/48886e92913f00dcd683a27a6c2be3e5ab28cde1.ts new file mode 100644 index 00000000000..3528bed21d2 --- /dev/null +++ b/bundler/tests/.cache/deno/48886e92913f00dcd683a27a6c2be3e5ab28cde1.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.84.0/io/ioutil.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/48a64ee352806e0c1987dc77fbb80a0b227c484d.ts b/bundler/tests/.cache/deno/48a64ee352806e0c1987dc77fbb80a0b227c484d.ts new file mode 100644 index 00000000000..f0b44a7d08a --- /dev/null +++ b/bundler/tests/.cache/deno/48a64ee352806e0c1987dc77fbb80a0b227c484d.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/descend.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Makes a descending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0` + * @see R.ascend + * @example + * + * const byAge = R.descend(R.prop('age')); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByOldestFirst = R.sort(byAge, people); + * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }] + */ +var descend = _curry3(function descend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa > bb ? -1 : aa < bb ? 1 : 0; +}); +export default descend; diff --git a/bundler/tests/.cache/deno/48f456ec1237e6ae9c059579742299193830c2da.ts b/bundler/tests/.cache/deno/48f456ec1237e6ae9c059579742299193830c2da.ts new file mode 100644 index 00000000000..b80e0753bc9 --- /dev/null +++ b/bundler/tests/.cache/deno/48f456ec1237e6ae9c059579742299193830c2da.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.77.0/hash/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Hash } from "./_wasm/hash.ts"; +import type { Hasher } from "./hasher.ts"; + +export type { Hasher } from "./hasher.ts"; +export type SupportedAlgorithm = + | "md2" + | "md4" + | "md5" + | "ripemd160" + | "ripemd320" + | "sha1" + | "sha224" + | "sha256" + | "sha384" + | "sha512" + | "sha3-224" + | "sha3-256" + | "sha3-384" + | "sha3-512" + | "keccak224" + | "keccak256" + | "keccak384" + | "keccak512"; + +/** + * Creates a new `Hash` instance. + * + * @param algorithm name of hash algorithm to use + */ +export function createHash(algorithm: SupportedAlgorithm): Hasher { + return new Hash(algorithm as string); +} diff --git a/bundler/tests/.cache/deno/48f6d7093d05accc73986117019da099383a1c6f.ts b/bundler/tests/.cache/deno/48f6d7093d05accc73986117019da099383a1c6f.ts new file mode 100644 index 00000000000..f9c40bc393c --- /dev/null +++ b/bundler/tests/.cache/deno/48f6d7093d05accc73986117019da099383a1c6f.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std@0.79.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/48fb493cb824ef3ac579f7de990c1902768c206a.ts b/bundler/tests/.cache/deno/48fb493cb824ef3ac579f7de990c1902768c206a.ts new file mode 100644 index 00000000000..7bbc2eb17d0 --- /dev/null +++ b/bundler/tests/.cache/deno/48fb493cb824ef3ac579f7de990c1902768c206a.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std@0.80.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/49d27439f7f396d6dbf3cc9571b64597103a2da7.ts b/bundler/tests/.cache/deno/49d27439f7f396d6dbf3cc9571b64597103a2da7.ts new file mode 100644 index 00000000000..0b627a571f6 --- /dev/null +++ b/bundler/tests/.cache/deno/49d27439f7f396d6dbf3cc9571b64597103a2da7.ts @@ -0,0 +1,1004 @@ +// Loaded from https://deno.land/std@0.85.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/49d7bf951494afde8ccf63631cce395147f37765.ts b/bundler/tests/.cache/deno/49d7bf951494afde8ccf63631cce395147f37765.ts new file mode 100644 index 00000000000..3e74ec4a02e --- /dev/null +++ b/bundler/tests/.cache/deno/49d7bf951494afde8ccf63631cce395147f37765.ts @@ -0,0 +1,428 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/inflate.js + + +import * as zlib_inflate from "./zlib/inflate.js"; +import * as utils from "./utils/common.js"; +import * as strings from "./utils/strings.js"; +import c from "./zlib/constants.js"; +import msg from "./zlib/messages.js"; +import { ZStream } from "./zlib/zstream.js"; +import { GZheader } from "./zlib/gzheader.js"; + + +var toString = Object.prototype.toString; + +/** + * class Inflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[inflate]] + * and [[inflateRaw]]. + **/ + +/* internal + * inflate.chunks -> Array + * + * Chunks of output data, if [[Inflate#onData]] not overridden. + **/ + +/** + * Inflate.result -> Uint8Array|Array|String + * + * Uncompressed result, generated by default [[Inflate#onData]] + * and [[Inflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Inflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + +/** + * Inflate.err -> Number + * + * Error code after inflate finished. 0 (Z_OK) on success. + * Should be checked if broken data possible. + **/ + +/** + * Inflate.msg -> String + * + * Error message, if [[Inflate.err]] != 0 + **/ + + +/** + * new Inflate(options) + * - options (Object): zlib inflate options. + * + * Creates new inflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `windowBits` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw inflate + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * By default, when no options set, autodetect deflate/gzip data format via + * wrapper header. + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var inflate = new pako.Inflate({ level: 3}); + * + * inflate.push(chunk1, false); + * inflate.push(chunk2, true); // true -> last chunk + * + * if (inflate.err) { throw new Error(inflate.err); } + * + * console.log(inflate.result); + * ``` + **/ +function Inflate(options) { + if (!(this instanceof Inflate)) return new Inflate(options); + + this.options = utils.assign({ + chunkSize: 16384, + windowBits: 0, + to: '' + }, options || {}); + + var opt = this.options; + + // Force window size for `raw` data, if not set directly, + // because we have no header for autodetect. + if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) { + opt.windowBits = -opt.windowBits; + if (opt.windowBits === 0) { opt.windowBits = -15; } + } + + // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate + if ((opt.windowBits >= 0) && (opt.windowBits < 16) && + !(options && options.windowBits)) { + opt.windowBits += 32; + } + + // Gzip header has no info about windows size, we can do autodetect only + // for deflate. So, if window size not set, force it to max when gzip possible + if ((opt.windowBits > 15) && (opt.windowBits < 48)) { + // bit 3 (16) -> gzipped data + // bit 4 (32) -> autodetect gzip/deflate + if ((opt.windowBits & 15) === 0) { + opt.windowBits |= 15; + } + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + + var status = zlib_inflate.inflateInit2( + this.strm, + opt.windowBits + ); + + if (status !== c.Z_OK) { + throw new Error(msg[status]); + } + + this.header = new GZheader(); + + zlib_inflate.inflateGetHeader(this.strm, this.header); + + // Setup dictionary + if (opt.dictionary) { + // Convert data if needed + if (typeof opt.dictionary === 'string') { + opt.dictionary = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + opt.dictionary = new Uint8Array(opt.dictionary); + } + if (opt.raw) { //In raw mode we need to set the dictionary early + status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary); + if (status !== c.Z_OK) { + throw new Error(msg[status]); + } + } + } +} + +/** + * Inflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with + * new output chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the decompression context. + * + * On fail call [[Inflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ +Inflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + var dictionary = this.options.dictionary; + var status, _mode; + var next_out_utf8, tail, utf8str; + + // Flag to properly process Z_BUF_ERROR on testing inflate call + // when we check that all output data was flushed. + var allowBufError = false; + + if (this.ended) { return false; } + _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH); + + // Convert data if needed + if (typeof data === 'string') { + // Only binary strings can be decompressed on practice + strm.input = strings.binstring2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */ + + if (status === c.Z_NEED_DICT && dictionary) { + status = zlib_inflate.inflateSetDictionary(this.strm, dictionary); + } + + if (status === c.Z_BUF_ERROR && allowBufError === true) { + status = c.Z_OK; + allowBufError = false; + } + + if (status !== c.Z_STREAM_END && status !== c.Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + + if (strm.next_out) { + if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) { + + if (this.options.to === 'string') { + + next_out_utf8 = strings.utf8border(strm.output, strm.next_out); + + tail = strm.next_out - next_out_utf8; + utf8str = strings.buf2string(strm.output, next_out_utf8); + + // move tail + strm.next_out = tail; + strm.avail_out = chunkSize - tail; + if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); } + + this.onData(utf8str); + + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } + + // When no more input data, we should check that internal inflate buffers + // are flushed. The only way to do it when avail_out = 0 - run one more + // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR. + // Here we set flag to process this error properly. + // + // NOTE. Deflate does not return error in this case and does not needs such + // logic. + if (strm.avail_in === 0 && strm.avail_out === 0) { + allowBufError = true; + } + + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END); + + if (status === c.Z_STREAM_END) { + _mode = c.Z_FINISH; + } + + // Finalize on the last chunk. + if (_mode === c.Z_FINISH) { + status = zlib_inflate.inflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === c.Z_OK; + } + + // callback interim results if Z_SYNC_FLUSH. + if (_mode === c.Z_SYNC_FLUSH) { + this.onEnd(c.Z_OK); + strm.avail_out = 0; + return true; + } + + return true; +}; + + +/** + * Inflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ +Inflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); +}; + + +/** + * Inflate#onEnd(status) -> Void + * - status (Number): inflate status. 0 (Z_OK) on success, + * other if not. + * + * Called either after you tell inflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ +Inflate.prototype.onEnd = function (status) { + // On success - join + if (status === c.Z_OK) { + if (this.options.to === 'string') { + // Glue & convert here, until we teach pako to send + // utf8 aligned strings to onData + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; + + +/** + * inflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Decompress `data` with inflate/ungzip and `options`. Autodetect + * format via wrapper header by default. That's why we don't provide + * separate `ungzip` method. + * + * Supported options are: + * + * - windowBits + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , input = pako.deflate([1,2,3,4,5,6,7,8,9]) + * , output; + * + * try { + * output = pako.inflate(input); + * } catch (err) + * console.log(err); + * } + * ``` + **/ +function inflate(input, options) { + var inflator = new Inflate(options); + + inflator.push(input, true); + + // That will never happens, if you don't cheat with options :) + if (inflator.err) { throw inflator.msg || msg[inflator.err]; } + + return inflator.result; +} + + +/** + * inflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * The same as [[inflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ +function inflateRaw(input, options) { + options = options || {}; + options.raw = true; + return inflate(input, options); +} + + +/** + * ungzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Just shortcut to [[inflate]], because it autodetects format + * by header.content. Done for convenience. + **/ + + +const ungzip = inflate; + +export { + Inflate, + inflate, + inflateRaw, + ungzip +}; diff --git a/bundler/tests/.cache/deno/49f4ea8c5c52b8ea50750f742c1d228d56db5e1f.ts b/bundler/tests/.cache/deno/49f4ea8c5c52b8ea50750f742c1d228d56db5e1f.ts new file mode 100644 index 00000000000..607a5dd8696 --- /dev/null +++ b/bundler/tests/.cache/deno/49f4ea8c5c52b8ea50750f742c1d228d56db5e1f.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isString.js + + +export default function _isString(x) { + return Object.prototype.toString.call(x) === '[object String]'; +} diff --git a/bundler/tests/.cache/deno/4a2521dcf9309684b59e9161bffca655e9340708.ts b/bundler/tests/.cache/deno/4a2521dcf9309684b59e9161bffca655e9340708.ts new file mode 100644 index 00000000000..7e676a86d68 --- /dev/null +++ b/bundler/tests/.cache/deno/4a2521dcf9309684b59e9161bffca655e9340708.ts @@ -0,0 +1,899 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/dumper/dumper.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "../error.ts"; +import type { RepresentFn, StyleVariant, Type } from "../type.ts"; +import * as common from "../utils.ts"; +import { DumperState, DumperStateOptions } from "./dumper_state.ts"; + +type Any = common.Any; +type ArrayObject = common.ArrayObject; + +const _toString = Object.prototype.toString; +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +const CHAR_TAB = 0x09; /* Tab */ +const CHAR_LINE_FEED = 0x0a; /* LF */ +const CHAR_SPACE = 0x20; /* Space */ +const CHAR_EXCLAMATION = 0x21; /* ! */ +const CHAR_DOUBLE_QUOTE = 0x22; /* " */ +const CHAR_SHARP = 0x23; /* # */ +const CHAR_PERCENT = 0x25; /* % */ +const CHAR_AMPERSAND = 0x26; /* & */ +const CHAR_SINGLE_QUOTE = 0x27; /* ' */ +const CHAR_ASTERISK = 0x2a; /* * */ +const CHAR_COMMA = 0x2c; /* , */ +const CHAR_MINUS = 0x2d; /* - */ +const CHAR_COLON = 0x3a; /* : */ +const CHAR_GREATER_THAN = 0x3e; /* > */ +const CHAR_QUESTION = 0x3f; /* ? */ +const CHAR_COMMERCIAL_AT = 0x40; /* @ */ +const CHAR_LEFT_SQUARE_BRACKET = 0x5b; /* [ */ +const CHAR_RIGHT_SQUARE_BRACKET = 0x5d; /* ] */ +const CHAR_GRAVE_ACCENT = 0x60; /* ` */ +const CHAR_LEFT_CURLY_BRACKET = 0x7b; /* { */ +const CHAR_VERTICAL_LINE = 0x7c; /* | */ +const CHAR_RIGHT_CURLY_BRACKET = 0x7d; /* } */ + +const ESCAPE_SEQUENCES: { [char: number]: string } = {}; + +ESCAPE_SEQUENCES[0x00] = "\\0"; +ESCAPE_SEQUENCES[0x07] = "\\a"; +ESCAPE_SEQUENCES[0x08] = "\\b"; +ESCAPE_SEQUENCES[0x09] = "\\t"; +ESCAPE_SEQUENCES[0x0a] = "\\n"; +ESCAPE_SEQUENCES[0x0b] = "\\v"; +ESCAPE_SEQUENCES[0x0c] = "\\f"; +ESCAPE_SEQUENCES[0x0d] = "\\r"; +ESCAPE_SEQUENCES[0x1b] = "\\e"; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5c] = "\\\\"; +ESCAPE_SEQUENCES[0x85] = "\\N"; +ESCAPE_SEQUENCES[0xa0] = "\\_"; +ESCAPE_SEQUENCES[0x2028] = "\\L"; +ESCAPE_SEQUENCES[0x2029] = "\\P"; + +const DEPRECATED_BOOLEANS_SYNTAX = [ + "y", + "Y", + "yes", + "Yes", + "YES", + "on", + "On", + "ON", + "n", + "N", + "no", + "No", + "NO", + "off", + "Off", + "OFF", +]; + +function encodeHex(character: number): string { + const string = character.toString(16).toUpperCase(); + + let handle: string; + let length: number; + if (character <= 0xff) { + handle = "x"; + length = 2; + } else if (character <= 0xffff) { + handle = "u"; + length = 4; + } else if (character <= 0xffffffff) { + handle = "U"; + length = 8; + } else { + throw new YAMLError( + "code point within a string may not be greater than 0xFFFFFFFF", + ); + } + + return `\\${handle}${common.repeat("0", length - string.length)}${string}`; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string: string, spaces: number): string { + const ind = common.repeat(" ", spaces), + length = string.length; + let position = 0, + next = -1, + result = "", + line: string; + + while (position < length) { + next = string.indexOf("\n", position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== "\n") result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state: DumperState, level: number): string { + return `\n${common.repeat(" ", state.indent * level)}`; +} + +function testImplicitResolving(state: DumperState, str: string): boolean { + let type: Type; + for ( + let index = 0, length = state.implicitTypes.length; + index < length; + index += 1 + ) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c: number): boolean { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c: number): boolean { + return ( + (0x00020 <= c && c <= 0x00007e) || + (0x000a1 <= c && c <= 0x00d7ff && c !== 0x2028 && c !== 0x2029) || + (0x0e000 <= c && c <= 0x00fffd && c !== 0xfeff) /* BOM */ || + (0x10000 <= c && c <= 0x10ffff) + ); +} + +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c: number): boolean { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return ( + isPrintable(c) && + c !== 0xfeff && + // - c-flow-indicator + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && + // - ":" - "#" + c !== CHAR_COLON && + c !== CHAR_SHARP + ); +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c: number): boolean { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return ( + isPrintable(c) && + c !== 0xfeff && + !isWhitespace(c) && // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + c !== CHAR_MINUS && + c !== CHAR_QUESTION && + c !== CHAR_COLON && + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && + // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"” + c !== CHAR_SHARP && + c !== CHAR_AMPERSAND && + c !== CHAR_ASTERISK && + c !== CHAR_EXCLAMATION && + c !== CHAR_VERTICAL_LINE && + c !== CHAR_GREATER_THAN && + c !== CHAR_SINGLE_QUOTE && + c !== CHAR_DOUBLE_QUOTE && + // | “%” | “@” | “`”) + c !== CHAR_PERCENT && + c !== CHAR_COMMERCIAL_AT && + c !== CHAR_GRAVE_ACCENT + ); +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string: string): boolean { + const leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +const STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle( + string: string, + singleLineOnly: boolean, + indentPerLevel: number, + lineWidth: number, + testAmbiguousType: (...args: Any[]) => Any, +): number { + const shouldTrackWidth = lineWidth !== -1; + let hasLineBreak = false, + hasFoldableLine = false, // only checked if shouldTrackWidth + previousLineBreak = -1, // count the first line correctly + plain = isPlainSafeFirst(string.charCodeAt(0)) && + !isWhitespace(string.charCodeAt(string.length - 1)); + + let char: number, i: number; + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== " "); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || + (shouldTrackWidth && + i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== " "); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line: string, width: number): string { + if (line === "" || line[0] === " ") return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + const breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + let match; + // start is an inclusive index. end, curr, and next are exclusive. + let start = 0, + end, + curr = 0, + next = 0; + let result = ""; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + // tslint:disable-next-line:no-conditional-assignment + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = curr > start ? curr : next; // derive end <= length-2 + result += `\n${line.slice(start, end)}`; + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += "\n"; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += `${line.slice(start, curr)}\n${line.slice(curr + 1)}`; + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// (See the note for writeScalar.) +function dropEndingNewline(string: string): string { + return string[string.length - 1] === "\n" ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string: string, width: number): string { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + const lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + let result = ((): string => { + let nextLF = string.indexOf("\n"); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + return foldLine(string.slice(0, nextLF), width); + })(); + // If we haven't reached the first content line yet, don't add an extra \n. + let prevMoreIndented = string[0] === "\n" || string[0] === " "; + let moreIndented; + + // rest of the lines + let match; + // tslint:disable-next-line:no-conditional-assignment + while ((match = lineRe.exec(string))) { + const prefix = match[1], + line = match[2]; + moreIndented = line[0] === " "; + result += prefix + + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Escapes a double-quoted string. +function escapeString(string: string): string { + let result = ""; + let char, nextChar; + let escapeSeq; + + for (let i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xd800 && char <= 0xdbff /* high surrogate */) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xdc00 && nextChar <= 0xdfff /* low surrogate */) { + // Combine the surrogate pair and store it escaped. + result += encodeHex( + (char - 0xd800) * 0x400 + nextChar - 0xdc00 + 0x10000, + ); + // Advance index one extra since we already used that char here. + i++; + continue; + } + } + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); + } + + return result; +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string: string, indentPerLevel: number): string { + const indentIndicator = needIndentIndicator(string) + ? String(indentPerLevel) + : ""; + + // note the special case: the string '\n' counts as a "trailing" empty line. + const clip = string[string.length - 1] === "\n"; + const keep = clip && (string[string.length - 2] === "\n" || string === "\n"); + const chomp = keep ? "+" : clip ? "" : "-"; + + return `${indentIndicator}${chomp}\n`; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar( + state: DumperState, + string: string, + level: number, + iskey: boolean, +): void { + state.dump = ((): string => { + if (string.length === 0) { + return "''"; + } + if ( + !state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 + ) { + return `'${string}'`; + } + + const indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower + // bound. + // This behaves better than a constant minimum width which disallows + // narrower options, or an indent threshold which causes the width + // to suddenly increase. + const lineWidth = state.lineWidth === -1 + ? -1 + : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, + // assume implicit for safety. + const singleLineOnly = iskey || + // No block styles in flow mode. + (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(str: string): boolean { + return testImplicitResolving(state, str); + } + + switch ( + chooseScalarStyle( + string, + singleLineOnly, + state.indent, + lineWidth, + testAmbiguity, + ) + ) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return `'${string.replace(/'/g, "''")}'`; + case STYLE_LITERAL: + return `|${blockHeader(string, state.indent)}${ + dropEndingNewline( + indentString(string, indent), + ) + }`; + case STYLE_FOLDED: + return `>${blockHeader(string, state.indent)}${ + dropEndingNewline( + indentString(foldString(string, lineWidth), indent), + ) + }`; + case STYLE_DOUBLE: + return `"${escapeString(string)}"`; + default: + throw new YAMLError("impossible error: invalid scalar style"); + } + })(); +} + +function writeFlowSequence( + state: DumperState, + level: number, + object: Any, +): void { + let _result = ""; + const _tag = state.tag; + + for (let index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += `,${!state.condenseFlow ? " " : ""}`; + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = `[${_result}]`; +} + +function writeBlockSequence( + state: DumperState, + level: number, + object: Any, + compact = false, +): void { + let _result = ""; + const _tag = state.tag; + + for (let index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += "-"; + } else { + _result += "- "; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || "[]"; // Empty sequence if no valid values. +} + +function writeFlowMapping( + state: DumperState, + level: number, + object: Any, +): void { + let _result = ""; + const _tag = state.tag, + objectKeyList = Object.keys(object); + + let pairBuffer: string, objectKey: string, objectValue: Any; + for ( + let index = 0, length = objectKeyList.length; + index < length; + index += 1 + ) { + pairBuffer = state.condenseFlow ? '"' : ""; + + if (index !== 0) pairBuffer += ", "; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += "? "; + + pairBuffer += `${state.dump}${state.condenseFlow ? '"' : ""}:${ + state.condenseFlow ? "" : " " + }`; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = `{${_result}}`; +} + +function writeBlockMapping( + state: DumperState, + level: number, + object: Any, + compact = false, +): void { + const _tag = state.tag, + objectKeyList = Object.keys(object); + let _result = ""; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === "function") { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLError("sortKeys must be a boolean or a function"); + } + + let pairBuffer = "", + objectKey: string, + objectValue: Any, + explicitPair: boolean; + for ( + let index = 0, length = objectKeyList.length; + index < length; + index += 1 + ) { + pairBuffer = ""; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== "?") || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += "?"; + } else { + pairBuffer += "? "; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ":"; + } else { + pairBuffer += ": "; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || "{}"; // Empty mapping if no valid pairs. +} + +function detectType( + state: DumperState, + object: Any, + explicit = false, +): boolean { + const typeList = explicit ? state.explicitTypes : state.implicitTypes; + + let type: Type; + let style: StyleVariant; + let _result: string; + for (let index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ( + (type.instanceOf || type.predicate) && + (!type.instanceOf || + (typeof object === "object" && object instanceof type.instanceOf)) && + (!type.predicate || type.predicate(object)) + ) { + state.tag = explicit ? type.tag : "?"; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === "[object Function]") { + _result = (type.represent as RepresentFn)(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = (type.represent as ArrayObject)[style]( + object, + style, + ); + } else { + throw new YAMLError( + `!<${type.tag}> tag resolver accepts not "${style}" style`, + ); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode( + state: DumperState, + level: number, + object: Any, + block: boolean, + compact: boolean, + iskey = false, +): boolean { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + const type = _toString.call(state.dump); + + if (block) { + block = state.flowLevel < 0 || state.flowLevel > level; + } + + const objectOrArray = type === "[object Object]" || type === "[object Array]"; + + let duplicateIndex = -1; + let duplicate = false; + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ( + (state.tag !== null && state.tag !== "?") || + duplicate || + (state.indent !== 2 && level > 0) + ) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = `*ref_${duplicateIndex}`; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === "[object Object]") { + if (block && Object.keys(state.dump).length !== 0) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = `&ref_${duplicateIndex}${state.dump}`; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = `&ref_${duplicateIndex} ${state.dump}`; + } + } + } else if (type === "[object Array]") { + const arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; + if (block && state.dump.length !== 0) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { + state.dump = `&ref_${duplicateIndex}${state.dump}`; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { + state.dump = `&ref_${duplicateIndex} ${state.dump}`; + } + } + } else if (type === "[object String]") { + if (state.tag !== "?") { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new YAMLError(`unacceptable kind of an object to dump ${type}`); + } + + if (state.tag !== null && state.tag !== "?") { + state.dump = `!<${state.tag}> ${state.dump}`; + } + } + + return true; +} + +function inspectNode( + object: Any, + objects: Any[], + duplicatesIndexes: number[], +): void { + if (object !== null && typeof object === "object") { + const index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (let idx = 0, length = object.length; idx < length; idx += 1) { + inspectNode(object[idx], objects, duplicatesIndexes); + } + } else { + const objectKeyList = Object.keys(object); + + for ( + let idx = 0, length = objectKeyList.length; + idx < length; + idx += 1 + ) { + inspectNode(object[objectKeyList[idx]], objects, duplicatesIndexes); + } + } + } + } +} + +function getDuplicateReferences( + object: Record, + state: DumperState, +): void { + const objects: Any[] = [], + duplicatesIndexes: number[] = []; + + inspectNode(object, objects, duplicatesIndexes); + + const length = duplicatesIndexes.length; + for (let index = 0; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +export function dump(input: Any, options?: DumperStateOptions): string { + options = options || {}; + + const state = new DumperState(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + if (writeNode(state, 0, input, true, true)) return `${state.dump}\n`; + + return ""; +} diff --git a/bundler/tests/.cache/deno/4a270a3ae273e586086c47504f5d25a53ea8c73d.ts b/bundler/tests/.cache/deno/4a270a3ae273e586086c47504f5d25a53ea8c73d.ts new file mode 100644 index 00000000000..26a5a2ddf82 --- /dev/null +++ b/bundler/tests/.cache/deno/4a270a3ae273e586086c47504f5d25a53ea8c73d.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std@0.85.0/async/mux_async_iterator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // deno-lint-ignore no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/4a7cbaf4c5614c7bda0d4a1d74db09e9057c1b31.ts b/bundler/tests/.cache/deno/4a7cbaf4c5614c7bda0d4a1d74db09e9057c1b31.ts new file mode 100644 index 00000000000..11767dd8205 --- /dev/null +++ b/bundler/tests/.cache/deno/4a7cbaf4c5614c7bda0d4a1d74db09e9057c1b31.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/_mime.ts + + +const charsetUTF8 = "charset=UTF-8"; + +export const ApplicationGZip = "application/gzip", + ApplicationJSON = "application/json", + ApplicationJSONCharsetUTF8 = ApplicationJSON + "; " + charsetUTF8, + ApplicationJavaScript = "application/javascript", + ApplicationJavaScriptCharsetUTF8 = ApplicationJavaScript + "; " + + charsetUTF8, + ApplicationXML = "application/xml", + ApplicationXMLCharsetUTF8 = ApplicationXML + "; " + charsetUTF8, + TextMarkdown = "text/markdown", + TextMarkdownCharsetUTF8 = TextMarkdown + "; " + charsetUTF8, + TextXML = "text/xml", + TextXMLCharsetUTF8 = TextXML + "; " + charsetUTF8, + ApplicationForm = "application/x-www-form-urlencoded", + ApplicationProtobuf = "application/protobuf", + ApplicationMsgpack = "application/msgpack", + TextHTML = "text/html", + TextHTMLCharsetUTF8 = TextHTML + "; " + charsetUTF8, + TextPlain = "text/plain", + TextPlainCharsetUTF8 = TextPlain + "; " + charsetUTF8, + MultipartForm = "multipart/form-data", + OctetStream = "application/octet-stream", + ImageSVG = "image/svg+xml", + ApplicationWASM = "application/wasm"; + +export const DB: Record = { + ".md": TextMarkdownCharsetUTF8, + ".html": TextHTMLCharsetUTF8, + ".htm": TextHTMLCharsetUTF8, + ".json": ApplicationJSON, + ".map": ApplicationJSON, + ".txt": TextPlainCharsetUTF8, + ".ts": ApplicationJavaScriptCharsetUTF8, + ".tsx": ApplicationJavaScriptCharsetUTF8, + ".js": ApplicationJavaScriptCharsetUTF8, + ".jsx": ApplicationJavaScriptCharsetUTF8, + ".gz": ApplicationGZip, + ".svg": ImageSVG, + ".wasm": ApplicationWASM, +}; diff --git a/bundler/tests/.cache/deno/4a8d0eefeb1d44dba685a7499061fd308ec6f403.ts b/bundler/tests/.cache/deno/4a8d0eefeb1d44dba685a7499061fd308ec6f403.ts new file mode 100644 index 00000000000..27b62a197ae --- /dev/null +++ b/bundler/tests/.cache/deno/4a8d0eefeb1d44dba685a7499061fd308ec6f403.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.85.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/4b1c3924620504c9bb953999d37bb3d7208e1b4a.ts b/bundler/tests/.cache/deno/4b1c3924620504c9bb953999d37bb3d7208e1b4a.ts new file mode 100644 index 00000000000..da596119f0d --- /dev/null +++ b/bundler/tests/.cache/deno/4b1c3924620504c9bb953999d37bb3d7208e1b4a.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/symmetricDifferenceWith.js + + +import _curry3 from './internal/_curry3.js'; +import concat from './concat.js'; +import differenceWith from './differenceWith.js'; + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. Duplication is determined according to the value + * returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifference, R.difference, R.differenceWith + * @example + * + * const eqA = R.eqBy(R.prop('a')); + * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; + * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}]; + * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] + */ +var symmetricDifferenceWith = _curry3(function symmetricDifferenceWith(pred, list1, list2) { + return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1)); +}); +export default symmetricDifferenceWith; diff --git a/bundler/tests/.cache/deno/4b50276e6b96761e9dd16ad7268b7d060fb73e83.ts b/bundler/tests/.cache/deno/4b50276e6b96761e9dd16ad7268b7d060fb73e83.ts new file mode 100644 index 00000000000..5b9afefa9b5 --- /dev/null +++ b/bundler/tests/.cache/deno/4b50276e6b96761e9dd16ad7268b7d060fb73e83.ts @@ -0,0 +1,511 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/runtime/json.ts + + +import type {DeclResolver,ATypeExpr} from "./adl.ts"; +import type * as AST from "./sys/adlast.ts"; +//import * as b64 from 'base64-js'; +import {isVoid, isEnum, scopedNamesEqual} from "./utils.ts"; + +/** A type for json serialised values */ + +export type Json = {} | null; +export type JsonObject = { [member: string]: Json }; +export type JsonArray = Json[]; + +function asJsonObject(jv: Json): JsonObject | undefined { + if (jv instanceof Object && !(jv instanceof Array)) { + return jv as JsonObject; + } + return undefined; +} + +function asJsonArray(jv: Json): JsonArray | undefined{ + if(jv instanceof Array) { + return jv as JsonArray; + } + return undefined; +} + +/** A type alias for values of an Unknown type */ +type Unknown = {}|null; + +/** + * A JsonBinding is a de/serialiser for a give ADL type + */ +export interface JsonBinding { + typeExpr : AST.TypeExpr; + + // Convert a value of type T to Json + toJson (t : T): Json; + + // Parse a json blob into a value of type T. Throws + // JsonParseExceptions on failure. + fromJson(json : Json) : T; + + // Variant of fromJson that throws Errors on failure + fromJsonE(json : Json) : T; +}; + +/** + * Construct a JsonBinding for an arbitrary type expression + */ +export function createJsonBinding(dresolver : DeclResolver, texpr : ATypeExpr) : JsonBinding { + const jb0 = buildJsonBinding(dresolver, texpr.value, {}) as JsonBinding0; + function fromJsonE(json :Json): T { + try { + return jb0.fromJson(json); + } catch (e) { + throw mapJsonException(e); + } + } + return {typeExpr : texpr.value, toJson:jb0.toJson, fromJson:jb0.fromJson, fromJsonE}; +}; + +/** + * Interface for json parsing exceptions. + * Any implementation should properly show the parse error tree. + * + * @interface JsonParseException + */ +export interface JsonParseException { + kind: 'JsonParseException'; + getMessage(): string; + pushField(fieldName: string): void; + pushIndex(index: number): void; + toString(): string; +} + +// Map a JsonException to an Error value +export function mapJsonException(exception:{}): {} { + if (exception && (exception as {kind:string})['kind'] == "JsonParseException") { + const jserr: JsonParseException = exception as JsonParseException; + return new Error(jserr.getMessage()); + } else { + return exception; + } +} + +/** Convenience function for generating a json parse exception. + * @param {string} message - Exception message. + */ +export function jsonParseException(message: string): JsonParseException { + const context: string[] = []; + let createContextString: () => string = () => { + const rcontext: string[] = context.slice(0); + rcontext.push('$'); + rcontext.reverse(); + return rcontext.join('.'); + }; + return { + kind: 'JsonParseException', + getMessage(): string { + return message + ' at ' + createContextString(); + }, + pushField(fieldName: string): void { + context.push(fieldName); + }, + pushIndex(index: number): void { + context.push('[' + index + ']'); + }, + toString(): string { + return this.getMessage(); + } + }; +} + +/** + * Check if a javascript error is of the json parse exception type. + * @param exception The exception to check. + */ +export function isJsonParseException(exception: {}): exception is JsonParseException { + return ( exception).kind === 'JsonParseException'; +} + +interface JsonBinding0 { + toJson (t : T): Json; + fromJson(json : Json) : T; +}; + +interface BoundTypeParams { + [key: string]: JsonBinding0; +} + +function buildJsonBinding(dresolver : DeclResolver, texpr : AST.TypeExpr, boundTypeParams : BoundTypeParams) : JsonBinding0 { + if (texpr.typeRef.kind === "primitive") { + return primitiveJsonBinding(dresolver, texpr.typeRef.value, texpr.parameters, boundTypeParams); + } else if (texpr.typeRef.kind === "reference") { + const ast = dresolver(texpr.typeRef.value); + if (ast.decl.type_.kind === "struct_") { + return structJsonBinding(dresolver, ast.decl.type_.value, texpr.parameters, boundTypeParams); + } else if (ast.decl.type_.kind === "union_") { + const union = ast.decl.type_.value; + if (isEnum(union)) { + return enumJsonBinding(dresolver, union, texpr.parameters, boundTypeParams); + } else { + return unionJsonBinding(dresolver, union, texpr.parameters, boundTypeParams); + } + } else if (ast.decl.type_.kind === "newtype_") { + return newtypeJsonBinding(dresolver, ast.decl.type_.value, texpr.parameters, boundTypeParams); + } else if (ast.decl.type_.kind === "type_") { + return typedefJsonBinding(dresolver, ast.decl.type_.value, texpr.parameters, boundTypeParams); + } + } else if (texpr.typeRef.kind === "typeParam") { + return boundTypeParams[texpr.typeRef.value]; + } + throw new Error("buildJsonBinding : unimplemented ADL type"); +}; + +function primitiveJsonBinding(dresolver : DeclResolver, ptype : string, params : AST.TypeExpr[], boundTypeParams : BoundTypeParams ) : JsonBinding0 { + if (ptype === "String") { return identityJsonBinding("a string", (v) => typeof(v) === 'string'); } + else if (ptype === "Int8") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Void") { return identityJsonBinding("a null", (v) => v === null); } + else if (ptype === "Bool") { return identityJsonBinding("a bool", (v) => typeof(v) === 'boolean'); } + else if (ptype === "Int8") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Int16") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Int32") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Int64") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Word8") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Word16") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Word32") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Word64") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Float") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Double") { return identityJsonBinding("a number", (v) => typeof(v) === 'number'); } + else if (ptype === "Json") { return identityJsonBinding("a json value", (_v) => true); } + else if (ptype === "Bytes") { return bytesJsonBinding(); } + else if (ptype === "Vector") { return vectorJsonBinding(dresolver, params[0], boundTypeParams); } + else if (ptype === "StringMap") { return stringMapJsonBinding(dresolver, params[0], boundTypeParams); } + else if (ptype === "Nullable") { return nullableJsonBinding(dresolver, params[0], boundTypeParams); } + else throw new Error("Unimplemented json binding for primitive " + ptype); +}; + +function identityJsonBinding(expected : string, predicate : (json : Json) => boolean) : JsonBinding0{ + + function toJson(v : T) : Json { + return (v as Unknown as Json); + } + + function fromJson(json : Json) : T { + if( !predicate(json)) { + throw jsonParseException("expected " + expected); + } + return json as Unknown as T; + } + + return {toJson, fromJson}; +} + +function bytesJsonBinding() : JsonBinding0 { + function toJson(v : Uint8Array) : Json { + //return b64.fromByteArray(v); + throw new Error("bytesJsonBinding not implemented"); + } + + function fromJson(json : Json) : Uint8Array { + if (typeof(json) != 'string') { + throw jsonParseException('expected a string'); + } + //return b64.toByteArray(json); + throw new Error("bytesJsonBinding not implemented"); + } + + return {toJson, fromJson}; +} + +function vectorJsonBinding(dresolver : DeclResolver, texpr : AST.TypeExpr, boundTypeParams : BoundTypeParams) : JsonBinding0 { + const elementBinding = once(() => buildJsonBinding(dresolver, texpr, boundTypeParams)); + + function toJson(v : Unknown[]) : Json { + return v.map(elementBinding().toJson); + } + + function fromJson(json : Json) : Unknown[] { + const jarr = asJsonArray(json); + if (jarr == undefined) { + throw jsonParseException('expected an array'); + } + let result : Unknown[] = []; + jarr.forEach( (eljson:Json,i:number) => { + try { + result.push(elementBinding().fromJson(eljson)); + } catch(e) { + if (isJsonParseException(e)) { + e.pushIndex(i); + } + throw e; + } + }); + return result; + } + + return {toJson, fromJson}; +} + +type StringMap = {[key:string]: T}; + +function stringMapJsonBinding(dresolver : DeclResolver, texpr : AST.TypeExpr, boundTypeParams : BoundTypeParams) : JsonBinding0> { + const elementBinding = once(() => buildJsonBinding(dresolver, texpr, boundTypeParams)); + + function toJson(v : StringMap) : Json { + const result: JsonObject = {}; + for (let k in v) { + result[k] = elementBinding().toJson(v[k]); + } + return result; + } + + function fromJson(json : Json) : StringMap { + const jobj = asJsonObject(json); + if (!jobj) { + throw jsonParseException('expected an object'); + } + let result: JsonObject = {}; + for (let k in jobj) { + try { + result[k] = elementBinding().fromJson(jobj[k]); + } catch(e) { + if (isJsonParseException(e)) { + e.pushField(k); + } + } + } + return result; + } + + return {toJson, fromJson}; +} + +function nullableJsonBinding(dresolver : DeclResolver, texpr : AST.TypeExpr, boundTypeParams : BoundTypeParams) : JsonBinding0 { + const elementBinding = once(() => buildJsonBinding(dresolver, texpr, boundTypeParams)); + + function toJson(v : Unknown) : Json { + if (v === null) { + return null; + } + return elementBinding().toJson(v); + } + + function fromJson(json : Json) : Unknown { + if (json === null) { + return null; + } + return elementBinding().fromJson(json); + } + + return {toJson,fromJson}; +} + +interface StructFieldDetails { + field : AST.Field, + jsonBinding : () => JsonBinding0, + buildDefault : () => { value : Unknown } | null +}; + +function structJsonBinding(dresolver : DeclResolver, struct : AST.Struct, params : AST.TypeExpr[], boundTypeParams : BoundTypeParams ) : JsonBinding0 { + const newBoundTypeParams = createBoundTypeParams(dresolver, struct.typeParams, params, boundTypeParams); + const fieldDetails : StructFieldDetails[] = []; + struct.fields.forEach( (field) => { + let buildDefault = once( () => { + if (field.default.kind === "just") { + const json = field.default.value; + return { 'value' : buildJsonBinding(dresolver, field.typeExpr, newBoundTypeParams).fromJson(json)}; + } else { + return null; + } + }); + + fieldDetails.push( { + field : field, + jsonBinding : once(() => buildJsonBinding(dresolver, field.typeExpr, newBoundTypeParams)), + buildDefault : buildDefault, + }); + }); + + function toJson(v0: Unknown) : Json { + const v = v0 as {[key:string]:Unknown}; + const json: JsonObject = {}; + fieldDetails.forEach( (fd) => { + json[fd.field.serializedName] = fd.jsonBinding().toJson(v && v[fd.field.name]); + }); + return json; + } + + function fromJson(json: Json): Unknown { + const jobj = asJsonObject(json); + if (!jobj) { + throw jsonParseException("expected an object"); + } + + const v : {[member:string]: Unknown} = {}; + fieldDetails.forEach( (fd) => { + if (jobj[fd.field.serializedName] === undefined) { + const defaultv = fd.buildDefault(); + if (defaultv === null) { + throw jsonParseException("missing struct field " + fd.field.serializedName ); + } else { + v[fd.field.name] = defaultv.value; + } + } else { + try { + v[fd.field.name] = fd.jsonBinding().fromJson(jobj[fd.field.serializedName]); + } catch(e) { + if (isJsonParseException(e)) { + e.pushField(fd.field.serializedName); + } + throw e; + } + } + }); + return v; + } + + return {toJson, fromJson}; +} + +function enumJsonBinding(_dresolver : DeclResolver, union : AST.Union, _params : AST.TypeExpr[], _boundTypeParams : BoundTypeParams ) : JsonBinding0 { + const fieldSerializedNames : string[] = []; + const fieldNumbers : {[key:string]:number} = {}; + union.fields.forEach( (field,i) => { + fieldSerializedNames.push(field.serializedName); + fieldNumbers[field.serializedName] = i; + }); + + function toJson(v :Unknown) : Json { + return fieldSerializedNames[v as number]; + } + + function fromJson(json : Json) : Unknown { + if (typeof(json) !== 'string') { + throw jsonParseException("expected a string for enum"); + } + const result = fieldNumbers[json as string]; + if (result === undefined) { + throw jsonParseException("invalid string for enum: " + json); + } + return result; + } + + return {toJson, fromJson}; +} + +interface FieldDetails { + field : AST.Field; + isVoid : boolean; + jsonBinding : () => JsonBinding0; +}; + +function unionJsonBinding(dresolver : DeclResolver, union : AST.Union, params : AST.TypeExpr[], boundTypeParams : BoundTypeParams ) : JsonBinding0 { + + + const newBoundTypeParams = createBoundTypeParams(dresolver, union.typeParams, params, boundTypeParams); + const detailsByName : {[key: string]: FieldDetails} = {}; + const detailsBySerializedName : {[key: string]: FieldDetails} = {}; + union.fields.forEach( (field) => { + const details = { + field : field, + isVoid : isVoid(field.typeExpr), + jsonBinding : once(() => buildJsonBinding(dresolver, field.typeExpr, newBoundTypeParams)) + }; + detailsByName[field.name] = details; + detailsBySerializedName[field.serializedName] = details; + }); + + function toJson(v0 : Unknown) : Json { + const v = v0 as {kind:string, value:Unknown}; + const details = detailsByName[v.kind]; + if (details.isVoid) { + return details.field.serializedName; + } else { + const result: JsonObject = {}; + result[details.field.serializedName] = details.jsonBinding().toJson(v.value); + return result; + } + } + + function lookupDetails(serializedName : string) { + let details = detailsBySerializedName[serializedName]; + if (details === undefined) { + throw jsonParseException("invalid union field " + serializedName); + } + return details; + } + + function fromJson(json : Json) : Unknown { + if (typeof(json) === "string") { + let details = lookupDetails(json); + if (!details.isVoid) { + throw jsonParseException("union field " + json + "needs an associated value"); + } + return { kind : details.field.name }; + } + const jobj = asJsonObject(json); + if (jobj) { + for (let k in jobj) { + let details = lookupDetails(k); + try { + return { + kind : details.field.name, + value : details.jsonBinding().fromJson(jobj[k]) + } + } catch(e) { + if (isJsonParseException(e)) { + e.pushField(k); + } + throw e; + } + } + throw jsonParseException("union without a property"); + } else { + throw jsonParseException("expected an object or string"); + } + } + + return {toJson, fromJson}; +} + +function newtypeJsonBinding(dresolver : DeclResolver, newtype : AST.NewType, params : AST.TypeExpr[], boundTypeParams : BoundTypeParams ) : JsonBinding0 { + const newBoundTypeParams = createBoundTypeParams(dresolver, newtype.typeParams, params, boundTypeParams); + return buildJsonBinding(dresolver, newtype.typeExpr, newBoundTypeParams); +} + +function typedefJsonBinding(dresolver : DeclResolver, typedef : AST.TypeDef, params : AST.TypeExpr[], boundTypeParams : BoundTypeParams ) : JsonBinding0 { + const newBoundTypeParams = createBoundTypeParams(dresolver, typedef.typeParams, params, boundTypeParams); + return buildJsonBinding(dresolver, typedef.typeExpr, newBoundTypeParams); +} + +function createBoundTypeParams(dresolver : DeclResolver, paramNames : string[], paramTypes : AST.TypeExpr[], boundTypeParams : BoundTypeParams) : BoundTypeParams +{ + let result : BoundTypeParams = {}; + paramNames.forEach( (paramName,i) => { + result[paramName] = buildJsonBinding(dresolver,paramTypes[i], boundTypeParams); + }); + return result; +} + +/** + * Helper function that takes a thunk, and evaluates it only on the first call. Subsequent + * calls return the previous value + */ +function once(run : () => T) : () => T { + let result : T | null = null; + return () => { + if(result === null) { + result = run(); + } + return result; + }; +} + +/** + * Get the value of an annotation of type T + */ +export function getAnnotation(jb: JsonBinding, annotations: AST.Annotations): T | undefined { + if (jb.typeExpr.typeRef.kind != 'reference') { + return undefined; + } + const annScopedName :AST.ScopedName = jb.typeExpr.typeRef.value; + const ann = annotations.find(el => scopedNamesEqual(el.v1, annScopedName)); + if (ann === undefined) { + return undefined; + } + return jb.fromJsonE(ann.v2); +} diff --git a/bundler/tests/.cache/deno/4b9432109028093ba4d366dcdaadda6569aacd8a.ts b/bundler/tests/.cache/deno/4b9432109028093ba4d366dcdaadda6569aacd8a.ts new file mode 100644 index 00000000000..a82ad5090c1 --- /dev/null +++ b/bundler/tests/.cache/deno/4b9432109028093ba4d366dcdaadda6569aacd8a.ts @@ -0,0 +1,67 @@ +// Loaded from https://deno.land/std@0.85.0/io/streams.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Create a `Writer` from a `WritableStreamDefaultReader`. */ +export function writerFromStreamWriter( + streamWriter: WritableStreamDefaultWriter, +): Deno.Writer { + return { + async write(p: Uint8Array): Promise { + await streamWriter.ready; + await streamWriter.write(p); + return p.length; + }, + }; +} + +/** Create a `Reader` from a `ReadableStreamDefaultReader`. */ +export function readerFromStreamReader( + streamReader: ReadableStreamDefaultReader, +): Deno.Reader { + const buffer = new Deno.Buffer(); + + return { + async read(p: Uint8Array): Promise { + if (buffer.empty()) { + const res = await streamReader.read(); + if (res.done) { + return null; // EOF + } + + await Deno.writeAll(buffer, res.value); + } + + return buffer.read(p); + }, + }; +} + +/** Create a `WritableStream` from a `Writer`. */ +export function writableStreamFromWriter( + writer: Deno.Writer, +): WritableStream { + return new WritableStream({ + async write(chunk) { + await Deno.writeAll(writer, chunk); + }, + }); +} + +/** Create a `ReadableStream` from an `AsyncIterator`. */ +export function readableStreamFromAsyncIterator( + iterator: AsyncIterableIterator, +): ReadableStream { + return new ReadableStream({ + async pull(controller) { + const { value, done } = await iterator.next(); + + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + }); +} diff --git a/bundler/tests/.cache/deno/4bceeb6a6b3228665a8a02883e92962cd14cf907.ts b/bundler/tests/.cache/deno/4bceeb6a6b3228665a8a02883e92962cd14cf907.ts new file mode 100644 index 00000000000..ab5003d5a86 --- /dev/null +++ b/bundler/tests/.cache/deno/4bceeb6a6b3228665a8a02883e92962cd14cf907.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_dropLastWhile.js + + +import slice from '../slice.js'; + +export default function dropLastWhile(pred, xs) { + var idx = xs.length - 1; + while (idx >= 0 && pred(xs[idx])) { + idx -= 1; + } + return slice(0, idx + 1, xs); +} diff --git a/bundler/tests/.cache/deno/4be4f4c7b49a84985f8c94acbeb22868943dea66.ts b/bundler/tests/.cache/deno/4be4f4c7b49a84985f8c94acbeb22868943dea66.ts new file mode 100644 index 00000000000..347c8859ad8 --- /dev/null +++ b/bundler/tests/.cache/deno/4be4f4c7b49a84985f8c94acbeb22868943dea66.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/aperture.js + + +import _aperture from './internal/_aperture.js'; +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xaperture from './internal/_xaperture.js'; + + +/** + * Returns a new list, composed of n-tuples of consecutive elements. If `n` is + * greater than the length of the list, an empty list is returned. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @param {Number} n The size of the tuples to create + * @param {Array} list The list to split into `n`-length tuples + * @return {Array} The resulting list of `n`-length tuples + * @see R.transduce + * @example + * + * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] + * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] + * R.aperture(7, [1, 2, 3, 4, 5]); //=> [] + */ +var aperture = _curry2(_dispatchable([], _xaperture, _aperture)); +export default aperture; diff --git a/bundler/tests/.cache/deno/4c1d6cffc7774275592739c8397f71cd4544e9c7.ts b/bundler/tests/.cache/deno/4c1d6cffc7774275592739c8397f71cd4544e9c7.ts new file mode 100644 index 00000000000..d9c83285483 --- /dev/null +++ b/bundler/tests/.cache/deno/4c1d6cffc7774275592739c8397f71cd4544e9c7.ts @@ -0,0 +1,310 @@ +// Loaded from https://deno.land/x/mysql/src/connection.ts + + +import { byteFormat, delay } from "../deps.ts"; +import { ClientConfig } from "./client.ts"; +import { + ConnnectionError, + ProtocolError, + ReadError, + ResponseTimeoutError, +} from "./constant/errors.ts"; +import { log } from "./logger.ts"; +import { buildAuth } from "./packets/builders/auth.ts"; +import { buildQuery } from "./packets/builders/query.ts"; +import { ReceivePacket, SendPacket } from "./packets/packet.ts"; +import { parseError } from "./packets/parsers/err.ts"; +import { + AuthResult, + parseAuth, + parseHandshake, +} from "./packets/parsers/handshake.ts"; +import { FieldInfo, parseField, parseRow } from "./packets/parsers/result.ts"; +import { PacketType } from "./constant/packet.ts"; +import authPlugin from "./auth_plugin/index.ts"; + +/** + * Connection state + */ +export enum ConnectionState { + CONNECTING, + CONNECTED, + CLOSING, + CLOSED, +} + +/** + * Result for excute sql + */ +export type ExecuteResult = { + affectedRows?: number; + lastInsertId?: number; + fields?: FieldInfo[]; + rows?: any[]; +}; + +/** Connection for mysql */ +export class Connection { + state: ConnectionState = ConnectionState.CONNECTING; + capabilities: number = 0; + serverVersion: string = ""; + + private conn?: Deno.Conn = undefined; + private _timedOut = false; + + get remoteAddr(): string { + return this.config.socketPath + ? `unix:${this.config.socketPath}` + : `${this.config.hostname}:${this.config.port}`; + } + + constructor(readonly config: ClientConfig) {} + + private async _connect() { + // TODO: implement connect timeout + const { hostname, port = 3306, socketPath, username = "", password } = + this.config; + log.info(`connecting ${this.remoteAddr}`); + this.conn = !socketPath + ? await Deno.connect({ + transport: "tcp", + hostname, + port, + }) + : await Deno.connect({ + transport: "unix", + path: socketPath, + } as any); + + try { + let receive = await this.nextPacket(); + const handshakePacket = parseHandshake(receive.body); + const data = buildAuth(handshakePacket, { + username, + password, + db: this.config.db, + }); + + await new SendPacket(data, 0x1).send(this.conn); + + this.state = ConnectionState.CONNECTING; + this.serverVersion = handshakePacket.serverVersion; + this.capabilities = handshakePacket.serverCapabilities; + + receive = await this.nextPacket(); + + const authResult = parseAuth(receive); + let handler; + + switch (authResult) { + case AuthResult.AuthMoreRequired: + const adaptedPlugin = + (authPlugin as any)[handshakePacket.authPluginName]; + handler = adaptedPlugin; + break; + case AuthResult.MethodMismatch: + // TODO: Negotiate + throw new Error("Currently cannot support auth method mismatch!"); + } + + let result; + if (handler) { + result = handler.start(handshakePacket.seed, password!); + while (!result.done) { + if (result.data) { + const sequenceNumber = receive.header.no + 1; + await new SendPacket(result.data, sequenceNumber).send(this.conn); + receive = await this.nextPacket(); + } + if (result.quickRead) { + await this.nextPacket(); + } + if (result.next) { + result = result.next(receive); + } + } + } + + const header = receive.body.readUint8(); + if (header === 0xff) { + const error = parseError(receive.body, this); + log.error(`connect error(${error.code}): ${error.message}`); + this.close(); + throw new Error(error.message); + } else { + log.info(`connected to ${this.remoteAddr}`); + this.state = ConnectionState.CONNECTED; + } + + if (this.config.charset) { + await this.execute(`SET NAMES ${this.config.charset}`); + } + } catch (error) { + // Call close() to avoid leaking socket. + this.close(); + throw error; + } + } + + /** Connect to database */ + async connect(): Promise { + await this._connect(); + } + + private async nextPacket(): Promise { + if (!this.conn) { + throw new ConnnectionError("Not connected"); + } + + const timeoutTimer = this.config.timeout + ? setTimeout( + this._timeoutCallback, + this.config.timeout, + ) + : null; + let packet: ReceivePacket | null; + try { + packet = await new ReceivePacket().parse(this.conn!); + } catch (error) { + if (this._timedOut) { + // Connection has been closed by timeoutCallback. + throw new ResponseTimeoutError("Connection read timed out"); + } + timeoutTimer && clearTimeout(timeoutTimer); + this.close(); + throw error; + } + timeoutTimer && clearTimeout(timeoutTimer); + + if (!packet) { + // Connection is half-closed by the remote host. + // Call close() to avoid leaking socket. + this.close(); + throw new ReadError("Connection closed unexpectedly"); + } + if (packet.type === PacketType.ERR_Packet) { + packet.body.skip(1); + const error = parseError(packet.body, this); + throw new Error(error.message); + } + return packet!; + } + + private _timeoutCallback = () => { + log.info("connection read timed out"); + this._timedOut = true; + this.close(); + }; + + /** + * Check if database server version is less than 5.7.0 + * + * MySQL version is "x.y.z" + * eg "5.5.62" + * + * MariaDB version is "5.5.5-x.y.z-MariaDB[-build-infos]" for versions after 5 (10.0 etc) + * eg "5.5.5-10.4.10-MariaDB-1:10.4.10+maria~bionic" + * and "x.y.z-MariaDB-[build-infos]" for 5.x versions + * eg "5.5.64-MariaDB-1~trusty" + */ + private lessThan5_7(): Boolean { + const version = this.serverVersion; + if (!version.includes("MariaDB")) return version < "5.7.0"; + const segments = version.split("-"); + // MariaDB v5.x + if (segments[1] === "MariaDB") return segments[0] < "5.7.0"; + // MariaDB v10+ + return false; + } + + /** Check if the MariaDB version is 10.0 or 10.1 */ + private isMariaDBAndVersion10_0Or10_1(): Boolean { + const version = this.serverVersion; + if (!version.includes("MariaDB")) return false; + return version.includes("5.5.5-10.1") || version.includes("5.5.5-10.0"); + } + + /** Close database connection */ + close(): void { + if (this.state != ConnectionState.CLOSED) { + log.info("close connection"); + this.conn?.close(); + this.state = ConnectionState.CLOSED; + } + } + + /** + * excute query sql + * @param sql query sql string + * @param params query params + */ + async query(sql: string, params?: any[]): Promise { + const result = await this.execute(sql, params); + if (result && result.rows) { + return result.rows; + } else { + return result; + } + } + + /** + * excute sql + * @param sql sql string + * @param params query params + */ + async execute(sql: string, params?: any[]): Promise { + if (this.state != ConnectionState.CONNECTED) { + if (this.state == ConnectionState.CLOSED) { + throw new ConnnectionError("Connection is closed"); + } else { + throw new ConnnectionError("Must be connected first"); + } + } + const data = buildQuery(sql, params); + try { + await new SendPacket(data, 0).send(this.conn!); + let receive = await this.nextPacket(); + if (receive.type === PacketType.OK_Packet) { + receive.body.skip(1); + return { + affectedRows: receive.body.readEncodedLen(), + lastInsertId: receive.body.readEncodedLen(), + }; + } else if (receive.type !== PacketType.Result) { + throw new ProtocolError(); + } + let fieldCount = receive.body.readEncodedLen(); + const fields: FieldInfo[] = []; + while (fieldCount--) { + const packet = await this.nextPacket(); + if (packet) { + const field = parseField(packet.body); + fields.push(field); + } + } + + const rows = []; + if (this.lessThan5_7() || this.isMariaDBAndVersion10_0Or10_1()) { + // EOF(less than 5.7 or mariadb version is 10.0 or 10.1) + receive = await this.nextPacket(); + if (receive.type !== PacketType.EOF_Packet) { + throw new ProtocolError(); + } + } + + while (true) { + receive = await this.nextPacket(); + if (receive.type === PacketType.EOF_Packet) { + break; + } else { + const row = parseRow(receive.body, fields); + rows.push(row); + } + } + return { rows, fields }; + } catch (error) { + this.close(); + throw error; + } + } +} diff --git a/bundler/tests/.cache/deno/4c200ec131b7d33cb3d5247a2b3f9caf76a94909.ts b/bundler/tests/.cache/deno/4c200ec131b7d33cb3d5247a2b3f9caf76a94909.ts new file mode 100644 index 00000000000..526e89320cf --- /dev/null +++ b/bundler/tests/.cache/deno/4c200ec131b7d33cb3d5247a2b3f9caf76a94909.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lensIndex.js + + +import _curry1 from './internal/_curry1.js'; +import lens from './lens.js'; +import nth from './nth.js'; +import update from './update.js'; + + +/** + * Returns a lens whose focus is the specified index. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Number -> Lens s a + * @param {Number} n + * @return {Lens} + * @see R.view, R.set, R.over, R.nth + * @example + * + * const headLens = R.lensIndex(0); + * + * R.view(headLens, ['a', 'b', 'c']); //=> 'a' + * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] + * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c'] + */ +var lensIndex = _curry1(function lensIndex(n) { + return lens(nth(n), update(n)); +}); +export default lensIndex; diff --git a/bundler/tests/.cache/deno/4c2dca625f369b898974fdb3ea469f42d4dc7e64.ts b/bundler/tests/.cache/deno/4c2dca625f369b898974fdb3ea469f42d4dc7e64.ts new file mode 100644 index 00000000000..c754ad156cf --- /dev/null +++ b/bundler/tests/.cache/deno/4c2dca625f369b898974fdb3ea469f42d4dc7e64.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/until.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Takes a predicate, a transformation function, and an initial value, + * and returns a value of the same type as the initial value. + * It does so by applying the transformation until the predicate is satisfied, + * at which point it returns the satisfactory value. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} fn The iterator function + * @param {*} init Initial value + * @return {*} Final value that satisfies predicate + * @example + * + * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128 + */ +var until = _curry3(function until(pred, fn, init) { + var val = init; + while (!pred(val)) { + val = fn(val); + } + return val; +}); +export default until; diff --git a/bundler/tests/.cache/deno/4c3d0ee3ac04e3efbe0b93d3bfbba7b50168341b.ts b/bundler/tests/.cache/deno/4c3d0ee3ac04e3efbe0b93d3bfbba7b50168341b.ts new file mode 100644 index 00000000000..56843669ffd --- /dev/null +++ b/bundler/tests/.cache/deno/4c3d0ee3ac04e3efbe0b93d3bfbba7b50168341b.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/tssCompare.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +// This was inspired by https://github.com/suryagh/tsscmp which provides a +// timing safe string comparison to avoid timing attacks as described in +// https://codahale.com/a-lesson-in-timing-attacks/. + +import { assert, HmacSha256 } from "./deps.ts"; + +function compareArrayBuffer(a: ArrayBuffer, b: ArrayBuffer): boolean { + assert(a.byteLength === b.byteLength, "ArrayBuffer lengths must match."); + const va = new DataView(a); + const vb = new DataView(b); + const length = va.byteLength; + let out = 0; + let i = -1; + while (++i < length) { + out |= va.getUint8(i) ^ vb.getUint8(i); + } + return out === 0; +} + +/** Compare two strings, Uint8Arrays, ArrayBuffers, or arrays of numbers in a + * way that avoids timing based attacks on the comparisons on the values. + * + * The function will return `true` if the values match, or `false`, if they + * do not match. */ +export function compare( + a: string | number[] | ArrayBuffer | Uint8Array, + b: string | number[] | ArrayBuffer | Uint8Array, +): boolean { + const key = new Uint8Array(32); + globalThis.crypto.getRandomValues(key); + const ah = (new HmacSha256(key)).update(a).arrayBuffer(); + const bh = (new HmacSha256(key)).update(b).arrayBuffer(); + return compareArrayBuffer(ah, bh); +} diff --git a/bundler/tests/.cache/deno/4c51a1dc3d98f85e68bccc8940f9d992cf6f3bec.ts b/bundler/tests/.cache/deno/4c51a1dc3d98f85e68bccc8940f9d992cf6f3bec.ts new file mode 100644 index 00000000000..4ff19f8357f --- /dev/null +++ b/bundler/tests/.cache/deno/4c51a1dc3d98f85e68bccc8940f9d992cf6f3bec.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isHash.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type Algorithm = + | 'md5' + | 'md4' + | 'sha1' + | 'sha256' + | 'sha384' + | 'sha512' + | 'ripemd128' + | 'ripemd160' + | 'tiger128' + | 'tiger160' + | 'tiger192' + | 'crc32' + | 'crc32b'; + +/** + * @ignore + */ +const lengths = { + md5: 32, + md4: 32, + sha1: 40, + sha256: 64, + sha384: 96, + sha512: 128, + ripemd128: 32, + ripemd160: 40, + tiger128: 32, + tiger160: 40, + tiger192: 48, + crc32: 8, + crc32b: 8, +}; + +export const isHash = (str: string, algorithm: Algorithm) => { + assertString(str); + const hash = new RegExp(`^[a-fA-F0-9]{${lengths[algorithm]}}$`); + return hash.test(str); +}; diff --git a/bundler/tests/.cache/deno/4c8bf1516cc3178a1924a1bb5cf7f135b84b8759.ts b/bundler/tests/.cache/deno/4c8bf1516cc3178a1924a1bb5cf7f135b84b8759.ts new file mode 100644 index 00000000000..8e282983b89 --- /dev/null +++ b/bundler/tests/.cache/deno/4c8bf1516cc3178a1924a1bb5cf7f135b84b8759.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isEmpty.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type EmptyOptions = { + ignoreWhitespace?: boolean; +}; + +/** + * @ignore + */ +const defaultEmptyOptions: EmptyOptions = { + ignoreWhitespace: false, +}; + +export const isEmpty = (str: string, options?: EmptyOptions) => { + assertString(str); + options = { ...defaultEmptyOptions, ...options }; + + return (options.ignoreWhitespace ? str.trim().length : str.length) === 0; +}; diff --git a/bundler/tests/.cache/deno/4d06f66f9ce1249dbe8735b482ed30a1d8f6f01c.ts b/bundler/tests/.cache/deno/4d06f66f9ce1249dbe8735b482ed30a1d8f6f01c.ts new file mode 100644 index 00000000000..0b71b53a893 --- /dev/null +++ b/bundler/tests/.cache/deno/4d06f66f9ce1249dbe8735b482ed30a1d8f6f01c.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/move.js + + +import _curry3 from './internal/_curry3.js'; + +/** + * Move an item, at index `from`, to index `to`, in a list of elements. + * A new list will be created containing the new elements order. + * + * @func + * @memberOf R + * @since v0.27.1 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} from The source index + * @param {Number} to The destination index + * @param {Array} list The list which will serve to realise the move + * @return {Array} The new list reordered + * @example + * + * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f'] + * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation + */ +var move = _curry3(function(from, to, list) { + var length = list.length; + var result = list.slice(); + var positiveFrom = from < 0 ? length + from : from; + var positiveTo = to < 0 ? length + to : to; + var item = result.splice(positiveFrom, 1); + + return positiveFrom < 0 || positiveFrom >= list.length + || positiveTo < 0 || positiveTo >= list.length + ? list + : [] + .concat(result.slice(0, positiveTo)) + .concat(item) + .concat(result.slice(positiveTo, list.length)); +}); + +export default move; diff --git a/bundler/tests/.cache/deno/4d78eabd363df43550bdb559ec9f6a29a3dbf4e6.ts b/bundler/tests/.cache/deno/4d78eabd363df43550bdb559ec9f6a29a3dbf4e6.ts new file mode 100644 index 00000000000..cd62d46c7e8 --- /dev/null +++ b/bundler/tests/.cache/deno/4d78eabd363df43550bdb559ec9f6a29a3dbf4e6.ts @@ -0,0 +1,67 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/mod.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +export { Application } from "./application.ts"; +export type { + ApplicationOptions, + ListenOptions, + ListenOptionsBase, + ListenOptionsTls, + State, +} from "./application.ts"; +export type { + Body, + BodyForm, + BodyFormData, + BodyJson, + BodyOptions, + BodyRaw, + BodyReader, + BodyText, + BodyType, + BodyUndefined, +} from "./body.ts"; +export { Context } from "./context.ts"; +export type { ContextSendOptions } from "./context.ts"; +export * as helpers from "./helpers.ts"; +export { Cookies } from "./cookies.ts"; +export type { CookiesGetOptions, CookiesSetDeleteOptions } from "./cookies.ts"; +export { HttpError, httpErrors, isHttpError } from "./httpError.ts"; +export { compose as composeMiddleware } from "./middleware.ts"; +export type { Middleware } from "./middleware.ts"; +export { FormDataReader } from "./multipart.ts"; +export type { + FormDataBody, + FormDataFile, + FormDataReadOptions, +} from "./multipart.ts"; + +export { Request } from "./request.ts"; +export { REDIRECT_BACK, Response } from "./response.ts"; +export { Router } from "./router.ts"; +export type { + Route, + RouteParams, + RouterAllowedMethodsOptions, + RouterContext, + RouterMiddleware, + RouterOptions, + RouterParamMiddleware, +} from "./router.ts"; +export { send } from "./send.ts"; +export type { SendOptions } from "./send.ts"; +export { ServerSentEvent, ServerSentEventTarget } from "./server_sent_event.ts"; +export type { ServerSentEventInit } from "./server_sent_event.ts"; +export type { + ErrorStatus, + HTTPMethods, + RedirectStatus, + ServerRequest, + ServerResponse, +} from "./types.d.ts"; +export { isErrorStatus, isRedirectStatus } from "./util.ts"; + +// Re-exported from `net` +export { Status, STATUS_TEXT } from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/4d8f05cb65c48defd3c21a3ade45b55f8baf7ab4.ts b/bundler/tests/.cache/deno/4d8f05cb65c48defd3c21a3ade45b55f8baf7ab4.ts new file mode 100644 index 00000000000..ff3ce0b561c --- /dev/null +++ b/bundler/tests/.cache/deno/4d8f05cb65c48defd3c21a3ade45b55f8baf7ab4.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/parse.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { CbFunction, load, loadAll } from "./loader/loader.ts"; +import type { LoaderStateOptions } from "./loader/loader_state.ts"; + +export type ParseOptions = LoaderStateOptions; + +/** + * Parses `content` as single YAML document. + * + * Returns a JavaScript object or throws `YAMLException` on error. + * By default, does not support regexps, functions and undefined. This method is safe for untrusted data. + * + */ +export function parse(content: string, options?: ParseOptions): unknown { + return load(content, options); +} + +/** + * Same as `parse()`, but understands multi-document sources. + * Applies iterator to each document if specified, or returns array of documents. + */ +export function parseAll( + content: string, + iterator?: CbFunction, + options?: ParseOptions, +): unknown { + return loadAll(content, iterator, options); +} diff --git a/bundler/tests/.cache/deno/4da5a949f20e99f83a7046ef0c1e8ed0d4625536.ts b/bundler/tests/.cache/deno/4da5a949f20e99f83a7046ef0c1e8ed0d4625536.ts new file mode 100644 index 00000000000..2bcf5fa92ae --- /dev/null +++ b/bundler/tests/.cache/deno/4da5a949f20e99f83a7046ef0c1e8ed0d4625536.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/fromPairs.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Creates a new object from a list key-value pairs. If a key appears in + * multiple pairs, the rightmost pair is included in the object. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [[k,v]] -> {k: v} + * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object. + * @return {Object} The object made by pairing up `keys` and `values`. + * @see R.toPairs, R.pair + * @example + * + * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} + */ +var fromPairs = _curry1(function fromPairs(pairs) { + var result = {}; + var idx = 0; + while (idx < pairs.length) { + result[pairs[idx][0]] = pairs[idx][1]; + idx += 1; + } + return result; +}); +export default fromPairs; diff --git a/bundler/tests/.cache/deno/4df71753733ad4b2cc601bb3b716efd0c9147bfd.ts b/bundler/tests/.cache/deno/4df71753733ad4b2cc601bb3b716efd0c9147bfd.ts new file mode 100644 index 00000000000..611a38bad48 --- /dev/null +++ b/bundler/tests/.cache/deno/4df71753733ad4b2cc601bb3b716efd0c9147bfd.ts @@ -0,0 +1,91 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isFQDN.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type FQDNOptions = { + /** + * @default true + */ + requireTLD?: boolean; + + /** + * @default false + */ + allowUnderscores?: boolean; + + /** + * @default false + */ + allowTrailingDot?: boolean; +}; + +/** + * @ignore + */ +const defaultFQDNOptions: FQDNOptions = { + requireTLD: true, + allowUnderscores: false, + allowTrailingDot: false, +}; + +export const isFQDN = (str: string, options?: FQDNOptions) => { + assertString(str); + options = { ...defaultFQDNOptions, ...options }; + + // Remove the optional trailing dot before checking validity + if (options.allowTrailingDot && str[str.length - 1] === '.') { + str = str.substring(0, str.length - 1); + } + + const parts = str.split('.'); + + for (let i = 0; i < parts.length; i++) { + if (parts[i].length > 63) { + return false; + } + } + + if (options.requireTLD) { + const tld = parts.pop() as string; + + if ( + !parts.length || + !/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld) + ) { + return false; + } + + // disallow spaces && special characers + if ( + /[\s\u2002-\u200B\u202F\u205F\u3000\uFEFF\uDB40\uDC20\u00A9\uFFFD]/.test( + tld + ) + ) { + return false; + } + } + + for (let part, i = 0; i < parts.length; i++) { + part = parts[i]; + + if (options.allowUnderscores) { + part = part.replace(/_/g, ''); + } + + if (!/^[a-z\u00a1-\uffff0-9-]+$/i.test(part)) { + return false; + } + + // disallow full-width chars + if (/[\uff01-\uff5e]/.test(part)) { + return false; + } + + if (part[0] === '-' || part[part.length - 1] === '-') { + return false; + } + } + return true; +}; diff --git a/bundler/tests/.cache/deno/4df77deede2cb6099a13a44bba50a480d83bdb25.ts b/bundler/tests/.cache/deno/4df77deede2cb6099a13a44bba50a480d83bdb25.ts new file mode 100644 index 00000000000..76f201ed124 --- /dev/null +++ b/bundler/tests/.cache/deno/4df77deede2cb6099a13a44bba50a480d83bdb25.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMultibyte.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const multibyte = /[^\x00-\x7F]/; + +export const isMultibyte = (str: string) => { + assertString(str); + return multibyte.test(str); +}; diff --git a/bundler/tests/.cache/deno/4dfa8dc502cb1805a4670e086a9fd75346583e12.ts b/bundler/tests/.cache/deno/4dfa8dc502cb1805a4670e086a9fd75346583e12.ts new file mode 100644 index 00000000000..9b9445132e7 --- /dev/null +++ b/bundler/tests/.cache/deno/4dfa8dc502cb1805a4670e086a9fd75346583e12.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/NoUndefinedVariablesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * No undefined variables + * + * A GraphQL operation is only valid if all variables encountered, both directly + * and via fragment spreads, are defined by that operation. + */ +export function NoUndefinedVariablesRule(context) { + let variableNameDefined = Object.create(null); + return { + OperationDefinition: { + enter() { + variableNameDefined = Object.create(null); + }, + + leave(operation) { + const usages = context.getRecursiveVariableUsages(operation); + + for (const { + node + } of usages) { + const varName = node.name.value; + + if (variableNameDefined[varName] !== true) { + context.reportError(new GraphQLError(operation.name ? `Variable "$${varName}" is not defined by operation "${operation.name.value}".` : `Variable "$${varName}" is not defined.`, [node, operation])); + } + } + } + + }, + + VariableDefinition(node) { + variableNameDefined[node.variable.name.value] = true; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/4e397aa4df73759f04ad893d3f35dd7bdfb7f429.ts b/bundler/tests/.cache/deno/4e397aa4df73759f04ad893d3f35dd7bdfb7f429.ts new file mode 100644 index 00000000000..efbb3590b97 --- /dev/null +++ b/bundler/tests/.cache/deno/4e397aa4df73759f04ad893d3f35dd7bdfb7f429.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/version.js + + +/** + * Note: This file is autogenerated using "resources/gen-version.js" script and + * automatically updated by "yarn version" command. + */ + +/** + * A string containing the version of the GraphQL.js library + */ +export const version = '15.0.0'; +/** + * An object containing the components of the GraphQL.js version string + */ + +export const versionInfo = Object.freeze({ + major: 15, + minor: 0, + patch: 0, + preReleaseTag: null +}); \ No newline at end of file diff --git a/bundler/tests/.cache/deno/4e3a9af7dd181cf30d456cf3772f154428805133.ts b/bundler/tests/.cache/deno/4e3a9af7dd181cf30d456cf3772f154428805133.ts new file mode 100644 index 00000000000..38fe92cdb4b --- /dev/null +++ b/bundler/tests/.cache/deno/4e3a9af7dd181cf30d456cf3772f154428805133.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.81.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/4e3d3275b0d4fb951769bfb64312bb499460d572.ts b/bundler/tests/.cache/deno/4e3d3275b0d4fb951769bfb64312bb499460d572.ts new file mode 100644 index 00000000000..f4273544f27 --- /dev/null +++ b/bundler/tests/.cache/deno/4e3d3275b0d4fb951769bfb64312bb499460d572.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/isInteger.js + + +/* eslint-disable no-redeclare */ +// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441 +const isInteger = Number.isInteger || function (value) { + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; +}; + +export default isInteger; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/4e9a17cde98e1a8d8343a4082871fb8aea8b8418.ts b/bundler/tests/.cache/deno/4e9a17cde98e1a8d8343a4082871fb8aea8b8418.ts new file mode 100644 index 00000000000..b5827178ea2 --- /dev/null +++ b/bundler/tests/.cache/deno/4e9a17cde98e1a8d8343a4082871fb8aea8b8418.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeDeepRight.js + + +import _curry2 from './internal/_curry2.js'; +import mergeDeepWithKey from './mergeDeepWithKey.js'; + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} + */ +var mergeDeepRight = _curry2(function mergeDeepRight(lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return rVal; + }, lObj, rObj); +}); +export default mergeDeepRight; diff --git a/bundler/tests/.cache/deno/4f0ca3a2d31f06654fb104bbaa8282c00c877f6c.ts b/bundler/tests/.cache/deno/4f0ca3a2d31f06654fb104bbaa8282c00c877f6c.ts new file mode 100644 index 00000000000..3d5152adc77 --- /dev/null +++ b/bundler/tests/.cache/deno/4f0ca3a2d31f06654fb104bbaa8282c00c877f6c.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.79.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/4fc4bb197b025f928c8e2d7baacc545eae5cf051.ts b/bundler/tests/.cache/deno/4fc4bb197b025f928c8e2d7baacc545eae5cf051.ts new file mode 100644 index 00000000000..0f748ae69e4 --- /dev/null +++ b/bundler/tests/.cache/deno/4fc4bb197b025f928c8e2d7baacc545eae5cf051.ts @@ -0,0 +1,96 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/index.js + + +/** + * GraphQL.js provides a reference implementation for the GraphQL specification + * but is also a useful utility for operating on GraphQL files and building + * sophisticated tools. + * + * This primary module exports a general purpose function for fulfilling all + * steps of the GraphQL specification in a single operation, but also includes + * utilities for every part of the GraphQL specification: + * + * - Parsing the GraphQL language. + * - Building a GraphQL type schema. + * - Validating a GraphQL request against a type schema. + * - Executing a GraphQL request against a type schema. + * + * This also includes utility functions for operating on GraphQL types and + * GraphQL documents to facilitate building tools. + * + * You may also import from each sub-directory directly. For example, the + * following two import statements are equivalent: + * + * import { parse } from 'graphql.js'; + * import { parse } from 'graphql/language.js'; + */ +// The GraphQL.js version info. +export { version, versionInfo } from './version.js'; // The primary entry point into fulfilling a GraphQL request. + +export { graphql, graphqlSync } from './graphql.js'; // Create and operate on GraphQL type definitions and schema. + +export { // Definitions +GraphQLSchema, GraphQLDirective, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull // Standard GraphQL Scalars +, specifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID // Built-in Directives defined by the Spec +, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective // "Enum" of Type Kinds +, TypeKind // Constant Deprecation Reason +, DEFAULT_DEPRECATION_REASON // GraphQL Types for introspection. +, introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind // Meta-field definitions. +, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef // Predicates +, isSchema, isDirective, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective // Assertions +, assertSchema, assertDirective, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType // Un-modifiers +, getNullableType, getNamedType // Validate GraphQL schema. +, validateSchema, assertValidSchema } from './type/index.js'; +// Parse and operate on GraphQL language source files. +export { Source, getLocation // Print source location +, printLocation, printSourceLocation // Lex +, Lexer, TokenKind // Parse +, parse, parseValue, parseType // Print +, print // Visit +, visit, visitInParallel, getVisitFn, BREAK, Kind, DirectiveLocation // Predicates +, isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './language/index.js'; +// Execute GraphQL queries. +export { execute, defaultFieldResolver, defaultTypeResolver, responsePathAsArray, getDirectiveValues } from './execution/index.js'; +export { subscribe, createSourceEventStream } from './subscription/index.js'; +// Validate GraphQL documents. +export { validate, ValidationContext // All validation rules in the GraphQL Specification. +, specifiedRules // Individual validation rules. +, ExecutableDefinitionsRule, FieldsOnCorrectTypeRule, FragmentsOnCompositeTypesRule, KnownArgumentNamesRule, KnownDirectivesRule, KnownFragmentNamesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, NoFragmentCyclesRule, NoUndefinedVariablesRule, NoUnusedFragmentsRule, NoUnusedVariablesRule, OverlappingFieldsCanBeMergedRule, PossibleFragmentSpreadsRule, ProvidedRequiredArgumentsRule, ScalarLeafsRule, SingleFieldSubscriptionsRule, UniqueArgumentNamesRule, UniqueDirectivesPerLocationRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, VariablesInAllowedPositionRule // SDL-specific validation rules +, LoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, PossibleTypeExtensionsRule } from './validation/index.js'; +// Create, format, and print GraphQL errors. +export { GraphQLError, syntaxError, locatedError, printError, formatError } from './error/index.js'; +// Utilities for operating on GraphQL type schema and parsed sources. +export { // Produce the GraphQL query recommended for a full schema introspection. +// Accepts optional IntrospectionOptions. +getIntrospectionQuery // Gets the target Operation from a Document. +, getOperationAST // Gets the Type for the target Operation AST. +, getOperationRootType // Convert a GraphQLSchema to an IntrospectionQuery. +, introspectionFromSchema // Build a GraphQLSchema from an introspection result. +, buildClientSchema // Build a GraphQLSchema from a parsed GraphQL Schema language AST. +, buildASTSchema // Build a GraphQLSchema from a GraphQL schema language document. +, buildSchema // @deprecated: Get the description from a schema AST node and supports legacy +// syntax for specifying descriptions - will be removed in v16. +, getDescription // Extends an existing GraphQLSchema from a parsed GraphQL Schema +// language AST. +, extendSchema // Sort a GraphQLSchema. +, lexicographicSortSchema // Print a GraphQLSchema to GraphQL Schema language. +, printSchema // Print a GraphQLType to GraphQL Schema language. +, printType // Prints the built-in introspection schema in the Schema Language +// format. +, printIntrospectionSchema // Create a GraphQLType from a GraphQL language AST. +, typeFromAST // Create a JavaScript value from a GraphQL language AST with a Type. +, valueFromAST // Create a JavaScript value from a GraphQL language AST without a Type. +, valueFromASTUntyped // Create a GraphQL language AST from a JavaScript value. +, astFromValue // A helper to use within recursive-descent visitors which need to be aware of +// the GraphQL type system. +, TypeInfo, visitWithTypeInfo // Coerces a JavaScript value to a GraphQL type, or produces errors. +, coerceInputValue // Concatenates multiple AST together. +, concatAST // Separates an AST into an AST per Operation. +, separateOperations // Strips characters that are not significant to the validity or execution +// of a GraphQL document. +, stripIgnoredCharacters // Comparators for types +, isEqualType, isTypeSubTypeOf, doTypesOverlap // Asserts a string is a valid GraphQL name. +, assertValidName // Determine if a string is a valid GraphQL name. +, isValidNameError // Compares two GraphQLSchemas and detects breaking changes. +, BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges // Report all deprecated usage within a GraphQL document. +, findDeprecatedUsages } from './utilities/index.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/4fe7bc8bec9b19a5506a2ae31645938acc254235.ts b/bundler/tests/.cache/deno/4fe7bc8bec9b19a5506a2ae31645938acc254235.ts new file mode 100644 index 00000000000..d0d5a10fe10 --- /dev/null +++ b/bundler/tests/.cache/deno/4fe7bc8bec9b19a5506a2ae31645938acc254235.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mean.js + + +import _curry1 from './internal/_curry1.js'; +import sum from './sum.js'; + + +/** + * Returns the mean of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.median + * @example + * + * R.mean([2, 7, 9]); //=> 6 + * R.mean([]); //=> NaN + */ +var mean = _curry1(function mean(list) { + return sum(list) / list.length; +}); +export default mean; diff --git a/bundler/tests/.cache/deno/50462499cd464d2e75c2ba5d0bae8f7d82276afe.ts b/bundler/tests/.cache/deno/50462499cd464d2e75c2ba5d0bae8f7d82276afe.ts new file mode 100644 index 00000000000..7e9ca5f6eeb --- /dev/null +++ b/bundler/tests/.cache/deno/50462499cd464d2e75c2ba5d0bae8f7d82276afe.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case@v2.1.0/paramCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function paramCase(value: string, locale?: string): string { + return normalCase(value, locale, "-"); +} diff --git a/bundler/tests/.cache/deno/50a68c90032989ca1a310f36cf79e5bf1114e7c4.ts b/bundler/tests/.cache/deno/50a68c90032989ca1a310f36cf79e5bf1114e7c4.ts new file mode 100644 index 00000000000..14bd6ac148a --- /dev/null +++ b/bundler/tests/.cache/deno/50a68c90032989ca1a310f36cf79e5bf1114e7c4.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/init.js + + +import slice from './slice.js'; + + +/** + * Returns all but the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.last, R.head, R.tail + * @example + * + * R.init([1, 2, 3]); //=> [1, 2] + * R.init([1, 2]); //=> [1] + * R.init([1]); //=> [] + * R.init([]); //=> [] + * + * R.init('abc'); //=> 'ab' + * R.init('ab'); //=> 'a' + * R.init('a'); //=> '' + * R.init(''); //=> '' + */ +var init = slice(0, -1); +export default init; diff --git a/bundler/tests/.cache/deno/50ef99b3983986e9a4e3ff30a3862e2d4c5d5812.ts b/bundler/tests/.cache/deno/50ef99b3983986e9a4e3ff30a3862e2d4c5d5812.ts new file mode 100644 index 00000000000..d1542a13aaf --- /dev/null +++ b/bundler/tests/.cache/deno/50ef99b3983986e9a4e3ff30a3862e2d4c5d5812.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/case/swapCase.ts + + +import upperCase from "./upperCase.ts"; +import lowerCase from "./lowerCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + let result: string = ""; + + for (let i: number = 0; i < str.length; i++) { + const c: string = str[i]; + const u: string = upperCase(c, locale); + + result += u === c ? lowerCase(c, locale) : u; + } + + return result; +} diff --git a/bundler/tests/.cache/deno/511b470a054c6ddf269c4ff3d9b60a11c529aca3.ts b/bundler/tests/.cache/deno/511b470a054c6ddf269c4ff3d9b60a11c529aca3.ts new file mode 100644 index 00000000000..f4bef48d2c2 --- /dev/null +++ b/bundler/tests/.cache/deno/511b470a054c6ddf269c4ff3d9b60a11c529aca3.ts @@ -0,0 +1,1880 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/deflate.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +import * as utils from "../utils/common.js"; +import * as trees from "./trees.js"; +import { adler32 } from "./adler32.js"; +import { crc32 } from "./crc32.js"; +import msg from "./messages.js"; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +var Z_NO_FLUSH = 0; +var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +//var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +//var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +//var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + + +/* compression levels */ +//var Z_NO_COMPRESSION = 0; +//var Z_BEST_SPEED = 1; +//var Z_BEST_COMPRESSION = 9; +var Z_DEFAULT_COMPRESSION = -1; + + +var Z_FILTERED = 1; +var Z_HUFFMAN_ONLY = 2; +var Z_RLE = 3; +var Z_FIXED = 4; +var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +//var Z_BINARY = 0; +//var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + + +/* The deflate compression method */ +var Z_DEFLATED = 8; + +/*============================================================================*/ + + +var MAX_MEM_LEVEL = 9; +/* Maximum value for memLevel in deflateInit2 */ +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_MEM_LEVEL = 8; + + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ +var LITERALS = 256; +/* number of literal bytes 0..255 */ +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ +var D_CODES = 30; +/* number of distance codes */ +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + +var PRESET_DICT = 0x20; + +var INIT_STATE = 42; +var EXTRA_STATE = 69; +var NAME_STATE = 73; +var COMMENT_STATE = 91; +var HCRC_STATE = 103; +var BUSY_STATE = 113; +var FINISH_STATE = 666; + +var BS_NEED_MORE = 1; /* block not completed, need more input or more output */ +var BS_BLOCK_DONE = 2; /* block flush performed */ +var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ +var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + +var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + +function err(strm, errorCode) { + strm.msg = msg[errorCode]; + return errorCode; +} + +function rank(f) { + return ((f) << 1) - ((f) > 4 ? 9 : 0); +} + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->output buffer and copying into it. + * (See also read_buf()). + */ +function flush_pending(strm) { + var s = strm.state; + + //_tr_flush_bits(s); + var len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { return; } + + utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } +} + + +function flush_block_only(s, last) { + trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); +} + + +function put_byte(s, b) { + s.pending_buf[s.pending++] = b; +} + + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +function putShortMSB(s, b) { +// put_byte(s, (Byte)(b >> 8)); +// put_byte(s, (Byte)(b & 0xff)); + s.pending_buf[s.pending++] = (b >>> 8) & 0xff; + s.pending_buf[s.pending++] = b & 0xff; +} + + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->input buffer and copying from it. + * (See also flush_pending()). + */ +function read_buf(strm, buf, start, size) { + var len = strm.avail_in; + + if (len > size) { len = size; } + if (len === 0) { return 0; } + + strm.avail_in -= len; + + // zmemcpy(buf, strm->next_in, len); + utils.arraySet(buf, strm.input, strm.next_in, len, start); + if (strm.state.wrap === 1) { + strm.adler = adler32(strm.adler, buf, len, start); + } + + else if (strm.state.wrap === 2) { + strm.adler = crc32(strm.adler, buf, len, start); + } + + strm.next_in += len; + strm.total_in += len; + + return len; +} + + +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +function longest_match(s, cur_match) { + var chain_length = s.max_chain_length; /* max hash chain length */ + var scan = s.strstart; /* current string */ + var match; /* matched string */ + var len; /* length of current match */ + var best_len = s.prev_length; /* best match length so far */ + var nice_match = s.nice_match; /* stop if match long enough */ + var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? + s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; + + var _win = s.window; // shortcut + + var wmask = s.w_mask; + var prev = s.prev; + + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + + var strend = s.strstart + MAX_MATCH; + var scan_end1 = _win[scan + best_len - 1]; + var scan_end = _win[scan + best_len]; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if (nice_match > s.lookahead) { nice_match = s.lookahead; } + + // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + // Assert(cur_match < s->strstart, "no future"); + match = cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ + + if (_win[match + best_len] !== scan_end || + _win[match + best_len - 1] !== scan_end1 || + _win[match] !== _win[scan] || + _win[++match] !== _win[scan + 1]) { + continue; + } + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2; + match++; + // Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + /*jshint noempty:false*/ + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + scan < strend); + + // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; + + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + + if (best_len <= s.lookahead) { + return best_len; + } + return s.lookahead; +} + + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +function fill_window(s) { + var _w_size = s.w_size; + var p, n, m, more, str; + + //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = s.window_size - s.lookahead - s.strstart; + + // JS ints have 32 bit, block below not needed + /* Deal with !@#$% 64K limit: */ + //if (sizeof(int) <= 2) { + // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + // more = wsize; + // + // } else if (more == (unsigned)(-1)) { + // /* Very unlikely, but possible on 16 bit machine if + // * strstart == 0 && lookahead == 1 (input done a byte at time) + // */ + // more--; + // } + //} + + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { + + utils.arraySet(s.window, s.window, _w_size, _w_size, 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + /* we now have strstart >= MAX_DIST */ + s.block_start -= _w_size; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + + n = s.hash_size; + p = n; + do { + m = s.head[--p]; + s.head[p] = (m >= _w_size ? m - _w_size : 0); + } while (--n); + + n = _w_size; + p = n; + do { + m = s.prev[--p]; + s.prev[p] = (m >= _w_size ? m - _w_size : 0); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); + + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + //Assert(more >= 2, "more < 2"); + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; + + /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; +//#if MIN_MATCH != 3 +// Call update_hash() MIN_MATCH-3 more times +//#endif + while (s.insert) { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ +// if (s.high_water < s.window_size) { +// var curr = s.strstart + s.lookahead; +// var init = 0; +// +// if (s.high_water < curr) { +// /* Previous high water mark below current data -- zero WIN_INIT +// * bytes or up to end of window, whichever is less. +// */ +// init = s.window_size - curr; +// if (init > WIN_INIT) +// init = WIN_INIT; +// zmemzero(s->window + curr, (unsigned)init); +// s->high_water = curr + init; +// } +// else if (s->high_water < (ulg)curr + WIN_INIT) { +// /* High water mark at or above current data, but below current data +// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up +// * to end of window, whichever is less. +// */ +// init = (ulg)curr + WIN_INIT - s->high_water; +// if (init > s->window_size - s->high_water) +// init = s->window_size - s->high_water; +// zmemzero(s->window + s->high_water, (unsigned)init); +// s->high_water += init; +// } +// } +// +// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, +// "not enough room for search"); +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +function deflate_stored(s, flush) { + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + var max_block_size = 0xffff; + + if (max_block_size > s.pending_buf_size - 5) { + max_block_size = s.pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s.lookahead <= 1) { + + //Assert(s->strstart < s->w_size+MAX_DIST(s) || + // s->block_start >= (long)s->w_size, "slide too late"); +// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || +// s.block_start >= s.w_size)) { +// throw new Error("slide too late"); +// } + + fill_window(s); + if (s.lookahead === 0 && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + + if (s.lookahead === 0) { + break; + } + /* flush the current block */ + } + //Assert(s->block_start >= 0L, "block gone"); +// if (s.block_start < 0) throw new Error("block gone"); + + s.strstart += s.lookahead; + s.lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + var max_start = s.block_start + max_block_size; + + if (s.strstart === 0 || s.strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s.lookahead = s.strstart - max_start; + s.strstart = max_start; + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + + + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + + s.insert = 0; + + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_NEED_MORE; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +function deflate_fast(s, flush) { + var hash_head; /* head of the hash chain */ + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only + + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; + +//#if MIN_MATCH != 3 +// Call UPDATE_HASH() MIN_MATCH-3 more times +//#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +function deflate_slow(s, flush) { + var hash_head; /* head of hash chain */ + var bflush; /* set if current block must be flushed */ + + var max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_BLOCK_DONE; +} + + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +function deflate_rle(s, flush) { + var bflush; /* set if current block must be flushed */ + var prev; /* byte at distance one to match */ + var scan, strend; /* scan goes up to strend for length of run */ + + var _win = s.window; + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; + } + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +function deflate_huff(s, flush) { + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +function Config(good_length, max_lazy, nice_length, max_chain, func) { + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; +} + +var configuration_table; + +configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ + + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ +]; + + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +function lm_init(s) { + s.window_size = 2 * s.w_size; + + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + + /* Set the default configuration parameters: + */ + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; +} + + +function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ + + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ + + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ + + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + this.head = null; /* Heads of the hash chains or NIL. */ + + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ + + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ + + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ + + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ + + this.nice_match = 0; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + + /* Didn't use ct_data typedef below to suppress compiler warning */ + + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); + this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); + this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); + zero(this.dyn_ltree); + zero(this.dyn_dtree); + zero(this.bl_tree); + + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ + + //ush bl_count[MAX_BITS+1]; + this.bl_count = new utils.Buf16(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ + + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero(this.heap); + + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + this.l_buf = 0; /* buffer index for literals or lengths */ + + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + this.last_lit = 0; /* running index in l_buf */ + + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ + + + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ +} + + +function deflateResetKeep(strm) { + var s; + + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR); + } + + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + + s = strm.state; + s.pending = 0; + s.pending_out = 0; + + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH; + trees._tr_init(s); + return Z_OK; +} + + +function deflateReset(strm) { + var ret = deflateResetKeep(strm); + if (ret === Z_OK) { + lm_init(strm.state); + } + return ret; +} + + +function deflateSetHeader(strm, head) { + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; } + strm.state.gzhead = head; + return Z_OK; +} + + +function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR; + } + var wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + + + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return err(strm, Z_STREAM_ERROR); + } + + + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ + + var s = new DeflateState(); + + strm.state = s; + s.strm = strm; + + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; + + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + + s.window = new utils.Buf8(s.w_size * 2); + s.head = new utils.Buf16(s.hash_size); + s.prev = new utils.Buf16(s.w_size); + + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ + + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + s.pending_buf_size = s.lit_bufsize * 4; + + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new utils.Buf8(s.pending_buf_size); + + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; + + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; + + s.level = level; + s.strategy = strategy; + s.method = method; + + return deflateReset(strm); +} + +function deflateInit(strm, level) { + return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +} + + +function deflate(strm, flush) { + var old_flush, s; + var beg, val; // for gzip header write only + + if (!strm || !strm.state || + flush > Z_BLOCK || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; + } + + s = strm.state; + + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); + } + + s.strm = strm; /* just in case */ + old_flush = s.last_flush; + s.last_flush = flush; + + /* Write the header */ + if (s.status === INIT_STATE) { + + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); + } + if (s.gzhead.hcrc) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; + var level_flags = -1; + + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); + + s.status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + +//#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + break; + } + } + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } + } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } + } + else { + s.status = COMMENT_STATE; + } + } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; + } + } + else { + s.status = HCRC_STATE; + } + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } + } +//#endif + + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH) { + return err(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { + var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); + + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + trees._tr_align(s); + } + else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ + + trees._tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero(s.head); // Fill with NIL (= 0); + + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} + + if (flush !== Z_FINISH) { return Z_OK; } + if (s.wrap <= 0) { return Z_STREAM_END; } + + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK : Z_STREAM_END; +} + +function deflateEnd(strm) { + var status; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR); + } + + strm.state = null; + + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; +} + + +/* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ +function deflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; + + var s; + var str, n; + var wrap; + var avail; + var next; + var input; + var tmpDict; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + s = strm.state; + wrap = s.wrap; + + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR; + } + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32(strm.adler, dictionary, dictLength, 0); + } + + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + tmpDict = new utils.Buf8(s.w_size); + utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); + dictionary = tmpDict; + dictLength = s.w_size; + } + /* insert dictionary into window and hash */ + avail = strm.avail_in; + next = strm.next_in; + input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + str = s.strstart; + n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); + } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK; +} + +const deflateInfo = 'pako deflate (from Nodeca project)'; + +export { + deflateInit, + deflateInit2, + deflateReset, + deflateResetKeep, + deflateSetHeader, + deflate, + deflateEnd, + deflateSetDictionary, + deflateInfo +}; + +/* Not implemented +export { + deflateBound, + deflateCopy, + deflateParams, + deflatePending, + deflatePrime, + deflateTune +}; +*/ diff --git a/bundler/tests/.cache/deno/516312be8cf018277871f6e43147d06b677d6a13.ts b/bundler/tests/.cache/deno/516312be8cf018277871f6e43147d06b677d6a13.ts new file mode 100644 index 00000000000..c03405a62f5 --- /dev/null +++ b/bundler/tests/.cache/deno/516312be8cf018277871f6e43147d06b677d6a13.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pathOr.js + + +import _curry3 from './internal/_curry3.js'; +import defaultTo from './defaultTo.js'; +import path from './path.js'; + + +/** + * If the given, non-null object has a value at the given path, returns the + * value at that path. Otherwise returns the provided default value. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig a -> [Idx] -> {a} -> a + * @param {*} d The default value. + * @param {Array} p The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path` of the supplied object or the default value. + * @example + * + * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2 + * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" + */ +var pathOr = _curry3(function pathOr(d, p, obj) { + return defaultTo(d, path(p, obj)); +}); +export default pathOr; diff --git a/bundler/tests/.cache/deno/5182d4b18e580b0a6b2fc4b2bd9d841d701f6442.ts b/bundler/tests/.cache/deno/5182d4b18e580b0a6b2fc4b2bd9d841d701f6442.ts new file mode 100644 index 00000000000..fc004151840 --- /dev/null +++ b/bundler/tests/.cache/deno/5182d4b18e580b0a6b2fc4b2bd9d841d701f6442.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/filter.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _filter from './internal/_filter.js'; +import _isObject from './internal/_isObject.js'; +import _reduce from './internal/_reduce.js'; +import _xfilter from './internal/_xfilter.js'; +import keys from './keys.js'; + + +/** + * Takes a predicate and a `Filterable`, and returns a new filterable of the + * same type containing the members of the given filterable which satisfy the + * given predicate. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * Dispatches to the `filter` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} Filterable + * @see R.reject, R.transduce, R.addIndex + * @example + * + * const isEven = n => n % 2 === 0; + * + * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4] + * + * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +var filter = _curry2(_dispatchable(['fantasy-land/filter', 'filter'], _xfilter, function(pred, filterable) { + return ( + _isObject(filterable) ? + _reduce(function(acc, key) { + if (pred(filterable[key])) { + acc[key] = filterable[key]; + } + return acc; + }, {}, keys(filterable)) : + // else + _filter(pred, filterable) + ); +})); +export default filter; diff --git a/bundler/tests/.cache/deno/5190df367c400a5fe979230a82d871614e286120.ts b/bundler/tests/.cache/deno/5190df367c400a5fe979230a82d871614e286120.ts new file mode 100644 index 00000000000..d206082047b --- /dev/null +++ b/bundler/tests/.cache/deno/5190df367c400a5fe979230a82d871614e286120.ts @@ -0,0 +1,70 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/manifest.ts + + +import { path, fs } from "./deps.ts"; + +import * as A from "./adl-gen/dnit/manifest.ts"; +import * as J from "./adl-gen/runtime/json.ts"; + +import { RESOLVER } from "./adl-gen/resolver.ts"; +import { ADLMap } from "./ADLMap.ts"; +export class Manifest { + readonly filename: string; + readonly jsonBinding = J.createJsonBinding(RESOLVER, A.texprManifest()); + tasks: ADLMap = new ADLMap( + [], + (k1, k2) => k1 === k2, + ); + constructor(dir: string, filename: string = ".manifest.json") { + this.filename = path.join(dir, filename); + } + async load() { + if (await fs.exists(this.filename)) { + const json: J.Json = JSON.parse(await Deno.readTextFile(this.filename)) as J.Json; + const mdata = this.jsonBinding.fromJson(json); + for (const p of mdata.tasks) { + const taskName: A.TaskName = p.v1; + const taskData: A.TaskData = p.v2; + this.tasks.set(taskName, new TaskManifest(taskData)); + } + } + } + async save() { + if (!await fs.exists(path.dirname(this.filename))) { + } + + const mdata: A.Manifest = { + tasks: this.tasks.entries().map((p) => ({ v1: p[0], v2: p[1].toData() })), + }; + const jsonval = this.jsonBinding.toJson(mdata); + await Deno.writeTextFile(this.filename, JSON.stringify(jsonval, null, 2)); + } +} +export class TaskManifest { + public lastExecution: A.Timestamp | null = null; + trackedFiles: ADLMap = new ADLMap( + [], + (k1, k2) => k1 === k2, + ); + constructor(data: A.TaskData) { + this.trackedFiles = new ADLMap(data.trackedFiles, (k1, k2) => k1 === k2); + this.lastExecution = data.lastExecution; + } + + getFileData(fn: A.TrackedFileName): A.TrackedFileData | undefined { + return this.trackedFiles.get(fn); + } + setFileData(fn: A.TrackedFileName, d: A.TrackedFileData) { + this.trackedFiles.set(fn, d); + } + setExecutionTimestamp() { + this.lastExecution = (new Date()).toISOString(); + } + + toData(): A.TaskData { + return { + lastExecution: this.lastExecution, + trackedFiles: this.trackedFiles.toData(), + }; + } +} diff --git a/bundler/tests/.cache/deno/5192072a18cf75d411c99ea9c93ebc2ae8e830b4.ts b/bundler/tests/.cache/deno/5192072a18cf75d411c99ea9c93ebc2ae8e830b4.ts new file mode 100644 index 00000000000..d505f8c44d3 --- /dev/null +++ b/bundler/tests/.cache/deno/5192072a18cf75d411c99ea9c93ebc2ae8e830b4.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_functionName.js + + +export default function _functionName(f) { + // String(x => x) evaluates to "x => x", so the pattern may not match. + var match = String(f).match(/^function (\w*)/); + return match == null ? '' : match[1]; +} diff --git a/bundler/tests/.cache/deno/51b9676d22bfed0b3e6e4a6e02abdfffec697446.ts b/bundler/tests/.cache/deno/51b9676d22bfed0b3e6e4a6e02abdfffec697446.ts new file mode 100644 index 00000000000..d3af78b762f --- /dev/null +++ b/bundler/tests/.cache/deno/51b9676d22bfed0b3e6e4a6e02abdfffec697446.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/concatAST.js + + +import flatMap from '../polyfills/flatMap.js'; + +/** + * Provided a collection of ASTs, presumably each from different files, + * concatenate the ASTs together into batched AST, useful for validating many + * GraphQL source files which together represent one conceptual application. + */ +export function concatAST(asts) { + return { + kind: 'Document', + definitions: flatMap(asts, ast => ast.definitions) + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/523b95232338171f73ef4bb75b339ca63d84eefb.ts b/bundler/tests/.cache/deno/523b95232338171f73ef4bb75b339ca63d84eefb.ts new file mode 100644 index 00000000000..cb5dad070d5 --- /dev/null +++ b/bundler/tests/.cache/deno/523b95232338171f73ef4bb75b339ca63d84eefb.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/negotiation/mediaType.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface MediaTypeSpecificity extends Specificity { + type: string; + subtype: string; + params: { [param: string]: string | undefined }; +} + +const simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + +function quoteCount(str: string): number { + let count = 0; + let index = 0; + + while ((index = str.indexOf(`"`, index)) !== -1) { + count++; + index++; + } + + return count; +} + +function splitMediaTypes(accept: string): string[] { + const accepts = accept.split(","); + + let j = 0; + for (let i = 1; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 === 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += `,${accepts[i]}`; + } + } + + accepts.length = j + 1; + + return accepts; +} + +function splitParameters(str: string): string[] { + const parameters = str.split(";"); + + let j = 0; + for (let i = 1; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 === 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += `;${parameters[i]}`; + } + } + + parameters.length = j + 1; + + return parameters.map((p) => p.trim()); +} + +function splitKeyValuePair(str: string): [string, string | undefined] { + const [key, value] = str.split("="); + return [key.toLowerCase(), value]; +} + +function parseMediaType( + str: string, + i: number, +): MediaTypeSpecificity | undefined { + const match = simpleMediaTypeRegExp.exec(str); + + if (!match) { + return; + } + + const params: { [param: string]: string | undefined } = Object.create(null); + let q = 1; + const [, type, subtype, parameters] = match; + + if (parameters) { + const kvps = splitParameters(parameters).map(splitKeyValuePair); + + for (const [key, val] of kvps) { + const value = val && val[0] === `"` && val[val.length - 1] === `"` + ? val.substr(1, val.length - 2) + : val; + + if (key === "q" && value) { + q = parseFloat(value); + break; + } + + params[key] = value; + } + } + + return { type, subtype, params, q, i }; +} + +function parseAccept(accept: string): MediaTypeSpecificity[] { + const accepts = splitMediaTypes(accept); + + const mediaTypes: MediaTypeSpecificity[] = []; + for (let i = 0; i < accepts.length; i++) { + const mediaType = parseMediaType(accepts[i].trim(), i); + + if (mediaType) { + mediaTypes.push(mediaType); + } + } + + return mediaTypes; +} + +function getFullType(spec: MediaTypeSpecificity) { + return `${spec.type}/${spec.subtype}`; +} + +function specify( + type: string, + spec: MediaTypeSpecificity, + index: number, +): Specificity | undefined { + const p = parseMediaType(type, index); + + if (!p) { + return; + } + + let s = 0; + + if (spec.type.toLowerCase() === p.type.toLowerCase()) { + s |= 4; + } else if (spec.type !== "*") { + return; + } + + if (spec.subtype.toLowerCase() === p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype !== "*") { + return; + } + + const keys = Object.keys(spec.params); + if (keys.length) { + if ( + keys.every((key) => + (spec.params[key] || "").toLowerCase() === + (p.params[key] || "").toLowerCase() + ) + ) { + s |= 1; + } else { + return; + } + } + + return { + i: index, + o: spec.o, + q: spec.q, + s, + }; +} + +function getMediaTypePriority( + type: string, + accepted: MediaTypeSpecificity[], + index: number, +) { + let priority: Specificity = { o: -1, q: 0, s: 0, i: index }; + + for (const accepts of accepted) { + const spec = specify(type, accepts, index); + + if ( + spec && + ((priority.s || 0) - (spec.s || 0) || + (priority.q || 0) - (spec.q || 0) || + (priority.o || 0) - (spec.o || 0)) < 0 + ) { + priority = spec; + } + } + + return priority; +} + +export function preferredMediaTypes( + accept?: string | null, + provided?: string[], +): string[] { + const accepts = parseAccept(accept === undefined ? "*/*" : accept || ""); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map(getFullType); + } + + const priorities = provided.map((type, index) => { + return getMediaTypePriority(type, accepts, index); + }); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/52aae1c92cd6bd702a433021973326c89faa3a61.ts b/bundler/tests/.cache/deno/52aae1c92cd6bd702a433021973326c89faa3a61.ts new file mode 100644 index 00000000000..534db4e66d3 --- /dev/null +++ b/bundler/tests/.cache/deno/52aae1c92cd6bd702a433021973326c89faa3a61.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema/core.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { json } from "./json.ts"; + +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +export const core = new Schema({ + include: [json], +}); diff --git a/bundler/tests/.cache/deno/530d2bc386702423b92eee7f56c8d5a1d2c8a42d.ts b/bundler/tests/.cache/deno/530d2bc386702423b92eee7f56c8d5a1d2c8a42d.ts new file mode 100644 index 00000000000..c67fb46b5d6 --- /dev/null +++ b/bundler/tests/.cache/deno/530d2bc386702423b92eee7f56c8d5a1d2c8a42d.ts @@ -0,0 +1,166 @@ +// Loaded from https://deno.land/std@0.81.0/textproto/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/tree/master/src/net/textproto +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +import type { BufReader } from "../io/bufio.ts"; +import { concat } from "../bytes/mod.ts"; +import { decode } from "../encoding/utf8.ts"; + +// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9 +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g; + +function str(buf: Uint8Array | null | undefined): string { + if (buf == null) { + return ""; + } else { + return decode(buf); + } +} + +function charCode(s: string): number { + return s.charCodeAt(0); +} + +export class TextProtoReader { + constructor(readonly r: BufReader) {} + + /** readLine() reads a single line from the TextProtoReader, + * eliding the final \n or \r\n from the returned string. + */ + async readLine(): Promise { + const s = await this.readLineSlice(); + if (s === null) return null; + return str(s); + } + + /** ReadMIMEHeader reads a MIME-style header from r. + * The header is a sequence of possibly continued Key: Value lines + * ending in a blank line. + * The returned map m maps CanonicalMIMEHeaderKey(key) to a + * sequence of values in the same order encountered in the input. + * + * For example, consider this input: + * + * My-Key: Value 1 + * Long-Key: Even + * Longer Value + * My-Key: Value 2 + * + * Given that input, ReadMIMEHeader returns the map: + * + * map[string][]string{ + * "My-Key": {"Value 1", "Value 2"}, + * "Long-Key": {"Even Longer Value"}, + * } + */ + async readMIMEHeader(): Promise { + const m = new Headers(); + let line: Uint8Array | undefined; + + // The first line cannot start with a leading space. + let buf = await this.r.peek(1); + if (buf === null) { + return null; + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + line = (await this.readLineSlice()) as Uint8Array; + } + + buf = await this.r.peek(1); + if (buf === null) { + throw new Deno.errors.UnexpectedEof(); + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + throw new Deno.errors.InvalidData( + `malformed MIME header initial line: ${str(line)}`, + ); + } + + while (true) { + const kv = await this.readLineSlice(); // readContinuedLineSlice + if (kv === null) throw new Deno.errors.UnexpectedEof(); + if (kv.byteLength === 0) return m; + + // Key ends at first colon + let i = kv.indexOf(charCode(":")); + if (i < 0) { + throw new Deno.errors.InvalidData( + `malformed MIME header line: ${str(kv)}`, + ); + } + + //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey)); + const key = str(kv.subarray(0, i)); + + // As per RFC 7230 field-name is a token, + // tokens consist of one or more chars. + // We could throw `Deno.errors.InvalidData` here, + // but better to be liberal in what we + // accept, so if we get an empty key, skip it. + if (key == "") { + continue; + } + + // Skip initial spaces in value. + i++; // skip colon + while ( + i < kv.byteLength && + (kv[i] == charCode(" ") || kv[i] == charCode("\t")) + ) { + i++; + } + const value = str(kv.subarray(i)).replace( + invalidHeaderCharRegex, + encodeURI, + ); + + // In case of invalid header we swallow the error + // example: "Audio Mode" => invalid due to space in the key + try { + m.append(key, value); + } catch { + // Pass + } + } + } + + async readLineSlice(): Promise { + // this.closeDot(); + let line: Uint8Array | undefined; + while (true) { + const r = await this.r.readLine(); + if (r === null) return null; + const { line: l, more } = r; + + // Avoid the copy if the first call produced a full line. + if (!line && !more) { + // TODO(ry): + // This skipSpace() is definitely misplaced, but I don't know where it + // comes from nor how to fix it. + if (this.skipSpace(l) === 0) { + return new Uint8Array(0); + } + return l; + } + line = line ? concat(line, l) : l; + if (!more) { + break; + } + } + return line; + } + + skipSpace(l: Uint8Array): number { + let n = 0; + for (let i = 0; i < l.length; i++) { + if (l[i] === charCode(" ") || l[i] === charCode("\t")) { + continue; + } + n++; + } + return n; + } +} diff --git a/bundler/tests/.cache/deno/532e46aadcc1831d94b4a779c2a24c4b8d158ea2.ts b/bundler/tests/.cache/deno/532e46aadcc1831d94b4a779c2a24c4b8d158ea2.ts new file mode 100644 index 00000000000..29ec4f0469c --- /dev/null +++ b/bundler/tests/.cache/deno/532e46aadcc1831d94b4a779c2a24c4b8d158ea2.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.84.0/async/pool.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + writer.write(p); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + })(); + return res.readable[Symbol.asyncIterator](); +} diff --git a/bundler/tests/.cache/deno/533a6494ba56d6f8790c539bcf6ce600e386584d.ts b/bundler/tests/.cache/deno/533a6494ba56d6f8790c539bcf6ce600e386584d.ts new file mode 100644 index 00000000000..8ef08dd80f0 --- /dev/null +++ b/bundler/tests/.cache/deno/533a6494ba56d6f8790c539bcf6ce600e386584d.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/partition.js + + +import filter from './filter.js'; +import juxt from './juxt.js'; +import reject from './reject.js'; + + +/** + * Takes a predicate and a list or other `Filterable` object and returns the + * pair of filterable objects of the same type of elements which do and do not + * satisfy, the predicate, respectively. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a] + * @param {Function} pred A predicate to determine which side the element belongs to. + * @param {Array} filterable the list (or other filterable) to partition. + * @return {Array} An array, containing first the subset of elements that satisfy the + * predicate, and second the subset of elements that do not satisfy. + * @see R.filter, R.reject + * @example + * + * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']); + * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ] + * + * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' }); + * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] + */ +var partition = juxt([filter, reject]); +export default partition; diff --git a/bundler/tests/.cache/deno/53897518751b56ded4afb6ddcfd04ea6cf09339e.ts b/bundler/tests/.cache/deno/53897518751b56ded4afb6ddcfd04ea6cf09339e.ts new file mode 100644 index 00000000000..9b37749a216 --- /dev/null +++ b/bundler/tests/.cache/deno/53897518751b56ded4afb6ddcfd04ea6cf09339e.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/inc.js + + +import add from './add.js'; + + +/** + * Increments its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n + 1 + * @see R.dec + * @example + * + * R.inc(42); //=> 43 + */ +var inc = add(1); +export default inc; diff --git a/bundler/tests/.cache/deno/53ae4b7ecdfa51b6ce5b610f4423912f02177fd5.ts b/bundler/tests/.cache/deno/53ae4b7ecdfa51b6ce5b610f4423912f02177fd5.ts new file mode 100644 index 00000000000..03ee121f7fb --- /dev/null +++ b/bundler/tests/.cache/deno/53ae4b7ecdfa51b6ce5b610f4423912f02177fd5.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.77.0/flags/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/53b6d668e8094a35ca023bf18723293ae406e22c.ts b/bundler/tests/.cache/deno/53b6d668e8094a35ca023bf18723293ae406e22c.ts new file mode 100644 index 00000000000..864c725eb43 --- /dev/null +++ b/bundler/tests/.cache/deno/53b6d668e8094a35ca023bf18723293ae406e22c.ts @@ -0,0 +1,78 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/loader/loader_state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { YAMLError } from "../error.ts"; +import type { Schema, SchemaDefinition, TypeMap } from "../schema.ts"; +import { State } from "../state.ts"; +import type { Type } from "../type.ts"; +import type { Any, ArrayObject } from "../utils.ts"; + +export interface LoaderStateOptions { + legacy?: boolean; + listener?: ((...args: Any[]) => void) | null; + /** string to be used as a file path in error/warning messages. */ + filename?: string; + /** specifies a schema to use. */ + schema?: SchemaDefinition; + /** compatibility with JSON.parse behaviour. */ + json?: boolean; + /** function to call on warning messages. */ + onWarning?(this: null, e?: YAMLError): void; +} + +// deno-lint-ignore no-explicit-any +export type ResultType = any[] | Record | string; + +export class LoaderState extends State { + public documents: Any[] = []; + public length: number; + public lineIndent = 0; + public lineStart = 0; + public position = 0; + public line = 0; + public filename?: string; + public onWarning?: (...args: Any[]) => void; + public legacy: boolean; + public json: boolean; + public listener?: ((...args: Any[]) => void) | null; + public implicitTypes: Type[]; + public typeMap: TypeMap; + + public version?: string | null; + public checkLineBreaks?: boolean; + public tagMap?: ArrayObject; + public anchorMap?: ArrayObject; + public tag?: string | null; + public anchor?: string | null; + public kind?: string | null; + public result: ResultType | null = ""; + + constructor( + public input: string, + { + filename, + schema, + onWarning, + legacy = false, + json = false, + listener = null, + }: LoaderStateOptions, + ) { + super(schema); + this.filename = filename; + this.onWarning = onWarning; + this.legacy = legacy; + this.json = json; + this.listener = listener; + + this.implicitTypes = (this.schema as Schema).compiledImplicit; + this.typeMap = (this.schema as Schema).compiledTypeMap; + + this.length = input.length; + } +} diff --git a/bundler/tests/.cache/deno/5410c66fa74f3a1f3abc875e2cd129f23d44f908.ts b/bundler/tests/.cache/deno/5410c66fa74f3a1f3abc875e2cd129f23d44f908.ts new file mode 100644 index 00000000000..ccf976a7028 --- /dev/null +++ b/bundler/tests/.cache/deno/5410c66fa74f3a1f3abc875e2cd129f23d44f908.ts @@ -0,0 +1,185 @@ +// Loaded from https://deno.land/x/oak/buf_reader.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { assert } from "./deps.ts"; +import { stripEol } from "./util.ts"; + +export interface ReadLineResult { + bytes: Uint8Array; + eol: boolean; +} + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader { + #buffer!: Uint8Array; + #reader!: Deno.Reader; + #posRead = 0; + #posWrite = 0; + #eof = false; + + // Reads a new chunk into the buffer. + #fill = async (): Promise => { + // Slide existing data to beginning. + if (this.#posRead > 0) { + this.#buffer.copyWithin(0, this.#posRead, this.#posWrite); + this.#posWrite -= this.#posRead; + this.#posRead = 0; + } + + if (this.#posWrite >= this.#buffer.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.#reader.read(this.#buffer.subarray(this.#posWrite)); + if (rr === null) { + this.#eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.#posWrite += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + }; + + #reset = (buffer: Uint8Array, reader: Deno.Reader): void => { + this.#buffer = buffer; + this.#reader = reader; + this.#eof = false; + }; + + constructor(rd: Deno.Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this.#reset(new Uint8Array(size), rd); + } + + buffered(): number { + return this.#posWrite - this.#posRead; + } + + async readLine( + strip = true, + ): Promise<{ bytes: Uint8Array; eol: boolean } | null> { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "Caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.#eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert( + this.#posRead > 0, + "Tried to rewind past start of buffer", + ); + this.#posRead--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { bytes: partial, eol: this.#eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { bytes: line, eol: true }; + } + + if (strip) { + line = stripEol(line); + } + return { bytes: line, eol: true }; + } + + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.#buffer.subarray(this.#posRead + s, this.#posWrite).indexOf( + delim, + ); + if (i >= 0) { + i += s; + slice = this.#buffer.subarray(this.#posRead, this.#posRead + i + 1); + this.#posRead += i + 1; + break; + } + + // EOF? + if (this.#eof) { + if (this.#posRead === this.#posWrite) { + return null; + } + slice = this.#buffer.subarray(this.#posRead, this.#posWrite); + this.#posRead = this.#posWrite; + break; + } + + // Buffer full? + if (this.buffered() >= this.#buffer.byteLength) { + this.#posRead = this.#posWrite; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.#buffer; + const newbuf = this.#buffer.slice(0); + this.#buffer = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.#posWrite - this.#posRead; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this.#fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + return slice; + } +} diff --git a/bundler/tests/.cache/deno/54219637b852f009bf18e186f041e0f4d8b31ca7.ts b/bundler/tests/.cache/deno/54219637b852f009bf18e186f041e0f4d8b31ca7.ts new file mode 100644 index 00000000000..8ac41efbf0d --- /dev/null +++ b/bundler/tests/.cache/deno/54219637b852f009bf18e186f041e0f4d8b31ca7.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lt.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns `true` if the first argument is less than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.gt + * @example + * + * R.lt(2, 1); //=> false + * R.lt(2, 2); //=> false + * R.lt(2, 3); //=> true + * R.lt('a', 'z'); //=> true + * R.lt('z', 'a'); //=> false + */ +var lt = _curry2(function lt(a, b) { return a < b; }); +export default lt; diff --git a/bundler/tests/.cache/deno/5421ed9d1cb82f0a48e3b46e99f915d452c022f4.ts b/bundler/tests/.cache/deno/5421ed9d1cb82f0a48e3b46e99f915d452c022f4.ts new file mode 100644 index 00000000000..8889d96d98a --- /dev/null +++ b/bundler/tests/.cache/deno/5421ed9d1cb82f0a48e3b46e99f915d452c022f4.ts @@ -0,0 +1,411 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIdentityCard.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const validators = { + ES: (str: string) => { + assertString(str); + + const DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/; + + const charsValue = { + X: 0, + Y: 1, + Z: 2, + }; + + const controlDigits = [ + 'T', + 'R', + 'W', + 'A', + 'G', + 'M', + 'Y', + 'F', + 'P', + 'D', + 'X', + 'B', + 'N', + 'J', + 'Z', + 'S', + 'Q', + 'V', + 'H', + 'L', + 'C', + 'K', + 'E', + ]; + + // sanitize user input + const sanitized = str.trim().toUpperCase(); + + // validate the data structure + if (!DNI.test(sanitized)) { + return false; + } + + // validate the control digit + const num = sanitized + .slice(0, -1) + .replace(/[X,Y,Z]/g, (char) => (charsValue as any)[char]); + + // @ts-ignore allowing typedoc to build + return sanitized.endsWith(controlDigits[num % 23]); + }, + IN: (str: string) => { + const DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; + + // multiplication table + const d = [ + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], + [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], + [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], + [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], + [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], + [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], + [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], + [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], + [9, 8, 7, 6, 5, 4, 3, 2, 1, 0], + ]; + + // permutation table + const p = [ + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], + [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], + [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], + [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], + [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], + [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], + [7, 0, 4, 6, 9, 1, 3, 2, 5, 8], + ]; + + // sanitize user input + const sanitized = str.trim(); + + // validate the data structure + if (!DNI.test(sanitized)) { + return false; + } + let c = 0; + let invertedArray = sanitized + .replace(/\s/g, '') + .split('') + .map(Number) + .reverse(); + + invertedArray.forEach((val, i) => { + c = d[c][p[i % 8][val]]; + }); + + return c === 0; + }, + IT: (str: string) => { + if (str.length !== 9) return false; + if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana + return str.search(/C[A-Z]\d{5}[A-Z]{2}/is) > -1; + }, + NO: (str: string) => { + const sanitized = str.trim(); + if (isNaN(Number(sanitized))) return false; + if (sanitized.length !== 11) return false; + if (sanitized === '00000000000') return false; + + // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer + const f = sanitized.split('').map(Number); + let k1 = + (11 - + ((3 * f[0] + + 7 * f[1] + + 6 * f[2] + + 1 * f[3] + + 8 * f[4] + + 9 * f[5] + + 4 * f[6] + + 5 * f[7] + + 2 * f[8]) % + 11)) % + 11; + let k2 = + (11 - + ((5 * f[0] + + 4 * f[1] + + 3 * f[2] + + 2 * f[3] + + 7 * f[4] + + 6 * f[5] + + 5 * f[6] + + 4 * f[7] + + 3 * f[8] + + 2 * k1) % + 11)) % + 11; + // this block where k1 === 11 need to be tested + if (k1 === 11) { + k1 = 0; + } + if (k1 !== f[9] || k2 !== f[10]) return false; + return true; + }, + 'he-IL': (str: string) => { + const DNI = /^\d{9}$/; + + // sanitize user input + const sanitized = str.trim(); + + // validate the data structure + if (!DNI.test(sanitized)) { + return false; + } + + const id = sanitized; + + let sum = 0, + incNum; + for (let i = 0; i < id.length; i++) { + incNum = Number(id[i]) * ((i % 2) + 1); // Multiply number by 1 or 2 + sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total + } + return sum % 10 === 0; + }, + 'ar-TN': (str: string) => { + const DNI = /^\d{8}$/; + + // sanitize user input + const sanitized = str.trim(); + + // validate the data structure + if (!DNI.test(sanitized)) { + return false; + } + return true; + }, + 'zh-CN': (str: string) => { + const provinceAndCitys = { + 11: '北京', + 12: '天津', + 13: '河北', + 14: '山西', + 15: '内蒙古', + 21: '辽宁', + 22: '吉林', + 23: '黑龙江', + 31: '上海', + 32: '江苏', + 33: '浙江', + 34: '安徽', + 35: '福建', + 36: '江西', + 37: '山东', + 41: '河南', + 42: '湖北', + 43: '湖南', + 44: '广东', + 45: '广西', + 46: '海南', + 50: '重庆', + 51: '四川', + 52: '贵州', + 53: '云南', + 54: '西藏', + 61: '陕西', + 62: '甘肃', + 63: '青海', + 64: '宁夏', + 65: '新疆', + 71: '台湾', + 81: '香港', + 82: '澳门', + 91: '国外', + }; + + const powers = [ + '7', + '9', + '10', + '5', + '8', + '4', + '2', + '1', + '6', + '3', + '7', + '9', + '10', + '5', + '8', + '4', + '2', + ]; + + const parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; + + const checkAddressCode = (addressCode: string) => { + let check = /^[1-9]\d{5}$/.test(addressCode); + if (!check) return false; + // eslint-disable-next-line radix + return !!(provinceAndCitys as any)[ + Number.parseInt(addressCode.substring(0, 2)) + ]; + }; + + const checkBirthDayCode = (birDayCode: string) => { + let check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test( + birDayCode + ); + if (!check) return false; + const yyyy = parseInt(birDayCode.substring(0, 4), 10); + const mm = parseInt(birDayCode.substring(4, 6), 10); + const dd = parseInt(birDayCode.substring(6), 10); + const xdata = new Date(yyyy, mm - 1, dd); + if (xdata > new Date()) return false; + return true; + }; + + const getParityBit = (idCardNo: string) => { + let id17 = idCardNo.substring(0, 17); + + let power = 0; + for (let i = 0; i < 17; i++) { + // eslint-disable-next-line radix + power += parseInt(id17.charAt(i), 10) * Number.parseInt(powers[i]); + } + + let mod = power % 11; + return parityBit[mod]; + }; + + const checkParityBit = (idCardNo: string) => + getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase(); + + const check15IdCardNo = (idCardNo: string) => { + let check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test( + idCardNo + ); + if (!check) return false; + let addressCode = idCardNo.substring(0, 6); + check = checkAddressCode(addressCode); + if (!check) return false; + let birDayCode = `19${idCardNo.substring(6, 12)}`; + check = checkBirthDayCode(birDayCode); + if (!check) return false; + // since this is 15 id card no, no need to check parity in charAt(17) + return true; + }; + + const check18IdCardNo = (idCardNo: string) => { + let check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test( + idCardNo + ); + if (!check) return false; + let addressCode = idCardNo.substring(0, 6); + check = checkAddressCode(addressCode); + if (!check) return false; + let birDayCode = idCardNo.substring(6, 14); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return checkParityBit(idCardNo); + }; + + const checkIdCardNo = (idCardNo: string) => { + let check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); + if (check && idCardNo.length === 15) return check15IdCardNo(idCardNo); + if (check && idCardNo.length === 18) return check18IdCardNo(idCardNo); + return false; + }; + return checkIdCardNo(str); + }, + 'zh-TW': (str: string) => { + const ALPHABET_CODES = { + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + G: 16, + H: 17, + I: 34, + J: 18, + K: 19, + L: 20, + M: 21, + N: 22, + O: 35, + P: 23, + Q: 24, + R: 25, + S: 26, + T: 27, + U: 28, + V: 29, + W: 32, + X: 30, + Y: 31, + Z: 33, + }; + + const sanitized = str.trim().toUpperCase(); + + if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false; + + return Array.from(sanitized).reduce( + // @ts-ignore allowing typedoc to build + (sum, number, index) => { + if (index === 0) { + const code = (ALPHABET_CODES as any)[number]; + + return (code % 10) * 9 + Math.floor(code / 10); + } + + if (index === 9) { + return (10 - (sum % 10) - Number(number)) % 10 === 0; + } + + return sum + Number(number) * (9 - index); + }, + 0 + ); + }, +}; + +type IdentityCardLocale = + | 'ES' + | 'IN' + | 'NO' + | 'he-IL' + | 'ar-TN' + | 'zh-CN' + | 'zh-TW' + | 'any'; + +export const isIdentityCard = (str: string, locale: IdentityCardLocale) => { + assertString(str); + if (locale in validators) { + return (validators as any)[locale](str); + } else if (locale === 'any') { + for (const key in validators) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (validators.hasOwnProperty(key)) { + const validator = (validators as any)[key]; + if (validator(str)) { + return true; + } + } + } + return false; + } + throw new Error(`Invalid locale '${locale}'`); +}; diff --git a/bundler/tests/.cache/deno/54756f3b6e72ad8ede86d7f0bcf25cc034ecbd8a.ts b/bundler/tests/.cache/deno/54756f3b6e72ad8ede86d7f0bcf25cc034ecbd8a.ts new file mode 100644 index 00000000000..2d98dd35e5d --- /dev/null +++ b/bundler/tests/.cache/deno/54756f3b6e72ad8ede86d7f0bcf25cc034ecbd8a.ts @@ -0,0 +1,493 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/introspection.js + + +// FIXME + +/* eslint-disable import/no-cycle */ +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import { print } from '../language/printer.js'; +import { DirectiveLocation } from '../language/directiveLocation.js'; +import { astFromValue } from '../utilities/astFromValue.js'; +import { GraphQLString, GraphQLBoolean } from './scalars.js'; +import { GraphQLObjectType, GraphQLEnumType, GraphQLList, GraphQLNonNull, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isAbstractType } from './definition.js'; +export const __Schema = new GraphQLObjectType({ + name: '__Schema', + description: 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.', + fields: () => ({ + description: { + type: GraphQLString, + resolve: schema => schema.description + }, + types: { + description: 'A list of all types supported by this server.', + type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Type))), + + resolve(schema) { + return objectValues(schema.getTypeMap()); + } + + }, + queryType: { + description: 'The type that query operations will be rooted at.', + type: GraphQLNonNull(__Type), + resolve: schema => schema.getQueryType() + }, + mutationType: { + description: 'If this server supports mutation, the type that mutation operations will be rooted at.', + type: __Type, + resolve: schema => schema.getMutationType() + }, + subscriptionType: { + description: 'If this server support subscription, the type that subscription operations will be rooted at.', + type: __Type, + resolve: schema => schema.getSubscriptionType() + }, + directives: { + description: 'A list of all directives supported by this server.', + type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Directive))), + resolve: schema => schema.getDirectives() + } + }) +}); +export const __Directive = new GraphQLObjectType({ + name: '__Directive', + description: "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + fields: () => ({ + name: { + type: GraphQLNonNull(GraphQLString), + resolve: directive => directive.name + }, + description: { + type: GraphQLString, + resolve: directive => directive.description + }, + isRepeatable: { + type: GraphQLNonNull(GraphQLBoolean), + resolve: directive => directive.isRepeatable + }, + locations: { + type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__DirectiveLocation))), + resolve: directive => directive.locations + }, + args: { + type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))), + resolve: directive => directive.args + } + }) +}); +export const __DirectiveLocation = new GraphQLEnumType({ + name: '__DirectiveLocation', + description: 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.', + values: { + QUERY: { + value: DirectiveLocation.QUERY, + description: 'Location adjacent to a query operation.' + }, + MUTATION: { + value: DirectiveLocation.MUTATION, + description: 'Location adjacent to a mutation operation.' + }, + SUBSCRIPTION: { + value: DirectiveLocation.SUBSCRIPTION, + description: 'Location adjacent to a subscription operation.' + }, + FIELD: { + value: DirectiveLocation.FIELD, + description: 'Location adjacent to a field.' + }, + FRAGMENT_DEFINITION: { + value: DirectiveLocation.FRAGMENT_DEFINITION, + description: 'Location adjacent to a fragment definition.' + }, + FRAGMENT_SPREAD: { + value: DirectiveLocation.FRAGMENT_SPREAD, + description: 'Location adjacent to a fragment spread.' + }, + INLINE_FRAGMENT: { + value: DirectiveLocation.INLINE_FRAGMENT, + description: 'Location adjacent to an inline fragment.' + }, + VARIABLE_DEFINITION: { + value: DirectiveLocation.VARIABLE_DEFINITION, + description: 'Location adjacent to a variable definition.' + }, + SCHEMA: { + value: DirectiveLocation.SCHEMA, + description: 'Location adjacent to a schema definition.' + }, + SCALAR: { + value: DirectiveLocation.SCALAR, + description: 'Location adjacent to a scalar definition.' + }, + OBJECT: { + value: DirectiveLocation.OBJECT, + description: 'Location adjacent to an object type definition.' + }, + FIELD_DEFINITION: { + value: DirectiveLocation.FIELD_DEFINITION, + description: 'Location adjacent to a field definition.' + }, + ARGUMENT_DEFINITION: { + value: DirectiveLocation.ARGUMENT_DEFINITION, + description: 'Location adjacent to an argument definition.' + }, + INTERFACE: { + value: DirectiveLocation.INTERFACE, + description: 'Location adjacent to an interface definition.' + }, + UNION: { + value: DirectiveLocation.UNION, + description: 'Location adjacent to a union definition.' + }, + ENUM: { + value: DirectiveLocation.ENUM, + description: 'Location adjacent to an enum definition.' + }, + ENUM_VALUE: { + value: DirectiveLocation.ENUM_VALUE, + description: 'Location adjacent to an enum value definition.' + }, + INPUT_OBJECT: { + value: DirectiveLocation.INPUT_OBJECT, + description: 'Location adjacent to an input object type definition.' + }, + INPUT_FIELD_DEFINITION: { + value: DirectiveLocation.INPUT_FIELD_DEFINITION, + description: 'Location adjacent to an input object field definition.' + } + } +}); +export const __Type = new GraphQLObjectType({ + name: '__Type', + description: 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.', + fields: () => ({ + kind: { + type: GraphQLNonNull(__TypeKind), + + resolve(type) { + if (isScalarType(type)) { + return TypeKind.SCALAR; + } + + if (isObjectType(type)) { + return TypeKind.OBJECT; + } + + if (isInterfaceType(type)) { + return TypeKind.INTERFACE; + } + + if (isUnionType(type)) { + return TypeKind.UNION; + } + + if (isEnumType(type)) { + return TypeKind.ENUM; + } + + if (isInputObjectType(type)) { + return TypeKind.INPUT_OBJECT; + } + + if (isListType(type)) { + return TypeKind.LIST; + } + + if (isNonNullType(type)) { + return TypeKind.NON_NULL; + } // Not reachable. All possible types have been considered. + + + invariant(false, `Unexpected type: "${inspect(type)}".`); + } + + }, + name: { + type: GraphQLString, + resolve: type => type.name !== undefined ? type.name : undefined + }, + description: { + type: GraphQLString, + resolve: type => type.description !== undefined ? type.description : undefined + }, + fields: { + type: GraphQLList(GraphQLNonNull(__Field)), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false + } + }, + + resolve(type, { + includeDeprecated + }) { + if (isObjectType(type) || isInterfaceType(type)) { + let fields = objectValues(type.getFields()); + + if (!includeDeprecated) { + fields = fields.filter(field => !field.isDeprecated); + } + + return fields; + } + + return null; + } + + }, + interfaces: { + type: GraphQLList(GraphQLNonNull(__Type)), + + resolve(type) { + if (isObjectType(type) || isInterfaceType(type)) { + return type.getInterfaces(); + } + } + + }, + possibleTypes: { + type: GraphQLList(GraphQLNonNull(__Type)), + + resolve(type, _args, _context, { + schema + }) { + if (isAbstractType(type)) { + return schema.getPossibleTypes(type); + } + } + + }, + enumValues: { + type: GraphQLList(GraphQLNonNull(__EnumValue)), + args: { + includeDeprecated: { + type: GraphQLBoolean, + defaultValue: false + } + }, + + resolve(type, { + includeDeprecated + }) { + if (isEnumType(type)) { + let values = type.getValues(); + + if (!includeDeprecated) { + values = values.filter(value => !value.isDeprecated); + } + + return values; + } + } + + }, + inputFields: { + type: GraphQLList(GraphQLNonNull(__InputValue)), + + resolve(type) { + if (isInputObjectType(type)) { + return objectValues(type.getFields()); + } + } + + }, + ofType: { + type: __Type, + resolve: type => type.ofType !== undefined ? type.ofType : undefined + } + }) +}); +export const __Field = new GraphQLObjectType({ + name: '__Field', + description: 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.', + fields: () => ({ + name: { + type: GraphQLNonNull(GraphQLString), + resolve: field => field.name + }, + description: { + type: GraphQLString, + resolve: field => field.description + }, + args: { + type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))), + resolve: field => field.args + }, + type: { + type: GraphQLNonNull(__Type), + resolve: field => field.type + }, + isDeprecated: { + type: GraphQLNonNull(GraphQLBoolean), + resolve: field => field.isDeprecated + }, + deprecationReason: { + type: GraphQLString, + resolve: field => field.deprecationReason + } + }) +}); +export const __InputValue = new GraphQLObjectType({ + name: '__InputValue', + description: 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.', + fields: () => ({ + name: { + type: GraphQLNonNull(GraphQLString), + resolve: inputValue => inputValue.name + }, + description: { + type: GraphQLString, + resolve: inputValue => inputValue.description + }, + type: { + type: GraphQLNonNull(__Type), + resolve: inputValue => inputValue.type + }, + defaultValue: { + type: GraphQLString, + description: 'A GraphQL-formatted string representing the default value for this input value.', + + resolve(inputValue) { + const { + type, + defaultValue + } = inputValue; + const valueAST = astFromValue(defaultValue, type); + return valueAST ? print(valueAST) : null; + } + + } + }) +}); +export const __EnumValue = new GraphQLObjectType({ + name: '__EnumValue', + description: 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.', + fields: () => ({ + name: { + type: GraphQLNonNull(GraphQLString), + resolve: enumValue => enumValue.name + }, + description: { + type: GraphQLString, + resolve: enumValue => enumValue.description + }, + isDeprecated: { + type: GraphQLNonNull(GraphQLBoolean), + resolve: enumValue => enumValue.isDeprecated + }, + deprecationReason: { + type: GraphQLString, + resolve: enumValue => enumValue.deprecationReason + } + }) +}); +export const TypeKind = Object.freeze({ + SCALAR: 'SCALAR', + OBJECT: 'OBJECT', + INTERFACE: 'INTERFACE', + UNION: 'UNION', + ENUM: 'ENUM', + INPUT_OBJECT: 'INPUT_OBJECT', + LIST: 'LIST', + NON_NULL: 'NON_NULL' +}); +export const __TypeKind = new GraphQLEnumType({ + name: '__TypeKind', + description: 'An enum describing what kind of type a given `__Type` is.', + values: { + SCALAR: { + value: TypeKind.SCALAR, + description: 'Indicates this type is a scalar.' + }, + OBJECT: { + value: TypeKind.OBJECT, + description: 'Indicates this type is an object. `fields` and `interfaces` are valid fields.' + }, + INTERFACE: { + value: TypeKind.INTERFACE, + description: 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.' + }, + UNION: { + value: TypeKind.UNION, + description: 'Indicates this type is a union. `possibleTypes` is a valid field.' + }, + ENUM: { + value: TypeKind.ENUM, + description: 'Indicates this type is an enum. `enumValues` is a valid field.' + }, + INPUT_OBJECT: { + value: TypeKind.INPUT_OBJECT, + description: 'Indicates this type is an input object. `inputFields` is a valid field.' + }, + LIST: { + value: TypeKind.LIST, + description: 'Indicates this type is a list. `ofType` is a valid field.' + }, + NON_NULL: { + value: TypeKind.NON_NULL, + description: 'Indicates this type is a non-null. `ofType` is a valid field.' + } + } +}); +/** + * Note that these are GraphQLField and not GraphQLFieldConfig, + * so the format for args is different. + */ + +export const SchemaMetaFieldDef = { + name: '__schema', + type: GraphQLNonNull(__Schema), + description: 'Access the current type schema of this server.', + args: [], + resolve: (_source, _args, _context, { + schema + }) => schema, + isDeprecated: false, + deprecationReason: undefined, + extensions: undefined, + astNode: undefined +}; +export const TypeMetaFieldDef = { + name: '__type', + type: __Type, + description: 'Request the type information of a single type.', + args: [{ + name: 'name', + description: undefined, + type: GraphQLNonNull(GraphQLString), + defaultValue: undefined, + extensions: undefined, + astNode: undefined + }], + resolve: (_source, { + name + }, _context, { + schema + }) => schema.getType(name), + isDeprecated: false, + deprecationReason: undefined, + extensions: undefined, + astNode: undefined +}; +export const TypeNameMetaFieldDef = { + name: '__typename', + type: GraphQLNonNull(GraphQLString), + description: 'The name of the current Object type at runtime.', + args: [], + resolve: (_source, _args, _context, { + parentType + }) => parentType.name, + isDeprecated: false, + deprecationReason: undefined, + extensions: undefined, + astNode: undefined +}; +export const introspectionTypes = Object.freeze([__Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind]); +export function isIntrospectionType(type) { + return introspectionTypes.some(({ + name + }) => type.name === name); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/549dabd0a80e54f124ca73c8a759a290f7d32262.ts b/bundler/tests/.cache/deno/549dabd0a80e54f124ca73c8a759a290f7d32262.ts new file mode 100644 index 00000000000..8c5367a6739 --- /dev/null +++ b/bundler/tests/.cache/deno/549dabd0a80e54f124ca73c8a759a290f7d32262.ts @@ -0,0 +1,81 @@ +// Loaded from https://deno.land/x/oak/headers.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import type { BufReader } from "./buf_reader.ts"; +import { httpErrors } from "./httpError.ts"; + +const COLON = ":".charCodeAt(0); +const HTAB = "\t".charCodeAt(0); +const SPACE = " ".charCodeAt(0); + +const decoder = new TextDecoder(); + +/** With a provided attribute pattern, return a RegExp which will match and + * capture in the first group the value of the attribute from a header value. */ +export function toParamRegExp( + attributePattern: string, + flags?: string, +): RegExp { + // deno-fmt-ignore + return new RegExp( + `(?:^|;)\\s*${attributePattern}\\s*=\\s*` + + `(` + + `[^";\\s][^;\\s]*` + + `|` + + `"(?:[^"\\\\]|\\\\"?)+"?` + + `)`, + flags + ); +} + +/** Asynchronously read the headers out of body request and resolve with them as + * a `Headers` object. */ +export async function readHeaders( + body: BufReader, +): Promise> { + const headers: Record = {}; + let readResult = await body.readLine(); + while (readResult) { + const { bytes } = readResult; + if (!bytes.length) { + return headers; + } + let i = bytes.indexOf(COLON); + if (i === -1) { + throw new httpErrors.BadRequest( + `Malformed header: ${decoder.decode(bytes)}`, + ); + } + const key = decoder.decode(bytes.subarray(0, i)).trim().toLowerCase(); + if (key === "") { + throw new httpErrors.BadRequest("Invalid header key."); + } + i++; + while (i < bytes.byteLength && (bytes[i] === SPACE || bytes[i] === HTAB)) { + i++; + } + const value = decoder.decode(bytes.subarray(i)).trim(); + headers[key] = value; + readResult = await body.readLine(); + } + throw new httpErrors.BadRequest("Unexpected end of body reached."); +} + +/** Unquotes attribute values that might be pass as part of a header. */ +export function unquote(value: string): string { + if (value.startsWith(`"`)) { + const parts = value.slice(1).split(`\\"`); + for (let i = 0; i < parts.length; ++i) { + const quoteIndex = parts[i].indexOf(`"`); + if (quoteIndex !== -1) { + parts[i] = parts[i].slice(0, quoteIndex); + parts.length = i + 1; // Truncates and stops the loop + } + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + value = parts.join(`"`); + } + return value; +} diff --git a/bundler/tests/.cache/deno/552152ba99e3dd3ca555ef74a8d03c1d0f2ed89e.ts b/bundler/tests/.cache/deno/552152ba99e3dd3ca555ef74a8d03c1d0f2ed89e.ts new file mode 100644 index 00000000000..3686f933271 --- /dev/null +++ b/bundler/tests/.cache/deno/552152ba99e3dd3ca555ef74a8d03c1d0f2ed89e.ts @@ -0,0 +1,324 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/types.ts + + +import { Bson } from "../deps.ts"; + +export type Document = Bson.Document; + +export interface ConnectOptions { + servers: { + host: string; + port: number; + domainSocket?: string; + }[]; + auth?: { + user: string; + password: string; + }; + dbName?: string; + [key: string]: any; +} + +export interface CountOptions { + limit?: number; + skip?: number; + hint?: Document | string; + comment?: Document; + readConcern?: Document; + collation?: Document; +} + +export interface FindOptions { + findOne?: boolean; + skip?: number; + limit?: number; + projection?: Document; +} + +export interface ListDatabaseInfo { + name: string; + sizeOnDisk?: number; + empty?: false; +} + +export interface InsertOptions { + /** + * Optional. If true, then when an insert of a document fails, return without inserting any remaining documents listed in the inserts array. + * If false, then when an insert of a document fails, continue to insert the remaining documents. Defaults to true. + */ + ordered?: boolean; + + /** + * Optional. A document that expresses the write concern of the insert command. Omit to use the default write concern. + * Do not explicitly set the write concern for the operation if run in a transaction. To use write concern with transactions, see Transactions and Write Concern. + */ + writeConcern?: Document; + + /** + * Optional. Enables insert to bypass document validation during the operation. This lets you insert documents that do not meet the validation requirements. + */ + bypassDocumentValidation?: boolean; + + /** + * Optional. A user-provided comment to attach to this command. + */ + comment?: Document; +} +export interface UpdateOptions { + /** + * Optional. A document expressing the write concern of the update command. Omit to use the default write concern. + */ + writeConcern?: Document; + + /** + * Optional. If true, then when an update statement fails, return without performing the remaining update statements. + * If false, then when an update fails, continue with the remaining update statements, if any. Defaults to true. + */ + ordered?: boolean; + + /** + * Optional. If true, updates all documents that meet the query criteria. + * If false, limit the update to one document that meet the query criteria. Defaults to false. + */ + multi?: boolean; + + /** + * optional list of array filters referenced in filtered positional operators + */ + arrayFilters?: Document[]; + + /** + * Specify collation (MongoDB 3.4 or higher) settings for update operation (see 3.4 documentation for available fields). + */ + collation?: Document; + + /** + * Allow driver to bypass schema validation in MongoDB 3.2 or higher + */ + bypassDocumentValidation?: boolean; + + /** + * An optional hint for query optimization. See the update (https://docs.mongodb.com/manual/reference/command/update/#update-command-hint) command reference for more information. + */ + hint?: Document; + + /** + * When true, creates a new document if no document matches the query. + */ + upsert?: boolean; + + /** + * The write concern timeout. + */ + wtimeout?: number; + + /** + * If true, will throw if bson documents start with $ or include a . in any key value + */ + checkKeys?: boolean; + + /** + * Serialize functions on any object. + */ + serializeFunctions?: boolean; + + /** + * Specify if the BSON serializer should ignore undefined fields. + */ + ignoreUndefined?: boolean; + + /** + * Optional. A user-provided comment to attach to this command. + */ + comment?: Document; + + /** + * optional session to use for this operation + */ + // session?: ClientSession +} + +export interface DeleteOptions { + /** + * Optional. If true, then when a delete statement fails, return without performing the remaining delete statements. + * If false, then when a delete statement fails, continue with the remaining delete statements, if any. Defaults to true. + */ + ordered?: boolean; + + /** + * Optional. A document expressing the write concern of the delete command. Omit to use the default write concern. + */ + writeConcern?: Document; + + /** + * Optional. Specifies the collation to use for the operation. + * See https://docs.mongodb.com/manual/reference/command/delete/#deletes-array-collation + */ + collation?: Document; + + /** + * Optional. A user-provided comment to attach to this command. + */ + comment?: Document; + + /** + * The number of matching documents to delete. Specify either a 0 to delete all matching documents or 1 to delete a single document. + */ + limit?: number; + + /** + * Optional. A document or string that specifies the index to use to support the query predicate. + * The option can take an index specification document or the index name string. + * If you specify an index that does not exist, the operation errors. + */ + hint?: Document | string; +} + +export interface DropOptions { + /** + * Optional. A document expressing the write concern of the drop command. Omit to use the default write concern. + */ + writeConcern?: Document; + + /** + * Optional. A user-provided comment to attach to this command. + */ + comment?: any; +} + +export interface DistinctOptions { + /** + * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + */ + readPreference?: string; + /** + * Number of milliseconds to wait before aborting the query. + */ + maxTimeMS?: number; + /** + * pecify collation settings for operation. See aggregation documentation(https://docs.mongodb.com/manual/reference/command/aggregate). + */ + collation?: Document; + /** + * optional session to use for this operation + */ + // session?:ClientSession; +} + +export interface AggregateOptions { + /** + * The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + */ + readPreference?: string; + /** + * @default 1000 + * The number of documents to return per batch. See aggregation documentation(https://docs.mongodb.com/manual/reference/command/aggregate). + */ + batchSize?: number; + /** + * @default false + * Explain returns the aggregation execution plan (requires mongodb 2.6 >). + */ + explain?: boolean; + /** + * @default false + * allowDiskUse lets the server know if it can use disk to store temporary results for the aggregation (requires mongodb 2.6 >). + */ + allowDiskUse?: boolean; + /** + * maxTimeMS specifies a cumulative time limit in milliseconds for processing operations on the cursor. MongoDB interrupts the operation at the earliest following interrupt point. + */ + maxTimeMS?: number; + /** + * @default false + * Allow driver to bypass schema validation in MongoDB 3.2 or higher. + */ + bypassDocumentValidation?: boolean; + /** + * @default false + *Return document results as raw BSON buffers. + */ + raw?: boolean; + /** + * @default true + * Promotes Long values to number if they fit inside the 53 bits resolution. + */ + promoteLongs?: boolean; + /** + * @default true + * Promotes BSON values to native types where possible, set to false to only receive wrapper types. + */ + promoteValues?: boolean; + /** + * @default false + * Promotes Binary BSON values to native Node Buffers. + */ + promoteBuffers?: boolean; + /** + * Specify collation settings for operation. See aggregation documentation(https://docs.mongodb.com/manual/reference/command/aggregate). + */ + collation?: Document; + /** + * Add a comment to an aggregation command + */ + comment?: string; + /** + * Add an index selection hint to an aggregation command + */ + hint?: string | Document; + /** + * optional session to use for this operation + */ + // session?:ClientSession; +} + +export interface CreateUserOptions { + /** + * The name of the new user. + */ + username?: string; + + /** + * The user’s password. The pwd field is not required if you run createUser on the $external database to create users who have credentials stored externally to MongoDB. + */ + password?: string; + + /** + * Optional. Any arbitrary information. This field can be used to store any data an admin wishes to associate with this particular user. For example, this could be the user’s full name or employee id. + */ + customData?: Document; + + /** + * The roles granted to the user. Can specify an empty array [] to create users without roles. + */ + roles?: (string | { + role: string; + db: string; + })[]; + + /** + * Optional. Indicates whether the server or the client digests the password. + * See https://docs.mongodb.com/manual/reference/command/createUser/#dbcmd.createUser + */ + digestPassword?: boolean; + + /** + * Optional. The level of write concern for the creation operation. The writeConcern document takes the same fields as the getLastError command. + */ + writeConcern?: Document; + + /** + * Optional. The authentication restrictions the server enforces on the created user. Specifies a list of IP addresses and CIDR ranges from which the user is allowed to connect to the server or from which the server can accept users. + */ + authenticationRestrictions?: Document[]; + + /** + * Optional. Specify the specific SCRAM mechanism or mechanisms for creating SCRAM user credentials. + */ + mechanisms?: ("SCRAM-SHA-1" | "SCRAM-SHA-256")[]; + + /** + * Optional. A user-provided comment to attach to this command. + */ + comment?: Document; +} diff --git a/bundler/tests/.cache/deno/552946951b4b80b2c8e7a6ad38379fd26d613ac4.ts b/bundler/tests/.cache/deno/552946951b4b80b2c8e7a6ad38379fd26d613ac4.ts new file mode 100644 index 00000000000..31323050cb8 --- /dev/null +++ b/bundler/tests/.cache/deno/552946951b4b80b2c8e7a6ad38379fd26d613ac4.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/toString.ts + + +export const toString = (input: any) => { + if (typeof input === 'object' && input !== null) { + if (typeof input.toString === 'function') { + input = input.toString(); + } else { + input = '[object Object]'; + } + } else if ( + input === null || + typeof input === 'undefined' || + (isNaN(input) && !input.length) + ) { + input = ''; + } + + return String(input); +}; diff --git a/bundler/tests/.cache/deno/553188ab802f6dd896fa0ca480bc82efe61cc26e.ts b/bundler/tests/.cache/deno/553188ab802f6dd896fa0ca480bc82efe61cc26e.ts new file mode 100644 index 00000000000..4d27c1eaaa3 --- /dev/null +++ b/bundler/tests/.cache/deno/553188ab802f6dd896fa0ca480bc82efe61cc26e.ts @@ -0,0 +1,117 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/mod.ts + + +import type { RSAOption, RSASignOption, JSONWebKey } from "./common.ts"; +import { WebCryptoRSA } from "./rsa_wc.ts"; +import { PureRSA } from "./rsa_js.ts"; +import { RawBinary } from "../binary.ts"; +import { rsa_import_key } from "./import_key.ts"; +import { RSAKey } from "./rsa_key.ts"; + +type RSAPublicKeyFormat = [[string, null], [[bigint, bigint]]]; + +function computeMessage(m: Uint8Array | string) { + return typeof m === "string" ? new TextEncoder().encode(m) : m; +} + +function computeOption(options?: Partial): RSAOption { + return { + hash: "sha1", + padding: "oaep", + ...options, + }; +} + +export class RSA { + protected key: RSAKey; + + constructor(key: RSAKey) { + this.key = key; + } + + async encrypt( + m: Uint8Array | string, + options?: Partial, + ) { + const computedOption = computeOption(options); + + const func = WebCryptoRSA.isSupported(computedOption) + ? WebCryptoRSA.encrypt + : PureRSA.encrypt; + + return new RawBinary( + await func(this.key, computeMessage(m), computedOption), + ); + } + + async decrypt( + m: Uint8Array, + options?: Partial, + ) { + const computedOption = computeOption(options); + + const func = WebCryptoRSA.isSupported(computedOption) + ? WebCryptoRSA.decrypt + : PureRSA.decrypt; + + return new RawBinary( + await func(this.key, m, computedOption), + ); + } + + async verify( + signature: Uint8Array, + message: Uint8Array | string, + options?: Partial, + ): Promise { + const computedOption: RSASignOption = { + ...options, + algorithm: "rsassa-pkcs1-v1_5", + hash: "sha256", + }; + + return await PureRSA.verify( + this.key, + signature, + computeMessage(message), + computedOption, + ); + } + + async sign( + message: Uint8Array | string, + options?: Partial, + ): Promise { + const computedOption: RSASignOption = { + ...options, + algorithm: "rsassa-pkcs1-v1_5", + hash: "sha256", + }; + + return await PureRSA.sign( + this.key, + computeMessage(message), + computedOption, + ); + } + + static parseKey( + key: string | JSONWebKey, + format: "auto" | "jwk" | "pem" = "auto", + ): RSAKey { + return this.importKey(key, format); + } + + /** + * Convert key in an external, portable format to our internal key format + * + * @param key String or key containing the key in the given format. + * @param format is a string describing the data format of the key to import. Choose "auto", it will try to guess the correct format of the given key + */ + static importKey( + key: string | JSONWebKey, + format: "auto" | "jwk" | "pem" = "auto", + ): RSAKey { + return new RSAKey(rsa_import_key(key, format)); + } +} diff --git a/bundler/tests/.cache/deno/554d9f5765333023f0c447868abce45956e877f2.ts b/bundler/tests/.cache/deno/554d9f5765333023f0c447868abce45956e877f2.ts new file mode 100644 index 00000000000..0559ee4f478 --- /dev/null +++ b/bundler/tests/.cache/deno/554d9f5765333023f0c447868abce45956e877f2.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/556cc2ee8301e0b5a23927cd88f6e87204d04aa2.ts b/bundler/tests/.cache/deno/556cc2ee8301e0b5a23927cd88f6e87204d04aa2.ts new file mode 100644 index 00000000000..49ba8d1341c --- /dev/null +++ b/bundler/tests/.cache/deno/556cc2ee8301e0b5a23927cd88f6e87204d04aa2.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/sum.js + + +import add from './add.js'; +import reduce from './reduce.js'; + + +/** + * Adds together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The sum of all the numbers in the list. + * @see R.reduce + * @example + * + * R.sum([2,4,6,8,100,1]); //=> 121 + */ +var sum = reduce(add, 0); +export default sum; diff --git a/bundler/tests/.cache/deno/55bda4f8a080138dd5a21f24579f775477081798.ts b/bundler/tests/.cache/deno/55bda4f8a080138dd5a21f24579f775477081798.ts new file mode 100644 index 00000000000..244c0b0aa21 --- /dev/null +++ b/bundler/tests/.cache/deno/55bda4f8a080138dd5a21f24579f775477081798.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.80.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/5626748aec39922bf5a6cc48950edc293b5d90e5.ts b/bundler/tests/.cache/deno/5626748aec39922bf5a6cc48950edc293b5d90e5.ts new file mode 100644 index 00000000000..7ffcc097f73 --- /dev/null +++ b/bundler/tests/.cache/deno/5626748aec39922bf5a6cc48950edc293b5d90e5.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/includes.js + + +import _includes from './internal/_includes.js'; +import _curry2 from './internal/_curry2.js'; + +/** + * Returns `true` if the specified value is equal, in [`R.equals`](#equals) + * terms, to at least one element of the given list; `false` otherwise. + * Also works with strings. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category List + * @sig a -> [a] -> Boolean + * @param {Object} a The item to compare against. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. + * @see R.any + * @example + * + * R.includes(3, [1, 2, 3]); //=> true + * R.includes(4, [1, 2, 3]); //=> false + * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true + * R.includes([42], [[42]]); //=> true + * R.includes('ba', 'banana'); //=>true + */ +var includes = _curry2(_includes); +export default includes; diff --git a/bundler/tests/.cache/deno/5674474382f85588f75d9aa8f15b8b351c51b5c5.ts b/bundler/tests/.cache/deno/5674474382f85588f75d9aa8f15b8b351c51b5c5.ts new file mode 100644 index 00000000000..50859130280 --- /dev/null +++ b/bundler/tests/.cache/deno/5674474382f85588f75d9aa8f15b8b351c51b5c5.ts @@ -0,0 +1,77 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/wasm.ts + + +import SqliteError from "./error.ts"; + +// Move string to C +export function setStr( + wasm: any, + str: string, + closure: (ptr: number) => void, +) { + const bytes = new TextEncoder().encode(str); + const ptr = wasm.malloc(bytes.length + 1); + if (ptr === 0) { + throw new SqliteError("Out of memory."); + } + const mem = new Uint8Array(wasm.memory.buffer, ptr, bytes.length + 1); + mem.set(bytes); + mem[bytes.length] = 0; // \0 terminator + closure(ptr); + wasm.free(ptr); +} + +// Move Uint8Array to C +export function setArr( + wasm: any, + arr: Uint8Array, + closure: (ptr: number) => void, +) { + const ptr = wasm.malloc(arr.length); + if (ptr === 0) { + throw new SqliteError("Out of memory."); + } + const mem = new Uint8Array(wasm.memory.buffer, ptr, arr.length); + mem.set(arr); + closure(ptr); + wasm.free(ptr); +} + +// Read string from C +export function getStr(wasm: any, ptr: number): string { + const len = wasm.str_len(ptr); + const bytes = new Uint8Array(wasm.memory.buffer, ptr, len); + if (len > 16) { + return new TextDecoder().decode(bytes); + } else { + // This optimization is lifted from EMSCRIPTEN's glue code + let str = ""; + let idx = 0; + while (idx < len) { + var u0 = bytes[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = bytes[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = bytes[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + // cut warning + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (bytes[idx++] & 63); + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + return str; + } +} diff --git a/bundler/tests/.cache/deno/56cfa45e65f954216dae630870817332d63c7874.ts b/bundler/tests/.cache/deno/56cfa45e65f954216dae630870817332d63c7874.ts new file mode 100644 index 00000000000..d2f3c2e7104 --- /dev/null +++ b/bundler/tests/.cache/deno/56cfa45e65f954216dae630870817332d63c7874.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_identity.js + + +export default function _identity(x) { return x; } diff --git a/bundler/tests/.cache/deno/5707df2773cbf05df35503cd5a8cc873455ad561.ts b/bundler/tests/.cache/deno/5707df2773cbf05df35503cd5a8cc873455ad561.ts new file mode 100644 index 00000000000..d6e7ada2019 --- /dev/null +++ b/bundler/tests/.cache/deno/5707df2773cbf05df35503cd5a8cc873455ad561.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isByteLength.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type ByteLengthOptions = { + /** + * @default 0 + */ + min?: number; + + /** + * @default undefined + */ + max?: number; +}; + +/** + * @ignore + */ +const defaultByteLengthOptions: ByteLengthOptions = { + min: 0, +}; + +export const isByteLength = (str: string, options?: ByteLengthOptions) => { + assertString(str); + + options = { ...defaultByteLengthOptions, ...options }; + let { min, max } = options; + + // force min to be 0 if undefined + min = min || 0; + + const len = encodeURI(str).split(/%..|./).length - 1; + return len >= min && (typeof max === 'undefined' || len <= max); +}; diff --git a/bundler/tests/.cache/deno/57638de3cb2e1e316fd6e4e5b87f5ea603687aeb.ts b/bundler/tests/.cache/deno/57638de3cb2e1e316fd6e4e5b87f5ea603687aeb.ts new file mode 100644 index 00000000000..419ede308fa --- /dev/null +++ b/bundler/tests/.cache/deno/57638de3cb2e1e316fd6e4e5b87f5ea603687aeb.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std/fs/empty_dir.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { join } from "../path/mod.ts"; + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function emptyDir(dir: string): Promise { + try { + const items = []; + for await (const dirEntry of Deno.readDir(dir)) { + items.push(dirEntry); + } + + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + await Deno.remove(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + + // if not exist. then create it + await Deno.mkdir(dir, { recursive: true }); + } +} + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function emptyDirSync(dir: string): void { + try { + const items = [...Deno.readDirSync(dir)]; + + // If the directory exists, remove all entries inside it. + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + Deno.removeSync(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + // if not exist. then create it + Deno.mkdirSync(dir, { recursive: true }); + return; + } +} diff --git a/bundler/tests/.cache/deno/5789057467243996929ecba6104592ddb762edc9.ts b/bundler/tests/.cache/deno/5789057467243996929ecba6104592ddb762edc9.ts new file mode 100644 index 00000000000..534bc8e3f9d --- /dev/null +++ b/bundler/tests/.cache/deno/5789057467243996929ecba6104592ddb762edc9.ts @@ -0,0 +1,546 @@ +// Loaded from https://deno.land/std@0.73.0/hash/sha256.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* + * Adapted to deno from: + * + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; +// deno-fmt-ignore +const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +] as const; + +const blocks: number[] = []; + +export class Sha256 { + #block!: number; + #blocks!: number[]; + #bytes!: number; + #finalized!: boolean; + #first!: boolean; + #h0!: number; + #h1!: number; + #h2!: number; + #h3!: number; + #h4!: number; + #h5!: number; + #h6!: number; + #h7!: number; + #hashed!: boolean; + #hBytes!: number; + #is224!: boolean; + #lastByteIndex = 0; + #start!: number; + + constructor(is224 = false, sharedMemory = false) { + this.init(is224, sharedMemory); + } + + protected init(is224: boolean, sharedMemory: boolean): void { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + if (is224) { + this.#h0 = 0xc1059ed8; + this.#h1 = 0x367cd507; + this.#h2 = 0x3070dd17; + this.#h3 = 0xf70e5939; + this.#h4 = 0xffc00b31; + this.#h5 = 0x68581511; + this.#h6 = 0x64f98fa7; + this.#h7 = 0xbefa4fa4; + } else { + // 256 + this.#h0 = 0x6a09e667; + this.#h1 = 0xbb67ae85; + this.#h2 = 0x3c6ef372; + this.#h3 = 0xa54ff53a; + this.#h4 = 0x510e527f; + this.#h5 = 0x9b05688c; + this.#h6 = 0x1f83d9ab; + this.#h7 = 0x5be0cd19; + } + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + this.#first = true; + this.#is224 = is224; + } + + /** Update hash + * + * @param message The message you want to hash. + */ + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) << 0; + this.#bytes = this.#bytes % 4294967296; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + protected hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f = this.#h5; + let g = this.#h6; + let h = this.#h7; + const blocks = this.#blocks; + let s0: number; + let s1: number; + let maj: number; + let t1: number; + let t2: number; + let ch: number; + let ab: number; + let da: number; + let cd: number; + let bc: number; + + for (let j = 16; j < 64; ++j) { + // rightrotate + t1 = blocks[j - 15]; + s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3); + t1 = blocks[j - 2]; + s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ + (t1 >>> 10); + blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0; + } + + bc = b & c; + for (let j = 0; j < 64; j += 4) { + if (this.#first) { + if (this.#is224) { + ab = 300032; + t1 = blocks[0] - 1413257819; + h = (t1 - 150054599) << 0; + d = (t1 + 24177077) << 0; + } else { + ab = 704751109; + t1 = blocks[0] - 210244248; + h = (t1 - 1521486534) << 0; + d = (t1 + 143694565) << 0; + } + this.#first = false; + } else { + s0 = ((a >>> 2) | (a << 30)) ^ + ((a >>> 13) | (a << 19)) ^ + ((a >>> 22) | (a << 10)); + s1 = ((e >>> 6) | (e << 26)) ^ + ((e >>> 11) | (e << 21)) ^ + ((e >>> 25) | (e << 7)); + ab = a & b; + maj = ab ^ (a & c) ^ bc; + ch = (e & f) ^ (~e & g); + t1 = h + s1 + ch + K[j] + blocks[j]; + t2 = s0 + maj; + h = (d + t1) << 0; + d = (t1 + t2) << 0; + } + s0 = ((d >>> 2) | (d << 30)) ^ + ((d >>> 13) | (d << 19)) ^ + ((d >>> 22) | (d << 10)); + s1 = ((h >>> 6) | (h << 26)) ^ + ((h >>> 11) | (h << 21)) ^ + ((h >>> 25) | (h << 7)); + da = d & a; + maj = da ^ (d & b) ^ ab; + ch = (h & e) ^ (~h & f); + t1 = g + s1 + ch + K[j + 1] + blocks[j + 1]; + t2 = s0 + maj; + g = (c + t1) << 0; + c = (t1 + t2) << 0; + s0 = ((c >>> 2) | (c << 30)) ^ + ((c >>> 13) | (c << 19)) ^ + ((c >>> 22) | (c << 10)); + s1 = ((g >>> 6) | (g << 26)) ^ + ((g >>> 11) | (g << 21)) ^ + ((g >>> 25) | (g << 7)); + cd = c & d; + maj = cd ^ (c & a) ^ da; + ch = (g & h) ^ (~g & e); + t1 = f + s1 + ch + K[j + 2] + blocks[j + 2]; + t2 = s0 + maj; + f = (b + t1) << 0; + b = (t1 + t2) << 0; + s0 = ((b >>> 2) | (b << 30)) ^ + ((b >>> 13) | (b << 19)) ^ + ((b >>> 22) | (b << 10)); + s1 = ((f >>> 6) | (f << 26)) ^ + ((f >>> 11) | (f << 21)) ^ + ((f >>> 25) | (f << 7)); + bc = b & c; + maj = bc ^ (b & d) ^ cd; + ch = (f & g) ^ (~f & h); + t1 = e + s1 + ch + K[j + 3] + blocks[j + 3]; + t2 = s0 + maj; + e = (a + t1) << 0; + a = (t1 + t2) << 0; + } + + this.#h0 = (this.#h0 + a) << 0; + this.#h1 = (this.#h1 + b) << 0; + this.#h2 = (this.#h2 + c) << 0; + this.#h3 = (this.#h3 + d) << 0; + this.#h4 = (this.#h4 + e) << 0; + this.#h5 = (this.#h5 + f) << 0; + this.#h6 = (this.#h6 + g) << 0; + this.#h7 = (this.#h7 + h) << 0; + } + + /** Return hash in hex string. */ + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + let hex = HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + + HEX_CHARS[(h5 >> 28) & 0x0f] + + HEX_CHARS[(h5 >> 24) & 0x0f] + + HEX_CHARS[(h5 >> 20) & 0x0f] + + HEX_CHARS[(h5 >> 16) & 0x0f] + + HEX_CHARS[(h5 >> 12) & 0x0f] + + HEX_CHARS[(h5 >> 8) & 0x0f] + + HEX_CHARS[(h5 >> 4) & 0x0f] + + HEX_CHARS[h5 & 0x0f] + + HEX_CHARS[(h6 >> 28) & 0x0f] + + HEX_CHARS[(h6 >> 24) & 0x0f] + + HEX_CHARS[(h6 >> 20) & 0x0f] + + HEX_CHARS[(h6 >> 16) & 0x0f] + + HEX_CHARS[(h6 >> 12) & 0x0f] + + HEX_CHARS[(h6 >> 8) & 0x0f] + + HEX_CHARS[(h6 >> 4) & 0x0f] + + HEX_CHARS[h6 & 0x0f]; + if (!this.#is224) { + hex += HEX_CHARS[(h7 >> 28) & 0x0f] + + HEX_CHARS[(h7 >> 24) & 0x0f] + + HEX_CHARS[(h7 >> 20) & 0x0f] + + HEX_CHARS[(h7 >> 16) & 0x0f] + + HEX_CHARS[(h7 >> 12) & 0x0f] + + HEX_CHARS[(h7 >> 8) & 0x0f] + + HEX_CHARS[(h7 >> 4) & 0x0f] + + HEX_CHARS[h7 & 0x0f]; + } + return hex; + } + + /** Return hash in hex string. */ + toString(): string { + return this.hex(); + } + + /** Return hash in integer array. */ + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + const arr = [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + (h5 >> 24) & 0xff, + (h5 >> 16) & 0xff, + (h5 >> 8) & 0xff, + h5 & 0xff, + (h6 >> 24) & 0xff, + (h6 >> 16) & 0xff, + (h6 >> 8) & 0xff, + h6 & 0xff, + ]; + if (!this.#is224) { + arr.push( + (h7 >> 24) & 0xff, + (h7 >> 16) & 0xff, + (h7 >> 8) & 0xff, + h7 & 0xff, + ); + } + return arr; + } + + /** Return hash in integer array. */ + array(): number[] { + return this.digest(); + } + + /** Return hash in ArrayBuffer. */ + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(this.#is224 ? 28 : 32); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + dataView.setUint32(20, this.#h5); + dataView.setUint32(24, this.#h6); + if (!this.#is224) { + dataView.setUint32(28, this.#h7); + } + return buffer; + } +} + +export class HmacSha256 extends Sha256 { + #inner: boolean; + #is224: boolean; + #oKeyPad: number[]; + #sharedMemory: boolean; + + constructor(secretKey: Message, is224 = false, sharedMemory = false) { + super(is224, sharedMemory); + + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length = secretKey.length; + let index = 0; + for (let i = 0; i < length; ++i) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + + if (key.length > 64) { + key = new Sha256(is224, true).update(key).array(); + } + + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; ++i) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#is224 = is224; + this.#sharedMemory = sharedMemory; + } + + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#is224, this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/57dbee60abd6bb62ac6adc2984bc4d9a04bf6a97.ts b/bundler/tests/.cache/deno/57dbee60abd6bb62ac6adc2984bc4d9a04bf6a97.ts new file mode 100644 index 00000000000..0a28b61c380 --- /dev/null +++ b/bundler/tests/.cache/deno/57dbee60abd6bb62ac6adc2984bc4d9a04bf6a97.ts @@ -0,0 +1,191 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/int.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import { Any, isNegativeZero } from "../utils.ts"; + +function isHexCode(c: number): boolean { + return ( + (0x30 <= /* 0 */ c && c <= 0x39) /* 9 */ || + (0x41 <= /* A */ c && c <= 0x46) /* F */ || + (0x61 <= /* a */ c && c <= 0x66) /* f */ + ); +} + +function isOctCode(c: number): boolean { + return 0x30 <= /* 0 */ c && c <= 0x37 /* 7 */; +} + +function isDecCode(c: number): boolean { + return 0x30 <= /* 0 */ c && c <= 0x39 /* 9 */; +} + +function resolveYamlInteger(data: string): boolean { + const max = data.length; + let index = 0; + let hasDigits = false; + + if (!max) return false; + + let ch = data[index]; + + // sign + if (ch === "-" || ch === "+") { + ch = data[++index]; + } + + if (ch === "0") { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === "b") { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (ch !== "0" && ch !== "1") return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + if (ch === "x") { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + // base 10 (except 0) or base 60 + + // value should not start with `_`; + if (ch === "_") return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (ch === ":") break; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === "_") return false; + + // if !base60 - done; + if (ch !== ":") return true; + + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} + +function constructYamlInteger(data: string): number { + let value = data; + const digits: number[] = []; + + if (value.indexOf("_") !== -1) { + value = value.replace(/_/g, ""); + } + + let sign = 1; + let ch = value[0]; + if (ch === "-" || ch === "+") { + if (ch === "-") sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === "0") return 0; + + if (ch === "0") { + if (value[1] === "b") return sign * parseInt(value.slice(2), 2); + if (value[1] === "x") return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + + if (value.indexOf(":") !== -1) { + value.split(":").forEach((v): void => { + digits.unshift(parseInt(v, 10)); + }); + + let valueInt = 0; + let base = 1; + + digits.forEach((d): void => { + valueInt += d * base; + base *= 60; + }); + + return sign * valueInt; + } + + return sign * parseInt(value, 10); +} + +function isInteger(object: Any): boolean { + return ( + Object.prototype.toString.call(object) === "[object Number]" && + object % 1 === 0 && + !isNegativeZero(object) + ); +} + +export const int = new Type("tag:yaml.org,2002:int", { + construct: constructYamlInteger, + defaultStyle: "decimal", + kind: "scalar", + predicate: isInteger, + represent: { + binary(obj: number): string { + return obj >= 0 + ? `0b${obj.toString(2)}` + : `-0b${obj.toString(2).slice(1)}`; + }, + octal(obj: number): string { + return obj >= 0 ? `0${obj.toString(8)}` : `-0${obj.toString(8).slice(1)}`; + }, + decimal(obj: number): string { + return obj.toString(10); + }, + hexadecimal(obj: number): string { + return obj >= 0 + ? `0x${obj.toString(16).toUpperCase()}` + : `-0x${obj.toString(16).toUpperCase().slice(1)}`; + }, + }, + resolve: resolveYamlInteger, + styleAliases: { + binary: [2, "bin"], + decimal: [10, "dec"], + hexadecimal: [16, "hex"], + octal: [8, "oct"], + }, +}); diff --git a/bundler/tests/.cache/deno/57e5f8e92e9bce2d9b35ed202f8b858200326aa7.ts b/bundler/tests/.cache/deno/57e5f8e92e9bce2d9b35ed202f8b858200326aa7.ts new file mode 100644 index 00000000000..a680b9cca91 --- /dev/null +++ b/bundler/tests/.cache/deno/57e5f8e92e9bce2d9b35ed202f8b858200326aa7.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/580bf4be7b7d68aa7808fd72544d38b7ce61fd6e.ts b/bundler/tests/.cache/deno/580bf4be7b7d68aa7808fd72544d38b7ce61fd6e.ts new file mode 100644 index 00000000000..9bcd57eeb2f --- /dev/null +++ b/bundler/tests/.cache/deno/580bf4be7b7d68aa7808fd72544d38b7ce61fd6e.ts @@ -0,0 +1,74 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/utils/common.js + + +function _has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +export function assign (obj /*from1, from2, from3, ...*/) { + var sources = Array.prototype.slice.call(arguments, 1); + while (sources.length) { + var source = sources.shift(); + if (!source) { continue; } + + if (typeof source !== 'object') { + throw new TypeError(source + 'must be non-object'); + } + + for (var p in source) { + if (_has(source, p)) { + obj[p] = source[p]; + } + } + } + + return obj; +}; + + +// reduce buffer size, avoiding mem copy +export function shrinkBuf (buf, size) { + if (buf.length === size) { return buf; } + if (buf.subarray) { return buf.subarray(0, size); } + buf.length = size; + return buf; +}; + + +export function arraySet (dest, src, src_offs, len, dest_offs) { + if (src.subarray && dest.subarray) { + dest.set(src.subarray(src_offs, src_offs + len), dest_offs); + return; + } + // Fallback to ordinary array + for (var i = 0; i < len; i++) { + dest[dest_offs + i] = src[src_offs + i]; + } +} + +// Join array of chunks to single array. +export function flattenChunks (chunks) { + var i, l, len, pos, chunk, result; + + // calculate data length + len = 0; + for (i = 0, l = chunks.length; i < l; i++) { + len += chunks[i].length; + } + + // join chunks + result = new Uint8Array(len); + pos = 0; + for (i = 0, l = chunks.length; i < l; i++) { + chunk = chunks[i]; + result.set(chunk, pos); + pos += chunk.length; + } + + return result; +} + + +export const Buf8 = Uint8Array; +export const Buf16 = Uint16Array; +export const Buf32 = Int32Array; diff --git a/bundler/tests/.cache/deno/580d37ed86922ddc28ae4deabf1eb33940e284a5.ts b/bundler/tests/.cache/deno/580d37ed86922ddc28ae4deabf1eb33940e284a5.ts new file mode 100644 index 00000000000..347ccb2092d --- /dev/null +++ b/bundler/tests/.cache/deno/580d37ed86922ddc28ae4deabf1eb33940e284a5.ts @@ -0,0 +1,166 @@ +// Loaded from https://deno.land/std@0.84.0/textproto/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/tree/master/src/net/textproto +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +import type { BufReader } from "../io/bufio.ts"; +import { concat } from "../bytes/mod.ts"; +import { decode } from "../encoding/utf8.ts"; + +// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9 +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g; + +function str(buf: Uint8Array | null | undefined): string { + if (buf == null) { + return ""; + } else { + return decode(buf); + } +} + +function charCode(s: string): number { + return s.charCodeAt(0); +} + +export class TextProtoReader { + constructor(readonly r: BufReader) {} + + /** readLine() reads a single line from the TextProtoReader, + * eliding the final \n or \r\n from the returned string. + */ + async readLine(): Promise { + const s = await this.readLineSlice(); + if (s === null) return null; + return str(s); + } + + /** ReadMIMEHeader reads a MIME-style header from r. + * The header is a sequence of possibly continued Key: Value lines + * ending in a blank line. + * The returned map m maps CanonicalMIMEHeaderKey(key) to a + * sequence of values in the same order encountered in the input. + * + * For example, consider this input: + * + * My-Key: Value 1 + * Long-Key: Even + * Longer Value + * My-Key: Value 2 + * + * Given that input, ReadMIMEHeader returns the map: + * + * map[string][]string{ + * "My-Key": {"Value 1", "Value 2"}, + * "Long-Key": {"Even Longer Value"}, + * } + */ + async readMIMEHeader(): Promise { + const m = new Headers(); + let line: Uint8Array | undefined; + + // The first line cannot start with a leading space. + let buf = await this.r.peek(1); + if (buf === null) { + return null; + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + line = (await this.readLineSlice()) as Uint8Array; + } + + buf = await this.r.peek(1); + if (buf === null) { + throw new Deno.errors.UnexpectedEof(); + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + throw new Deno.errors.InvalidData( + `malformed MIME header initial line: ${str(line)}`, + ); + } + + while (true) { + const kv = await this.readLineSlice(); // readContinuedLineSlice + if (kv === null) throw new Deno.errors.UnexpectedEof(); + if (kv.byteLength === 0) return m; + + // Key ends at first colon + let i = kv.indexOf(charCode(":")); + if (i < 0) { + throw new Deno.errors.InvalidData( + `malformed MIME header line: ${str(kv)}`, + ); + } + + //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey)); + const key = str(kv.subarray(0, i)); + + // As per RFC 7230 field-name is a token, + // tokens consist of one or more chars. + // We could throw `Deno.errors.InvalidData` here, + // but better to be liberal in what we + // accept, so if we get an empty key, skip it. + if (key == "") { + continue; + } + + // Skip initial spaces in value. + i++; // skip colon + while ( + i < kv.byteLength && + (kv[i] == charCode(" ") || kv[i] == charCode("\t")) + ) { + i++; + } + const value = str(kv.subarray(i)).replace( + invalidHeaderCharRegex, + encodeURI, + ); + + // In case of invalid header we swallow the error + // example: "Audio Mode" => invalid due to space in the key + try { + m.append(key, value); + } catch { + // Pass + } + } + } + + async readLineSlice(): Promise { + // this.closeDot(); + let line: Uint8Array | undefined; + while (true) { + const r = await this.r.readLine(); + if (r === null) return null; + const { line: l, more } = r; + + // Avoid the copy if the first call produced a full line. + if (!line && !more) { + // TODO(ry): + // This skipSpace() is definitely misplaced, but I don't know where it + // comes from nor how to fix it. + if (this.skipSpace(l) === 0) { + return new Uint8Array(0); + } + return l; + } + line = line ? concat(line, l) : l; + if (!more) { + break; + } + } + return line; + } + + skipSpace(l: Uint8Array): number { + let n = 0; + for (let i = 0; i < l.length; i++) { + if (l[i] === charCode(" ") || l[i] === charCode("\t")) { + continue; + } + n++; + } + return n; + } +} diff --git a/bundler/tests/.cache/deno/584d22e957080d2df6b83c75e3ee64a7682b71ae.ts b/bundler/tests/.cache/deno/584d22e957080d2df6b83c75e3ee64a7682b71ae.ts new file mode 100644 index 00000000000..74fafb8f84d --- /dev/null +++ b/bundler/tests/.cache/deno/584d22e957080d2df6b83c75e3ee64a7682b71ae.ts @@ -0,0 +1,124 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/export_key.ts + + +import type { RSAKeyParams } from "./common.ts"; +import { bignum_to_byte } from "../helper.ts"; +import { encode } from "./../../src/utility/encode.ts"; + +function ber_size_bytes(size: number): number[] { + // The BER Length + // The second component in the TLV structure of a BER element is the length. + // This specifies the size in bytes of the encoded value. For the most part, + // this uses a straightforward binary encoding of the integer value + // (for example, if the encoded value is five bytes long, then it is encoded as + // 00000101 binary, or 0x05 hex), but if the value is longer than 127 bytes then + // it is necessary to use multiple bytes to encode the length. In that case, the + // first byte has the leftmost bit set to one and the remaining seven bits are + // used to specify the number of bytes required to encode the full length. For example, + // if there are 500 bytes in the length (hex 0x01F4), then the encoded length will actually + // consist of three bytes: 82 01 F4. + // + // Note that there is an alternate form for encoding the length called the indefinite form. + // In this mechanism, only a part of the length is given at a time, similar to the chunked encoding + // that is available in HTTP 1.1. However, this form is not used in LDAP, as specified in RFC 2251 + // section 5.1. + // https://docs.oracle.com/cd/E19476-01/821-0510/def-basic-encoding-rules.html + + if (size <= 127) return [size]; + + const bytes = []; + while (size > 0) { + bytes.push(size & 0xff); + size = size >> 8; + } + + bytes.reverse(); + return [0x80 + bytes.length, ...bytes]; +} + +function add_line_break(base64_str: string): string { + const lines = []; + for (let i = 0; i < base64_str.length; i += 64) { + lines.push(base64_str.substr(i, 64)); + } + + return lines.join("\n"); +} + +function ber_generate_integer_list(order: number[][]) { + let content: number[] = []; + + for (const item of order) { + if ((item[0] & 0x80) > 0) { + content = content.concat( + [0x02, ...ber_size_bytes(item.length + 1), 0x0, ...item], + ); + } else { + content = content.concat( + [0x02, ...ber_size_bytes(item.length), ...item], + ); + } + } + + return content; +} + +export function rsa_export_pkcs8_public(key: RSAKeyParams) { + const n = bignum_to_byte(key.n); + const e = bignum_to_byte(key.e || 0n); + + // deno-fmt-ignore + const other = [0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00]; + + // Key sequence + const content = ber_generate_integer_list([n, e]); + const keySequence = [ + 0x30, + ...ber_size_bytes(content.length), + ...content, + ]; + + // Bitstring + const bitString = [ + 0x03, + ...ber_size_bytes(keySequence.length + 1), + 0x00, + ...keySequence, + ]; + + const ber = [ + 0x30, + ...ber_size_bytes(other.length + bitString.length), + ...other, + ...bitString, + ]; + + return "-----BEGIN PUBLIC KEY-----\n" + + add_line_break(encode.binary(ber).base64()) + + "\n-----END PUBLIC KEY-----\n"; +} + +export function rsa_export_pkcs8_private(key: RSAKeyParams) { + const n = bignum_to_byte(key.n); + const e = bignum_to_byte(key.e || 0n); + const d = bignum_to_byte(key.d || 0n); + const q = bignum_to_byte(key.q || 0n); + const p = bignum_to_byte(key.p || 0n); + const dp = bignum_to_byte(key.dp || 0n); + const dq = bignum_to_byte(key.dq || 0n); + const qi = bignum_to_byte(key.qi || 0n); + + const content = ber_generate_integer_list([n, e, d, p, q, dp, dq, qi]); + + const ber = encode.binary([ + 0x30, + ...ber_size_bytes(content.length + 3), + 0x02, + 0x01, + 0x00, + ...content, + ]).base64(); + + return "-----BEGIN RSA PRIVATE KEY-----\n" + add_line_break(ber) + + "\n-----END RSA PRIVATE KEY-----\n"; +} diff --git a/bundler/tests/.cache/deno/5862b1065b772747707c346af8887b051db043a1.ts b/bundler/tests/.cache/deno/5862b1065b772747707c346af8887b051db043a1.ts new file mode 100644 index 00000000000..de579b4c4c1 --- /dev/null +++ b/bundler/tests/.cache/deno/5862b1065b772747707c346af8887b051db043a1.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/isObjectLike.js + + +/** + * Return true if `value` is object-like. A value is object-like if it's not + * `null` and has a `typeof` result of "object". + */ +export default function isObjectLike(value) { + return typeof value == 'object' && value !== null; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/58d3bd8561df0406be7e9c4368743833bc5cea79.ts b/bundler/tests/.cache/deno/58d3bd8561df0406be7e9c4368743833bc5cea79.ts new file mode 100644 index 00000000000..0f71b4acbc3 --- /dev/null +++ b/bundler/tests/.cache/deno/58d3bd8561df0406be7e9c4368743833bc5cea79.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/std@0.73.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/58d5f831f3fc1a7244b4d4ce1dc82380f6201933.ts b/bundler/tests/.cache/deno/58d5f831f3fc1a7244b4d4ce1dc82380f6201933.ts new file mode 100644 index 00000000000..10f1eace977 --- /dev/null +++ b/bundler/tests/.cache/deno/58d5f831f3fc1a7244b4d4ce1dc82380f6201933.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/match.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Tests a regular expression against a String. Note that this function will + * return an empty array when there are no matches. This differs from + * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) + * which returns `null` when there are no matches. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig RegExp -> String -> [String | Undefined] + * @param {RegExp} rx A regular expression. + * @param {String} str The string to match against + * @return {Array} The list of matches or empty array. + * @see R.test + * @example + * + * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] + * R.match(/a/, 'b'); //=> [] + * R.match(/a/, null); //=> TypeError: null does not have a method named "match" + */ +var match = _curry2(function match(rx, str) { + return str.match(rx) || []; +}); +export default match; diff --git a/bundler/tests/.cache/deno/58eb2a0961019853bb83d674345bf3bb70559097.ts b/bundler/tests/.cache/deno/58eb2a0961019853bb83d674345bf3bb70559097.ts new file mode 100644 index 00000000000..0ed075b9462 --- /dev/null +++ b/bundler/tests/.cache/deno/58eb2a0961019853bb83d674345bf3bb70559097.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/index.ts + + +export * from './validations/isAfter.ts'; +export * from './validations/isAlpha.ts'; +export * from './validations/isAlphanumeric.ts'; +export * from './validations/isAscii.ts'; +export * from './validations/isBIC.ts'; +export * from './validations/isBase32.ts'; +export * from './validations/isBase64.ts'; +export * from './validations/isBefore.ts'; +export * from './validations/isBoolean.ts'; +export * from './validations/isBtcAddress.ts'; +export * from './validations/isByteLength.ts'; +export * from './validations/isCreditCard.ts'; +export * from './validations/isCurrency.ts'; +export * from './validations/isDataURI.ts'; +export * from './validations/isDate.ts'; +export * from './validations/isDecimal.ts'; +export * from './validations/isDivisibleBy.ts'; +export * from './validations/isEAN.ts'; +export * from './validations/isEmail.ts'; +export * from './validations/isEmpty.ts'; +export * from './validations/isEthereumAddress.ts'; +export * from './validations/isFQDN.ts'; +export * from './validations/isFloat.ts'; +export * from './validations/isFullWidth.ts'; +export * from './validations/isHalfWidth.ts'; +export * from './validations/isHash.ts'; +export * from './validations/isHexColor.ts'; +export * from './validations/isHexadecimal.ts'; +export * from './validations/isHsl.ts'; +export * from './validations/isIBAN.ts'; +export * from './validations/isIMEI.ts'; +export * from './validations/isIP.ts'; +export * from './validations/isIPRange.ts'; +export * from './validations/isISBN.ts'; +export * from './validations/isISIN.ts'; +export * from './validations/isISO31661Alpha2.ts'; +export * from './validations/isISO31661Alpha3.ts'; +export * from './validations/isISO8601.ts'; +export * from './validations/isISRC.ts'; +export * from './validations/isISSN.ts'; +export * from './validations/isIdentityCard.ts'; +export * from './validations/isIn.ts'; +export * from './validations/isInt.ts'; +export * from './validations/isJSON.ts'; +export * from './validations/isJWT.ts'; +export * from './validations/isLatLong.ts'; +export * from './validations/isLength.ts'; +export * from './validations/isLocale.ts'; +export * from './validations/isLowercase.ts'; +export * from './validations/isMACAddress.ts'; +export * from './validations/isMD5.ts'; +export * from './validations/isMagnetURI.ts'; +export * from './validations/isMimeType.ts'; +export * from './validations/isMobilePhone.ts'; +export * from './validations/isMongoId.ts'; +export * from './validations/isMultibyte.ts'; +export * from './validations/isNumeric.ts'; +export * from './validations/isOctal.ts'; +export * from './validations/isPassportNumber.ts'; +export * from './validations/isPort.ts'; +export * from './validations/isPostalCode.ts'; +export * from './validations/isRFC3339.ts'; +export * from './validations/isRgbColor.ts'; +export * from './validations/isSemVer.ts'; +export * from './validations/isSlug.ts'; +export * from './validations/isSurrogatePair.ts'; +export * from './validations/isSvg.ts'; +export * from './validations/isTaxID.ts'; +export * from './validations/isURL.ts'; +export * from './validations/isUUID.ts'; +export * from './validations/isUppercase.ts'; +export * from './validations/isVariableWidth.ts'; +export * from './validations/isWhitelisted.ts'; diff --git a/bundler/tests/.cache/deno/590618a05c830a54b7940c5460bfdd686708a0d6.ts b/bundler/tests/.cache/deno/590618a05c830a54b7940c5460bfdd686708a0d6.ts new file mode 100644 index 00000000000..0d9c37ad6e2 --- /dev/null +++ b/bundler/tests/.cache/deno/590618a05c830a54b7940c5460bfdd686708a0d6.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/std@0.74.0/log/handlers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, LevelName, LogLevels } from "./levels.ts"; +import type { LogRecord } from "./logger.ts"; +import { blue, bold, red, yellow } from "../fmt/colors.ts"; +import { exists, existsSync } from "../fs/exists.ts"; +import { BufWriterSync } from "../io/bufio.ts"; + +const DEFAULT_FORMATTER = "{levelName} {msg}"; +type FormatterFunction = (logRecord: LogRecord) => string; +type LogMode = "a" | "w" | "x"; + +interface HandlerOptions { + formatter?: string | FormatterFunction; +} + +export class BaseHandler { + level: number; + levelName: LevelName; + formatter: string | FormatterFunction; + + constructor(levelName: LevelName, options: HandlerOptions = {}) { + this.level = getLevelByName(levelName); + this.levelName = levelName; + + this.formatter = options.formatter || DEFAULT_FORMATTER; + } + + handle(logRecord: LogRecord): void { + if (this.level > logRecord.level) return; + + const msg = this.format(logRecord); + return this.log(msg); + } + + format(logRecord: LogRecord): string { + if (this.formatter instanceof Function) { + return this.formatter(logRecord); + } + + return this.formatter.replace(/{(\S+)}/g, (match, p1): string => { + const value = logRecord[p1 as keyof LogRecord]; + + // do not interpolate missing values + if (value == null) { + return match; + } + + return String(value); + }); + } + + log(_msg: string): void {} + async setup(): Promise {} + async destroy(): Promise {} +} + +export class ConsoleHandler extends BaseHandler { + format(logRecord: LogRecord): string { + let msg = super.format(logRecord); + + switch (logRecord.level) { + case LogLevels.INFO: + msg = blue(msg); + break; + case LogLevels.WARNING: + msg = yellow(msg); + break; + case LogLevels.ERROR: + msg = red(msg); + break; + case LogLevels.CRITICAL: + msg = bold(red(msg)); + break; + default: + break; + } + + return msg; + } + + log(msg: string): void { + console.log(msg); + } +} + +export abstract class WriterHandler extends BaseHandler { + protected _writer!: Deno.Writer; + #encoder = new TextEncoder(); + + abstract log(msg: string): void; +} + +interface FileHandlerOptions extends HandlerOptions { + filename: string; + mode?: LogMode; +} + +export class FileHandler extends WriterHandler { + protected _file: Deno.File | undefined; + protected _buf!: BufWriterSync; + protected _filename: string; + protected _mode: LogMode; + protected _openOptions: Deno.OpenOptions; + protected _encoder = new TextEncoder(); + #unloadCallback = (): Promise => this.destroy(); + + constructor(levelName: LevelName, options: FileHandlerOptions) { + super(levelName, options); + this._filename = options.filename; + // default to append mode, write only + this._mode = options.mode ? options.mode : "a"; + this._openOptions = { + createNew: this._mode === "x", + create: this._mode !== "x", + append: this._mode === "a", + truncate: this._mode !== "a", + write: true, + }; + } + + async setup(): Promise { + this._file = await Deno.open(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + + addEventListener("unload", this.#unloadCallback); + } + + handle(logRecord: LogRecord): void { + super.handle(logRecord); + + // Immediately flush if log level is higher than ERROR + if (logRecord.level > LogLevels.ERROR) { + this.flush(); + } + } + + log(msg: string): void { + this._buf.writeSync(this._encoder.encode(msg + "\n")); + } + + flush(): void { + if (this._buf?.buffered() > 0) { + this._buf.flush(); + } + } + + destroy(): Promise { + this.flush(); + this._file?.close(); + this._file = undefined; + removeEventListener("unload", this.#unloadCallback); + return Promise.resolve(); + } +} + +interface RotatingFileHandlerOptions extends FileHandlerOptions { + maxBytes: number; + maxBackupCount: number; +} + +export class RotatingFileHandler extends FileHandler { + #maxBytes: number; + #maxBackupCount: number; + #currentFileSize = 0; + + constructor(levelName: LevelName, options: RotatingFileHandlerOptions) { + super(levelName, options); + this.#maxBytes = options.maxBytes; + this.#maxBackupCount = options.maxBackupCount; + } + + async setup(): Promise { + if (this.#maxBytes < 1) { + this.destroy(); + throw new Error("maxBytes cannot be less than 1"); + } + if (this.#maxBackupCount < 1) { + this.destroy(); + throw new Error("maxBackupCount cannot be less than 1"); + } + await super.setup(); + + if (this._mode === "w") { + // Remove old backups too as it doesn't make sense to start with a clean + // log file, but old backups + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + await Deno.remove(this._filename + "." + i); + } + } + } else if (this._mode === "x") { + // Throw if any backups also exist + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + this.destroy(); + throw new Deno.errors.AlreadyExists( + "Backup log file " + this._filename + "." + i + " already exists", + ); + } + } + } else { + this.#currentFileSize = (await Deno.stat(this._filename)).size; + } + } + + log(msg: string): void { + const msgByteLength = this._encoder.encode(msg).byteLength + 1; + + if (this.#currentFileSize + msgByteLength > this.#maxBytes) { + this.rotateLogFiles(); + this.#currentFileSize = 0; + } + + this._buf.writeSync(this._encoder.encode(msg + "\n")); + this.#currentFileSize += msgByteLength; + } + + rotateLogFiles(): void { + this._buf.flush(); + Deno.close(this._file!.rid); + + for (let i = this.#maxBackupCount - 1; i >= 0; i--) { + const source = this._filename + (i === 0 ? "" : "." + i); + const dest = this._filename + "." + (i + 1); + + if (existsSync(source)) { + Deno.renameSync(source, dest); + } + } + + this._file = Deno.openSync(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + } +} diff --git a/bundler/tests/.cache/deno/59417aaf3e13e8ca39e9132aaf809996c7373728.ts b/bundler/tests/.cache/deno/59417aaf3e13e8ca39e9132aaf809996c7373728.ts new file mode 100644 index 00000000000..dd5b42c1320 --- /dev/null +++ b/bundler/tests/.cache/deno/59417aaf3e13e8ca39e9132aaf809996c7373728.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.77.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/59517267cc8245e0d8ee2cf2a5909ce9f6411171.ts b/bundler/tests/.cache/deno/59517267cc8245e0d8ee2cf2a5909ce9f6411171.ts new file mode 100644 index 00000000000..cfe5283cc78 --- /dev/null +++ b/bundler/tests/.cache/deno/59517267cc8245e0d8ee2cf2a5909ce9f6411171.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/std@0.86.0/io/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./bufio.ts"; +export * from "./ioutil.ts"; +export * from "./readers.ts"; +export * from "./writers.ts"; +export * from "./streams.ts"; diff --git a/bundler/tests/.cache/deno/5966db1e3f33bc51286a48d2ae39e0ef6357454c.ts b/bundler/tests/.cache/deno/5966db1e3f33bc51286a48d2ae39e0ef6357454c.ts new file mode 100644 index 00000000000..d13b511d090 --- /dev/null +++ b/bundler/tests/.cache/deno/5966db1e3f33bc51286a48d2ae39e0ef6357454c.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/set.js + + +import _curry3 from './internal/_curry3.js'; +import always from './always.js'; +import over from './over.js'; + + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the given value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> a -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.view, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath + * @example + * + * const xLens = R.lensProp('x'); + * + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} + */ +var set = _curry3(function set(lens, v, x) { + return over(lens, always(v), x); +}); +export default set; diff --git a/bundler/tests/.cache/deno/599d785fdc3c1ccaee4c24a7ddf2ca895f623867.ts b/bundler/tests/.cache/deno/599d785fdc3c1ccaee4c24a7ddf2ca895f623867.ts new file mode 100644 index 00000000000..9e03ab879ce --- /dev/null +++ b/bundler/tests/.cache/deno/599d785fdc3c1ccaee4c24a7ddf2ca895f623867.ts @@ -0,0 +1,139 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/binary.ts + + +// Ported from js-yaml v3.13.1: +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +const BASE64_MAP = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; + +function resolveYamlBinary(data: Any): boolean { + if (data === null) return false; + + let code: number; + let bitlen = 0; + const max = data.length; + const map = BASE64_MAP; + + // Convert one by one. + for (let idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return bitlen % 8 === 0; +} + +function constructYamlBinary(data: string): Deno.Buffer { + // remove CR/LF & padding to simplify scan + const input = data.replace(/[\r\n=]/g, ""); + const max = input.length; + const map = BASE64_MAP; + + // Collect by 6*4 bits (3 bytes) + + const result = []; + let bits = 0; + for (let idx = 0; idx < max; idx++) { + if (idx % 4 === 0 && idx) { + result.push((bits >> 16) & 0xff); + result.push((bits >> 8) & 0xff); + result.push(bits & 0xff); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + const tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xff); + result.push((bits >> 8) & 0xff); + result.push(bits & 0xff); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xff); + result.push((bits >> 2) & 0xff); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xff); + } + + return new Deno.Buffer(new Uint8Array(result)); +} + +function representYamlBinary(object: Uint8Array): string { + const max = object.length; + const map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + let result = ""; + let bits = 0; + for (let idx = 0; idx < max; idx++) { + if (idx % 3 === 0 && idx) { + result += map[(bits >> 18) & 0x3f]; + result += map[(bits >> 12) & 0x3f]; + result += map[(bits >> 6) & 0x3f]; + result += map[bits & 0x3f]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + const tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3f]; + result += map[(bits >> 12) & 0x3f]; + result += map[(bits >> 6) & 0x3f]; + result += map[bits & 0x3f]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3f]; + result += map[(bits >> 4) & 0x3f]; + result += map[(bits << 2) & 0x3f]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3f]; + result += map[(bits << 4) & 0x3f]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(obj: Any): obj is Deno.Buffer { + const buf = new Deno.Buffer(); + try { + if (0 > buf.readFromSync(obj as Deno.Buffer)) return true; + return false; + } catch { + return false; + } finally { + buf.reset(); + } +} + +export const binary = new Type("tag:yaml.org,2002:binary", { + construct: constructYamlBinary, + kind: "scalar", + predicate: isBinary, + represent: representYamlBinary, + resolve: resolveYamlBinary, +}); diff --git a/bundler/tests/.cache/deno/59b7e5a4bdf273f92308a2b3738929c5479e049b.ts b/bundler/tests/.cache/deno/59b7e5a4bdf273f92308a2b3738929c5479e049b.ts new file mode 100644 index 00000000000..479d3e4fe49 --- /dev/null +++ b/bundler/tests/.cache/deno/59b7e5a4bdf273f92308a2b3738929c5479e049b.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/partial.js + + +import _concat from './internal/_concat.js'; +import _createPartialApplicator from './internal/_createPartialApplicator.js'; + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided initially followed by the arguments provided to `g`. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partialRight, R.curry + * @example + * + * const multiply2 = (a, b) => a * b; + * const double = R.partial(multiply2, [2]); + * double(3); //=> 6 + * + * const greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * const sayHello = R.partial(greet, ['Hello']); + * const sayHelloToMs = R.partial(sayHello, ['Ms.']); + * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d) + */ +var partial = _createPartialApplicator(_concat); +export default partial; diff --git a/bundler/tests/.cache/deno/59debc56a8ee8cc4f094caf470ecfe36a6190500.ts b/bundler/tests/.cache/deno/59debc56a8ee8cc4f094caf470ecfe36a6190500.ts new file mode 100644 index 00000000000..5b85553fe12 --- /dev/null +++ b/bundler/tests/.cache/deno/59debc56a8ee8cc4f094caf470ecfe36a6190500.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.75.0/encoding/base64.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +// deno-fmt-ignore +const base64abc = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", + "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", + "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", + "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", "+", "/"]; + +/** + * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 + * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation + * @param data + */ +export function encode(data: ArrayBuffer | string): string { + const uint8 = + typeof data === "string" + ? new TextEncoder().encode(data) + : data instanceof Uint8Array + ? data + : new Uint8Array(data); + let result = "", + i; + const l = uint8.length; + for (i = 2; i < l; i += 3) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + // 1 octet yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + // 2 octets yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} + +/** + * Decodes a given RFC4648 base64 encoded string + * @param b64 + */ +export function decode(b64: string): Uint8Array { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for (let i = 0; i < size; i++) { + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} diff --git a/bundler/tests/.cache/deno/59f7b524425d8a5a0b89908bc866759bef448f0d.ts b/bundler/tests/.cache/deno/59f7b524425d8a5a0b89908bc866759bef448f0d.ts new file mode 100644 index 00000000000..4a021a8db0e --- /dev/null +++ b/bundler/tests/.cache/deno/59f7b524425d8a5a0b89908bc866759bef448f0d.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/compose.js + + +import pipe from './pipe.js'; +import reverse from './reverse.js'; + + +/** + * Performs right-to-left function composition. The last argument may have + * any arity; the remaining arguments must be unary. + * + * **Note:** The result of compose is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipe + * @example + * + * const classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName + * const yellGreeting = R.compose(R.toUpper, classyGreeting); + * yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 + * + * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b))) + * @symb R.compose(f, g, h)(a)(b) = f(g(h(a)))(b) + */ +export default function compose() { + if (arguments.length === 0) { + throw new Error('compose requires at least one argument'); + } + return pipe.apply(this, reverse(arguments)); +} diff --git a/bundler/tests/.cache/deno/5a56e2a718d4f917b97ddd3e83d240828ccdf0e2.ts b/bundler/tests/.cache/deno/5a56e2a718d4f917b97ddd3e83d240828ccdf0e2.ts new file mode 100644 index 00000000000..a55d82631b4 --- /dev/null +++ b/bundler/tests/.cache/deno/5a56e2a718d4f917b97ddd3e83d240828ccdf0e2.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfindLast.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XFindLast(f, xf) { + this.xf = xf; + this.f = f; +} +XFindLast.prototype['@@transducer/init'] = _xfBase.init; +XFindLast.prototype['@@transducer/result'] = function(result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last)); +}; +XFindLast.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.last = input; + } + return result; +}; + +var _xfindLast = _curry2(function _xfindLast(f, xf) { return new XFindLast(f, xf); }); +export default _xfindLast; diff --git a/bundler/tests/.cache/deno/5a728e7bb9d91aec405ddeeaeaa4c6da76c96f36.ts b/bundler/tests/.cache/deno/5a728e7bb9d91aec405ddeeaeaa4c6da76c96f36.ts new file mode 100644 index 00000000000..f1d1126e99b --- /dev/null +++ b/bundler/tests/.cache/deno/5a728e7bb9d91aec405ddeeaeaa4c6da76c96f36.ts @@ -0,0 +1,128 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/negotiation/charset.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface CharsetSpecificity extends Specificity { + charset: string; +} + +const SIMPLE_CHARSET_REGEXP = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +function parseCharset(str: string, i: number): CharsetSpecificity | undefined { + const match = SIMPLE_CHARSET_REGEXP.exec(str); + if (!match) { + return; + } + + const [, charset] = match; + let q = 1; + if (match[2]) { + const params = match[2].split(";"); + for (const param of params) { + const [key, value] = param.trim().split("="); + if (key === "q") { + q = parseFloat(value); + break; + } + } + } + + return { charset, q, i }; +} + +function parseAcceptCharset(accept: string): CharsetSpecificity[] { + const accepts = accept.split(","); + const result: CharsetSpecificity[] = []; + + for (let i = 0; i < accepts.length; i++) { + const charset = parseCharset(accepts[i].trim(), i); + if (charset) { + result.push(charset); + } + } + return result; +} + +function specify( + charset: string, + spec: CharsetSpecificity, + i: number, +): Specificity | undefined { + let s = 0; + if (spec.charset.toLowerCase() === charset.toLocaleLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return; + } + + return { i, o: spec.i, q: spec.q, s }; +} + +function getCharsetPriority( + charset: string, + accepted: CharsetSpecificity[], + index: number, +): Specificity { + let priority: Specificity = { i: -1, o: -1, q: 0, s: 0 }; + for (const accepts of accepted) { + const spec = specify(charset, accepts, index); + if ( + spec && + ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q || + (priority.o ?? 0) - (spec.o ?? 0)) < 0 + ) { + priority = spec; + } + } + return priority; +} + +export function preferredCharsets(accept = "*", provided?: string[]): string[] { + const accepts = parseAcceptCharset(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.charset); + } + + const priorities = provided + .map((type, index) => getCharsetPriority(type, accepts, index)); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/5ab41e00afb7428a4d09936e3d3923e9d7f949d7.ts b/bundler/tests/.cache/deno/5ab41e00afb7428a4d09936e3d3923e9d7f949d7.ts new file mode 100644 index 00000000000..a1b36ad3e3a --- /dev/null +++ b/bundler/tests/.cache/deno/5ab41e00afb7428a4d09936e3d3923e9d7f949d7.ts @@ -0,0 +1,17 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/map.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +export const map = new Type("tag:yaml.org,2002:map", { + construct(data): Any { + return data !== null ? data : {}; + }, + kind: "mapping", +}); diff --git a/bundler/tests/.cache/deno/5ae2edd8e70ab505aae2579e720b908bfe81b53b.ts b/bundler/tests/.cache/deno/5ae2edd8e70ab505aae2579e720b908bfe81b53b.ts new file mode 100644 index 00000000000..70bea3cbc34 --- /dev/null +++ b/bundler/tests/.cache/deno/5ae2edd8e70ab505aae2579e720b908bfe81b53b.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case/vendor/nonWordRegexp.ts + + +const nonWordRegexp: RegExp = + /[^A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]+/g; + +export default nonWordRegexp; diff --git a/bundler/tests/.cache/deno/5b0337a0cb560372656797c6a086cb8135efc17a.ts b/bundler/tests/.cache/deno/5b0337a0cb560372656797c6a086cb8135efc17a.ts new file mode 100644 index 00000000000..41ba5ab07f1 --- /dev/null +++ b/bundler/tests/.cache/deno/5b0337a0cb560372656797c6a086cb8135efc17a.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dec.js + + +import add from './add.js'; + + +/** + * Decrements its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n - 1 + * @see R.inc + * @example + * + * R.dec(42); //=> 41 + */ +var dec = add(-1); +export default dec; diff --git a/bundler/tests/.cache/deno/5b1fd0386834240c91beb45b4e211027a496ff2f.ts b/bundler/tests/.cache/deno/5b1fd0386834240c91beb45b4e211027a496ff2f.ts new file mode 100644 index 00000000000..d12c38917bf --- /dev/null +++ b/bundler/tests/.cache/deno/5b1fd0386834240c91beb45b4e211027a496ff2f.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/helpers.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import type { Context } from "./context.ts"; +import type { RouterContext } from "./router.ts"; + +function isRouterContext(value: Context): value is RouterContext { + return "params" in value; +} + +interface GetQueryOptionsBase { + /** The return value should be a `Map` instead of a record object. */ + asMap?: boolean; + + /** Merge in the context's `.params`. This only works when a `RouterContext` + * is passed. */ + mergeParams?: boolean; +} + +interface GetQueryOptionsAsMap extends GetQueryOptionsBase { + /** The return value should be a `Map` instead of a record object. */ + asMap: true; +} + +export type GetParamsOptions = GetQueryOptionsBase | GetQueryOptionsAsMap; + +/** Given a context, return the `.request.url.searchParams` as a `Map` of keys + * and values of the params. */ +export function getQuery( + ctx: Context | RouterContext, + options: GetQueryOptionsAsMap, +): Map; +/** Given a context, return the `.request.url.searchParams` as a record object + * of keys and values of the params. */ +export function getQuery( + ctx: Context | RouterContext, + options?: GetQueryOptionsBase, +): Record; +export function getQuery( + ctx: Context | RouterContext, + { mergeParams, asMap }: GetParamsOptions = {}, +): Map | Record { + const result: Record = {}; + if (mergeParams && isRouterContext(ctx)) { + Object.assign(result, ctx.params); + } + for (const [key, value] of ctx.request.url.searchParams) { + result[key] = value; + } + return asMap ? new Map(Object.entries(result)) : result; +} diff --git a/bundler/tests/.cache/deno/5b74a7f4f45315d1404ddaa2ac2d3b35aa539192.ts b/bundler/tests/.cache/deno/5b74a7f4f45315d1404ddaa2ac2d3b35aa539192.ts new file mode 100644 index 00000000000..78abd03939f --- /dev/null +++ b/bundler/tests/.cache/deno/5b74a7f4f45315d1404ddaa2ac2d3b35aa539192.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/project.js + + +import _map from './internal/_map.js'; +import identity from './identity.js'; +import pickAll from './pickAll.js'; +import useWith from './useWith.js'; + + +/** + * Reasonable analog to SQL `select` statement. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @category Relation + * @sig [k] -> [{k: v}] -> [{k: v}] + * @param {Array} props The property names to project + * @param {Array} objs The objects to query + * @return {Array} An array of objects with just the `props` properties. + * @see R.pluck, R.props, R.prop + * @example + * + * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2}; + * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7}; + * const kids = [abby, fred]; + * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] + */ +var project = useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity +export default project; diff --git a/bundler/tests/.cache/deno/5b79987e5455c8d8f5634704a4aab9cb784ccabf.ts b/bundler/tests/.cache/deno/5b79987e5455c8d8f5634704a4aab9cb784ccabf.ts new file mode 100644 index 00000000000..18c9e516e00 --- /dev/null +++ b/bundler/tests/.cache/deno/5b79987e5455c8d8f5634704a4aab9cb784ccabf.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/find.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xfind from './internal/_xfind.js'; + + +/** + * Returns the first element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Dispatches to the `find` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * const xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.find(R.propEq('a', 2))(xs); //=> {a: 2} + * R.find(R.propEq('a', 4))(xs); //=> undefined + */ +var find = _curry2(_dispatchable(['find'], _xfind, function find(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return list[idx]; + } + idx += 1; + } +})); +export default find; diff --git a/bundler/tests/.cache/deno/5bb7bb9795979693547d562391d9c1cb5ea5f117.ts b/bundler/tests/.cache/deno/5bb7bb9795979693547d562391d9c1cb5ea5f117.ts new file mode 100644 index 00000000000..6b80a73517f --- /dev/null +++ b/bundler/tests/.cache/deno/5bb7bb9795979693547d562391d9c1cb5ea5f117.ts @@ -0,0 +1,8281 @@ +// Loaded from https://deno.land/x/media_types@v2.5.1/db.ts + + +/*! + * Ported from: https://github.com/jshttp/mime-db and licensed as: + * + * (The MIT License) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2020 the Deno authors + * Copyright (c) 2020 the oak authors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export const db: { + [mediaType: string]: { + source?: string; + compressible?: boolean; + charset?: string; + extensions?: string[]; + }; +} = JSON.parse(`{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["ecma","es"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana" + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana" + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana" + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana" + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana" + }, + "image/avcs": { + "source": "iana" + }, + "image/avif": { + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana" + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +}`); diff --git a/bundler/tests/.cache/deno/5bce8196f3a7e507897bab69365aa46c88df77dd.ts b/bundler/tests/.cache/deno/5bce8196f3a7e507897bab69365aa46c88df77dd.ts new file mode 100644 index 00000000000..4a0f2c39c59 --- /dev/null +++ b/bundler/tests/.cache/deno/5bce8196f3a7e507897bab69365aa46c88df77dd.ts @@ -0,0 +1,233 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/body.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { assert } from "./deps.ts"; +import { httpErrors } from "./httpError.ts"; +import { isMediaType } from "./isMediaType.ts"; +import { FormDataReader } from "./multipart.ts"; +import type { ServerRequest } from "./types.d.ts"; + +export type BodyType = + | "form" + | "form-data" + | "json" + | "text" + | "raw" + | "reader" + | "undefined"; + +// deno-lint-ignore no-explicit-any +export type BodyJson = { type: "json"; readonly value: Promise }; +export type BodyForm = { + type: "form"; + readonly value: Promise; +}; +export type BodyFormData = { + type: "form-data"; + readonly value: FormDataReader; +}; +export type BodyText = { type: "text"; readonly value: Promise }; +export type BodyRaw = { type: "raw"; readonly value: Promise }; +export type BodyUndefined = { type: "undefined"; readonly value: undefined }; + +export type BodyReader = { type: "reader"; readonly value: Deno.Reader }; + +export type Body = + | BodyJson + | BodyForm + | BodyFormData + | BodyText + | BodyRaw + | BodyUndefined; + +export interface BodyOptions { + /** Instead of utilizing the content type of the request, return the body + * as the type specified. */ + type?: T; + /** A map of extra content types to determine how to parse the body. */ + contentTypes?: { + /** Content types listed here will always return a "raw" Uint8Array. */ + raw?: string[]; + /** Content types listed here will be parsed as a JSON string. */ + json?: string[]; + /** Content types listed here will be parsed as form data and return + * `URLSearchParameters` as the value of the body. */ + form?: string[]; + /** Content types listed here will be parsed as from data and return a + * `FormDataBody` interface as the value of the body. */ + formData?: string[]; + /** Content types listed here will be parsed as text. */ + text?: string[]; + }; +} + +export interface BodyContentTypes { + json?: string[]; + form?: string[]; + text?: string[]; +} + +const defaultBodyContentTypes = { + json: ["json", "application/*+json", "application/csp-report"], + form: ["urlencoded"], + formData: ["multipart"], + text: ["text"], +}; + +const decoder = new TextDecoder(); + +export class RequestBody { + #body: Deno.Reader; + #formDataReader?: FormDataReader; + #has?: boolean; + #headers: Headers; + #readAllBody?: Promise; + #type?: "form-data" | "raw" | "reader" | "undefined"; + + #valuePromise = () => { + return this.#readAllBody ?? (this.#readAllBody = Deno.readAll(this.#body)); + }; + + constructor(request: ServerRequest) { + const { body, headers } = request; + this.#body = body; + this.#headers = headers; + } + + get({ type, contentTypes }: BodyOptions): Body | BodyReader { + if (type === "reader" && this.#type && this.#type !== "reader") { + throw new TypeError( + "Body already consumed and cannot be returned as a reader.", + ); + } + if (type === "form-data" && this.#type && this.#type !== "form-data") { + throw new TypeError( + "Body already consumed and cannot be returned as form data.", + ); + } + if (this.#type === "reader" && type !== "reader") { + throw new TypeError( + "Body already consumed as a reader and can only be returned as a reader.", + ); + } + if (this.#type === "form-data" && type !== "form-data") { + throw new TypeError( + "Body already consumed as form data and can only be returned as form data.", + ); + } + if (type && contentTypes) { + throw new TypeError( + `"type" and "contentTypes" cannot be specified at the same time`, + ); + } + if (type === "reader") { + this.#type = "reader"; + return { type, value: this.#body }; + } + if (!this.has()) { + this.#type = "undefined"; + } else if (!this.#type) { + const encoding = this.#headers.get("content-encoding") ?? "identity"; + if (encoding !== "identity") { + throw new httpErrors.UnsupportedMediaType( + `Unsupported content-encoding: ${encoding}`, + ); + } + } + if (this.#type === "undefined") { + if (type) { + throw new TypeError( + `Body is undefined and cannot be returned as "${type}".`, + ); + } + return { type: "undefined", value: undefined }; + } + if (!type) { + const contentType = this.#headers.get("content-type"); + assert(contentType); + contentTypes = contentTypes ?? {}; + const contentTypesJson = [ + ...defaultBodyContentTypes.json, + ...(contentTypes.json ?? []), + ]; + const contentTypesForm = [ + ...defaultBodyContentTypes.form, + ...(contentTypes.form ?? []), + ]; + const contentTypesFormData = [ + ...defaultBodyContentTypes.formData, + ...(contentTypes.formData ?? []), + ]; + const contentTypesText = [ + ...defaultBodyContentTypes.text, + ...(contentTypes.text ?? []), + ]; + if (contentTypes.raw && isMediaType(contentType, contentTypes.raw)) { + type = "raw"; + } else if (isMediaType(contentType, contentTypesJson)) { + type = "json"; + } else if (isMediaType(contentType, contentTypesForm)) { + type = "form"; + } else if (isMediaType(contentType, contentTypesFormData)) { + type = "form-data"; + } else if (isMediaType(contentType, contentTypesText)) { + type = "text"; + } else { + type = "raw"; + } + } + assert(type); + let value: () => Body["value"]; + switch (type) { + case "form": + this.#type = "raw"; + value = async () => + new URLSearchParams( + decoder.decode(await this.#valuePromise()).replace(/\+/g, " "), + ); + break; + case "form-data": + this.#type = "form-data"; + value = () => { + const contentType = this.#headers.get("content-type"); + assert(contentType); + return this.#formDataReader ?? + (this.#formDataReader = new FormDataReader( + contentType, + this.#body, + )); + }; + break; + case "json": + this.#type = "raw"; + value = async () => + JSON.parse(decoder.decode(await this.#valuePromise())); + break; + case "raw": + this.#type = "raw"; + value = () => this.#valuePromise(); + break; + case "text": + this.#type = "raw"; + value = async () => decoder.decode(await this.#valuePromise()); + break; + default: + throw new TypeError(`Invalid body type: "${type}"`); + } + return { + type, + get value() { + return value(); + }, + } as Body; + } + + has(): boolean { + return this.#has !== undefined + ? this.#has + : (this.#has = this.#headers.get("transfer-encoding") !== null || + !!parseInt(this.#headers.get("content-length") ?? "", 10)); + } +} diff --git a/bundler/tests/.cache/deno/5c22d11e3219ce70167fed71bece728e1a7a3707.ts b/bundler/tests/.cache/deno/5c22d11e3219ce70167fed71bece728e1a7a3707.ts new file mode 100644 index 00000000000..bc15c81b508 --- /dev/null +++ b/bundler/tests/.cache/deno/5c22d11e3219ce70167fed71bece728e1a7a3707.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.80.0/flags/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/5c466c27276caaa226fe2b59ba8c27764348cd54.ts b/bundler/tests/.cache/deno/5c466c27276caaa226fe2b59ba8c27764348cd54.ts new file mode 100644 index 00000000000..074d0785b30 --- /dev/null +++ b/bundler/tests/.cache/deno/5c466c27276caaa226fe2b59ba8c27764348cd54.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/xprod.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates a new list out of the two supplied by creating each possible pair + * from the lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The list made by combining each possible pair from + * `as` and `bs` into pairs (`[a, b]`). + * @example + * + * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']] + * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]] + */ +var xprod = _curry2(function xprod(a, b) { // = xprodWith(prepend); (takes about 3 times as long...) + var idx = 0; + var ilen = a.length; + var j; + var jlen = b.length; + var result = []; + while (idx < ilen) { + j = 0; + while (j < jlen) { + result[result.length] = [a[idx], b[j]]; + j += 1; + } + idx += 1; + } + return result; +}); +export default xprod; diff --git a/bundler/tests/.cache/deno/5cf74fa489d7816d6b21d074c8bfb8b2cadc9bc2.ts b/bundler/tests/.cache/deno/5cf74fa489d7816d6b21d074c8bfb8b2cadc9bc2.ts new file mode 100644 index 00000000000..44543c4bb98 --- /dev/null +++ b/bundler/tests/.cache/deno/5cf74fa489d7816d6b21d074c8bfb8b2cadc9bc2.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std/datetime/tokenizer.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +export type Token = { + type: string; + value: string | number; + index: number; + [key: string]: unknown; +}; + +export interface ReceiverResult { + [name: string]: string | number | unknown; +} +export type CallbackResult = { + type: string; + value: string | number; + [key: string]: unknown; +}; +type CallbackFunction = (value: unknown) => CallbackResult; + +export type TestResult = { value: unknown; length: number } | undefined; +export type TestFunction = ( + string: string, +) => TestResult | undefined; + +export interface Rule { + test: TestFunction; + fn: CallbackFunction; +} + +export class Tokenizer { + rules: Rule[]; + + constructor(rules: Rule[] = []) { + this.rules = rules; + } + + addRule(test: TestFunction, fn: CallbackFunction): Tokenizer { + this.rules.push({ test, fn }); + return this; + } + + tokenize( + string: string, + receiver = (token: Token): ReceiverResult => token, + ): ReceiverResult[] { + function* generator(rules: Rule[]): IterableIterator { + let index = 0; + for (const rule of rules) { + const result = rule.test(string); + if (result) { + const { value, length } = result; + index += length; + string = string.slice(length); + const token = { ...rule.fn(value), index }; + yield receiver(token); + yield* generator(rules); + } + } + } + const tokenGenerator = generator(this.rules); + + const tokens: ReceiverResult[] = []; + + for (const token of tokenGenerator) { + tokens.push(token); + } + + if (string.length) { + throw new Error( + `parser error: string not fully parsed! ${string.slice(0, 25)}`, + ); + } + + return tokens; + } +} diff --git a/bundler/tests/.cache/deno/5d5895ead3ff168faf1b1649a426ff55e4dab034.ts b/bundler/tests/.cache/deno/5d5895ead3ff168faf1b1649a426ff55e4dab034.ts new file mode 100644 index 00000000000..b11308f3197 --- /dev/null +++ b/bundler/tests/.cache/deno/5d5895ead3ff168faf1b1649a426ff55e4dab034.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/remove.js + + +import { matches } from '../../deps.ts'; +import { ReadFileStream, WriteFileStream } from '../storage.ts'; + +export default async (filename, query) => { + const readStream = new ReadFileStream(filename); + const writeStream = new WriteFileStream(filename); + let removed = []; + query = query || {}; + return new Promise((resolve, reject) => { + readStream.on('document', obj => { + if (!matches(query, obj)) + writeStream.emit("write", obj) + else + removed.push(obj) + }) + readStream.on("end", () => { + writeStream.emit("end"); + }) + writeStream.on("close", () => { + return resolve(removed) + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/5d6d1837a09681ab29f9ad14fbaab375acbc5189.ts b/bundler/tests/.cache/deno/5d6d1837a09681ab29f9ad14fbaab375acbc5189.ts new file mode 100644 index 00000000000..57590ddc0ab --- /dev/null +++ b/bundler/tests/.cache/deno/5d6d1837a09681ab29f9ad14fbaab375acbc5189.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/omap.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; +const _toString = Object.prototype.toString; + +function resolveYamlOmap(data: Any): boolean { + const objectKeys: string[] = []; + let pairKey = ""; + let pairHasKey = false; + + for (const pair of data) { + pairHasKey = false; + + if (_toString.call(pair) !== "[object Object]") return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data: Any): Any { + return data !== null ? data : []; +} + +export const omap = new Type("tag:yaml.org,2002:omap", { + construct: constructYamlOmap, + kind: "sequence", + resolve: resolveYamlOmap, +}); diff --git a/bundler/tests/.cache/deno/5d9b30d4632fd8c1ec57918cf927775db0294797.ts b/bundler/tests/.cache/deno/5d9b30d4632fd8c1ec57918cf927775db0294797.ts new file mode 100644 index 00000000000..647ddaadcc9 --- /dev/null +++ b/bundler/tests/.cache/deno/5d9b30d4632fd8c1ec57918cf927775db0294797.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/x/oak/util.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { isAbsolute, join, normalize, sep, Sha1, Status } from "./deps.ts"; +import { createHttpError } from "./httpError.ts"; +import type { ErrorStatus, RedirectStatus } from "./types.d.ts"; + +const ENCODE_CHARS_REGEXP = + /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; +const HTAB = "\t".charCodeAt(0); +const SPACE = " ".charCodeAt(0); +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); +const UNMATCHED_SURROGATE_PAIR_REGEXP = + /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; +const UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + +/** Safely decode a URI component, where if it fails, instead of throwing, + * just returns the original string + */ +export function decodeComponent(text: string) { + try { + return decodeURIComponent(text); + } catch { + return text; + } +} + +/** Encodes the url preventing double enconding */ +export function encodeUrl(url: string) { + return String(url) + .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) + .replace(ENCODE_CHARS_REGEXP, encodeURI); +} + +export function getRandomFilename(prefix = "", extension = ""): string { + return `${prefix}${ + new Sha1().update(crypto.getRandomValues(new Uint8Array(256))).hex() + }${extension ? `.${extension}` : ""}`; +} + +/** Determines if a HTTP `Status` is an `ErrorStatus` (4XX or 5XX). */ +export function isErrorStatus(value: Status): value is ErrorStatus { + return [ + Status.BadRequest, + Status.Unauthorized, + Status.PaymentRequired, + Status.Forbidden, + Status.NotFound, + Status.MethodNotAllowed, + Status.NotAcceptable, + Status.ProxyAuthRequired, + Status.RequestTimeout, + Status.Conflict, + Status.Gone, + Status.LengthRequired, + Status.PreconditionFailed, + Status.RequestEntityTooLarge, + Status.RequestURITooLong, + Status.UnsupportedMediaType, + Status.RequestedRangeNotSatisfiable, + Status.ExpectationFailed, + Status.Teapot, + Status.MisdirectedRequest, + Status.UnprocessableEntity, + Status.Locked, + Status.FailedDependency, + Status.UpgradeRequired, + Status.PreconditionRequired, + Status.TooManyRequests, + Status.RequestHeaderFieldsTooLarge, + Status.UnavailableForLegalReasons, + Status.InternalServerError, + Status.NotImplemented, + Status.BadGateway, + Status.ServiceUnavailable, + Status.GatewayTimeout, + Status.HTTPVersionNotSupported, + Status.VariantAlsoNegotiates, + Status.InsufficientStorage, + Status.LoopDetected, + Status.NotExtended, + Status.NetworkAuthenticationRequired, + ].includes(value); +} + +/** Determines if a HTTP `Status` is a `RedirectStatus` (3XX). */ +export function isRedirectStatus(value: Status): value is RedirectStatus { + return [ + Status.MultipleChoices, + Status.MovedPermanently, + Status.Found, + Status.SeeOther, + Status.UseProxy, + Status.TemporaryRedirect, + Status.PermanentRedirect, + ].includes(value); +} + +/** Determines if a string "looks" like HTML */ +export function isHtml(value: string): boolean { + return /^\s*<(?:!DOCTYPE|html|body)/i.test(value); +} + +/** Returns `u8` with leading white space removed. */ +export function skipLWSPChar(u8: Uint8Array): Uint8Array { + const result = new Uint8Array(u8.length); + let j = 0; + for (let i = 0; i < u8.length; i++) { + if (u8[i] === SPACE || u8[i] === HTAB) continue; + result[j++] = u8[i]; + } + return result.slice(0, j); +} + +export function stripEol(value: Uint8Array): Uint8Array { + if (value[value.byteLength - 1] == LF) { + let drop = 1; + if (value.byteLength > 1 && value[value.byteLength - 2] === CR) { + drop = 2; + } + return value.subarray(0, value.byteLength - drop); + } + return value; +} + +/*! + * Adapted directly from https://github.com/pillarjs/resolve-path + * which is licensed as follows: + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2015-2018 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +const UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + +export function resolvePath(relativePath: string): string; +export function resolvePath(rootPath: string, relativePath: string): string; +export function resolvePath(rootPath: string, relativePath?: string): string { + let path = relativePath; + let root = rootPath; + + // root is optional, similar to root.resolve + if (relativePath === undefined) { + path = rootPath; + root = "."; + } + + if (path == null) { + throw new TypeError("Argument relativePath is required."); + } + + // containing NULL bytes is malicious + if (path.includes("\0")) { + throw createHttpError(400, "Malicious Path"); + } + + // path should never be absolute + if (isAbsolute(path)) { + throw createHttpError(400, "Malicious Path"); + } + + // path outside root + if (UP_PATH_REGEXP.test(normalize("." + sep + path))) { + throw createHttpError(403); + } + + // join the relative path + return normalize(join(root, path)); +} diff --git a/bundler/tests/.cache/deno/5ddc4c85386767e41a8f90bf55cf6321126796aa.ts b/bundler/tests/.cache/deno/5ddc4c85386767e41a8f90bf55cf6321126796aa.ts new file mode 100644 index 00000000000..95adbb34d95 --- /dev/null +++ b/bundler/tests/.cache/deno/5ddc4c85386767e41a8f90bf55cf6321126796aa.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mapObjIndexed.js + + +import _curry2 from './internal/_curry2.js'; +import _reduce from './internal/_reduce.js'; +import keys from './keys.js'; + + +/** + * An Object-specific version of [`map`](#map). The function is applied to three + * arguments: *(value, key, obj)*. If only the value is significant, use + * [`map`](#map) instead. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig ((*, String, Object) -> *) -> Object -> Object + * @param {Function} fn + * @param {Object} obj + * @return {Object} + * @see R.map + * @example + * + * const xyz = { x: 1, y: 2, z: 3 }; + * const prependKeyAndDouble = (num, key, obj) => key + (num * 2); + * + * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' } + */ +var mapObjIndexed = _curry2(function mapObjIndexed(fn, obj) { + return _reduce(function(acc, key) { + acc[key] = fn(obj[key], key, obj); + return acc; + }, {}, keys(obj)); +}); +export default mapObjIndexed; diff --git a/bundler/tests/.cache/deno/5df2407aad6c59abc953b5670346940422b9fd1a.ts b/bundler/tests/.cache/deno/5df2407aad6c59abc953b5670346940422b9fd1a.ts new file mode 100644 index 00000000000..502c7fdc17a --- /dev/null +++ b/bundler/tests/.cache/deno/5df2407aad6c59abc953b5670346940422b9fd1a.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/case@v2.1.0/swapCase.ts + + +import upperCase from "./upperCase.ts"; +import lowerCase from "./lowerCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + let result: string = ""; + + for (let i: number = 0; i < str.length; i++) { + const c: string = str[i]; + const u: string = upperCase(c, locale); + + result += u === c ? lowerCase(c, locale) : u; + } + + return result; +} diff --git a/bundler/tests/.cache/deno/5e0272125ce6b9841437813aa835c3d39ec15740.ts b/bundler/tests/.cache/deno/5e0272125ce6b9841437813aa835c3d39ec15740.ts new file mode 100644 index 00000000000..3bd5ba1abb0 --- /dev/null +++ b/bundler/tests/.cache/deno/5e0272125ce6b9841437813aa835c3d39ec15740.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/PossibleFragmentSpreadsRule.js + + +import inspect from '../../jsutils/inspect.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { isCompositeType } from '../../type/definition.js'; +import { typeFromAST } from '../../utilities/typeFromAST.js'; +import { doTypesOverlap } from '../../utilities/typeComparators.js'; + +/** + * Possible fragment spread + * + * A fragment spread is only valid if the type condition could ever possibly + * be true: if there is a non-empty intersection of the possible parent types, + * and possible types which pass the type condition. + */ +export function PossibleFragmentSpreadsRule(context) { + return { + InlineFragment(node) { + const fragType = context.getType(); + const parentType = context.getParentType(); + + if (isCompositeType(fragType) && isCompositeType(parentType) && !doTypesOverlap(context.getSchema(), fragType, parentType)) { + const parentTypeStr = inspect(parentType); + const fragTypeStr = inspect(fragType); + context.reportError(new GraphQLError(`Fragment cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, node)); + } + }, + + FragmentSpread(node) { + const fragName = node.name.value; + const fragType = getFragmentType(context, fragName); + const parentType = context.getParentType(); + + if (fragType && parentType && !doTypesOverlap(context.getSchema(), fragType, parentType)) { + const parentTypeStr = inspect(parentType); + const fragTypeStr = inspect(fragType); + context.reportError(new GraphQLError(`Fragment "${fragName}" cannot be spread here as objects of type "${parentTypeStr}" can never be of type "${fragTypeStr}".`, node)); + } + } + + }; +} + +function getFragmentType(context, name) { + const frag = context.getFragment(name); + + if (frag) { + const type = typeFromAST(context.getSchema(), frag.typeCondition); + + if (isCompositeType(type)) { + return type; + } + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/5ef12d2b35ba9304779d3b0ee0e4ec01093def62.ts b/bundler/tests/.cache/deno/5ef12d2b35ba9304779d3b0ee0e4ec01093def62.ts new file mode 100644 index 00000000000..70f5a538983 --- /dev/null +++ b/bundler/tests/.cache/deno/5ef12d2b35ba9304779d3b0ee0e4ec01093def62.ts @@ -0,0 +1,233 @@ +// Loaded from https://deno.land/x/oak/body.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { assert } from "./deps.ts"; +import { httpErrors } from "./httpError.ts"; +import { isMediaType } from "./isMediaType.ts"; +import { FormDataReader } from "./multipart.ts"; +import type { ServerRequest } from "./types.d.ts"; + +export type BodyType = + | "form" + | "form-data" + | "json" + | "text" + | "raw" + | "reader" + | "undefined"; + +// deno-lint-ignore no-explicit-any +export type BodyJson = { type: "json"; readonly value: Promise }; +export type BodyForm = { + type: "form"; + readonly value: Promise; +}; +export type BodyFormData = { + type: "form-data"; + readonly value: FormDataReader; +}; +export type BodyText = { type: "text"; readonly value: Promise }; +export type BodyRaw = { type: "raw"; readonly value: Promise }; +export type BodyUndefined = { type: "undefined"; readonly value: undefined }; + +export type BodyReader = { type: "reader"; readonly value: Deno.Reader }; + +export type Body = + | BodyJson + | BodyForm + | BodyFormData + | BodyText + | BodyRaw + | BodyUndefined; + +export interface BodyOptions { + /** Instead of utilizing the content type of the request, return the body + * as the type specified. */ + type?: T; + /** A map of extra content types to determine how to parse the body. */ + contentTypes?: { + /** Content types listed here will always return a "raw" Uint8Array. */ + raw?: string[]; + /** Content types listed here will be parsed as a JSON string. */ + json?: string[]; + /** Content types listed here will be parsed as form data and return + * `URLSearchParameters` as the value of the body. */ + form?: string[]; + /** Content types listed here will be parsed as from data and return a + * `FormDataBody` interface as the value of the body. */ + formData?: string[]; + /** Content types listed here will be parsed as text. */ + text?: string[]; + }; +} + +export interface BodyContentTypes { + json?: string[]; + form?: string[]; + text?: string[]; +} + +const defaultBodyContentTypes = { + json: ["json", "application/*+json", "application/csp-report"], + form: ["urlencoded"], + formData: ["multipart"], + text: ["text"], +}; + +const decoder = new TextDecoder(); + +export class RequestBody { + #body: Deno.Reader; + #formDataReader?: FormDataReader; + #has?: boolean; + #headers: Headers; + #readAllBody?: Promise; + #type?: "form-data" | "raw" | "reader" | "undefined"; + + #valuePromise = () => { + return this.#readAllBody ?? (this.#readAllBody = Deno.readAll(this.#body)); + }; + + constructor(request: ServerRequest) { + const { body, headers } = request; + this.#body = body; + this.#headers = headers; + } + + get({ type, contentTypes }: BodyOptions): Body | BodyReader { + if (type === "reader" && this.#type && this.#type !== "reader") { + throw new TypeError( + "Body already consumed and cannot be returned as a reader.", + ); + } + if (type === "form-data" && this.#type && this.#type !== "form-data") { + throw new TypeError( + "Body already consumed and cannot be returned as form data.", + ); + } + if (this.#type === "reader" && type !== "reader") { + throw new TypeError( + "Body already consumed as a reader and can only be returned as a reader.", + ); + } + if (this.#type === "form-data" && type !== "form-data") { + throw new TypeError( + "Body already consumed as form data and can only be returned as form data.", + ); + } + if (type && contentTypes) { + throw new TypeError( + `"type" and "contentTypes" cannot be specified at the same time`, + ); + } + if (type === "reader") { + this.#type = "reader"; + return { type, value: this.#body }; + } + if (!this.has()) { + this.#type = "undefined"; + } else if (!this.#type) { + const encoding = this.#headers.get("content-encoding") ?? "identity"; + if (encoding !== "identity") { + throw new httpErrors.UnsupportedMediaType( + `Unsupported content-encoding: ${encoding}`, + ); + } + } + if (this.#type === "undefined") { + if (type) { + throw new TypeError( + `Body is undefined and cannot be returned as "${type}".`, + ); + } + return { type: "undefined", value: undefined }; + } + if (!type) { + const contentType = this.#headers.get("content-type"); + assert(contentType); + contentTypes = contentTypes ?? {}; + const contentTypesJson = [ + ...defaultBodyContentTypes.json, + ...(contentTypes.json ?? []), + ]; + const contentTypesForm = [ + ...defaultBodyContentTypes.form, + ...(contentTypes.form ?? []), + ]; + const contentTypesFormData = [ + ...defaultBodyContentTypes.formData, + ...(contentTypes.formData ?? []), + ]; + const contentTypesText = [ + ...defaultBodyContentTypes.text, + ...(contentTypes.text ?? []), + ]; + if (contentTypes.raw && isMediaType(contentType, contentTypes.raw)) { + type = "raw"; + } else if (isMediaType(contentType, contentTypesJson)) { + type = "json"; + } else if (isMediaType(contentType, contentTypesForm)) { + type = "form"; + } else if (isMediaType(contentType, contentTypesFormData)) { + type = "form-data"; + } else if (isMediaType(contentType, contentTypesText)) { + type = "text"; + } else { + type = "raw"; + } + } + assert(type); + let value: () => Body["value"]; + switch (type) { + case "form": + this.#type = "raw"; + value = async () => + new URLSearchParams( + decoder.decode(await this.#valuePromise()).replace(/\+/g, " "), + ); + break; + case "form-data": + this.#type = "form-data"; + value = () => { + const contentType = this.#headers.get("content-type"); + assert(contentType); + return this.#formDataReader ?? + (this.#formDataReader = new FormDataReader( + contentType, + this.#body, + )); + }; + break; + case "json": + this.#type = "raw"; + value = async () => + JSON.parse(decoder.decode(await this.#valuePromise())); + break; + case "raw": + this.#type = "raw"; + value = () => this.#valuePromise(); + break; + case "text": + this.#type = "raw"; + value = async () => decoder.decode(await this.#valuePromise()); + break; + default: + throw new TypeError(`Invalid body type: "${type}"`); + } + return { + type, + get value() { + return value(); + }, + } as Body; + } + + has(): boolean { + return this.#has !== undefined + ? this.#has + : (this.#has = this.#headers.get("transfer-encoding") !== null || + !!parseInt(this.#headers.get("content-length") ?? "", 10)); + } +} diff --git a/bundler/tests/.cache/deno/5fb5985c96a06558c27309eaf062f5cbe4ef4d05.ts b/bundler/tests/.cache/deno/5fb5985c96a06558c27309eaf062f5cbe4ef4d05.ts new file mode 100644 index 00000000000..336fb486f0f --- /dev/null +++ b/bundler/tests/.cache/deno/5fb5985c96a06558c27309eaf062f5cbe4ef4d05.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.79.0/path/glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/5fc5ebda42c03e71783d60536d4cd9ef9cd741ea.ts b/bundler/tests/.cache/deno/5fc5ebda42c03e71783d60536d4cd9ef9cd741ea.ts new file mode 100644 index 00000000000..37ae995dbac --- /dev/null +++ b/bundler/tests/.cache/deno/5fc5ebda42c03e71783d60536d4cd9ef9cd741ea.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/axiod@0.20.0-0/helpers.ts + + +export const methods = [ + "get", + "post", + "put", + "delete", + "options", + "head", + "connect", + "trace", + "patch", +]; + +// /** +// * Deep copy function for TypeScript. +// * @param T Generic type of target/copied value. +// * @param target Target value to be copied. +// * @see Source project, ts-deeply https://github.com/ykdr2017/ts-deepcopy +// * @see Code pen https://codepen.io/erikvullings/pen/ejyBYg +// */ +// export const deepCopy = (target: T): T => { +// if (target === null) { +// return target; +// } +// if (target instanceof Date) { +// return new Date(target.getTime()) as any; +// } +// // First part is for array and second part is for Realm.Collection +// // if (target instanceof Array || typeof (target as any).type === 'string') { +// if (typeof target === "object") { +// if (typeof target[(Symbol as any).iterator] === "function") { +// const cp = [] as any[]; +// if ((target as any as any[]).length > 0) { +// for (const arrayMember of target as any as any[]) { +// cp.push(deepCopy(arrayMember)); +// } +// } +// return cp as any as T; +// } else { +// const targetKeys = Object.keys(target); +// const cp = {}; +// if (targetKeys.length > 0) { +// for (const key of targetKeys) { +// cp[key] = deepCopy(target[key]); +// } +// } +// return cp as T; +// } +// } +// // Means that object is atomic +// return target; +// }; diff --git a/bundler/tests/.cache/deno/60207da1f6086c99439bc3461ec7e13a91db0a5b.ts b/bundler/tests/.cache/deno/60207da1f6086c99439bc3461ec7e13a91db0a5b.ts new file mode 100644 index 00000000000..24e2acb6929 --- /dev/null +++ b/bundler/tests/.cache/deno/60207da1f6086c99439bc3461ec7e13a91db0a5b.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isSurrogatePair.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; + +export const isSurrogatePair = (str: string) => { + assertString(str); + return surrogatePair.test(str); +}; diff --git a/bundler/tests/.cache/deno/60208104d8419669579f9261ae1aa06904cd8ebc.ts b/bundler/tests/.cache/deno/60208104d8419669579f9261ae1aa06904cd8ebc.ts new file mode 100644 index 00000000000..3dcbf325df1 --- /dev/null +++ b/bundler/tests/.cache/deno/60208104d8419669579f9261ae1aa06904cd8ebc.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pluck.js + + +import _curry2 from './internal/_curry2.js'; +import map from './map.js'; +import prop from './prop.js'; + + +/** + * Returns a new list by plucking the same named property off all objects in + * the list supplied. + * + * `pluck` will work on + * any [functor](https://github.com/fantasyland/fantasy-land#functor) in + * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => k -> f {k: v} -> f v + * @param {Number|String} key The key name to pluck off of each object. + * @param {Array} f The array or functor to consider. + * @return {Array} The list of values for the given key. + * @see R.project, R.prop, R.props + * @example + * + * var getAges = R.pluck('age'); + * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27] + * + * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3] + * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} + * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5] + * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5] + */ +var pluck = _curry2(function pluck(p, list) { + return map(prop(p), list); +}); +export default pluck; diff --git a/bundler/tests/.cache/deno/609d7c2082e3ef0a4a8fb2e7e60e9697b1f06ec0.ts b/bundler/tests/.cache/deno/609d7c2082e3ef0a4a8fb2e7e60e9697b1f06ec0.ts new file mode 100644 index 00000000000..341d7f128f6 --- /dev/null +++ b/bundler/tests/.cache/deno/609d7c2082e3ef0a4a8fb2e7e60e9697b1f06ec0.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueInputFieldNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique input field names + * + * A GraphQL input object value is only valid if all supplied fields are + * uniquely named. + */ +export function UniqueInputFieldNamesRule(context) { + const knownNameStack = []; + let knownNames = Object.create(null); + return { + ObjectValue: { + enter() { + knownNameStack.push(knownNames); + knownNames = Object.create(null); + }, + + leave() { + knownNames = knownNameStack.pop(); + } + + }, + + ObjectField(node) { + const fieldName = node.name.value; + + if (knownNames[fieldName]) { + context.reportError(new GraphQLError(`There can be only one input field named "${fieldName}".`, [knownNames[fieldName], node.name])); + } else { + knownNames[fieldName] = node.name; + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/61040b6274c02b055ec7fc64f04fdbe7093d967e.ts b/bundler/tests/.cache/deno/61040b6274c02b055ec7fc64f04fdbe7093d967e.ts new file mode 100644 index 00000000000..06ec7c64181 --- /dev/null +++ b/bundler/tests/.cache/deno/61040b6274c02b055ec7fc64f04fdbe7093d967e.ts @@ -0,0 +1,200 @@ +// Loaded from https://deno.land/std@0.74.0/http/http_status.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** HTTP status codes */ +export enum Status { + /** RFC 7231, 6.2.1 */ + Continue = 100, + /** RFC 7231, 6.2.2 */ + SwitchingProtocols = 101, + /** RFC 2518, 10.1 */ + Processing = 102, + /** RFC 8297 **/ + EarlyHints = 103, + /** RFC 7231, 6.3.1 */ + OK = 200, + /** RFC 7231, 6.3.2 */ + Created = 201, + /** RFC 7231, 6.3.3 */ + Accepted = 202, + /** RFC 7231, 6.3.4 */ + NonAuthoritativeInfo = 203, + /** RFC 7231, 6.3.5 */ + NoContent = 204, + /** RFC 7231, 6.3.6 */ + ResetContent = 205, + /** RFC 7233, 4.1 */ + PartialContent = 206, + /** RFC 4918, 11.1 */ + MultiStatus = 207, + /** RFC 5842, 7.1 */ + AlreadyReported = 208, + /** RFC 3229, 10.4.1 */ + IMUsed = 226, + + /** RFC 7231, 6.4.1 */ + MultipleChoices = 300, + /** RFC 7231, 6.4.2 */ + MovedPermanently = 301, + /** RFC 7231, 6.4.3 */ + Found = 302, + /** RFC 7231, 6.4.4 */ + SeeOther = 303, + /** RFC 7232, 4.1 */ + NotModified = 304, + /** RFC 7231, 6.4.5 */ + UseProxy = 305, + /** RFC 7231, 6.4.7 */ + TemporaryRedirect = 307, + /** RFC 7538, 3 */ + PermanentRedirect = 308, + + /** RFC 7231, 6.5.1 */ + BadRequest = 400, + /** RFC 7235, 3.1 */ + Unauthorized = 401, + /** RFC 7231, 6.5.2 */ + PaymentRequired = 402, + /** RFC 7231, 6.5.3 */ + Forbidden = 403, + /** RFC 7231, 6.5.4 */ + NotFound = 404, + /** RFC 7231, 6.5.5 */ + MethodNotAllowed = 405, + /** RFC 7231, 6.5.6 */ + NotAcceptable = 406, + /** RFC 7235, 3.2 */ + ProxyAuthRequired = 407, + /** RFC 7231, 6.5.7 */ + RequestTimeout = 408, + /** RFC 7231, 6.5.8 */ + Conflict = 409, + /** RFC 7231, 6.5.9 */ + Gone = 410, + /** RFC 7231, 6.5.10 */ + LengthRequired = 411, + /** RFC 7232, 4.2 */ + PreconditionFailed = 412, + /** RFC 7231, 6.5.11 */ + RequestEntityTooLarge = 413, + /** RFC 7231, 6.5.12 */ + RequestURITooLong = 414, + /** RFC 7231, 6.5.13 */ + UnsupportedMediaType = 415, + /** RFC 7233, 4.4 */ + RequestedRangeNotSatisfiable = 416, + /** RFC 7231, 6.5.14 */ + ExpectationFailed = 417, + /** RFC 7168, 2.3.3 */ + Teapot = 418, + /** RFC 7540, 9.1.2 */ + MisdirectedRequest = 421, + /** RFC 4918, 11.2 */ + UnprocessableEntity = 422, + /** RFC 4918, 11.3 */ + Locked = 423, + /** RFC 4918, 11.4 */ + FailedDependency = 424, + /** RFC 8470, 5.2 */ + TooEarly = 425, + /** RFC 7231, 6.5.15 */ + UpgradeRequired = 426, + /** RFC 6585, 3 */ + PreconditionRequired = 428, + /** RFC 6585, 4 */ + TooManyRequests = 429, + /** RFC 6585, 5 */ + RequestHeaderFieldsTooLarge = 431, + /** RFC 7725, 3 */ + UnavailableForLegalReasons = 451, + + /** RFC 7231, 6.6.1 */ + InternalServerError = 500, + /** RFC 7231, 6.6.2 */ + NotImplemented = 501, + /** RFC 7231, 6.6.3 */ + BadGateway = 502, + /** RFC 7231, 6.6.4 */ + ServiceUnavailable = 503, + /** RFC 7231, 6.6.5 */ + GatewayTimeout = 504, + /** RFC 7231, 6.6.6 */ + HTTPVersionNotSupported = 505, + /** RFC 2295, 8.1 */ + VariantAlsoNegotiates = 506, + /** RFC 4918, 11.5 */ + InsufficientStorage = 507, + /** RFC 5842, 7.2 */ + LoopDetected = 508, + /** RFC 2774, 7 */ + NotExtended = 510, + /** RFC 6585, 6 */ + NetworkAuthenticationRequired = 511, +} + +export const STATUS_TEXT = new Map([ + [Status.Continue, "Continue"], + [Status.SwitchingProtocols, "Switching Protocols"], + [Status.Processing, "Processing"], + [Status.EarlyHints, "Early Hints"], + [Status.OK, "OK"], + [Status.Created, "Created"], + [Status.Accepted, "Accepted"], + [Status.NonAuthoritativeInfo, "Non-Authoritative Information"], + [Status.NoContent, "No Content"], + [Status.ResetContent, "Reset Content"], + [Status.PartialContent, "Partial Content"], + [Status.MultiStatus, "Multi-Status"], + [Status.AlreadyReported, "Already Reported"], + [Status.IMUsed, "IM Used"], + [Status.MultipleChoices, "Multiple Choices"], + [Status.MovedPermanently, "Moved Permanently"], + [Status.Found, "Found"], + [Status.SeeOther, "See Other"], + [Status.NotModified, "Not Modified"], + [Status.UseProxy, "Use Proxy"], + [Status.TemporaryRedirect, "Temporary Redirect"], + [Status.PermanentRedirect, "Permanent Redirect"], + [Status.BadRequest, "Bad Request"], + [Status.Unauthorized, "Unauthorized"], + [Status.PaymentRequired, "Payment Required"], + [Status.Forbidden, "Forbidden"], + [Status.NotFound, "Not Found"], + [Status.MethodNotAllowed, "Method Not Allowed"], + [Status.NotAcceptable, "Not Acceptable"], + [Status.ProxyAuthRequired, "Proxy Authentication Required"], + [Status.RequestTimeout, "Request Timeout"], + [Status.Conflict, "Conflict"], + [Status.Gone, "Gone"], + [Status.LengthRequired, "Length Required"], + [Status.PreconditionFailed, "Precondition Failed"], + [Status.RequestEntityTooLarge, "Request Entity Too Large"], + [Status.RequestURITooLong, "Request URI Too Long"], + [Status.UnsupportedMediaType, "Unsupported Media Type"], + [Status.RequestedRangeNotSatisfiable, "Requested Range Not Satisfiable"], + [Status.ExpectationFailed, "Expectation Failed"], + [Status.Teapot, "I'm a teapot"], + [Status.MisdirectedRequest, "Misdirected Request"], + [Status.UnprocessableEntity, "Unprocessable Entity"], + [Status.Locked, "Locked"], + [Status.FailedDependency, "Failed Dependency"], + [Status.TooEarly, "Too Early"], + [Status.UpgradeRequired, "Upgrade Required"], + [Status.PreconditionRequired, "Precondition Required"], + [Status.TooManyRequests, "Too Many Requests"], + [Status.RequestHeaderFieldsTooLarge, "Request Header Fields Too Large"], + [Status.UnavailableForLegalReasons, "Unavailable For Legal Reasons"], + [Status.InternalServerError, "Internal Server Error"], + [Status.NotImplemented, "Not Implemented"], + [Status.BadGateway, "Bad Gateway"], + [Status.ServiceUnavailable, "Service Unavailable"], + [Status.GatewayTimeout, "Gateway Timeout"], + [Status.HTTPVersionNotSupported, "HTTP Version Not Supported"], + [Status.VariantAlsoNegotiates, "Variant Also Negotiates"], + [Status.InsufficientStorage, "Insufficient Storage"], + [Status.LoopDetected, "Loop Detected"], + [Status.NotExtended, "Not Extended"], + [Status.NetworkAuthenticationRequired, "Network Authentication Required"], +]); diff --git a/bundler/tests/.cache/deno/611b8018373713f727621682b7b82c3d4f8f9420.ts b/bundler/tests/.cache/deno/611b8018373713f727621682b7b82c3d4f8f9420.ts new file mode 100644 index 00000000000..7667c93ee66 --- /dev/null +++ b/bundler/tests/.cache/deno/611b8018373713f727621682b7b82c3d4f8f9420.ts @@ -0,0 +1,265 @@ +// Loaded from https://deno.land/x/mysql/src/constant/charset.ts + + +export enum Charset { + BIG5_CHINESE_CI = 1, + LATIN2_CZECH_CS = 2, + DEC8_SWEDISH_CI = 3, + CP850_GENERAL_CI = 4, + LATIN1_GERMAN1_CI = 5, + HP8_ENGLISH_CI = 6, + KOI8R_GENERAL_CI = 7, + LATIN1_SWEDISH_CI = 8, + LATIN2_GENERAL_CI = 9, + SWE7_SWEDISH_CI = 10, + ASCII_GENERAL_CI = 11, + UJIS_JAPANESE_CI = 12, + SJIS_JAPANESE_CI = 13, + CP1251_BULGARIAN_CI = 14, + LATIN1_DANISH_CI = 15, + HEBREW_GENERAL_CI = 16, + TIS620_THAI_CI = 18, + EUCKR_KOREAN_CI = 19, + LATIN7_ESTONIAN_CS = 20, + LATIN2_HUNGARIAN_CI = 21, + KOI8U_GENERAL_CI = 22, + CP1251_UKRAINIAN_CI = 23, + GB2312_CHINESE_CI = 24, + GREEK_GENERAL_CI = 25, + CP1250_GENERAL_CI = 26, + LATIN2_CROATIAN_CI = 27, + GBK_CHINESE_CI = 28, + CP1257_LITHUANIAN_CI = 29, + LATIN5_TURKISH_CI = 30, + LATIN1_GERMAN2_CI = 31, + ARMSCII8_GENERAL_CI = 32, + UTF8_GENERAL_CI = 33, + CP1250_CZECH_CS = 34, + UCS2_GENERAL_CI = 35, + CP866_GENERAL_CI = 36, + KEYBCS2_GENERAL_CI = 37, + MACCE_GENERAL_CI = 38, + MACROMAN_GENERAL_CI = 39, + CP852_GENERAL_CI = 40, + LATIN7_GENERAL_CI = 41, + LATIN7_GENERAL_CS = 42, + MACCE_BIN = 43, + CP1250_CROATIAN_CI = 44, + UTF8MB4_GENERAL_CI = 45, + UTF8MB4_BIN = 46, + LATIN1_BIN = 47, + LATIN1_GENERAL_CI = 48, + LATIN1_GENERAL_CS = 49, + CP1251_BIN = 50, + CP1251_GENERAL_CI = 51, + CP1251_GENERAL_CS = 52, + MACROMAN_BIN = 53, + UTF16_GENERAL_CI = 54, + UTF16_BIN = 55, + UTF16LE_GENERAL_CI = 56, + CP1256_GENERAL_CI = 57, + CP1257_BIN = 58, + CP1257_GENERAL_CI = 59, + UTF32_GENERAL_CI = 60, + UTF32_BIN = 61, + UTF16LE_BIN = 62, + BINARY = 63, + ARMSCII8_BIN = 64, + ASCII_BIN = 65, + CP1250_BIN = 66, + CP1256_BIN = 67, + CP866_BIN = 68, + DEC8_BIN = 69, + GREEK_BIN = 70, + HEBREW_BIN = 71, + HP8_BIN = 72, + KEYBCS2_BIN = 73, + KOI8R_BIN = 74, + KOI8U_BIN = 75, + LATIN2_BIN = 77, + LATIN5_BIN = 78, + LATIN7_BIN = 79, + CP850_BIN = 80, + CP852_BIN = 81, + SWE7_BIN = 82, + UTF8_BIN = 83, + BIG5_BIN = 84, + EUCKR_BIN = 85, + GB2312_BIN = 86, + GBK_BIN = 87, + SJIS_BIN = 88, + TIS620_BIN = 89, + UCS2_BIN = 90, + UJIS_BIN = 91, + GEOSTD8_GENERAL_CI = 92, + GEOSTD8_BIN = 93, + LATIN1_SPANISH_CI = 94, + CP932_JAPANESE_CI = 95, + CP932_BIN = 96, + EUCJPMS_JAPANESE_CI = 97, + EUCJPMS_BIN = 98, + CP1250_POLISH_CI = 99, + UTF16_UNICODE_CI = 101, + UTF16_ICELANDIC_CI = 102, + UTF16_LATVIAN_CI = 103, + UTF16_ROMANIAN_CI = 104, + UTF16_SLOVENIAN_CI = 105, + UTF16_POLISH_CI = 106, + UTF16_ESTONIAN_CI = 107, + UTF16_SPANISH_CI = 108, + UTF16_SWEDISH_CI = 109, + UTF16_TURKISH_CI = 110, + UTF16_CZECH_CI = 111, + UTF16_DANISH_CI = 112, + UTF16_LITHUANIAN_CI = 113, + UTF16_SLOVAK_CI = 114, + UTF16_SPANISH2_CI = 115, + UTF16_ROMAN_CI = 116, + UTF16_PERSIAN_CI = 117, + UTF16_ESPERANTO_CI = 118, + UTF16_HUNGARIAN_CI = 119, + UTF16_SINHALA_CI = 120, + UTF16_GERMAN2_CI = 121, + UTF16_CROATIAN_MYSQL561_CI = 122, + UTF16_UNICODE_520_CI = 123, + UTF16_VIETNAMESE_CI = 124, + UCS2_UNICODE_CI = 128, + UCS2_ICELANDIC_CI = 129, + UCS2_LATVIAN_CI = 130, + UCS2_ROMANIAN_CI = 131, + UCS2_SLOVENIAN_CI = 132, + UCS2_POLISH_CI = 133, + UCS2_ESTONIAN_CI = 134, + UCS2_SPANISH_CI = 135, + UCS2_SWEDISH_CI = 136, + UCS2_TURKISH_CI = 137, + UCS2_CZECH_CI = 138, + UCS2_DANISH_CI = 139, + UCS2_LITHUANIAN_CI = 140, + UCS2_SLOVAK_CI = 141, + UCS2_SPANISH2_CI = 142, + UCS2_ROMAN_CI = 143, + UCS2_PERSIAN_CI = 144, + UCS2_ESPERANTO_CI = 145, + UCS2_HUNGARIAN_CI = 146, + UCS2_SINHALA_CI = 147, + UCS2_GERMAN2_CI = 148, + UCS2_CROATIAN_MYSQL561_CI = 149, + UCS2_UNICODE_520_CI = 150, + UCS2_VIETNAMESE_CI = 151, + UCS2_GENERAL_MYSQL500_CI = 159, + UTF32_UNICODE_CI = 160, + UTF32_ICELANDIC_CI = 161, + UTF32_LATVIAN_CI = 162, + UTF32_ROMANIAN_CI = 163, + UTF32_SLOVENIAN_CI = 164, + UTF32_POLISH_CI = 165, + UTF32_ESTONIAN_CI = 166, + UTF32_SPANISH_CI = 167, + UTF32_SWEDISH_CI = 168, + UTF32_TURKISH_CI = 169, + UTF32_CZECH_CI = 170, + UTF32_DANISH_CI = 171, + UTF32_LITHUANIAN_CI = 172, + UTF32_SLOVAK_CI = 173, + UTF32_SPANISH2_CI = 174, + UTF32_ROMAN_CI = 175, + UTF32_PERSIAN_CI = 176, + UTF32_ESPERANTO_CI = 177, + UTF32_HUNGARIAN_CI = 178, + UTF32_SINHALA_CI = 179, + UTF32_GERMAN2_CI = 180, + UTF32_CROATIAN_MYSQL561_CI = 181, + UTF32_UNICODE_520_CI = 182, + UTF32_VIETNAMESE_CI = 183, + UTF8_UNICODE_CI = 192, + UTF8_ICELANDIC_CI = 193, + UTF8_LATVIAN_CI = 194, + UTF8_ROMANIAN_CI = 195, + UTF8_SLOVENIAN_CI = 196, + UTF8_POLISH_CI = 197, + UTF8_ESTONIAN_CI = 198, + UTF8_SPANISH_CI = 199, + UTF8_SWEDISH_CI = 200, + UTF8_TURKISH_CI = 201, + UTF8_CZECH_CI = 202, + UTF8_DANISH_CI = 203, + UTF8_LITHUANIAN_CI = 204, + UTF8_SLOVAK_CI = 205, + UTF8_SPANISH2_CI = 206, + UTF8_ROMAN_CI = 207, + UTF8_PERSIAN_CI = 208, + UTF8_ESPERANTO_CI = 209, + UTF8_HUNGARIAN_CI = 210, + UTF8_SINHALA_CI = 211, + UTF8_GERMAN2_CI = 212, + UTF8_CROATIAN_MYSQL561_CI = 213, + UTF8_UNICODE_520_CI = 214, + UTF8_VIETNAMESE_CI = 215, + UTF8_GENERAL_MYSQL500_CI = 223, + UTF8MB4_UNICODE_CI = 224, + UTF8MB4_ICELANDIC_CI = 225, + UTF8MB4_LATVIAN_CI = 226, + UTF8MB4_ROMANIAN_CI = 227, + UTF8MB4_SLOVENIAN_CI = 228, + UTF8MB4_POLISH_CI = 229, + UTF8MB4_ESTONIAN_CI = 230, + UTF8MB4_SPANISH_CI = 231, + UTF8MB4_SWEDISH_CI = 232, + UTF8MB4_TURKISH_CI = 233, + UTF8MB4_CZECH_CI = 234, + UTF8MB4_DANISH_CI = 235, + UTF8MB4_LITHUANIAN_CI = 236, + UTF8MB4_SLOVAK_CI = 237, + UTF8MB4_SPANISH2_CI = 238, + UTF8MB4_ROMAN_CI = 239, + UTF8MB4_PERSIAN_CI = 240, + UTF8MB4_ESPERANTO_CI = 241, + UTF8MB4_HUNGARIAN_CI = 242, + UTF8MB4_SINHALA_CI = 243, + UTF8MB4_GERMAN2_CI = 244, + UTF8MB4_CROATIAN_MYSQL561_CI = 245, + UTF8MB4_UNICODE_520_CI = 246, + UTF8MB4_VIETNAMESE_CI = 247, + UTF8_GENERAL50_CI = 253, + + ARMSCII8 = ARMSCII8_GENERAL_CI, + ASCII = ASCII_GENERAL_CI, + BIG5 = BIG5_CHINESE_CI, + CP1250 = CP1250_GENERAL_CI, + CP1251 = CP1251_GENERAL_CI, + CP1256 = CP1256_GENERAL_CI, + CP1257 = CP1257_GENERAL_CI, + CP866 = CP866_GENERAL_CI, + CP850 = CP850_GENERAL_CI, + CP852 = CP852_GENERAL_CI, + CP932 = CP932_JAPANESE_CI, + DEC8 = DEC8_SWEDISH_CI, + EUCJPMS = EUCJPMS_JAPANESE_CI, + EUCKR = EUCKR_KOREAN_CI, + GB2312 = GB2312_CHINESE_CI, + GBK = GBK_CHINESE_CI, + GEOSTD8 = GEOSTD8_GENERAL_CI, + GREEK = GREEK_GENERAL_CI, + HEBREW = HEBREW_GENERAL_CI, + HP8 = HP8_ENGLISH_CI, + KEYBCS2 = KEYBCS2_GENERAL_CI, + KOI8R = KOI8R_GENERAL_CI, + KOI8U = KOI8U_GENERAL_CI, + LATIN1 = LATIN1_SWEDISH_CI, + LATIN2 = LATIN2_GENERAL_CI, + LATIN5 = LATIN5_TURKISH_CI, + LATIN7 = LATIN7_GENERAL_CI, + MACCE = MACCE_GENERAL_CI, + MACROMAN = MACROMAN_GENERAL_CI, + SJIS = SJIS_JAPANESE_CI, + SWE7 = SWE7_SWEDISH_CI, + TIS620 = TIS620_THAI_CI, + UCS2 = UCS2_GENERAL_CI, + UJIS = UJIS_JAPANESE_CI, + UTF16 = UTF16_GENERAL_CI, + UTF16LE = UTF16LE_GENERAL_CI, + UTF8 = UTF8_GENERAL_CI, + UTF8MB4 = UTF8MB4_GENERAL_CI, + UTF32 = UTF32_GENERAL_CI, +} diff --git a/bundler/tests/.cache/deno/616057bc30408233b3fa88b64c9ad8737115c746.ts b/bundler/tests/.cache/deno/616057bc30408233b3fa88b64c9ad8737115c746.ts new file mode 100644 index 00000000000..68734136b54 --- /dev/null +++ b/bundler/tests/.cache/deno/616057bc30408233b3fa88b64c9ad8737115c746.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.74.0/log/levels.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** Get log level numeric values through enum constants + */ +export enum LogLevels { + NOTSET = 0, + DEBUG = 10, + INFO = 20, + WARNING = 30, + ERROR = 40, + CRITICAL = 50, +} + +/** Permitted log level names */ +export const LogLevelNames = Object.keys(LogLevels).filter((key) => + isNaN(Number(key)) +); + +/** Union of valid log level strings */ +export type LevelName = keyof typeof LogLevels; + +const byLevel: Record = { + [String(LogLevels.NOTSET)]: "NOTSET", + [String(LogLevels.DEBUG)]: "DEBUG", + [String(LogLevels.INFO)]: "INFO", + [String(LogLevels.WARNING)]: "WARNING", + [String(LogLevels.ERROR)]: "ERROR", + [String(LogLevels.CRITICAL)]: "CRITICAL", +}; + +/** Returns the numeric log level associated with the passed, + * stringy log level name. + */ +export function getLevelByName(name: LevelName): number { + switch (name) { + case "NOTSET": + return LogLevels.NOTSET; + case "DEBUG": + return LogLevels.DEBUG; + case "INFO": + return LogLevels.INFO; + case "WARNING": + return LogLevels.WARNING; + case "ERROR": + return LogLevels.ERROR; + case "CRITICAL": + return LogLevels.CRITICAL; + default: + throw new Error(`no log level found for "${name}"`); + } +} + +/** Returns the stringy log level name provided the numeric log level */ +export function getLevelName(level: number): LevelName { + const levelName = byLevel[level]; + if (levelName) { + return levelName; + } + throw new Error(`no level name found for level: ${level}`); +} diff --git a/bundler/tests/.cache/deno/6188d8029d83e2f6ab30171e207e50bde594148c.ts b/bundler/tests/.cache/deno/6188d8029d83e2f6ab30171e207e50bde594148c.ts new file mode 100644 index 00000000000..1d07b53c37c --- /dev/null +++ b/bundler/tests/.cache/deno/6188d8029d83e2f6ab30171e207e50bde594148c.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/toLower.js + + +import invoker from './invoker.js'; + + +/** + * The lower case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to lower case. + * @return {String} The lower case version of `str`. + * @see R.toUpper + * @example + * + * R.toLower('XYZ'); //=> 'xyz' + */ +var toLower = invoker(0, 'toLowerCase'); +export default toLower; diff --git a/bundler/tests/.cache/deno/61aa99bace0e193e0473a6f3be6495241339eded.ts b/bundler/tests/.cache/deno/61aa99bace0e193e0473a6f3be6495241339eded.ts new file mode 100644 index 00000000000..541b36bc156 --- /dev/null +++ b/bundler/tests/.cache/deno/61aa99bace0e193e0473a6f3be6495241339eded.ts @@ -0,0 +1,297 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/connectors/mongodb-connector.ts + + +import { MongoDBClient } from "../../deps.ts"; +import type { MongoDBClientOptions, MongoDBDatabase } from "../../deps.ts"; +import type { Connector, ConnectorOptions } from "./connector.ts"; +import type { QueryDescription } from "../query-builder.ts"; + +type MongoDBOptionsBase = { + database: string; +}; + +type MongoDBOptionsWithURI = { + uri: string; +}; + +export type MongoDBOptions = + & ConnectorOptions + & (MongoDBOptionsWithURI | MongoDBClientOptions) + & MongoDBOptionsBase; + +export class MongoDBConnector implements Connector { + _client: MongoDBClient; + _database?: MongoDBDatabase; + _options: MongoDBOptions; + _connected = false; + + /** Create a MongoDB connection. */ + constructor(options: MongoDBOptions) { + this._options = options; + this._client = new MongoDBClient(); + } + + async _makeConnection() { + if (this._connected) { + return; + } + + if (this._options.hasOwnProperty("uri")) { + await this._client.connect((this._options as MongoDBOptionsWithURI).uri); + } else { + await this._client.connect(this._options as MongoDBClientOptions); + } + + this._database = this._client.database(this._options.database); + this._connected = true; + } + + async ping() { + await this._makeConnection(); + + try { + const databases = await this._client.listDatabases(); + return databases.map((database) => database.name).includes( + this._options.database, + ); + } catch (error) { + return false; + } + } + + async query(queryDescription: QueryDescription): Promise { + await this._makeConnection(); + + if (queryDescription.type === "create") { + // There is no need to initialize collections in MongoDB + return []; + } + + const collection = this._database!.collection(queryDescription.table!); + + let wheres: { [k: string]: any } = {}; + if (queryDescription.wheres) { + wheres = queryDescription.wheres.reduce((prev, curr) => { + let mongoOperator = "$eq"; + + switch (curr.operator) { + case "<": + mongoOperator = "$lt"; + break; + + case "<=": + mongoOperator = "$lte"; + break; + + case ">": + mongoOperator = "$gt"; + break; + + case ">=": + mongoOperator = "$gte"; + break; + } + + return { + ...prev, + [curr.field]: { + [mongoOperator]: curr.value, + }, + }; + }, {}); + } + + let results: any[] = []; + + switch (queryDescription.type) { + case "drop": + await collection.deleteMany({}); + break; + + case "insert": + const defaultedValues = queryDescription.schema.defaults; + let values = Array.isArray(queryDescription.values) + ? queryDescription.values! + : [queryDescription.values!]; + + values = values.map((record) => { + let timestamps = {}; + + if (queryDescription.schema.timestamps) { + timestamps = { + createdAt: new Date(), + updatedAt: new Date(), + }; + } + + return { ...defaultedValues, ...record, ...timestamps }; + }); + + const insertedRecords = await collection.insertMany( + values, + ); + + const recordIds = insertedRecords.insertedIds as unknown as string[]; + return await queryDescription.schema.find(recordIds); + + case "select": + const selectFields: Object[] = []; + + if (queryDescription.whereIn) { + wheres[queryDescription.whereIn.field] = { + $in: queryDescription.whereIn.possibleValues, + }; + } + + selectFields.push({ + $match: wheres, + }); + + if (queryDescription.select) { + selectFields.push({ + $project: queryDescription.select.reduce((prev: Object, curr) => { + if (typeof curr === "string") { + return { + ...prev, + [curr]: 1, + }; + } else { + const [field, alias] = Object.entries(curr)[0]; + return { + ...prev, + [alias]: field, + }; + } + }, {}), + }); + } + + if (queryDescription.joins) { + const join = queryDescription.joins[0]; + selectFields.push({ + $lookup: { + from: join.joinTable, + localField: join.originField, + foreignField: "_id", + as: join.targetField, + }, + }); + } + + if (queryDescription.orderBy) { + selectFields.push({ + $sort: Object.entries(queryDescription.orderBy).reduce( + (prev: any, [field, orderDirection]) => { + prev[field] = orderDirection === "asc" ? 1 : -1; + return prev; + }, + {}, + ), + }); + } + + if (queryDescription.groupBy) { + selectFields.push({ + $group: { + _id: `$${queryDescription.groupBy}`, + }, + }); + } + + if (queryDescription.limit) { + selectFields.push({ $limit: queryDescription.limit }); + } + + if (queryDescription.offset) { + selectFields.push({ $skip: queryDescription.offset }); + } + + results = await collection.aggregate(selectFields).toArray(); + break; + + case "update": + await collection.updateMany(wheres, { $set: queryDescription.values! }); + break; + + case "delete": + await collection.deleteMany(wheres); + break; + + case "count": + return [{ count: await collection.count(wheres) }]; + + case "avg": + return await collection.aggregate([ + { $match: wheres }, + { + $group: { + _id: null, + avg: { $avg: `$${queryDescription.aggregatorField}` }, + }, + }, + ]).toArray(); + + case "max": + return await collection.aggregate([ + { $match: wheres }, + { + $group: { + _id: null, + max: { $max: `$${queryDescription.aggregatorField}` }, + }, + }, + ]).toArray(); + + case "min": + return await collection.aggregate([ + { $match: wheres }, + { + $group: { + _id: null, + min: { $min: `$${queryDescription.aggregatorField}` }, + }, + }, + ]).toArray(); + + case "sum": + return await collection.aggregate([ + { $match: wheres }, + { + $group: { + _id: null, + sum: { $sum: `$${queryDescription.aggregatorField}` }, + }, + }, + ]).toArray(); + + default: + throw new Error(`Unknown query type: ${queryDescription.type}.`); + } + + results = results.map((result) => { + const formattedResult: { [k: string]: any } = {}; + + for (const [field, value] of Object.entries(result)) { + if (field === "_id") { + formattedResult._id = (value as { $oid?: string })?.$oid || value; + } else if ((value as { $date?: { $numberLong: number } }).$date) { + formattedResult[field] = new Date((value as any).$date.$numberLong); + } else { + formattedResult[field] = value; + } + } + + return formattedResult; + }); + + return results; + } + + async close() { + if (!this._connected) { + return; + } + + this._connected = false; + } +} diff --git a/bundler/tests/.cache/deno/61ca55e57c6ceb745d427c20eac5d12d97d99eb6.ts b/bundler/tests/.cache/deno/61ca55e57c6ceb745d427c20eac5d12d97d99eb6.ts new file mode 100644 index 00000000000..54c49e4991b --- /dev/null +++ b/bundler/tests/.cache/deno/61ca55e57c6ceb745d427c20eac5d12d97d99eb6.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/mod.ts + + +export { Application } from "./app.ts"; +export { Group } from "./group.ts"; +export { Context } from "./context.ts"; +export { Router } from "./router.ts"; + +export * from "./types.ts"; +export * from "./http_exception.ts"; diff --git a/bundler/tests/.cache/deno/6206d8537faf9c96df54d38ee638c6197586b4c0.ts b/bundler/tests/.cache/deno/6206d8537faf9c96df54d38ee638c6197586b4c0.ts new file mode 100644 index 00000000000..d0a6dc07ca5 --- /dev/null +++ b/bundler/tests/.cache/deno/6206d8537faf9c96df54d38ee638c6197586b4c0.ts @@ -0,0 +1,83 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/utils.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore no-explicit-any +export type Any = any; + +export function isNothing(subject: unknown): subject is never { + return typeof subject === "undefined" || subject === null; +} + +export function isArray(value: unknown): value is Any[] { + return Array.isArray(value); +} + +export function isBoolean(value: unknown): value is boolean { + return typeof value === "boolean" || value instanceof Boolean; +} + +export function isNull(value: unknown): value is null { + return value === null; +} + +export function isNumber(value: unknown): value is number { + return typeof value === "number" || value instanceof Number; +} + +export function isString(value: unknown): value is string { + return typeof value === "string" || value instanceof String; +} + +export function isSymbol(value: unknown): value is symbol { + return typeof value === "symbol"; +} + +export function isUndefined(value: unknown): value is undefined { + return value === undefined; +} + +export function isObject(value: unknown): value is Record { + return value !== null && typeof value === "object"; +} + +export function isError(e: unknown): boolean { + return e instanceof Error; +} + +export function isFunction(value: unknown): value is () => void { + return typeof value === "function"; +} + +export function isRegExp(value: unknown): value is RegExp { + return value instanceof RegExp; +} + +export function toArray(sequence: T): T | [] | [T] { + if (isArray(sequence)) return sequence; + if (isNothing(sequence)) return []; + + return [sequence]; +} + +export function repeat(str: string, count: number): string { + let result = ""; + + for (let cycle = 0; cycle < count; cycle++) { + result += str; + } + + return result; +} + +export function isNegativeZero(i: number): boolean { + return i === 0 && Number.NEGATIVE_INFINITY === 1 / i; +} + +export interface ArrayObject { + [P: string]: T; +} diff --git a/bundler/tests/.cache/deno/623fbb7dfcc2ae9d17e57e8e3718418b47c80e4d.ts b/bundler/tests/.cache/deno/623fbb7dfcc2ae9d17e57e8e3718418b47c80e4d.ts new file mode 100644 index 00000000000..263cd8c1496 --- /dev/null +++ b/bundler/tests/.cache/deno/623fbb7dfcc2ae9d17e57e8e3718418b47c80e4d.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/on.js + + +import curryN from './internal/_curryN.js'; + + +/** + * Takes a binary function `f`, a unary function `g`, and two values. + * Applies `g` to each value, then applies the result of each to `f`. + * + * Also known as the P combinator. + * + * @func + * @memberOf R + * @category Function + * @sig ((a, a) -> b) -> (c -> a) -> c -> c -> b + * @param {Function} f a binary function + * @param {Function} g a unary function + * @param {any} a any value + * @param {any} b any value + * @return {any} The result of `f` + * @example + * + * const eqBy = R.on((a, b) => a === b); + * eqBy(R.prop('a'), {b:0, a:1}, {a:1}) //=> true; + * + * const containsInsensitive = R.on(R.contains, R.toLower); + * containsInsensitive('o', 'FOO'); //=> true + * @symb R.on(f, g, a, b) = f(g(a), g(b)) + */ +var on = curryN(4, [], function on(f, g, a, b) { + return f(g(a), g(b)); +}); +export default on; diff --git a/bundler/tests/.cache/deno/6262640b7b417e890a16a16760e1ae57fa5db4bb.ts b/bundler/tests/.cache/deno/6262640b7b417e890a16a16760e1ae57fa5db4bb.ts new file mode 100644 index 00000000000..50d9e3bcdc8 --- /dev/null +++ b/bundler/tests/.cache/deno/6262640b7b417e890a16a16760e1ae57fa5db4bb.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std/uuid/mod.ts + + +// Based on https://github.com/kelektiv/node-uuid -> https://www.ietf.org/rfc/rfc4122.txt +// Supporting Support for RFC4122 version 1, 4, and 5 UUIDs +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as v1 from "./v1.ts"; +import * as v4 from "./v4.ts"; +import * as v5 from "./v5.ts"; + +export const NIL_UUID = "00000000-0000-0000-0000-000000000000"; + +/** + * Checks if UUID is nil + * @param val UUID value + */ +export function isNil(val: string): boolean { + return val === NIL_UUID; +} + +export { v1, v4, v5 }; diff --git a/bundler/tests/.cache/deno/627dc23b678014934d53055a9e818f4241908e34.ts b/bundler/tests/.cache/deno/627dc23b678014934d53055a9e818f4241908e34.ts new file mode 100644 index 00000000000..69ec6fb5d20 --- /dev/null +++ b/bundler/tests/.cache/deno/627dc23b678014934d53055a9e818f4241908e34.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_includes.js + + +import _indexOf from './_indexOf.js'; + + +export default function _includes(a, list) { + return _indexOf(list, a, 0) >= 0; +} diff --git a/bundler/tests/.cache/deno/62bd6743e63cf3c65502a0896afd3d9e6db7eba9.ts b/bundler/tests/.cache/deno/62bd6743e63cf3c65502a0896afd3d9e6db7eba9.ts new file mode 100644 index 00000000000..9eeb2eb20a0 --- /dev/null +++ b/bundler/tests/.cache/deno/62bd6743e63cf3c65502a0896afd3d9e6db7eba9.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/utils/bson.ts + + +import { Bson } from "../../deps.ts"; + +export function serializeBson(target: Bson.Document): Uint8Array { + return Bson.serialize(target); +} + +export function deserializeBson(buffer: Uint8Array): Bson.Document { + return Bson.deserialize(buffer); +} + +export function ObjectId(oid: string): Bson.ObjectId { + return new Bson.ObjectID(oid); +} diff --git a/bundler/tests/.cache/deno/62de52f32bf60571bfca2630a6f63ef996bc68a5.ts b/bundler/tests/.cache/deno/62de52f32bf60571bfca2630a6f63ef996bc68a5.ts new file mode 100644 index 00000000000..24afb6bc15b --- /dev/null +++ b/bundler/tests/.cache/deno/62de52f32bf60571bfca2630a6f63ef996bc68a5.ts @@ -0,0 +1,953 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/router.ts + + +/** + * Adapted directly from @koa/router at + * https://github.com/koajs/router/ which is licensed as: + * + * The MIT License (MIT) + * + * Copyright (c) 2015 Alexander C. Mingoia + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +import type { State } from "./application.ts"; +import type { Context } from "./context.ts"; +import { + assert, + compile, + Key, + ParseOptions, + pathParse, + pathToRegexp, + Status, + TokensToRegexpOptions, +} from "./deps.ts"; +import { httpErrors } from "./httpError.ts"; +import { compose, Middleware } from "./middleware.ts"; +import type { HTTPMethods, RedirectStatus } from "./types.d.ts"; +import { decodeComponent } from "./util.ts"; + +interface Matches { + path: Layer[]; + pathAndMethod: Layer[]; + route: boolean; +} + +export interface RouterAllowedMethodsOptions { + /** Use the value returned from this function instead of an HTTP error + * `MethodNotAllowed`. */ + // deno-lint-ignore no-explicit-any + methodNotAllowed?(): any; + + /** Use the value returned from this function instead of an HTTP error + * `NotImplemented`. */ + // deno-lint-ignore no-explicit-any + notImplemented?(): any; + + /** When dealing with a non-implemented method or a method not allowed, throw + * an error instead of setting the status and header for the response. */ + throw?: boolean; +} + +export interface Route< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + /** The HTTP methods that this route handles. */ + methods: HTTPMethods[]; + + /** The middleware that will be applied to this route. */ + middleware: RouterMiddleware[]; + + /** An optional name for the route. */ + name?: string; + + /** Options that were used to create the route. */ + options: LayerOptions; + + /** The parameters that are identified in the route that will be parsed out + * on matched requests. */ + paramNames: (keyof P)[]; + + /** The path that this route manages. */ + path: string; + + /** The regular expression used for matching and parsing parameters for the + * route. */ + regexp: RegExp; +} + +/** The context passed router middleware. */ +export interface RouterContext< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> extends Context { + /** When matching the route, an array of the capturing groups from the regular + * expression. */ + captures: string[]; + + /** The routes that were matched for this request. */ + matched?: Layer[]; + + /** Any parameters parsed from the route when matched. */ + params: P; + + /** A reference to the router instance. */ + router: Router; + + /** If the matched route has a `name`, the matched route name is provided + * here. */ + routeName?: string; + + /** Overrides the matched path for future route middleware, when a + * `routerPath` option is not defined on the `Router` options. */ + routerPath?: string; +} + +export interface RouterMiddleware< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + (context: RouterContext, next: () => Promise): + | Promise + | void; + /** For route parameter middleware, the `param` key for this parameter will + * be set. */ + param?: keyof P; +} + +export interface RouterOptions { + /** Override the default set of methods supported by the router. */ + methods?: HTTPMethods[]; + + /** Only handle routes where the requested path starts with the prefix. */ + prefix?: string; + + /** Override the `request.url.pathname` when matching middleware to run. */ + routerPath?: string; + + /** Determines if routes are matched in a case sensitive way. Defaults to + * `false`. */ + sensitive?: boolean; + + /** Determines if routes are matched strictly, where the trailing `/` is not + * optional. Defaults to `false`. */ + strict?: boolean; +} + +/** Middleware that will be called by the router when handling a specific + * parameter, which the middleware will be called when a request matches the + * route parameter. */ +export interface RouterParamMiddleware< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + ( + param: string, + context: RouterContext, + next: () => Promise, + ): Promise | void; +} + +export type RouteParams = Record; + +type LayerOptions = TokensToRegexpOptions & ParseOptions & { + ignoreCaptures?: boolean; + name?: string; +}; + +type UrlOptions = TokensToRegexpOptions & ParseOptions & { + /** When generating a URL from a route, add the query to the URL. If an + * object */ + query?: URLSearchParams | Record | string; +}; + +/** Generate a URL from a string, potentially replace route params with + * values. */ +function toUrl(url: string, params: RouteParams = {}, options?: UrlOptions) { + const tokens = pathParse(url); + let replace: RouteParams = {}; + + if (tokens.some((token) => typeof token === "object")) { + replace = params; + } else { + options = params; + } + + const toPath = compile(url, options); + let replaced = toPath(replace); + + if (options && options.query) { + const url = new URL(replaced, "http://oak"); + if (typeof options.query === "string") { + url.search = options.query; + } else { + url.search = String( + options.query instanceof URLSearchParams + ? options.query + : new URLSearchParams(options.query), + ); + } + return `${url.pathname}${url.search}${url.hash}`; + } + return replaced; +} + +class Layer< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + #opts: LayerOptions; + #paramNames: Key[] = []; + #regexp: RegExp; + + methods: HTTPMethods[]; + name?: string; + path: string; + stack: RouterMiddleware[]; + + constructor( + path: string, + methods: HTTPMethods[], + middleware: RouterMiddleware | RouterMiddleware[], + { name, ...opts }: LayerOptions = {}, + ) { + this.#opts = opts; + this.name = name; + this.methods = [...methods]; + if (this.methods.includes("GET")) { + this.methods.unshift("HEAD"); + } + this.stack = Array.isArray(middleware) ? middleware : [middleware]; + this.path = path; + this.#regexp = pathToRegexp(path, this.#paramNames, this.#opts); + } + + match(path: string): boolean { + return this.#regexp.test(path); + } + + params( + captures: string[], + existingParams: RouteParams = {}, + ): RouteParams { + const params = existingParams; + for (let i = 0; i < captures.length; i++) { + if (this.#paramNames[i]) { + const c = captures[i]; + params[this.#paramNames[i].name] = c ? decodeComponent(c) : c; + } + } + return params; + } + + captures(path: string): string[] { + if (this.#opts.ignoreCaptures) { + return []; + } + return path.match(this.#regexp)?.slice(1) ?? []; + } + + url( + params: RouteParams = {}, + options?: UrlOptions, + ): string { + const url = this.path.replace(/\(\.\*\)/g, ""); + return toUrl(url, params, options); + } + + param( + param: string, + // deno-lint-ignore no-explicit-any + fn: RouterParamMiddleware, + ) { + const stack = this.stack; + const params = this.#paramNames; + const middleware: RouterMiddleware = function ( + this: Router, + ctx, + next, + ): Promise | void { + const p = ctx.params[param]; + assert(p); + return fn.call(this, p, ctx, next); + }; + middleware.param = param; + + const names = params.map((p) => p.name); + + const x = names.indexOf(param); + if (x >= 0) { + for (let i = 0; i < stack.length; i++) { + const fn = stack[i]; + if (!fn.param || names.indexOf(fn.param as (string | number)) > x) { + stack.splice(i, 0, middleware); + break; + } + } + } + return this; + } + + setPrefix(prefix: string): this { + if (this.path) { + this.path = this.path !== "/" || this.#opts.strict === true + ? `${prefix}${this.path}` + : prefix; + this.#paramNames = []; + this.#regexp = pathToRegexp(this.path, this.#paramNames, this.#opts); + } + return this; + } + + // deno-lint-ignore no-explicit-any + toJSON(): Route { + return { + methods: [...this.methods], + middleware: [...this.stack], + paramNames: this.#paramNames.map((key) => key.name), + path: this.path, + regexp: this.#regexp, + options: { ...this.#opts }, + }; + } +} + +/** An interface for registering middleware that will run when certain HTTP + * methods and paths are requested, as well as provides a way to parameterize + * parts of the requested path. */ +export class Router< + RP extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + RS extends State = Record, +> { + #opts: RouterOptions; + #methods: HTTPMethods[]; + // deno-lint-ignore no-explicit-any + #params: Record> = {}; + #stack: Layer[] = []; + + #match = (path: string, method: HTTPMethods): Matches => { + const matches: Matches = { + path: [], + pathAndMethod: [], + route: false, + }; + + for (const route of this.#stack) { + if (route.match(path)) { + matches.path.push(route); + if (route.methods.length === 0 || route.methods.includes(method)) { + matches.pathAndMethod.push(route); + if (route.methods.length) { + matches.route = true; + } + } + } + } + + return matches; + }; + + #register = ( + path: string | string[], + middleware: RouterMiddleware[], + methods: HTTPMethods[], + options: LayerOptions = {}, + ): void => { + if (Array.isArray(path)) { + for (const p of path) { + this.#register(p, middleware, methods, options); + } + return; + } + + const { end, name, sensitive, strict, ignoreCaptures } = options; + const route = new Layer(path, methods, middleware, { + end: end === false ? end : true, + name, + sensitive: sensitive ?? this.#opts.sensitive ?? false, + strict: strict ?? this.#opts.strict ?? false, + ignoreCaptures, + }); + + if (this.#opts.prefix) { + route.setPrefix(this.#opts.prefix); + } + + for (const [param, mw] of Object.entries(this.#params)) { + route.param(param, mw); + } + + this.#stack.push(route); + }; + + #route = (name: string): Layer | undefined => { + for (const route of this.#stack) { + if (route.name === name) { + return route; + } + } + }; + + #useVerb = ( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + middleware: RouterMiddleware[], + methods: HTTPMethods[], + ): void => { + let name: string | undefined = undefined; + let path: string; + if (typeof pathOrMiddleware === "string") { + name = nameOrPath; + path = pathOrMiddleware; + } else { + path = nameOrPath; + middleware.unshift(pathOrMiddleware); + } + + this.#register(path, middleware, methods, { name }); + }; + + constructor(opts: RouterOptions = {}) { + this.#opts = opts; + this.#methods = opts.methods ?? [ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + ]; + } + + /** Register named middleware for the specified routes when the `DELETE`, + * `GET`, `POST`, or `PUT` method is requested. */ + all

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `DELETE`, + * `GET`, `POST`, or `PUT` method is requested. */ + all

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + all

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["DELETE", "GET", "POST", "PUT"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Middleware that handles requests for HTTP methods registered with the + * router. If none of the routes handle a method, then "not allowed" logic + * will be used. If a method is supported by some routes, but not the + * particular matched router, then "not implemented" will be returned. + * + * The middleware will also automatically handle the `OPTIONS` method, + * responding with a `200 OK` when the `Allowed` header sent to the allowed + * methods for a given route. + * + * By default, a "not allowed" request will respond with a `405 Not Allowed` + * and a "not implemented" will respond with a `501 Not Implemented`. Setting + * the option `.throw` to `true` will cause the middleware to throw an + * `HTTPError` instead of setting the response status. The error can be + * overridden by providing a `.notImplemented` or `.notAllowed` method in the + * options, of which the value will be returned will be thrown instead of the + * HTTP error. */ + allowedMethods( + options: RouterAllowedMethodsOptions = {}, + ): Middleware { + const implemented = this.#methods; + + const allowedMethods: Middleware = async (context, next) => { + const ctx = context as RouterContext; + await next(); + if (!ctx.response.status || ctx.response.status === Status.NotFound) { + assert(ctx.matched); + const allowed = new Set(); + for (const route of ctx.matched) { + for (const method of route.methods) { + allowed.add(method); + } + } + + const allowedStr = [...allowed].join(", "); + if (!implemented.includes(ctx.request.method)) { + if (options.throw) { + throw options.notImplemented + ? options.notImplemented() + : new httpErrors.NotImplemented(); + } else { + ctx.response.status = Status.NotImplemented; + ctx.response.headers.set("Allowed", allowedStr); + } + } else if (allowed.size) { + if (ctx.request.method === "OPTIONS") { + ctx.response.status = Status.OK; + ctx.response.headers.set("Allowed", allowedStr); + } else if (!allowed.has(ctx.request.method)) { + if (options.throw) { + throw options.methodNotAllowed + ? options.methodNotAllowed() + : new httpErrors.MethodNotAllowed(); + } else { + ctx.response.status = Status.MethodNotAllowed; + ctx.response.headers.set("Allowed", allowedStr); + } + } + } + } + }; + + return allowedMethods; + } + + /** Register named middleware for the specified routes when the `DELETE`, + * method is requested. */ + delete

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `DELETE`, + * method is requested. */ + delete

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + delete

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["DELETE"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. To be compatible + * with the iterable interfaces, both the key and value are set to the value + * of the route. */ + *entries(): IterableIterator<[Route, Route]> { + for (const route of this.#stack) { + const value = route.toJSON(); + yield [value, value]; + } + } + + /** Iterate over the routes currently added to the router, calling the + * `callback` function for each value. */ + forEach( + callback: (value1: Route, value2: Route, router: this) => void, + // deno-lint-ignore no-explicit-any + thisArg: any = null, + ): void { + for (const route of this.#stack) { + const value = route.toJSON(); + callback.call(thisArg, value, value, this); + } + } + + /** Register named middleware for the specified routes when the `GET`, + * method is requested. */ + get

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `GET`, + * method is requested. */ + get

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + get

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["GET"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register named middleware for the specified routes when the `HEAD`, + * method is requested. */ + head

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `HEAD`, + * method is requested. */ + head

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + head

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["HEAD"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. To be compatible + * with the iterable interfaces, the key is set to the value of the route. */ + *keys(): IterableIterator { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Register named middleware for the specified routes when the `OPTIONS`, + * method is requested. */ + options

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `OPTIONS`, + * method is requested. */ + options

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + options

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["OPTIONS"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register param middleware, which will be called when the particular param + * is parsed from the route. */ + param( + param: keyof RP, + middleware: RouterParamMiddleware, + ): Router { + this.#params[param as string] = middleware; + for (const route of this.#stack) { + route.param(param as string, middleware); + } + return this; + } + + /** Register named middleware for the specified routes when the `PATCH`, + * method is requested. */ + patch

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `PATCH`, + * method is requested. */ + patch

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + patch

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["PATCH"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register named middleware for the specified routes when the `POST`, + * method is requested. */ + post

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `POST`, + * method is requested. */ + post

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + post

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["POST"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Set the router prefix for this router. */ + prefix(prefix: string): this { + prefix = prefix.replace(/\/$/, ""); + this.#opts.prefix = prefix; + for (const route of this.#stack) { + route.setPrefix(prefix); + } + return this; + } + + /** Register named middleware for the specified routes when the `PUT` + * method is requested. */ + put

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `PUT` + * method is requested. */ + put

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + put

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["PUT"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register a direction middleware, where when the `source` path is matched + * the router will redirect the request to the `destination` path. A `status` + * of `302 Found` will be set by default. + * + * The `source` and `destination` can be named routes. */ + redirect( + source: string, + destination: string, + status: RedirectStatus = Status.Found, + ): this { + if (source[0] !== "/") { + const s = this.url(source); + if (!s) { + throw new RangeError(`Could not resolve named route: "${source}"`); + } + source = s; + } + if (destination[0] !== "/") { + const d = this.url(destination); + if (!d) { + throw new RangeError(`Could not resolve named route: "${source}"`); + } + destination = d; + } + + this.all(source, (ctx) => { + ctx.response.redirect(destination); + ctx.response.status = status; + }); + return this; + } + + /** Return middleware that will do all the route processing that the router + * has been configured to handle. Typical usage would be something like this: + * + * ```ts + * import { Application, Router } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * const router = new Router(); + * + * // register routes + * + * app.use(router.routes()); + * app.use(router.allowedMethods()); + * await app.listen({ port: 80 }); + * ``` + */ + routes(): Middleware { + const dispatch = ( + context: Context, + next: () => Promise, + ): Promise => { + const ctx = context as RouterContext; + const { url: { pathname }, method } = ctx.request; + const path = this.#opts.routerPath ?? ctx.routerPath ?? + decodeURIComponent(pathname); + const matches = this.#match(path, method); + + if (ctx.matched) { + ctx.matched.push(...matches.path); + } else { + ctx.matched = [...matches.path]; + } + + // deno-lint-ignore no-explicit-any + ctx.router = this as Router; + + if (!matches.route) return next(); + + const { pathAndMethod: matchedRoutes } = matches; + + const chain = matchedRoutes.reduce( + (prev, route) => [ + ...prev, + (ctx: RouterContext, next: () => Promise): Promise => { + ctx.captures = route.captures(path); + ctx.params = route.params(ctx.captures, ctx.params); + ctx.routeName = route.name; + return next(); + }, + ...route.stack, + ], + [] as RouterMiddleware[], + ); + return compose(chain)(ctx, next); + }; + dispatch.router = this; + return dispatch; + } + + /** Generate a URL pathname for a named route, interpolating the optional + * params provided. Also accepts an optional set of options. */ + url

( + name: string, + params?: P, + options?: UrlOptions, + ): string | undefined { + const route = this.#route(name); + + if (route) { + return route.url(params, options); + } + } + + /** Register middleware to be used on every matched route. */ + use

( + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware to be used on every route that matches the supplied + * `path`. */ + use

( + path: string | string[], + ...middleware: RouterMiddleware[] + ): Router

; + use

( + pathOrMiddleware: string | string[] | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + let path: string | string[] | undefined; + if ( + typeof pathOrMiddleware === "string" || Array.isArray(pathOrMiddleware) + ) { + path = pathOrMiddleware; + } else { + middleware.unshift(pathOrMiddleware); + } + + this.#register( + path ?? "(.*)", + middleware as RouterMiddleware[], + [], + { end: false, ignoreCaptures: !path }, + ); + + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. */ + *values(): IterableIterator> { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Provide an iterator interface that iterates over the routes registered + * with the router. */ + *[Symbol.iterator](): IterableIterator> { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Generate a URL pathname based on the provided path, interpolating the + * optional params provided. Also accepts an optional set of options. */ + static url( + path: string, + params?: RouteParams, + options?: UrlOptions, + ): string { + return toUrl(path, params, options); + } +} diff --git a/bundler/tests/.cache/deno/62ed138e589be84029e6be44beffea908c99bd74.ts b/bundler/tests/.cache/deno/62ed138e589be84029e6be44beffea908c99bd74.ts new file mode 100644 index 00000000000..5e947cc6c31 --- /dev/null +++ b/bundler/tests/.cache/deno/62ed138e589be84029e6be44beffea908c99bd74.ts @@ -0,0 +1,714 @@ +// Loaded from https://deno.land/std@0.77.0/io/bufio.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copyBytes } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copyBytes(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +// eslint-disable-next-line require-await +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + yield* readStringDelim(reader, "\n"); +} diff --git a/bundler/tests/.cache/deno/62f9ce33a62a530d0014ff33b77340297854fc90.ts b/bundler/tests/.cache/deno/62f9ce33a62a530d0014ff33b77340297854fc90.ts new file mode 100644 index 00000000000..eba963a982b --- /dev/null +++ b/bundler/tests/.cache/deno/62f9ce33a62a530d0014ff33b77340297854fc90.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/mysql/src/constant/packet.ts + + +export enum PacketType { + OK_Packet = 0x00, + EOF_Packet = 0xfe, + ERR_Packet = 0xff, + Result, +} diff --git a/bundler/tests/.cache/deno/6316a4c51d99eda000ea7f06718919883decb8dd.ts b/bundler/tests/.cache/deno/6316a4c51d99eda000ea7f06718919883decb8dd.ts new file mode 100644 index 00000000000..6f0aba5b75b --- /dev/null +++ b/bundler/tests/.cache/deno/6316a4c51d99eda000ea7f06718919883decb8dd.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isPlaceholder.js + + +export default function _isPlaceholder(a) { + return a != null && + typeof a === 'object' && + a['@@functional/placeholder'] === true; +} diff --git a/bundler/tests/.cache/deno/635cf8b09e7ff6a6ed019da4e7138ffcc79f40d3.ts b/bundler/tests/.cache/deno/635cf8b09e7ff6a6ed019da4e7138ffcc79f40d3.ts new file mode 100644 index 00000000000..7a1bac29da4 --- /dev/null +++ b/bundler/tests/.cache/deno/635cf8b09e7ff6a6ed019da4e7138ffcc79f40d3.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/helpers/results.ts + + +import type { ModelSchema } from "../model.ts"; +import type { Values } from "../data-types.ts"; + +/** Transform a plain record object to a given model schema. */ +export function formatResultToModelInstance( + Schema: ModelSchema, + fields: Values, +) { + const instance = new Schema(); + + for (const field in fields) { + (instance as any)[Schema.formatFieldToClient(field) as string] = + fields[field]; + } + + return instance; +} diff --git a/bundler/tests/.cache/deno/63699da411bf89c86d8541d7b28f10f8a901e322.ts b/bundler/tests/.cache/deno/63699da411bf89c86d8541d7b28f10f8a901e322.ts new file mode 100644 index 00000000000..ec390b192b7 --- /dev/null +++ b/bundler/tests/.cache/deno/63699da411bf89c86d8541d7b28f10f8a901e322.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std/fs/_util.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; + +/** + * Test whether or not `dest` is a sub-directory of `src` + * @param src src file path + * @param dest dest file path + * @param sep path separator + */ +export function isSubdir( + src: string, + dest: string, + sep: string = path.sep, +): boolean { + if (src === dest) { + return false; + } + const srcArray = src.split(sep); + const destArray = dest.split(sep); + return srcArray.every((current, i) => destArray[i] === current); +} + +export type PathType = "file" | "dir" | "symlink"; + +/** + * Get a human readable file type string. + * + * @param fileInfo A FileInfo describes a file and is returned by `stat`, + * `lstat` + */ +export function getFileInfoType(fileInfo: Deno.FileInfo): PathType | undefined { + return fileInfo.isFile + ? "file" + : fileInfo.isDirectory + ? "dir" + : fileInfo.isSymlink + ? "symlink" + : undefined; +} diff --git a/bundler/tests/.cache/deno/63cb708dd4c9b4b2834d55fb758d7e31665bc82b.ts b/bundler/tests/.cache/deno/63cb708dd4c9b4b2834d55fb758d7e31665bc82b.ts new file mode 100644 index 00000000000..7b9772b3c11 --- /dev/null +++ b/bundler/tests/.cache/deno/63cb708dd4c9b4b2834d55fb758d7e31665bc82b.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.84.0/async/deferred.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/64013586f7ace0f2dd606727a1cd10b09ef4816d.ts b/bundler/tests/.cache/deno/64013586f7ace0f2dd606727a1cd10b09ef4816d.ts new file mode 100644 index 00000000000..49e30097b28 --- /dev/null +++ b/bundler/tests/.cache/deno/64013586f7ace0f2dd606727a1cd10b09ef4816d.ts @@ -0,0 +1,226 @@ +// Loaded from https://deno.land/std@0.73.0/testing/_diff.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +interface FarthestPoint { + y: number; + id: number; +} + +export enum DiffType { + removed = "removed", + common = "common", + added = "added", +} + +export interface DiffResult { + type: DiffType; + value: T; +} + +const REMOVED = 1; +const COMMON = 2; +const ADDED = 3; + +function createCommon(A: T[], B: T[], reverse?: boolean): T[] { + const common = []; + if (A.length === 0 || B.length === 0) return []; + for (let i = 0; i < Math.min(A.length, B.length); i += 1) { + if ( + A[reverse ? A.length - i - 1 : i] === B[reverse ? B.length - i - 1 : i] + ) { + common.push(A[reverse ? A.length - i - 1 : i]); + } else { + return common; + } + } + return common; +} + +export function diff(A: T[], B: T[]): Array> { + const prefixCommon = createCommon(A, B); + const suffixCommon = createCommon( + A.slice(prefixCommon.length), + B.slice(prefixCommon.length), + true, + ).reverse(); + A = suffixCommon.length + ? A.slice(prefixCommon.length, -suffixCommon.length) + : A.slice(prefixCommon.length); + B = suffixCommon.length + ? B.slice(prefixCommon.length, -suffixCommon.length) + : B.slice(prefixCommon.length); + const swapped = B.length > A.length; + [A, B] = swapped ? [B, A] : [A, B]; + const M = A.length; + const N = B.length; + if (!M && !N && !suffixCommon.length && !prefixCommon.length) return []; + if (!N) { + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...A.map( + (a): DiffResult => ({ + type: swapped ? DiffType.added : DiffType.removed, + value: a, + }), + ), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; + } + const offset = N; + const delta = M - N; + const size = M + N + 1; + const fp = new Array(size).fill({ y: -1 }); + /** + * INFO: + * This buffer is used to save memory and improve performance. + * The first half is used to save route and last half is used to save diff + * type. + * This is because, when I kept new uint8array area to save type,performance + * worsened. + */ + const routes = new Uint32Array((M * N + size + 1) * 2); + const diffTypesPtrOffset = routes.length / 2; + let ptr = 0; + let p = -1; + + function backTrace( + A: T[], + B: T[], + current: FarthestPoint, + swapped: boolean, + ): Array<{ + type: DiffType; + value: T; + }> { + const M = A.length; + const N = B.length; + const result = []; + let a = M - 1; + let b = N - 1; + let j = routes[current.id]; + let type = routes[current.id + diffTypesPtrOffset]; + while (true) { + if (!j && !type) break; + const prev = j; + if (type === REMOVED) { + result.unshift({ + type: swapped ? DiffType.removed : DiffType.added, + value: B[b], + }); + b -= 1; + } else if (type === ADDED) { + result.unshift({ + type: swapped ? DiffType.added : DiffType.removed, + value: A[a], + }); + a -= 1; + } else { + result.unshift({ type: DiffType.common, value: A[a] }); + a -= 1; + b -= 1; + } + j = routes[prev]; + type = routes[prev + diffTypesPtrOffset]; + } + return result; + } + + function createFP( + slide: FarthestPoint, + down: FarthestPoint, + k: number, + M: number, + ): FarthestPoint { + if (slide && slide.y === -1 && down && down.y === -1) { + return { y: 0, id: 0 }; + } + if ( + (down && down.y === -1) || + k === M || + (slide && slide.y) > (down && down.y) + 1 + ) { + const prev = slide.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = ADDED; + return { y: slide.y, id: ptr }; + } else { + const prev = down.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = REMOVED; + return { y: down.y + 1, id: ptr }; + } + } + + function snake( + k: number, + slide: FarthestPoint, + down: FarthestPoint, + _offset: number, + A: T[], + B: T[], + ): FarthestPoint { + const M = A.length; + const N = B.length; + if (k < -N || M < k) return { y: -1, id: -1 }; + const fp = createFP(slide, down, k, M); + while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) { + const prev = fp.id; + ptr++; + fp.id = ptr; + fp.y += 1; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = COMMON; + } + return fp; + } + + while (fp[delta + offset].y < N) { + p = p + 1; + for (let k = -p; k < delta; ++k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + for (let k = delta + p; k > delta; --k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + fp[delta + offset] = snake( + delta, + fp[delta - 1 + offset], + fp[delta + 1 + offset], + offset, + A, + B, + ); + } + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...backTrace(A, B, fp[delta + offset], swapped), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; +} diff --git a/bundler/tests/.cache/deno/64618f9bb08e4de09c6ccca7f1e955c01fbd023b.ts b/bundler/tests/.cache/deno/64618f9bb08e4de09c6ccca7f1e955c01fbd023b.ts new file mode 100644 index 00000000000..a0bd3f1c349 --- /dev/null +++ b/bundler/tests/.cache/deno/64618f9bb08e4de09c6ccca7f1e955c01fbd023b.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/parse.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { CbFunction, load, loadAll } from "./loader/loader.ts"; +import type { LoaderStateOptions } from "./loader/loader_state.ts"; + +export type ParseOptions = LoaderStateOptions; + +/** + * Parses `content` as single YAML document. + * + * Returns a JavaScript object or throws `YAMLException` on error. + * By default, does not support regexps, functions and undefined. This method is safe for untrusted data. + * + */ +export function parse(content: string, options?: ParseOptions): unknown { + return load(content, options); +} + +/** + * Same as `parse()`, but understands multi-document sources. + * Applies iterator to each document if specified, or returns array of documents. + */ +export function parseAll( + content: string, + iterator?: CbFunction, + options?: ParseOptions, +): unknown { + return loadAll(content, iterator, options); +} diff --git a/bundler/tests/.cache/deno/647032f84ece50f5a38babe73ea199ac6ee4c396.ts b/bundler/tests/.cache/deno/647032f84ece50f5a38babe73ea199ac6ee4c396.ts new file mode 100644 index 00000000000..8fd51caeb19 --- /dev/null +++ b/bundler/tests/.cache/deno/647032f84ece50f5a38babe73ea199ac6ee4c396.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_makeFlat.js + + +import _isArrayLike from './_isArrayLike.js'; + + +/** + * `_makeFlat` is a helper function that returns a one-level or fully recursive + * function based on the flag passed in. + * + * @private + */ +export default function _makeFlat(recursive) { + return function flatt(list) { + var value, jlen, j; + var result = []; + var idx = 0; + var ilen = list.length; + + while (idx < ilen) { + if (_isArrayLike(list[idx])) { + value = recursive ? flatt(list[idx]) : list[idx]; + j = 0; + jlen = value.length; + while (j < jlen) { + result[result.length] = value[j]; + j += 1; + } + } else { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; + }; +} diff --git a/bundler/tests/.cache/deno/64a0b34ed6ea49502cedd795909c020dd3fa51f0.ts b/bundler/tests/.cache/deno/64a0b34ed6ea49502cedd795909c020dd3fa51f0.ts new file mode 100644 index 00000000000..1c8bf3baf5f --- /dev/null +++ b/bundler/tests/.cache/deno/64a0b34ed6ea49502cedd795909c020dd3fa51f0.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_arrayFromIterator.js + + +export default function _arrayFromIterator(iter) { + var list = []; + var next; + while (!(next = iter.next()).done) { + list.push(next.value); + } + return list; +} diff --git a/bundler/tests/.cache/deno/6549f184bece82ad489f10dfbba8e57289402b5f.ts b/bundler/tests/.cache/deno/6549f184bece82ad489f10dfbba8e57289402b5f.ts new file mode 100644 index 00000000000..7a40bfbb601 --- /dev/null +++ b/bundler/tests/.cache/deno/6549f184bece82ad489f10dfbba8e57289402b5f.ts @@ -0,0 +1,161 @@ +// Loaded from https://deno.land/x/oak/negotiation/encoding.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface EncodingSpecificty extends Specificity { + encoding?: string; +} + +const simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +function parseEncoding(str: string, i: number): EncodingSpecificty | undefined { + const match = simpleEncodingRegExp.exec(str); + if (!match) { + return undefined; + } + + const encoding = match[1]; + let q = 1; + if (match[2]) { + const params = match[2].split(";"); + for (const param of params) { + const p = param.trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + + return { encoding, q, i }; +} + +function specify( + encoding: string, + spec: EncodingSpecificty, + i = -1, +): Specificity | undefined { + if (!spec.encoding) { + return; + } + let s = 0; + if (spec.encoding.toLocaleLowerCase() === encoding.toLocaleLowerCase()) { + s = 1; + } else if (spec.encoding !== "*") { + return; + } + + return { + i, + o: spec.i, + q: spec.q, + s, + }; +} + +function parseAcceptEncoding(accept: string): EncodingSpecificty[] { + const accepts = accept.split(","); + const parsedAccepts: EncodingSpecificty[] = []; + let hasIdentity = false; + let minQuality = 1; + + for (let i = 0; i < accepts.length; i++) { + const encoding = parseEncoding(accepts[i].trim(), i); + + if (encoding) { + parsedAccepts.push(encoding); + hasIdentity = hasIdentity || !!specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + + if (!hasIdentity) { + parsedAccepts.push({ + encoding: "identity", + q: minQuality, + i: accepts.length - 1, + }); + } + + return parsedAccepts; +} + +function getEncodingPriority( + encoding: string, + accepted: Specificity[], + index: number, +): Specificity { + let priority: Specificity = { o: -1, q: 0, s: 0, i: 0 }; + + for (const s of accepted) { + const spec = specify(encoding, s, index); + + if ( + spec && + (priority.s! - spec.s! || priority.q - spec.q || + priority.o! - spec.o!) < + 0 + ) { + priority = spec; + } + } + + return priority; +} + +/** Given an `Accept-Encoding` string, parse out the encoding returning a + * negotiated encoding based on the `provided` encodings otherwise just a + * prioritized array of encodings. */ +export function preferredEncodings( + accept: string, + provided?: string[], +): string[] { + const accepts = parseAcceptEncoding(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.encoding!); + } + + const priorities = provided.map((type, index) => + getEncodingPriority(type, accepts, index) + ); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/6551832d57a1d2e04a44a9b74e123cd17a6f8a51.ts b/bundler/tests/.cache/deno/6551832d57a1d2e04a44a9b74e123cd17a6f8a51.ts new file mode 100644 index 00000000000..ea147d0f30d --- /dev/null +++ b/bundler/tests/.cache/deno/6551832d57a1d2e04a44a9b74e123cd17a6f8a51.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/propSatisfies.js + + +import _curry3 from './internal/_curry3.js'; +import prop from './prop.js'; + +/** + * Returns `true` if the specified object property satisfies the given + * predicate; `false` otherwise. You can test multiple properties with + * [`R.where`](#where). + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Logic + * @sig (a -> Boolean) -> String -> {String: a} -> Boolean + * @param {Function} pred + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.where, R.propEq, R.propIs + * @example + * + * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true + */ +var propSatisfies = _curry3(function propSatisfies(pred, name, obj) { + return pred(prop(name, obj)); +}); +export default propSatisfies; diff --git a/bundler/tests/.cache/deno/656421b0baa5f2cf6569c3b7751b2d77c400e634.ts b/bundler/tests/.cache/deno/656421b0baa5f2cf6569c3b7751b2d77c400e634.ts new file mode 100644 index 00000000000..fdc5b5f5b18 --- /dev/null +++ b/bundler/tests/.cache/deno/656421b0baa5f2cf6569c3b7751b2d77c400e634.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isInteger.js + + +/** + * Determine if the passed argument is an integer. + * + * @private + * @param {*} n + * @category Type + * @return {Boolean} + */ +export default Number.isInteger || function _isInteger(n) { + return (n << 0) === n; +}; diff --git a/bundler/tests/.cache/deno/65740ac9839f36e2096d84c50b0dce28cd1732f7.ts b/bundler/tests/.cache/deno/65740ac9839f36e2096d84c50b0dce28cd1732f7.ts new file mode 100644 index 00000000000..85600ca50eb --- /dev/null +++ b/bundler/tests/.cache/deno/65740ac9839f36e2096d84c50b0dce28cd1732f7.ts @@ -0,0 +1,322 @@ +// Loaded from https://deno.land/std@0.74.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +export function getColorEnabled(): boolean { + return enabled; +} + +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +export function black(str: string): string { + return run(str, code([30], 39)); +} + +export function red(str: string): string { + return run(str, code([31], 39)); +} + +export function green(str: string): string { + return run(str, code([32], 39)); +} + +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +export function white(str: string): string { + return run(str, code([37], 39)); +} + +export function gray(str: string): string { + return brightBlack(str); +} + +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/65abf1d5e46652f4d675a663ba49d7c961ea84d5.ts b/bundler/tests/.cache/deno/65abf1d5e46652f4d675a663ba49d7c961ea84d5.ts new file mode 100644 index 00000000000..386460fdde5 --- /dev/null +++ b/bundler/tests/.cache/deno/65abf1d5e46652f4d675a663ba49d7c961ea84d5.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xdropWhile.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XDropWhile(f, xf) { + this.xf = xf; + this.f = f; +} +XDropWhile.prototype['@@transducer/init'] = _xfBase.init; +XDropWhile.prototype['@@transducer/result'] = _xfBase.result; +XDropWhile.prototype['@@transducer/step'] = function(result, input) { + if (this.f) { + if (this.f(input)) { + return result; + } + this.f = null; + } + return this.xf['@@transducer/step'](result, input); +}; + +var _xdropWhile = _curry2(function _xdropWhile(f, xf) { return new XDropWhile(f, xf); }); +export default _xdropWhile; diff --git a/bundler/tests/.cache/deno/664478a01d1f65fe688723118b2082d635d6d85b.ts b/bundler/tests/.cache/deno/664478a01d1f65fe688723118b2082d635d6d85b.ts new file mode 100644 index 00000000000..2d0bec0ac0c --- /dev/null +++ b/bundler/tests/.cache/deno/664478a01d1f65fe688723118b2082d635d6d85b.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/mod.ts + + +import { Datastore } from "./src/mod.ts"; + +export default Datastore; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/666acc80a9cf7bcbfb9054efe04d1643338a4d4b.ts b/bundler/tests/.cache/deno/666acc80a9cf7bcbfb9054efe04d1643338a4d4b.ts new file mode 100644 index 00000000000..d66eed8d76e --- /dev/null +++ b/bundler/tests/.cache/deno/666acc80a9cf7bcbfb9054efe04d1643338a4d4b.ts @@ -0,0 +1,111 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/ast.js + + +import defineToJSON from '../jsutils/defineToJSON.js'; + +/** + * Contains a range of UTF-8 character offsets and token references that + * identify the region of the source from which the AST derived. + */ +export class Location { + /** + * The character offset at which this Node begins. + */ + + /** + * The character offset at which this Node ends. + */ + + /** + * The Token at which this Node begins. + */ + + /** + * The Token at which this Node ends. + */ + + /** + * The Source document the AST represents. + */ + constructor(startToken, endToken, source) { + this.start = startToken.start; + this.end = endToken.end; + this.startToken = startToken; + this.endToken = endToken; + this.source = source; + } + +} // Print a simplified form when appearing in JSON/util.inspect. + +defineToJSON(Location, function () { + return { + start: this.start, + end: this.end + }; +}); +/** + * Represents a range of characters represented by a lexical token + * within a Source. + */ + +export class Token { + /** + * The kind of Token. + */ + + /** + * The character offset at which this Node begins. + */ + + /** + * The character offset at which this Node ends. + */ + + /** + * The 1-indexed line number on which this Token appears. + */ + + /** + * The 1-indexed column number at which this Token begins. + */ + + /** + * For non-punctuation tokens, represents the interpreted value of the token. + */ + + /** + * Tokens exist as nodes in a double-linked-list amongst all tokens + * including ignored tokens. is always the first node and + * the last. + */ + constructor(kind, start, end, line, column, prev, value) { + this.kind = kind; + this.start = start; + this.end = end; + this.line = line; + this.column = column; + this.value = value; + this.prev = prev; + this.next = null; + } + +} // Print a simplified form when appearing in JSON/util.inspect. + +defineToJSON(Token, function () { + return { + kind: this.kind, + value: this.value, + line: this.line, + column: this.column + }; +}); +/** + * @internal + */ + +export function isNode(maybeNode) { + return maybeNode != null && typeof maybeNode.kind === 'string'; +} +/** + * The list of all possible AST node types. + */ \ No newline at end of file diff --git a/bundler/tests/.cache/deno/670f8809faac9ade0096051d3bf292a60807141b.ts b/bundler/tests/.cache/deno/670f8809faac9ade0096051d3bf292a60807141b.ts new file mode 100644 index 00000000000..4847e0bd8e1 --- /dev/null +++ b/bundler/tests/.cache/deno/670f8809faac9ade0096051d3bf292a60807141b.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_modify.js + + +import _isArray from './_isArray.js'; +import _isInteger from './_isInteger.js'; + +/** + * Makes a shallow clone of an object, applying the given fn to the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @private + * @param {String|Number} prop The property name to set + * @param {Function} fn The function to apply to the property + * @param {Object|Array} obj The object to clone + * @return {Object|Array} A new object equivalent to the original except for the changed property. + */ +export default function _modify(prop, fn, obj) { + if (_isInteger(prop) && _isArray(obj)) { + var arr = [].concat(obj); + arr[prop] = fn(arr[prop]); + return arr; + } + + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + result[prop] = fn(result[prop]); + return result; +} diff --git a/bundler/tests/.cache/deno/67e4a69d6bb60e1c052c7adc4464af01d1778046.ts b/bundler/tests/.cache/deno/67e4a69d6bb60e1c052c7adc4464af01d1778046.ts new file mode 100644 index 00000000000..b9d27793fd5 --- /dev/null +++ b/bundler/tests/.cache/deno/67e4a69d6bb60e1c052c7adc4464af01d1778046.ts @@ -0,0 +1,402 @@ +// Loaded from https://deno.land/std@0.84.0/http/server.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { encode } from "../encoding/utf8.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { assert } from "../_util/assert.ts"; +import { Deferred, deferred, MuxAsyncIterator } from "../async/mod.ts"; +import { + bodyReader, + chunkedBodyReader, + emptyReader, + readRequest, + writeResponse, +} from "./_io.ts"; + +export class ServerRequest { + url!: string; + method!: string; + proto!: string; + protoMinor!: number; + protoMajor!: number; + headers!: Headers; + conn!: Deno.Conn; + r!: BufReader; + w!: BufWriter; + + #done: Deferred = deferred(); + #contentLength?: number | null = undefined; + #body?: Deno.Reader = undefined; + #finalized = false; + + get done(): Promise { + return this.#done.then((e) => e); + } + + /** + * Value of Content-Length header. + * If null, then content length is invalid or not given (e.g. chunked encoding). + */ + get contentLength(): number | null { + // undefined means not cached. + // null means invalid or not provided. + if (this.#contentLength === undefined) { + const cl = this.headers.get("content-length"); + if (cl) { + this.#contentLength = parseInt(cl); + // Convert NaN to null (as NaN harder to test) + if (Number.isNaN(this.#contentLength)) { + this.#contentLength = null; + } + } else { + this.#contentLength = null; + } + } + return this.#contentLength; + } + + /** + * Body of the request. The easiest way to consume the body is: + * + * const buf: Uint8Array = await Deno.readAll(req.body); + */ + get body(): Deno.Reader { + if (!this.#body) { + if (this.contentLength != null) { + this.#body = bodyReader(this.contentLength, this.r); + } else { + const transferEncoding = this.headers.get("transfer-encoding"); + if (transferEncoding != null) { + const parts = transferEncoding + .split(",") + .map((e): string => e.trim().toLowerCase()); + assert( + parts.includes("chunked"), + 'transfer-encoding must include "chunked" if content-length is not set', + ); + this.#body = chunkedBodyReader(this.headers, this.r); + } else { + // Neither content-length nor transfer-encoding: chunked + this.#body = emptyReader(); + } + } + } + return this.#body; + } + + async respond(r: Response): Promise { + let err: Error | undefined; + try { + // Write our response! + await writeResponse(this.w, r); + } catch (e) { + try { + // Eagerly close on error. + this.conn.close(); + } catch { + // Pass + } + err = e; + } + // Signal that this request has been processed and the next pipelined + // request on the same connection can be accepted. + this.#done.resolve(err); + if (err) { + // Error during responding, rethrow. + throw err; + } + } + + async finalize(): Promise { + if (this.#finalized) return; + // Consume unread body + const body = this.body; + const buf = new Uint8Array(1024); + while ((await body.read(buf)) !== null) { + // Pass + } + this.#finalized = true; + } +} + +export class Server implements AsyncIterable { + #closing = false; + #connections: Deno.Conn[] = []; + + constructor(public listener: Deno.Listener) {} + + close(): void { + this.#closing = true; + this.listener.close(); + for (const conn of this.#connections) { + try { + conn.close(); + } catch (e) { + // Connection might have been already closed + if (!(e instanceof Deno.errors.BadResource)) { + throw e; + } + } + } + } + + // Yields all HTTP requests on a single TCP connection. + private async *iterateHttpRequests( + conn: Deno.Conn, + ): AsyncIterableIterator { + const reader = new BufReader(conn); + const writer = new BufWriter(conn); + + while (!this.#closing) { + let request: ServerRequest | null; + try { + request = await readRequest(conn, reader); + } catch (error) { + if ( + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + // An error was thrown while parsing request headers. + // Try to send the "400 Bad Request" before closing the connection. + try { + await writeResponse(writer, { + status: 400, + body: encode(`${error.message}\r\n\r\n`), + }); + } catch (error) { + // The connection is broken. + } + } + break; + } + if (request === null) { + break; + } + + request.w = writer; + yield request; + + // Wait for the request to be processed before we accept a new request on + // this connection. + const responseError = await request.done; + if (responseError) { + // Something bad happened during response. + // (likely other side closed during pipelined req) + // req.done implies this connection already closed, so we can just return. + this.untrackConnection(request.conn); + return; + } + + try { + // Consume unread body and trailers if receiver didn't consume those data + await request.finalize(); + } catch (error) { + // Invalid data was received or the connection was closed. + break; + } + } + + this.untrackConnection(conn); + try { + conn.close(); + } catch (e) { + // might have been already closed + } + } + + private trackConnection(conn: Deno.Conn): void { + this.#connections.push(conn); + } + + private untrackConnection(conn: Deno.Conn): void { + const index = this.#connections.indexOf(conn); + if (index !== -1) { + this.#connections.splice(index, 1); + } + } + + // Accepts a new TCP connection and yields all HTTP requests that arrive on + // it. When a connection is accepted, it also creates a new iterator of the + // same kind and adds it to the request multiplexer so that another TCP + // connection can be accepted. + private async *acceptConnAndIterateHttpRequests( + mux: MuxAsyncIterator, + ): AsyncIterableIterator { + if (this.#closing) return; + // Wait for a new connection. + let conn: Deno.Conn; + try { + conn = await this.listener.accept(); + } catch (error) { + if ( + // The listener is closed: + error instanceof Deno.errors.BadResource || + // TLS handshake errors: + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof || + error instanceof Deno.errors.ConnectionReset + ) { + return mux.add(this.acceptConnAndIterateHttpRequests(mux)); + } + throw error; + } + this.trackConnection(conn); + // Try to accept another connection and add it to the multiplexer. + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + // Yield the requests that arrive on the just-accepted connection. + yield* this.iterateHttpRequests(conn); + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + const mux: MuxAsyncIterator = new MuxAsyncIterator(); + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + return mux.iterate(); + } +} + +/** Options for creating an HTTP server. */ +export type HTTPOptions = Omit; + +/** + * Parse addr from string + * + * const addr = "::1:8000"; + * parseAddrFromString(addr); + * + * @param addr Address string + */ +export function _parseAddrFromStr(addr: string): HTTPOptions { + let url: URL; + try { + const host = addr.startsWith(":") ? `0.0.0.0${addr}` : addr; + url = new URL(`http://${host}`); + } catch { + throw new TypeError("Invalid address."); + } + if ( + url.username || + url.password || + url.pathname != "/" || + url.search || + url.hash + ) { + throw new TypeError("Invalid address."); + } + + return { + hostname: url.hostname, + port: url.port === "" ? 80 : Number(url.port), + }; +} + +/** + * Create a HTTP server + * + * import { serve } from "https://deno.land/std/http/server.ts"; + * const body = "Hello World\n"; + * const server = serve({ port: 8000 }); + * for await (const req of server) { + * req.respond({ body }); + * } + */ +export function serve(addr: string | HTTPOptions): Server { + if (typeof addr === "string") { + addr = _parseAddrFromStr(addr); + } + + const listener = Deno.listen(addr); + return new Server(listener); +} + +/** + * Start an HTTP server with given options and request handler + * + * const body = "Hello World\n"; + * const options = { port: 8000 }; + * listenAndServe(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServe( + addr: string | HTTPOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serve(addr); + + for await (const request of server) { + handler(request); + } +} + +/** Options for creating an HTTPS server. */ +export type HTTPSOptions = Omit; + +/** + * Create an HTTPS server with given options + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * for await (const req of serveTLS(options)) { + * req.respond({ body }); + * } + * + * @param options Server configuration + * @return Async iterable server instance for incoming requests + */ +export function serveTLS(options: HTTPSOptions): Server { + const tlsOptions: Deno.ListenTlsOptions = { + ...options, + transport: "tcp", + }; + const listener = Deno.listenTls(tlsOptions); + return new Server(listener); +} + +/** + * Start an HTTPS server with given options and request handler + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * listenAndServeTLS(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServeTLS( + options: HTTPSOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serveTLS(options); + + for await (const request of server) { + handler(request); + } +} + +/** + * Interface of HTTP server response. + * If body is a Reader, response would be chunked. + * If body is a string, it would be UTF-8 encoded by default. + */ +export interface Response { + status?: number; + headers?: Headers; + body?: Uint8Array | Deno.Reader | string; + trailers?: () => Promise | Headers; +} diff --git a/bundler/tests/.cache/deno/67fa057027926f904a72e7874735dda744c2e039.ts b/bundler/tests/.cache/deno/67fa057027926f904a72e7874735dda744c2e039.ts new file mode 100644 index 00000000000..7ea71b05b7f --- /dev/null +++ b/bundler/tests/.cache/deno/67fa057027926f904a72e7874735dda744c2e039.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/toDate.ts + + +import { assertString } from './assertString.ts'; + +export const toDate = (str: string) => { + assertString(str); + const date = Date.parse(str); + return !isNaN(date) ? new Date(date) : null; +}; diff --git a/bundler/tests/.cache/deno/6842db90bc133c822ceb4b49542136172b5943d0.ts b/bundler/tests/.cache/deno/6842db90bc133c822ceb4b49542136172b5943d0.ts new file mode 100644 index 00000000000..6242b3a3d03 --- /dev/null +++ b/bundler/tests/.cache/deno/6842db90bc133c822ceb4b49542136172b5943d0.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std@0.79.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/6852319202452567b571e63384920c4c1725f0de.ts b/bundler/tests/.cache/deno/6852319202452567b571e63384920c4c1725f0de.ts new file mode 100644 index 00000000000..6238dc98269 --- /dev/null +++ b/bundler/tests/.cache/deno/6852319202452567b571e63384920c4c1725f0de.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.84.0/path/_interface.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/6854199e32bf5d27eac822d3c34c4b1d6ce493f5.ts b/bundler/tests/.cache/deno/6854199e32bf5d27eac822d3c34c4b1d6ce493f5.ts new file mode 100644 index 00000000000..dc021c311e8 --- /dev/null +++ b/bundler/tests/.cache/deno/6854199e32bf5d27eac822d3c34c4b1d6ce493f5.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/std@0.85.0/fs/move.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { exists, existsSync } from "./exists.ts"; +import { isSubdir } from "./_util.ts"; + +interface MoveOptions { + overwrite?: boolean; +} + +/** Moves a file or directory */ +export async function move( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): Promise { + const srcStat = await Deno.stat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (await exists(dest)) { + await Deno.remove(dest, { recursive: true }); + } + } else { + if (await exists(dest)) { + throw new Error("dest already exists."); + } + } + + await Deno.rename(src, dest); + + return; +} + +/** Moves a file or directory synchronously */ +export function moveSync( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): void { + const srcStat = Deno.statSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (existsSync(dest)) { + Deno.removeSync(dest, { recursive: true }); + } + } else { + if (existsSync(dest)) { + throw new Error("dest already exists."); + } + } + + Deno.renameSync(src, dest); +} diff --git a/bundler/tests/.cache/deno/68f73c63de34ebae42d0bbd5ab2b5ba5433e6ae8.ts b/bundler/tests/.cache/deno/68f73c63de34ebae42d0bbd5ab2b5ba5433e6ae8.ts new file mode 100644 index 00000000000..e51f92cdde4 --- /dev/null +++ b/bundler/tests/.cache/deno/68f73c63de34ebae42d0bbd5ab2b5ba5433e6ae8.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/mod.ts + + +export { DATA_TYPES, DataTypes } from "./lib/data-types.ts"; +export { Database } from "./lib/database.ts"; +export { Model } from "./lib/model.ts"; +export { Relationships } from "./lib/relationships.ts"; diff --git a/bundler/tests/.cache/deno/69a94a935455bf2f9ec9d3d6f3c347136873ee73.ts b/bundler/tests/.cache/deno/69a94a935455bf2f9ec9d3d6f3c347136873ee73.ts new file mode 100644 index 00000000000..12ba939aace --- /dev/null +++ b/bundler/tests/.cache/deno/69a94a935455bf2f9ec9d3d6f3c347136873ee73.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/Path.js + + +/** + * Given a Path and a key, return a new Path containing the new key. + */ +export function addPath(prev, key) { + return { + prev, + key + }; +} +/** + * Given a Path, return an Array of the path keys. + */ + +export function pathToArray(path) { + const flattened = []; + let curr = path; + + while (curr) { + flattened.push(curr.key); + curr = curr.prev; + } + + return flattened.reverse(); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/69d56fddcca369153b0a92fdd05d6502d5b140ea.ts b/bundler/tests/.cache/deno/69d56fddcca369153b0a92fdd05d6502d5b140ea.ts new file mode 100644 index 00000000000..ed3413bde14 --- /dev/null +++ b/bundler/tests/.cache/deno/69d56fddcca369153b0a92fdd05d6502d5b140ea.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/mysql/deps.ts + + +export type { Deferred } from "https://deno.land/std@0.74.0/async/mod.ts"; +export { deferred, delay } from "https://deno.land/std@0.74.0/async/mod.ts"; +export { decode, encode } from "https://deno.land/std@0.74.0/encoding/utf8.ts"; +export { format as byteFormat } from "https://deno.land/x/bytes_formater@v1.4.0/mod.ts"; +export { createHash } from "https://deno.land/std@0.74.0/hash/mod.ts"; +export type { + SupportedAlgorithm, +} from "https://deno.land/std@0.74.0/hash/mod.ts"; +export { replaceParams } from "https://deno.land/x/sql_builder@v1.7.0/util.ts"; +export * as log from "https://deno.land/std@0.74.0/log/mod.ts"; diff --git a/bundler/tests/.cache/deno/6a000c7c420b15b3a5e00d66c7448d51ce440c96.ts b/bundler/tests/.cache/deno/6a000c7c420b15b3a5e00d66c7448d51ce440c96.ts new file mode 100644 index 00000000000..4ab3b3a48a0 --- /dev/null +++ b/bundler/tests/.cache/deno/6a000c7c420b15b3a5e00d66c7448d51ce440c96.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISBN.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/; + +/** + * @ignore + */ +const isbn13Maybe = /^(?:[0-9]{13})$/; + +/** + * @ignore + */ +const factor = [1, 3]; + +export const isISBN = (str: string, version?: number): boolean => { + assertString(str); + const _version = version ? String(version) : ''; + if (!_version) { + return isISBN(str, 10) || isISBN(str, 13); + } + const sanitized = str.replace(/[\s-]+/g, ''); + let checksum = 0; + let i; + if (_version === '10') { + if (!isbn10Maybe.test(sanitized)) { + return false; + } + for (i = 0; i < 9; i++) { + checksum += (i + 1) * +sanitized.charAt(i); + } + if (sanitized.charAt(9) === 'X') { + checksum += 10 * 10; + } else { + checksum += 10 * +sanitized.charAt(9); + } + if (checksum % 11 === 0) { + return !!sanitized; + } + } else if (_version === '13') { + if (!isbn13Maybe.test(sanitized)) { + return false; + } + for (i = 0; i < 12; i++) { + checksum += factor[i % 2] * +sanitized.charAt(i); + } + if (+sanitized.charAt(12) - ((10 - (checksum % 10)) % 10) === 0) { + return !!sanitized; + } + } + return false; +}; diff --git a/bundler/tests/.cache/deno/6a0fe8918345b94de98439906e2f5a8616b536bc.ts b/bundler/tests/.cache/deno/6a0fe8918345b94de98439906e2f5a8616b536bc.ts new file mode 100644 index 00000000000..ef465be7fb1 --- /dev/null +++ b/bundler/tests/.cache/deno/6a0fe8918345b94de98439906e2f5a8616b536bc.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeDeepWithKey.js + + +import _curry3 from './internal/_curry3.js'; +import _isObject from './internal/_isObject.js'; +import mergeWithKey from './mergeWithKey.js'; + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to the key and associated values + * using the resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWithKey, R.mergeDeepWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeDeepWithKey(concatValues, + * { a: true, c: { thing: 'foo', values: [10, 20] }}, + * { b: true, c: { thing: 'bar', values: [15, 35] }}); + * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} + */ +var mergeDeepWithKey = _curry3(function mergeDeepWithKey(fn, lObj, rObj) { + return mergeWithKey(function(k, lVal, rVal) { + if (_isObject(lVal) && _isObject(rVal)) { + return mergeDeepWithKey(fn, lVal, rVal); + } else { + return fn(k, lVal, rVal); + } + }, lObj, rObj); +}); +export default mergeDeepWithKey; diff --git a/bundler/tests/.cache/deno/6a399f1a72481940ab22e9c8c25afd7bca926e1d.ts b/bundler/tests/.cache/deno/6a399f1a72481940ab22e9c8c25afd7bca926e1d.ts new file mode 100644 index 00000000000..bae7cdbe2c5 --- /dev/null +++ b/bundler/tests/.cache/deno/6a399f1a72481940ab22e9c8c25afd7bca926e1d.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_createPartialApplicator.js + + +import _arity from './_arity.js'; +import _curry2 from './_curry2.js'; + + +export default function _createPartialApplicator(concat) { + return _curry2(function(fn, args) { + return _arity(Math.max(0, fn.length - args.length), function() { + return fn.apply(this, concat(args, arguments)); + }); + }); +} diff --git a/bundler/tests/.cache/deno/6a47f3c7ed4eb9ae67e93fca98d56bfbb86ecf62.ts b/bundler/tests/.cache/deno/6a47f3c7ed4eb9ae67e93fca98d56bfbb86ecf62.ts new file mode 100644 index 00000000000..0bc6ce57cb4 --- /dev/null +++ b/bundler/tests/.cache/deno/6a47f3c7ed4eb9ae67e93fca98d56bfbb86ecf62.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/scan.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Scan is similar to [`reduce`](#reduce), but returns a list of successively + * reduced values from the left + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> [a] + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {Array} A list of all intermediately reduced values. + * @see R.reduce, R.mapAccum + * @example + * + * const numbers = [1, 2, 3, 4]; + * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24] + * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)] + */ +var scan = _curry3(function scan(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = [acc]; + while (idx < len) { + acc = fn(acc, list[idx]); + result[idx + 1] = acc; + idx += 1; + } + return result; +}); +export default scan; diff --git a/bundler/tests/.cache/deno/6aa66eeb2703c40acaa7e5a16c042c7f9d19b387.ts b/bundler/tests/.cache/deno/6aa66eeb2703c40acaa7e5a16c042c7f9d19b387.ts new file mode 100644 index 00000000000..f4fdff83d61 --- /dev/null +++ b/bundler/tests/.cache/deno/6aa66eeb2703c40acaa7e5a16c042c7f9d19b387.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/mapValue.js + + +import objectEntries from '../polyfills/objectEntries.js'; + +/** + * Creates an object map with the same keys as `map` and values generated by + * running each value of `map` thru `fn`. + */ +export default function mapValue(map, fn) { + const result = Object.create(null); + + for (const [key, value] of objectEntries(map)) { + result[key] = fn(value, key); + } + + return result; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/6aa9d935c76b64f48fb6807860c273cbbeb55a52.ts b/bundler/tests/.cache/deno/6aa9d935c76b64f48fb6807860c273cbbeb55a52.ts new file mode 100644 index 00000000000..449c900e03c --- /dev/null +++ b/bundler/tests/.cache/deno/6aa9d935c76b64f48fb6807860c273cbbeb55a52.ts @@ -0,0 +1,185 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/buf_reader.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { assert } from "./deps.ts"; +import { stripEol } from "./util.ts"; + +export interface ReadLineResult { + bytes: Uint8Array; + eol: boolean; +} + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader { + #buffer!: Uint8Array; + #reader!: Deno.Reader; + #posRead = 0; + #posWrite = 0; + #eof = false; + + // Reads a new chunk into the buffer. + #fill = async (): Promise => { + // Slide existing data to beginning. + if (this.#posRead > 0) { + this.#buffer.copyWithin(0, this.#posRead, this.#posWrite); + this.#posWrite -= this.#posRead; + this.#posRead = 0; + } + + if (this.#posWrite >= this.#buffer.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.#reader.read(this.#buffer.subarray(this.#posWrite)); + if (rr === null) { + this.#eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.#posWrite += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + }; + + #reset = (buffer: Uint8Array, reader: Deno.Reader): void => { + this.#buffer = buffer; + this.#reader = reader; + this.#eof = false; + }; + + constructor(rd: Deno.Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this.#reset(new Uint8Array(size), rd); + } + + buffered(): number { + return this.#posWrite - this.#posRead; + } + + async readLine( + strip = true, + ): Promise<{ bytes: Uint8Array; eol: boolean } | null> { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "Caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.#eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert( + this.#posRead > 0, + "Tried to rewind past start of buffer", + ); + this.#posRead--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { bytes: partial, eol: this.#eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { bytes: line, eol: true }; + } + + if (strip) { + line = stripEol(line); + } + return { bytes: line, eol: true }; + } + + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.#buffer.subarray(this.#posRead + s, this.#posWrite).indexOf( + delim, + ); + if (i >= 0) { + i += s; + slice = this.#buffer.subarray(this.#posRead, this.#posRead + i + 1); + this.#posRead += i + 1; + break; + } + + // EOF? + if (this.#eof) { + if (this.#posRead === this.#posWrite) { + return null; + } + slice = this.#buffer.subarray(this.#posRead, this.#posWrite); + this.#posRead = this.#posWrite; + break; + } + + // Buffer full? + if (this.buffered() >= this.#buffer.byteLength) { + this.#posRead = this.#posWrite; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.#buffer; + const newbuf = this.#buffer.slice(0); + this.#buffer = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.#posWrite - this.#posRead; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this.#fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + return slice; + } +} diff --git a/bundler/tests/.cache/deno/6b23bb0dd8829f0b41d0c1dce31a87e2599e5a21.ts b/bundler/tests/.cache/deno/6b23bb0dd8829f0b41d0c1dce31a87e2599e5a21.ts new file mode 100644 index 00000000000..6499c470e9b --- /dev/null +++ b/bundler/tests/.cache/deno/6b23bb0dd8829f0b41d0c1dce31a87e2599e5a21.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeLeft.js + + +import _objectAssign from './internal/_objectAssign.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the first object will be used. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey + * @example + * + * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * const resetToDefault = R.mergeLeft({x: 0}); + * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} + * @symb R.mergeLeft(a, b) = {...b, ...a} + */ +var mergeLeft = _curry2(function mergeLeft(l, r) { + return _objectAssign({}, r, l); +}); +export default mergeLeft; diff --git a/bundler/tests/.cache/deno/6b299e3d6c1c6bd6d32e24c962f2a8aca5b1e356.ts b/bundler/tests/.cache/deno/6b299e3d6c1c6bd6d32e24c962f2a8aca5b1e356.ts new file mode 100644 index 00000000000..dc0a9ccee54 --- /dev/null +++ b/bundler/tests/.cache/deno/6b299e3d6c1c6bd6d32e24c962f2a8aca5b1e356.ts @@ -0,0 +1,543 @@ +// Loaded from https://deno.land/std@0.73.0/testing/asserts.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. Do not rely on good formatting of values + * for AssertionError messages in browsers. */ + +import { bold, gray, green, red, stripColor, white } from "../fmt/colors.ts"; +import { diff, DiffResult, DiffType } from "./_diff.ts"; + +const CAN_NOT_DISPLAY = "[Cannot display]"; + +interface Constructor { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (...args: any[]): any; +} + +export class AssertionError extends Error { + constructor(message: string) { + super(message); + this.name = "AssertionError"; + } +} + +export function _format(v: unknown): string { + return globalThis.Deno + ? Deno.inspect(v, { + depth: Infinity, + sorted: true, + trailingComma: true, + compact: false, + iterableLimit: Infinity, + }) + : `"${String(v).replace(/(?=["\\])/g, "\\")}"`; +} + +function createColor(diffType: DiffType): (s: string) => string { + switch (diffType) { + case DiffType.added: + return (s: string): string => green(bold(s)); + case DiffType.removed: + return (s: string): string => red(bold(s)); + default: + return white; + } +} + +function createSign(diffType: DiffType): string { + switch (diffType) { + case DiffType.added: + return "+ "; + case DiffType.removed: + return "- "; + default: + return " "; + } +} + +function buildMessage(diffResult: ReadonlyArray>): string[] { + const messages: string[] = []; + messages.push(""); + messages.push(""); + messages.push( + ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${ + green(bold("Expected")) + }`, + ); + messages.push(""); + messages.push(""); + diffResult.forEach((result: DiffResult): void => { + const c = createColor(result.type); + messages.push(c(`${createSign(result.type)}${result.value}`)); + }); + messages.push(""); + + return messages; +} + +function isKeyedCollection(x: unknown): x is Set { + return [Symbol.iterator, "size"].every((k) => k in (x as Set)); +} + +export function equal(c: unknown, d: unknown): boolean { + const seen = new Map(); + return (function compare(a: unknown, b: unknown): boolean { + // Have to render RegExp & Date for string comparison + // unless it's mistreated as object + if ( + a && + b && + ((a instanceof RegExp && b instanceof RegExp) || + (a instanceof URL && b instanceof URL)) + ) { + return String(a) === String(b); + } + if (a instanceof Date && b instanceof Date) { + const aTime = a.getTime(); + const bTime = b.getTime(); + // Check for NaN equality manually since NaN is not + // equal to itself. + if (Number.isNaN(aTime) && Number.isNaN(bTime)) { + return true; + } + return a.getTime() === b.getTime(); + } + if (Object.is(a, b)) { + return true; + } + if (a && typeof a === "object" && b && typeof b === "object") { + if (seen.get(a) === b) { + return true; + } + if (Object.keys(a || {}).length !== Object.keys(b || {}).length) { + return false; + } + if (isKeyedCollection(a) && isKeyedCollection(b)) { + if (a.size !== b.size) { + return false; + } + + let unmatchedEntries = a.size; + + for (const [aKey, aValue] of a.entries()) { + for (const [bKey, bValue] of b.entries()) { + /* Given that Map keys can be references, we need + * to ensure that they are also deeply equal */ + if ( + (aKey === aValue && bKey === bValue && compare(aKey, bKey)) || + (compare(aKey, bKey) && compare(aValue, bValue)) + ) { + unmatchedEntries--; + } + } + } + + return unmatchedEntries === 0; + } + const merged = { ...a, ...b }; + for (const key in merged) { + type Key = keyof typeof merged; + if (!compare(a && a[key as Key], b && b[key as Key])) { + return false; + } + } + seen.set(a, b); + return true; + } + return false; + })(c, d); +} + +/** Make an assertion, error will be thrown if `expr` does not have truthy value. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` and `expected` are equal, deeply. If not + * deeply equal, then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertEquals(1, 2) + *``` + */ +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertEquals(actual: T, expected: T, msg?: string): void; +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (equal(actual, expected)) { + return; + } + let message = ""; + const actualString = _format(actual); + const expectedString = _format(expected); + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + if (msg) { + message = msg; + } + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not equal, deeply. + * If not then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertNotEquals(1, 2) + *``` + */ +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotEquals(actual: T, expected: T, msg?: string): void; +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (!equal(actual, expected)) { + return; + } + let actualString: string; + let expectedString: string; + try { + actualString = String(actual); + } catch (e) { + actualString = "[Cannot display]"; + } + try { + expectedString = String(expected); + } catch (e) { + expectedString = "[Cannot display]"; + } + if (!msg) { + msg = `actual: ${actualString} expected: ${expectedString}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` and `expected` are strictly equal. If + * not then throw. + * ```ts + * assertStrictEquals(1, 2) + * ``` + */ +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual === expected) { + return; + } + + let message: string; + + if (msg) { + message = msg; + } else { + const actualString = _format(actual); + const expectedString = _format(expected); + + if (actualString === expectedString) { + const withOffset = actualString + .split("\n") + .map((l) => ` ${l}`) + .join("\n"); + message = + `Values have the same structure but are not reference-equal:\n\n${ + red(withOffset) + }\n`; + } else { + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not strictly equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + } + } + + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not strictly equal. + * If the values are strictly equal then throw. + * ```ts + * assertNotStrictEquals(1, 1) + * ``` + */ +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual !== expected) { + return; + } + + throw new AssertionError( + msg ?? `Expected "actual" to be strictly unequal to: ${_format(actual)}\n`, + ); +} + +/** + * Make an assertion that actual contains expected. If not + * then thrown. + */ +export function assertStringContains( + actual: string, + expected: string, + msg?: string, +): void { + if (!actual.includes(expected)) { + if (!msg) { + msg = `actual: "${actual}" expected to contain: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` contains the `expected` values. + * If not then an error will be thrown. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertArrayContains([1, 2], [2]) + *``` + */ +export function assertArrayContains( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayContains( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayContains( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void { + const missing: unknown[] = []; + for (let i = 0; i < expected.length; i++) { + let found = false; + for (let j = 0; j < actual.length; j++) { + if (equal(expected[i], actual[j])) { + found = true; + break; + } + } + if (!found) { + missing.push(expected[i]); + } + } + if (missing.length === 0) { + return; + } + if (!msg) { + msg = `actual: "${_format(actual)}" expected to contain: "${ + _format(expected) + }"\nmissing: ${_format(missing)}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` match RegExp `expected`. If not + * then thrown + */ +export function assertMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (!expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` not match RegExp `expected`. If match + * then thrown + */ +export function assertNotMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to not match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Forcefully throws a failed assertion + */ +export function fail(msg?: string): void { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + assert(false, `Failed assertion${msg ? `: ${msg}` : "."}`); +} + +/** + * Executes a function, expecting it to throw. If it does not, then it + * throws. An error class and a string that should be included in the + * error message can also be asserted. + */ +export function assertThrows( + fn: () => T, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Error { + let doesThrow = false; + let error = null; + try { + fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but was "${e.constructor.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** + * Executes a function which returns a promise, expecting it to throw or reject. + * If it does not, then it throws. An error class and a string that should be + * included in the error message can also be asserted. + */ +export async function assertThrowsAsync( + fn: () => Promise, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Promise { + let doesThrow = false; + let error = null; + try { + await fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown or rejected."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but got "${e.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** Use this to stub out methods that will throw when invoked. */ +export function unimplemented(msg?: string): never { + throw new AssertionError(msg || "unimplemented"); +} + +/** Use this to assert unreachable code. */ +export function unreachable(): never { + throw new AssertionError("unreachable"); +} diff --git a/bundler/tests/.cache/deno/6b30968b981eac9bfbfce10ed2c3d99893026b1c.ts b/bundler/tests/.cache/deno/6b30968b981eac9bfbfce10ed2c3d99893026b1c.ts new file mode 100644 index 00000000000..14bced1c3e8 --- /dev/null +++ b/bundler/tests/.cache/deno/6b30968b981eac9bfbfce10ed2c3d99893026b1c.ts @@ -0,0 +1,388 @@ +// Loaded from https://deno.land/std@0.73.0/hash/sha1.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; + +const blocks: number[] = []; + +export class Sha1 { + #blocks!: number[]; + #block!: number; + #start!: number; + #bytes!: number; + #hBytes!: number; + #finalized!: boolean; + #hashed!: boolean; + + #h0 = 0x67452301; + #h1 = 0xefcdab89; + #h2 = 0x98badcfe; + #h3 = 0x10325476; + #h4 = 0xc3d2e1f0; + #lastByteIndex = 0; + + constructor(sharedMemory = false) { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + this.#h0 = 0x67452301; + this.#h1 = 0xefcdab89; + this.#h2 = 0x98badcfe; + this.#h3 = 0x10325476; + this.#h4 = 0xc3d2e1f0; + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + } + + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) >>> 0; + this.#bytes = this.#bytes >>> 0; + } + return this; + } + + private finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + private hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f: number; + let j: number; + let t: number; + const blocks = this.#blocks; + + for (j = 16; j < 80; ++j) { + t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16]; + blocks[j] = (t << 1) | (t >>> 31); + } + + for (j = 0; j < 20; j += 5) { + f = (b & c) | (~b & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1518500249 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (~a & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1518500249 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (~e & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1518500249 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (~d & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1518500249 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (~c & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1518500249 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 40; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1859775393 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1859775393 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1859775393 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1859775393 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1859775393 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 60; j += 5) { + f = (b & c) | (b & d) | (c & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e - 1894007588 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (a & c) | (b & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d - 1894007588 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (e & b) | (a & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c - 1894007588 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (d & a) | (e & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b - 1894007588 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (c & e) | (d & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a - 1894007588 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 80; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e - 899497514 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d - 899497514 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c - 899497514 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b - 899497514 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a - 899497514 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + this.#h0 = (this.#h0 + a) >>> 0; + this.#h1 = (this.#h1 + b) >>> 0; + this.#h2 = (this.#h2 + c) >>> 0; + this.#h3 = (this.#h3 + d) >>> 0; + this.#h4 = (this.#h4 + e) >>> 0; + } + + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return ( + HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + ); + } + + toString(): string { + return this.hex(); + } + + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + ]; + } + + array(): number[] { + return this.digest(); + } + + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(20); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + + return buffer; + } +} diff --git a/bundler/tests/.cache/deno/6b38a007e4be55b015f855dd0cfbdd13dacfbbd2.ts b/bundler/tests/.cache/deno/6b38a007e4be55b015f855dd0cfbdd13dacfbbd2.ts new file mode 100644 index 00000000000..0871f61bb3e --- /dev/null +++ b/bundler/tests/.cache/deno/6b38a007e4be55b015f855dd0cfbdd13dacfbbd2.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/oak/middleware.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +// deno-lint-ignore-file + +import type { State } from "./application.ts"; +import type { Context } from "./context.ts"; + +/** Middleware are functions which are chained together to deal with requests. */ +export interface Middleware< + S extends State = Record, + T extends Context = Context, +> { + (context: T, next: () => Promise): Promise | void; +} + +/** Compose multiple middleware functions into a single middleware function. */ +export function compose< + S extends State = Record, + T extends Context = Context, +>( + middleware: Middleware[], +): (context: T, next?: () => Promise) => Promise { + return function composedMiddleware( + context: T, + next?: () => Promise, + ): Promise { + let index = -1; + + async function dispatch(i: number): Promise { + if (i <= index) { + throw new Error("next() called multiple times."); + } + index = i; + let fn: Middleware | undefined = middleware[i]; + if (i === middleware.length) { + fn = next; + } + if (!fn) { + return; + } + await fn(context, dispatch.bind(null, i + 1)); + } + + return dispatch(0); + }; +} diff --git a/bundler/tests/.cache/deno/6b760120f9dd7fdb90bc9557d2e270ddf84db232.ts b/bundler/tests/.cache/deno/6b760120f9dd7fdb90bc9557d2e270ddf84db232.ts new file mode 100644 index 00000000000..c71dbeb1c78 --- /dev/null +++ b/bundler/tests/.cache/deno/6b760120f9dd7fdb90bc9557d2e270ddf84db232.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/invertObj.js + + +import _curry1 from './internal/_curry1.js'; +import keys from './keys.js'; + + +/** + * Returns a new object with the keys of the given object as values, and the + * values of the given object, which are coerced to strings, as keys. Note + * that the last key found is preferred when handling the same value. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: s} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object + * @see R.invert + * @example + * + * const raceResults = { + * first: 'alice', + * second: 'jake' + * }; + * R.invertObj(raceResults); + * //=> { 'alice': 'first', 'jake':'second' } + * + * // Alternatively: + * const raceResults = ['alice', 'jake']; + * R.invertObj(raceResults); + * //=> { 'alice': '0', 'jake':'1' } + */ +var invertObj = _curry1(function invertObj(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + out[obj[key]] = key; + idx += 1; + } + return out; +}); +export default invertObj; diff --git a/bundler/tests/.cache/deno/6bf826799f6f2af7641f21626f840957338cc174.ts b/bundler/tests/.cache/deno/6bf826799f6f2af7641f21626f840957338cc174.ts new file mode 100644 index 00000000000..b6f89525557 --- /dev/null +++ b/bundler/tests/.cache/deno/6bf826799f6f2af7641f21626f840957338cc174.ts @@ -0,0 +1,268 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isEmail.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { isByteLength } from './isByteLength.ts'; +// @ts-ignore allowing typedoc to build +import { isFQDN } from './isFQDN.ts'; +// @ts-ignore allowing typedoc to build +import { isIP } from './isIP.ts'; + +type EmailOptions = { + /** + * If set to `true`, the validator will also match `Display Name `. + * + * @default false + */ + allowDisplayName?: boolean; + + /** + * If set to `true`, the validator will reject strings without the format `Display Name `. + * + * @default false + */ + requireDisplayName?: boolean; + + /** + * If set to `false`, the validator will not allow any non-English UTF8 character in email address' local part. + * + * @default true + */ + allowUTF8LocalPart?: boolean; + + /** + * If set to `false`, e-mail addresses without having TLD in their domain will also be matched. + * + * @default true + */ + requireTLD?: boolean; + + /** + * If set to `true`, the validator will not check for the standard max length of an email. + * + * @default false + */ + ignoreMaxLength?: boolean; + + /** + * If set to `true`, the validator will allow IP addresses in the host part. + * + * @default false + */ + allowIPDomain?: boolean; + + /** + * If set to `true`, some additional validation will be enabled, + * e.g. disallowing certain syntactically valid email addresses that are rejected by GMail. + * + * @default false + */ + domainSpecificValidation?: boolean; +}; + +/** + * @ignore + */ +const defaultEmailOptions: EmailOptions = { + allowDisplayName: false, + requireDisplayName: false, + allowUTF8LocalPart: true, + requireTLD: true, + ignoreMaxLength: false, + allowIPDomain: false, + domainSpecificValidation: false, +}; + +/** + * @ignore + */ +const splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)<(.+)>$/i; + +/** + * @ignore + */ +const emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i; + +/** + * @ignore + */ +const gmailUserPart = /^[a-z\d]+$/; + +/** + * @ignore + */ +const quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i; + +/** + * @ignore + */ +const emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i; + +/** + * @ignore + */ +const quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i; + +/** + * @ignore + */ +const defaultMaxEmailLength = 254; + +/** + * Validating the displayName according to RFC2822 + * @param displayName + * @see https://tools.ietf.org/html/rfc2822#appendix-A.1.2 + * + * @ignore + */ +export const validateDisplayName = (displayName: string) => { + const trimQuotes = displayName.match(/^"(.+)"$/i); + const displayNameWithoutQuotes = trimQuotes ? trimQuotes[1] : displayName; + + // display name with only spaces is not valid + if (!displayNameWithoutQuotes.trim()) { + return false; + } + + // check whether display name contains illegal character + const containsIllegal = /[\.";<>]/.test(displayNameWithoutQuotes); + + if (containsIllegal) { + // if contains illegal characters, + // must to be enclosed in double-quotes, otherwise it's not a valid display name + if (!trimQuotes) { + return false; + } + + // the quotes in display name must start with character symbol \ + const allStartWithBackSlash = + displayNameWithoutQuotes.split('"').length === + displayNameWithoutQuotes.split('\\"').length; + if (!allStartWithBackSlash) { + return false; + } + } + + return true; +}; + +/** + * Checks if the input is an email or not. + * Gives options to check emails with display names as well. + * + * @example + * ```ts + * import {segno} from 'https://deno.land/x/segno/mod.ts'; + * + * segno.isEmail('foo@bar.com'); // true + * segno.isEmail('multiple..dots@stillinvalid.com'); // false + * ``` + */ +export const isEmail = (email: string, options?: EmailOptions) => { + assertString(email); + options = { ...defaultEmailOptions, ...options }; + + if (options.requireDisplayName || options.allowDisplayName) { + const displayEmail = email.match(splitNameAddress); + + if (displayEmail) { + let displayName; + [, displayName, email] = displayEmail; + // sometimes need to trim the last space to get the display name + // because there may be a space between display name and email address + // eg. myname + // the display name is `myname` instead of `myname `, so need to trim the last space + if (displayName.endsWith(' ')) { + displayName = displayName.substr(0, displayName.length - 1); + } + + if (!validateDisplayName(displayName)) { + return false; + } + } else if (options.requireDisplayName) { + return false; + } + } + if (!options.ignoreMaxLength && email.length > defaultMaxEmailLength) { + return false; + } + + const parts = email.split('@'); + const domain = parts.pop() as string; + let user = parts.join('@'); + + const lowerDomain = domain.toLowerCase(); + + if ( + options.domainSpecificValidation && + (lowerDomain === 'gmail.com' || lowerDomain === 'googlemail.com') + ) { + /* + Previously we removed dots for gmail addresses before validating. + This was removed because it allows `multiple..dots@gmail.com` + to be reported as valid, but it is not. + Gmail only normalizes single dots, removing them from here is pointless, + should be done in normalizeEmail + */ + user = user.toLowerCase(); + + // Removing sub-address from username before gmail validation + const username = user.split('+')[0]; + + // Dots are not included in gmail length restriction + if (!isByteLength(username.replace('.', ''), { min: 6, max: 30 })) { + return false; + } + + const userParts = username.split('.'); + for (let i = 0; i < userParts.length; i++) { + if (!gmailUserPart.test(userParts[i])) { + return false; + } + } + } + + if (!isByteLength(user, { max: 64 }) || !isByteLength(domain, { max: 254 })) { + return false; + } + + if (!isFQDN(domain, { requireTLD: options.requireTLD })) { + if (!options.allowIPDomain) { + return false; + } + + if (!isIP(domain)) { + if (!domain.startsWith('[') || !domain.endsWith(']')) { + return false; + } + + const noBracketdomain = domain.substr(1, domain.length - 2); + + if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) { + return false; + } + } + } + + if (user[0] === '"') { + user = user.slice(1, user.length - 1); + return options.allowUTF8LocalPart + ? quotedEmailUserUtf8.test(user) + : quotedEmailUser.test(user); + } + + const userParts = user.split('.'); + const pattern = options.allowUTF8LocalPart + ? emailUserUtf8Part + : emailUserPart; + + for (let i = 0; i < userParts.length; i++) { + if (!pattern.test(userParts[i])) { + return false; + } + } + + return true; +}; diff --git a/bundler/tests/.cache/deno/6c02c424105081503b5fd38bfc4b0c4546d6121f.ts b/bundler/tests/.cache/deno/6c02c424105081503b5fd38bfc4b0c4546d6121f.ts new file mode 100644 index 00000000000..66fb7a21fb1 --- /dev/null +++ b/bundler/tests/.cache/deno/6c02c424105081503b5fd38bfc4b0c4546d6121f.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/_header.ts + + +export const Accept = "Accept", + AcceptEncoding = "Accept-Encoding", + Allow = "Allow", + Authorization = "Authorization", + ContentDisposition = "Content-Disposition", + ContentEncoding = "Content-Encoding", + ContentLength = "Content-Length", + ContentType = "Content-Type", + Cookie = "Cookie", + SetCookie = "Set-Cookie", + IfModifiedSince = "If-Modified-Since", + LastModified = "Last-Modified", + Location = "Location", + Upgrade = "Upgrade", + Vary = "Vary", + WWWAuthenticate = "WWW-Authenticate", + XForwardedFor = "X-Forwarded-For", + XForwardedProto = "X-Forwarded-Proto", + XForwardedProtocol = "X-Forwarded-Protocol", + XForwardedSsl = "X-Forwarded-Ssl", + XUrlScheme = "X-Url-Scheme", + XHTTPMethodOverride = "X-HTTP-Method-Override", + XRealIP = "X-Real-IP", + XRequestID = "X-Request-ID", + XRequestedWith = "X-Requested-With", + Server = "Server", + Origin = "Origin", // Access control + AccessControlRequestMethod = "Access-Control-Request-Method", + AccessControlRequestHeaders = "Access-Control-Request-Headers", + AccessControlAllowOrigin = "Access-Control-Allow-Origin", + AccessControlAllowMethods = "Access-Control-Allow-Methods", + AccessControlAllowHeaders = "Access-Control-Allow-Headers", + AccessControlAllowCredentials = "Access-Control-Allow-Credentials", + AccessControlExposeHeaders = "Access-Control-Expose-Headers", + AccessControlMaxAge = "Access-Control-Max-Age", // Security + StrictTransportSecurity = "Strict-Transport-Security", + XContentTypeOptions = "X-Content-Type-Options", + XXSSProtection = "X-XSS-Protection", + XFrameOptions = "X-Frame-Options", + ContentSecurityPolicy = "Content-Security-Policy", + ContentSecurityPolicyReportOnly = "Content-Security-Policy-Report-Only", + XCSRFToken = "X-CSRF-Token", + ReferrerPolicy = "Referrer-Policy"; diff --git a/bundler/tests/.cache/deno/6c770a43588adf2ee510f29a8522ae521a84e4b5.ts b/bundler/tests/.cache/deno/6c770a43588adf2ee510f29a8522ae521a84e4b5.ts new file mode 100644 index 00000000000..a694252dedb --- /dev/null +++ b/bundler/tests/.cache/deno/6c770a43588adf2ee510f29a8522ae521a84e4b5.ts @@ -0,0 +1,310 @@ +// Loaded from https://deno.land/std@0.85.0/fs/copy.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType, isSubdir } from "./_util.ts"; +import { assert } from "../_util/assert.ts"; +import { isWindows } from "../_util/os.ts"; + +export interface CopyOptions { + /** + * overwrite existing file or directory. Default is `false` + */ + overwrite?: boolean; + /** + * When `true`, will set last modification and access times to the ones of the + * original source files. + * When `false`, timestamp behavior is OS-dependent. + * Default is `false`. + */ + preserveTimestamps?: boolean; +} + +interface InternalCopyOptions extends CopyOptions { + /** + * default is `false` + */ + isFolder?: boolean; +} + +async function ensureValidCopy( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + let destStat: Deno.FileInfo; + + try { + destStat = await Deno.lstat(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (options.isFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +function ensureValidCopySync( + src: string, + dest: string, + options: InternalCopyOptions, +): Deno.FileInfo | undefined { + let destStat: Deno.FileInfo; + try { + destStat = Deno.lstatSync(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (options.isFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +/* copy file to dest */ +async function copyFile( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + await Deno.copyFile(src, dest); + if (options.preserveTimestamps) { + const statInfo = await Deno.stat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy file to dest synchronously */ +function copyFileSync( + src: string, + dest: string, + options: InternalCopyOptions, +): void { + ensureValidCopySync(src, dest, options); + Deno.copyFileSync(src, dest); + if (options.preserveTimestamps) { + const statInfo = Deno.statSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest */ +async function copySymLink( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + const originSrcFilePath = await Deno.readLink(src); + const type = getFileInfoType(await Deno.lstat(src)); + if (isWindows) { + await Deno.symlink(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + await Deno.symlink(originSrcFilePath, dest); + } + if (options.preserveTimestamps) { + const statInfo = await Deno.lstat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest synchronously */ +function copySymlinkSync( + src: string, + dest: string, + options: InternalCopyOptions, +): void { + ensureValidCopySync(src, dest, options); + const originSrcFilePath = Deno.readLinkSync(src); + const type = getFileInfoType(Deno.lstatSync(src)); + if (isWindows) { + Deno.symlinkSync(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + Deno.symlinkSync(originSrcFilePath, dest); + } + + if (options.preserveTimestamps) { + const statInfo = Deno.lstatSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy folder from src to dest. */ +async function copyDir( + src: string, + dest: string, + options: CopyOptions, +): Promise { + const destStat = await ensureValidCopy(src, dest, { + ...options, + isFolder: true, + }); + + if (!destStat) { + await ensureDir(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = await Deno.stat(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for await (const entry of Deno.readDir(src)) { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + await copySymLink(srcPath, destPath, options); + } else if (entry.isDirectory) { + await copyDir(srcPath, destPath, options); + } else if (entry.isFile) { + await copyFile(srcPath, destPath, options); + } + } +} + +/* copy folder from src to dest synchronously */ +function copyDirSync(src: string, dest: string, options: CopyOptions): void { + const destStat = ensureValidCopySync(src, dest, { + ...options, + isFolder: true, + }); + + if (!destStat) { + ensureDirSync(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = Deno.statSync(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for (const entry of Deno.readDirSync(src)) { + assert(entry.name != null, "file.name must be set"); + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + copySymlinkSync(srcPath, destPath, options); + } else if (entry.isDirectory) { + copyDirSync(srcPath, destPath, options); + } else if (entry.isFile) { + copyFileSync(srcPath, destPath, options); + } + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export async function copy( + src: string, + dest: string, + options: CopyOptions = {}, +): Promise { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = await Deno.lstat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + await copySymLink(src, dest, options); + } else if (srcStat.isDirectory) { + await copyDir(src, dest, options); + } else if (srcStat.isFile) { + await copyFile(src, dest, options); + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export function copySync( + src: string, + dest: string, + options: CopyOptions = {}, +): void { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = Deno.lstatSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + copySymlinkSync(src, dest, options); + } else if (srcStat.isDirectory) { + copyDirSync(src, dest, options); + } else if (srcStat.isFile) { + copyFileSync(src, dest, options); + } +} diff --git a/bundler/tests/.cache/deno/6cadf521dfd90a5456dcce92d496318b52d944ac.ts b/bundler/tests/.cache/deno/6cadf521dfd90a5456dcce92d496318b52d944ac.ts new file mode 100644 index 00000000000..204137da85b --- /dev/null +++ b/bundler/tests/.cache/deno/6cadf521dfd90a5456dcce92d496318b52d944ac.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std@0.74.0/async/mux_async_iterator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/6cf6fe2d092a147a6059017a56ef4d8c714281ce.ts b/bundler/tests/.cache/deno/6cf6fe2d092a147a6059017a56ef4d8c714281ce.ts new file mode 100644 index 00000000000..d6622d7e0a5 --- /dev/null +++ b/bundler/tests/.cache/deno/6cf6fe2d092a147a6059017a56ef4d8c714281ce.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/when.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is satisfied, the function will return the result of calling + * the `whenTrueFn` function with the same argument. If the predicate is not + * satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenTrueFn A function to invoke when the `condition` + * evaluates to a truthy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenTrueFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`. + * @see R.ifElse, R.unless, R.cond + * @example + * + * // truncate :: String -> String + * const truncate = R.when( + * R.propSatisfies(R.gt(R.__, 10), 'length'), + * R.pipe(R.take(10), R.append('…'), R.join('')) + * ); + * truncate('12345'); //=> '12345' + * truncate('0123456789ABC'); //=> '0123456789…' + */ +var when = _curry3(function when(pred, whenTrueFn, x) { + return pred(x) ? whenTrueFn(x) : x; +}); +export default when; diff --git a/bundler/tests/.cache/deno/6d1a8250001c0e287df7ecdfe8d1fa22b8a97479.ts b/bundler/tests/.cache/deno/6d1a8250001c0e287df7ecdfe8d1fa22b8a97479.ts new file mode 100644 index 00000000000..df8bc6c3690 --- /dev/null +++ b/bundler/tests/.cache/deno/6d1a8250001c0e287df7ecdfe8d1fa22b8a97479.ts @@ -0,0 +1,238 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/printSchema.js + + +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import { print } from '../language/printer.js'; +import { printBlockString } from '../language/blockString.js'; +import { isIntrospectionType } from '../type/introspection.js'; +import { GraphQLString, isSpecifiedScalarType } from '../type/scalars.js'; +import { GraphQLDirective, DEFAULT_DEPRECATION_REASON, isSpecifiedDirective } from '../type/directives.js'; +import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition.js'; +import { astFromValue } from './astFromValue.js'; + +/** + * Accepts options as a second argument: + * + * - commentDescriptions: + * Provide true to use preceding comments as the description. + * + */ +export function printSchema(schema, options) { + return printFilteredSchema(schema, n => !isSpecifiedDirective(n), isDefinedType, options); +} +export function printIntrospectionSchema(schema, options) { + return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType, options); +} + +function isDefinedType(type) { + return !isSpecifiedScalarType(type) && !isIntrospectionType(type); +} + +function printFilteredSchema(schema, directiveFilter, typeFilter, options) { + const directives = schema.getDirectives().filter(directiveFilter); + const types = objectValues(schema.getTypeMap()).filter(typeFilter); + return [printSchemaDefinition(schema)].concat(directives.map(directive => printDirective(directive, options)), types.map(type => printType(type, options))).filter(Boolean).join('\n\n') + '\n'; +} + +function printSchemaDefinition(schema) { + if (schema.description == null && isSchemaOfCommonNames(schema)) { + return; + } + + const operationTypes = []; + const queryType = schema.getQueryType(); + + if (queryType) { + operationTypes.push(` query: ${queryType.name}`); + } + + const mutationType = schema.getMutationType(); + + if (mutationType) { + operationTypes.push(` mutation: ${mutationType.name}`); + } + + const subscriptionType = schema.getSubscriptionType(); + + if (subscriptionType) { + operationTypes.push(` subscription: ${subscriptionType.name}`); + } + + return printDescription({}, schema) + `schema {\n${operationTypes.join('\n')}\n}`; +} +/** + * GraphQL schema define root types for each type of operation. These types are + * the same as any other type and can be named in any manner, however there is + * a common naming convention: + * + * schema { + * query: Query + * mutation: Mutation + * } + * + * When using this naming convention, the schema description can be omitted. + */ + + +function isSchemaOfCommonNames(schema) { + const queryType = schema.getQueryType(); + + if (queryType && queryType.name !== 'Query') { + return false; + } + + const mutationType = schema.getMutationType(); + + if (mutationType && mutationType.name !== 'Mutation') { + return false; + } + + const subscriptionType = schema.getSubscriptionType(); + + if (subscriptionType && subscriptionType.name !== 'Subscription') { + return false; + } + + return true; +} + +export function printType(type, options) { + if (isScalarType(type)) { + return printScalar(type, options); + } + + if (isObjectType(type)) { + return printObject(type, options); + } + + if (isInterfaceType(type)) { + return printInterface(type, options); + } + + if (isUnionType(type)) { + return printUnion(type, options); + } + + if (isEnumType(type)) { + return printEnum(type, options); + } + + if (isInputObjectType(type)) { + return printInputObject(type, options); + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected type: ' + inspect(type)); +} + +function printScalar(type, options) { + return printDescription(options, type) + `scalar ${type.name}`; +} + +function printImplementedInterfaces(type) { + const interfaces = type.getInterfaces(); + return interfaces.length ? ' implements ' + interfaces.map(i => i.name).join(' & ') : ''; +} + +function printObject(type, options) { + return printDescription(options, type) + `type ${type.name}` + printImplementedInterfaces(type) + printFields(options, type); +} + +function printInterface(type, options) { + return printDescription(options, type) + `interface ${type.name}` + printImplementedInterfaces(type) + printFields(options, type); +} + +function printUnion(type, options) { + const types = type.getTypes(); + const possibleTypes = types.length ? ' = ' + types.join(' | ') : ''; + return printDescription(options, type) + 'union ' + type.name + possibleTypes; +} + +function printEnum(type, options) { + const values = type.getValues().map((value, i) => printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value)); + return printDescription(options, type) + `enum ${type.name}` + printBlock(values); +} + +function printInputObject(type, options) { + const fields = objectValues(type.getFields()).map((f, i) => printDescription(options, f, ' ', !i) + ' ' + printInputValue(f)); + return printDescription(options, type) + `input ${type.name}` + printBlock(fields); +} + +function printFields(options, type) { + const fields = objectValues(type.getFields()).map((f, i) => printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f)); + return printBlock(fields); +} + +function printBlock(items) { + return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : ''; +} + +function printArgs(options, args, indentation = '') { + if (args.length === 0) { + return ''; + } // If every arg does not have a description, print them on one line. + + + if (args.every(arg => !arg.description)) { + return '(' + args.map(printInputValue).join(', ') + ')'; + } + + return '(\n' + args.map((arg, i) => printDescription(options, arg, ' ' + indentation, !i) + ' ' + indentation + printInputValue(arg)).join('\n') + '\n' + indentation + ')'; +} + +function printInputValue(arg) { + const defaultAST = astFromValue(arg.defaultValue, arg.type); + let argDecl = arg.name + ': ' + String(arg.type); + + if (defaultAST) { + argDecl += ` = ${print(defaultAST)}`; + } + + return argDecl; +} + +function printDirective(directive, options) { + return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | '); +} + +function printDeprecated(fieldOrEnumVal) { + if (!fieldOrEnumVal.isDeprecated) { + return ''; + } + + const reason = fieldOrEnumVal.deprecationReason; + const reasonAST = astFromValue(reason, GraphQLString); + + if (reasonAST && reason !== DEFAULT_DEPRECATION_REASON) { + return ' @deprecated(reason: ' + print(reasonAST) + ')'; + } + + return ' @deprecated'; +} + +function printDescription(options, def, indentation = '', firstInBlock = true) { + const { + description + } = def; + + if (description == null) { + return ''; + } + + if (options?.commentDescriptions === true) { + return printDescriptionWithComments(description, indentation, firstInBlock); + } + + const preferMultipleLines = description.length > 70; + const blockString = printBlockString(description, '', preferMultipleLines); + const prefix = indentation && !firstInBlock ? '\n' + indentation : indentation; + return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n'; +} + +function printDescriptionWithComments(description, indentation, firstInBlock) { + const prefix = indentation && !firstInBlock ? '\n' : ''; + const comment = description.split('\n').map(line => indentation + (line !== '' ? '# ' + line : '#')).join('\n'); + return prefix + comment + '\n'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/6d2a5c2dec57e9c2b2e08cc931287b08f6a019dd.ts b/bundler/tests/.cache/deno/6d2a5c2dec57e9c2b2e08cc931287b08f6a019dd.ts new file mode 100644 index 00000000000..2aeb56e0002 --- /dev/null +++ b/bundler/tests/.cache/deno/6d2a5c2dec57e9c2b2e08cc931287b08f6a019dd.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isFloat.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { decimal } from '../helpers/alpha.ts'; + +type FloatOptions = { + locale?: string; + + min?: number; + max?: number; + lt?: number; + gt?: number; +}; + +export const isFloat = (str: string, options?: FloatOptions) => { + assertString(str); + options = options || {}; + const float = new RegExp( + `^(?:[-+])?(?:[0-9]+)?(?:\\${ + options.locale ? (decimal as any)[options.locale] : '.' + }[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$` + ); + + if (str === '' || str === '.' || str === '-' || str === '+') { + return false; + } + + const value = parseFloat(str.replace(',', '.')); + return ( + float.test(str) && + (!options.min || value >= options.min) && + (!options.max || value <= options?.max) && + (!options.lt || value < options?.lt) && + (!options.gt || value > options?.gt) + ); +}; + +export const decimalLocales = Object.keys(decimal); diff --git a/bundler/tests/.cache/deno/6d54a8dccf014450ddb88e89f40089e6277c422b.ts b/bundler/tests/.cache/deno/6d54a8dccf014450ddb88e89f40089e6277c422b.ts new file mode 100644 index 00000000000..79d2f313bee --- /dev/null +++ b/bundler/tests/.cache/deno/6d54a8dccf014450ddb88e89f40089e6277c422b.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std@0.80.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/6e05c0bb3b2468edcf787be0052808d9a3e880ce.ts b/bundler/tests/.cache/deno/6e05c0bb3b2468edcf787be0052808d9a3e880ce.ts new file mode 100644 index 00000000000..ec9a54b338d --- /dev/null +++ b/bundler/tests/.cache/deno/6e05c0bb3b2468edcf787be0052808d9a3e880ce.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isTransformer.js + + +export default function _isTransformer(obj) { + return obj != null && typeof obj['@@transducer/step'] === 'function'; +} diff --git a/bundler/tests/.cache/deno/6e23661937c2db7f0343b2f9e80cae4200ab05c4.ts b/bundler/tests/.cache/deno/6e23661937c2db7f0343b2f9e80cae4200ab05c4.ts new file mode 100644 index 00000000000..84bc7361422 --- /dev/null +++ b/bundler/tests/.cache/deno/6e23661937c2db7f0343b2f9e80cae4200ab05c4.ts @@ -0,0 +1,128 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/float.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { StyleVariant, Type } from "../type.ts"; +import { Any, isNegativeZero } from "../utils.ts"; + +const YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + "^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?" + + // .2e4, .2 + // special case, seems not from spec + "|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?" + + // 20:59 + "|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*" + + // .inf + "|[-+]?\\.(?:inf|Inf|INF)" + + // .nan + "|\\.(?:nan|NaN|NAN))$", +); + +function resolveYamlFloat(data: string): boolean { + if ( + !YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === "_" + ) { + return false; + } + + return true; +} + +function constructYamlFloat(data: string): number { + let value = data.replace(/_/g, "").toLowerCase(); + const sign = value[0] === "-" ? -1 : 1; + const digits: number[] = []; + + if ("+-".indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === ".inf") { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } + if (value === ".nan") { + return NaN; + } + if (value.indexOf(":") >= 0) { + value.split(":").forEach((v): void => { + digits.unshift(parseFloat(v)); + }); + + let valueNb = 0.0; + let base = 1; + + digits.forEach((d): void => { + valueNb += d * base; + base *= 60; + }); + + return sign * valueNb; + } + return sign * parseFloat(value); +} + +const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object: Any, style?: StyleVariant): Any { + if (isNaN(object)) { + switch (style) { + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + } else if (isNegativeZero(object)) { + return "-0.0"; + } + + const res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; +} + +function isFloat(object: Any): boolean { + return ( + Object.prototype.toString.call(object) === "[object Number]" && + (object % 1 !== 0 || isNegativeZero(object)) + ); +} + +export const float = new Type("tag:yaml.org,2002:float", { + construct: constructYamlFloat, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isFloat, + represent: representYamlFloat, + resolve: resolveYamlFloat, +}); diff --git a/bundler/tests/.cache/deno/6e54bde0f3ba931ef87cf182b74a92c25ead8e73.ts b/bundler/tests/.cache/deno/6e54bde0f3ba931ef87cf182b74a92c25ead8e73.ts new file mode 100644 index 00000000000..45462140991 --- /dev/null +++ b/bundler/tests/.cache/deno/6e54bde0f3ba931ef87cf182b74a92c25ead8e73.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/has.js + + +import _curry2 from './internal/_curry2.js'; +import hasPath from './hasPath.js'; + + +/** + * Returns whether or not an object has an own property with the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * const hasName = R.has('name'); + * hasName({name: 'alice'}); //=> true + * hasName({name: 'bob'}); //=> true + * hasName({}); //=> false + * + * const point = {x: 0, y: 0}; + * const pointHas = R.has(R.__, point); + * pointHas('x'); //=> true + * pointHas('y'); //=> true + * pointHas('z'); //=> false + */ +var has = _curry2(function has(prop, obj) { + return hasPath([prop], obj); +}); +export default has; diff --git a/bundler/tests/.cache/deno/6e54fc92158adec2df69b5654078decf8f67292e.ts b/bundler/tests/.cache/deno/6e54fc92158adec2df69b5654078decf8f67292e.ts new file mode 100644 index 00000000000..cab08c514d5 --- /dev/null +++ b/bundler/tests/.cache/deno/6e54fc92158adec2df69b5654078decf8f67292e.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.74.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/6ec7162085a2e78d83fd084ee73c11b6c185ac8b.ts b/bundler/tests/.cache/deno/6ec7162085a2e78d83fd084ee73c11b6c185ac8b.ts new file mode 100644 index 00000000000..bf8cba7aa0c --- /dev/null +++ b/bundler/tests/.cache/deno/6ec7162085a2e78d83fd084ee73c11b6c185ac8b.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIMEI.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +let imeiRegexWithoutHypens = /^[0-9]{15}$/; + +/** + * @ignore + */ +let imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/; + +type IMEIOptions = { + allowHyphens?: boolean; +}; + +export const isIMEI = (str: string, options?: IMEIOptions) => { + assertString(str); + options = options || {}; + + // default regex for checking imei is the one without hyphens + + let imeiRegex = imeiRegexWithoutHypens; + + if (options.allowHyphens) { + imeiRegex = imeiRegexWithHypens; + } + + if (!imeiRegex.test(str)) { + return false; + } + + str = str.replace(/-/g, ''); + + let sum = 0, + mul = 2, + l = 14; + + for (let i = 0; i < l; i++) { + const digit = str.substring(l - i - 1, l - i); + const tp = parseInt(digit, 10) * mul; + if (tp >= 10) { + sum += (tp % 10) + 1; + } else { + sum += tp; + } + if (mul === 1) { + mul += 1; + } else { + mul -= 1; + } + } + const chk = (10 - (sum % 10)) % 10; + if (chk !== parseInt(str.substring(14, 15), 10)) { + return false; + } + return true; +}; diff --git a/bundler/tests/.cache/deno/6f20bf7ec89e1f992e16cace6898baea24de84dc.ts b/bundler/tests/.cache/deno/6f20bf7ec89e1f992e16cace6898baea24de84dc.ts new file mode 100644 index 00000000000..68eb7d53c8f --- /dev/null +++ b/bundler/tests/.cache/deno/6f20bf7ec89e1f992e16cace6898baea24de84dc.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema/mod.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export { core as CORE_SCHEMA } from "./core.ts"; +export { def as DEFAULT_SCHEMA } from "./default.ts"; +export { failsafe as FAILSAFE_SCHEMA } from "./failsafe.ts"; +export { json as JSON_SCHEMA } from "./json.ts"; diff --git a/bundler/tests/.cache/deno/6f52371e4cd20c8c24840922bac8f64aa9059830.ts b/bundler/tests/.cache/deno/6f52371e4cd20c8c24840922bac8f64aa9059830.ts new file mode 100644 index 00000000000..e22f621c10a --- /dev/null +++ b/bundler/tests/.cache/deno/6f52371e4cd20c8c24840922bac8f64aa9059830.ts @@ -0,0 +1,156 @@ +// Loaded from https://deno.land/x/media_types@v2.7.1/mod.ts + + +/*! + * Ported from: https://github.com/jshttp/mime-types and licensed as: + * + * (The MIT License) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2015 Douglas Christopher Wilson + * Copyright (c) 2020 the Deno authors + * Copyright (c) 2020 the oak authors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { db } from "./db.ts"; +import { extname } from "./deps.ts"; + +const EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; +const TEXT_TYPE_REGEXP = /^text\//i; + +/** A map of extensions for a given media type */ +export const extensions = new Map(); + +/** A map of the media type for a given extension */ +export const types = new Map(); + +/** Internal function to populate the maps based on the Mime DB */ +function populateMaps( + extensions: Map, + types: Map, +): void { + const preference = ["nginx", "apache", undefined, "iana"]; + + for (const type of Object.keys(db)) { + const mime = db[type]; + const exts = mime.extensions; + + if (!exts || !exts.length) { + continue; + } + + extensions.set(type, exts); + + for (const ext of exts) { + const current = types.get(ext); + if (current) { + const from = preference.indexOf(db[current].source); + const to = preference.indexOf(mime.source); + + if ( + current !== "application/octet-stream" && + (from > to || + (from === to && current.substr(0, 12) === "application/")) + ) { + continue; + } + } + + types.set(ext, type); + } + } +} + +// Populate the maps upon module load +populateMaps(extensions, types); + +/** Given a media type return any default charset string. Returns `undefined` + * if not resolvable. + */ +export function charset(type: string): string | undefined { + const m = EXTRACT_TYPE_REGEXP.exec(type); + if (!m) { + return undefined; + } + const [match] = m; + const mime = db[match.toLowerCase()]; + + if (mime && mime.charset) { + return mime.charset; + } + + if (TEXT_TYPE_REGEXP.test(match)) { + return "UTF-8"; + } + + return undefined; +} + +/** Given an extension, lookup the appropriate media type for that extension. + * Likely you should be using `contentType()` though instead. + */ +export function lookup(path: string): string | undefined { + const extension = extname("x." + path) + .toLowerCase() + .substr(1); + + return types.get(extension); +} + +/** Given an extension or media type, return the full `Content-Type` header + * string. Returns `undefined` if not resolvable. + */ +export function contentType(str: string): string | undefined { + let mime = str.includes("/") ? str : lookup(str); + + if (!mime) { + return undefined; + } + + if (!mime.includes("charset")) { + const cs = charset(mime); + if (cs) { + mime += `; charset=${cs.toLowerCase()}`; + } + } + + return mime; +} + +/** Given a media type, return the most appropriate extension or return + * `undefined` if there is none. + */ +export function extension(type: string): string | undefined { + const match = EXTRACT_TYPE_REGEXP.exec(type); + + if (!match) { + return undefined; + } + + const exts = extensions.get(match[1].toLowerCase()); + + if (!exts || !exts.length) { + return undefined; + } + + return exts[0]; +} diff --git a/bundler/tests/.cache/deno/6facd150607eca1831a48adccd45036748db3033.ts b/bundler/tests/.cache/deno/6facd150607eca1831a48adccd45036748db3033.ts new file mode 100644 index 00000000000..ade3ff0a4af --- /dev/null +++ b/bundler/tests/.cache/deno/6facd150607eca1831a48adccd45036748db3033.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/sortBy.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Sorts the list according to the supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord b => (a -> b) -> [a] -> [a] + * @param {Function} fn + * @param {Array} list The list to sort. + * @return {Array} A new list sorted by the keys generated by `fn`. + * @example + * + * const sortByFirstItem = R.sortBy(R.prop(0)); + * const pairs = [[-1, 1], [-2, 2], [-3, 3]]; + * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]] + * + * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name'))); + * const alice = { + * name: 'ALICE', + * age: 101 + * }; + * const bob = { + * name: 'Bob', + * age: -10 + * }; + * const clara = { + * name: 'clara', + * age: 314.159 + * }; + * const people = [clara, bob, alice]; + * sortByNameCaseInsensitive(people); //=> [alice, bob, clara] + */ +var sortBy = _curry2(function sortBy(fn, list) { + return Array.prototype.slice.call(list, 0).sort(function(a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; + }); +}); +export default sortBy; diff --git a/bundler/tests/.cache/deno/6fc9b4d24c4c8665ce3fb81006ce71ecdd5700fe.ts b/bundler/tests/.cache/deno/6fc9b4d24c4c8665ce3fb81006ce71ecdd5700fe.ts new file mode 100644 index 00000000000..7a5633a518d --- /dev/null +++ b/bundler/tests/.cache/deno/6fc9b4d24c4c8665ce3fb81006ce71ecdd5700fe.ts @@ -0,0 +1,98 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/cursor.ts + + +import { Bson } from "../../deps.ts"; +import { WireProtocol } from "./protocol.ts"; +import { Document } from "../types.ts"; +import { parseNamespace } from "../utils/ns.ts"; + +export interface CommandCursorOptions { + id: bigint | number | string; + ns: string; + firstBatch: T[]; + maxTimeMS?: number; + comment?: Document; +} + +export class CommandCursor { + #id?: bigint; + #protocol: WireProtocol; + #batches: T[] = []; + #db?: string; + #collection?: string; + + #executor: () => Promise>; + #excuted: boolean = false; + + constructor( + protocol: WireProtocol, + executor: () => Promise>, + ) { + this.#protocol = protocol; + this.#executor = executor; + } + + private async execute() { + this.#excuted = true; + const options = await this.#executor(); + this.#batches = options.firstBatch; + this.#id = BigInt(options.id); + const { db, collection } = parseNamespace(options.ns); + this.#db = db; + this.#collection = collection; + } + + async next(): Promise { + if (this.#batches.length > 0) { + return this.#batches.shift(); + } + + if (this.#excuted === false) { + await this.execute(); + return this.#batches.shift(); + } + + if (this.#id === 0n) { + return undefined; + } + + const { cursor } = await this.#protocol.commandSingle(this.#db!, { + getMore: Bson.Long.fromBigInt(this.#id!), + collection: this.#collection, + }); + this.#batches = cursor.nextBatch || []; + this.#id = BigInt(cursor.id.toString()); + return this.#batches.shift(); + } + + async *[Symbol.asyncIterator]() { + while (this.#batches.length > 0 || this.#id !== 0n) { + yield await this.next(); + } + } + + async forEach(callback: (item: T, index: number) => void) { + let index = 0; + for await (const item of this) { + if (item) { + callback(item, index++); + } + } + } + + async map(callback: (item: T, index: number) => M): Promise { + let index = 0; + let result = []; + for await (const item of this) { + if (item) { + const newItem = callback(item, index++); + result.push(newItem); + } + } + return result; + } + + async toArray(): Promise { + return this.map((item) => item); + } +} diff --git a/bundler/tests/.cache/deno/6fe49a8c6f5ba42ea13308b841f4d1e4ce171f1b.ts b/bundler/tests/.cache/deno/6fe49a8c6f5ba42ea13308b841f4d1e4ce171f1b.ts new file mode 100644 index 00000000000..ac1a9b40d35 --- /dev/null +++ b/bundler/tests/.cache/deno/6fe49a8c6f5ba42ea13308b841f4d1e4ce171f1b.ts @@ -0,0 +1,289 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/buildClientSchema.js + + +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import devAssert from '../jsutils/devAssert.js'; +import keyValMap from '../jsutils/keyValMap.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import { parseValue } from '../language/parser.js'; +import { GraphQLDirective } from '../type/directives.js'; +import { specifiedScalarTypes } from '../type/scalars.js'; +import { introspectionTypes, TypeKind } from '../type/introspection.js'; +import { GraphQLSchema } from '../type/schema.js'; +import { isInputType, isOutputType, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, assertNullableType, assertObjectType, assertInterfaceType } from '../type/definition.js'; +import { valueFromAST } from './valueFromAST.js'; + +/** + * Build a GraphQLSchema for use by client tools. + * + * Given the result of a client running the introspection query, creates and + * returns a GraphQLSchema instance which can be then used with all graphql-js + * tools, but cannot be used to execute a query, as introspection does not + * represent the "resolver", "parse" or "serialize" functions or any other + * server-internal mechanisms. + * + * This function expects a complete introspection result. Don't forget to check + * the "errors" field of a server response before calling this function. + */ +export function buildClientSchema(introspection, options) { + devAssert(isObjectLike(introspection) && isObjectLike(introspection.__schema), `Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${inspect(introspection)}.`); // Get the schema from the introspection result. + + const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each. + + const typeMap = keyValMap(schemaIntrospection.types, typeIntrospection => typeIntrospection.name, typeIntrospection => buildType(typeIntrospection)); // Include standard types only if they are used. + + for (const stdType of [...specifiedScalarTypes, ...introspectionTypes]) { + if (typeMap[stdType.name]) { + typeMap[stdType.name] = stdType; + } + } // Get the root Query, Mutation, and Subscription types. + + + const queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null; + const mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null; + const subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if + // directives were not queried for. + + const directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types. + + return new GraphQLSchema({ + description: schemaIntrospection.description, + query: queryType, + mutation: mutationType, + subscription: subscriptionType, + types: objectValues(typeMap), + directives, + assumeValid: options?.assumeValid + }); // Given a type reference in introspection, return the GraphQLType instance. + // preferring cached instances before building new instances. + + function getType(typeRef) { + if (typeRef.kind === TypeKind.LIST) { + const itemRef = typeRef.ofType; + + if (!itemRef) { + throw new Error('Decorated type deeper than introspection query.'); + } + + return GraphQLList(getType(itemRef)); + } + + if (typeRef.kind === TypeKind.NON_NULL) { + const nullableRef = typeRef.ofType; + + if (!nullableRef) { + throw new Error('Decorated type deeper than introspection query.'); + } + + const nullableType = getType(nullableRef); + return GraphQLNonNull(assertNullableType(nullableType)); + } + + return getNamedType(typeRef); + } + + function getNamedType(typeRef) { + const typeName = typeRef.name; + + if (!typeName) { + throw new Error(`Unknown type reference: ${inspect(typeRef)}.`); + } + + const type = typeMap[typeName]; + + if (!type) { + throw new Error(`Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`); + } + + return type; + } + + function getObjectType(typeRef) { + return assertObjectType(getNamedType(typeRef)); + } + + function getInterfaceType(typeRef) { + return assertInterfaceType(getNamedType(typeRef)); + } // Given a type's introspection result, construct the correct + // GraphQLType instance. + + + function buildType(type) { + if (type != null && type.name != null && type.kind != null) { + switch (type.kind) { + case TypeKind.SCALAR: + return buildScalarDef(type); + + case TypeKind.OBJECT: + return buildObjectDef(type); + + case TypeKind.INTERFACE: + return buildInterfaceDef(type); + + case TypeKind.UNION: + return buildUnionDef(type); + + case TypeKind.ENUM: + return buildEnumDef(type); + + case TypeKind.INPUT_OBJECT: + return buildInputObjectDef(type); + } + } + + const typeStr = inspect(type); + throw new Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`); + } + + function buildScalarDef(scalarIntrospection) { + return new GraphQLScalarType({ + name: scalarIntrospection.name, + description: scalarIntrospection.description + }); + } + + function buildImplementationsList(implementingIntrospection) { + // TODO: Temporary workaround until GraphQL ecosystem will fully support + // 'interfaces' on interface types. + if (implementingIntrospection.interfaces === null && implementingIntrospection.kind === TypeKind.INTERFACE) { + return []; + } + + if (!implementingIntrospection.interfaces) { + const implementingIntrospectionStr = inspect(implementingIntrospection); + throw new Error(`Introspection result missing interfaces: ${implementingIntrospectionStr}.`); + } + + return implementingIntrospection.interfaces.map(getInterfaceType); + } + + function buildObjectDef(objectIntrospection) { + return new GraphQLObjectType({ + name: objectIntrospection.name, + description: objectIntrospection.description, + interfaces: () => buildImplementationsList(objectIntrospection), + fields: () => buildFieldDefMap(objectIntrospection) + }); + } + + function buildInterfaceDef(interfaceIntrospection) { + return new GraphQLInterfaceType({ + name: interfaceIntrospection.name, + description: interfaceIntrospection.description, + interfaces: () => buildImplementationsList(interfaceIntrospection), + fields: () => buildFieldDefMap(interfaceIntrospection) + }); + } + + function buildUnionDef(unionIntrospection) { + if (!unionIntrospection.possibleTypes) { + const unionIntrospectionStr = inspect(unionIntrospection); + throw new Error(`Introspection result missing possibleTypes: ${unionIntrospectionStr}.`); + } + + return new GraphQLUnionType({ + name: unionIntrospection.name, + description: unionIntrospection.description, + types: () => unionIntrospection.possibleTypes.map(getObjectType) + }); + } + + function buildEnumDef(enumIntrospection) { + if (!enumIntrospection.enumValues) { + const enumIntrospectionStr = inspect(enumIntrospection); + throw new Error(`Introspection result missing enumValues: ${enumIntrospectionStr}.`); + } + + return new GraphQLEnumType({ + name: enumIntrospection.name, + description: enumIntrospection.description, + values: keyValMap(enumIntrospection.enumValues, valueIntrospection => valueIntrospection.name, valueIntrospection => ({ + description: valueIntrospection.description, + deprecationReason: valueIntrospection.deprecationReason + })) + }); + } + + function buildInputObjectDef(inputObjectIntrospection) { + if (!inputObjectIntrospection.inputFields) { + const inputObjectIntrospectionStr = inspect(inputObjectIntrospection); + throw new Error(`Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`); + } + + return new GraphQLInputObjectType({ + name: inputObjectIntrospection.name, + description: inputObjectIntrospection.description, + fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields) + }); + } + + function buildFieldDefMap(typeIntrospection) { + if (!typeIntrospection.fields) { + throw new Error(`Introspection result missing fields: ${inspect(typeIntrospection)}.`); + } + + return keyValMap(typeIntrospection.fields, fieldIntrospection => fieldIntrospection.name, buildField); + } + + function buildField(fieldIntrospection) { + const type = getType(fieldIntrospection.type); + + if (!isOutputType(type)) { + const typeStr = inspect(type); + throw new Error(`Introspection must provide output type for fields, but received: ${typeStr}.`); + } + + if (!fieldIntrospection.args) { + const fieldIntrospectionStr = inspect(fieldIntrospection); + throw new Error(`Introspection result missing field args: ${fieldIntrospectionStr}.`); + } + + return { + description: fieldIntrospection.description, + deprecationReason: fieldIntrospection.deprecationReason, + type, + args: buildInputValueDefMap(fieldIntrospection.args) + }; + } + + function buildInputValueDefMap(inputValueIntrospections) { + return keyValMap(inputValueIntrospections, inputValue => inputValue.name, buildInputValue); + } + + function buildInputValue(inputValueIntrospection) { + const type = getType(inputValueIntrospection.type); + + if (!isInputType(type)) { + const typeStr = inspect(type); + throw new Error(`Introspection must provide input type for arguments, but received: ${typeStr}.`); + } + + const defaultValue = inputValueIntrospection.defaultValue != null ? valueFromAST(parseValue(inputValueIntrospection.defaultValue), type) : undefined; + return { + description: inputValueIntrospection.description, + type, + defaultValue + }; + } + + function buildDirective(directiveIntrospection) { + if (!directiveIntrospection.args) { + const directiveIntrospectionStr = inspect(directiveIntrospection); + throw new Error(`Introspection result missing directive args: ${directiveIntrospectionStr}.`); + } + + if (!directiveIntrospection.locations) { + const directiveIntrospectionStr = inspect(directiveIntrospection); + throw new Error(`Introspection result missing directive locations: ${directiveIntrospectionStr}.`); + } + + return new GraphQLDirective({ + name: directiveIntrospection.name, + description: directiveIntrospection.description, + isRepeatable: directiveIntrospection.isRepeatable, + locations: directiveIntrospection.locations.slice(), + args: buildInputValueDefMap(directiveIntrospection.args) + }); + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/6fe71b4957b7d780c71afb9001bfef7e59569372.ts b/bundler/tests/.cache/deno/6fe71b4957b7d780c71afb9001bfef7e59569372.ts new file mode 100644 index 00000000000..ceaba882f3a --- /dev/null +++ b/bundler/tests/.cache/deno/6fe71b4957b7d780c71afb9001bfef7e59569372.ts @@ -0,0 +1,261 @@ +// Loaded from https://deno.land/x/router@v2.0.0/mod.ts + + +export class Node { + children = new Map(); + path = ""; + func: Function | undefined; + + constructor(node?: Partial) { + if (node) { + Object.assign(this, node); + } + } + + add(path: string, func: Function): void { + let n: Node = this; + + let i = 0; + for (; i < path.length && !isWildcard(path[i]); ++i); + n = n.#merge(path.slice(0, i)); + + let j = i; + for (; i < path.length; ++i) { + if (isWildcard(path[i])) { + if (j !== i) { + // insert static route + n = n.#insert(path.slice(j, i)); + j = i; + } + + ++i; + + for (; i < path.length && path[i] !== "/"; ++i) { + if (isWildcard(path[i])) { + throw new Error( + `only one wildcard per path segment is allowed, has: "${ + path.slice( + j, + i, + ) + }" in path "${path}"`, + ); + } + } + if (path[j] === ":" && i - j === 1) { + throw new Error( + `param must be named with a non-empty name in path "${path}"`, + ); + } + // insert wildcard route + n = n.#insert(path.slice(j, i)); + j = i; + } + } + + if (j === path.length) { + n.#merge("", func); + } else { + n.#insert(path.slice(j), func); + } + } + + find( + path: string, + ): [func: Function | undefined, params: Map] { + let func: Function | undefined; + let params = new Map(); + + const stack: [node: Node, path: string, vis: boolean][] = [ + [this, path, false], + ]; + + for (let i = 0; i >= 0;) { + const [n, p, v] = stack[i]; + + let np: string | undefined; // next path + + if (v) { + --i; + // assert not "*" + if (n.path[0] === ":") { + params.delete(n.path.slice(1)); + } + continue; + } else { + // vis = true + stack[i][2] = true; + } + + if (n.path[0] === "*") { + if (n.path.length > 1) { + params.set(n.path.slice(1), p); + } + np = undefined; + } else if (n.path[0] === ":") { + const [_cp, _np] = splitFromFirstSlash(p); + params.set(n.path.slice(1), _cp); + np = _np === "" ? undefined : _np; + } else if (n.path === p) { + if (n.func === undefined) { + if (n.children.has("*")) { + np = ""; + } else { + --i; + continue; + } + } else { + np = undefined; + } + } else { + const lcp = longestCommonPrefix(n.path, p); + if (lcp !== n.path.length) { + --i; + continue; + } else { + np = p.slice(lcp); + } + } + + if (np === undefined) { + func = n.func; + break; + } + + let c = n.children.get("*"); + if (c) { + stack[++i] = [c, np, false]; + } + + if (np === "") { + continue; + } + + c = n.children.get(":"); + if (c) { + stack[++i] = [c, np, false]; + } + + c = n.children.get(np[0]); + if (c) { + stack[++i] = [c, np, false]; + } + } + + return [func, params]; + } + + #merge = (path: string, func?: Function): Node => { + let n: Node = this; + + if (n.path === "" && n.children.size === 0) { + n.path = path; + n.func = func; + + return n; + } + + if (path === "") { + if (n.func) { + throw new Error( + `a function is already registered for path "${n.path}"`, + ); + } + n.func = func; + + return n; + } + + for (;;) { + const i = longestCommonPrefix(path, n.path); + + if (i < n.path.length) { + const c = new Node({ + path: n.path.slice(i), + children: n.children, + func: n.func, + }); + + n.children = new Map([[c.path[0], c]]); + n.path = path.slice(0, i); + n.func = undefined; + } + + if (i < path.length) { + path = path.slice(i); + let c = n.children.get(path[0]); + + if (c) { + n = c; + continue; + } + + c = new Node({ path, func }); + n.children.set(path[0], c); + n = c; + } else if (func) { + if (n.func) { + throw new Error( + `a function is already registered for path "${path}"`, + ); + } + n.func = func; + } + + break; + } + + return n; + }; + + #insert = (path: string, func?: Function): Node => { + let n: Node = this; + + let c = n.children.get(path[0]); + + if (c) { + n = c.#merge(path, func); + } else { + c = new Node({ path, func }); + n.children.set(path[0], c); + n = c; + } + + return n; + }; +} + +function longestCommonPrefix(a: string, b: string): number { + let i = 0; + let len = Math.min(a.length, b.length); + for (; i < len && a[i] === b[i]; ++i); + + return i; +} + +function splitFromFirstSlash( + path: string, +): [cp: string, np: string] { + let i = 0; + for (; i < path.length && path[i] !== "/"; ++i); + return [path.slice(0, i), path.slice(i)]; +} + +function isWildcard(c: string): boolean { + assert(c.length === 1); + + return c === ":" || c === "*"; +} + +function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new AssertionError(msg); + } +} + +class AssertionError extends Error { + constructor(message: string) { + super(message); + this.name = "AssertionError"; + } +} diff --git a/bundler/tests/.cache/deno/6ff7a6b1cf0952d583431673b923b57ecb13760d.ts b/bundler/tests/.cache/deno/6ff7a6b1cf0952d583431673b923b57ecb13760d.ts new file mode 100644 index 00000000000..3858fb56705 --- /dev/null +++ b/bundler/tests/.cache/deno/6ff7a6b1cf0952d583431673b923b57ecb13760d.ts @@ -0,0 +1,517 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/OverlappingFieldsCanBeMergedRule.js + + +import find from '../../polyfills/find.js'; +import objectEntries from '../../polyfills/objectEntries.js'; +import inspect from '../../jsutils/inspect.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { print } from '../../language/printer.js'; +import { getNamedType, isNonNullType, isLeafType, isObjectType, isListType, isInterfaceType } from '../../type/definition.js'; +import { typeFromAST } from '../../utilities/typeFromAST.js'; + +function reasonMessage(reason) { + if (Array.isArray(reason)) { + return reason.map(([responseName, subReason]) => `subfields "${responseName}" conflict because ` + reasonMessage(subReason)).join(' and '); + } + + return reason; +} +/** + * Overlapping fields can be merged + * + * A selection set is only valid if all fields (including spreading any + * fragments) either correspond to distinct response names or can be merged + * without ambiguity. + */ + + +export function OverlappingFieldsCanBeMergedRule(context) { + // A memoization for when two fragments are compared "between" each other for + // conflicts. Two fragments may be compared many times, so memoizing this can + // dramatically improve the performance of this validator. + const comparedFragmentPairs = new PairSet(); // A cache for the "field map" and list of fragment names found in any given + // selection set. Selection sets may be asked for this information multiple + // times, so this improves the performance of this validator. + + const cachedFieldsAndFragmentNames = new Map(); + return { + SelectionSet(selectionSet) { + const conflicts = findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, context.getParentType(), selectionSet); + + for (const [[responseName, reason], fields1, fields2] of conflicts) { + const reasonMsg = reasonMessage(reason); + context.reportError(new GraphQLError(`Fields "${responseName}" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`, fields1.concat(fields2))); + } + } + + }; +} + +/** + * Algorithm: + * + * Conflicts occur when two fields exist in a query which will produce the same + * response name, but represent differing values, thus creating a conflict. + * The algorithm below finds all conflicts via making a series of comparisons + * between fields. In order to compare as few fields as possible, this makes + * a series of comparisons "within" sets of fields and "between" sets of fields. + * + * Given any selection set, a collection produces both a set of fields by + * also including all inline fragments, as well as a list of fragments + * referenced by fragment spreads. + * + * A) Each selection set represented in the document first compares "within" its + * collected set of fields, finding any conflicts between every pair of + * overlapping fields. + * Note: This is the *only time* that a the fields "within" a set are compared + * to each other. After this only fields "between" sets are compared. + * + * B) Also, if any fragment is referenced in a selection set, then a + * comparison is made "between" the original set of fields and the + * referenced fragment. + * + * C) Also, if multiple fragments are referenced, then comparisons + * are made "between" each referenced fragment. + * + * D) When comparing "between" a set of fields and a referenced fragment, first + * a comparison is made between each field in the original set of fields and + * each field in the the referenced set of fields. + * + * E) Also, if any fragment is referenced in the referenced selection set, + * then a comparison is made "between" the original set of fields and the + * referenced fragment (recursively referring to step D). + * + * F) When comparing "between" two fragments, first a comparison is made between + * each field in the first referenced set of fields and each field in the the + * second referenced set of fields. + * + * G) Also, any fragments referenced by the first must be compared to the + * second, and any fragments referenced by the second must be compared to the + * first (recursively referring to step F). + * + * H) When comparing two fields, if both have selection sets, then a comparison + * is made "between" both selection sets, first comparing the set of fields in + * the first selection set with the set of fields in the second. + * + * I) Also, if any fragment is referenced in either selection set, then a + * comparison is made "between" the other set of fields and the + * referenced fragment. + * + * J) Also, if two fragments are referenced in both selection sets, then a + * comparison is made "between" the two fragments. + * + */ +// Find all conflicts found "within" a selection set, including those found +// via spreading in fragments. Called when visiting each SelectionSet in the +// GraphQL Document. +function findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentType, selectionSet) { + const conflicts = []; + const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet); // (A) Find find all conflicts "within" the fields of this selection set. + // Note: this is the *only place* `collectConflictsWithin` is called. + + collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap); + + if (fragmentNames.length !== 0) { + // (B) Then collect conflicts between these fields and those represented by + // each spread fragment name found. + for (let i = 0; i < fragmentNames.length; i++) { + collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fieldMap, fragmentNames[i]); // (C) Then compare this fragment with all other fragments found in this + // selection set to collect conflicts between fragments spread together. + // This compares each item in the list of fragment names to every other + // item in that same list (except for itself). + + for (let j = i + 1; j < fragmentNames.length; j++) { + collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fragmentNames[i], fragmentNames[j]); + } + } + } + + return conflicts; +} // Collect all conflicts found between a set of fields and a fragment reference +// including via spreading in any nested fragments. + + +function collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentName) { + const fragment = context.getFragment(fragmentName); + + if (!fragment) { + return; + } + + const [fieldMap2, fragmentNames2] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment); // Do not compare a fragment's fieldMap to itself. + + if (fieldMap === fieldMap2) { + return; + } // (D) First collect any conflicts between the provided collection of fields + // and the collection of fields represented by the given fragment. + + + collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2); // (E) Then collect any conflicts between the provided collection of fields + // and any fragment names found in the given fragment. + + for (let i = 0; i < fragmentNames2.length; i++) { + collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentNames2[i]); + } +} // Collect all conflicts found between two fragments, including via spreading in +// any nested fragments. + + +function collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2) { + // No need to compare a fragment to itself. + if (fragmentName1 === fragmentName2) { + return; + } // Memoize so two fragments are not compared for conflicts more than once. + + + if (comparedFragmentPairs.has(fragmentName1, fragmentName2, areMutuallyExclusive)) { + return; + } + + comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive); + const fragment1 = context.getFragment(fragmentName1); + const fragment2 = context.getFragment(fragmentName2); + + if (!fragment1 || !fragment2) { + return; + } + + const [fieldMap1, fragmentNames1] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment1); + const [fieldMap2, fragmentNames2] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2); // (F) First, collect all conflicts between these two collections of fields + // (not including any nested fragments). + + collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (G) Then collect conflicts between the first fragment and any nested + // fragments spread in the second fragment. + + for (let j = 0; j < fragmentNames2.length; j++) { + collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentNames2[j]); + } // (G) Then collect conflicts between the second fragment and any nested + // fragments spread in the first fragment. + + + for (let i = 0; i < fragmentNames1.length; i++) { + collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[i], fragmentName2); + } +} // Find all conflicts found between two selection sets, including those found +// via spreading in fragments. Called when determining if conflicts exist +// between the sub-fields of two overlapping fields. + + +function findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, parentType1, selectionSet1, parentType2, selectionSet2) { + const conflicts = []; + const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType1, selectionSet1); + const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2); // (H) First, collect all conflicts between these two collections of field. + + collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (I) Then collect conflicts between the first collection of fields and + // those referenced by each fragment name associated with the second. + + if (fragmentNames2.length !== 0) { + for (let j = 0; j < fragmentNames2.length; j++) { + collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fragmentNames2[j]); + } + } // (I) Then collect conflicts between the second collection of fields and + // those referenced by each fragment name associated with the first. + + + if (fragmentNames1.length !== 0) { + for (let i = 0; i < fragmentNames1.length; i++) { + collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap2, fragmentNames1[i]); + } + } // (J) Also collect conflicts between any fragment names by the first and + // fragment names by the second. This compares each item in the first set of + // names to each item in the second set of names. + + + for (let i = 0; i < fragmentNames1.length; i++) { + for (let j = 0; j < fragmentNames2.length; j++) { + collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[i], fragmentNames2[j]); + } + } + + return conflicts; +} // Collect all Conflicts "within" one collection of fields. + + +function collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap) { + // A field map is a keyed collection, where each key represents a response + // name and the value at that key is a list of all fields which provide that + // response name. For every response name, if there are multiple fields, they + // must be compared to find a potential conflict. + for (const [responseName, fields] of objectEntries(fieldMap)) { + // This compares every field in the list to every other field in this list + // (except to itself). If the list only has one item, nothing needs to + // be compared. + if (fields.length > 1) { + for (let i = 0; i < fields.length; i++) { + for (let j = i + 1; j < fields.length; j++) { + const conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive + responseName, fields[i], fields[j]); + + if (conflict) { + conflicts.push(conflict); + } + } + } + } + } +} // Collect all Conflicts between two collections of fields. This is similar to, +// but different from the `collectConflictsWithin` function above. This check +// assumes that `collectConflictsWithin` has already been called on each +// provided collection of fields. This is true because this validator traverses +// each individual selection set. + + +function collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, fieldMap1, fieldMap2) { + // A field map is a keyed collection, where each key represents a response + // name and the value at that key is a list of all fields which provide that + // response name. For any response name which appears in both provided field + // maps, each field from the first field map must be compared to every field + // in the second field map to find potential conflicts. + for (const responseName of Object.keys(fieldMap1)) { + const fields2 = fieldMap2[responseName]; + + if (fields2) { + const fields1 = fieldMap1[responseName]; + + for (let i = 0; i < fields1.length; i++) { + for (let j = 0; j < fields2.length; j++) { + const conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, fields1[i], fields2[j]); + + if (conflict) { + conflicts.push(conflict); + } + } + } + } + } +} // Determines if there is a conflict between two particular fields, including +// comparing their sub-fields. + + +function findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2) { + const [parentType1, node1, def1] = field1; + const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same + // time, due to the parent types, then it is safe to permit them to diverge + // in aliased field or arguments used as they will not present any ambiguity + // by differing. + // It is known that two parent types could never overlap if they are + // different Object types. Interface or Union types might overlap - if not + // in the current state of the schema, then perhaps in some future version, + // thus may not safely diverge. + + const areMutuallyExclusive = parentFieldsAreMutuallyExclusive || parentType1 !== parentType2 && isObjectType(parentType1) && isObjectType(parentType2); + + if (!areMutuallyExclusive) { + // Two aliases must refer to the same field. + const name1 = node1.name.value; + const name2 = node2.name.value; + + if (name1 !== name2) { + return [[responseName, `"${name1}" and "${name2}" are different fields`], [node1], [node2]]; + } + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + + const args1 = node1.arguments ?? []; + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + const args2 = node2.arguments ?? []; // Two field calls must have the same arguments. + + if (!sameArguments(args1, args2)) { + return [[responseName, 'they have differing arguments'], [node1], [node2]]; + } + } // The return type for each field. + + + const type1 = def1?.type; + const type2 = def2?.type; + + if (type1 && type2 && doTypesConflict(type1, type2)) { + return [[responseName, `they return conflicting types "${inspect(type1)}" and "${inspect(type2)}"`], [node1], [node2]]; + } // Collect and compare sub-fields. Use the same "visited fragment names" list + // for both collections so fields in a fragment reference are never + // compared to themselves. + + + const selectionSet1 = node1.selectionSet; + const selectionSet2 = node2.selectionSet; + + if (selectionSet1 && selectionSet2) { + const conflicts = findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, getNamedType(type1), selectionSet1, getNamedType(type2), selectionSet2); + return subfieldConflicts(conflicts, responseName, node1, node2); + } +} + +function sameArguments(arguments1, arguments2) { + if (arguments1.length !== arguments2.length) { + return false; + } + + return arguments1.every(argument1 => { + const argument2 = find(arguments2, argument => argument.name.value === argument1.name.value); + + if (!argument2) { + return false; + } + + return sameValue(argument1.value, argument2.value); + }); +} + +function sameValue(value1, value2) { + return print(value1) === print(value2); +} // Two types conflict if both types could not apply to a value simultaneously. +// Composite types are ignored as their individual field types will be compared +// later recursively. However List and Non-Null types must match. + + +function doTypesConflict(type1, type2) { + if (isListType(type1)) { + return isListType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true; + } + + if (isListType(type2)) { + return true; + } + + if (isNonNullType(type1)) { + return isNonNullType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true; + } + + if (isNonNullType(type2)) { + return true; + } + + if (isLeafType(type1) || isLeafType(type2)) { + return type1 !== type2; + } + + return false; +} // Given a selection set, return the collection of fields (a mapping of response +// name to field nodes and definitions) as well as a list of fragment names +// referenced via fragment spreads. + + +function getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet) { + let cached = cachedFieldsAndFragmentNames.get(selectionSet); + + if (!cached) { + const nodeAndDefs = Object.create(null); + const fragmentNames = Object.create(null); + + _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames); + + cached = [nodeAndDefs, Object.keys(fragmentNames)]; + cachedFieldsAndFragmentNames.set(selectionSet, cached); + } + + return cached; +} // Given a reference to a fragment, return the represented collection of fields +// as well as a list of nested fragment names referenced via fragment spreads. + + +function getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment) { + // Short-circuit building a type from the node if possible. + const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet); + + if (cached) { + return cached; + } + + const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition); + return getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragmentType, fragment.selectionSet); +} + +function _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames) { + for (const selection of selectionSet.selections) { + switch (selection.kind) { + case Kind.FIELD: + { + const fieldName = selection.name.value; + let fieldDef; + + if (isObjectType(parentType) || isInterfaceType(parentType)) { + fieldDef = parentType.getFields()[fieldName]; + } + + const responseName = selection.alias ? selection.alias.value : fieldName; + + if (!nodeAndDefs[responseName]) { + nodeAndDefs[responseName] = []; + } + + nodeAndDefs[responseName].push([parentType, selection, fieldDef]); + break; + } + + case Kind.FRAGMENT_SPREAD: + fragmentNames[selection.name.value] = true; + break; + + case Kind.INLINE_FRAGMENT: + { + const typeCondition = selection.typeCondition; + const inlineFragmentType = typeCondition ? typeFromAST(context.getSchema(), typeCondition) : parentType; + + _collectFieldsAndFragmentNames(context, inlineFragmentType, selection.selectionSet, nodeAndDefs, fragmentNames); + + break; + } + } + } +} // Given a series of Conflicts which occurred between two sub-fields, generate +// a single Conflict. + + +function subfieldConflicts(conflicts, responseName, node1, node2) { + if (conflicts.length > 0) { + return [[responseName, conflicts.map(([reason]) => reason)], conflicts.reduce((allFields, [, fields1]) => allFields.concat(fields1), [node1]), conflicts.reduce((allFields, [,, fields2]) => allFields.concat(fields2), [node2])]; + } +} +/** + * A way to keep track of pairs of things when the ordering of the pair does + * not matter. We do this by maintaining a sort of double adjacency sets. + */ + + +class PairSet { + constructor() { + this._data = Object.create(null); + } + + has(a, b, areMutuallyExclusive) { + const first = this._data[a]; + const result = first && first[b]; + + if (result === undefined) { + return false; + } // areMutuallyExclusive being false is a superset of being true, + // hence if we want to know if this PairSet "has" these two with no + // exclusivity, we have to ensure it was added as such. + + + if (areMutuallyExclusive === false) { + return result === false; + } + + return true; + } + + add(a, b, areMutuallyExclusive) { + _pairSetAdd(this._data, a, b, areMutuallyExclusive); + + _pairSetAdd(this._data, b, a, areMutuallyExclusive); + } + +} + +function _pairSetAdd(data, a, b, areMutuallyExclusive) { + let map = data[a]; + + if (!map) { + map = Object.create(null); + data[a] = map; + } + + map[b] = areMutuallyExclusive; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/7074e0bfb8e3d093d069ed64c5cb921f7630795b.ts b/bundler/tests/.cache/deno/7074e0bfb8e3d093d069ed64c5cb921f7630795b.ts new file mode 100644 index 00000000000..85fc5567b51 --- /dev/null +++ b/bundler/tests/.cache/deno/7074e0bfb8e3d093d069ed64c5cb921f7630795b.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/evolve.js + + +import _curry2 from './internal/_curry2.js'; +import _isArray from './internal/_isArray.js'; +import _isObject from './internal/_isObject.js'; + + +/** + * Creates a new object by recursively evolving a shallow copy of `object`, + * according to the `transformation` functions. All non-primitive properties + * are copied by reference. + * + * A `transformation` function will not be invoked if its corresponding key + * does not exist in the evolved object. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {k: (v -> v)} -> {k: v} -> {k: v} + * @param {Object} transformations The object specifying transformation functions to apply + * to the object. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123}; + * const transformations = { + * firstName: R.trim, + * lastName: R.trim, // Will not get invoked. + * data: {elapsed: R.add(1), remaining: R.add(-1)} + * }; + * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} + */ +var evolve = _curry2(function evolve(transformations, object) { + if (!_isObject(object) && !_isArray(object)) { + return object; + } + var result = object instanceof Array ? [] : {}; + var transformation, key, type; + for (key in object) { + transformation = transformations[key]; + type = typeof transformation; + result[key] = type === 'function' + ? transformation(object[key]) + : transformation && type === 'object' + ? evolve(transformation, object[key]) + : object[key]; + } + return result; +}); +export default evolve; diff --git a/bundler/tests/.cache/deno/70ad2c2d2b8dae1f982011d943a56ace1e0d6c39.ts b/bundler/tests/.cache/deno/70ad2c2d2b8dae1f982011d943a56ace1e0d6c39.ts new file mode 100644 index 00000000000..1eb88af26b2 --- /dev/null +++ b/bundler/tests/.cache/deno/70ad2c2d2b8dae1f982011d943a56ace1e0d6c39.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.85.0/path/separator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/70c4525fcfc01109036e1bbf23191a115d667845.ts b/bundler/tests/.cache/deno/70c4525fcfc01109036e1bbf23191a115d667845.ts new file mode 100644 index 00000000000..23613c8802f --- /dev/null +++ b/bundler/tests/.cache/deno/70c4525fcfc01109036e1bbf23191a115d667845.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/adjust.js + + +import _concat from './internal/_concat.js'; +import _curry3 from './internal/_curry3.js'; + + +/** + * Applies a function to the value at the given index of an array, returning a + * new copy of the array with the element at the given index replaced with the + * result of the function application. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> (a -> a) -> [a] -> [a] + * @param {Number} idx The index. + * @param {Function} fn The function to apply. + * @param {Array|Arguments} list An array-like object whose value + * at the supplied index will be replaced. + * @return {Array} A copy of the supplied array-like object with + * the element at index `idx` replaced with the value + * returned by applying `fn` to the existing element. + * @see R.update + * @example + * + * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd'] + * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D'] + * @symb R.adjust(-1, f, [a, b]) = [a, f(b)] + * @symb R.adjust(0, f, [a, b]) = [f(a), b] + */ +var adjust = _curry3(function adjust(idx, fn, list) { + if (idx >= list.length || idx < -list.length) { + return list; + } + var start = idx < 0 ? list.length : 0; + var _idx = start + idx; + var _list = _concat(list); + _list[_idx] = fn(list[_idx]); + return _list; +}); +export default adjust; diff --git a/bundler/tests/.cache/deno/70cbddbeab5b1df6db66d5c56272506dcb3dd18a.ts b/bundler/tests/.cache/deno/70cbddbeab5b1df6db66d5c56272506dcb3dd18a.ts new file mode 100644 index 00000000000..14280e784bf --- /dev/null +++ b/bundler/tests/.cache/deno/70cbddbeab5b1df6db66d5c56272506dcb3dd18a.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/build/sqlite.js + + +import env from "./vfs.js"; + +const wasm = + "AGFzbQEAAAABuQM6YAN/f38AYAF/AX9gAX8AYAJ/fwF/YAN/f38Bf2AEf39/fwF/YAR/f39+AX9gAn9+AX9gAABgBX9/f39/AX9gBX9/f39+AGAGf39/f39/AX9gAn9/AGAEf39/fwBgAAF8YAF8AGAAAX9gA39/fAF/YAJ/fwF8YAF+AX9gAX4BfmABfwF+YAF/AXxgA39/fgF/YAF8AX5gBX9/f39/AGAEf39+fwBgAn98AGACf34AYAV/f35/fwBgB39/f39/f38Bf2ACf38BfmALf39/f39/f39/f38Bf2AFf39+f38Bf2ADf35/AX9gB39/f39/f38AYAt/f39/f39/f39/fwBgCX9/f39/f39/fwF/YAZ/f39/f38AYAh/f39/f39/fwF/YAh/f39/f39/fwBgCX9/f39/f39/fwBgDX9/f39/f39/f39/f38AYAZ/f39+f38Bf2ADf35+AX9gBX9+f39/AX9gBH9+f38Bf2AHf35+f39/fwF/YAR/fn9/AGADf39/AX5gAX4AYAJ+fwF/YAZ+f39/f38AYAR+fn5+AX9gAn5+AX9gAn5+AXxgBX9+fn5+AGAEf35+fwACmQEKA2Vudgdqc19vcGVuAAMDZW52CWpzX2RlbGV0ZQACA2Vudglqc19leGlzdHMAAQNlbnYJanNfYWNjZXNzAAEDZW52B2pzX3RpbWUADgNlbnYIanNfY2xvc2UAAgNlbnYHanNfcmVhZAAFA2Vudghqc193cml0ZQAFA2Vudgtqc190cnVuY2F0ZQAMA2Vudgdqc19zaXplAAEDxAjCCAEPEAEQEAEBEREEBQQDAwEBAxISAwMDAwMDDg4OCQQFBQMABAwEAwMQAQYGBwMDAwMDBAEBAAMMDAwMDAwMDAwAARADDBMCAwIUFAEBBwAAFQcWAQAADAMMBwIDAxcBAQMDBQAMAwMEDQwECQMBAgMEBQUCAQQCAQQDAwMBBQICBAMBAwICAgEBAQMCAwEDAgMEBQUCAgQEBQEBAAIEAQwCAgwCDAIBAQIBAgEBAQIBAQQDAxYYFQMBAQEZGhsCHB0DDAwCAgEBAAEeAwMBAwMDEh8DAwMDBAMDCQsDERcDCQMEAQwFBQIFAAQBCQQMAQQEAQkACQEMDAEMCQEEBQEJAQEJHgwDBAMBBQIADAMEBAEDBRUBAQEDAgwEICAE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AA0AIABBtNuCgAAQr4KAgAAhAQtBACABNgKw24KAACABCzIBAX9BAEEAKAK024KAABChgoCAACIANgKw24KAAAJAIAANAEEAQQA2ArTbgoAACyAACyMBAX8CQEEAKAK024KAACIADQBBgIiAgAAPCyAAEIOCgIAAC1MBAn8jgICAgABBEGsiASSAgICAAEEAQQAoArTbgoAAIABBfyABQQxqQQAQjYKAgAAiADYCsNuCgAAgASgCDCECIAFBEGokgICAgABBACACIAAbCxcAQQAgABCwgYCAACIANgKw24KAACAAC0cBAX4CQAJAIAKZRAAAAAAAAOBDY0UNACACsCEDDAELQoCAgICAgICAgH8hAwtBACAAIAEgAxDogYCAACIANgKw24KAACAACxsAQQAgACABIAIQ54GAgAAiADYCsNuCgAAgAAsfAEEAIAAgASACQX9BfxDqgYCAACIANgKw24KAACAACx8AQQAgACABIAIgA0F/EOSBgIAAIgA2ArDbgoAAIAALmQEEAX4CfwF+AX9CACEDAkAgAi0AACIERQ0AIAJBAWohBUIBIQYDQCAGQgp+IQYgBS0AACEHIAVBAWohBSAHDQALIARFDQAgAkEBaiEFQgAhAwNAIAStQjiGQjiHQlB8IAZCCn8iBn4gA3whAyAFLQAAIQQgBUEBaiEFIAQNAAsLQQAgACABIAMQ6IGAgAAiBTYCsNuCgAAgBQsZAEEAIAAgARDpgYCAACIANgKw24KAACAACxMAIAAgARDrgYCAACIAQX8gABsLFwBBACAAENCBgIAAIgA2ArDbgoAAIAALCgAgABDXgYCAAAtFAQJ/AkACQCAAIAEQ34GAgAAiAkEBRw0AQQYhAyAAIAEQ3IGAgABC/////////w98Qv7///////8fVg0BCyACIQMLIAMLDQAgACABENyBgIAAuQsMACAAIAEQ24GAgAALDAAgACABEN2BgIAACwwAIAAgARDYgYCAAAsMACAAIAEQ2oGAgAALDAAgACABEOCBgIAACwwAIAAgARDjgYCAAAsMACAAIAEQ4oGAgAALEgBBACgCtNuCgAAQnoKAgAC5CxIAQQAoArTbgoAAEJ+CgIAAtwsSAEEAKAK024KAABCggoCAALcLLgAgAkGYiICAADYCACACIAEgAUUQgICAgAA2AgQCQCAERQ0AIAQgAzYCAAtBAAsMACABEIGAgIAAQQALKwACQAJAIAINACABEIKAgIAAIQIMAQsgARCDgICAACECCyADIAI2AgBBAAs8AQF/I4CAgIAAQRBrIgQkgICAgAAgBCABNgIAIAIgA0HkiICAACAEEOyAgIAAGiAEQRBqJICAgIAAQQALBABBAAsiACABIAJB54iAgABBABDsgICAABogASACakF/akEAOgAACwQAQQALAgALDgAgAiABEKSIgIAAQQALBABBAAstACABEISAgIAARAAAAAAAQI9Ao0QAAAAAABj1QKNEAAAAwMWeQkGgOQMAQQALEABBsL2CgABBARDRgICAAAsPACAAKAIEEIWAgIAAQQALPAACQCAAKAIEIAEgA6cgAhCGgICAACIAIAJODQAgASAAakEAIAIgAGsQtIiAgAAaC0GKBEEAIAAgAkgbCx0AQQBBigYgACgCBCABIAOnIAIQh4CAgAAgAkYbCxIAIAAoAgQgAacQiICAgABBAAsEAEEACxUAIAEgACgCBBCJgICAAKw3AwBBAAsEAEEACwQAQQALCwAgAUEANgIAQQALBABBDAsEAEEACwQAQQALogEBAX8jgICAgABBgAJrIgMkgICAgAACQEEAKAL0v4KAAEUNACADIAI2AgwgA0H8AWpBADsBACADQgA3AvQBIANB0gE2AvABIANBADYC6AEgAyADQRBqNgLsASADQegBaiABIAIQ2ICAgABBACgC9L+CgAAhAkEAKAL4v4KAACAAIANB6AFqEOiAgIAAIAIRgICAgAAACyADQYACaiSAgICAAAvmAQEFf0EAIQJBACEDAkAgAEGkAmooAgAiBEUNAEEAIQMDQCADQQFqIQMgBCgCACIEDQALCwJAIABBqAJqKAIAIgRFDQBBACECA0AgAkEBaiECIAQoAgAiBA0ACwtBACEEQQAhBQJAIABBrAJqKAIAIgZFDQBBACEFA0AgBUEBaiEFIAYoAgAiBg0ACwsCQCAAQbACaigCACIGRQ0AQQAhBANAIARBAWohBCAGKAIAIgYNAAsLIAUgA2ohAwJAIAFFDQAgASAAQZQCaigCACADazYCAAsgAEGUAmooAgAgAyACaiAEamsLdQEBfwJAIAFFDQAgACABKAIcEMWAgIAAAkAgASgCACICRQ0AIAAgAhDEgICAAAsCQCABKAIEIgJF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IAMQxICAgAALIABBKGoiACABSQ0ACwsLYAEBfwJAIAFFDQACQCACQQFIDQAgAkEUbCABakFsaiECA0ACQCACQQFqLAAAIgNBeUoNACAAIAMgAkEQaigCABCDg4CAAAsgAkFsaiICIAFPDQALCyAAIAEQxICAgAALC0oBAX9BACEBAkAQzICAgAANAEEAKAKI3IKAACEBIABFDQAgAUUNAANAIAAgASgCEBC1iICAAEUNASABKAIMIgENAAtBACEBCyABC6EHAQd/I4CAgIAAQSBrIgAkgICAgABBACEBAkBBACgC2L+CgAANAEEAQQE2AuC/goAAAkACQEEAKALkv4KAAA0AAkBBACgCqL6CgAANACAAQeyxgoAANgIQQQQgAEEQahDNgICAABoLQQBCADcDkNyCgABBAEIANwOo3IKAAEEAQgA3A6DcgoAAQQBCADcDmNyCgABBAEEINgKQ3IKAAAJAAkBBACgCwL+CgABFDQBBACgCxL+CgABBgARIDQBBACgCyL+CgABBAEoNAQtBAEIANwPAv4KAAAtBACgCxL6CgABBACgCvL6CgAARgYCAgAAAIgENAQtBAEEBNgLkv4KAAAJAQQAoAvC/goAADQBBAEEINgLwv4KAAAtBAEEAKALsv4KAAEEBaiICNgLsv4KAAEEAIQECQEEAKALcv4KAAEEAKALYv4KAAHINAEEAQQE2Aty/goAAQbjegoAAQQBB3AAQtIiAgAAaQYDTgoAAQQMQzoCAgABBgNSCgABBDxDOgICAAEHg2IKAAEEIEM6AgIAAQaDAgoAAQTwQzoCAgAACQAJAQQAoAui/goAADQACQEEAKAL0voKAACIBDQAgAEHYsoKAADYCAEESIAAQzYCAgAAaQQAoAvS+goAAIQELQQAoAvC+goAAIAERgYCAgAAAIgENAQtBAEEBNgLov4KAAEEHIQEQzICAgAANAEIKEM+AgIAAIgJFDQAgAhDQgICAABCygICAACIBDQBBACEBAkBBACgCyN+CgABFDQBBAEEAKALIv4KAAEEAQQAoAsC/goAAIgIbIgM2AvDfgoAAQQAgAzYC2N+CgABBAEEAKALEv4KAAEF4cUEAIAMbQQAgAhsiBDYC1N+CgABBCiEFAkAgA0HaAEoNACADQQptQQFqIQULQQAhBkEAIAI2AuDfgoAAQQAgBTYC3N+CgABBAEEANgL034KAAEEAQQA2AuzfgoAAAkACQCADDQAgAiEFDAELA0AgAiAGNgIAIAIhBiACIARqIgUhAiADQX9qIgMNAAtBACAFIARrNgLs34KAAAtBACAFNgLk34KAAAtBAEEBNgLYv4KAAAtBAEEANgLcv4KAAEEAKALsv4KAACECC0EAIAJBf2o2Auy/goAAIAJBAUoNAUEAQQA2AvC/goAADAELQQBCADcDqNyCgABBAEIANwOg3IKAAEEAQgA3A5jcgoAAQQBCADcDkNyCgAALIABBIGokgICAgAAgAQv/BwECfyOAgICAAEEwayICJICAgIAAQQAhAwJAAkBBACgC2L+CgABFDQAgAkGUmoCAADYCKCACQcTdCTYCJCACQay6goAANgIgQRUhA0EVQcabgIAAIAJBIGoQv4CAgAAMAQsgAiABNgIsAkAgAEF8aiIAQRdLDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAA4YAAEPBA8CDw8PCBAPCQoGBwsPDA8FDQ4DAAsgAiACKAIsIgBBBGo2AixBACEDQQAgACgCACIAKQIANwOovoKAAEEAIABBGGopAgA3A8C+goAAQQAgAEEQaikCADcDuL6CgABBACAAQQhqKQIANwOwvoKAAAwPC0EAIQMCQEEAKAKovoKAAA0AIAJB7LGCgAA2AgBBBCACEM2AgIAAGgsgAiACKAIsIgBBBGo2AiwgACgCACIAQQApA6i+goAANwIAIABBGGpBACkDwL6CgAA3AgAgAEEQakEAKQO4voKAADcCACAAQQhqQQApA7C+goAANwIADA4LIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2Aoi+goAADA0LIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA6AJC+goAADAwLIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2AsC/goAAQQAgACgCBDYCxL+CgABBACAAKAIINgLIv4KAACACIABBDGo2AiwMCwsgAiACKAIsIgBBBGo2AiwgACgCAEGgATYCAAwKCyACIAIoAiwiAEEEajYCLEHsvoKAACAAKAIAQTQQsoiAgAAaDAkLQQAhAwJAQQAoAvS+goAADQAgAkHYsoKAADYCEEESIAJBEGoQzYCAgAAaCyACIAIoAiwiAEEEajYCLCAAKAIAQey+goAAQTQQsoiAgAAaDAgLIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2Apy+goAAQQAgACgCBDYCoL6CgAAgAiAAQQhqNgIsDAcLIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2AvS/goAAQQAgACgCBDYC+L+CgAAgAiAAQQhqNgIsDAYLIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA6AI6+goAADAULIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA6AI++goAADAQLQQAhA0EAQgA3A7C/goAAQQBCADcDuL+CgAAgAiACKAIsQQdqQXhxQRBqNgIsDAMLIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2AtS/goAADAILIAIgAigCLCIAQQRqNgIsQQAhA0EAIAAoAgA2AqS+goAADAELQQEhAwsgAkEwaiSAgICAACADC6YBAQJ/AkAgAUEBSA0AA0BBACECAkAgAEEgaigCACIDRQ0AIAMQuIiAgABB/////wNxIQILAkACQCACIAMsAABqQRdvIgIgAxCsgoCAACIDRQ0AIABBDGogAygCDDYCACADQQxqIQMMAQsgAEEMakEANgIAIABBJGogAkECdEG43oKAAGoiAygCADYCAAsgAyAANgIAIABBKGohACABQX9qIgENAAsLC+oCAgJ/An5BACEBAkACQCAAQn98Qv79//8HVg0AAkBBACgCiL6CgABFDQAgAKciAUEAKAK4voKAABGBgICAAAAhAgJAQQAoAvTbgoAAIAFPDQBBACABNgL024KAAAsCQEEAKQOY3IKAACIAQgFTDQBBACEBAkAgACACrCIDfUEANQK424KAACIAVQ0AQQBBATYCqNyCgABBACkDoNyCgAAiBFANASAEIAN9IABVDQEMAwtBAEEANgKo3IKAAAtBACEBIAJBACgCqL6CgAARgYCAgAAAIgJFDQFBACACQQAoArS+goAAEYGAgIAAAEEAKAK424KAAGoiATYCuNuCgAACQCABQQAoAuDbgoAATQ0AQQAgATYC4NuCgAALQQBBACgC3NuCgABBAWoiATYC3NuCgAAgAUEAKAKE3IKAAE0NAkEAIAE2AoTcgoAADAILIACnQQAoAqi+goAAEYGAgIAAACEBCyABDwsgAgt+AQF/AkAgAEUNAAJAQQAo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IAAoAgAiAkUNACACIAMgBBDngICAACECDAELEMyAgIAADQEgAyAEENeAgIAAIQILIAJFDQACQCAALQAVQQRxDQAgACgCECIDRQ0AIAIgACgCBCADELKIgIAAGgsgACACNgIEIAAoAgAiA0UNASADQbwCaigCACACTQ0BQYABIQYgA0G0AmooAgAgAk0NAiADQbgCaigCACACSw0BIANBjgJqLwEAIQYMAgsgABDkgICAACAAQQc6ABRBACECIAAoAgxFDQIgABDkgICAAEEADwsgAkEAKAK0voKAABGBgICAAAAhBgsgACAGNgIIIAAgAC0AFUEEcjoAFSABIQILIAILbwACQCABDQAgACACEOOAgIAADwsCQAJAIABBvAJqKAIAIAFNDQACQCAAQbQCaigCACABSw0AIAJCgQFaDQEMAgsgAEG4AmooAgAgAUsNACAAQY4CajMBACACWg0BCyAAIAEgAhDGgoCAACEBCyABCz4BAX8CQCAAKAIEIgFFDQAgASAAKAIQakEAOgAAIAAoAgxFDQAgAC0AFUEEcQ0AIAAQ6YCAgAAPCyAAKAIEC4kBAgF+AX8gACgCEEEBaq0hAQJAAkAgACgCACICRQ0AIAIgARDjgICAACECDAELIAEQz4CAgAAhAgsCQAJAIAJFDQAgAiAAKAIEIAAoAhBBAWoQsoiAgAAaIAAgAC0AFUEEcjoAFQwBCyAAQQc6ABQgACgCDEUNACAAEOSAgIAACyAAIAI2AgQgAgt9AQJ/I4CAgIAAQfAAayICJICAgIAAQQAhAwJAEMyAgIAADQAgAkEAOwEcIAJBADYCGCACQsaAgICAwLLNOzcDECACQQA2AgggAiACQSBqNgIMIAJBCGogACABENiAgIAAIAJBCGoQ6ICAgAAhAwsgAkHwAGokgICAgAAgAwtEAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDAkAQzICAgAANACACIAE2AgwgACABEOqAgIAAIQMLIAJBEGokgICAgAAgAwt1AQF/I4CAgIAAQSBrIgQkgICAgAAgBCADNgIEAkAgAEEBSA0AIARBHGpBADsBACAEQgA3AhQgBCAANgIQIARBADYCCCAEIAE2AgwgBEEIaiACIAMQ2ICAgAAgASAEKAIYakEAOgAACyAEQSBqJICAgIAAIAELMwEBfyOAgICAAEEQayID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gAAMAwsgASARKAIQKAIANgLQASABQfABakHMjoCAACABQdABahDtgICAAAwCCyARKAIQIgINAgsgEkEAOgAACyASIQILIAFB8AFqEOiAgIAAGgJAAkAgAiAKKAKIAUYNACAKQYQBakEANgIAIAwgAkF/QQFBABD1gICAABoMAQsCQAJAIAINAEEAIQIMAQsgAhC4iICAAEH/////A3EhAgsgCkGCAWpBAToAACAKQYQBaiACNgIACwJAIAAvAIkBQQxxIgJBBEcNAAJAAkAgCkG4AWooAgBBBEgNACAKQbABaiAKQbQBaigCACICNgIAIApBqAFqIhMgEy8BAEEtcTsBAAwBC0EBIQIgCkGgAWpBBEEAELuBgIAADQYgCkGwAWooAgAhAgsgCkGsAWpBAjYCACAKQagBakGCBDsBACABIBEvAQI2AgBBAyACQfSegIAAIAEQ7ICAgAAaIApB0AFqQQE7AQAgCkGqAWpBAToAACAALwCJAUEMcSECCyAAQQA2AiggACACQQxzOwGEASAAIAAoAlhBKGo2AnhB5AAhAgwECyAIIAgoArgBQQFqNgK4ASAAENOBgIAAIQIgCCAIKAK4AUF/ajYCuAEgAkHlAEcNAwwCC0EBIQIMAgsgAEEANgIoC0HlACECIAgtAE9FDQAgAEEANgIoCyAIIAI2AkAgACgCACETAkACQAJAAkAgACgCKCINQYoYRg0AIBMtAFFB/wFxRQ0BCyATELKBgIAADAELIBMoAkQgDXFBB0cNAQsgAEEHNgIoCyACQQFyQeUARg0BCyAALACIAUF/Sg0AIAAQt4GAgAAhAgsgCCgCRCACcSICQRFHDQQCQCAHQTJHDQBBESECDAULIAAoAiQhEgJAAkAgACgCACITIAAoArABQX8gAC0AiAEgACABQewBakEAENSBgIAAIgJFDQACQCACQQdHDQAgExDPgYCAAAsgBCgC+AFBARDlgICAACENAkAgACgCfCITRQ0AIAQgExDEgICAAAsgBC0AUQ0DIAAgBCANENWBgIAANgJ8AkAgAkGKGEYNACAELQBRQf8BcUUNAgsgBBCygYCAAAwECyABQfABaiABKALsASICQdABELKIgIAAGiACIABB0AEQsoiAgAAhESAAIAFB8AFqQdABELKIgIAAIQggESgCBCECIBEgCCgCBDYCBCARKAIIIRMgESAIKAIINgIIIBEoArABIQ0gESAIKAKwATYCsAEgCCARKALEATYCxAEgCCARLQCIAToAiAEgCCACNgIEIAggEzYCCCAIIA02ArABIAYgEUGsAWooAgA2AgAgBSARKQKUATcCACAFQRBqIBFBpAFqKQIANwIAIAVBCGogEUGcAWopAgA3AgAgCCAIKAKoAUEBajYCqAECQCARLgEQQQFIDQBBACECQQAhEANAIBEoAmQhDQJAAkAgCCgCZCACaiITQQlqLQAAQSRxDQAgE0EYaigCAEUNAQsgExC4gYCAAAsgEyANIAJqIg1BKBCyiICAABogDUEYakEANgIAIA1BCGpBATsBACACQShqIQIgEEEBaiIQIBEuARBIDQALCyAHQQFqIQcgEUEANgIoIBEQsYGAgAAaIAgQtYGAgAAaIBJBf0wNASAIIAgvAIkBQRByOwCJAQwBCwsgBCgCRCACcSECDAILQQchAiAAQQc2AiggAEEANgJ8DAILQQchAgsgACACNgIoCyABQcADaiSAgICAACACC0QBAX8CQAJAAkAgAA0AQRVBzJ6AgABBABC/gICAAAwBC0EAIQEgACgCAA0BQRVBpJ2AgABBABC/gICAAAtBASEBCyABC1kBAn8jgICAgABBEGsiAySAgICAAAJAIAAoAnwiBEUNACAAKAIAIAQQxICAgAALIAAoAgAhBCADIAI2AgwgACAEIAEgAhD0gICAADYCfCADQRBqJICAgIAAC5WLAggYfwF+B38CfgJ8AX8BfgN/I4CAgIAAQeAEayIBJICAgIAAQQchAiAAKAJoIQMgACgCACEEAkACQAJAAkACQCAAKAIoQQdHDQBBACEFQQAhBiADIQcMAQsgACgCWCEIIAQtAE4hCUEAIQUgAEEANgJ4IABCADcDOCAEQZADakEANgIAAkAgBCgCgAJFDQBBACEGIAMhBwwCCyAAQdgAaiEKIARBzAJqIQsgAEH8AGohDCAAQeAAaiENIABBzAFqIQ4gAyAAKAIkQRRsaiEHIAFBoANqQQRyIQ8gAUG4BGohECABQZAEakEUaiERQQAhBUEAIRJBACEGQQAhEwNAIBMhFCAFQQFqIQUCQAJAIActAAAiE0GqAUsNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AgMACwJAAkAgGUIAUw0AICFCAVMNAUL///////////8AICF9IBlZDQEMCAsgIUJ/VQ0AQoGAgICAgICAgH8gIX0gGUIBfFUNBwsgISAZfCEZDAQLAkAgGUKAgICAgICAgIB/Ug0AICFCf1UNBiAhQoCAgICAgICAgH+FIRkMBAsCQAJAIBlCAFUNACAhQgFTDQFC////////////ACAhfUIAIBl9WQ0BDAcLICFCf1UNAEKBgICAgICAgIB/ICF9QgEgGX1VDQYLICEgGX0hGQwDCwJAAkAgGUIBUw0AICFC////////////ACAZgFUNBiAhQoCAgICAgICAgH8gGX9ZDQEMBgsgGUJ/VQ0AAkAgIUIBUw0AQoCAgICAgICAgH8gIX8gGVcNAQwGCyAhQn9VDQAgGUKAgICAgICAgIB/UQ0FICFCgICAgICAgICAf1ENBUL///////////8AQgAgGX1/QgAgIX1TDQULICEgGX4hGQwCCyAZUA0EAkAgGUJ/Ug0AICFCgICAgICAgICAf1ENBAsgISAZfyEZDAELAkAgGUIBfCIiQgFWDQACQCAipw4CAAUAC0IBIRkLICEgGYEhGQsgGiAZNwMAIAggGEEobGoiEyATLwEIQcD8AHFBBHI7AQgMoAELIBZBCGovAQAgE0EIai8BAHJBAXENAQsgExDcgICAACEjIBYQ3ICAgAAhJAJAAkAgBy0AAEGXf2oiF0EDSw0AAkACQAJAAkAgFw4EAAECAwALICMgJKAhIwwECyAkICOhISMMAwsgIyAkoiEjDAILICNEAAAAAAAAAABhDQIgJCAjoyEjDAELIBMQ2oCAgAAhGSAWENqAgIAAISECQCAZQgF8IiJCAVYNAAJAICKnDgIAAwALQgEhGQsgISAZgbkhIwsCQCAjvSIZQv////////8Hg1ANACAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRDQELIBogIzkDACAIIBhBKGxqIhMgEy8BCEHA/ABxQQhyOwEIDJ4BCwJAIAggGEEobGoiE0EJai0AAEEkcUUNACAaEMiBgIAADJ4BCyATQQhqQQE7AQAMnQELIAcoAgQiE0UNowECQCAIIBNBKGxqIhNBCWotAABBJHFFDQAgE0IAEMmBgIAADJ0BCyATQQhqQQQ7AQAgE0IANwMADJwBCyAIIAcoAgwi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DQAgAkUNASAEIAIQxICAgAAMAQsgACABKAI4IgRBAnRqIAI2AgAgACAEQQFqIgRBAnRqQQA2AgAgASAENgI4IAEgADYCPAsgA0EQaiSAgICAAAv3CAELfyOAgICAAEHQAGsiBSSAgICAACABKAI4IQYgASgCPCEHIAVBADYCPAJAAkAgACgC3AIiCEUNAAJAA0AgCCgCBCABRg0BIAgoAggiCEUNAgwACwsgBSABKAIANgIwIAQgAEHkxYCAACAFQTBqEPSBgIAANgIAQQYhCAwBC0EHIQggACABKAIAENWBgIAAIglFDQACQAJAQhwQz4CAgAAiCg0AIAAQz4GAgAAMAQsgCkEQakIANwAAIApCADcACCAKQRhqQQA2AAAgCiACNgIEIAogADYCACAKQQE6ABEgACgCECELAkACQCABKAJIIgwNAEHA+0IhDQwBCyALQQxqIQhBfyENA0AgDUEBaiENIAgoAgAhDiAIQRBqIQggDiAMRw0ACwsgASgCPCALIA1BBHRqKAIANgIEIAVBADYCTCAFIAE2AkQgACgC3AIhCCAAIAVBwABqNgLcAiAFIAg2AkggBSAKNgJAIAAgAigCDCAGIAcgCkEIaiINIAVBPGogAxGLgICAAAAhCCAAIAUoAkg2AtwCAkAgCEUNAAJAIAhBB0cNACAAEM+BgIAACwJAAkAgBSgCPCINDQAgBSAJNgIAIAQgAEGOxoCAACAFEPSBgIAANgIADAELIAUgDTYCECAEIABBzI6AgAAgBUEQahD0gYCAADYCACAFKAI8ENCAgIAACyAAIAoQxICAgAAMAQsCQCANKAIAIg1FDQAgDUIANwIAQQAhCCANQQhqQQA2AgAgCkEBNgIMIAooAgggAigCADYCACACIAIoAghBAWo2AggCQCAFKAJMDQAgBSABKAIANgIgIAQgAEGsxoCAACAFQSBqEPSBgIAANgIAIAoQo4KAgABBASEIDAILIAogASgCQDYCGCABIAo2AkAgAS4BKiIGQQFIDQEgASgCBCEHQQAhD0EAIQMDQEHEi4CAACECAkAgByADQRRsIgtqIggtABBBBHFFDQAgCCgCACIIIAgQuIiAgABqQQFqIQILAkACQAJAIAIQuIiAgABB/////wNxIgRFDQAgBEEBaiEMQQAhDiACIQ0DQCACIA5qIQpBACEIAkADQCAIQdrGgIAAai0AAEHgi4CAAGotAAAgDSAIai0AAEHgi4CAAGotAABHDQEgCEEBaiIIQQZHDQALAkAgDkUNACAKQX9qLQAAQSBHDQELIApBBmotAAAiCEEgckEgRg0DCyAMQX9qIQwgDUEBaiENIA5BAWoiDiAERw0ACwsgASABKAIkIA9B//8DcXI2AiQMAQsCQCAOQQdBBiAIGyIIaiAESw0AIAwgCGshDCANIAhqIQJBACEIA0AgDSAIaiACIAhqLQAAOgAAIAwgCEEBaiIIRw0ACwsCQCAORQ0AIAotAABB/wFxDQAgCkF/akEAOgAACyABKAIEIgcgC2oiCCAILwEQQQJyOwEQIAEvASohBkGACCEPCyADQQFqIgMgBkEQdEEQdUgNAAsLQQAhCAsgACAJEMSAgIAACyAFQdAAaiSAgICAACAIC9UBAgF+BH8CQEIzIAA0AnAiAUIBhiABUBsiASAAKAIMIgIoAgAiA0GAAWo0AgBXDQAgAxDPgYCAAEEHDwsCQCADIAAoAmggAUIUfhDngICAACIDRQ0AAkACQCACKAIAIgRFDQAgBEG8AmooAgAgA00NAEGAASEFIARBtAJqKAIAIANNDQEgBEG4AmooAgAgA0sNACAEQY4Cai8BACEFDAELIANBACgCtL6CgAARgYCAgAAAIQULIAIgBTYCMCAAIAM2AmggACAFQRRuNgJwC0EAQQcgAxsLiwMBB38gASgCACECIAAoAgwiAygCQCEEIAAgAC8AiQFB//kDcUGAAnI7AIkBIAAoAmxBFGwgACgCaGpBXGohBQNAAkAgBUEQaiIGLQAAIgdBPksNAAJAIAdBCksNAAJAAkACQAJAAkACQAJAIAcOCwEBAAMEAwcCAgYFAQsgBUEYaigCAEUNACAAIAAvAIkBQf/9A3E7AIkBCyAAIAAvAIkBQYAEcjsAiQEMBgsgACAALwCJAUH/+QNxQYAEcjsAiQEMBQsgBUERakH7AToAACAFQSBqQZ6AgIAANgIADAQLIAVBEWpB+wE6AAAgBUEgakGfgICAADYCAAwDCyAFQRhqKAIAIgcgAiAHIAJKGyECDAILIAUoAgAiByACIAcgAkobIQILIAVBGGoiBygCACIIQX9KDQAgByAEIAhBf3NBAnRqKAIANgIACyAFQWxqIQUgBiAAKAJoRw0ACwJAIAMoAkAiBUUNACAAKAIAIAUQxICAgAALIANBADYCOCADQQA2AkAgASACNgIAC6wBAQJ/IAAoAgAhAgJAIAAvAYQBIgNFDQAgACgCdCADQQVsEMmAgIAAIAAoAnQiA0UNACACIAMQxICAgAALIAAgATsBhAEgACACIAFByAFsrRDjgICAACIDNgJ0AkAgA0UNACABQQFIDQAgA0EYaiEAIAFBBWxBAWohAQNAIABBADYCACAAQXBqQQE7AQAgAEEIaiACNgIAIABBKGohACABQX9qIgFBAUoNAAsLC6cCAQJ/I4CAgIAAQRBrIgEkgICAgABBwrWAgAAhAgJAIABFDQACQCAAEIyCgIAADQAgAUGUmoCAADYCCCABQejtCTYCBCABQay6goAANgIAQRVBxpuAgAAgARC/gICAAEGSt4KAACECDAELIAAtAFENAAJAAkACQCAAKAJADQBBACEADAELIAAoAvgBQQEQ5YCAgAAiAg0CIAAoAkAiAEGcf2oiAkEBTQ0BQa24goAAIQIgAEGEBEYNAkGfuIKAACECIABB/wFxIgBBHEsNAgtBn7iCgAAhAkH7//v1ASAAdkEBcUUNASAAQQJ0QdCzgoAAaigCACECDAELAkACQCACDgIAAQALQcO4goAAIQIMAQtB2biCgAAhAgsgAUEQaiSAgICAACACC2YBA38gAUEEaiECIAEoAgBBAWohAwNAAkAgAigCACIERQ0AIAAgBBDGgICAAAsCQCACQQRqKAIAIgRFDQAgACAEEMSAgIAACyACQRBqIQIgA0F/aiIDQQFKDQALIAAgARDEgICAAAvkBwEJfyOAgICAAEEwayIFJICAgIAAIAAoAnQhBiAAKAIUIQcgABD8goCAAAJAAkAgAEEoaigCACIIIAYoAjhrIAcoAiQgAEEwai8BACIJa00NACAFQZSagIAANgIIIAVBopoENgIEIAVB6JuAgAA2AgBBCyEBQQtBxpuAgAAgBRC/gICAAAwBCwJAAkAgCSABTQ0AIAkgAWsgAiACIAFqIAlLGyEJIAggAWohCgJAAkACQCAERQ0AIAYoAkgQgYGAgAAiAQ0CIAogAyAJELKIgIAAGgwBCyADIAogCRCyiICAABoLQQAhAQsgAiAJayECIAMgCWohA0EAIQkMAQsgASAJayEJQQAhAQsCQCABDQAgAkUNACAHKAIkIQYg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LQAAIgNFDQEgA0EKRg0BIARBAWohBAwACwsgAUGzATYCACAEDwsgAUHqADYCAAtBASEECyAEDwsgAEEBaiEDQQAhAANAIAMgAGohBCAAQQFqIgIhACAELQAAQeCOgIAAai0AAEEBcQ0ACyABQbMBNgIAIAIPCwJAAkACQCAALQABIgMNAEEBIQQMAQtBASEEA0ACQCADQf8BcSACRw0AIAAgBEEBaiIEai0AACACRw0DCyAAIARBAWoiBGotAAAiAw0ACwsgAUG0ATYCACAEDwsCQCACQSdHDQAgAUHzADYCACAEDwsgAUE7NgIAIAQLlAEBA38jgICAgABBEGsiASSAgICAACAAKAIAIQIDQCACIAIgAUEMahCSgoCAAGohAiABKAIMIgNBswFGDQALAkACQCADQY1/akECSQ0AIANB335qQQJJDQAgA0E7Rg0AIANBAXRB4OSAgABqLwEAQTtHDQELQTshAyABQTs2AgwLIAAgAjYCACABQRBqJICAgIAAIAML+rMBAw9/AX4HfyOAgICAAEHgBGsiBCSAgICAACAAKAIAIQUCQAJAIAFBgLmBgABqLAAAIgYNACAFIAAoArgJSQ0AIAAQlYKAgABBACEBDAELAkAgAUHEAksNAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQ7FAgABAvoB+QH4AfgB+AH3AfcB9gH1AfQB8wHyAfEB8AHvAfEB7gHtAfEB7AHrAeoB6QHoAecB5gHlAeQB4wHiAeEB4AHfAd4B3QHcAdsB2gHZAdgB1wHWAfEB7wHVAdQB0wHSAdEB0AHPAc4BzQHMAcsBygHJAfEByAHHAeoBxgHkAcUBxAHDAcIB8QHBAcABwQHJAb8BvgG9AcgB8QG8AbsBugG5AbgBtwG2AbUBtAG1AbMBsgGxAbABrwGuAfEBrQGsAasBqgGpAeoBqAGnAaYBpQGkAaMBogGhAaABqQGfAZ4BnQGcAZsBmgGZAZgBlwGWAZUBlAGgAZMBkgGRAZABrQGPAY4BjQGMAYsBigGJAYgBigGtAY8BlAGVAZQBhwGGAYUBhAGUAZUBgwGCAYEBgAF/fn18e3p5yQG+AZABeHd2dXR0c3JxcXBvbm1sa2ppaGdmZWVlZWVlZWRjYmFgX15dXVxbyAFaW8gBWVhXVlVUU1KVAZQB/gGUAa0BUVCtAU9OTUytAU9LSvEByAFJSEeVAZQBRkVEQ0KpAakBQUA/Pj08PDs6OTg3NjU0MzIxMC8uLU0sKyopOjkoJyYlJCMiISAfHh0cHBwbGxoZ/gEYFxYVFBP+ARIREA/4Af4BDv4BDg0ODAsKCgkIB/4BBgUEAwALIANBAToAvwEM/QELIANBAjoAvwEM/AELIAMtABIN+wECQAJAIAMoAgAiBy0AUQ0AIAMoAiRFDQELIAMoAgwN/AEgA0EBNgIMDPwBCyADEKiEgIAAIghFDfoBIAhBxABBAEEAQQAQ9oGAgAAaIActAFEN+QECQCADKAJUIgkNACADKAJERQ36AQsgCCgCbCEKQYzggoAAIQICQCAIKAIALQBRDQAgCCgCaCECCyACIAo2AgggBygCFEEBSA34AUEMIQpBASECA0ACQEEBIAJBf2oiC3QiDCAJcUUNACAIIAgoAowBIAxyNgKMASAHKAIQIApqKAIAIgkoAgQhDSAIQQIgCyADKAJQIAxxQQBHIAkoAgAQ9oGAgAAhDAJAIAgoAgAtAFENACAIKAJoIAxBFGxqIgwgDTYCECAMQf0BOgABCyAHLQClAQ0AIAgoAmwiDEEBSA0AIAxBFGwgCCgCaGpBbmpBATsBAAsgAiAHKAIUTg35ASAKQRBqIQogAkEBaiECIAMoAlQhCQwACwsgBUFUaiAFQXhqKAIANgIADPoBCwJAAkAgAygCACICRQ0AIAJC5AAQ44CAgAAhAgwBC0LkABDPgICAACECCwJAIAINACAFQXhqQQA2AgAM+gELQQAhByAFQXhqIgggAkEAQeQAELSIgIAANgIAAkAgBSgCBCICRQ0AIAMoAgAgBUEIaigCACIDrUIBfBDjgICAACIKRQ0AIAogAiADELKIgIAAIgIgA2pBADoAACACIQcLIAgoAgAgBzYCAAz5AQsgBUFgaiAFQXhqKAIANgIADPgBCwJAAkAgAygCACICRQ0AIAJC5AAQ44CAgAAhAgwBC0LkABDPgICAACECCwJAAkAgAkUNACACQQBB5AAQtIiAgAAiA0GjAToAECADIAUoAgQ2AigMAQsgBSgCBCIHRQ0AIAMoAgAgBxDGgICAAAsgBSACNgIEDPcBCyAFKAIEIAVBeGoiAygCADYCKCADIAUoAgQ2AgAM9gELIAVBeGogBSgCBDYCAAz1AQsgBSAFLQACOgAEDPQBCyAFQXhqIAVBdmotAAA6AAAM8wELIAVBeGogBS0ABDoAAAzyAQsgBUEQakEAOgAADPEBCyAFQXxqIAVBeGoiAygCADYCACADIAUvAQI2AgAM8AELIAVBfGpBADYCACAFQXhqIAVBdmovAQA2AgAM7wELIAVBSGoiAiADIAIoAgAgBUFgaigCACAFQWRqKAIAIAVBeGooAgAgBUF8aigCACAFLQAEEKmEgIAANgIADO4BCyAFQWxqIgIgAyACKAIAIAVBeGooAgAgBUF8aigCAEHVAEEAIAUtAAQQqYSAgAA2AgAM7QELIAVBEGogA0EAQdoAQQBB1QBBAEEAEKmEgIAANgIADOwBCyAFQXhqIgIgAyAFKAIEQQBBACACEKqEgIAANgIADOsBCyAFQVRqIgIgAyAFKAIEQQAgBUF4aigCACACEKqEgIAANgIADOoBCyAFQXhqKAIAIQcCQAJAIAUoAgQiAkUNACACIAc2AgwgAkEANgIIDAELIAdFDQAgAygCACAHEISCgIAACyAFQWBqIAI2AgAM6QELIAVBSGoiAiADIAUoAgQgBUFsaigCACAFQXhqKAIAIAIQqoSAgAA2AgAM6AELIAVBVGogAyAFKAIEIAVBbGooAgAgBUF4aigCAEEAEKqEgIAANgIADOcBCwJAIAVBeGoiBygCACICRQ0AQQAhAgJAIAVBVGooAgAiCEUNACADKAIAIAVBWGooAgAiA61CAXwQ44CAgAAiCkUNACAKIAggAxCyiICAACICIANqQQA6AAAgAiECCyAHKAIAIAI2AgAgBygCACECCyAFQVRqIAI2AgAM5gELIAMgBSgCBCAFQWxqIgIoAgAQq4SAgAAgBSgCBCACKAIANgIkIAIgBSgCBDYCAAzlAQsgBUGwf2oiAiADIAIoAgAgBUFIaiAFQVRqKAIAIAVBeGooAgAQrISAgAA2AgAM5AELIAVBSGoiAiADQQAgAiAFQVRqKAIAIAVBeGooAgAQrISAgAA2AgAM4wELIAUoAgQiAkUN4gEgAyACNgKEAiACIAMoAoACNgIEIAMgAjYCgAIM4gELIAUoAgQhAgJAAkAgAygC7AEiBw0AIAMgAjYC7AEgBUEIaigCACECDAELIAIgBUEIaigCAGogB2shAgsgA0HwAWogAjYCAAzhAQsgAxCthICAACADQgA3AuwBDOABCyADIAVBYGogBUFsakEAQQBBASAFQVRqKAIAEK6EgIAAIAMoAtwBIgxFDd8BIAMgDCADKAIAIgIgBUEEahCvhICAABD+gYCAACADIAxBABD+gYCAACADIAwgAiAMKAIAENWBgIAAEP6BgIAAIANBsAFqIAUoAgQgBUEIaigCAGogAygCrAFrNgIAIAwoAjwiCUUN3wECQAJAIAwoAkgiCg0AQcD7QiEHDAELIAIoAhBBDGohAkF/IQcDQCAHQQFqIQcgAigCACEIIAJBEGohAiAIIApHDQALCyADQR0gDCgCACAJKAIAIAMoAgAoAhAgB0EEdGooAgAQsISAgAAaDN8BCyADIAVBBGoQsYSAgAAM3gELIANBABCxhICAAAzdAQsgAygCACEMAkAgA0EAIAVBSGooAgAiCUEIahCyhICAACIKRQ0AIAMgChCzhICAAA0AAkBBw5+CgABB7cmBgABBACAKKAIMGyAKKAI4GyICRQ0AIAQgCigCADYCtAQgBCACNgKwBCADQdGfgoAAIARBsARqEPOBgIAADAELIAwoAhAhDQJAAkAgCigCSCILDQBBwPtCIQcMAQsgDUEMaiECQX8hBwNAIAdBAWohByACKAIAIQggAkEQaiECIAggC0cNAAsLIANBGiANIAdBBHRqKAIAIg4gCigCAEEAELCEgIAADQAgDCAFQWxqEK+EgIAAIg9FDQACQAJAIAouASoiEEEBTg0AQQAhEQwBCyAKKAIEIRJBACERA0AgEiARQRRsaigCACECIA8hCAJAA0ACQAJAIAItAAAiCyAILQAAIg1HDQAgCw0BDAULIAtB4IuAgABqLQAAIA1B4IuAgABqLQAARw0CCyAIQQFqIQggAkEBaiECDAALCyARQQFqIhEgEEgNAAsLAkACQAJAAkAgESAQRw0AIAQgDzYC0AMgA0G3joCAACAEQdADahDzgYCAAAwBCyADKAJsIgIgAyACG0EBOgAVIAwgBUEEaiIIEK+EgIAAIgINAQtBACECDAELIAgoAgAtAAAhCCAEQaAEaiAKKAIAIgs2AgAgBEGcBGogB0EBRiINNgIAIARBgARqQRRqIAI2AgAgBEGABGpBEGogETYCACAEQZgEaiAIQeCOgIAAai0AAEGAAXEiCDYCACAEIAs2AowEIAQgDjYCiAQgBEHEtICAADYChAQgBCAONgKABCADQfycgoAAIARBgARqELSEgIAAIAooAgAhCiAEQeADakEUaiAINgIAIARB4ANqQRBqIAI2AgAgBCARNgLsAyAEIAo2AugDIAQgDjYC5AMgBEHEtICAADYC4AMgA0HLnoKAACAEQeADahC0hICAACADIAcQtYSAgAAgAyAOIA0QtoSAgAALIAwgCRCShICAACAMIA8QxICAgAAgAkUN3QEgDCACEMSAgIAADN0BCyAMIAkQkoSAgAAM3AELIAMgAy0AGEEBajoAGCADKAIAIgJBjAJqQQA7AQAgAiACKAKIAkEBajYCiAIgBSgCBCEHAkAgAi0AUQ0AIANBACAHQQhqELKEgIAAIghFDQACQCAIKAI4RQ0AIANBqZyCgABBABDzgYCAAAwBCwJAIAgoAgxFDQAgA0HLnIKAAEEAEPOBgIAADAELIAMgCBCzhICAAA0AIAMoAmwiCiADIAobQQE6ABUCQAJAIAgoAkgiCw0AQcD7QiEMDAELIAIoAhBBDGohCkF/IQwDQCAMQQFqIQwgCigCACEJIApBEGohCiAJIAtHDQALCwJAAkAgAkUNACACQtAAEOOAgIAAIQoMAQtC0AAQz4CAgAAhCgsgCkUNACAKQQBB0AAQtIiAgAAiCUEBNgIgIAMgCTYC3AEgCSAILgEqIgM7ASogA0F/akEIbUGgAWxBoAFqIgqtIRMCQAJAIAJFDQAgAiATEOOAgIAAIQMMAQsgExDPgICAACEDCwJAIANFDQAgA0EAIAoQtIiAgAAaCyAJIAM2AgQgBCAIKAIANgLAAyAJIAJB6ZyCgAAgBEHAA2oQ9IGAgAAiAzYCACADRQ0AIAkoAgQiA0UNACADIAgoAgQgCS4BKkEUbBCyiICAABoCQCAJLgEqQQFIDQBBACEDQQAhCwNAIAkoAgQgA2oiCiACIAooAgAQ1YGAgAA2AgAgCkEEakIANwIAIANBFGohAyALQQFqIgsgCS4BKkgNAAsLIAlBATYCICAJIAgoAjQ2AjQgCSACKAIQIAxBBHRqKAIMNgJICyACIAcQkoSAgAAM2wELIAVBfGoiDCADKAK0ASAFQXhqIgkoAgBrIANBuAFqKAIAajYCACADKAIkDdoBIAMoAgAiCy0AUQ3aASALKAIQIQ4CQAJAIAMoAtwBIg0oAkgiCg0AQcD7QiEHDAELIA5BDGohAkF/IQcDQCAHQQFqIQcgAigCACEIIAJBEGohAiAIIApHDQALCyANKAIEIhEgDS4BKkF/aiIPQRRsaiIIKAIEIQogA0EaIA4gB0EEdGooAgAiAiALIA0oAgBBEGoiDiACEPqBgIAAKAIAQQAQsISAgAAN2gECQCAILwEQIghBAXFFDQAgA0HImYKAAEEAEPOBgIAADNsBCwJAIA0oAghFDQAgA0HomYKAAEEAEPOBgIAADNsBCwJAAkACQCAIQeAAcQ0AAkACQCAKDQBBACEIDAELQQAgCiAKKAIMLQAAQfcARhshCAsCQCALQSFqLQAAQcAAcUUNACAIRQ0AIA0oAhBFDQAgA0GDmoKAAEEAEPOBgIAADN4BCwJAIAgNACARIA9BFGxqLQAMQf8BcUUNACADQb6agoAAQQAQ84GAgAAM3gELIAhFDQIgBEEANgLABCALIAhBAUHBACAEQcAEahC3hICAAA3dASAEKALABCIIDQEgA0HzmoKAAEEAEPOBgIAADN0BCyAIQcAAcUUNASADQaGbgoAAQQAQ84GAgAAM3AELIAgQr4GAgAALAkAgCSgCACIKRQ0AIAsgDCgCACIIrUIBfBDjgICAACIJRQ0AIAkgCiAIELKIgIAAIgkgCGpBADoAACALKAIYIhEhCAJAIAwoAgBBf2oiCkEBSA0AIAkgCmohCAJAA0ACQCAILQAAIgpBO0YNACAKQeCOgIAAai0AAEEBcUUNAgsgCEEAOgAAIAhBf2oiCCAJSw0ACwsgCygCGCEICyALIAhBAnI2AhggDSgCNCEIIARBtANqIA42AgAgBEGwA2ogCEEBajYCACAEIAk2AqwDIAQgCDYCqAMgBEHEtICAADYCpAMgBCACNgKgAyADQbybgoAAIARBoANqELSEgIAAIAsgCRDEgICAACALIBE2AhgLAkAgAxCohICAACICRQ0AAkACQCADLQATIggNACADIAMoAixBAWoiCDYCLAwBCyADIAhBf2oiCDoAEyADIAhB/wFxQQJ0akGMAWooAgAhCAsgAkHdACAHIAhBAhD2gYCAABogAiACKAKMAUEBIAd0cjYCjAEgAkHSACAIQX5BABD2gYCAABogAkEwIAggAigCbEECakEAEPaBgIAAGiACQd4AIAdBAkEDEPaBgIAAGiAIRQ0AIAMtABMiAkEHSw0AIAMgAkEBajoAEyADIAJBAnRqQYwBaiAINgIACyADIAcQtYSAgAAM2gELIAVBYGooAgAhCSADKAIAIgooAhghCwJAAkAgCi0AUQ0AIANBACAJQQhqELKEgIAAIg1FDQAgBUEEaiEOAkACQCANKAJIIgwNAEHA+0IhBwwBCyADKAIAKAIQQQxqIQJBfyEHA0AgB0EBaiEHIAIoAgAhCCACQRBqIQIgCCAMRw0ACwsgCiAKKAIYQQJyNgIYIAooAhAgB0EEdGooAgAhCCAKIA4Qr4SAgAAiAkUNAAJAAkACQCAKIAIgCBD6gYCAAA0AIAogAiAIEO6DgIAARQ0BCyAEIAI2ApADIANBlJCCgAAgBEGQA2oQ84GAgAAMAQsgAyANELOEgIAADQAgAyACQfq2gIAAIAIQuISAgAANACANKAIAIQwCQCANKAIMRQ0AIAQgDDYCgAMgA0HPkIKAACAEQYADahDzgYCAAAwBCyADQRogCCAMQQAQsISAgAANACADIA0QuYSAgAANAAJAAkAgDSgCOA0AQQAhEgwBC0EAIQ4CQCANKAJAIgxFDQADQAJAIAwoAgAgCkcNACAMIQ4MAgsgDCgCGCIMDQALQQAhDgsgDkEAIA4oAggoAgAoAkwbIRILIAMQqISAgAAiEEUNACADKAJsIgwgAyAMG0EBOgAVQQAhEQJAIA0oAgAiD0F/Rg0AIA8tAAAiDkH/AXFFDQBBACERIA8hDANAAkACQCAOQf8BcUHAAU8NACAMQQFqIgwtAAAhDgwBCwNAIAxBAWoiDC0AACIOQcABcUGAAUYNAAsLIBFBAWohESAOQf8BcUUNASAMQX9HDQALCyAEQeACakEYaiAPNgIAIARB4AJqQRRqIAdBAUYiDDYCACAEQeACakEQaiACNgIAIAQgDzYC7AIgBCAINgLoAiAEQcS0gIAANgLkAiAEIAg2AuACIANB6pCCgAAgBEHgAmoQtISAgAAgBEHAAmpBGGogDzYCACAEQcACakEUaiARNgIAIARBwAJqQRBqIAI2AgAgBCACNgLMAiAEIAI2AsgCIARBxLSAgAA2AsQCIAQgCDYCwAIgA0GXkoKAACAEQcACahC0hICAAAJAIApBscqBgAAgCBD6gYCAAEUNACAEIA0oAgA2ArgCIAQgAjYCtAIgBCAINgKwAiADQb2UgoAAIARBsAJqELSEgIAACwJAIAdBAUYNACAEQaQCaiACNgIAIARBoAJqIAg2AgAgBCAPNgKcAiAEIAI2ApgCIAQgDzYClAIgBCAINgKQAiADQfeUgoAAIARBkAJqELSEgIAACwJAIBJFDQAgAyADKAIsQQFqIg02AiwgECAQQfMAQQAgDUEAEPaBgIAAIAJBABC6hICAACAQIBBBpwEgDUEAQQAQ9oGAgAAgEkF0ELqEgIAACyADIAcQtYSAgAAgAyAIIAwQtoSAgAALIAogCRCShICAACAKIAIQxICAgAAMAQsgCiAJEJKEgIAACyAKIAs2AhgM2QELIAMgBUF4aiAFQQRqELuEgIAADNgBCyADQQBBABC7hICAAAzXAQsgAyAFQXhqIAVBBGoQvISAgAAM1gELIANBAEEAELyEgIAADNUBCyADQRlB2IyCgAAgBSgCBCICQQBBACACEL2EgIAADNQBCyADQRhBxImCgAAgBUFgaigCACICIAIgBUF4aigCACAFKAIEEL2EgIAADNMBCyAFKAIEIQ8CQCADKAIAIgktAFENACAFQXhqKAIAIRQgAxD5gYCAAA0AIA9BDGooAgAhDgJAAkAgCSgCFCIRQQFIDQAgD0EQaigCACESQQAhEEEAIQwCQANAIAwgDEECSXMhCyAJKAIQIQ0CQAJAIA5FDQAgDSALQQR0aigCACECIA4hBwNAAkACQCACLQAAIgggBy0AACIKRw0AIAgNAQwDCyAIQeCLgIAAai0AACAKQeCLgIAAai0AAEcNAwsgB0EBaiEHIAJBAWohAgwACwsgDSALQQR0aigCDEEoaiASQQAQ+4GAgAAoAggiEA0CIAkoAhQhEQsgDEEBaiIMIBFIDQALCyAQDQELAkACQCAUDQAgBEEANgKEAiAEIA82AoACIANBrYmCgAAgBEGAAmoQ84GAgAAMAQsgAyAOEL6EgIAACyADQQE6ABEMAQsgAyAQEL+EgIAACyAJIA8QkoSAgAAM0gELIAVBAzYCBAzRAQsgBUEBNgIEDNABCyAFQUhqIAMoAgBBxwAgBUF4akEBEMCEgIAAIgM2AgAgA0UNzwEgAyAFQWBqKAIAOgABDM8BCyAFQWBqIANBxwBBAEEAEMGEgIAAIgM2AgAgA0UNzgEgA0EEOgABDM4BCyAFQWxqIggoAgAhCiAFQXhqKAIAIQcgBSgCBCEMAkACQCADKAIAIgJFDQAgAkIsEOOAgIAAIQMMAQtCLBDPgICAACEDCwJAAkAgAw0AQQAhAyAHRQ0BIAIgB0EBEJCEgIAADAELIANBAmpBAEEqELSIgIAAGiADIAc2AgggA0GIFzsBACADIAIgCiAMEMKEgIAANgIgCyAIIAM2AgAMzQELIAVBeGooAgAhAiADKAIAIQoCQCADQf4AIAVBYGogBUFIaiIIKAIAIAUoAgQQw4SAgAAiB0UNAAJAAkAgAy0AwAFBAU0NACACIQNBACECDAELAkAgAg0AQQAhAwwBCyAKIAJBAUEAEMSEgIAAIQMLIAdBCzoAASAHIAM2AhALAkAgAkUNACAKIAIQxoCAgAALIAggBzYCAAzMAQsgBUF4aigCACEIIAVBvH9qKAIAIQsgBUFsaigCACEHIAVBYGooAgAhDCADKAIAIQoCQAJAIANB/QAgBUFUaiAFQbB/aiIJKAIAIAUoAgQQw4SAgAAiAkUNAAJAAkAgAy0AwAFBAU0NACAHIQ1BACEHDAELIAogB0EBEMWEgIAAIQ0LIAIgCDYCHCACIAw2AhggAiANNgIIIAIgCzoAASAIRQ0BIAMgCCgCABDGhICAABoMAQsgCiAMEMeAgIAAIAogCBClhICAAAsCQCAHRQ0AIAogB0EBEJCEgIAACyAJIAI2AgAMywELIAVBvH9qKAIAIQkgBUF4aigCACEKIAVBbGooAgAhByADKAIAIQgCQAJAIANB/wAgBUFIaiAFQbB/aiIMKAIAIAUoAgQQw4SAgAAiAg0AIAohAwwBCwJAAkAgAy0AwAFBAkkNACACIAc2AhRBACEDIAohC0EAIQcMAQsgAiAIIAdBARDHhICAADYCFAJAAkAgCg0AQQAhCwwBCyAIIApBAUEAEMSEgIAAIQsLIAohAwsgAiAJOgABIAIgCzYCEAsCQCAHRQ0AIAggBxCEgoCAAAsCQCADRQ0AIAggAxDGgICAAAsgDCACNgIADMoBCyADQYq+gYAAQQAQ84GAgAAMyQELIANBtr2BgABBABDzgYCAAAzIAQsgBUFsaiAFKQIENwIAIANB17yBgABBABDzgYCAAAzHAQsgBUF4aigCACIDIAM2AigMxgELIAVBbGoiAygCACgCKCAFQXhqIgIoAgA2AiQgAygCACACKAIANgIoDMUBCyAFQXhqIAUoAgQ2AgAMxAELIAVBEGpBADYCAAzDAQsgBUFsakH/ADYCACAFQXBqIAUoAgQ2AgAMwgELIAVBCGpBADYCACAFIAUvAQI2AgQMwQELIAVBEGpBITYCAAzAAQsgBUF4akHBADYCAAy/AQsgBSAFLwECNgIEDL4BCyAFQbx/aiEMIAVBsH9qIQsgBUGkf2ooAgAhESAFQWxqKAIAIQcgBUFYaigCACEKIAVBVGooAgAhECAFQUhqKAIAIQ4gAygCACECIAUoAgQhCAJAAkACQAJAIAVBjH9qIgkoAgAiD0UNACAFQUBqKAIARQ0BQQAhDSADQbaHgoAAQQAQ84GAgAAMAwtBACENIAMgCyAMIARB2ARqEMiEgIAAIhJBAE4NAQwCCyAEIAs2AtgEQQEhEgtBACENIAdFDQAgAi0AUQ0AAkAgEkEBRg0AIAJBpQFqLQAAQf8BcUUNAAJAIAdBDGooAgAiFEUNACACIBQQxICAgAALIAdBADYCDAsgAyAHEMmEgIAAIRQCQCACLQClAQ0AIBRFDQAgBUFAaigCAA0AQQEgEiAUKAJIIAIoAhBBHGooAgBGGyESCyACLQBRDQAgBCAEKALYBCIVNgLUBCAEQdGGgoAANgLQBCAEIBJBAUY6AMgEIAQgAzYCwAQgBCADKAIAKAIQIBJBBHRqIhQoAgA2AswEIAQgFCgCDDYCxAQgBEHABGogBxDKhICAAA0AAkAgAyAHEMmEgIAAIhQNACACQaQBai0AAEEBRw0BIAJBpgFqIg4gDi0AAEEBcjoAAAwBCwJAIBQoAjhFDQBBACENIANB5IeCgABBABDzgYCAAAwBCyACIBUQr4SAgAAiFkUNAAJAAkACQCADIBZB0YaCgAAgFCgCABC4hICAAA0AAkACQCADLQDAAUEBSw0AIAIoAhAgEkEEdGooAgxBKGogFkEAEPuBgIAAKAIIRQ0AIBENASAEIBU2AvABIANBjYiCgAAgBEHwAWoQ84GAgAAMAgsCQCAUKAIAIhdFDQBBACERAkACQAJAA0AgFyARai0AACIVRQ0BIBVB4IuAgABqLQAAIhUgEUHsyoGAAGotAABB4IuAgABqLQAAIhhHDQIgEUEBaiIRQQdHDQAMAwsLIBFB7MqBgABqLQAAQeCLgIAAai0AACEYQQAhFQsgFSAYQf8BcUcNAQsgA0GniIKAAEEAEPOBgIAADAILIBQoAgwhEQJAIA5BwQBGDQAgEUUNACAEQQA2AtgBIAQgBzYC1AEgBEHyiIKAAEH5iIKAACAOQSFGGzYC0AEgA0HNiIKAACAEQdABahDzgYCAAAwCCwJAIA5BwQBHDQAgEQ0AIARBADYC5AEgBCAHNgLgASADQf+IgoAAIARB4AFqEPOBgIAADAILAkACQAJAAkAgAy0AwAFBAUsNACACKAIQIRkCQAJAIBQoAkgiGg0AQcD7QiEVDAELIBlBDGohEUF/IRUDQCAVQQFqIRUgESgCACEYIBFBEGohESAYIBpHDQALCyAZIBVBBHRqKAIAIhghEQJAIA9FDQAgGSgCECERCyADQQVBBUEHIBVBAUYiFRsgDxsgFiAXIBEQsISAgAANBSADQRJBgLeAgABBxLSAgAAgFRtBACAYELCEgIAADQVBISAOIA5BwQBGGyERDAELQSEgDiAOQcEARhshESACRQ0BCyACQiQQ44CAgAAhDgwBC0IkEM+AgIAAIQ4LIA5FDQEgDkIANwAUIA5CADcABCAOQRxqQgA3AAAgDkEMakIANwAAIA4gFjYCACAOIAIgB0EQaigCABDVgYCAACIPNgIEIA5BAUECIBFBIUYbOgAJIA4gEDoACCAOIBQoAkg2AhggDiACKAIQIBJBBHRqKAIMNgIUAkAgAy0AwAFBAkkNACADKAKIAiINRQ0DIAcoAhAhEQJAA0AgDSgCACARRg0BIA0oAgwiDUUNBQwACwsgDSAPNgIADAMLAkAgCA0AQQAhDQwECyACIAhBAUEAEMSEgIAAIQ0MAwsgAyASEMuEgIAACyACIBYQxICAgAAMAgsgCCENQQAhCAsgDiAKNgIQIA4gDTYCDCADIA42AuQBQQAhCiAOIQ0LIAIgBxCShICAACACIAoQx4CAgAACQCAIRQ0AIAIgCBDGgICAAAsCQCADKALkAQ0AIAIgDRDBgICAAAsCQCAFQUBqKAIADQAgCSALKQIANwIADL4BCyAJIAwpAgA3AgAMvQELIAVBeGooAgAhDCAFQQhqKAIAIREgBUFgaigCACEOIAMoAgAhCyADKALkASEKIAUoAgQhDyADQQA2AuQBAkACQCAKRQ0AIAMoAiQNACAKKAIAIQ0CQAJAIAooAhQiCQ0AQcD7QiEHDAELIAsoAhBBDGohAkF/IQcDQCAHQQFqIQcgAigCACEIIAJBEGohAiAIIAlHDQALCyAKIAw2AhwCQCAMRQ0AIAwhAgNAIAIgCjYCBCACKAIkIgINAAsLIAQgDTYC2AQCQAJAIA0NAEEAIQIMAQsgDRC4iICAAEH/////A3EhAgsgBCADNgLABCAEIAI2AtwEIARB0YaCgAA2AtAEIAQgB0EBRjoAyAQgBCALKAIQIAdBBHRqIgIoAgA2AswEIAQgAigCDDYCxAQgBCAEQdgEajYC1AQCQAJAIAxFDQADQCAEQcAEaiAMKAIIEMyEgIAADQIgBEHABGogDCgCEBDNhICAAA0CIARBwARqIAwoAhQQzoSAgAANAgJAIAwoAhwiAkUNACAEQcAEaiACKAIAEM6EgIAADQMgBEHABGogAigCBBDNhICAAA0DIARBwARqIAIoAggQzoSAgAANAyAEQcAEaiACKAIMEM2EgIAADQMLIAwoAiQiDA0ACwtBACEMIARBwARqIAooAgwQzYSAgAANAQJAAkAgAy0AwAFBAkkNACADIAo2AuQBQQAhCgwBCyALQaUBai0AAA0AIAMQqISAgAAiCEUNAiADKAJsIQIgAyAHEMuEgIAAIAIgAyACGyICIAIoAlBBASAHdHI2AlBBACECAkAgDkUNACALIA8gDmsgEWoiCa1CAXwQ44CAgAAiEUUNACARIA4gCRCyiICAACICIAlqQQA6AAAgAiECCyALKAIQIAdBBHQiCWooAgAhDiAKKAIEIREgBEHAAWogAjYCACAEIBE2ArwBIAQgDTYCuAEgBEHEtICAADYCtAEgBCAONgKwASADQdmGgoAAIARBsAFqELSEgIAAAkAgAkUNACALIAIQxICAgAALIAMoAghB3gAgB0EBIAMoAgAoAhAgCWooAgwoAgBBAWoQ9oGAgAAaIAQgDTYCoAEgCCAHIAtBmYeCgAAgBEGgAWoQ9IGAgAAQz4SAgAALIAtBpQFqLQAARQ0BAkAgCygCECAHQQR0aigCDEEoaiANIAoQrYKAgAAiA0UNACALEM+BgIAADAMLIAooAhQiAiAKKAIYRw0CQQAhDCAKIAJBCGogCigCBEEAEPuBgIAAKAIIIgIoAkQ2AiAgAiAKNgJEDAILIAohA0EAIQwMAQsgCiEDCyALIAMQwYCAgAAgCyAMEMWAgIAADLwBCyADIAVBVGogBUFgaiAFQXhqQQEQ0ISAgAAMuwELIAMgBUFgaiAFQWxqIAVBBGpBARDQhICAAAy6AQsgAyAFQVRqIAVBYGogBUF4akEAENCEgIAADLkBCyADIAVBYGogBUFsaiAFQQRqQQAQ0ISAgAAMuAELIAMgBUF4aiAFQQRqQQBBABDQhICAAAy3AQsgAyAFQXhqIAUoAgQQ0YSAgAAMtgELIANBACAFKAIEENGEgIAADLUBCyAFKAIEIQICQCADKAIAIgctAFENACAFQXhqKAIAIQggAxD5gYCAAA0AAkAgByACQRBqKAIAIAJBDGooAgAQ7oOAgAAiDQ0AAkACQCAIDQAgBEEANgJ0IAQgAjYCcCADQf/+gYAAIARB8ABqEPOBgIAADAELIAMgAigCDBC+hICAAAsgA0EBOgARDAELAkAgDS0AN0EDcUUNACAEQQA2ApABIANBkf+BgAAgBEGQAWoQ84GAgAAMAQsgBygCECEIAkACQCANKAIYIglFDQAgCEEMaiEIQX8hCgNAIApBAWohCiAIKAIAIQwgCEEQaiILIQggDCAJRw0AC0GAt4CAAEHEtICAACAKQQFGGyEIIAtBZGohDAwBCyAIQYC4r3hqIQxBxLSAgAAhCEHA+0IhCgsgDSgCDCEJIANBCSAIQQAgDCgCACIMELCEgIAADQAgA0EMQQogChsgDSgCACAJKAIAIAwQsISAgAANACADEKiEgIAAIgxFDQAgAygCbCEIIAMgChDLhICAACAIIAMgCBsiCCAIKAJQQQEgCnRyNgJQIAggCC0AFEEBcjoAFCAHKAIQIApBBHQiCGooAgAhCSAEIA0oAgA2AogBIARBxLSAgAA2AoQBIAQgCTYCgAEgA0Ha/4GAACAEQYABahC0hICAACADIApBxtyAgAAgDSgCABDShICAACADKAIIQd4AIApBASADKAIAKAIQIAhqKAIMKAIAQQFqEPaBgIAAGiADIA0oAiwgChDThICAACANKAIAIQMgDCAMQZABIApBAEEAEPaBgIAAIANBABC6hICAAAsgByACEJKEgIAADLQBCyAFQWxqIgIgA0EAIAIgBUF4aigCACAFKAIEENSEgIAANgIADLMBCyAFQVRqIgIgAyACKAIAIAVBbGogBUF4aigCACAFKAIEENSEgIAANgIADLIBCyAFQRBqQQA2AgAMsQELIAVBAjYCBAywAQsgAyAFQbB/aiAFQbx/aiADQQAgBUFUaiICQQAQ1YSAgAAgBUFsaigCACAFQYx/aigCACAFQYB/aiAFKAIEQQAgBUGkf2ooAgBBABDWhICAACADLQDAAUECSQ2vASADKALgASIHRQ2vASADIAcoAgAgAhDXhICAABoMrwELIAVBbGogBUF4aigCADYCAAyuAQsgBSADQQAgBSgCBBDYhICAADYCBAytAQsgBUFsaiICIAMgAigCACAFKAIEENiEgIAANgIADKwBCyAFQWBqIgIgA0EAIAVBbGooAgAQ2ISAgAAiBzYCACACIAMgByAFKAIEENiEgIAANgIADKsBCyAFQVRqIgIgAyACKAIAIAVBbGooAgAQ2ISAgAAiBzYCACACIAMgByAFKAIEENiEgIAANgIADKoBCyAFQVRqIgggA0GaASAFQWBqKAIAQQAQwYSAgAAiAjYCAAJAIAJFDQAgBUFsaigCACEHAkAgBUF4aigCACIKRQ0AIAMgByAKENiEgIAAIQcgCCgCACECCyACIAc2AhQgAyAIKAIAENmEgIAADKoBCwJAIAVBbGooAgAiAkUNACADKAIAIAIQhIKAgAALIAVBeGooAgAiAkUNqQEgAygCACACEMaAgIAADKkBCyAFQWBqIANBFEEAQQAQwYSAgAAiAjYCACADIAIgBUF4aigCABDahICAAAyoAQsgA0EAIANBACAFQWxqIAVBeGoQ1YSAgAAiAkEAQQBBAEEAQQBBABDbhICAACEHAkAgBSgCBCIIRQ0AIAMgAkEAIAcbIAgQ3ISAgAALIAVBVGoiAiADQTEgAigCAEEAEMGEgIAAIgg2AgAgAyAIIAcQ2oSAgAAgBUFgaigCAEUNpwEgAiADQRMgAigCAEEAEMGEgIAANgIADKcBCyAFQVRqIgIgA0ExIAIoAgBBABDBhICAACIHNgIAIAMgByAFQXhqKAIAENqEgIAAIAVBYGooAgBFDaYBIAIgA0ETIAIoAgBBABDBhICAADYCAAymAQsgBUFsaiADQYgBQQBBABDBhICAACICNgIAIAMgAiAFQXhqKAIAENqEgIAADKUBCyAFQVRqIgIoAgAhBwJAIAVBeGoiCCgCAA0AIAMgBxDdhICAACACIAMoAgBBmAFBk7eAgABB1byBgAAgBUFgaigCABsQ3oSAgAA2AgAMpQELIAIgA0ExIAdBABDBhICAACIHNgIAAkACQCAHRQ0AIAcgCCgCADYCFCADIAIoAgAQ2YSAgAAMAQsgCCgCACIHRQ0AIAMoAgAgBxCEgoCAAAsgBUFgaigCAEUNpAEgAiADQRMgAigCAEEAEMGEgIAANgIADKQBCyADIANBACAFQWxqKAIAENiEgIAAIAUoAgQQ2ISAgAAhCCAFQVRqIgIgA0EwIAIoAgBBABDBhICAACIHNgIAAkACQCAHRQ0AIAcgCDYCFAwBCyAIRQ0AIAMoAgAgCBCEgoCAAAsgBUFgaigCAEUNowEgAiADQRMgAigCAEEAEMGEgIAANgIADKMBCyAFQQA2AgQMogELIAVBeGogA0GrAUGqASAFQXZqLwEAQekARhsgBSgCBEEAEMGEgIAANgIADKEBCyAFQXhqIAMgBUF2ai8BACAFKAIEQQAQwYSAgAA2AgAMoAELIAVBYGoiAiADQagBIAIoAgAgBSgCBBDBhICAACICNgIAIAMgBSgCBCACQTMQ34SAgAAMnwELIAVBbGoiAiADQS0gAigCACAFKAIEEMGEgIAAIgI2AgAgAyAFKAIEIAJBMhDfhICAAAyeAQsgBUFsaiICIANBMyACKAIAQQAQwYSAgAA2AgAMnQELIAVBeGoiAiADIAUvAQIgAigCAEEAEMGEgIAANgIADJwBCyAFQWRqIgIgAigCACIIQf////8HcTYCACAFQVRqIgcgAyADIAMgA0EAIAVBbGooAgAQ2ISAgAAgBygCABDYhICAACAFKAIEENiEgIAAIAVBYGpBABDghICAACICNgIAAkAgCEF/Sg0AIAcgA0ETIAJBABDBhICAACICNgIACyACRQ2bASACIAIoAgRBgAFyNgIEDJsBCyAFQXxqIgIgAigCACIIQf////8HcTYCACAFQWxqIgcgAyADIANBACAFKAIEENiEgIAAIAcoAgAQ2ISAgAAgBUF4akEAEOCEgIAAIgI2AgACQCAIQX9KDQAgByADQRMgAkEAEMGEgIAAIgI2AgALIAJFDZoBIAIgAigCBEGAAXI2AgQMmgELIAVBeGogBSkCBCITNwIAIAVBfGogE0IgiKdBgICAgHhyNgIADJkBCyAFQWxqIgIgAyAFQXZqLwEAIAIoAgAgBSgCBBDBhICAADYCAAyYAQsgBUFsaiICIAMgAigCACAFKAIEEOGEgIAANgIADJcBCyADIAVBYGooAgAgBUF4aigCABDYhICAACECIAVBVGoiCCADQa4BQQBBABDBhICAACIHNgIAAkAgB0UNACAHIAI2AhQgAigCAEUNlwEgCCgCACIDIAMoAgQgAigCBCgCBEGEgoABcXI2AgQMlwELIAJFDZYBIAMoAgAgAhCEgoCAAAyWAQsgBSADQQAgBUEEakEAEOCEgIAANgIEDJUBCyADIANBACAFQVRqIgJBABDghICAACIHIAUoAgQQ4oSAgAAgAiAHNgIADJQBCyADIAMgBUFsaigCACAFQUhqIgIgBUFgaigCABDghICAACIHIAUoAgQQ4oSAgAAgAiAHNgIADJMBCyAFQWBqIgIgA0EAIAJBABDghICAADYCAAySAQsgBUFUaiICIAMgBUF4aigCACACIAVBbGooAgAQ4ISAgAA2AgAMkQELIAVBSGogAygCAEEkIAVBeGpBARDAhICAACICNgIAIAMoAgAgAiAFQWBqKAIAQQAQ44SAgAAMkAELIAVBbGoiAiADIAIoAgAgBUEE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QQFqIQECQANAIAMgAUYNASAAIARBAWpB/QBwIgRBAnRqQQxqKAIAIgNFDQIMAAsLQQEhAgsgAgu+AQEBfwJAIABFDQAgAUUNACAAQQFqIQACQANAAkAgAEF+ai0AAA0AIABBfWotAAANACAAQXxqLQAADQAgAEF7ai0AAEUNAgsgAEF/aiEADAALCyAAIABBf2oQuIiAgABB/////wNxaiIALQAARQ0AA0AgACABELWIgIAAIQIgABC4iICAAEH/////A3EgAGpBAWohAAJAIAINACAADwsgABC4iICAAEH/////A3EgAGpBAWoiAC0AAA0ACwtBAAsrAAJAIAAgARDAgoCAACIADQAgAkEARw8LIABBASACQQBHEMKCgIAAQQBHC8wCAQl/I4CAgIAAQRBrIgMkgICAgAACQAJAIAAtAABBUGpBCUsNACADQQA2AgwgACADQQxqEO2DgIAAGiADKAIMIQIMAQsgABC4iICAAEH/////A3EiBEEBaiEFQQAhBgNAAkAgBCAGQcGEgoAAai0AAEcNAAJAIARFDQAgBkG5hIKAAGotAABBoISCgABqIQcgBSEIIAAhCQJAAkADQCAHLQAAIgpFDQEgCkHgi4CAAGotAAAiCiAJLQAAQeCLgIAAai0AACILRw0CIAlBAWohCSAHQQFqIQcgCEF/aiIIQQFKDQAMAwsLIAktAABB4IuAgABqLQAAIQtBACEKCyAKIAtB/wFxRw0BCwJAIAFFDQAgBkEBckEHRg0BCyAGQcmEgoAAai0AACECDAILIAZBAWoiBkEIRw0ACwsgA0EQaiSAgICAACACQf8BcQv/AQMDfwF+AX8CQCAALQAAQTBHDQAgAC0AAUEgckH4AEcNAEEBIQIDQCAAIAJqIQMgAkEBaiIEIQIgA0EBai0AACIDQTBGDQALAkACQCADQeCOgIAAai0AAEEIcQ0AIAAgBGohAkIAIQUgBCEGDAELQgAhBSAEIQIDQCAFQgSGIANBBnZBAXFBCWwgA2pBD3GthCEFIAAgAmohAyACQQFqIgYhAiADQQFqLQAAIgNB4I6AgABqLQAAQQhxDQALIAAgBmohAgsgASAFNwMAIAItAABBAEdBAXRBAiAGIARrQRFIGw8LIAAgASAAELiIgIAAQf////8DcUEBEPCBgIAAC/0BAQN/AkACQCAADQBBACEB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CwsCQCADQegAaigCACIERQ0AAkAgBCgCACIFRQ0AIAQgBSgCBBGBgICAAAAaIARBADYCAAsgBBDQgICAAAsgA0HAAGohBQJAIANB+ABqKAIAIgRFDQACQCAEKAIAIgZFDQAgBCAGKAIEEYGAgIAAABogBEEANgIACyAEENCAgIAACyAFQQBByAAQtIiAgAAaIANByABqIAE2AgAgAkEBaiICIAEtADtJDQALCwJAIAFBKGooAgANACABKAIkIgRFDQADQCAEKAIEIQUgBBDQgICAACAFIQQgBQ0ACwsgAUEAOgA4IAFBADYCJCABQQA2AgggAUEsakIANwIAAkAgASgCICIERQ0AIAAgBBDEgICAAAsgAUEANgIgC6ABAQN/AkAgACgCCEUNAAJAAkAgACgCFCIBKAIIIgIgAEcNACABIAAoAhg2AggMAQsDQAJAIAIoAhgiAyAARw0AIAIgACgCGDYCGAwCCyADIQIgAw0ACwsgABD6goCAAAJAIAEtABQNACABKAIMIgNFDQAgAUEANgIMIAMQiIGAgAALIAAoAgwQ0ICAgAAgACgCEBDQgICAACAAQQA2AggLC00BAn8CQCAARQ0AIAAoAgBBAUgNAEEAIQFBACECA0AgACgCDCABahCQg4CAACABQThqIQEgAkEBaiICIAAoAgBIDQALCyAAENCAgIAACzAAIAAoAhwQ0ICAgAAgACgCJBDQgICAACAAKAIwEJGDgIAAIABBAEE4ELSIgIAAGgsdAAJAIABFDQAgACgCBBCPg4CAACAAENCAgIAACwv3BwIIfwN+I4CAgIAAQRBrIgMkgICAgABBACEEAkAgAEUNACAALQAIQQJHDQAgACgCBCEFAkAgAUECRw0AIAUoAggiBEUNACAEQQBBABChgYCAACIEDQELIAUoAgAiACgCKCIEDQACQCAAKAJgIgQgAkwNAAJAIAFBAUciBiACaiIHIARODQAgBiACakEFdEEQciEEIAchAQNAIAAoAlwgBGooAgAQnoGAgAAgBEEgaiEEIAFBAWoiASAAKAJgSA0ACwsgACAHNgJgAkAgBg0AIAcNASAAKAJEIgcoAgAiBEUNAQJAIARBmJyAgABHDQACQCAHKAIQIgRFDQADQCAEKAIAIQEgBBDQgICAACABIQQgAQ0ACwsgB0EANgIgIAdCADcCDCAHQQA2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gAAaAkACQCAAQegAaiIDKAIADQAgAiADEISEgIAAIgINAQsgAEHAAGogAEEkaiIEELeDgIAAIgINACAAQfAAaiIFKQMAIQYgACgCaCEHIAAoAkgoAgwhAiABQQhqQQBBKBC0iICAABogASACrCIIEM+AgIAAIgM2AgwCQAJAIAMNACABQQc2AggMAQsgASAHNgIoIAEgAjYCECABIAYgBiAIgSIIfTcDICABIAinIgI2AhggASACNgIUCyAAQdwAaiICIAIoAgBBAWo2AgAgAUEIaiABQTZqIAFBNmogAEEsajQCABCjg4CAABCFhICAAAJAIAAoAiQiAkUNAANAIAIoAgQhAyABQQhqIAFBNmogAUE2aiACNAIAEKODgIAAEIWEgIAAIAFBCGogAkEIaiACKAIAEIWEgIAAAkAgACgCKA0AIAIQ0ICAgAALIAMhAiADDQALCyAEQQA2AgAgAUEIaiAFEIaEgIAAIQILIAFBwABqJICAgIAAIAILkAEBA39BAiEBA0AgASICQQF0IQEgAiAASA0AC0EAIQECQAJAQQAoAvy/goAAIgBFDQBB5AAgABGBgICAAAANAQsgAkE8bEEQaiIArBDPgICAACIDRQ0AIANBACAAELSIgIAAIgEgAUEQaiIANgIMIAFBADYCBCABIAI2AgAgASAAIAJBOGxqNgIIIAEhAQsgAQuZAgMBfwF+B38jgICAgABBEGsiBCSAgICAACACKQMAIQUgAyABELmDgIAAIgY2AgBBAEEHIAYbIQcgBkEARyEIAkACQAJAIAFBAUgNACAIRQ0AIABBKGohCUEAIQpBASELA0ACQAJAIAAgBigCDCAKaiIIIAkgBRCJhICAACIHDQAgBEIANwMIIAggBEEIahCKhICAACEHIAhBCGoiDCAEKQMIIAgpAwB8NwMAIAdFDQELIAhBCGopAwAhBQwDCyAIEIuEgIAAIQcgDCkDACEFIAdFIQggCyABTg0BIAtBAWohCyAKQThqIQogB0UNAAsLIAgNAQsgBhCPg4CAACADQQA2AgALIAIgBTcDACAEQRBqJICAgIAAIAcLswEBAX8CQAJAAkBBACgC/L+CgAAiA0UNAEHkACADEYGAgIAAAEUNACACQQA2AgAMAQtCwAAQz4CAgAAiAw0BIAIgAzYCAAsgARCPg4CAAEEHDwsgA0EIakEA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gICAgABBEGsiASSAgICAAAJAIAAvAQgiAkEtcQ0AAkACQAJAIAAoAhAgACAAKAIMIAAtAAoQ74GAgABBAUsNACAAKAIQIAFBCGogACgCDCAALQAKEPCBgIAAQQFKDQAgASkDCCEDDAELAkACQCAAKwMAIgSZRAAAAAAAAOBDY0UNACAEsCEDDAELQoCAgICAgICAgH8hAwsgASADNwMIIAREAAAAAAAAAABhDQBBCCECIANCgICAgICAgAR8Qv////////8HVg0BIAS9IAO5vVINAQsgACADNwMAQQQhAgsgACAALwEIQcD8AHEgAnIiAjsBCAsgACACQe3/AnE7AQggAUEQaiSAgICAAAvYAgEDfyOAgICAAEHQAGsiBCSAgICAAAJAAkAgAC0ACiACLQAERw0AIAIoAgggACgCDCAAKAIQIAEoAgwgASgCECACKAIMEYmAgIAAACEFDAELIARBATsBMEEAIQUgBEEANgJAIARBATsBCCAEQQA2AhggBCAAKAIgIgY2AkggBCAGNgIgIARBKGogAEGAIBCZg4CAACAEIAFBgCAQmYOAgAAgBEEoaiACLQAEEOWAgIAAIQAgBCACLQAEEOWAgIAAIQECQAJAAkAgAEUNACABDQELIANFDQEgA0EHOgAADAELIAIoAgggBCgCNCAAIAQoAgwgASACKAIMEYmAgIAAACEFCwJAAkAgBEExai0AAEEkcQ0AIAQoAkBFDQELIARBKGoQuIGAgAALAkAgBEEJai0AAEEkcQ0AIAQoAhhFDQELIAQQuIGAgAALIARB0ABqJICAgIAAIAUL/QEBBH8gASgCDCECIAAoAgwhAwJAAkACQCABLwEIIgQgAC8BCCIFckGAgAFxRQ0AAkAgBUGAgAFxIgUgBHFFDQAgACgCACABKAIAaw8LAkAgBUUNACACQQFIDQIgASgCECEBQX8hBCACIQMDQCABLQAADQQgAUEBaiEBIANBf2oiA0UNAwwACwsCQCADQQFIDQAgACgCECEAIAMhAgJAA0AgAC0AAA0BIABBAWohACACQX9qIgJFDQIMAAsLQQEPCyADIAEoAgBrDwsgACgCECABKAIQIAIgAyADIAJKGxCxiICAACIBIAMgAmsgARsPCyAAKAIAIAJrIQQLIAQLlgIBAn8jgICAgABBEGsiBCSAgICAACADQQE7AQgC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IAAoAggoAhwgBSAEIAYQsYOAgAAgAUEBNgIACyADIAIgBkEAELSDgIAAC78BAQN/I4CAgIAAQRBrIgMkgICAgAAgA0EANgIMIANBADYCCCADQQxqIQQCQANAIAJBCGohBQJAA0AgACADQQhqIAFBCGogASgCACAFIAIoAgAgACgCIBGLgICAAABBAEoNASAEIAE2AgAgAUEEaiEEIAEoAgQiAQ0ACyAEIAI2AgAMAgsgBCACNgIAIANBADYCCCACQQRqIQQgAigCBCICDQALIAQgATYCAAsgAygCDCEBIANBEGokgICAgAAgAQujAQEDfyOAgICAAEEQayICJICAgIAAAkACQEEAKAL8v4KAACIDRQ0AQYoaIQRBygEgAxGBgICAAAANAQsgAiAAKAIAQQAgAUGeICACQQxqEIuDgIAAIgQ2AgwgBA0AIAJCADcDAAJAIAEoAgAiBCgCACIBDQBBACEEDAELIARBEiACIAEoAigRhICAgAAAGiACKAIMIQQLIAJBEGokgICAgAAgBAvBAQEFfwJAIAJBAUgNACACIQMDQCAAKAIADQEgACgCBCAAKAIQIgRqIAEgAiADa2ogACgCCCAEayIEIAMgAyAEShsiBBCyiICAABogACAAKAIQIARqIgU2AhACQCAFIAAoAghHDQAgACAAKAIgIgYgACgCBCAAKAIMIgdqIAUgB2sgACkDGCAHrHwgBigCACgCDBGGgICAAAA2AgAgAEIANwIMIAAgACkDGCAANAIIfDcDGAsgAyAEayIDQQBKDQALCwuIAQEEfwJAIAAoAgANACAAKAIEIgJFDQAgACgCECIDIAAoAgwiBEwNACAAIAAoAiAiBSACIARqIAMgBGsgACkDGCAErHwgBSgCACgCDBGGgICAAAA2AgALIAEgACkDGCAANAIQfDcDACAAKAIEENCAgIAAIAAoAgAhASAAQQBBKBC0iICAABogAQs+AQF/IAAoAgwhBgJAIAEoAgANACAAKAIIKAIcIAUgBCAGELGDgIAAIAFBATYCAAsgAyACIAZBARC0g4CAAAuqAQMEfwJ+AX8gACgCMCIBKAIAIgIoAggoAhghAwJAIAIgASgCBBC8g4CAACIEDQAgATQCECEFAkACQCACKAI4IgRFDQAgAkHAAGopAwAhBgwBCyADIAJBOGoiBxCEhICAACEEQgAhBiACQcAAakIANwMAIAQNASAHKAIAIQQLIAEgBjcDCCABQTBqIAQ2AgAgAkHAAGogBiAFfDcDACAAEIuEgIAAIQQLIAQLmwICAn8BfgJAAkBBACgC/L+CgAAiBEUNAEGKAiEFQckBIAQRgYCAgAAADQELAkAgASgCLEUNACABQQA2AiwLIAEgAzcDACABIAIpAwgiBjcDCCABIAIoAgAiAjYCGAJAIAYgACgCCCIFKAIYNAKcAVUNACACKAIAKAIAQQNIDQAgAUEANgIsIAAoAgghBQsgAyAFKAIMIgSsIgaBpyECQQAhBQJAIAEoAiQiAA0AIAYQz4CAgAAhACABIAQ2AiggASAANgIkQQBBByAAGyEFCyACRQ0AIAUNACABKAIYIgUgACACaiABKQMIIgYgASkDACIDfacgBCACayIBIAMgAax8IAZVGyADIAUoAgAoAggRhoCAgAAAIQULIAUL8gEDAX8BfgJ/I4CAgIAAQSBrIgIkgICAgAAgACkDACEDAkACQAJAIAAoAiwiBEUNACAEIAOnaiABEPKCgIAAIQQgACAAKQMAIAStfDcDAAwBCwJAIAMgACgCKCIFrIGnIgRFDQAgBSAEa0EJSA0AIAAoAiQgBGogARDygoCAACEEIAAgACkDACAErXw3AwAMAQtBACEEA0AgAEEBIAJBDGoQjISAgAAiBQ0CIAJBEGogBEEPcXIgAigCDCwAACIFOgAAIARBAWohBCAFQQBIDQALIAJBEGogARDygoCAABoLQQAhBQsgAkEgaiSAgICAACAFC/EBAgN/An4jgICAgABBEGsiASSAgICAACABQgA3AwgCQAJAIAApAwAgACkDCFMNAEEAIQICQAJAIAAoAjAiA0UNACADEI2EgIAAIQIgA0EoaiADQThqKQMAIgQ3AwAgAyADQTBqKQMANwMgAkAgBCADKQMIIgVSDQAgA0EBNgIUCyACDQBBACECIAMoAhRFDQELIAAQkIOAgAAMAgsgAygCACAAIANBIGogBRCJhICAACICDQELIAAgAUEIahCKhICAACICDQAgACABKAIIIgI2AhQgACACIABBIGoQjISAgAAhAgsgAUEQaiSAgICAACACC88DBgF/AX4CfwF+AX8BfiOAgICAAEEQayIDJICAgIAAIAApAwAhBAJAAkACQCAAKAIsIgVFDQAgACAE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SAJAIAEoAkRFDQAgAC0AUQ0AIANBADYCHCADQbWAgIAANgIYIANBtoCAgAA2AhQgAyAFNgIoIANBADYCECADQRBqIAUQoYaAgAAaCyAFQTRqIQQgBiAFNgIAIAUgASgCEDYCECABKAI0IgENAAsLIAMoAgwhBAsgA0EwaiSAgICAACAEC6sBAQN/I4CAgIAAQRBrIgIkgICAgABBACEDAkAgAUUNACABKAIAIgRBAUgNACABQQxqIQFBACEDA0ACQCABQQFqLQAAQSBxRQ0AIAJB2+GBgABB4eGBgAAgAS0AACIBQQNGG0Hb4YGAACABGzYCACAAQb/hgYAAIAIQ84GAgABBASEDDAILIAFBEGohASADQQFqIgMgBEgNAAtBACEDCyACQRBqJICAgIAAIAMLrQMBCH9BACEDAkAgAUUNAAJAAkAgAEUNACAAQbwCaigCACABTQ0AQYABIQQgAEG0AmooAgAgAU0NASAAQbgCaigCACABSw0AIABBjgJqLwEAIQQMAQsgAUEAKAK0voKAABGBgICAAAAhBAsgACAErBDjgICAACIFRQ0AIAUgASgCADYCAAJAIAEoAgBBAUgNACAFQRBqIQQgAUEEaiEDQQAhBkEAIQcDQAJAAkAgAygCACIIDQAgBEF0akEANgIADAELIARBdGogACAIIAJBABDEhICAACIJNgIAIAlFDQAgCC0AAEH/AXFBrwFHDQACQCAJLwEgDQAgCSgCECEGCyAJIAY2AgwLIARBeGogACADQQRqKAIAENWBgIAANgIAIARBfGogA0EIai0AADoAACAEQX1qIgggCC0AAEF4cSADQQlqIgktAABBA3FyIgo6AAAgCCAKQVtxIAktAABBIHFyIgo6AAAgCCAKQesBcSAJLQAAQRBxcjoAACAEIANBDGooAgA2AgAgA0EQaiEDIARBEGohBCAHQQFqIgcgASgCAEgNAAsLIAUhAwsgAwujAQECfyOAgICAAEEQayIEJICAgIAAIAAoAgAhBQJAAkAgAigCBEUNAAJAIAVBpQFqLQAARQ0AIABBx8qBgABBABDzgYCAAEF/IQIMAgsgAyACNgIAIAUgARD/hYCAACICQX9KDQEgBCABNgIAIABB2MqBgAAgBBDzgYCAAEF/IQIMAQsgAyABNgIAIAVBpAFqLQAAIQILIARBEGokgICAgAAg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IgNHDQAgAg0BQQAhAAwFCyACQeCLgIAAai0AACADQeCLgIAAai0AAEcNAgsgAEEBaiEADAALC0EAIQADQAJAAkAgCiAAai0AACICIABByoOCgABqLQAAIgNHDQAgAg0BQQEhAAwECyACQeCLgIAAai0AACADQeCLgIAAai0AAEYNAEEAIQACQANAAkACQCAKIABqLQAAIgIgAEHPg4KAAGotAAAiA0cNACACDQFBAiEADAcLIAJB4IuAgABqLQAAIANB4IuAgABqLQAARw0CCyAAQQFqIQAMAAsLIAVBADYCyAIgCiAFQcgCahDtg4CAABogBSgCyAIiAEH/AXFBACAAQQNJGyEADAMLIABBAWohAAwACwsgBiAJEMSAgIAADAkLIAYgADoAVAJAIAQoAgQiAi0AFkECcUUNACACLQARIABBAEdHDQcLIAIgAEECRjoAEiACIABBf2oiAyAASToAESADQQFLDQYgBygCbCECIAdBBUGwgIKAABD3gYCAACIAIAE2AgQgAEHcAGogAzYCACAAQdQAaiABNgIAIABBMGogAkEEajYCACAAQRhqIAE2AgAgByAHKAKMAUEBIAF0cjYCjAEMBgsgCCABQQR0aigCBCgCBCgCACEAIAVCfjcDyAICQAJAIApFDQAgCiAFQcgCahDDgoCAABoCQCAFKQPIAiIMQn5VDQBCfyEMIAVCfzcDyAILIAAgDDcDoAEMAQsgACkDoAEhDAsgByAMEPKFgIAADAULAkACQCAKRQ0AIAoQuIiAgABB/////wNxIQNBACEIQbDAgIAAIQACQANAIAogACgCACADEPGAgIAARQ0BIABBBGohACAIQQFqIghBBUcNAAwCCwsgCEECRw0BIAZBI2otAABBEHENAEECIQgMAQtBfyEIIAIoAgQNACACQQE2AgRBACEBCwJAIAYoAhQiAEEBSA0AIABBf2ohBCAAQQR0QXRqIQMDQCAEIQACQCAGKAIQIANqKAIARQ0AAkAgASAARg0AIAIoAgQNAQsgByAHKAKMAUEBIAB0cjYCjAEgB0EHIABBASAIEPaBgIAAGgsgA0FwaiEDIABBf2ohBCAAQQFqQQFKDQALCyAHQdAAQQFBAUEAEPaBgIAAGgwEC0F/IQQgAigCBA0BIAZB0wBqIQAMAgsgAigCBA0AQQIhAgJAIAYoAhQiC0EC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QgA3A1ggAEEAIAFBsQEgCUHYAGpBABDAhICAABDYhICAACEBCyAAIAAoAmRBAWoiCzYCZCAKQgA3AgggCiAHNgIEIApBiAE6AAAgCiABNgIcIApBADsBAiAKIAs2AhAgCkJ/NwIUAkAgAg0AAkACQCAAKAIAIgJFDQAgAkLQABDjgICAACECDAELQtAAEM+AgIAAIQILIAJFDQAgAkEAQdAAELSIgIAAGgsgCkEANgJIIApCADcCQCAKIAg2AjwgCkIANwI0IAogBjYCMCAKIAU2AiwgCiAENgIoIAogAzYCJCAKIAI2AiACQCAAKAIAIgAtAFFFDQAgACAKIAogCUEIakcQkISAgABBACEKCyAJQeAAaiSAgICAACAKC0UAAkAgAUUNACABKAIAQcgAbCABaiIBIAI2AgAgAUFlaiIBIAEtAABBBHI6AAAPCwJAIAJFDQAgACgCACACEISCgIAACwuOAQECfyOAgICAAEEgayICJICAgIAAAkAgAUUNAAJAIAAtAMABIgNBAkkNACAAQQM6AMABIAJBFGpCADcCACACQgA3AgwgAkG5gICAADYCCCACQbqAgIAANgIEIAIgADYCACACIAEQj4WAgAAaIAAgAzoAwAELIAAoAgAgARDGgICAAAsgAkEgaiSAgICAAAtgAQJ/I4CAgIAAQRBrIgMkgICAgAAgAyACNgIIQQAhBAJAIAJFDQAgAhC4iICAAEH/////A3EhBAsgAyAENgIMIAAgASADQQhqQQAQwISAgAAhAiADQRBqJICAgIAAIAILUQACQCABRQ0AIAJFDQAgAS0AAEH3AEcNACAALQDAAUEBSw0AIAAoAgAhASACIAM6AAACQCACKAIQIgBFDQAgASAAEMaAgIAACyACQQA2AhALC7YBAQN/I4CAgIAAQRBrIgQkgICAgAACQAJAIAAoAgAiBUGpASACQQEQwISAgAAiBg0AIAFFDQEgBSABEISCgIAADAELAkAgAUUNACABKAIAIAAoAgBBhAFqKAIATA0AIAQgAjYCACAAQYj+gYAAIAQQ84GAgAALIAYgATYCFCAGIAYoAgRBBHI2AgQgACAGENmEgIAAIANBAUcNACAGIAYoAgRBAnI2AgQLIARBEGokgICAgAAgBgvFAQECfyOAgICAAEEQayIDJICAgIAAAkAgAUUNAAJAIAINACABIQIMAQsgACgCACEEAkACQCABKAIEQYGAgIACcUGAgICAAkYNACACKAIEQYGAgIACcUGAgICAAkcNAQsgAC0AwAFBAUsNACAEIAEQxoCAgAAgBCACEMaAgIAAIANBATYCDCADQdW8gYAANgIIIARBmAEgA0EIakEAEMCEgIAAIQIMAQsgAEEsIAEgAhDBhICAACECCyADQRBqJICAgIAAIAILYAEBfwJAAkAgAUUNACABIAI2AiwgAiABNgJIIAEgASgCBCIDQYCAgAhyNgIEIANBAnFFDQEgAi0AEEGjAUYNASAAQar+gYAAQQAQ84GAgAAPCyAAKAIAIAIQkYSAgAALC4ABAAJAAkAgAQ0AAkAgAkUNACAAIAIQxoCAgAALIANFDQEgACADEMaAgIAADwsCQCADRQ0AIAEgAzYCECABIAEoAgQgAygCBEGEgoABcXI2AgQLAkAgAkUNACABIAI2AgwgASABKAIEIAIoAgRBhIKAAXFyNgIECyABEO2FgIAACws+AAJAIAIoAgRFDQAgACgCAEHvACACIAMQwISAgAAiAkUNACACIAE2AgwgAiACKAIEQYAicjYCBCACDwsgAQviAQECfwJAIAAoAgAgAigCBCIDQTVqrRDjgICAACIERQ0AIARBgICABDYCBCAEIAE6AAAgBEIANwIoIARBADYCFCAEQgA3AgwgBEKAgICAgIBANwIcIARBADsAASAEIARBNGoiATYCCCABIAIoAgAgAxCyiICAACADakEAOgAAAkAgBCgCCCIDLQAAIgFB4I6AgABqLAAAQX9KDQAgBEHAgIAgQYCAgCAgAUEiRhsgBCgCBHI2AgQgAxD+hICAAAsgBEEBNgIYIAAtAMABQQJJDQAgACAEIAIQ14SAgAAhBAsgBAvhAQEDfyOAgICAAEEQayIDJICAgIAAIAAoAgAhBAJAAkACQCABDQACQAJAIARFDQAgBEIIEOOAgIAAIQEMAQtCCBDPgICAACEBCyABRQ0BIAFCADcAAAsgASAEIAEoAgBBCCABQQRqIANBDGoQ7IWAgAA2AgACQCADKAIMIgVBf0oNACAEIAEQx4CAgAAMAQsgBCACEK+EgIAAIQQgASgCACAFQQN0aiAENgIAIARFDQEgAC0AwAFB/wFxQQJJDQEgACAEIAIQ14SAgAAaDAELQQAhAQsgA0EQaiSAgICAACABC6IBAQF/AkACQCAARQ0AIABCJBDjgICAACEFDAELQiQQz4CAgAAhBQsCQAJAIAUNAAJAIAFFDQAgACABEISCgIAACwJAIAJFDQAgACACEMaAgIAACwJAIANFDQAgACADEISCgIAAC0EAIQUgBEUNASAAIAQQxoCAgABBAA8LIAVBADYCECAFIAQ2AgwgBSADNgIIIAUgAjYCBCAFIAE2AgALIAUL2z4DEX8Bfg1/I4CAgIAAQYACayIGJICAgIAAQQAhByAGQQA2AmwgBkEANgJoIAAoAgAhCAJAAkACQAJAAkACQAJAAkAgACgCJA0AIAgtAFENAEEAIQcgBkEANgJUAkACQAJAIAINAEEAIQkMAQtBACEJIAJBBWotAABBAnFFDQEgAigCNA0BIAIoAhwhCSACQQA2AhwgCCACQQEQkISAgAALQQAhAgsgACABEMmEgIAAIgpFDQUgCCgCECELAkACQCAKKAJIIgwNAEHA+0IhDQwBCyALQQxqIQdBfyENA0AgDUEBaiENIAcoAgAhDiAHQRBqIQcgDiAMRw0ACwtBACEHIABBEiAKKAIAQQAgCyANQQR0aigCABCwhICAAA0FIAooAiQhDkEAIQcgACAKQf0AQQAgBkHMAGoQ0IWAgAAhDyAKKAIMIRAgACAKELmEgIAADQUgACAKIAYoAkwQ0oWAgAANBSAAEKiEgIAAIhFFDQUCQCAALQASDQAgESARLwCJAUEgcjsAiQELIAAoAmwhByAAIA0Qy4SAgAAgByAAIAcbIgcgBygCUEEBIA10cjYCUCAHIActABQgAiAPckEAR3I6ABQCQCADDQAgAkUNACAAKAKAAg0AIAIoAkANACAAKAIAIQcgACAKEJiFgIAADQAgCigCOA0AIAQhDAJAIARBC0cNAAJAIAouAShBAEgNACAKLQAyIgxBC0cNAQtBAiEMCyACKAIgIgsoAgBBAUcNACALQRxqKAIADQAgAigCJA0AIAIoAjANACACKAIoDQAgAigCPA0AIAIoAjQNACACLQAEQQFxDQAgAigCHCISKAIAQQFHDQAgEigCBC0AAEGxAUcNACAAQQAgC0EIahCyhICAACILRQ0AAkAgCygCHCAKKAIcRw0AIAsoAkggCigCSEYNAQsgCygCJCAKKAIkc0GAAXENACALKAI4DQAgCygCDA0A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akFuakEIOwEAC0GM4IKAACENAkAgBigCAC0AUQ0AIAYoAmggDEF/aiAAIABBAEgbQRRsaiENCyANIAw2AggLCyQAAkAgABCohICAACIARQ0AIABBjgEgAUEAQQAQ9oGAgAAaCwvHAQMDfwJ+AX8gAigCABDagICAAKciA0EBakF+cSIEQQN0QTxqIgWsIQYgAigCBBDagICAACEHAkACQCAAKAIAKAIgIghFDQAgCCAGEOOAgIAAIQIMAQsgBhDPgICAACECCwJAIAINACAAEM6BgIAADwsgAkEAIAUQtIiAgAAiAiACQTxqIgU2AhggAiAHpzYCDCACIAM2AgggAkEANgIAIAIgCDYCOCACIAUgBEECdGo2AhQgACACQTxBAEHagICAABDFgYCAAAsXAAJAIABFDQAgACgCOCAAEMSAgIAACwuDAgMBfwF+An8gAigCABC5gYCAACEDIAIoAgQQ2oCAgAAhBAJAAkAgAygCAEUNAAJAIASnIgVBAUgNACADKAIUIQIgBSEGA0AgAiACKAIAQQFqNgIAIAJBBGohAiAGQX9qIgYNAAsLIAMoAgggBUwNASADKAIYIAVBAnQiBmohAiADKAIUIAZqIQYDQCACIAIoAgBBAWo2AgAgBkEBNgIAIAJBBGohAiAGQQRqIQYgBUEBaiIFIAMoAghIDQAMAgsLIAMoAghBAUgNACADKAIUIQJBACEGA0AgAkEBNgIAIAJBBGohAiAGQQFqIgYgAygCCEgNAAsLIAMgAygCAEEBajYCAAu4AgMFfwF+AX8jgICAgABBIGsiAySAgICAAAJAAkAgAigCABC5gYCAACICKAIMQRlsQRlqIgSsEM+AgIAAIgUNACAAEM6BgIAADAELQQAhBiAFQQAgBBC0iICAACEEIAMgAjUCADcDEEEYIARBiZCCgAAgA0EQahDsgICAACEHAkAgAigCDEEBSA0AIAcgBxC4iICAAEH/////A3FqIQRBACEFA0AgAyACKAIYIAZqKAIAQQFqrSIIIAI1AgB8Qn98IAiANwMAAkACQEEYIARBjpCCgAAgAxDsgICAACIEDQBBACEJDAELIAQQuIiAgABB/////wNxIQkLIAZBBGohBiAEIAlqIQQgBUEBaiIFIAIoAgxIDQALCyAAIAdBf0EBQZyAgIAAEMWBgIAACyADQSBqJICAgIAA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QRgQ1oGAgAAhAAwBCyADKAIQIQALIABFDQBBASEDIAIoAgBBARC8gYCAACEEAkAgAUECRw0AIAIoAgRBARC8gYCAACEDCwJAAkAgACgCECIBIAMgBGoiAkoNACAAQQA2AhAMAQsgACABIAJrIgE2AhAgACgCBCIDIAMgAmogARCziICAABogACgCEA0BCyAAQQA2AgwLC5oOBQV/AX4BfwJ+C38jgICAgABB0AJrIgMkgICAgAAgACgCACgCICEEIAIoAgBBARDlgICAACEFIAIoAgxBARDlgICAACEGIAIoAhBBARDlgICAACEHIAIoAhQQ2oCAgAAhCCACKAIYQQEQ5YCAgAAhCSACKAIcENqAgIAAIQogAigCIBDagICAACELAkAgCKciDEEASA0AIAVFDQAgB0UNACAJRQ0AIAQoAsACIQ0gBCAHIAYQ+oGAgAAiDkUNACAMIA4uASpODQAgDigCBCAMQRRsaigCACEPIANBwAJqIhBCADcDACAEQQA2AsACIANByAJqQQA2AgAgEEF/IAwgDCAOLgEoRhs2AgAgA0IANwO4AiADQShqIAYgBCAFIAunIhEQ1IeAgAAhECADQQhqQRRqQQA2AgAgA0IANwIUIANB24CAgAA2AhAgA0HcgICAADYCDCADIA42AsQCIAMgA0G4Amo2AiAgAyADQShqNgIIAkACQCAQDQACQAJAIAMoAoQCIhJFDQACQCASKAIMIgZFDQAgBiAGKAIEQf///35xNgIEIANBADYCNCADQShqIAZBABCahYCAAEEHIAMoAjQgBC0AURsiEA0DIANBCGogBhChhoCAABoMAgsCQAJAIBIoAgAiBkUNACAHIQ4DQAJAAkAgDi0AACIQIAYtAAAiEUcNACAQDQEgAyASNgLEAiASKAIEIAxBFGxqKAIAIRAgA0GwAmoiEiEOAkADQCAOIhEoAgAiBkUNASAGQQxqIQ4gBigCACAQRw0ACyARIAYoAgw2AgAgBiADKAK4AjYCDCADIAY2ArgCIAMgAygCvAJBAWo2ArwCCwJAIAMoAsACQX9KDQAgAygChAJBKGohEANAIBIiDigCACIGRQ0BIAZBDGohEiAGKAIAIBBHDQALIA4gBigCDDYCACAGIAMoArgCNgIMIAMgBjYCuAIgAyADKAK8AkEBajYCvAILIANBCGogAygChAIo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cSICDQACQAJAIARBEE8NACAEIQIMAQsgBEFwaiECA0AgAyABKAIANgIAIANBBGogAUEEaigCADYCACADQQhqIAFBCGooAgA2AgAgA0EMaiABQQxqKAIANgIAIANBEGohAyABQRBqIQEgBEFwaiIEQQ9LDQALCwJAIAJBCHFFDQAgAyABKQIANwIAIAFBCGohASADQQhqIQMLAkAgAkEEcUUNACADIAEoAgA2AgAgAUEEaiEBIANBBGohAwsCQCACQQJxRQ0AIAMgAS0AADoAACADIAEtAAE6AAEgA0ECaiEDIAFBAmohAQsgAkEBcUUNASADIAEtAAA6AAAgAA8LAkAgBEEgSQ0AIAJBf2oiAkECSw0AAkACQAJAIAIOAwABAgALIAMgAS0AAToAASADIAEoAgAiBToAACADIAEtAAI6AAIgBEF9aiEGIANBA2ohByAEQWxqQXBxIQhBACECA0AgByACaiIDIAEgAmoiCUEEaigCACIKQQh0IAVBGHZyNgIAIANBBGogCUEIaigCACIFQQh0IApBGHZyNgIAIANBCGogCUEMaigCACIKQQh0IAVBGHZyNgIAIANBDGogCUEQaigCACIFQQh0IApBGHZyNgIAIAJBEGohAiAGQXBqIgZBEEsNAAsgByACaiEDIAEgAmpBA2ohASAEIAhrQW1qIQQMAgsgAyABKAIAIgU6AAAgAyABLQABOgABIARBfmohBiADQQJqIQcgBEFsakFwcSEIQQAhAgNAIAcgAmoiAyABIAJqIglBBGooAgAiCkEQdCAFQRB2cjYCACADQQRqIAlBCGooAgAiBUEQdCAKQRB2cjYCACADQQhqIAlBDGooAgAiCkEQdCAFQRB2cjYCACADQQxqIAlBEGooAgAiBUEQdCAKQRB2cjYCACACQRBqIQIgBkFwaiIGQRFLDQALIAcgAmohAyABIAJqQQJqIQEgBCAIa0FuaiEEDAELIAMgASgCACIFOgAAIARBf2ohBiADQQFqIQcgBEFsakFwcSEIQQAhAgNAIAcgAmoiAyABIAJqIglBBGooAgAiCkEYdCAFQQh2cjYCACADQQRqIAlBCGooAgAiBUEYdCAKQQh2cjYCACADQQhqIAlBDGooAgAiCkEYdCAFQQh2cjYCACADQQxqIAlBEGooAgAiBUEYdCAKQQh2cjYCACACQRBqIQIg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AQNAAkAgAiADQQN2QRxxaigCACADQR9xdkEBcUUNACABIQQMAgsgAS0AASEDIAFBAWoiBCEBIAMNAAsLIAJBIGokgICAgAAgBCAAawu0AQEDfyAAIQECQAJAAkAgAEEDcUUNAAJAIAAtAAANACAAIABrDwsgAEEBaiEBA0AgAUEDcUUNASABLQAAIQIgAUEBaiIDIQEgAkUNAgwACwsgAUF8aiEBA0AgAUEEaiIBKAIAIgJBf3MgAkH//ft3anFBgIGChHhxRQ0ACwJAIAJB/wFxDQAgASAAaw8LA0AgAS0AASECIAFBAWoiAyEBIAINAAwCCwsgA0F/aiEDCyADIABrC48BAQN/AkAgAg0AQQAPC0EAIQMCQCAALQAAIgRFDQAgAEEBaiEAIAJBf2ohAgNAAkAgBEH/AXEgAS0AACIFRg0AIAQhAwwCCwJAIAINACAEIQMMAgsCQCAFDQAgBCEDDAILIAJBf2ohAiABQQFqIQEgAC0AACEEIABBAWohACAEDQALCyADQf8BcSABLQAAaws7AQJ/IAFB/wFxIQMDQAJAIAINAEEADwsgACACaiEBIAJBf2oiBCECIAFBf2otAAAgA0cNAAsgACAEagsXACAAIAEgABC4iICAAEEBahC6iICAAAvgAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNAAJAIAIgAIQgBiAFhIRQRQ0AQQAPCwJAIAMgAYNCAFMNAEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQL2AECAX8CfkF/IQQCQCAAQgBSIAFC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAJCAFIgA0L///////////8AgyIGQoCAgICAgMD//wBWIAZCgICAgICAwP//AFEbDQACQCACIACEIAYgBYSEUEUNAEEADwsCQCADIAGDQgBTDQAgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAuwAgMBfwR+AX8jgICAgABBEGsiAiSAgICAACABvSIDQoCAgICAgICAgH+DIQQCQAJAIANC////////////AIMiBUKAgICAgICAeHxC/////////+//AFYNACAFQjyGIQYgBUIEiEKAgICAgICAgDx8IQUMAQsCQCAFQoCAgICAgID4/wBUDQAgA0I8hiEGIANCBIhCgICAgICAwP//AIQhBQwBCwJAIAVQRQ0AQgAhBkIAIQUMAQsCQAJAIAVCgICAgBBUDQAgBUIgiKdnIQcMAQsgA6dnQSBqIQcLIAIgBUIAIAdBMWoQxIiAgAAgAkEIaikDAEKAgICAgIDAAIVBjPgAIAdrrUIwhoQhBSACKQMAIQYLIAAgBjcDACAAIAUgBIQ3AwggAkEQaiSAgICAAAucAQEDfyOAgICAAEEQayICJICAgIAAQQAhAwJAIAFCMIinQf//AXEiBEH//wBJDQACQCAEQYGAf2pBIEkNAEGAgICAeEH/////ByABQgBTGyEDDAELIAIgACABQv///////z+DQoCAgICAgMAAhEHvgAEgBGsQyIiAgABBACACKAIAIgNrIAMgAUIAUxshAwsgAkEQaiSAgICAACADC6ABAwF/AX4BfyOAgICAAEEQayICJICAgIAAAkACQCABUEUNAEIAIQFCACEDDAELIAIgASABQj+HIgN8IAOFIgNCACADeaciBEExahDEiICAACACQQhqKQMAQoCAgICAgMAAhUG+gAEgBGutQjCGfCABQoCAgICAgICAgH+DhCEDIAIpAwAhAQsgACABNwMAIAAgAzcDCCACQRBqJICAgIAAC54BAwF/An4BfyOAgICAAEEQayICJICAgIAAAkACQCABDQBCACEDQgAhBAwBCyACIAEgAUEfdSIFaiAFcyIFrUIAIAVnIgVB0QBqEMSIgIAAIAJBCGopAwBCgICAgICAwACFQZ6AASAFa61CMIZ8IAFBgICAgHhxrUIghoQhBCACKQMAIQMLIAAgAzcDACAAIAQ3AwggAkEQaiSAgICAAAv+AwMBfwJ+AX8jgICAgABBIGsiAiSAgICAAAJAAkAgAUL///////////8AgyIDQoCAgICAgMD/Q3wgA0KAgICAgIDAgLx/fFoNACAAQjyIIAFCBIaEIQMCQCAAQv//////////D4MiAEKBgICAgICAgAhUDQAgA0KBgICAgICAgMAAfCEEDAILIANCgICAgICAgIDAAHwhBCAAQoCAgICAgICACIVCAFINASAEQgGDIAR8IQQMAQsCQCAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbDQAgAEI8iCABQgSGhEL/////////A4NCgICAgICAgPz/AIQhBAwBC0KAgICAgICA+P8AIQQgA0L///////+//8MAVg0AQgAhBCADQjCIpyIFQZH3AEkNACACIAAgAUL///////8/g0KAgICAgIDAAIQiA0GB+AAgBWsQyIiAgAAgAkEQaiAAIAMgBUH/iH9qEMSIgIAAIAIpAwAiA0I8iCACQQhqKQMAQgSGhCEEAkAgA0L//////////w+DIAIpAxAgAkEQakEIaikDAIRCAFKthCIDQoGAgICAgICACFQNACAEQgF8IQQMAQsgA0KAgICAgICAgAiFQgBSDQAgBEIBgyAEfCEECyACQSBqJICAgIAAIAQgAUKAgICAgICAgIB/g4S/C6QLBAF/A34DfwF+I4CAgIAAQfAAayIFJICAgIAAIARC////////////AIMhBgJAAkACQCABQn98IgdCf1EgAkL///////////8AgyIIIAcgAVStfEJ/fCIHQv///////7///wBWIAdC////////v///AFEbDQAgA0J/fCIHQn9SIAYgByADVK18Qn98IgdC////////v///AFQgB0L///////+///8AURsNAQsCQCABUCAIQoCAgICAgMD//wBUIAhCgICAgICAwP//AFEbDQAgAkKAgICAgIAghCEEIAEhAwwCCwJAIANQIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURsNACAEQoCAgICAgCCEIQQMAgsCQCABIAhCgICAgICAwP//AIWEQgBSDQBCgICAgICA4P//ACACIAMgAYUgBCAChUKAgICAgICAgIB/hYRQIgkbIQRCACABIAkbIQMMAgsgAyAGQoCAgICAgMD//wCFhFANAQJAIAEgCIRCAFINACADIAaEQgBSDQIgAyABgyEDIAQgAoMhBAwCCyADIAaEUEUNACABIQMgAiEEDAELIAMgASADIAFWIAYgCFYgBiAIURsiChshBiAEIAIgChsiCEL///////8/gyEHIAIgBCAKGyICQjCIp0H//wFxIQsCQCAIQjCIp0H//wFxIgkNACAFQeAAaiAGIAcgBiAHIAdQIgkbeSAJQQZ0rXynIglBcWoQxIiAgABBECAJayEJIAVB6ABqKQMAIQcgBSkDYCEGCyABIAMgChshAyACQv///////z+DIQECQCALDQAgBUHQAGogAyABIAMgASABUCIKG3kgCkEGdK18pyIKQXFqEMSIgIAAQRAgCmshCyAFQdgAaikDACEBIAUpA1AhAwsgAUIDhiADQj2IhEKAgICAgICABIQhBCAHQgOGIAZCPYiEIQEgA0IDhiEDIAggAoUhBwJAIAkgC2siCkUNAAJAIApB/wBNDQBCACEEQgEhAwwBCyAFQcAAaiADIARBgAEgCmsQxIiAgAAgBUEwaiADIAQgChDIiICAACAFKQMwIAUpA0AgBUHAAGpBCGopAwCEQgBSrYQhAyAFQTBqQQhqKQMAIQQLIAFCgICAgICAgASEIQwgBkIDhiECAkACQCAHQn9VDQACQCACIAN9IgEgDCAEfSACIANUrX0iA4RQRQ0AQgAhA0IAIQQMAwsgA0L/////////A1YNASAFQSBqIAEgAyABIAMgA1AiCht5IApBBnStfKdBdGoiChDEiICAACAJIAprIQkgBUEoaikDACEDIAUpAyAhAQwBCyAEIAx8IAMgAnwiASADVK18IgNCgICAgICAgAiDUA0AIAFCAYggA0I/hoQgAUIBg4QhASAJQQFqIQkgA0IBiCEDCyAIQoCAgICAgICAgH+DIQICQCAJQf//AUgNACACQoCAgICAgMD//wCEIQRCACEDDAELQQAhCgJAAkAgCUEATA0AIAkhCgwBCyAFQRBqIAEgAyAJQf8AahDEiICAACAFIAEgA0EBIAlrEMiIgIAAIAUpAwAgBSkDECAFQRBqQQhqKQMAhEIAUq2EIQEgBUEIaikDACEDCyABQgOIIANCPYaEIQYgA0IDiEL///////8/gyAChCAKrUIwhoQhBCABp0EHcSEJAkACQAJAEMaIgIAAIgpBAk0NACAGIQMMAQsCQAJAAkAgCg4DAAECAAsgBCAGIAlBBEutfCIDIAZUrXwhBCAJQQRHDQIgBCADQgGDIgEgA3wiAyABVK18IQQMAwsgBCAGIAJCAFIgCUEAR3GtfCIDIAZUrXwhBAwBCyAEIAYgAlAgCUEAR3GtfCIDIAZUrXwhBAsgCUUNAQsQx4iAgAAaCyAAIAM3AwAgACAENwMIIAVB8ABqJICAgIAAC10BAX4CQAJAAkAgA0HAAHFFDQAgASADQUBqrYYhAkIAIQEMAQsgA0UNASABQcAAIANrrYggAiADrSIEhoQhAiABIASGIQELIAJCAIQhAgsgACABNwMAIAAgAjcDCAvdEgYBfwN+A38BfgF/CH4jgICAgABBwAFrIgUkgICAgAAgBEL///////8/gyEGIAJC////////P4MhByAEIAKFQoCAgICAgICAgH+DIQggBEIwiKdB//8BcSEJAkACQAJAAkAgAkIwiKdB//8BcSIKQX9qQf3/AUsNAEEAIQsgCUF/akH+/wFJDQELAkAgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbDQAgAkKAgICAgIAghCEIDAILAkAgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbDQAgBEKAgICAgIAghCEIIAMhAQwCCwJAIAEgDEKAgICAgIDA//8AhYRCAFINAAJAIAMgAkKAgICAgIDA//8AhYRQRQ0AQgAhAUKAgICAgIDg//8AIQgMAwsgCEKAgICAgIDA//8AhCEIQgAhAQwCCwJAIAMgAkKAgICAgIDA//8AhYRCAFINAEIAIQEMAgsgASAMhEIAUQ0CAkAgAyAChEIAUg0AIAhCgICAgICAwP//AIQhCEIAIQEMAgtBACELAkAgDEL///////8/Vg0AIAVBsAFqIAEgByABIAcgB1AiCxt5IAtBBnStfKciC0FxahDEiICAAEEQIAtrIQsgBUG4AWopAwAhByAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyAGIAMgBiAGUCING3kgDUEGdK18pyINQXFqEMSIgIAAIA0gC2pBcGohCyAFQagBaikDACEGIAUpA6ABIQMLIAVBkAFqIANCMYggBkKAgICAgIDAAIQiDkIPhoQiAkIAQoTJ+c6/5ryC9QAgAn0iBEIAEMmIgIAAIAVBgAFqQgAgBUGQAWpBCGopAwB9QgAgBEIAEMmIgIAAIAVB8ABqIAUpA4ABQj+IIAVBgAFqQQhqKQMAQgGGhCIEQgAgAkIAEMmIgIAAIAVB4ABqIARCAEIAIAVB8ABqQQhqKQMAfUIAEMmIgIAAIAVB0ABqIAUpA2BCP4ggBUHgAGpBCGopAwBCAYaEIgRCACACQgAQyYiAgAAgBUHAAGogBEIAQgAgBUHQAGpBCGopAwB9QgAQyYiAgAAgBUEwaiAFKQNAQj+IIAVBwABqQQhqKQMAQgGGhCIEQgAgAkIAEMmIgIAAIAVBIGogBEIAQgAgBUEwakEIaikDAH1CABDJiICAACAFQRBqIAUpAyBCP4ggBUEgakEIaikDAEIBhoQiBEIAIAJCABDJiICAACAFIARCAEIAIAVBEGpBCGopAwB9QgAQyYiAgAAgCyAKIAlraiEJAkACQEIAIAUpAwBCP4ggBUEIaikDAEIBhoRCf3wiDEL/////D4MiBCACQiCIIg9+IhAgDEIgiCIMIAJC/////w+DIhF+fCICQiCGIhIgBCARfnwiESASVK0gAkIgiCACIBBUrUIghoQgDCAPfnx8IBEgBCADQhGIQv////8PgyIPfiIQIAwgA0IPhkKAgP7/D4MiEn58IgJCIIYiEyAEIBJ+fCATVK0gAkIgiCACIBBUrUIghoQgDCAPfnx8fCICIBFUrXwgAkIAUq18fSIRQv////8PgyIPIAR+IhAgDyAMfiISIAQgEUIgiCITfnwiEUIghnwiDyAQVK0gEUIgiCARIBJUrUIghoQgDCATfnx8IA9CACACfSICQiCIIhEgBH4iECACQv////8PgyISIAx+fCICQiCGIhMgEiAEfnwgE1StIAJCIIggAiAQVK1CIIaEIBEgDH58fHwiAiAPVK18IAJCfnwiECACVK18Qn98IhFC/////w+DIgIgAUI+iCAHQgKGhEL/////D4MiBH4iDyABQh6IQv////8PgyIMIBFCIIgiEX58IhIgD1StIBIgEEIgiCIPIAdCHohC///v/w+DQoCAEIQiB358IhMgElStfCAHIBF+fCACIAd+IhQgBCARfnwiEiAUVK1CIIYgEkIgiIR8IBMgEkIghnwiEiATVK18IBIgDyAMfiIUIBBC/////w+DIhAgBH58IhMgFFStIBMgAiABQgKGQvz///8PgyIUfnwiFSATVK18fCITIBJUrXwgEyAUIBF+IhIgECAHfnwiESAPIAR+fCIEIAIgDH58IgJCIIggESASVK0gBCARVK18IAIgBFStfEIghoR8IhEgE1StfCARIBUgDyAUfiIEIBAgDH58IgxCIIggDCAEVK1CIIaEfCIEIBVUrSAEIAJCIIZ8IARUrXx8IgQgEVStfCICQv////////8AVg0AIAFCMYYgBEL/////D4MiASADQv////8PgyIMfiIRQgBSrX1CACARfSIQIARCIIgiESAMfiISIAEgA0IgiCIPfnwiB0IghiITVK19IAJC/////w+DIAx+IAEgBkL/////D4N+fCARIA9+fCAHQiCIIAcgElStQiCGhHwgBCAOQiCIfiADIAJCIIh+fCACIA9+fCARIAZ+fEIghnx9IQwgECATfSEBIAlBf2ohCQwBCyAEQiGIIQ8gAUIwhiAEQgGIIAJCP4aEIgRC/////w+DIgEgA0L/////D4MiDH4iEUIAUq19QgAgEX0iECABIANCIIgiEX4iEiAPIAJCH4aEIhNC/////w+DIgcgDH58Ig9CIIYiFFStfSAHIBF+IAJCAYgiB0L/////D4MgDH58IAEgBkL/////D4N+fCAPQiCIIA8gElStQiCGhHwgBCAOQiCIfiADIAJCIYh+fCAHIBF+fCATIAZ+fEIghnx9IQwgECAUfSEBIAchAgsCQCAJQYCAAUgNACAIQoCAgICAgMD//wCEIQhCACEBDAELIAlB//8AaiEKAkAgCUGBgH9KDQACQCAKDQAgAkL///////8/gyAEIAFCAYYgA1YgDEIBhiABQj+IhCIBIA5WIAEgDlEbrXwiASAEVK18IgNCgICAgICAwACDUA0AIAMgCIQhCAwCC0IAIQEMAQsgCq1CMIYgAkL///////8/g4QgBCABQgGGIANaIAxCAYYgAUI/iIQiASAOWiABIA5RG618IgEgBFStfCAIhCEICyAAIAE3AwAgACAINwMIIAVBwAFqJICAgIAADwsgAEIANwMAIAAgCEKAgICAgIDg//8AIAMgAoRCAFIbNwMIIAVBwAFqJICAgIAACwQAQQALBABBAAtlAQF+AkACQAJAIANBwABxRQ0AIAIgA0FAaq2IIQFCACEEQgAhAgwBCyADRQ0BIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAkIAIQQLIAQgAYQhAQsgACABNwMAIAAgAjcDCAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgQgAUIgiCICfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgAn58IgNCIIh8IANC/////w+DIAQgAX58IgNCIIh8NwMIIAAgA0IghiAFQv////8Pg4Q3AwALkQwGAX8IfgN/AX4BfwZ+I4CAgIAAQeAAayIFJICAgIAAIANCEYggBEIvhoQhBiABQiCIIAJCIIaEIQcgA0IxiCAEQv///////z+DIghCD4aEIQkgBCAChUKAgICAgICAgIB/gyEKIAhCEYghCyACQv///////z+DIgxCIIghDSAEQjCIp0H//wFxIQ4CQAJAAkAgAkIwiKdB//8BcSIPQX9qQf3/AUsNAEEAIRAgDkF/akH+/wFJDQELAkAgAVAgAkL///////////8AgyIRQoCAgICAgMD//wBUIBFCgICAgICAwP//AFEbDQAgAkKAgICAgIAghCEKDAILAkAgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbDQAgBEKAgICAgIAghCEKIAMhAQwCCwJAIAEgEUKAgICAgIDA//8AhYRCAFINAAJAIAMgAoRQRQ0AQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCwJAIAMgAkKAgICAgIDA//8AhYRCAFINACABIBGEIQJCACEBAkAgAlBFDQBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCwJAIAEgEYRCAFINAEIAIQEMAgsCQCADIAKEQgBSDQBCACEBDAILQQAhEAJAIBFC////////P1YNACAFQdAAaiABIAwgASAMIAxQIhAbeSAQQQZ0rXynIhBBcWoQxIiAgABBECAQayEQIAUpA1AiAUIgiCAFQdgAaikDACIMQiCGhCEHIAxCIIghDQsgAkL///////8/Vg0AIAVBwABqIAMgCCADIAggCFAiEht5IBJBBnStfKciEkFxahDEiICAACAQIBJrQRBqIRAgBSkDQCIDQjGIIAVByABqKQMAIgJCD4aEIQkgA0IRiCACQi+GhCEGIAJCEYghCwsgBkL/////D4MiAiABQv////8PgyIEfiITIANCD4ZCgID+/w+DIgEgB0L/////D4MiA358IgZCIIYiCCABIAR+fCIHIAhUrSAC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AgICAgICAoAAAABAgCoqKioqKiIiIiIiIiIiIiIiIiIiIiIiIiIiAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFJFSU5ERVhFREVTQ0FQRUFDSEVDS0VZQkVGT1JFSUdOT1JFR0VYUExBSU5TVEVBRERBVEFCQVNFTEVDVEFCTEVGVEhFTkRFRkVSUkFCTEVMU0VYQ0xVREVMRVRFTVBPUkFSWUlTTlVMTFNBVkVQT0lOVEVSU0VDVElFU05PVE5VTExJS0VYQ0VQVFJBTlNBQ1RJT05BVFVSQUxURVJBSVNFWENMVVNJVkVYSVNUU0NPTlNUUkFJTlRPRkZTRVRSSUdHRVJBTkdFTkVSQVRFREVUQUNIQVZJTkdMT0JFR0lOTkVSRUZFUkVOQ0VTVU5JUVVFUllXSVRIT1VURVJFTEVBU0VBVFRBQ0hCRVRXRUVOT1RISU5HUk9VUFNDQVNDQURFRkFVTFRDQVNFQ09MTEFURUNSRUFURUNVUlJFTlRfREFURUlNTUVESUFURUpPSU5TRVJUTUFUQ0hQTEFOQUxZWkVQUkFHTUFCT1JUVVBEQVRFVkFMVUVTVklSVFVBTFdBWVNXSEVOV0hFUkVDVVJTSVZFQUZURVJFTkFNRUFOREVGRVJSRURJU1RJTkNUQVVUT0lOQ1JFTUVOVENBU1RDT0xVTU5DT01NSVRDT05GTElDVENST1NTQ1VSUkVOVF9USU1FU1RBTVBBUlRJVElPTkRST1BSRUNFRElOR0ZBSUxBU1RGSUxURVJFUExBQ0VGSVJTVEZPTExPV0lOR0ZST01GVUxMSU1JVElGT1JERVJFU1RSSUNUT1RIRVJTT1ZFUklHSFRST0xMQkFDS1JPV1NVTkJPVU5ERURVTklPTlVTSU5HVkFDVVVNVklFV0lORE9XQllJTklUSUFMTFlQUklNQVJZAAAAAAAAAAAAAAACAAIACAAJAA4AEAAUABcAGQAZAB0AIQAkACkALgAwADUANgA7AD4AQQBDAEUATgBRAFYAWgBaAF4AYwBlAGkAbwB3AHsA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U2F2ZXBvaW50AEF1dG9Db21taXQAVHJhbnNhY3Rpb24AU29ydGVyTmV4dABQcmV2AE5leHQAQ2hlY2twb2ludABKb3VybmFsTW9kZQBWYWN1dW0AVkZpbHRlcgBWVXBkYXRlAEdvdG8AR29zdWIASW5pdENvcm91dGluZQBZaWVsZABNdXN0QmVJbnQASnVtcABPbmNlAElmAE5vdABJZk5vdABJZk51bGxSb3cAU2Vla0xUAFNlZWtMRQBTZWVrR0UAU2Vla0dUAElmTm90T3BlbgBJZk5vSG9wZQBOb0NvbmZsaWN0AE5vdEZvdW5kAEZvdW5kAFNlZWtSb3dpZABOb3RFeGlzdHMATGFzdABJZlNtYWxsZXIAU29ydGVyU29ydABTb3J0AFJld2luZABJZHhMRQBJZHhHVABJZHhMVABJZHhHRQBSb3dTZXRSZWFkAE9yAEFuZABSb3dTZXRUZXN0AFByb2dyYW0ARmtJZlplcm8ASWZQb3MASWZOb3RaZXJvAElzTnVsbABOb3ROdWxsAE5lAEVxAEd0AExlAEx0AEdlAEVsc2VOb3RFcQBEZWNySnVtcFplcm8ASW5jclZhY3V1bQBWTmV4dABJbml0AFB1cmVGdW5jAEZ1bmN0aW9uAFJldHVybgBFbmRDb3JvdXRpbmUASGFsdElmTnVsbABIYWx0AEludGVnZXIASW50NjQAU3RyaW5nAE51bGwAU29mdE51bGwAQmxvYgBWYXJpYWJsZQBNb3ZlAENvcHkAU0NvcHkASW50Q29weQBSZXN1bHRSb3cAQ29sbFNlcQBBZGRJbW0AUmVhbEFmZmluaXR5AENhc3QAUGVybXV0YXRpb24AQ29tcGFyZQBJc1RydWUAT2Zmc2V0AENvbHVtbgBBZmZpbml0eQBNYWtlUmVjb3JkAENvdW50AFJlYWRDb29raWUAU2V0Q29va2llAFJlb3BlbklkeABPcGVuUmVhZABPcGVuV3JpdGUAT3BlbkR1cABPcGVuQXV0b2luZGV4AE9wZW5FcGhlbWVyYWwAQml0QW5kAEJpdE9yAFNoaWZ0TGVmdABTaGlmdFJpZ2h0AEFkZABTdWJ0cmFjdABNdWx0aXBseQBEaXZpZGUAUmVtYWluZGVyAENvbmNhdABTb3J0ZXJPcGVuAEJpdE5vdABTZXF1ZW5jZVRlc3QAT3BlblBzZXVkbwBTdHJpbmc4AENsb3NlAENvbHVtbnNVc2VkAFNlZWtIaXQAU2VxdWVuY2UATmV3Um93aWQASW5zZXJ0AERlbGV0ZQBSZXNldENvdW50AFNvcnRlckNvbXBhcmUAU29ydGVyRGF0YQBSb3dEYXRhAFJvd2lkAE51bGxSb3cAU2Vla0VuZABTb3J0ZXJJbnNlcnQASWR4SW5zZXJ0AElkeERlbGV0ZQBEZWZlcnJlZFNlZWsASWR4Um93aWQARmluaXNoU2VlawBEZXN0cm95AENsZWFyAFJlc2V0U29ydGVyAENyZWF0ZUJ0cmVlAFNxbEV4ZWMAUGFyc2VTY2hlbWEATG9hZEFuYWx5c2lzAERyb3BUYWJsZQBEcm9wSW5kZXgARHJvcFRyaWdnZXIASW50ZWdyaXR5Q2sAUm93U2V0QWRkAFBhcmFtAEZrQ291bnRlcgBSZWFsAE1lbU1heABPZmZzZXRMaW1pdABBZ2dJbnZlcnNlAEFnZ1N0ZXAAQWdnU3RlcDEAQWdnVmFsdWUAQWdnRmluYWwARXhwaXJlAEN1cnNvckxvY2sAQ3Vyc29yVW5sb2NrAFRhYmxlTG9jawBWQmVnaW4AVkNyZWF0ZQBWRGVzdHJveQBWT3BlbgBWQ29sdW1uAFZSZW5hbWUAUGFnZWNvdW50AE1heFBnY250AFRyYWNlAEN1cnNvckhpbnQAUmVsZWFzZVJlZwBOb29wAEV4cGxhaW4AQWJvcnRhYmxlAGsoJWQAQklOQVJZAEIALCVzJXMlcwAtAE4uACkAKCUuMjBzKQAlcyglZCkAJWQAJS4xNmcAKGJsb2IpAHZ0YWI6JXAALCVkAF0AcHJvZ3JhbQAAAAAAAABwGAAAeRgAAIAYAACGGAAATk9UIE5VTEwAVU5JUVVFAENIRUNLAEZPUkVJR04gS0VZACVzIGNvbnN0cmFpbnQgZmFpbGVkACV6OiAlcwBhYm9ydCBhdCAlZCBpbiBbJXNdOiAlcwABAAABAQAAAQABAAEBAAEAAAEAAAAAAQIAAgIAAQIBAQECAQIQAAICY2Fubm90IG9wZW4gc2F2ZXBvaW50IC0gU1FMIHN0YXRlbWVudHMgaW4gcHJvZ3Jlc3MAbm8gc3VjaCBzYXZlcG9pbnQ6ICVzAGNhbm5vdCByZWxlYXNlIHNhdmVwb2ludCAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAGNhbm5vdCBjb21taXQgdHJhbnNhY3Rpb24gLSBTUUwgc3RhdGVtZW50cyBpbiBwcm9ncmVzcwBjYW5ub3Qgc3RhcnQgYSB0cmFuc2FjdGlvbiB3aXRoaW4gYSB0cmFuc2FjdGlvbgBjYW5ub3Qgcm9sbGJhY2sgLSBubyB0cmFuc2FjdGlvbiBpcyBhY3RpdmUAY2Fubm90IGNvbW1pdCAtIG5vIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQBkYXRhYmFzZSBzY2hlbWEgaGFzIGNoYW5nZWQAc3FsaXRlX21hc3RlcgBTRUxFQ1QqRlJPTSIldyIuJXMgV0hFUkUgJXMgT1JERVIgQlkgcm93aWQAdG9vIG1hbnkgbGV2ZWxzIG9mIHRyaWdnZXIgcmVjdXJzaW9uAHN0YXRlbWVudCBhYm9ydHMgYXQgJWQ6IFslc10gJXMAb3V0IG9mIG1lbW9yeQAAAQIDBAYICAAAAAAAAAEBAgIDAwQEBQUGBgcHCAgJCQoKCwsMDA0NDg4PDxAQERESEhMTFBQVFRYWFxcYGBkZGhobGxwcHR0eHh8fICAhISIiIyMkJCUlJiYnJygoKSkqKisrLCwtLS4uLy8wMDExMjIzMzQ0NTU2Njc3ODg5ORAQAhAAAAAAAAAAAAAAAAAAAAIAAwAFAAYABwAIAAkAAAECAwQGCAAAAHRhYmxlAHNxbGl0ZV90ZW1wX21hc3RlcgAxAENSRUFURSBUQUJMRSB4KHR5cGUgdGV4dCxuYW1lIHRleHQsdGJsX25hbWUgdGV4dCxyb290cGFnZSBpbnQsc3FsIHRleHQpAGF0dGFjaGVkIGRhdGFiYXNlcyBtdXN0IHVzZSB0aGUgc2FtZSB0ZXh0IGVuY29kaW5nIGFzIG1haW4gZGF0YWJhc2UAdW5zdXBwb3J0ZWQgZmlsZSBmb3JtYXQAU0VMRUNUKkZST00iJXciLiVzIE9SREVSIEJZIHJvd2lkAGNyZWF0ZSAAaW52YWxpZCByb290cGFnZQBvcnBoYW4gaW5kZXgAPwBtYWxmb3JtZWQgZGF0YWJhc2Ugc2NoZW1hICglcykAJXogLSAlcwBzdGF0ZW1lbnQgdG9vIGxvbmcAc3FsaXRlX3N0YXQxAFNFTEVDVCB0YmwsaWR4LHN0YXQgRlJPTSAlUS5zcWxpdGVfc3RhdDEAdW5vcmRlcmVkKgBzej1bMC05XSoAbm9za2lwc2NhbioAIQAgAB4AHAAaAE1haW4gZnJlZWxpc3Q6IABtYXggcm9vdHBhZ2UgKCVkKSBkaXNhZ3JlZXMgd2l0aCBoZWFkZXIgKCVkKQBpbmNyZW1lbnRhbF92YWN1dW0gZW5hYmxlZCB3aXRoIGEgbWF4IHJvb3RwYWdlIG9mIHplcm8AUGFnZSAlZCBpcyBuZXZlciB1c2VkAFBvaW50ZXIgbWFwIHBhZ2UgJWQgaXMgcmVmZXJlbmNlZABmYWlsZWQgdG8gZ2V0IHBhZ2UgJWQAZnJlZWxpc3QgbGVhZiBjb3VudCB0b28gYmlnIG9uIHBhZ2UgJWQAJXMgaXMgJWQgYnV0IHNob3VsZCBiZSAlZABzaXplAG92ZXJmbG93IGxpc3QgbGVuZ3RoAGludmFsaWQgcGFnZSBudW1iZXIgJWQAMm5kIHJlZmVyZW5jZSB0byBwYWdlICVkAAoARmFpbGVkIHRvIHJlYWQgcHRybWFwIGtleT0lZABCYWQgcHRyIG1hcCBlbnRyeSBrZXk9JWQgZXhwZWN0ZWQ9KCVkLCVkKSBnb3Q9KCVkLCVkKQBQYWdlICVkOiAAdW5hYmxlIHRvIGdldCB0aGUgcGFnZS4gZXJyb3IgY29kZT0lZABidHJlZUluaXRQYWdlKCkgcmV0dXJucyBlcnJvciBjb2RlICVkAGZyZWUgc3BhY2UgY29ycnVwdGlvbgBPbiB0cmVlIHBhZ2UgJWQgY2VsbCAlZDogAE9uIHBhZ2UgJWQgYXQgcmlnaHQgY2hpbGQ6IABPZmZzZXQgJWQgb3V0IG9mIHJhbmdlICVkLi4lZABFeHRlbmRzIG9mZiBlbmQgb2YgcGFnZQBSb3dpZCAlbGxkIG91dCBvZiBvcmRlcgBDaGlsZCBwYWdlIGRlcHRoIGRpZmZlcnMATXVsdGlwbGUgdXNlcyBmb3IgYnl0ZSAldSBvZiBwYWdlICVkAEZyYWdtZW50YXRpb24gb2YgJWQgYnl0ZXMgcmVwb3J0ZWQgYXMgJWQgb24gcGFnZSAlZAAAAAAAAAAAAAAAAAAAAEQgAABLIAAAUyAAAFcgAABgIAAAZGVsZXRlAHBlcnNpc3QAb2ZmAHRydW5jYXRlAG1lbW9yeQBjYW5ub3QgVkFDVVVNIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24AY2Fubm90IFZBQ1VVTSAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAG5vbi10ZXh0IGZpbGVuYW1lAEFUVEFDSCAlUSBBUyB2YWN1dW1fZGIAb3V0cHV0IGZpbGUgYWxyZWFkeSBleGlzdHMAQkVHSU4AU0VMRUNUIHNxbCBGUk9NICIldyIuc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZSdBTkQgbmFtZTw+J3NxbGl0ZV9zZXF1ZW5jZScgQU5EIGNvYWxlc2NlKHJvb3RwYWdlLDEpPjAAU0VMRUNUIHNxbCBGUk9NICIldyIuc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSdpbmRleCcAU0VMRUNUJ0lOU0VSVCBJTlRPIHZhY3V1bV9kYi4nfHxxdW90ZShuYW1lKXx8JyBTRUxFQ1QqRlJPTSIldyIuJ3x8cXVvdGUobmFtZSlGUk9NIHZhY3V1bV9kYi5zcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJ0FORCBjb2FsZXNjZShyb290cGFnZSwxKT4wAElOU0VSVCBJTlRPIHZhY3V1bV9kYi5zcWxpdGVfbWFzdGVyIFNFTEVDVCpGUk9NICIldyIuc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlIElOKCd2aWV3JywndHJpZ2dlcicpIE9SKHR5cGU9J3RhYmxlJ0FORCByb290cGFnZT0wKQABAQMABQAGAAgAQ1JFAElOUwBubyBzdWNoIG1vZHVsZTogJXMAdnRhYmxlIGNvbnN0cnVjdG9yIGNhbGxlZCByZWN1cnNpdmVseTogJXMAdnRhYmxlIGNvbnN0cnVjdG9yIGZhaWxlZDogJXMAdnRhYmxlIGNvbnN0cnVjdG9yIGRpZCBub3QgZGVjbGFyZSBzY2hlbWE6ICVzAGhpZGRlbgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJpbmQgb24gYSBidXN5IHByZXBhcmVkIHN0YXRlbWVudDogWyVzXQAAAAAAAAAAAAAAAAEBAQAQAAEAAQEBAwMBAQMS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aW5jcmVtZW50YWxfdmFjdXVtAGluZGV4X2luZm8AaW5kZXhfbGlzdABpbmRleF94aW5mbwBpbnRlZ3JpdHlfY2hlY2sAam91cm5hbF9tb2RlAGpvdXJuYWxfc2l6ZV9saW1pdABsZWdhY3lfYWx0ZXJfdGFibGUAbG9ja2luZ19tb2RlAG1heF9wYWdlX2NvdW50AG1tYXBfc2l6ZQBtb2R1bGVfbGlzdABvcHRpbWl6ZQBwYWdlX2NvdW50AHBhZ2Vfc2l6ZQBwcmFnbWFfbGlzdABxdWVyeV9vbmx5AHF1aWNrX2NoZWNrAHJlYWRfdW5jb21taXR0ZWQAcmVjdXJzaXZlX3RyaWdnZXJzAHJldmVyc2VfdW5vcmRlcmVkX3NlbGVjdHMAc2NoZW1hX3ZlcnNpb24Ac2VjdXJlX2RlbGV0ZQBzaG9ydF9jb2x1bW5fbmFtZXMAc2hyaW5rX21lbW9yeQBzb2Z0X2hlYXBfbGltaXQAc3luY2hyb25vdXMAdGFibGVfaW5mbwB0YWJsZV94aW5mbwB0ZW1wX3N0b3JlAHRlbXBfc3RvcmVfZGlyZWN0b3J5AHRocmVhZHMAdHJ1c3RlZF9zY2hlbWEAdXNlcl92ZXJzaW9uAHdyaXRhYmxlX3NjaGVtYQBDUkVBVEUgVEFCTEUgeAAlYyIlcyIAwyQAAM0tAAB6GwAA0S0AANYtAADZLQAA4y0AAO0tAADzLQAA9y0AAPwtAAABLgAACS4AABQuAABaIwAAFy4AAPMtAAD3LQAAHS4AACIuAAAnLgAA9y0AACsuAAD8LQAAMy4AADcuAAA8LgAAQi4AAEYuAABKLgAATy4AAFQuAADNLQAA9y0AAFkuAABgLgAAZy4AAHobAABvLgAAxiQAAHUuAADNLQAA9y0AAHouAAB/LgAAhC4AAIguAACVLgAAni4AAIgpAAClLgAAKCIlcyIALGFyZyBISURERU4ALHNjaGVtYSBISURERU4Ac2VxAGZyb20AdG8Ab25fdXBkYXRlAG9uX2RlbGV0ZQBtYXRjaABjaWQAbmFtZQB0eXBlAG5vdG51bGwAZGZsdF92YWx1ZQBwawBzZXFubwBkZXNjAGNvbGwAa2V5AGJ1aWx0aW4AZW5jAG5hcmcAZmxhZ3MAdGJsAGlkeAB3ZHRoAGhnaHQAZmxncwB1bmlxdWUA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xQHGAf8BuwAzAjoCggOdAsEBwQHBAcEBwQHBAcEBwQHBAZ4CwQHBAcEBwQHBAcEBwQHBAcEBwQHBAcEBogKiAqICwQHBAcEBwQEKBMEBwQHBAcwDUwTBAcEBqQTBAcEBwQHBAcEBwQHBAcEBBAGxAOkB2QTZBNkE2QSoBOkB6QG4A60EcQLTBHMEtQC1AD4EcwRzBD4EowRrBNUEIgUiBSIFtQDdBN0EVQQTBSUCPAVGBvsF+wVnBmcG+wUCBigGhQZvBgoGjQaNBo0GjQb7BZ0GCgYKBigGhQZvBm8GCgb7BZ0GHwZ9BvsFnQaqBvsFnQb7BZ0GqgZWBlYGVgaLBrgGuAaqBlYGUwZWBosGVgZWBi4GqgZiBmIGqgZFBnEGRQZxBkUGcQZFBnEG+wWPBo8GmgaaBl0GYwbbBvsFWgZdBmUGaAYKBuAG4gbtBu0G+wb7BvsGpgemB6YHpgemB6YHpgemB6YHpgemB6YHpgemB6YHNAFDA7oD0ARvA8sC2AIrBWADJgXlBF0FKQGBBYsFoAXRBdkF8AXaBB0FpwWbBT0F8QX1BXAFDAYxBUoFMQYzBkkFZgUUBxYHBwd+BhMHwgYVBw8HEAefBpUGqwYSB6AGGQehBh4HLwelBp4Gsgb3BhEHowYABwMHBAcFB7wGzAYdB7UGQAc9By0H0wanBgIHLgcGB/wGIAfABtwGNAc6BzwHzwbWBj4HFwc/B0EHOwdCBxgHGwdEB/MGQwdHBx8HOQdJB8YGSwdMB00HTgdPB1AHUgdTB1UHVAdWB+QGWQdaB/QGUQdXB+UGWwdYB1wHXQdeBxwHKwchB18HMAckB2AHYQdjB2QHaQdqB2UHZgdbB24HbwdxB3IHcAd1B3cHgwd5B3oHewd8B34Hfwd9BwwHCwcNBw4HGgeEB4sHmwecBwAAvQDTAL0AvQDaAL0A3AC9AAsBDAENAb0A0gC9AOQAvQALAQwBDQETANoAvQDTANQA0wDUANMA0wDUANMA1AAfANMA0wDUANMA1AAgASwBJwAVAL0AMAErACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDhABMAvQC3ALgAuQC6AL0A+AAHAewAvwD4AMEA+ADFANAAAQEGAckAyAABAcgAAQFRACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AL0AUAC9AGUAZgBnAGgAaQBqAGsAbABtAG4AbwDqAOsA6gDrADEBMgExAXYAMwExATIBKQEqAfcAVgD3AFgAEwADAfsA/AALAQwBDQEaAIgAiQAFAXkAZQBmAGcAaABpAGoAawBsAG0AbgBvADsAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAAwEjAWkAagBrAGwAbQBuAG8AngC9AEUAZQBmAGcAaABpAGoAawBsAG0AbgBvAGsAbABtAG4AbwDNAM4AzwATABMANgA3ADgAOQA6AB0AcgBzAHQAIQBlAGYAZwBoAGkAagBrAGwAbQBuAG8A6QArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATAH4AfwCUAEEAGADWAMgAOwBDAGUAZgBnAGgAaQBqAGsAbABtAG4AbwAWAL0AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDOAM8A6gDrAGUAZgBnAGgAaQBqAGsAbABtAG4AbwD3AEwAawByADsACwEMAQ0BvQByAHMAdACiAKMAWQATAAcBXAC9ABcANgA3ADgAOQC9AM4AzwAWAGUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATAL0AFQE7ABcAcgBzAHQALgAvADAAMQA9AGUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQB9AH4AfwAVAWUAZgBnAGgAaQBqAGsAbABtAG4AbwA7AL0AvQAUAXIAcwB0AHUASQA7AHgAeQB6AEgA1gATAFEAAwETABcAggBRAEgAGADTANQA3QB3AGUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATAHIAcwB0ABcA0AB9APgAvQC9AHIAcwB0AAsBDAENAb0AiACJAL0ABgEWAIgAiQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQC9AF8A0wDUAGUAZgBnAGgAaQBqAGsAbABtAG4AbwA7AL0AbwC9ADsATAAmAScBdQB2AHcAeAB5AHoAewATAFcAvQBZABcAgQBcABcB4wD4ABYAvQAcAWUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATAHIAcwB0ABcAcgBzAHQAOwB1ACsBLAF4AHkAegAwAb0AvQCPAL0AbgBvAIIAFgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDTANQA0wDUAGUAZgBnAGgAaQBqAGsAbABtAG4AbwDiAL0A4gC9ACoBhAA7AIYAhwByAHMAdAC9ADsAHQETAAcACAAJABcAzQDOAM8A0wDUANMA1ADdAGUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATALUAtgC3ALgAuQC6AHIAcwB0AL0AvwCFAMEAcgBzAHQAigArASwByAAWAMkAMAErACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQAjAL0AjQC9AGUAZgBnAGgAaQBqAGsAbABtAG4AbwDqAOsAFgAXADsAuAAaALoA0wDUANMA1AC/APcAwQATAEIAaQBqAEkAvQDIAL0A4gBKAOIAFgAFAWUAZgBnAGgAaQBqAGsAbABtAG4AbwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQC9AOoA6wAjARMAcgBzAHQAlgA7AJgAvQDpAOwA9wA7AL0AfQB+AH8AOwAsAdMA1ACAADABZAATAAUBnAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AGUAZgBnAGgAaQBqAGsAbABtAG4AbwAuAOkAvQC9ACMB+ABjAL0AfQB+AH8AcwAaAMgAIQHmAOcAcwDIABAAvQByAHMAvQDTANQAdwDdAL0A0wDUAAIBZQBmAGcAaABpAGoAawBsAG0AbgBvAL0AnADTANQA6gDrAL0A0wDUAOoA6wAWAMkAvQCWAJcAmAD3APgATAAQABMA9wD4AHEAvQAYAAEB0wDUAL0AGgBZAAYB3wBcAOEATQC9AE8AgQATADUA4gD4ACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AOwAEwAPAb0AYwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQBzAE0AOwBPAHcAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAAwEWABcAZQBmAGcAaABpAGoAawBsAG0AbgBvADsAlgCXAJgAngAWAPQAGAD2AGUAZgBnAGgAaQBqAGsAbABtAG4AbwAdAb0AvQByAHMAdADIAIgAiQBlAGYAZwBoAGkAagBrAGwAbQBuAG8A5gDnADsA0wDUAB0BaQBqAL0AEwCNAOoA6wDvAHEAcgBzAHQA4gB2AOoA6wC9APkA9wBkAL0AfgAXAOwAawAaAL0A9wAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkA0wDUADsAlgDpAJgA0wDUAIUADABzAL0AvQCKABMAFAAsARYA6QBMADAB4gALANAAGwAWABcAyAATABoAVwAkAFkA0wDUAFwALAH4AL0AKgAwAb0A+gBlAGYAZwBoAGkAagBrAGwAbQBuAG8AOwDIAOkAcgBzAHQAPwDqAOsA6wATABQARwAWACwBvQBJAMgAMAF0APcA9wBRABcAyADjABoAJADqAOsAywDMAI8AyAAaAOoA6wDCAMgAMABjAPcAQgC9AI0AHAFpAGoA9wBkADsA6gDrAHAAAwFyAHMAdADqAOsAdwBVAEcACgH3ANMA1ADqAOsAcgBeAPcA6gDrAAwACgFVAIgAiQC9APcAWgAaAH4AfwD3AL0AGgAWABsAYwCWAJcAmACZAJoAaQBqAL0ALgEvAdMA1ABwACoAcgBzAHQA0wDUAHcALgEvARMAFAC9ABYAEgG9AA8AkAAWAb0AFgAXAD8AvQC9AMsAzAAkAIgAiQCbABgAnQCPANMA1AC9ABoAlgCXAJgAmQCaAAAAAQACANMA1AAFAC4AOwChAJMACgALAAwADQAOANMA1AARADwARwC9AAIBvQA7ADsAaQBqAL0AvQC9AB4AdAAgAFUAfAC9APsA/ABaAL0AKAACAdMA1ADTANQAvQBjABoA0wDUANMA1ABpAGoAZACNANMA1AC9AHAAvQByAHMAdAAYAL0AdwAfABcARgC9ABoAcQATABQAJwAWAE4AcwBzAFEAvQDTANQAFgC9ABgA0wDUAL0AJAC9ANMA1AC9AL0AYQCWAJcAmACZAJoAfwDTANQAvQC9ANMA1AC9AI8A0wDUADsAvQC9ANMA1AAXAL0AvQAaADsAvQCVAEcAFgDTANQAvQCDANMA1AC9ADsAiACJANMA1ABVAL0A0wDUAP0AWgDTANQAJAElAXYAdwDTANQAYwAXANMA1AAaAJ8AaQBqAIwA0wDUABcAvQBwABoAcgBzAHQAAQACAHcAvQAFAAcACABzAIsACgALAAwADQAOABcAvQARABoAvQBzAL0AEwAUAL0AFgC9AFMAVAC9AB4AlgAgAJgAlgCXAJgAmQCaACQAKADTANQA0wDUAL0A0wDUANMA1AA1Ab0AEwAUAL0AFgCWAL0AmADnAL0AvQA7AL0AFwC9AL0AGgC9ACQARgC9ABcAiwBHABoA0wDUAE4A0wDUAFEAGQHTANQA0wDUAL0A0wDUANMA1AA7ANMA1AAXABcAYQAaABoAFwC9AGMAGgBHAL0AdwC9AGkAagBrAL0AvQC9ABgBcACBAHIAcwB0AL0AvQB3ABcAEwAUABoAFgC9ANMA1ACDAGMA7QDTANQAiACJAGkAagC9ACQA0wDUAL0AcAC9AHIAcwB0ANMA1AB3AJYAlwCYAJkAmgC9AJ8AFwC9ABcAGgA7ABoAvQC9AL0AvQC9AL0A0QC9AO4AuwBHAPoA+gD6ANMA1ADxAJYAlwCYAJkAmgDTANQA+gAiAf4A0wDUANMA1AD+ANcAHgHxAPEA/gAeAWMA1gDcANYA1gDgAGkAagD0APAA9AARAcAAcAA8AHIAcwB0AIsAIgF3AAUAxADuAMQAJgAKAAsADAANAA4AxAAfAREAlAAfARQBcQArABYA5QCTAPEAEgDoAOgAHgDoACAA6AAIAZYAlwCYAJkAmgAoAAkBxAASAMMACAHxAPEA8QAJAcQA5QDlAMMAmwA+AMQAwwAbARoBFgDYAMQAwwDYAMQAwwBxANUA1QBGAEAA1QDeABYAfACiAG8ATgCOANsAUQDXANsAEwEvAdUA1QDYABMB1QDYANUAAAFxAP8A/wBhAN4A2AAAAcQAWwAAAVIA/wA0AZIANAEWAI8AxAAOAZsAkQAQAZAAGQANAMcAGgAAAcYAvgC+AAYAKAG8ALwAvAD0AIMA9QD1APMA8gCIAIkA8QD/ANAABAEEAdAAygDZANkAygAEAAMAygDQANAAFgCgANEA0QDQAA8AnwBiABAAFwAXAIkAlAAYAIAAjAAUABAAjgABAIwAgACVAD0ANQAlAJQANQA1ADUAJQGAACgBcgAiAIsAAQAFABYAcQCeAEQASwAaACkARACLABgAcQAUABMAgQB7ABcAYAAWABYAOwAWABYAkwBDAEMAGAAWACUAHAAXABYAQwAXABcAFwByABcAFgAaABYAGAAXABYAGACLABcAFwCNACIAWAAaAEsAVgAXABYAIgBLABgAFwAiACIAIgBdACIAGgAaABcAFwAiABcAFwAaACwAFwAWAAsAFgAWAIUAFwAXABYAFgCLABoAiwCLAA8AFwABAAEANgE2ATYBNgE2ATYBNgGLADYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBAAAAAAAAAAAAACACxAQgAsEB6gQgAtUEIAJyAG8A0wAgAv8FIALqBAkCcgBvANMAhgHOBFYBKgAqACoAKgDHBCoAKgBHAEcApwPGBEcARwBHAEcAtAXTBagDMgPDAQYAeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgABQaGAUwF6wUmAgIApwTCAA4CsgGPACMBDgKIAA4CcQEFAfYBEAF/AfcEDQL1AesBpAB5AHoAcACLBIsE7APvA+UD5QN3AHcAeAB4AHgAeABMBbgB6AV2AHYAdgB2AHUAdQB0AHQAdABzAKYBCgEKAQoBCgHYBWQB2gWxAWMB2AUDAgoCywUdAlgEHQJYBIYBkwHxANAAcgBvANMAYgAiARcC3QADBHYAdgB2AHYAdQB1AHQAdAB0AHMApgF0BHkAegBwAIsEiwTsA+8D5QPlA3cAdwB4AHgAeAB4AJQBqgF1AHUAdAB0AHQAcwCmAYgF0gF7AHYAdgB2AHYAdQB1AHQAdAB0AHMApgF0AHQAdABzAKYBGgIaAhoChgH3AXgAeAB4AHgAcQAZBHQEdQR2BBkEdgB2AHYAdgB1AHUAdAB0AHQAcwCmAbMFeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAhgG6AToBUwDNAVEAZQF8AXQEUAB2AHYAdgB2AHUAdQB0AHQAdABzAKYBswCwAaYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAsAGvAQoBCgF2AHYAdgB2AHUAdQB0AHQAdABzAKYBHQJTBIUD+AF0BHIAbwDTAJUFdAR1BHYEzgDpAVMEhgG/AVMEHwJIAXgAeAB4AHgAKgGVBZcFEQB2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAhgFMBbABdATgAXQEdQR2BOID4gPtA/ADuwF2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAHAQcBM8BlQV2AHYAdgB2AHUAdQB0AHQAdABzAKYBdATBASACkAV0BHUEdgTpAMQDdATfAdwB2wGrAGYBhgGkAJUBnAFIA9oBpAC5AEwBRwBHANkE5gN2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAhgF0BHUEdgRBAwwAOQH7AaMAYgF0BHUEdgRyAG8A0wD6ASIBFwIgAhQBtAAiARcCeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAVwHiAUcARwB2AHYAdgB2AHUAdQB0AHQAdABzAKYBdATRAJkBCQJ0BFMEIQZ4AfwADQFUAeUBTwHkAe4AhgH/AWoBUwRlBEsBUwS/AJcBHgEgAMcBuQF2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAhgF0BHUEdgTZA3QEdQR2BHQE6QDqAdIF3wHcAdsBBgCjACAC/gEgAnMApgHaAQUAeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgADQANAA0ADQB2AHYAdgB2AHUAdQB0AHQAdABzAKYBkQH0AZYBIALMBR4CdAR6A3oDdAR1BHYEvwV0BBMBhgEmAycDKAPJA6QBpAGkARAAEAA3ADcA2AR2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAhgGjBAEAAQAmAgIApwR0BHUEdgTCACMBgAOIAHQEdQR2BH8DBwLSBfcEAwB6AQYAeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAWAMgApoDIAJ2AHYAdgB2AHUAdQB0AHQAdABzAKYBCgEKAUIEHwZ0BCUCHwanBA0ADQANAA0AIwEdAogAhgHjAaMBogHEA1YB9wTSAZgBWQMXAYwA3QB2AHYAdgB2AHUAdQB0AHQAdABzAKYBeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAIAIKAQoBqgGGAXQEdQR2BJIEPAOSBNIBrQGRAB0CeASPATkBtQEtAUQD0AVHAEcAmgEGAEAE1wHdAGQAcACLBIsE7APvA+UD5QN3AHcAeAB4AHgAeAB2AHYAdgB2AHUAdQB0AHQAdABzAKYB7QCPBSACwQGqAR8B2AMgAuwA6wDqADwDYQAPAqsB7wTvBHgE7AEyAawBRAPPAyACRwBHAM4D1wQgAjMAMwAsAXYAdgB2AHYAdQB1AHQAdAB0AHMApgHCAGcARgBGAAoBCgEgAkcARwAKAQoBHgCFAVYBzgPOA9ADHQIOAlMERgGGAR0C7QGLAbwFwwAQAg0ADQBMBfAAUwQVARgBUwQYAS8BxwExAUsBhgEfALwAoQF5AHoAcACLBIsE7APvA+UD5QN3AHcAeAB4AHgAeACOAIYBawHHAdgDeQB6AHAAiwSLBOwD7wPlA+UDdwB3AHgAeAB4AHgAzwNBAXQERAHOA3kAbgBwAIsEiwTsA+8D5QPlA3cAdwB4AHgAeAB4AM4BdwGfBHYAdgB2AHYAdQB1AHQAdAB0AHMApgF0BM4DzgPQAzABCQBsAfQAaAF2AHYAdgB2AHUAdQB0AHQAdABzAKYBOAEgAlYBdAR1BHYEKwEiARcCdgB2AHYAdgB1AHUAdAB0AHQAcwCmAe0E7QSJBA0ADQAWAaMBogHSAYYBmQMEAQQBIQGPBHQEdQR2BL0AkQQKAQoB0gGEAR0CoAQgApAEBwGQAOcBmAMgAh0CegBwAIsEiwTsA+8D5QPlA3cAdwB4AHgAeAB4AEcARwB0BJIE9gSSBA0ADQCAAywEiQQgAtIBfwNrABgC0QUEAPIEUwQGAAsCFwQMAC0EQgQgBjcBxQEgBgYCGwJTBDgAOABTBM8FpQFMBS4EBgBXAR0BdgB2AHYAdgB1AHUAdAB0AHQAcwCmAacB9QQ/AXQEdQR2BGwDCgEKAfsEawAYAhUCBADOBSUBbQO5BAYA0gAdAh0CpAAEBu4BngFhAxsCCwELAbwEjAH9AfEBzAAKAQoBigERAggA2AMdAgUCIAKYA8gBaQBpAB0CQASnAQoBCgFqAJ8BpwEiAiECCgEKAc4DBAIVAlsFHQIPAA8ACgEKAcYBXgQdAgoBCgEsBFoFAQIiARcCIAIdAgACYQC6AToBHQIgApgDfQAtBNgDzgPOA9AD0QMbAGkAaQCPAVUB5QUsACwAagAuBKcBIgIhAjkAOQDOA1UB5QVrABgCIAIEAMwBjwHWAF4EyQEmAXcBQQQUAikBIAIZAowBGwIiARcCaAD0AGYADAI6ADoAIAJtAM4DzgPQA9EDGwDqBWkEqQE7ADsADgHtAKcBigBfAHUBdQF0Af8AcgE8ADwALwOaBBUCIAIRASACiQRLA4MBggEgAhsFIALXANIAKAEBAk8DIAIJAdAAAgIaBScBEgE9AD0APgA+ALQB2AOIBC0ALQAuAC4AaQBpAKAEmAMvAC8AwgVqACACpwEiAiEC2gAgAs4DpwM9BNkAIAJ5AYsBawAYAqgDBACcAIkESwOeACACMQAxAI0AIAImADIAMgAgAhsCMwE/AD8AIAKoBdgAzgPOA9AD0QMbALwBQABAACACpwVBAEEAIAIMAg4ADgCnAcoBIAJCAEIANgEgAjwBYQAKBCACwQMVAgwBfwB/ACAChwFDAEMAIALSAyIBFwI0ADQAAQIgAkQARAAOBQACRQBFAI0BpQBXA1YDNQA1ANgDxgOXAJcA8wCuAWkAaQDHAJgAmADAARcFagDzAKcBIgIhAmkEqQHOA0ABDgFeA18DCgTcAHUBdQF0Af8AcgHCAUMBLwPzACAC0gMgAmsAGAIgAgQAIAKqA6sDRQHXABYEKAEWBM4DzgPQA9EDGwAbAicBTABMADYANgBHAUgASACAAIAA3wXmBGsAGAIgAgQAFQQgAhUEEwLWBCACpwEgAjsBTgEgAmEAIAIbAtkAIALYAfgFFQLvAEkASQCcAIEAgQCeANMBggCCAH4AfgBYAZYAlgCVAJUApwGGAIYASQEGBNgAYQDvAKEDWQHYA/MAFQIjBVMBIAJpAGkAhANLBSACCgUCAWoAUgGnASICIQIgAhUFzgN9A2MAGAJtAAQAIAKFAIUAhwHYA8UAgwCDACIBFwJpAGkAEgIbAoQAhABRBWoAwwSnASICIQJLAEsAzgPOA84D0APRAxsAIAKuAToDuwR+A4sApwFtACACsASvBLEE8gUgAskAIAILAHYBFQIHBVsBXQFNAE0APAXOA84D0APRAxsASgBKAF8B1QCzASsAKwAwADAALgHdATUBRAV+AWEBxAHYA1EB1QSMBYsFzQBpAGkAwABvAcEAFgL1BWoAmgSnASICIQL3AKcAzgMOAbsFyAC5BZcEdQF1AXQB/wByAY4BTwAvA1MAUgCRBb4BoQCxAKkAXwA5BbYBrACtANcArgAoAa8AIwDOA84D0APRAxsAJwFBBbcB1gHfACQAewG9AYYFfQHLAUcFtQDjAFgA0QEDAeUAnAU+AboA1AFCAeYAgAGyBOcA5gHpBOgE2QCbAecE4ARaAE8DzgCdAZwA+QEDBp4AygQCBhsB5AXLBFABgQEcAckE8AEBBhIFXgBaAVwB2ADfBPMBEwX1APYAEQWgAV4B1gV8ANUFCgAMAmkBeAVlAGAAIAH8Af0AbwS4BCIAEAUjAv4AAAEBAYgBJAKtBKgEZwGHAQAF/wTEAG0BIgEXAm4BYAGsBSoFKQWtBZkAiQAZAZoAIgOoAZsAqwWqBcYAJAHKAMsATgDUAK4BDwGHABQEEgS+A6gA2wCdAKoAbwM0Ad4AIgSwAJ8AwgOQAVQAkgGyAFUAVgBXAKYAoACJASUE4ADhACEEkgASAOIAPQEaBJQE8wDQAbYA5AAlALcAMQPVAVIB6ABKAeEBuABZAE0DEwAUAFwA2QHeAU0BWwCiAFoDkwDoARoBYwSUAPIDoANFBCcAXQAoAO8BRgS7APIBzwAGAQgBmwPyAFUEbQBZBFcESQQhABUAXQQIAgEEFgAXABgAXAQZAL4AYQDzA/EDGgD1AysE+AAHACoE+QD2AxwAKQB5A9MDOwNsAB0A+gAcAvsA+gVzAXABawRqBKQEpASkBKQEpASkBKQE+QUAAAAAJQYlBiUGgQWiBA8FogSiBKIEgQWBBYEFogQtBS0FtgXBBKIEogSiBKIEogSiBKIEogSiBKIEgAWiBKIEogSiBNQF1AWiBKIEogSiBKIEogSiBKIEogQ2BaIEogSiBKIEogSiBIIFgwWiBKIEogS1BbcFkgVABT8FPgU9BaQFIAU7BTQFOAV8BX0FewV/BYMFggWiBDcFXwVtBV4FogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEZwVsBXIFawVoBWEFYAViBWMFogS3BOsEogSiBKIEogTIBccFogSiBMEEWQVYBWQFZQVvBW4FvQX3BfYFkwWiBKIEogSiBKIEogTUBaIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBNQF1AWiBMEE1AXUBb0EvQQnBaIEwwUPBQYFogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBLoFuAWiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBAsFogSiBKIEogSiBKIEogSiBKIEogSiBPEFogSfBfkECwULBQsFCwUNBfoE+AQFBcIEqQQdBjoFIgUiBRoGOgU6BRoG0gQHBs0ELQUtBS0FIgUnBScFfgUMBQUFogQdBhQFFAUcBhwGFAWTBUMFSQXuBDoF9AT0BPQE9AQUBbQEOgU6BUMFSQXuBO4EOgUUBbQEowUXBhQFtASJBRQFtAQUBbQEiQXsBOwE7AThBKIEogSJBewE0gTsBOEE7ATsBOYFiQWNBY0FiQUmBSEFJgUhBSYFIQUmBSEFFAXeBd4FMAUwBTUFJwWEBRQFogQ1BTMFMQU6BboE5AT0BfQF8AXwBfAFIgYiBsMFAAbBBMEEwQTBBAAG1ATUBMIEwgTBBAAGogSiBKIEogSiBKIE+wWiBJQFGAWiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIETgWiBKUEwAWiBKIEvgWiBKIEogSiBKIEogQZBaIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBBkGogSiBKIEogSiBKIEogWhBaIEogQWBaIEogSiBKIEogSiBKIEogSiBKIEogSiBKIE0ASiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEMgWiBKIEogSiBKIEogSiBKIEogSiBKIEogSiBKIE4wUoBaIEogQQBqIEogSiBKIEogSiBKIEogSiBKIEogSiBKIEogQLBvwEUAWiBE8FUwWiBK4EogSiBAAA//3//QD////+/v79+/r/AP3/APv+AP7+APz6/gAA/v38/Pz9/fv+/Pz//v38AP8A/v79/f3+/v///v3+AP7+AP/++fv79gAA/QD+///8/gD3/P/9/P/9//7/9/b8+///AAD7/fv+AAD+/gD59/n5AP7//f/9+/3//v38/gAA/f78AAD9+/3//wD+/gAA/QD+AP78/PoA/vj7+f37+fkA9fj8/v8A/f3//f///fv//////fr7/Pr7//v9/f39/f39/f79+/79/fz+/v7//vv//vv9+/v8+/v8/gD/AAD9/wD99P8AAP37/QD+/P79/gD9+/r7+v7++/X//gD///0A/v3+/f3++Pj6/fz6/////Pr9AP7//f/9+vn/+P/8+AD//f/+/fr4//37+/r8+//+AP36///+//7+/gD+/v7//v7///z++//+///+/QD//v8A/vz+//////////4A/vz+/v3/AP/////+/////////////wD9/wD/AAD///3+APz+AHVua25vd24gdGFibGUgb3B0aW9uOiAlLipzAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNldCBsaXN0AG5lYXIgIiVUIjogc3ludGF4IGVycm9yADAAcXVhbGlmaWVkIHRhYmxlIG5hbWVzIGFyZSBub3QgYWxsb3dlZCBvbiBJTlNFUlQsIFVQREFURSwgYW5kIERFTEVURSBzdGF0ZW1lbnRzIHdpdGhpbiB0cmlnZ2VycwB0aGUgSU5ERVhFRCBCWSBjbGF1c2UgaXMgbm90IGFsbG93ZWQgb24gVVBEQVRFIG9yIERFTEVURSBzdGF0ZW1lbnRzIHdpdGhpbiB0cmlnZ2VycwB0aGUgTk9UIElOREVYRUQgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIFVQREFURSBvciBERUxFVEUgc3RhdGVtZW50cyB3aXRoaW4gdHJpZ2dlcnMAALkAuQC4ALoAuwC7ALsAuwC6ALoAugC6ALoAvwDBAMMAwwDCAMIAwADAAMcAxwDJAMsAywDLAMwA0ADRANIA0gDSANIA0gDSANIA0gDSANIA0gDSANIA2wDbANcA1wDZANkA3ADcANwA3ADdAN0A3QDdAN0A2gDaAN4A3gDeAMYA4ADhAOEA4QDhAOEA5ADVANUA5QDlAOYA5gC6AOgA6AC6ALoAugDIAMgAyADqAO0A7QDtAOsA6wD3APcA7gDuAO4A+QDvAO8A7wD6APoA8ADwAPwA/AD7APsA+wD7AMQAxADpAOkAAgECAQIBAgH9AP0A/QD9AP8A/wD+AP4A/gAAAQAB9AD0AOIA4gDWANYA1gAEAQQBBAHyAPIA8wDzAPUA9QD1APUAugDxAPEAugAGAQYBBgEGAboAugAJAQkBCQEJAQcBBwEIAQgBAwEDAdQA1ADUANQA1ADTANMA0wDUANQA1ADUANQA1ADUANMA1ADUANQA1ADUANQA1ADUANQACwHUANQA1ADUANQA1ADUANQA1AAMAQwB1AANAQ0B1ADUANQA1ADUANQAEAEQAREBEQEPAQ8BAQH4APgADgEOAboAEgESAdgA2ADjAOMAEwETAboAugC6ABQBFAG6ALoAugC6ALoAzgDPALoAFgEYARgBGAEZARkBGQEbARsBFwEXAR0BHgEeARwBHAEcARwB1ADUAOcA5wDnALoAugC6ACABIAG6ALoAugC6ALoAugAhAboAugC6ACMBJQEmASYBJwEFAQUB7ADsACkBKQEqASsBKwErASsBKwErASwBLAEsATABMgEyATMBMwExATEBNAE0ATUBNQE1AfYACgEKAQoBLwEvAS4BtQC2ALYAtwC3ALcAvAC8ALwAvgC+ALoAxQDFAL0AvQC9AMsAzADNAM0AygDKANIA0gDSAMYA3wDfAOAA5ADmAOoA6wD5APoA1AALAQEBFQEVARUBFQEVAc4AGgEaAR0BHgEfAR8BIgEiASQBJAElASgBKAEoAQUBcGFyc2VyIHN0YWNrIG92ZXJmbG93AAAAAAAAAAAASAAAACUACgBZAAAANAAJAH8AAABZAAEAUgAAAE0AAAALAAsABQACAEUAAAB0AAAAQgBDAEQARQBnZW5lcmF0ZWQgY29sdW1uIGxvb3Agb24gIiVzIgBtaXN1c2Ugb2YgYWdncmVnYXRlOiAlcygpAHVua25vd24gZnVuY3Rpb246ICVzKCkAJWQgY29sdW1ucyBhc3NpZ25lZCAlZCB2YWx1ZXMAcm93IHZhbHVlIG1pc3VzZWQAUkFJU0UoKSBtYXkgb25seSBiZSB1c2VkIHdpdGhpbiBhIHRyaWdnZXItcHJvZ3JhbQAlcyVzADB4AGhleCBsaXRlcmFsIHRvbyBiaWc6ICVzJXMAdW5zYWZlIHVzZSBvZiAlcygpAHN1Yi1zZWxlY3QgcmV0dXJucyAlZCBjb2x1bW5zIC0gZXhwZWN0ZWQgJWQAUkVVU0UgU1VCUVVFUlkgJWQAJXNTQ0FMQVIgU1VCUVVFUlkgJWQAQ09SUkVMQVRFRCAARQBVU0lORyBST1dJRCBTRUFSQ0ggT04gVEFCTEUgJXMgRk9SIElOLU9QRVJBVE9SAFVTSU5HIElOREVYICVzIEZPUiBJTi1PUEVSQVRPUgBSRVVTRSBMSVNUIFNVQlFVRVJZICVkACVzTElTVCBTVUJRVUVSWSAlZABub3QgYXV0aG9yaXplZABhdXRob3JpemVyIG1hbGZ1bmN0aW9uAFJPTExCQUNLAENPTU1JVAAAAAD+IAAAvGQAAJ1kAABSRUxFQVNFAHRlbXBvcmFyeSB0YWJsZSBuYW1lIG11c3QgYmUgdW5xdWFsaWZpZWQAdmlldwACBAgGdGFibGUgJVQgYWxyZWFkeSBleGlzdHMAdGhlcmUgaXMgYWxyZWFkeSBhbiBpbmRleCBuYW1lZCAlcwBzcWxpdGVfc2VxdWVuY2UABgAAAAAAY29ycnVwdCBkYXRhYmFzZQB1bmtub3duIGRhdGFiYXNlICVUAHNxbGl0ZV8Ab2JqZWN0IG5hbWUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZTogJXMAQVVUT0lOQ1JFTUVOVCBub3QgYWxsb3dlZCBvbiBXSVRIT1VUIFJPV0lEIHRhYmxlcwBQUklNQVJZIEtFWSBtaXNzaW5nIG9uIHRhYmxlICVzAG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbm9uLWdlbmVyYXRlZCBjb2x1bW4AVEFCTEUAVklFVwBDUkVBVEUgJXMgJS4qcwBVUERBVEUgJVEuJXMgU0VUIHR5cGU9JyVzJywgbmFtZT0lUSwgdGJsX25hbWU9JVEsIHJvb3RwYWdlPSMlZCwgc3FsPSVRIFdIRVJFIHJvd2lkPSMlZABDUkVBVEUgVEFCTEUgJVEuc3FsaXRlX3NlcXVlbmNlKG5hbWUsc2VxKQB0YmxfbmFtZT0nJXEnIEFORCB0eXBlIT0ndHJpZ2dlcicAdGhlICIuIiBvcGVyYXRvcgBzZWNvbmQgYXJndW1lbnQgdG8gbGlrZWxpaG9vZCgpIG11c3QgYmUgYSBjb25zdGFudCBiZXR3ZWVuIDAuMCBhbmQgMS4wAG5vdCBhdXRob3JpemVkIHRvIHVzZSBmdW5jdGlvbjogJXMAbm9uLWRldGVybWluaXN0aWMgZnVuY3Rpb25zACUuKnMoKSBtYXkgbm90IGJlIHVzZWQgYXMgYSB3aW5kb3cgZnVuY3Rpb24Ad2luZG93AGFnZ3JlZ2F0ZQBtaXN1c2Ugb2YgJXMgZnVuY3Rpb24gJS4qcygpAG5vIHN1Y2ggZnVuY3Rpb246ICUuKnMAd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbiAlLipzKCkARklMVEVSIG1heSBub3QgYmUgdXNlZCB3aXRoIG5vbi1hZ2dyZWdhdGUgJS4qcygpAHN1YnF1ZXJpZXMAcGFyYW1ldGVycwBwYXJ0aWFsIGluZGV4IFdIRVJFIGNsYXVzZXMAaW5kZXggZXhwcmVzc2lvbnMAQ0hFQ0sgY29uc3RyYWludHMAZ2VuZXJhdGVkIGNvbHVtbnMAJXMgcHJvaGliaXRlZCBpbiAlcwBuZXcAb2xkAGV4Y2x1ZGVkAG1pc3VzZSBvZiBhbGlhc2VkIGFnZ3JlZ2F0ZSAlcwBtaXN1c2Ugb2YgYWxpYXNlZCB3aW5kb3cgZnVuY3Rpb24gJXMAZG91YmxlLXF1b3RlZCBzdHJpbmcgbGl0ZXJhbDogIiV3IgBubyBzdWNoIGNvbHVtbgBhbWJpZ3VvdXMgY29sdW1uIG5hbWUAJXM6ICVzLiVzLiVzAFJPV0lEACVzLiVzACVzLiV6AGFjY2VzcyB0byAleiBpcyBwcm9oaWJpdGVkAFJBTkdFIHdpdGggb2Zmc2V0IFBSRUNFRElORy9GT0xMT1dJTkcgcmVxdWlyZXMgb25lIE9SREVSIEJZIGV4cHJlc3Npb24ARklMVEVSIGNsYXVzZSBtYXkgb25seSBiZSB1c2VkIHdpdGggYWdncmVnYXRlIHdpbmRvdyBmdW5jdGlvbnMAcm93X251bWJlcgBkZW5zZV9yYW5rAHJhbmsAcGVyY2VudF9yYW5rAGN1bWVfZGlzdABudGlsZQBsZWFkAGxhZwAAAAAAAAAAGGoAAEwAAABaAAAAVQAAACNqAABZAAAAWgAAAFUAAAAuagAAWQAAAFoAAABVAAAAM2oAAFwAAABVAAAAWgAAAEBqAABcAAAAVgAAAFoAAABKagAATAAAAFUAAABaAAAAUGoAAEwAAABaAAAAWgAAAFVqAABMAAAAWgAAAFUAAABubyBzdWNoIHdpbmRvdzogJXMAYSBHUk9VUCBCWSBjbGF1c2UgaXMgcmVxdWlyZWQgYmVmb3JlIEhBVklORwBPUkRFUgBHUk9VUABhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgR1JPVVAgQlkgY2xhdXNlAHRvbyBtYW55IHJlZmVyZW5jZXMgdG8gIiVzIjogbWF4IDY1NTM1AGFjY2VzcyB0byB2aWV3ICIlcyIgcHJvaGliaXRlZAB1bnNhZmUgdXNlIG9mIHZpcnR1YWwgdGFibGUgIiVzIgAqACVzLiVzLiVzAG5vIHN1Y2ggdGFibGU6ICVzAG5vIHRhYmxlcyBzcGVjaWZpZWQAdG9vIG1hbnkgY29sdW1ucyBpbiByZXN1bHQgc2V0AG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gcmVjdXJzaXZlIHRhYmxlOiAlcwBjaXJjdWxhciByZWZlcmVuY2U6ICVzAHRhYmxlICVzIGhhcyAlZCB2YWx1ZXMgZm9yICVkIGNvbHVtbnMAbXVsdGlwbGUgcmVjdXJzaXZlIHJlZmVyZW5jZXM6ICVzAHJlY3Vyc2l2ZSByZWZlcmVuY2UgaW4gYSBzdWJxdWVyeTogJXMAY29sdW1uJWQAJS4qejoldQB0cnVlAGZhbHNlAHN1YnF1ZXJ5XyV1ACclcycgaXMgbm90IGEgZnVuY3Rpb24AdmlldyAlcyBpcyBjaXJjdWxhcmx5IGRlZmluZWQAbm8gc3VjaCBpbmRleDogJXMAYSBOQVRVUkFMIGpvaW4gbWF5IG5vdCBoYXZlIGFuIE9OIG9yIFVTSU5HIGNsYXVzZQBjYW5ub3QgaGF2ZSBib3RoIE9OIGFuZCBVU0lORyBjbGF1c2VzIGluIHRoZSBzYW1lIGpvaW4AY2Fubm90IGpvaW4gdXNpbmcgY29sdW1uICVzIC0gY29sdW1uIG5vdCBwcmVzZW50IGluIGJvdGggdGFibGVzACVyICVzIEJZIHRlcm0gb3V0IG9mIHJhbmdlIC0gc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgJWQAdG9vIG1hbnkgdGVybXMgaW4gJXMgQlkgY2xhdXNlAGFsbCBWQUxVRVMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiB0ZXJtcwBTRUxFQ1RzIHRvIHRoZSBsZWZ0IGFuZCByaWdodCBvZiAlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgcmVzdWx0IGNvbHVtbnMAVU5JT04gQUxMAElOVEVSU0VDVABFWENFUFQAVU5JT04AdG9vIG1hbnkgdGVybXMgaW4gT1JERVIgQlkgY2xhdXNlACVyIE9SREVSIEJZIHRlcm0gZG9lcyBub3QgbWF0Y2ggYW55IGNvbHVtbiBpbiB0aGUgcmVzdWx0IHNldABFeHByZXNzaW9uIHRyZWUgaXMgdG9vIGxhcmdlIChtYXhpbXVtIGRlcHRoICVkKQAsAAogIAAsCiAgAAopAENSRUFURSBUQUJMRSAAAAAAAAAAAADEBQAApG8AAKpvAACvbwAAtG8AACBURVhUACBOVU0AIElOVAAgUkVBTABkdXBsaWNhdGUgY29sdW1uIG5hbWU6ICVzAGRlZmF1bHQgdmFsdWUgb2YgY29sdW1uIFslc10gaXMgbm90IGNvbnN0YW50AGNhbm5vdCB1c2UgREVGQVVMVCBvbiBhIGdlbmVyYXRlZCBjb2x1bW4AdGFibGUgIiVzIiBoYXMgbW9yZSB0aGFuIG9uZSBwcmltYXJ5IGtleQBBVVRPSU5DUkVNRU5UIGlzIG9ubHkgYWxsb3dlZCBvbiBhbiBJTlRFR0VSIFBSSU1BUlkgS0VZAGdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSBwYXJ0IG9mIHRoZSBQUklNQVJZIEtFWQB1bnN1cHBvcnRlZCB1c2Ugb2YgTlVMTFMgJXMARklSU1QATEFTVABpbmRleABjYW5ub3QgY3JlYXRlIGEgVEVNUCBpbmRleCBvbiBub24tVEVNUCB0YWJsZSAiJXMiAHRhYmxlICVzIG1heSBub3QgYmUgaW5kZXhlZAB2aWV3cyBtYXkgbm90IGJlIGluZGV4ZWQAdmlydHVhbCB0YWJsZXMgbWF5IG5vdCBiZSBpbmRleGVkAHRoZXJlIGlzIGFscmVhZHkgYSB0YWJsZSBuYW1lZCAlcwBpbmRleCAlcyBhbHJlYWR5IGV4aXN0cwBzcWxpdGVfYXV0b2luZGV4XyVzXyVkAGV4cHJlc3Npb25zIHByb2hpYml0ZWQgaW4gUFJJTUFSWSBLRVkgYW5kIFVOSVFVRSBjb25zdHJhaW50cwBjb25mbGljdGluZyBPTiBDT05GTElDVCBjbGF1c2VzIHNwZWNpZmllZABDUkVBVEUlcyBJTkRFWCAlLipzACBVTklRVUUASU5TRVJUIElOVE8gJVEuJXMgVkFMVUVTKCdpbmRleCcsJVEsJVEsIyVkLCVRKTsAbmFtZT0nJXEnIEFORCB0eXBlPSdpbmRleCcAJXMgJVQgY2Fubm90IHJlZmVyZW5jZSBvYmplY3RzIGluIGRhdGFiYXNlICVzACVzIGNhbm5vdCB1c2UgdmFyaWFibGVzAGluZGV4ICclcScALCAAZm9yZWlnbiBrZXkgb24gJXMgc2hvdWxkIHJlZmVyZW5jZSBvbmx5IG9uZSBjb2x1bW4gb2YgdGFibGUgJVQAbnVtYmVyIG9mIGNvbHVtbnMgaW4gZm9yZWlnbiBrZXkgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlAHVua25vd24gY29sdW1uICIlcyIgaW4gZm9yZWlnbiBrZXkgZGVmaW5pdGlvbgB2aXJ0dWFsIHRhYmxlcyBjYW5ub3QgdXNlIGNvbXB1dGVkIGNvbHVtbnMAdmlydHVhbABzdG9yZWQAZXJyb3IgaW4gZ2VuZXJhdGVkIGNvbHVtbiAiJXMiAHRhYmxlICVzIG1heSBub3QgYmUgZHJvcHBlZAB1c2UgRFJPUCBUQUJMRSB0byBkZWxldGUgdGFibGUgJXMAdXNlIERST1AgVklFVyB0byBkZWxldGUgdmlldyAlcwBzdGF0AHNxbGl0ZV9zdGF0JWQAREVMRVRFIEZST00gJVEuJXMgV0hFUkUgJXM9JVEAREVMRVRFIEZST00gJVEuc3FsaXRlX3NlcXVlbmNlIFdIRVJFIG5hbWU9JVEAREVMRVRFIEZST00gJVEuJXMgV0hFUkUgdGJsX25hbWU9JVEgYW5kIHR5cGUhPSd0cmlnZ2VyJwBERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSBuYW1lPSVRIEFORCB0eXBlPSd0cmlnZ2VyJwBjb3JydXB0IHNjaGVtYQBVUERBVEUgJVEuJXMgU0VUIHJvb3RwYWdlPSVkIFdIRVJFICMlZCBBTkQgcm9vdHBhZ2U9IyVkAHBhcmFtZXRlcnMgYXJlIG5vdCBhbGxvd2VkIGluIHZpZXdzAGV4cGVjdGVkICVkIGNvbHVtbnMgZm9yICclcycgYnV0IGdvdCAlZABDTy1ST1VUSU5FICV1AE1BVEVSSUFMSVpFICV1AERJU1RJTkNUAEdST1VQIEJZAFJJR0hUIFBBUlQgT0YgT1JERVIgQlkAT1JERVIgQlkAdG9vIG1hbnkgRlJPTSBjbGF1c2UgdGVybXMsIG1heDogJWQAJXMgY2xhdXNlIHNob3VsZCBjb21lIGFmdGVyICVzIG5vdCBiZWZvcmUATElNSVQAQ09NUE9VTkQgUVVFUlkATEVGVC1NT1NUIFNVQlFVRVJZACVzIFVTSU5HIFRFTVAgQi1UUkVFAFNDQU4gJWQgQ09OU1RBTlQgUk9XJXMAUwBjYW5ub3QgdXNlIHdpbmRvdyBmdW5jdGlvbnMgaW4gcmVjdXJzaXZlIHF1ZXJpZXMAU0VUVVAAcmVjdXJzaXZlIGFnZ3JlZ2F0ZSBxdWVyaWVzIG5vdCBzdXBwb3J0ZWQAUkVDVVJTSVZFIFNURVAATUVSR0UgKCVzKQBMRUZUAFJJR0hUAAAKCgkJCAgHBwcGBgYFBQUEBAQEAwMDAwMDAgICAgICAm50aF92YWx1ZQBmaXJzdF92YWx1ZQBhdCBtb3N0ICVkIHRhYmxlcyBpbiBhIGpvaW4AU0NBTiBDT05TVEFOVCBST1cAdG9vIG1hbnkgYXJndW1lbnRzIG9uICVzKCkgLSBtYXggJWQAT04gY2xhdXNlIHJlZmVyZW5jZXMgdGFibGVzIHRvIGl0cyByaWdodAA5N05PQ0FTRQAAAAAAAADtLQAAQAAAACB4AABCAAAAJXgAAEEAAAAqeAAAQwAAAGdsb2IAbGlrZQByZWdleHAAYWJicmV2aWF0ZWQgcXVlcnkgYWxnb3JpdGhtIHNlYXJjaAAlcy54QmVzdEluZGV4IG1hbGZ1bmN0aW9uAG5vIHF1ZXJ5IHNvbHV0aW9uAGF1dG9tYXRpYyBpbmRleCBvbiAlcyglcykAYXV0by1pbmRleABTRUFSQ0gAU0NBTgAgU1VCUVVFUlkgJXUAIFRBQkxFICVzACBBUyAlcwBQUklNQVJZIEtFWQBBVVRPTUFUSUMgUEFSVElBTCBDT1ZFUklORyBJTkRFWABBVVRPTUFUSUMgQ09WRVJJTkcgSU5ERVgAQ09WRVJJTkcgSU5ERVggJXMASU5ERVggJXMAIFVTSU5HIAA9AD4/IEFORCByb3dpZDwAPgA8ACBVU0lORyBJTlRFR0VSIFBSSU1BUlkgS0VZIChyb3dpZCVzPykAIFZJUlRVQUwgVEFCTEUgSU5ERVggJWQ6JXMAICgAIEFORCAAJXM9PwBBTlkoJXMpADxleHByPgAoABkXFhgAACUhGRYYFyknJihNVUxUSS1JTkRFWCBPUgBJTkRFWCAlZAAFBCUhAAAAAAAAAAD0eQAAKXoAAFx6AACUegAAyHoAAGZyYW1lIHN0YXJ0aW5nIG9mZnNldCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIAZnJhbWUgZW5kaW5nIG9mZnNldCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIAc2Vjb25kIGFyZ3VtZW50IHRvIG50aF92YWx1ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgBmcmFtZSBzdGFydGluZyBvZmZzZXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIAZnJhbWUgZW5kaW5nIG9mZnNldCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcgAAAAAAAAA5AAAAOQAAADYAAAA5AAAAOQAAAG1pbgBtYXgAVVNFIFRFTVAgQi1UUkVFIEZPUiAlcwBESVNUSU5DVCBhZ2dyZWdhdGVzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBhcmd1bWVudABTQ0FOIFRBQkxFICVzJXMlcwAgVVNJTkcgQ09WRVJJTkcgSU5ERVggAHRvbyBtYW55IHRlcm1zIGluIGNvbXBvdW5kIFNFTEVDVABhIEpPSU4gY2xhdXNlIGlzIHJlcXVpcmVkIGJlZm9yZSAlcwBPTgBVU0lORwAAAG5hdHVyYWxlZnRvdXRlcmlnaHRmdWxsaW5uZXJjcm9zcwAAAAAAAAAAAAAAAAAAAAAHBAYEKAoFIA4FMBMEOBcFARwFAyAAdW5rbm93biBvciB1bnN1cHBvcnRlZCBqb2luIHR5cGU6ICVUICVUJXMlVABSSUdIVCBhbmQgRlVMTCBPVVRFUiBKT0lOcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQAcm93cyBkZWxldGVkAHRhYmxlICVzIG1heSBub3QgYmUgbW9kaWZpZWQAY2Fubm90IG1vZGlmeSAlcyBiZWNhdXNlIGl0IGlzIGEgdmlldwBmb3JlaWduIGtleSBtaXNtYXRjaCAtICIldyIgcmVmZXJlbmNpbmcgIiV3IgAAv2gAAAMAAAC7aAAAAwAAAAAAAAAAAAAAMwACAHgAAABbAAIAeQAAAHQAAAB0b28gbWFueSBjb2x1bW5zIGluICVzAGNhbm5vdCBVUERBVEUgZ2VuZXJhdGVkIGNvbHVtbiAiJXMiAG5vIHN1Y2ggY29sdW1uOiAlcwByb3dzIHVwZGF0ZWQAJXMucm93aWQAY2Fubm90IElOU0VSVCBpbnRvIGdlbmVyYXRlZCBjb2x1bW4gIiVzIgB0YWJsZSAlUyBoYXMgbm8gY29sdW1uIG5hbWVkICVzAHRhYmxlICVTIGhhcyAlZCBjb2x1bW5zIGJ1dCAlZCB2YWx1ZXMgd2VyZSBzdXBwbGllZAAlZCB2YWx1ZXMgZm9yICVkIGNvbHVtbnMAVVBTRVJUIG5vdCBpbXBsZW1lbnRlZCBmb3IgdmlydHVhbCB0YWJsZSAiJXMiAGNhbm5vdCBVUFNFUlQgYSB2aWV3AHJvd3MgaW5zZXJ0ZWQAT04gQ09ORkxJQ1QgY2xhdXNlIGRvZXMgbm90IG1hdGNoIGFueSBQUklNQVJZIEtFWSBvciBVTklRVUUgY29uc3RyYWludAB2YXJpYWJsZSBudW1iZXIgbXVzdCBiZSBiZXR3ZWVuID8xIGFuZCA/JWQAdG9vIG1hbnkgU1FMIHZhcmlhYmxlcwB0b28gbWFueSBhcmd1bWVudHMgb24gZnVuY3Rpb24gJVQARElTVElOQ1QgaXMgbm90IHN1cHBvcnRlZCBmb3Igd2luZG93IGZ1bmN0aW9ucwBzeW50YXggZXJyb3IgYWZ0ZXIgY29sdW1uIG5hbWUgIiUuKnMiAG5vIHN1Y2ggaW5kZXg6ICVTAGluZGV4IGFzc29jaWF0ZWQgd2l0aCBVTklRVUUgb3IgUFJJTUFSWSBLRVkgY29uc3RyYWludCBjYW5ub3QgYmUgZHJvcHBlZABERUxFVEUgRlJPTSAlUS4lcyBXSEVSRSBuYW1lPSVRIEFORCB0eXBlPSdpbmRleCcALSVUAGZhc3QAbm9ybWFsAGV4Y2x1c2l2ZQAAAAAAAAAAAAAAAAIAAQBdAAEEEgEAAEQAAgBeAAcAbm90IGEgd3JpdGFibGUgZGlyZWN0b3J5AFNhZmV0eSBsZXZlbCBtYXkgbm90IGJlIGNoYW5nZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24AaXNzaXNpaQBpc3Npc2kAaWlzWABpc2lYAGMAdQAAq4AAAK2AAAAULgAAaXNpc2kAaXNzAGlzAHMAaWlzc3Nzc3MATk9ORQBzaVgAKioqIGluIGRhdGFiYXNlICVzICoqKgoATlVMTCB2YWx1ZSBpbiAlcy4lcwBDSEVDSyBjb25zdHJhaW50IGZhaWxlZCBpbiAlcwByb3cgACBtaXNzaW5nIGZyb20gaW5kZXggAG5vbi11bmlxdWUgZW50cnkgaW4gaW5kZXggAHdyb25nICMgb2YgZW50cmllcyBpbiBpbmRleCAAAAAAAAAAAFIBAAAxAQQAcwADAFADAQBEAAAAcwADAAsAAwBvawACAAEAXgAAAAIAAABdAAEAUAEBAEFOQUxZWkUgIiV3Ii4iJXciAG5vbmUAZnVsbABpbmNyZW1lbnRhbAB0ZW1wb3Jhcnkgc3RvcmFnZSBjYW5ub3QgYmUgY2hhbmdlZCBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uAAAAAAAAAABvbm9mZmFsc2V5ZXN0cnVleHRyYWZ1bGwAAAECBAkMDxQCAgMFAwQFBAEAAAABAQMCAAAAAAAAAAAAAAAAAAAAAAAAAHCCAAB1ggAAfYIAAHV0ZjgAdXRmMTZsZQB1dGYxNmJlAHcAYQBzaXNzaWkAU0VUIE5VTEwAU0VUIERFRkFVTFQAQ0FTQ0FERQBSRVNUUklDVABOTyBBQ1RJT04AJV8AAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IHVzZXItZnVuY3Rpb24gZHVlIHRvIGFjdGl2ZSBzdGF0ZW1lbnRzAExJS0Ugb3IgR0xPQiBwYXR0ZXJuIHRvbyBjb21wbGV4AEVTQ0FQRSBleHByZXNzaW9uIG11c3QgYmUgYSBzaW5nbGUgY2hhcmFjdGVyAHRyaWdnZXIASU5TRVJUIElOVE8gJVEuJXMgVkFMVUVTKCd0cmlnZ2VyJywlUSwlUSwwLCdDUkVBVEUgVFJJR0dFUiAlcScpAHR5cGU9J3RyaWdnZXInIEFORCBuYW1lPSclcScAdGVtcG9yYXJ5IHRyaWdnZXIgbWF5IG5vdCBoYXZlIHF1YWxpZmllZCBuYW1lAGNhbm5vdCBjcmVhdGUgdHJpZ2dlcnMgb24gdmlydHVhbCB0YWJsZXMAdHJpZ2dlciAlVCBhbHJlYWR5IGV4aXN0cwBjYW5ub3QgY3JlYXRlIHRyaWdnZXIgb24gc3lzdGVtIHRhYmxlAGNhbm5vdCBjcmVhdGUgJXMgdHJpZ2dlciBvbiB2aWV3OiAlUwBCRUZPUkUAQUZURVIAY2Fubm90IGNyZWF0ZSBJTlNURUFEIE9GIHRyaWdnZXIgb24gdGFibGU6ICVTAG5vIHN1Y2ggdHJpZ2dlcjogJVMAAAAAAwAAAAEAAAAAAAAAAAAAAG8AAAAAAAAAAAAAAAAAAADshAAAAAAAAHNxbGl0ZV9hdHRhY2gAdG9vIG1hbnkgYXR0YWNoZWQgZGF0YWJhc2VzIC0gbWF4ICVkAGRhdGFiYXNlICVzIGlzIGFscmVhZHkgaW4gdXNlAGRhdGFiYXNlIGlzIGFscmVhZHkgYXR0YWNoZWQAdW5hYmxlIHRvIG9wZW4gZGF0YWJhc2U6ICVzAGZpbGU6AGxvY2FsaG9zdABpbnZhbGlkIHVyaSBhdXRob3JpdHk6ICUuKnMAdmZzAGNhY2hlAAAAAADIhQAAAAACAM+FAAAAAAQAAAAAAAAAAABzaGFyZWQAcHJpdmF0ZQAAAAAAAAAAAAAIhgAAAQAAAAuGAAACAAAADoYAAAYAAABgIAAAgAAAAAAAAAAAAAAAcm8AcncAcndjAGFjY2VzcwBubyBzdWNoICVzIG1vZGU6ICVzACVzIG1vZGUgbm90IGFsbG93ZWQ6ICVzAG5vIHN1Y2ggdmZzOiAlcwAAAAABAAAAAQAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAICGAAAAAAAAc3FsaXRlX2RldGFjaABubyBzdWNoIGRhdGFiYXNlOiAlcwBjYW5ub3QgZGV0YWNoIGRhdGFiYXNlICVzAGRhdGFiYXNlICVzIGlzIGxvY2tlZAB1bmFibGUgdG8gaWRlbnRpZnkgdGhlIG9iamVjdCB0byBiZSByZWluZGV4ZWQAAAAAAAAAAAAAAAAAAAAAvRwAACiHAAA1hwAAAAAAAEKHAAAAAAAAdGJsLGlkeCxzdGF0AHNxbGl0ZV9zdGF0NABzcWxpdGVfc3RhdDMAQ1JFQVRFIFRBQkxFICVRLiVzKCVzKQBzcWxpdGVcXyUAAgAAAAEAAAAAAAAAAAAAAHEAAAAAAAAAAAAAAAAAAADEhwAAAAAAAAIAAAABAAAAAAAAAAAAAAByAAAAAAAAAAAAAAAAAAAAzocAAAAAAABCQkIAc3RhdF9pbml0AHN0YXRfcHVzaAABAAAAAQAAAAAAAAAAAAAAcwAAAAAAAAAAAAAAAAAAAACIAAAAAAAAc3RhdF9nZXQAJWxsdQAgJWxsdQB0aGVyZSBpcyBhbHJlYWR5IGFub3RoZXIgdGFibGUgb3IgaW5kZXggd2l0aCB0aGlzIG5hbWU6ICVzAHZpZXcgJXMgbWF5IG5vdCBiZSBhbHRlcmVkAFVQREFURSAiJXciLiVzIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX3RhYmxlKCVRLCB0eXBlLCBuYW1lLCBzcWwsICVRLCAlUSwgJWQpIFdIRVJFICh0eXBlIT0naW5kZXgnIE9SIHRibF9uYW1lPSVRIENPTExBVEUgbm9jYXNlKUFORCAgIG5hbWUgTk9UIExJS0UgJ3NxbGl0ZVhfJSUnIEVTQ0FQRSAnWCcAVVBEQVRFICVRLiVzIFNFVCB0YmxfbmFtZSA9ICVRLCBuYW1lID0gQ0FTRSBXSEVOIHR5cGU9J3RhYmxlJyBUSEVOICVRIFdIRU4gbmFtZSBMSUtFICdzcWxpdGVYX2F1dG9pbmRleCUlJyBFU0NBUEUgJ1gnICAgICAgQU5EIHR5cGU9J2luZGV4JyBUSEVOICdzcWxpdGVfYXV0b2luZGV4XycgfHwgJVEgfHwgc3Vic3RyKG5hbWUsJWQrMTgpIEVMU0UgbmFtZSBFTkQgV0hFUkUgdGJsX25hbWU9JVEgQ09MTEFURSBub2Nhc2UgQU5EICh0eXBlPSd0YWJsZScgT1IgdHlwZT0naW5kZXgnIE9SIHR5cGU9J3RyaWdnZXInKTsAVVBEQVRFICIldyIuc3FsaXRlX3NlcXVlbmNlIHNldCBuYW1lID0gJVEgV0hFUkUgbmFtZSA9ICVRAFVQREFURSBzcWxpdGVfdGVtcF9tYXN0ZXIgU0VUIHNxbCA9IHNxbGl0ZV9yZW5hbWVfdGFibGUoJVEsIHR5cGUsIG5hbWUsIHNxbCwgJVEsICVRLCAxKSwgdGJsX25hbWUgPSBDQVNFIFdIRU4gdGJsX25hbWU9JVEgQ09MTEFURSBub2Nhc2UgQU5EICAgICAgICAgICBzcWxpdGVfcmVuYW1lX3Rlc3QoJVEsIHNxbCwgdHlwZSwgbmFtZSwgMSkgVEhFTiAlUSBFTFNFIHRibF9uYW1lIEVORCBXSEVSRSB0eXBlIElOICgndmlldycsICd0cmlnZ2VyJykAdGFibGUgJXMgbWF5IG5vdCBiZSBhbHRlcmVkAFNFTEVDVCAxIEZST00gIiV3Ii4lcyBXSEVSRSBuYW1lIE5PVCBMSUtFICdzcWxpdGVYXyUlJyBFU0NBUEUgJ1gnIEFORCBzcWwgTk9UIExJS0UgJ2NyZWF0ZSB2aXJ0dWFsJSUnIEFORCBzcWxpdGVfcmVuYW1lX3Rlc3QoJVEsIHNxbCwgdHlwZSwgbmFtZSwgJWQpPU5VTEwgAFNFTEVDVCAxIEZST00gdGVtcC4lcyBXSEVSRSBuYW1lIE5PVCBMSUtFICdzcWxpdGVYXyUlJyBFU0NBUEUgJ1gnIEFORCBzcWwgTk9UIExJS0UgJ2NyZWF0ZSB2aXJ0dWFsJSUnIEFORCBzcWxpdGVfcmVuYW1lX3Rlc3QoJVEsIHNxbCwgdHlwZSwgbmFtZSwgMSk9TlVMTCAAQ2Fubm90IGFkZCBhIFBSSU1BUlkgS0VZIGNvbHVtbgBDYW5ub3QgYWRkIGEgVU5JUVVFIGNvbHVtbgBDYW5ub3QgYWRkIGEgUkVGRVJFTkNFUyBjb2x1bW4gd2l0aCBub24tTlVMTCBkZWZhdWx0IHZhbHVlAENhbm5vdCBhZGQgYSBOT1QgTlVMTCBjb2x1bW4gd2l0aCBkZWZhdWx0IHZhbHVlIE5VTEwAQ2Fubm90IGFkZCBhIGNvbHVtbiB3aXRoIG5vbi1jb25zdGFudCBkZWZhdWx0AGNhbm5vdCBhZGQgYSBTVE9SRUQgY29sdW1uAFVQREFURSAiJXciLiVzIFNFVCBzcWwgPSBzdWJzdHIoc3FsLDEsJWQpIHx8ICcsICcgfHwgJVEgfHwgc3Vic3RyKHNxbCwlZCkgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5hbWUgPSAlUQB2aXJ0dWFsIHRhYmxlcyBtYXkgbm90IGJlIGFsdGVyZWQAQ2Fubm90IGFkZCBhIGNvbHVtbiB0byBhIHZpZXcAc3FsaXRlX2FsdGVydGFiXyVzAFVQREFURSAiJXciLiVzIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX2NvbHVtbihzcWwsIHR5cGUsIG5hbWUsICVRLCAlUSwgJWQsICVRLCAlZCwgJWQpIFdIRVJFIG5hbWUgTk9UIExJS0UgJ3NxbGl0ZVhfJSUnIEVTQ0FQRSAnWCcgIEFORCAodHlwZSAhPSAnaW5kZXgnIE9SIHRibF9uYW1lID0gJVEpIEFORCBzcWwgTk9UIExJS0UgJ2NyZWF0ZSB2aXJ0dWFsJSUnAFVQREFURSB0ZW1wLiVzIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX2NvbHVtbihzcWwsIHR5cGUsIG5hbWUsICVRLCAlUSwgJWQsICVRLCAlZCwgMSkgV0hFUkUgdHlwZSBJTiAoJ3RyaWdnZXInLCAndmlldycpAHZpcnR1YWwgdGFibGUAY2Fubm90IHJlbmFtZSBjb2x1bW5zIG9mICVzICIlcyIAQ1JFQVRFIFZJUlRVQUwgVEFCTEUgJVQAVVBEQVRFICVRLiVzIFNFVCB0eXBlPSd0YWJsZScsIG5hbWU9JVEsIHRibF9uYW1lPSVRLCByb290cGFnZT0wLCBzcWw9JVEgV0hFUkUgcm93aWQ9IyVkAG5hbWU9JVEgQU5EIHNxbD0lUQBkdXBsaWNhdGUgV0lUSCB0YWJsZSBuYW1lOiAlcwBQQVJUSVRJT04gY2xhdXNlAE9SREVSIEJZIGNsYXVzZQBmcmFtZSBzcGVjaWZpY2F0aW9uAGNhbm5vdCBvdmVycmlkZSAlcyBvZiB3aW5kb3c6ICVzAHVuc3VwcG9ydGVkIGZyYW1lIHNwZWNpZmljYXRpb24AAAAAAAAAAOoBhv8hAoUCigKI/0P/Rf9I/0r/Tv9Q/y0AHgDIAAX/ev+GAYgBCQILAtUAtAI1AxwBTQJoA5oCnwJiA0cAbwARAYUBrgIvA4gDpAO0A7sDxAPJA/3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/v3+/f79/qwBrgGDA9kD/QMEBCEELQQ5BFQEVgRbBF0EYwR9BIIEhwSSBJYEmgSfBKoErgS0BLgEvATCBMYEzQT+BAAFAwUFBSEFJAUoBSoFLQUvBTIFVgVbBWMFawWJBZEFlgWYBf3+/f79/v3+/f79/v3+/f79/i0CzgMq/1L/9/+vAYT/JgOdAyYDnQP7AKADrAP9/v3+/f79/jr/Ov86/38ARv9Y/9QAhgJpAh8D+v4rAtwA3ADrAV0CEAQkBLsC9f9YAlADXgNZAX//1AKl/54A7QLMAoQDMAE2A6EDngPzARkDQgF8Ay0DTQO+AyAE7wKJA20EJgQjAy7/R/9N/2z/Wf+n/3kAEgEZAUABUAG3AZcCxwK9AygELARcBGcEbgQ8/3sEnASgBKsEswS5BOYE7wT7BAgFGAUeBc0ApgF+AicFLAVCBVAFkARUBVoFXAVlA6UEZAV3BfwEewV5AH0FjAWSBZMFlAWVBeEEAgVABV8FYAVhBWwFkARABUAFaAWDBZwFRQVtBWoFbwVRBX8FgAVVBZcFmQWaBZ8FoQWiBXQFiAWKBW4FjQWdBcAFZQXGBcgFdQV4Bc8FhAWkBZ4FtwWtBbgFuQW7Bb0F6gXtBcEFwgWsBakF0gXTBcMF8gX2BaMFpQX4BfoF6QX+BQAGAQYDBuwF8wX0BfcF7wX5BfwFBAYFBv8FBgYIBgkGCwaqBQcGxQXKBQ8G4QXkBegF5QXrBe4F/QUQBiUGugW8BQ0GDgYTBhIG5gUvBucFFAYXBhkGHQY0BjgGQQZCBkcGSAZJBtoFFQYWBkoGQAZDBksGTAZNBjwGPQZOBk8GUQZQBmluY29tcGxldGUgaW5wdXQAaW1wbGllc19ub25udWxsX3JvdwBleHByX2NvbXBhcmUAZXhwcl9pbXBsaWVzX2V4cHIAc3FsaXRlX2NvbXBpbGVvcHRpb25fdXNlZABzcWxpdGVfY29tcGlsZW9wdGlvbl9nZXQAdW5saWtlbHkAbGlrZWxpaG9vZABsaWtlbHkAbHRyaW0AcnRyaW0AdHJpbQB0eXBlb2YAbGVuZ3RoAGluc3RyAHByaW50ZgB1bmljb2RlAGNoYXIAYWJzAHJvdW5kAHVwcGVyAGxvd2VyAGhleABpZm51bGwAcmFuZG9tAHJhbmRvbWJsb2IAbnVsbGlmAHNxbGl0ZV92ZXJzaW9uAHNxbGl0ZV9zb3VyY2VfaWQAc3FsaXRlX2xvZwBxdW90ZQBsYXN0X2luc2VydF9yb3dpZABjaGFuZ2VzAHRvdGFsX2NoYW5nZXMAcmVwbGFjZQB6ZXJvYmxvYgBzdWJzdHIAc3VtAHRvdGFsAGF2ZwBjb3VudABncm91cF9jb25jYXQAY29hbGVzY2UAAQAAACV8AAAAAAAAAAAAAAAAAADmJAAA4SQAAOSVAADplQAA3CQAAHRleHQAYmxvYgBpbnRlZ2VyIG92ZXJmbG93ACUuKmYAAAAAAAAAAAAAAAAAMDEyMzQ1Njc4OUFCQ0RFRiUhLjIwZQBzcWxpdGVfcmVuYW1lX2NvbHVtbgBzcWxpdGVfcmVuYW1lX3RhYmxlAHNxbGl0ZV9yZW5hbWVfdGVzdAAiJXciAGVycm9yIGluICVzICVzJXM6ICVzACBhZnRlciByZW5hbWUAbGFzdF92YWx1ZQBhcmd1bWVudCBvZiBudGlsZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgBqdWxpYW5kYXkAZGF0ZQB0aW1lAGRhdGV0aW1lAHN0cmZ0aW1lAGN1cnJlbnRfdGltZQBjdXJyZW50X3RpbWVzdGFtcABjdXJyZW50X2RhdGUAbm93ADQwZi0yMWEtMjFkAAAMAA4AGAAfADsADycyMGM6MjBlADIwZQAyMGI6MjBlAGEgQ0hFQ0sgY29uc3RyYWludABhIGdlbmVyYXRlZCBjb2x1bW4AYW4gaW5kZXgAbm9uLWRldGVybWluaXN0aWMgdXNlIG9mICVzKCkgaW4gJXMAbG9jYWx0aW1lAHVuaXhlcG9jaAB1dGMAd2Vla2RheSAAc3RhcnQgb2YgAG1vbnRoAHllYXIAZGF5AAAAAAAAAAAAAAAAAAAABgAAh5gAAAAAsOolBltCAAAAAABAj0AABgAAjpgAAAAAAKVb0/xBAAAAAABM7UAABAAAlZgAAAAAALBQv55BAAAAAEB3S0EAAwAAz5cAAAAAAECLf1RBAAAAAHCZlEEBBQAAxJcAAAAAAAAQjQVBAAAAANlP40ECBAAAypcAAAAAAACAvMxAAAAAsMReHUJsb2NhbCB0aW1lIHVuYXZhaWxhYmxlAHNlY29uZABtaW51dGUAaG91cgAlMDRkLSUwMmQtJTAyZAAlMDJkOiUwMmQ6JTAyZAAlMDRkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6JTAyZAAlMDJkACUwNi4zZgAlMDNkACUwNGQAwgAAAMMAAADEAAAAxQAAAMYAAADHAAAAyAAAAAAAAABmYWlsZWQgdG8gYWxsb2NhdGUgJXUgYnl0ZXMgb2YgbWVtb3J5AGZhaWxlZCBtZW1vcnkgcmVzaXplICV1IHRvICV1IGJ5dGVzAAAAAQAAAAAAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAADSAAAA0wAAAHVuYWJsZSB0byBjbG9zZSBkdWUgdG8gdW5maW5hbGl6ZWQgc3RhdGVtZW50cyBvciB1bmZpbmlzaGVkIGJhY2t1cHMARJoAAFGaAAAAAAAAYZoAAHqaAACImgAAm5oAAMIaAAC0mgAA2ZoAAOWaAAD0mgAAFZsAACebAABAmwAAXZsAAAAAAAAoGgAAIAcAAG6bAACAmwAAkpsAAAAAAAC0mwAAAAAAAMmbAADjmwAA+psAAA+cAABub3QgYW4gZXJyb3IAU1FMIGxvZ2ljIGVycm9yAGFjY2VzcyBwZXJtaXNzaW9uIGRlbmllZABxdWVyeSBhYm9ydGVkAGRhdGFiYXNlIGlzIGxvY2tlZABkYXRhYmFzZSB0YWJsZSBpcyBsb2NrZWQAYXR0ZW1wdCB0byB3cml0ZSBhIHJlYWRvbmx5IGRhdGFiYXNlAGludGVycnVwdGVkAGRpc2sgSS9PIGVycm9yAGRhdGFiYXNlIGRpc2sgaW1hZ2UgaXMgbWFsZm9ybWVkAHVua25vd24gb3BlcmF0aW9uAGRhdGFiYXNlIG9yIGRpc2sgaXMgZnVsbAB1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSBmaWxlAGxvY2tpbmcgcHJvdG9jb2wAY29uc3RyYWludCBmYWlsZWQAZGF0YXR5cGUgbWlzbWF0Y2gAYmFkIHBhcmFtZXRlciBvciBvdGhlciBBUEkgbWlzdXNlAGF1dGhvcml6YXRpb24gZGVuaWVkAGNvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2UAZmlsZSBpcyBub3QgYSBkYXRhYmFzZQBub3RpZmljYXRpb24gbWVzc2FnZQB3YXJuaW5nIG1lc3NhZ2UAdW5rbm93biBlcnJvcgBhYm9ydCBkdWUgdG8gUk9MTEJBQ0sAYW5vdGhlciByb3cgYXZhaWxhYmxlAG5vIG1vcmUgcm93cyBhdmFpbGFibGUAdW5hYmxlIHRvIHVzZSBmdW5jdGlvbiAlcyBpbiB0aGUgcmVxdWVzdGVkIGNvbnRleHQAaW52YWxpZABSVFJJTQBtYWluAHRlbXAATUFUQ0gAYXV0b21hdGljIGV4dGVuc2lvbiBsb2FkaW5nIGZhaWxlZDogJXMAdW5hYmxlIHRvIGRlbGV0ZS9tb2RpZnkgY29sbGF0aW9uIHNlcXVlbmNlIGR1ZSB0byBhY3RpdmUgc3RhdGVtZW50cwBtaXN1c2UAX1JPV0lEXwBPSUQAAAAAAAAAAAAAAAAAAAAAAACInQAAnp0AALOdAADKnQAA4p0AAPCdAAAAngAAFJ4AACueAAA9ngAASJ4AAFOeAABcngAAaZ4AAENPTVBJTEVSPWNsYW5nLTEwLjAuMABERUZBVUxUX0ZPUkVJR05fS0VZUwBFTkFCTEVfQ09MVU1OX01FVEFEQVRBAExJS0VfRE9FU05UX01BVENIX0JMT0JTAE9NSVRfQ09NUExFVEUAT01JVF9ERVBSRUNBVEVEAE9NSVRfTE9BRF9FWFRFTlNJT04AT01JVF9QUk9HUkVTU19DQUxMQkFDSwBPTUlUX1NIQVJFRF9DQUNIRQBPTUlUX1RSQUNFAE9NSVRfVVRGMTYAT01JVF9XQUwAVEVNUF9TVE9SRT0yAFRIUkVBRFNBRkU9MAAAAK2CAACQggAAmYIAAKWCAAC8bgAA0G4AAMZuAAAfHh8eHx8eHx4fHx1VVEMAAEGwvQILgB4DAAAACAAAAAAEAAAAAAAAEgQAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAA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kwg+AwAAQAMAAAIAkwhAAwAATwMAAAIAkwhPAwAAdgMAAAIAkwh2AwAAegMAAAIAkwh6AwAAiQMAAAIAkwiJAwAAiwMAAAIAkwiLAwAAmQMAAAIAkwiZAwAAvwMAAAIAkwi/AwAAwwMAAAIAkwjDAwAAzwMAAAIAkwjPAwAA0QMAAAIAkwjRAwAA3wMAAAIAkwjfAwAA5QMAAAIAkwjlAwAA9QMAAAIAkwj1AwAAuAQAAAIAkwi4BAAABAUAAAIAkwgEBQAAxQYAAAIAkwjlBgAA6gYAAAIAkwjqBgAAcwcAAAIAkwimBwAAqwcAAAIAkwirBwAAQAgAAAIAkwgAAAAAAAAAAIECAACTAgAAAgCTCJMCAAChAgAAAgCTCKECAACwAgAAAgCTCLACAAC0AgAAAgCTCLQCAADdAgAAAgCTCN0CAADhAgAAAgCTCOECAADxAgAAAgCTCPECAADzAgAAAgCTCPMCAAACAwAAAgCTCAIDAAAqAwAAAgCTCCoDAAAuAwAAAgCTCC4DAAA+AwAAAgCTCD4DAABAAwAAAgCTCEADAABPAwAAAgCTCE8DAAB2AwAAAgCTCHYDAAB6AwAAAgCTCHoDAACJAwAAAgCTCIkDAACLAwAAAgCTCIsDAACZAwAAAgCTCJkDAAC/AwAAAgCTCL8DAADDAwAAAgCTCMMDAADPAwAAAgCTCM8DAADRAwAAAgCTCNEDAADfAwAAAgCTCN8DAADlAwAAAgCTCOUDAAD1AwAAAgCTCPUDAAC4BAAAAgCTCLgEAAAEBQAAAgCTCAQFAADFBgAAAgCTCOUGAADqBgAAAgCTCOoGAABzBwAAAgCTCKYHAACrBwAAAgCTCKsHAABACAAAAgCTCAAAAAAAAAAAgQIAAJMCAAACAJMIkwIAAKECAAACAJMIoQIAALACAAACAJMIsAIAALQCAAACAJMItAIAAN0CAAACAJMI3QIAAOECAAACAJMI4QIAAPECAAACAJMI8QIAAPMCAAACAJMI8wIAAAIDAAACAJMIAgMAACoDAAACAJMIKgMAAC4DAAACAJMILgMAAD4DAAACAJMIPgMAAEADAAACAJMIQAMAAE8DAAACAJMITwMAAHYDAAACAJMIdgMAAHoDAAACAJMIegMAAIkDAAACAJMIiQMAAIsDAAACAJMIiwMAAJkDAAACAJMImQMAAL8DAAACAJMIvwMAAMMDAAACAJMIwwMAAM8DAAACAJMIzwMAANEDAAACAJMI0QMAAN8DAAACAJMI3wMAAPUDAAACAJMI9QMAALgEAAACAJMIuAQAALwEAAACAJMIvAQAAL4EAAACAJMIvgQAAAQFAAAGAO0AEZ+TCAQFAADFBgAABgDtABGfkwjlBgAA6gYAAAIAkwjqBgAAcwcAAAIAkwimBwAAqwcAAAIAkwirBwAAQAgAAAIAkwgAAAAAAAAAAIECAACTAgAAAgCTCJMCAAChAgAAAgCTCKECAACwAgAAAgCTCLACAAC0AgAAAgCTCLQCAADdAgAAAgCTCN0CAADhAgAAAgCTCOECAADxAgAAAgCTCPECAADzAgAAAgCTCPMCAAACAwAAAgCTCAIDAAAqAwAAAgCTCCoDAAAuAwAAAgCTCC4DAAA+AwAAAgCTCD4DAABAAwAAAgCTCEADAABPAwAAAgCTCE8DAAB2AwAAAgCTCHYDAAB6AwAAAgCTCHoDAACJAwAAAgCTCIkDAACLAwAAAgCTCIsDAACZAwAAAgCTCJkDAAC/AwAAAgCTCL8DAADDAwAAAgCTCMMDAADPAwAAAgCTCM8DAADRAwAAAgCTCNEDAADfAwAAAgCTCN8DAAD1AwAAAgCTCPUDAAC4BAAAAgCTCLgEAAC8BAAAAgCTCLwEAAC+BAAAAgCTCL4EAAAEBQAABgDtABGfkwgEBQAAxQYAAAYA7QARn5MI5QYAAOoGAAACAJMI6gYAAHMHAAACAJMIpgcAAKsHAAACAJMIqwcAAEAIAAACAJMIAAAAAAAAAACBAgAAkwIAAAIAkwiTAgAAoQIAAAIAkwihAgAAsAIAAAIAkwiwAgAAtAIAAAIAkwi0AgAA3QIAAAIAkwjdAgAA4QIAAAIAkwjhAgAA8QIAAAIAkwjxAgAA8wIAAAIAkwjzAgAAAgMAAAIAkwgCAwAAKgMAAAIAkwgqAwAALgMAAAIAkwguAwAAPgMAAAIAkwg+AwAAQAMAAAIAkwhAAwAATwMAAAIAkwhPAwAAdgMAAAIAkwh2AwAAegMAAAIAkwh6AwAAiQMAAAIAkwiJAwAAiwMAAAIAkwiLAwAAmQMAAAIAkwiZAwAAvwMAAAIAkwi/AwAAwwMAAAIAkwjDAwAAzwMAAAIAkwjPAwAA0QMAAAIAkwjRAwAA3wMAAAIAkwjfAwAA5QMAAAIAkwjlAwAA9QMAAAIAkwj1AwAAuAQAAAIAkwi4BAAABAUAAAIAkwgEBQAAxQYAAAIAkwjlBgAA6gYAAAIAkwjqBgAAcwcAAAIAkwimBwAAqwcAAAIAkwirBwAAQAgAAAIAkwgAAAAAAAAAAIECAACTAgAAAgCTCJMCAAChAgAAAgCTCKECAACwAgAAAgCTCLACAAC0AgAAAgCTCLQCAADdAgAAAgCTCN0CAADhAgAAAgCTCOECAADxAgAAAgCTCPECAADzAgAAAgCTCPMCAAACAwAAAgCTCAIDAAAqAwAAAgCTCCoDAAAuAwAAAgCTCC4DAAA+AwAAAgCTCD4DAABAAwAAAgCTCEADAABPAwAAAgCTCE8DAAB2AwAAAgCTCHYDAAB6AwAAAgCTCHoDAACJAwAAAgCTCIkDAACLAwAAAgCTCIsDAACZAwAAAgCTCJkDAAC/AwAAAgCTCL8DAADDAwAAAgCTCMMDAADPAwAAAgCTCM8DAADRAwAAAgCTCNEDAADfAwAAAgCTCN8DAADlAwAAAgCTCOUDAAD1AwAAAgCTCPUDAAC4BAAAAgCTCLgEAAAEBQAAAgCTCAQFAADFBgAAAgCTCOUGAADqBgAAAgCTCOoGAABzBwAAAgCTCKYHAACrBwAAAgCTCKsHAABACAAAAgCTCAAAAAAAAAAAkQIAALoCAAAEAO0ABJ/bAgAAJgMAAAYA7QAEn5MIKAMAAHIDAAAGAO0ABJ+TCHQDAAC7AwAABgDtAASfkwi9AwAACQQAAAYA7QAEn5MIDgQAAMUGAAAEAO0ADJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAKwEAADFBgAAAgCTCAAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAASQUAAMUGAAACAJMIAAAAAAAAAABYBQAAYAUAAAYA7QAQn5MIYAUAAGIFAAAGAO0AEJ+TCGIFAADFBgAADADtABCfkwjtABGfkwgAAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAOUDAADFBgAAAgAwnwAAAAAAAAAA5QMAAMUGAAACADCfAAAAAAAAAADlAwAAxQYAAAIAMJ8AAAAAAAAAAO8DAADFBgAABADtAAmfcQcAAHMHAAAEAO0ACZ8AAAAAAAAAACEEAADFBgAABADtABCfAAAAAAAAAAA3BAAAUwQAAAYA7QACn5MIUwQAAMUGAAAGAO0AAp+TCAAAAAAAAAAARAQAAF4EAAAGAO0AEZ+TCF4E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LgUPBggSBSwGjwUPZwUegQUPCBTVBSwGWAUmWAUeBh8FNgbyBTcGSwU1BiAFDzwFLKwFJqwFDwY9BgOGfgguBAQFEgYD8gCCBSkGWAUPBh+tBgOOfzwFDQYD9gAgBRF5BQcGCIIFDgYvBgOEf/IFEQYD/QBYBQcGCDwFAAODfy4FDwYD/gB0BRwGSgUPWAOCf54EAQUxBgMUIAIbAAEBkAAAAAQAZgAAAAEBAfsODQABAQEBAAAAAQAAAXdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucwAAc3VidGYzLmMAAQAAZnBfbGliLmgAAQAAAAAFAmXeBwADEwEFCgoIPQUnBoIFCtYFA8gFCi4FA1gCFgABAQC3NAouZGVidWdfc3RyY2xhbmcgdmVyc2lvbiAxMC4wLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBkMzIxNzBkYmQ1YjBkNTQ0MzY1MzdiNmI3NWJlYWY0NDMyNGUwYzI4KQB3YXNpc2RrOi8vdjExLjAvc3JjL2xsdm0tcHJvamVjdC9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvY29tcGFyZXRmMi5jAHdhc2lzZGs6Ly92MTEuMC9idWlsZC9jb21waWxlci1ydABpbnQATEVfTEVTUwBMRV9FUVVBTABMRV9HUkVBVEVSAExFX1VOT1JERVJFRABMRV9SRVNVTFQAR0VfTEVTUwBHRV9FUVVBTABHRV9HUkVBVEVSAEdFX1VOT1JERVJFRABHRV9SRVNVTFQAdW5zaWduZWQgX19pbnQxMjgAX191aW50MTI4X3QAX19sZXRmMgBfX2dldGYyAF9fdW5vcmR0ZjIAYQBsb25nIGRvdWJsZQBmcF90AGIAYUludABfX2ludDEyOABfX2ludDEyOF90AHNyZXBfdABiSW50AGFBYnMAcmVwX3QAYkFicwBjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9leHRlbmRkZnRmMi5jAHdhc2lzZGs6Ly92MTEuMC9idWlsZC9jb21waWxlci1ydABzcmNTaWdCaXRzAGludABkc3RTaWdCaXRzAGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQAdWludDY0X3QAc3JjX3JlcF90AHVuc2lnbmVkIF9faW50MTI4AF9fdWludDEyOF90AGRzdF9yZXBfdABzcmNUb1JlcAB4AGRvdWJsZQBzcmNfdAByZXAAZgBpAF9fZXh0ZW5kWGZZZjJfXwBsb25nIGRvdWJsZQBkc3RfdABhAHNyY0JpdHMAc3JjRXhwQml0cwBzcmNJbmZFeHAAc3JjRXhwQmlhcwBzcmNNaW5Ob3JtYWwAc3JjSW5maW5pdHkAc3JjU2lnbk1hc2sAc3JjQWJzTWFzawBzcmNRTmFOAHNyY05hTkNvZGUAZHN0Qml0cwBkc3RFeHBCaXRzAGRzdEluZkV4cABkc3RFeHBCaWFzAGRzdE1pbk5vcm1hbABhUmVwAHNpZ24AYUFicwBhYnNSZXN1bHQAcmVzdWx0AHNjYWxlAHJlc3VsdEV4cG9uZW50AHNyY19yZXBfdF9jbHoAX19leHRlbmRkZnRmMgBmcF90AGNsYW5nIHZlcnNpb24gMTAuMC4wIChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QgZDMyMTcwZGJkNWIwZDU0NDM2NTM3YjZiNzViZWFmNDQzMjRlMGMyOCkAd2FzaXNkazovL3YxMS4wL3NyYy9sbHZtLXByb2plY3QvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZpeHRmc2kuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAaW50AHNpX2ludABmaXhpbnRfdAB1bnNpZ25lZCBpbnQAc3VfaW50AGZpeHVpbnRfdAB1bnNpZ25lZCBfX2ludDEyOABfX3VpbnQxMjhfdABfX2ZpeGludABhAGxvbmcgZG91YmxlAGZwX3QAc2lnbmlmaWNhbmQAcmVwX3QAYUFicwBzaWduAGFSZXAAZml4aW50X21heABmaXhpbnRfbWluAGV4cG9uZW50AF9fZml4dGZzaQBjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mbG9hdGRpdGYuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAbG9uZyBsb25nIHVuc2lnbmVkIGludABkdV9pbnQAdW5zaWduZWQgX19pbnQxMjgAX191aW50MTI4X3QAcmVwX3QAX19mbG9hdGRpdGYAbG9uZyBkb3VibGUAZnBfdABhAGxvbmcgbG9uZyBpbnQAZGlfaW50AGFXaWR0aABpbnQAc2lnbgBhQWJzAGV4cG9uZW50AHNoaWZ0AHJlc3VsdABjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mbG9hdHNpdGYuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAdW5zaWduZWQgaW50AHVuc2lnbmVkIF9faW50MTI4AF9fdWludDEyOF90AHJlcF90AF9fZmxvYXRzaXRmAGxvbmcgZG91YmxlAGZwX3QAYVdpZHRoAGludABhAHNpZ24AYUFicwBleHBvbmVudABzaGlmdAByZXN1bHQAY2xhbmcgdmVyc2lvbiAxMC4wLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBkMzIxNzBkYmQ1YjBkNTQ0MzY1MzdiNmI3NWJlYWY0NDMyNGUwYzI4KQB3YXNpc2RrOi8vdjExLjAvc3JjL2xsdm0tcHJvamVjdC9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvdHJ1bmN0ZmRmMi5jAHdhc2lzZGs6Ly92MTEuMC9idWlsZC9jb21waWxlci1ydABzcmNTaWdCaXRzAGludABkc3RTaWdCaXRzAHVuc2lnbmVkIF9faW50MTI4AF9fdWludDEyOF90AHNyY19yZXBfdABsb25nIGxvbmcgdW5zaWduZWQgaW50AHVpbnQ2NF90AGRzdF9yZXBfdABfX3RydW5jWGZZZjJfXwBkb3VibGUAZHN0X3QAYQBsb25nIGRvdWJsZQBzcmNfdABhUmVwAHNpZ24Ac3JjQml0cwBzcmNFeHBCaXRzAHNyY0luZkV4cABzcmNFeHBCaWFzAHNyY01pbk5vcm1hbABzcmNTaWduaWZpY2FuZE1hc2sAc3JjSW5maW5pdHkAc3JjU2lnbk1hc2sAc3JjQWJzTWFzawByb3VuZE1hc2sAaGFsZndheQBzcmNRTmFOAHNyY05hTkNvZGUAZHN0Qml0cwBkc3RFeHBCaXRzAGRzdEluZkV4cABkc3RFeHBCaWFzAHVuZGVyZmxvd0V4cG9uZW50AG92ZXJmbG93RXhwb25lbnQAdW5kZXJmbG93AG92ZXJmbG93AGRzdFFOYU4AZHN0TmFOQ29kZQBhQWJzAGFic1Jlc3VsdAByZXN1bHQAcm91bmRCaXRzAHNoaWZ0AHNpZ25pZmljYW5kAGFFeHAAZGVub3JtYWxpemVkU2lnbmlmaWNhbmQAc3RpY2t5AF9Cb29sAGRzdEZyb21SZXAAeAByZXAAZgBpAF9fdHJ1bmN0ZmRmMgBjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9hZGR0ZjMuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAdW5zaWduZWQgX19pbnQxMjgAX191aW50MTI4X3QAcmVwX3QAX19hZGRYZjNfXwBsb25nIGRvdWJsZQBmcF90AGEAYgBhUmVwAGFBYnMAYlJlcABiQWJzAGFTaWduaWZpY2FuZABiU2lnbmlmaWNhbmQAYkV4cG9uZW50AGludABhRXhwb25lbnQAcmVzdWx0U2lnbgBhbGlnbgB1bnNpZ25lZCBpbnQAcmVzdWx0AHJvdW5kR3VhcmRTdGlja3kAc3VidHJhY3Rpb24AX0Jvb2wAdGVtcABzdGlja3kAc2hpZnQAbm9ybWFsaXplAHNpZ25pZmljYW5kAHJlcF9jbHoAdXUAbGwAcwBsb3cAbG9uZyBsb25nIHVuc2lnbmVkIGludAB1aW50NjRfdABoaWdoAHdvcmQAYWRkAF9fYWRkdGYzAGNsYW5nIHZlcnNpb24gMTAuMC4wIChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QgZDMyMTcwZGJkNWIwZDU0NDM2NTM3YjZiNzViZWFmNDQzMjRlMGMyOCkAd2FzaXNkazovL3YxMS4wL3NyYy9sbHZtLXByb2plY3QvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2FzaGx0aTMuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAaW50AF9fYXNobHRpMwBfX2ludDEyOAB0aV9pbnQAYgBzaV9pbnQAaW5wdXQAYWxsAHMAbG93AGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQAZHVfaW50AGhpZ2gAbG9uZyBsb25nIGludABkaV9pbnQAdHdvcmRzAGEAYml0c19pbl9kd29yZAByZXN1bHQAY2xhbmcgdmVyc2lvbiAxMC4wLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBkMzIxNzBkYmQ1YjBkNTQ0MzY1MzdiNmI3NWJlYWY0NDMyNGUwYzI4KQB3YXNpc2RrOi8vdjExLjAvc3JjL2xsdm0tcHJvamVjdC9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvZGl2dGYzLmMAd2FzaXNkazovL3YxMS4wL2J1aWxkL2NvbXBpbGVyLXJ0AHVuc2lnbmVkIF9faW50MTI4AF9fdWludDEyOF90AHJlcF90AGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQAdWludDY0X3QAbm9ybWFsaXplAGludABzaWduaWZpY2FuZABzaGlmdAByZXBfY2x6AGEAdXUAbGwAcwBsb3cAaGlnaAB3b3JkAGFkZAB3aWRlTXVsdGlwbHkAYgBoaQBsbwBzdW0wAHByb2R1Y3QxMwBwcm9kdWN0MTQAcHJvZHVjdDIxAHByb2R1Y3QyMgBwcm9kdWN0MjMAcHJvZHVjdDI0AHByb2R1Y3QxMQBwcm9kdWN0MTIAcHJvZHVjdDQxAHByb2R1Y3Q0MgBzdW0zAHN1bTQAc3VtNQBzdW02AHN1bTIAcHJvZHVjdDMxAHByb2R1Y3QzMgByMQByMABwcm9kdWN0NDQAcHJvZHVjdDQzAHByb2R1Y3QzNABzdW0xAHByb2R1Y3QzMwBfX2RpdnRmMwBsb25nIGRvdWJsZQBmcF90AGJTaWduaWZpY2FuZABhU2lnbmlmaWNhbmQAcXVvdGllbnRTaWduAGJFeHBvbmVudAB1bnNpZ25lZCBpbnQAc2NhbGUAYUV4cG9uZW50AGFBYnMAYkFicwBxNjNiAGNIaQByZWNpcDY0AGNvcnJlY3Rpb242NAByNjRxMTI3AHI2NGNIAHI2NGNMAHJlY2lwcm9jYWwAcXVvdGllbnRFeHBvbmVudAByNjRxNjMAcTEyN2JsbwBjTG8AY29ycmVjdGlvbgBxdW90aWVudABxYgByZXNpZHVhbAB3cml0dGVuRXhwb25lbnQAYWJzUmVzdWx0AHJvdW5kAF9Cb29sAHJlc3VsdABkdW1teQBxdW90aWVudExvAGNsYW5nIHZlcnNpb24gMTAuMC4wIChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QgZDMyMTcwZGJkNWIwZDU0NDM2NTM3YjZiNzViZWFmNDQzMjRlMGMyOCkAd2FzaXNkazovL3YxMS4wL3NyYy9sbHZtLXByb2plY3QvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX21vZGUuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAdW5zaWduZWQgaW50AEZFX1RPTkVBUkVTVABGRV9ET1dOV0FSRABGRV9VUFdBUkQARkVfVE9XQVJEWkVSTwBfX2ZlX2dldHJvdW5kAEZFX1JPVU5EX01PREUAX19mZV9yYWlzZV9pbmV4YWN0AGludABjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9sc2hydGkzLmMAd2FzaXNkazovL3YxMS4wL2J1aWxkL2NvbXBpbGVyLXJ0AGludABfX2xzaHJ0aTMAX19pbnQxMjgAdGlfaW50AGIAc2lfaW50AGlucHV0AGFsbAB1bnNpZ25lZCBfX2ludDEyOAB0dV9pbnQAcwBsb3cAbG9uZyBsb25nIHVuc2lnbmVkIGludABkdV9pbnQAaGlnaAB1dHdvcmRzAGEAYml0c19pbl9kd29yZAByZXN1bHQAY2xhbmcgdmVyc2lvbiAxMC4wLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBkMzIxNzBkYmQ1YjBkNTQ0MzY1MzdiNmI3NWJlYWY0NDMyNGUwYzI4KQB3YXNpc2RrOi8vdjExLjAvc3JjL2xsdm0tcHJvamVjdC9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvbXVsdGkzLmMAd2FzaXNkazovL3YxMS4wL2J1aWxkL2NvbXBpbGVyLXJ0AGludABsb25nIGxvbmcgdW5zaWduZWQgaW50AGR1X2ludABfX211bGRkaTMAX19pbnQxMjgAdGlfaW50AGEAYgByAGFsbABzAGxvdwBoaWdoAGxvbmcgbG9uZyBpbnQAZGlfaW50AHR3b3JkcwBiaXRzX2luX2R3b3JkXzIAbG93ZXJfbWFzawB0AF9fbXVsdGkzAHkAeABjbGFuZyB2ZXJzaW9uIDEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgpAHdhc2lzZGs6Ly92MTEuMC9zcmMvbGx2bS1wcm9qZWN0L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9tdWx0ZjMuYwB3YXNpc2RrOi8vdjExLjAvYnVpbGQvY29tcGlsZXItcnQAdW5zaWduZWQgX19pbnQxMjgAX191aW50MTI4X3QAdW5zaWduZWQgaW50AHJlcF90AGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQAdWludDY0X3QAX19tdWxYZjNfXwBsb25nIGRvdWJsZQBmcF90AGEAYgBiU2lnbmlmaWNhbmQAYVNpZ25pZmljYW5kAHByb2R1Y3RTaWduAGJFeHBvbmVudABzY2FsZQBpbnQAYUV4cG9uZW50AHByb2R1Y3RFeHBvbmVudABwcm9kdWN0SGkAcHJvZHVjdExvAGFBYnMAYkFicwBzaGlmdABub3JtYWxpemUAc2lnbmlmaWNhbmQAcmVwX2NsegB1dQBsbABzAGxvdwBoaWdoAHdvcmQAYWRkAHdpZGVNdWx0aXBseQBoaQBsbwBzdW00AHN1bTAAc3VtNgBwcm9kdWN0NDMAcHJvZHVjdDM0AHN1bTEAcHJvZHVjdDQ0AHIwAHByb2R1Y3QzMwBwcm9kdWN0MjQAcHJvZHVjdDQyAHN1bTIAcHJvZHVjdDIzAHByb2R1Y3QxNABwcm9kdWN0MzIAcHJvZHVjdDQxAHN1bTMAcjEAcHJvZHVjdDIyAHByb2R1Y3QxMwBwcm9kdWN0MzEAcHJvZHVjdDExAHByb2R1Y3QyMQBwcm9kdWN0MTIAc3VtNQB3aWRlTGVmdFNoaWZ0AGNvdW50AHdpZGVSaWdodFNoaWZ0V2l0aFN0aWNreQBzdGlja3kAX0Jvb2wAX19tdWx0ZjMAY2xhbmcgdmVyc2lvbiAxMC4wLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdCBkMzIxNzBkYmQ1YjBkNTQ0MzY1MzdiNmI3NWJlYWY0NDMyNGUwYzI4KQB3YXNpc2RrOi8vdjExLjAvc3JjL2xsdm0tcHJvamVjdC9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvc3VidGYzLmMAd2FzaXNkazovL3YxMS4wL2J1aWxkL2NvbXBpbGVyLXJ0AHVuc2lnbmVkIF9faW50MTI4AF9fdWludDEyOF90AF9fc3VidGYzAGxvbmcgZG91YmxlAGZwX3QAYQBiAADeqQEEbmFtZQHVqQHMCAAHanNfb3BlbgEJanNfZGVsZXRlAglqc19leGlzdHMDCWpzX2FjY2VzcwQHanNfdGltZQUIanNfY2xvc2UGB2pzX3JlYWQHCGpzX3dyaXRlCAtqc190cnVuY2F0ZQkHanNfc2l6ZQoHc3RyX2xlbgsIc2VlZF9ybmcMCmdldF9zdGF0dXMNBG9wZW4OBWNsb3NlDxRnZXRfc3FsaXRlX2Vycm9yX3N0chAHcHJlcGFyZREIZmluYWxpemUSCGJpbmRfaW50EwtiaW5kX2RvdWJsZRQJYmluZF90ZXh0FQliaW5kX2Jsb2IWDGJpbmRfYmlnX2ludBcJYmluZF9udWxsGBRiaW5kX3BhcmFtZXRlcl9pbmRleBkEc3RlcBoMY29sdW1uX2NvdW50Gwtjb2x1bW5fdHlwZRwKY29sdW1uX2ludB0NY29sdW1uX2RvdWJsZR4LY29sdW1uX3RleHQfC2NvbHVtbl9ibG9iIAxjb2x1bW5fYnl0ZXMhC2NvbHVtbl9uYW1lIhJjb2x1bW5fb3JpZ2luX25hbWUjEWNvbHVtbl90YWJsZV9uYW1lJBFsYXN0X2luc2VydF9yb3dpZCUHY2hhbmdlcyYNdG90YWxfY2hhbmdlcycIZGVub09wZW4oCmRlbm9EZWxldGUpCmRlbm9BY2Nlc3MqEGRlbm9GdWxsUGF0aG5hbWUrCmRlbm9EbE9wZW4sC2Rlbm9EbEVycm9yLQlkZW5vRGxTeW0uC2Rlbm9EbENsb3NlLw5kZW5vUmFuZG9tbmVzczAJZGVub1NsZWVwMQ9kZW5vQ3VycmVudFRpbWUyD3NxbGl0ZTNfb3NfaW5pdDMJZGVub0Nsb3NlNAhkZW5vUmVhZDUJZGVub1dyaXRlNgxkZW5vVHJ1bmNhdGU3CGRlbm9TeW5jOAxkZW5vRmlsZVNpemU5CGRlbm9Mb2NrOgpkZW5vVW5sb2NrOxVkZW5vQ2hlY2tSZXNlcnZlZExvY2s8D2Rlbm9GaWxlQ29udHJvbD0OZGVub1NlY3RvclNpemU+GWRlbm9EZXZpY2VDaGFyYWN0ZXJpc3RpY3M/C3NxbGl0ZTNfbG9nQBRzcWxpdGUzTG9va2FzaWRlVXNlZEEUc3FsaXRlM0RlbGV0ZVRyaWdnZXJCEnNxbGl0ZTNEZWxldGVUYWJsZUMWc3FsaXRlM1ZkYmVDbGVhck9iamVjdEQPc3FsaXRlM0RiRnJlZU5ORRhzcWxpdGUzRGVsZXRlVHJpZ2dlclN0ZXBGE3NxbGl0ZTNFeHByRGVsZXRlTk5HE3NxbGl0ZTNJZExpc3REZWxldGVIC2RlbGV0ZVRhYmxlSQ9yZWxlYXNlTWVtQXJyYXlKD3ZkYmVGcmVlT3BBcnJheUsQc3FsaXRlM192ZnNfZmluZEwSc3FsaXRlM19pbml0aWFsaXplTQ5zcWxpdGUzX2NvbmZpZ04Zc3FsaXRlM0luc2VydEJ1aWx0aW5GdW5jc08Nc3FsaXRlM01hbGxvY1AMc3FsaXRlM19mcmVlURRzcWxpdGUzX3Zmc19yZWdpc3RlclIJdmZzVW5saW5rUxlzcWxpdGUzX3NvZnRfaGVhcF9saW1pdDY0VBlzcWxpdGUzX2hhcmRfaGVhcF9saW1pdDY0VQ5zcWxpdGUzX21hbGxvY1YRc3FsaXRlM01hbGxvY1NpemVXDnNxbGl0ZTNSZWFsbG9jWBRzcWxpdGUzX3N0cl92YXBwZW5kZlkSc3FsaXRlM19zdHJfYXBwZW5kWhNzcWxpdGUzVmRiZUludFZhbHVlWw1wcmludGZUZW1wQnVmXBRzcWxpdGUzVmRiZVJlYWxWYWx1ZV0KZ2V0VGV4dEFyZ14Wc3FsaXRlM19zdHJfYXBwZW5kY2hhcl8QZW5sYXJnZUFuZEFwcGVuZGAVc3FsaXRlM19zdHJfYXBwZW5kYWxsYQtldF9nZXRkaWdpdGIQc2V0U3RyQWNjdW1FcnJvcmMUc3FsaXRlM0RiTWFsbG9jUmF3Tk5kEXNxbGl0ZTNfc3RyX3Jlc2V0ZRBzcWxpdGUzVmFsdWVUZXh0ZhZzcWxpdGUzU3RyQWNjdW1FbmxhcmdlZxBzcWxpdGUzRGJSZWFsbG9jaBVzcWxpdGUzU3RyQWNjdW1GaW5pc2hpFXN0ckFjY3VtRmluaXNoUmVhbGxvY2oQc3FsaXRlM192bXByaW50ZmsPc3FsaXRlM19tcHJpbnRmbBBzcWxpdGUzX3NucHJpbnRmbRNzcWxpdGUzX3N0cl9hcHBlbmRmbhJzcWxpdGUzX3JhbmRvbW5lc3NvD3NxbGl0ZTNfc3RyaWNtcHAOc3FsaXRlM1N0cklDbXBxEHNxbGl0ZTNfc3RybmljbXByE3NxbGl0ZTNFcnJvcldpdGhNc2dzEnNxbGl0ZTNFcnJvckZpbmlzaHQPc3FsaXRlM1ZNUHJpbnRmdRRzcWxpdGUzVmRiZU1lbVNldFN0cnYRc3FsaXRlM0ZpbmREYk5hbWV3F3NxbGl0ZTNPcGVuVGVtcERhdGFiYXNleBJzcWxpdGUzUGFyc2VyUmVzZXR5E3NxbGl0ZTNfYmFja3VwX3N0ZXB6FnNxbGl0ZTNCdHJlZUJlZ2luVHJhbnN7F3NxbGl0ZTNCdHJlZVNldFBhZ2VTaXplfA1iYWNrdXBPbmVQYWdlfRhzcWxpdGUzUGFnZXJVbnJlZk5vdE51bGx+C25ld0RhdGFiYXNlfxZzcWxpdGUzQnRyZWVVcGRhdGVNZXRhgAEic3FsaXRlM1Jlc2V0QWxsU2NoZW1hc09mQ29ubmVjdGlvboEBEXNxbGl0ZTNQYWdlcldyaXRlggEac3FsaXRlM1BhZ2VyQ29tbWl0UGhhc2VPbmWDARBzcWxpdGUzUGFnZXJTeW5jhAEac3FsaXRlM0J0cmVlQ29tbWl0UGhhc2VUd2+FARpzcWxpdGUzQnRyZWVDb21taXRQaGFzZU9uZYYBFnNxbGl0ZTNQYWdlclNoYXJlZExvY2uHAQxidHJlZUdldFBhZ2WIAQ5yZWxlYXNlUGFnZU9uZYkBC3BjYWNoZTFGcmVligEXc3FsaXRlM1BhZ2VyU2V0UGFnZXNpemWLAQtwYWdlckxvY2tEYowBFmJ0cmVlSW52b2tlQnVzeUhhbmRsZXKNARJwYWdlck9wZW5TYXZlcG9pbnSOARJzcWxpdGUzU2NoZW1hQ2xlYXKPARVzcWxpdGUzVnRhYlVubG9ja0xpc3SQARxzcWxpdGUzQ29sbGFwc2VEYXRhYmFzZUFycmF5kQEYc3Viam91cm5hbFBhZ2VJZlJlcXVpcmVkkgEVcGFnZXJXcml0ZUxhcmdlU2VjdG9ykwELcGFnZXJfd3JpdGWUARJwYWdlckZsdXNoT25Db21taXSVARlwYWdlcl93cml0ZV9jaGFuZ2Vjb3VudGVylgELc3luY0pvdXJuYWyXARZzcWxpdGUzUGNhY2hlRGlydHlMaXN0mAEUcGFnZXJfd3JpdGVfcGFnZWxpc3SZARZzcWxpdGUzUGNhY2hlTWFrZUNsZWFumgEOcGFnZXJfdHJ1bmNhdGWbARVwYWdlcl9lbmRfdHJhbnNhY3Rpb26cAQxnZXRQYWdlRXJyb3KdAQ1nZXRQYWdlTm9ybWFsngEUc3FsaXRlM0JpdHZlY0Rlc3Ryb3mfARNidHJlZUVuZFRyYW5zYWN0aW9uoAELZmluYWxEYlNpemWhARFzYXZlQ3Vyc29yc09uTGlzdKIBDmluY3JWYWN1dW1TdGVwowEUc3FsaXRlM1BhZ2VyUm9sbGJhY2ukARVzcWxpdGUzX2JhY2t1cF9maW5pc2ilARRzcWxpdGUzQnRyZWVSb2xsYmFja6YBH3NxbGl0ZTNMZWF2ZU11dGV4QW5kQ2xvc2Vab21iaWWnARpzcWxpdGUzQnRyZWVUcmlwQWxsQ3Vyc29yc6gBEGNvbm5lY3Rpb25Jc0J1c3mpARJzcWxpdGUzUm9sbGJhY2tBbGyqARZzcWxpdGUzQ2xvc2VTYXZlcG9pbnRzqwERc3FsaXRlM0J0cmVlQ2xvc2WsAQ9mdW5jdGlvbkRlc3Ryb3mtARBzcWxpdGUzSGFzaENsZWFyrgEWc3FsaXRlM1Z0YWJNb2R1bGVVbnJlZq8BEHNxbGl0ZTNWYWx1ZUZyZWWwARBzcWxpdGUzX2ZpbmFsaXplsQETc3FsaXRlM1ZkYmVGaW5hbGl6ZbIBC2FwaU9vbUVycm9yswEQc3FsaXRlM1ZkYmVSZXNldLQBEXNxbGl0ZTNWZGJlRGVsZXRltQENc3FsaXRlM19yZXNldLYBD3NxbGl0ZTNWZGJlSGFsdLcBGHNxbGl0ZTNWZGJlVHJhbnNmZXJFcnJvcrgBDHZkYmVNZW1DbGVhcrkBEnNxbGl0ZTNfdmFsdWVfYmxvYroBGHNxbGl0ZTNWZGJlTWVtRXhwYW5kQmxvYrsBEnNxbGl0ZTNWZGJlTWVtR3Jvd7wBEXNxbGl0ZTNWYWx1ZUJ5dGVzvQEKdmFsdWVCeXRlc74BDG1lbVJlYWxWYWx1Zb8BDWRvdWJsZVRvSW50NjTAAQttZW1JbnRWYWx1ZcEBC3ZhbHVlVG9UZXh0wgERc3FsaXRlM192YWx1ZV9kdXDDARtzcWxpdGUzVmRiZU1lbU1ha2VXcml0ZWFibGXEARR2ZGJlTWVtQWRkVGVybWluYXRvcsUBE3NldFJlc3VsdFN0ck9yRXJyb3LGARVzcWxpdGUzX3Jlc3VsdF9ibG9iNjTHARdzcWxpdGUzVmRiZU1lbVNldERvdWJsZcgBHHZkYmVNZW1DbGVhckV4dGVybkFuZFNldE51bGzJARZ2ZGJlUmVsZWFzZUFuZFNldEludDY0ygEVc3FsaXRlM19yZXN1bHRfdGV4dDY0ywESc3FsaXRlM1ZkYmVNZW1Db3B5zAEZc3FsaXRlM1ZkYmVNZW1TZXRaZXJvQmxvYs0BGXNxbGl0ZTNfcmVzdWx0X2Vycm9yX2NvZGXOARpzcWxpdGUzX3Jlc3VsdF9lcnJvcl9ub21lbc8BD3NxbGl0ZTNPb21GYXVsdNABDHNxbGl0ZTNfc3RlcNEBEXZkYmVTYWZldHlOb3ROdWxs0gEQc3FsaXRlM1ZkYmVFcnJvctMBD3NxbGl0ZTNWZGJlRXhlY9QBFXNxbGl0ZTNMb2NrQW5kUHJlcGFyZdUBD3NxbGl0ZTNEYlN0ckR1cNYBEGNyZWF0ZUFnZ0NvbnRleHTXARRzcWxpdGUzX2NvbHVtbl9jb3VudNgBE3NxbGl0ZTNfY29sdW1uX2Jsb2LZAQljb2x1bW5NZW3aARRzcWxpdGUzX2NvbHVtbl9ieXRlc9sBFXNxbGl0ZTNfY29sdW1uX2RvdWJsZdwBFHNxbGl0ZTNfY29sdW1uX2ludDY03QETc3FsaXRlM19jb2x1bW5fdGV4dN4BFHNxbGl0ZTNfY29sdW1uX3ZhbHVl3wETc3FsaXRlM19jb2x1bW5fdHlwZeABE3NxbGl0ZTNfY29sdW1uX25hbWXhAQpjb2x1bW5OYW1l4gEZc3FsaXRlM19jb2x1bW5fdGFibGVfbmFtZeMBGnNxbGl0ZTNfY29sdW1uX29yaWdpbl9uYW1l5AERc3FsaXRlM19iaW5kX2Jsb2LlAQhiaW5kVGV4dOYBCnZkYmVVbmJpbmTnARNzcWxpdGUzX2JpbmRfZG91Ymxl6AESc3FsaXRlM19iaW5kX2ludDY06QERc3FsaXRlM19iaW5kX251bGzqARFzcWxpdGUzX2JpbmRfdGV4dOsBHHNxbGl0ZTNfYmluZF9wYXJhbWV0ZXJfaW5kZXjsARVzcWxpdGUzVkxpc3ROYW1lVG9OdW3tARpzcWxpdGUzX3ZhbHVlX251bWVyaWNfdHlwZe4BFGFwcGx5TnVtZXJpY0FmZmluaXR57wELc3FsaXRlM0F0b0bwAQ1zcWxpdGUzQXRvaTY08QEac3FsaXRlM1ZkYmVJbnRlZ2VyQWZmaW5pdHnyARJzcWxpdGUzTG9jYXRlVGFibGXzAQ9zcWxpdGUzRXJyb3JNc2f0AQ5zcWxpdGUzTVByaW50ZvUBEXNxbGl0ZTNWZGJlQ3JlYXRl9gERc3FsaXRlM1ZkYmVBZGRPcDP3ARRzcWxpdGUzVmRiZUFkZE9wTGlzdPgBFHNxbGl0ZTNWZGJlTWFrZVJlYWR5+QERc3FsaXRlM1JlYWRTY2hlbWH6ARBzcWxpdGUzRmluZFRhYmxl+wETZmluZEVsZW1lbnRXaXRoSGFzaPwBDHByYWdtYUxvY2F0Zf0BF3NxbGl0ZTNWdGFiQ3JlYXRlTW9kdWxl/gERYWRkTW9kdWxlQXJndW1lbnT/ARN2dGFiQ2FsbENvbnN0cnVjdG9ygAILZ3Jvd09wQXJyYXmBAg9yZXNvbHZlUDJWYWx1ZXOCAhVzcWxpdGUzVmRiZVNldE51bUNvbHODAg5zcWxpdGUzX2Vycm1zZ4QCEGV4cHJMaXN0RGVsZXRlTk6FAg1hY2Nlc3NQYXlsb2FkhgIaYnRyZWVSZXN0b3JlQ3Vyc29yUG9zaXRpb26HAg5zYXZlQWxsQ3Vyc29yc4gCDnBhdHRlcm5Db21wYXJliQIPc3FsaXRlM1V0ZjhSZWFkigIMc3FsaXRlM19leGVjiwIUc3FsaXRlM1NhZmV0eUNoZWNrT2uMAhpzcWxpdGUzU2FmZXR5Q2hlY2tTaWNrT3JPa40CEnNxbGl0ZTNfcHJlcGFyZV92Mo4CDnNxbGl0ZTNQcmVwYXJljwIVc3FsaXRlM1Jlc2V0T25lU2NoZW1hkAIUc3FsaXRlM19kZWNsYXJlX3Z0YWKRAhBzcWxpdGUzUnVuUGFyc2VykgIPc3FsaXRlM0dldFRva2VukwIIZ2V0VG9rZW6UAgl5eV9yZWR1Y2WVAg95eVN0YWNrT3ZlcmZsb3eWAg15eV9kZXN0cnVjdG9ylwIRc3FsaXRlM1dpdGhEZWxldGWYAhlzcWxpdGUzRXhwckNvbXBhcmVDb2xsU2VxmQIbc3FsaXRlM0JpbmFyeUNvbXBhcmVDb2xsU2VxmgILa2V5d29yZENvZGWbAhlzcWxpdGUzX2RiX3JlbGVhc2VfbWVtb3J5nAILcGFnZXJTdHJlc3OdAg5zZXR1cExvb2thc2lkZZ4CGXNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWSfAg9zcWxpdGUzX2NoYW5nZXOgAhVzcWxpdGUzX3RvdGFsX2NoYW5nZXOhAg1zcWxpdGUzX2Nsb3NlogIMc3FsaXRlM0Nsb3NlowIRc3FsaXRlM1Z0YWJVbmxvY2ukAg1jYWxsRmluYWxpc2VypQIZc3FsaXRlRGVmYXVsdEJ1c3lDYWxsYmFja6YCEWNyZWF0ZUZ1bmN0aW9uQXBppwIRc3FsaXRlM0NyZWF0ZUZ1bmOoAhlzcWxpdGUzX292ZXJsb2FkX2Z1bmN0aW9uqQITc3FsaXRlM0ZpbmRGdW5jdGlvbqoCFnNxbGl0ZTNJbnZhbGlkRnVuY3Rpb26rAgxtYXRjaFF1YWxpdHmsAhVzcWxpdGUzRnVuY3Rpb25TZWFyY2itAhFzcWxpdGUzSGFzaEluc2VydK4CD3NxbGl0ZTNfZXJyY29kZa8CDHNxbGl0ZTNfb3BlbrACDG9wZW5EYXRhYmFzZbECC2JpbkNvbGxGdW5jsgIPY3JlYXRlQ29sbGF0aW9uswITbm9jYXNlQ29sbGF0aW5nRnVuY7QCDXJ0cmltQ29sbEZ1bmO1Ag9zcWxpdGUzUGFyc2VVcmm2AhBzcWxpdGUzQnRyZWVPcGVutwIQc3FsaXRlM1NjaGVtYUdldLgCEnNxbGl0ZTNGaW5kQ29sbFNlcbkCC3NxbGl0ZTNJbml0ugIOc3FsaXRlM0lzUm93aWS7Ag5zcWxpdGUzSW5pdE9uZbwCFHNxbGl0ZTNfZmlsZV9jb250cm9svQIQc3FsaXRlM0JpdHZlY1NldL4CEnNxbGl0ZTNCaXR2ZWNDbGVhcr8CGHNxbGl0ZTNCaXR2ZWNUZXN0Tm90TnVsbMACFXNxbGl0ZTNfdXJpX3BhcmFtZXRlcsECE3NxbGl0ZTNfdXJpX2Jvb2xlYW7CAg5nZXRTYWZldHlMZXZlbMMCFHNxbGl0ZTNEZWNPckhleFRvSTY0xAIac3FsaXRlM19jb21waWxlb3B0aW9uX3VzZWTFAhVtZWFzdXJlQWxsb2NhdGlvblNpemXGAg9kYlJlYWxsb2NGaW5pc2jHAhFkYk1hbGxvY1Jhd0ZpbmlzaMgCDXNldFNlY3RvclNpemXJAhhzcWxpdGUzUGNhY2hlU2V0UGFnZVNpemXKAgpwYWdlUmVpbml0ywIRc3FsaXRlM1BhZ2VyQ2xvc2XMAg1idHJlZUluaXRQYWdlzQIMcGNhY2hlMUFsbG9jzgILcGFnZXJfcmVzZXTPAgxwYWdlcl91bmxvY2vQAhNwYWdlclN5bmNIb3RKb3VybmFs0QIWcGFnZXJVbmxvY2tBbmRSb2xsYmFja9ICGXNxbGl0ZTNQYWdlckV4Y2x1c2l2ZUxvY2vTAg93cml0ZUpvdXJuYWxIZHLUAgxiYWNrdXBVcGRhdGXVAhVwY2FjaGVNYW5hZ2VEaXJ0eUxpc3TWAhhzcWxpdGUzUGNhY2hlRmV0Y2hGaW5pc2jXAhVhZGRUb1NhdmVwb2ludEJpdHZlY3PYAhFzcWxpdGUzUGNhY2hlRHJvcNkCGXBjYWNoZUZldGNoRmluaXNoV2l0aEluaXTaAg5wYWdlcl9wbGF5YmFja9sCFHJlbGVhc2VBbGxTYXZlcG9pbnRz3AIVc3FsaXRlM1BjYWNoZVRydW5jYXRl3QIRcmVhZE1hc3RlckpvdXJuYWzeAg5yZWFkSm91cm5hbEhkct8CF3BhZ2VyX3BsYXliYWNrX29uZV9wYWdl4AIKcmVhZDMyYml0c+ECEnNxbGl0ZTNQYWdlckxvb2t1cOICFnNxbGl0ZTNQY2FjaGVNYWtlRGlydHnjAhRzcWxpdGUzUGNhY2hlUmVsZWFzZeQCDG1lbWpybmxDbG9zZeUCC21lbWpybmxSZWFk5gIMbWVtanJubFdyaXRl5wIPbWVtanJubFRydW5jYXRl6AILbWVtanJubFN5bmPpAg9tZW1qcm5sRmlsZVNpemXqAgtkZWNvZGVGbGFnc+sCEmJ0cmVlQ2VsbFNpemVDaGVja+wCC2NlbGxTaXplUHRy7QIRYnRyZWVQYXJzZUNlbGxQdHLuAhRjZWxsU2l6ZVB0ck5vUGF5bG9hZO8CGmJ0cmVlUGFyc2VDZWxsUHRyTm9QYXlsb2Fk8AIWYnRyZWVQYXJzZUNlbGxQdHJJbmRlePECI2J0cmVlUGFyc2VDZWxsQWRqdXN0U2l6ZUZvck92ZXJmbG938gIQc3FsaXRlM0dldFZhcmludPMCCHplcm9QYWdl9AIOcGFnZXJQYWdlY291bnT1Ah1wYWdlckFkZFBhZ2VUb1JvbGxiYWNrSm91cm5hbPYCCXB0cm1hcEdldPcCEWFsbG9jYXRlQnRyZWVQYWdl+AIMcmVsb2NhdGVQYWdl+QISc2F2ZUN1cnNvclBvc2l0aW9u+gIaYnRyZWVSZWxlYXNlQWxsQ3Vyc29yUGFnZXP7Ag1zYXZlQ3Vyc29yS2V5/AILZ2V0Q2VsbEluZm/9Ag9nZXRPdmVyZmxvd1BhZ2X+AhJidHJlZUdldFVudXNlZFBhZ2X/AhFzcWxpdGUzUGNhY2hlTW92ZYADCXB0cm1hcFB1dIEDD3NldENoaWxkUHRybWFwc4IDEHB0cm1hcFB1dE92ZmxQdHKDAwZmcmVlUDSEAw1mcmVlUDRGdW5jQ3R4hQMJZnJlZVA0TWVthgMXc3FsaXRlM1ZkYmVGcmFtZVJlc3RvcmWHAxNjbG9zZUN1cnNvcnNJbkZyYW1liAMVc3FsaXRlM1ZkYmVGcmVlQ3Vyc29yiQMYc3FsaXRlM1ZkYmVEZWxldGVBdXhEYXRhigMXc3FsaXRlM1Z0YWJJbXBvcnRFcnJtc2eLAxNzcWxpdGUzT3NPcGVuTWFsbG9jjAMSdmRiZUNsb3NlU3RhdGVtZW50jQMWc3FsaXRlM1ZkYmVTb3J0ZXJSZXNldI4DF3NxbGl0ZTNCdHJlZUNsb3NlQ3Vyc29yjwMTdmRiZU1lcmdlRW5naW5lRnJlZZADEnZkYmVQbWFSZWFkZXJDbGVhcpEDDHZkYmVJbmNyRnJlZZIDFXNxbGl0ZTNCdHJlZVNhdmVwb2ludJMDFHNxbGl0ZTNWdGFiU2F2ZXBvaW50lAMWc3FsaXRlM1ZkYmVNZW1GaW5hbGl6ZZUDFnNxbGl0ZTNEYlJlYWxsb2NPckZyZWWWAxdzcWxpdGUzVmRiZU1lbVN0cmluZ2lmeZcDDHNxbGl0ZTNQb3cxMJgDF291dDJQcmVyZWxlYXNlV2l0aENsZWFymQMZc3FsaXRlM1ZkYmVNZW1TaGFsbG93Q29weZoDEmNvbXB1dGVOdW1lcmljVHlwZZsDDWFwcGx5QWZmaW5pdHmcAxJzcWxpdGUzVmRiZU1lbUNhc3SdAxFzcWxpdGUzTWVtQ29tcGFyZZ4DF3NxbGl0ZTNWZGJlQm9vbGVhblZhbHVlnwMXc3FsaXRlM1ZkYmVGaW5pc2hNb3ZldG+gAxFoYW5kbGVNb3ZlZEN1cnNvcqEDEnNxbGl0ZTNHZXRWYXJpbnQzMqIDF3NxbGl0ZTNWZGJlTWVtRnJvbUJ0cmVlowMQc3FsaXRlM1B1dFZhcmludKQDCm1vdmVUb1Jvb3SlAwxtb3ZlVG9QYXJlbnSmAwttb3ZlVG9DaGlsZKcDE3NxbGl0ZTNCdHJlZUdldE1ldGGoAw5hbGxvY2F0ZUN1cnNvcqkDEnNxbGl0ZTNCdHJlZUN1cnNvcqoDFnNxbGl0ZTNCdHJlZUNsZWFyVGFibGWrAxdzcWxpdGUzQnRyZWVDcmVhdGVUYWJsZawDEHNxbGl0ZTNCdHJlZUxhc3StAxpzcWxpdGUzQnRyZWVNb3ZldG9VbnBhY2tlZK4DEHNxbGl0ZTNCdHJlZU5leHSvAxRzcWxpdGUzQnRyZWVQcmV2aW91c7ADHnNxbGl0ZTNWZGJlQWxsb2NVbnBhY2tlZFJlY29yZLEDF3NxbGl0ZTNWZGJlUmVjb3JkVW5wYWNrsgMSc3FsaXRlM0J0cmVlSW5zZXJ0swMSc3FsaXRlM0J0cmVlRGVsZXRltAMgc3FsaXRlM1ZkYmVSZWNvcmRDb21wYXJlV2l0aFNraXC1AxFzcWxpdGUzQnRyZWVGaXJzdLYDDXNxbGl0ZTNMb2dFc3S3Aw52ZGJlU29ydGVyU29ydLgDEnZkYmVTb3J0ZXJGbHVzaFBNQbkDEnZkYmVNZXJnZUVuZ2luZU5ld7oDFXZkYmVNZXJnZUVuZ2luZUxldmVsMLsDEXZkYmVJbmNyTWVyZ2VyTmV3vAMTdmRiZU1lcmdlRW5naW5lSW5pdL0DCmdyb3dWVHJhbnO+AxBzcWxpdGUzUnVuVmFjdXVtvwMWc3FsaXRlM1ZkYmVGcmFtZU1lbURlbMADF3NxbGl0ZTNWZGJlTWVtU2V0Um93U2V0wQMPcm93U2V0RW50cnlTb3J0wgMQcm93U2V0VHJlZVRvTGlzdMMDEHJvd1NldEVudHJ5TWVyZ2XEAxByb3dTZXRFbnRyeUFsbG9jxQMQcm93U2V0TGlzdFRvVHJlZcYDE3NxbGl0ZTNSb3dTZXRJbnNlcnTHAxJzcWxpdGUzUm93U2V0Q2xlYXLIAwljaGVja0xpc3TJAw5jaGVja0FwcGVuZE1zZ8oDC2NoZWNrUHRybWFwywMNY2hlY2tUcmVlUGFnZcwDEHNxbGl0ZTNGcmVlSW5kZXjNAxNzcWxpdGUzQW5hbHlzaXNMb2FkzgMTc3FsaXRlM0luaXRDYWxsYmFja88DCWZyZWVQYWdlMtADFHNxbGl0ZTNWZGJlU2VyaWFsR2V00QMTdmRiZU1lcmdlRW5naW5lU3RlcNIDC3ZkYmVDbHJDb3B50wMWc3FsaXRlM1ZkYmVNZW1OdW1lcmlmedQDFHZkYmVDb21wYXJlTWVtU3RyaW5n1QMSc3FsaXRlM0Jsb2JDb21wYXJl1gMWdmRiZU1lbUZyb21CdHJlZVJlc2l6ZdcDC3B1dFZhcmludDY02AMLYnRyZWVDdXJzb3LZAxlpbnZhbGlkYXRlSW5jcmJsb2JDdXJzb3Jz2gMRY2xlYXJEYXRhYmFzZVBhZ2XbAw9tb3ZlVG9SaWdodG1vc3TcAxhzcWxpdGUzVmRiZVJlY29yZENvbXBhcmXdAxR2ZGJlUmVjb3JkQ29tcGFyZUludN4DF3ZkYmVSZWNvcmRDb21wYXJlU3RyaW5n3wMObW92ZVRvTGVmdG1vc3TgAwlidHJlZU5leHThAw1idHJlZVByZXZpb3Vz4gMSYnRyZWVPdmVyd3JpdGVDZWxs4wMLYnRyZWVNb3ZldG/kAxVidHJlZUNvbXB1dGVGcmVlU3BhY2XlAwljbGVhckNlbGzmAwhkcm9wQ2VsbOcDCmluc2VydENlbGzoAwdiYWxhbmNl6QMQc3FsaXRlM1NldFN0cmluZ+oDGHNxbGl0ZTNCdHJlZVNldENhY2hlU2l6ZesDEnNxbGl0ZTNCdHJlZUNvbW1pdOwDDWNvcnJ1cHRTY2hlbWHtAw9zcWxpdGUzR2V0SW50MzLuAxBzcWxpdGUzRmluZEluZGV47wMOYW5hbHlzaXNMb2FkZXLwAxRzcWxpdGUzRGVmYXVsdFJvd0VzdPEDE3NxbGl0ZTNSb3dTZXREZWxldGXyAwhleGVjU3FsRvMDGHNxbGl0ZTNCdHJlZVNldFNwaWxsU2l6ZfQDB2V4ZWNTcWz1Aw5nZXRBbmRJbml0UGFnZfYDD2J0cmVlUGFnZUxvb2t1cPcDFWJ0cmVlT3ZlcndyaXRlQ29udGVudPgDCWZyZWVTcGFjZfkDDHBhZ2VGaW5kU2xvdPoDDmRlZnJhZ21lbnRQYWdl+wMPY29weU5vZGVDb250ZW50/AMLcmVidWlsZFBhZ2X9Aw9jb21wdXRlQ2VsbFNpemX+Aw1wYWdlRnJlZUFycmF5/wMPcGFnZUluc2VydEFycmF5gAQUdmRiZVNvcnRlckNvbXBhcmVJbnSBBBV2ZGJlU29ydGVyQ29tcGFyZVRleHSCBBF2ZGJlU29ydGVyQ29tcGFyZYMED3ZkYmVTb3J0ZXJNZXJnZYQEFnZkYmVTb3J0ZXJPcGVuVGVtcEZpbGWFBBB2ZGJlUG1hV3JpdGVCbG9ihgQTdmRiZVBtYVdyaXRlckZpbmlzaIcEFXZkYmVTb3J0ZXJDb21wYXJlVGFpbIgEGnZkYmVQbWFSZWFkZXJJbmNyTWVyZ2VJbml0iQQRdmRiZVBtYVJlYWRlclNlZWuKBBF2ZGJlUG1hUmVhZFZhcmludIsEEXZkYmVQbWFSZWFkZXJOZXh0jAQPdmRiZVBtYVJlYWRCbG9ijQQQdmRiZUluY3JQb3B1bGF0ZY4EDmRlY29kZUludEFycmF5jwQNaW5zZXJ0RWxlbWVudJAEC2NsZWFyU2VsZWN0kQQTc3FsaXRlM1dpbmRvd0RlbGV0ZZIEFHNxbGl0ZTNTcmNMaXN0RGVsZXRlkwQIY2hlY2tSZWaUBA9idHJlZUhlYXBJbnNlcnSVBA9yb3dTZXRORGVlcFRyZWWWBBlzcWxpdGUzQnRyZWVTZXRQYWdlckZsYWdzlwQHZ3Jvd09wM5gEEXByYWdtYVZ0YWJDb25uZWN0mQQTcHJhZ21hVnRhYkJlc3RJbmRleJoEFHByYWdtYVZ0YWJEaXNjb25uZWN0mwQOcHJhZ21hVnRhYk9wZW6cBA9wcmFnbWFWdGFiQ2xvc2WdBBVwcmFnbWFWdGFiQ3Vyc29yQ2xlYXKeBBBwcmFnbWFWdGFiRmlsdGVynwQOcHJhZ21hVnRhYk5leHSgBA1wcmFnbWFWdGFiRW9moQQQcHJhZ21hVnRhYkNvbHVtbqIED3ByYWdtYVZ0YWJSb3dpZKMED2ZrVHJpZ2dlckRlbGV0ZaQEGHNxbGl0ZTNEZWxldGVDb2x1bW5OYW1lc6UEE3NxbGl0ZTNVcHNlcnREZWxldGWmBBJzcWxpdGUzRXhwckNvbGxTZXGnBBFzcWxpdGUzR2V0Q29sbFNlcagEDnNxbGl0ZTNHZXRWZGJlqQQSc3FsaXRlM1dpbmRvd0FsbG9jqgQVc3FsaXRlM1dpbmRvd0Fzc2VtYmxlqwQSc3FsaXRlM1dpbmRvd0NoYWlurAQOc3FsaXRlM1dpdGhBZGStBBFhZGRBcmd1bWVudFRvVnRhYq4EEXNxbGl0ZTNTdGFydFRhYmxlrwQUc3FsaXRlM05hbWVGcm9tVG9rZW6wBBBzcWxpdGUzQXV0aENoZWNrsQQWc3FsaXRlM1Z0YWJGaW5pc2hQYXJzZbIEFnNxbGl0ZTNMb2NhdGVUYWJsZUl0ZW2zBBBpc0FsdGVyYWJsZVRhYmxltAQSc3FsaXRlM05lc3RlZFBhcnNltQQScmVuYW1lUmVsb2FkU2NoZW1htgQQcmVuYW1lVGVzdFNjaGVtYbcEDXZhbHVlRnJvbUV4cHK4BBZzcWxpdGUzQ2hlY2tPYmplY3ROYW1luQQZc3FsaXRlM1ZpZXdHZXRDb2x1bW5OYW1lc7oEE3NxbGl0ZTNWZGJlQ2hhbmdlUDS7BA5zcWxpdGUzQW5hbHl6ZbwEDnNxbGl0ZTNSZWluZGV4vQQKY29kZUF0dGFjaL4EHHNxbGl0ZTNDb2RlVmVyaWZ5TmFtZWRTY2hlbWG/BBVzcWxpdGUzRHJvcFRyaWdnZXJQdHLABBBzcWxpdGUzRXhwckFsbG9jwQQMc3FsaXRlM1BFeHBywgQOdHJpZ2dlclNwYW5EdXDDBBN0cmlnZ2VyU3RlcEFsbG9jYXRlxAQHZXhwckR1cMUEEHNxbGl0ZTNTZWxlY3REdXDGBBdzcWxpdGUzSGFzRXhwbGljaXROdWxsc8cEEnNxbGl0ZTNFeHByTGlzdER1cMgEEnNxbGl0ZTNUd29QYXJ0TmFtZckEFHNxbGl0ZTNTcmNMaXN0TG9va3VwygQRc3FsaXRlM0ZpeFNyY0xpc3TLBBdzcWxpdGUzQ29kZVZlcmlmeVNjaGVtYcwEEHNxbGl0ZTNGaXhTZWxlY3TNBA5zcWxpdGUzRml4RXhwcs4EEnNxbGl0ZTNGaXhFeHByTGlzdM8EG3NxbGl0ZTNWZGJlQWRkUGFyc2VTY2hlbWFPcNAEDXNxbGl0ZTNQcmFnbWHRBA1zcWxpdGUzVmFjdXVt0gQWc3FsaXRlM0NsZWFyU3RhdFRhYmxlc9MED2Rlc3Ryb3lSb290UGFnZdQEF3BhcnNlckFkZEV4cHJJZExpc3RUZXJt1QQUc3FsaXRlM1NyY0xpc3RBcHBlbmTWBBJzcWxpdGUzQ3JlYXRlSW5kZXjXBBVzcWxpdGUzUmVuYW1lVG9rZW5NYXDYBBVzcWxpdGUzRXhwckxpc3RBcHBlbmTZBBxzcWxpdGUzRXhwclNldEhlaWdodEFuZEZsYWdz2gQVc3FsaXRlM1BFeHByQWRkU2VsZWN02wQQc3FsaXRlM1NlbGVjdE5ld9wEFnNxbGl0ZTNTcmNMaXN0RnVuY0FyZ3PdBBlzcWxpdGUzRXhwclVubWFwQW5kRGVsZXRl3gQLc3FsaXRlM0V4cHLfBBNiaW5hcnlUb1VuYXJ5SWZOdWxs4AQTc3FsaXRlM0V4cHJGdW5jdGlvbuEEDnNxbGl0ZTNFeHByQW5k4gQTc3FsaXRlM1dpbmRvd0F0dGFjaOMEGXNxbGl0ZTNFeHByQXR0YWNoU3VidHJlZXPkBBpzcWxpdGUzRXhwckFkZENvbGxhdGVUb2tlbuUECXRva2VuRXhwcuYEE3NxbGl0ZTNJZExpc3RBcHBlbmTnBBBzcWxpdGUzVXBzZXJ0TmV36AQNc3FsaXRlM0luc2VydOkEG3NxbGl0ZTNFeHByTGlzdEFwcGVuZFZlY3RvcuoEFnNxbGl0ZTNFeHByTGlzdFNldE5hbWXrBBdzcWxpdGUzU3JjTGlzdEluZGV4ZWRCeewEDXNxbGl0ZTNVcGRhdGXtBBFzcWxpdGUzRGVsZXRlRnJvbe4EG3NxbGl0ZTNFeHByTGlzdFNldFNvcnRPcmRlcu8ED3NxbGl0ZTNKb2luVHlwZfAEHHNxbGl0ZTNTcmNMaXN0QXBwZW5kRnJvbVRlcm3xBBBzcWxpdGUzRGJTcGFuRHVw8gQWcGFyc2VyRG91YmxlTGlua1NlbGVjdPMEDXNxbGl0ZTNTZWxlY3T0BBBzcWxpdGUzRHJvcFRhYmxl9QQPc3FsaXRlM0VuZFRhYmxl9gQac3FsaXRlM1JlbmFtZUV4cHJsaXN0VW5tYXD3BBdzcWxpdGUzQ3JlYXRlRm9yZWlnbktlefgEGXNxbGl0ZTNBZGRDaGVja0NvbnN0cmFpbnT5BBRzcWxpdGUzQWRkUHJpbWFyeUtlefoEE3NxbGl0ZTNBZGRHZW5lcmF0ZWT7BBRzcWxpdGUzTG9jYXRlQ29sbFNlcfwEGHNxbGl0ZTNFeHBySWRUb1RydWVGYWxzZf0EFnNxbGl0ZTNBZGREZWZhdWx0VmFsdWX+BA5zcWxpdGUzRGVxdW90Zf8EE3NxbGl0ZTNBZmZpbml0eVR5cGWABRBzcWxpdGUzU2F2ZXBvaW50gQUQc3FsaXRlM09wZW5UYWJsZYIFD3NxbGl0ZTNFeHByQ29kZYMFFnNxbGl0ZTNTaGFkb3dUYWJsZU5hbWWEBQtpc0R1cENvbHVtboUFEXJlc2l6ZUluZGV4T2JqZWN0hgUacmVjb21wdXRlQ29sdW1uc05vdEluZGV4ZWSHBRtzcWxpdGUzUmVzb2x2ZVNlbGZSZWZlcmVuY2WIBRJlc3RpbWF0ZUluZGV4V2lkdGiJBRhzcWxpdGUzUmVzdWx0U2V0T2ZTZWxlY3SKBRRzcWxpdGUzVGFibGVBZmZpbml0eYsFCGlkZW50UHV0jAUSc3FsaXRlM1V0ZjhDaGFyTGVujQUVc3FsaXRlM1NlbGVjdFdhbGtGYWlsjgUSZXhwck5vZGVJc0NvbnN0YW50jwUId2Fsa0V4cHKQBRZzcWxpdGUzUmVuYW1lRXhwclVubWFwkQUUc3FsaXRlM0lzVHJ1ZU9yRmFsc2WSBRFzcWxpdGUzU3RyaW5nVG9JZJMFGnNxbGl0ZTNBbGxvY2F0ZUluZGV4T2JqZWN0lAUSc3FsaXRlM1JlZmlsbEluZGV4lQURc3FsaXRlM1NyY0xpc3REdXCWBRVzcWxpdGUzSGFsdENvbnN0cmFpbnSXBRdzcWxpdGUzVmRiZVJlc29sdmVMYWJlbJgFEnNxbGl0ZTNUcmlnZ2VyTGlzdJkFDGRlc3Ryb3lUYWJsZZoFEXNxbGl0ZTNTZWxlY3RQcmVwmwUOY29sdW1uVHlwZUltcGycBRJleHByTGlzdEFwcGVuZExpc3SdBRZzcWxpdGUzRXhwckxpc3RDb21wYXJlngUbc2VsZWN0V2luZG93UmV3cml0ZVNlbGVjdENinwUZc2VsZWN0V2luZG93UmV3cml0ZUV4cHJDYqAFE3NxbGl0ZTNXYWxrRXhwckxpc3ShBRtzcWxpdGUzU3JjTGlzdEFzc2lnbkN1cnNvcnOiBRxzcWxpdGUzRXhwckltcGxpZXNOb25OdWxsUm93owUNdW5zZXRKb2luRXhwcqQFFXNxbGl0ZTNTcmNMaXN0RW5sYXJnZaUFEnNxbGl0ZTNTZXRKb2luRXhwcqYFC3N1YnN0U2VsZWN0pwUQZmluZENvbnN0SW5XaGVyZagFFXNxbGl0ZTNTZWxlY3RXYWxrTm9vcKkFHHByb3BhZ2F0ZUNvbnN0YW50RXhwclJld3JpdGWqBQ5oZWlnaHRPZlNlbGVjdKsFEnB1c2hEb3duV2hlcmVUZXJtc6wFEnNxbGl0ZTNWZGJlRXhwbGFpbq0FEnNxbGl0ZTNFeHByQ29tcGFyZa4FGnNxbGl0ZTNLZXlJbmZvRnJvbUV4cHJMaXN0rwUVY29tcHV0ZUxpbWl0UmVnaXN0ZXJzsAUTc3FsaXRlM1ZkYmVBcHBlbmRQNLEFGXNxbGl0ZTNFeHByQW5hbHl6ZUFnZ0xpc3SyBRNoYXZpbmdUb1doZXJlRXhwckNiswUcYW5hbHl6ZUFnZ3JlZ2F0ZXNJblNlbGVjdEVuZLQFGWFuYWx5emVBZ2dyZWdhdGVzSW5TZWxlY3S1BRBhbmFseXplQWdncmVnYXRltgURc3FsaXRlM1doZXJlQmVnaW63BRNzcWxpdGUzR2V0VGVtcFJhbmdluAUXc3FsaXRlM0V4cHJDb2RlRXhwckxpc3S5BR9zcWxpdGUzRXhwckNvZGVHZXRDb2x1bW5PZlRhYmxlugUPc3FsaXRlM1doZXJlRW5kuwUXc3FsaXRlM1ZkYmVDaGFuZ2VUb05vb3C8BRF1cGRhdGVBY2N1bXVsYXRvcr0FFGZpbmFsaXplQWdnRnVuY3Rpb25zvgUSc3FsaXRlM0V4cHJJZkZhbHNlvwUPc2VsZWN0SW5uZXJMb29wwAUQcmVzZXRBY2N1bXVsYXRvcsEFFXNxbGl0ZTNLZXlJbmZvT2ZJbmRleMIFEHdpbmRvd0V4cHJHdFplcm/DBRB3aW5kb3dDaGVja1ZhbHVlxAUOd2luZG93QWdnRmluYWzFBRJ3aW5kb3dSZXR1cm5PbmVSb3fGBQ93aW5kb3dJZk5ld1BlZXLHBQx3aW5kb3dDb2RlT3DIBRN3aW5kb3dDb2RlUmFuZ2VUZXN0yQURbXVsdGlTZWxlY3RWYWx1ZXPKBRpnZW5lcmF0ZVdpdGhSZWN1cnNpdmVRdWVyecsFEm11bHRpU2VsZWN0T3JkZXJCecwFEHNxbGl0ZTNMb2dFc3RBZGTNBRRzcWxpdGUzRXhwcklzSW50ZWdlcs4FE3NxbGl0ZTNLZXlJbmZvQWxsb2PPBRJtdWx0aVNlbGVjdENvbGxTZXHQBRRzcWxpdGUzVHJpZ2dlcnNFeGlzdNEFEXNxbGl0ZTNGa1JlcXVpcmVk0gURc3FsaXRlM0lzUmVhZE9ubHnTBRZzcWxpdGUzTWF0ZXJpYWxpemVWaWV31AUXc3FsaXRlM1Jlc29sdmVFeHByTmFtZXPVBRdzcWxpdGUzVmRiZVNldFA0S2V5SW5mb9YFF3NxbGl0ZTNJbmRleEFmZmluaXR5U3Ry1wUac3FsaXRlM09wZW5UYWJsZUFuZEluZGljZXPYBRdzcWxpdGUzVnRhYk1ha2VXcml0YWJsZdkFGHNxbGl0ZTNHZW5lcmF0ZVJvd0RlbGV0ZdoFEGF1dG9JbmNyZW1lbnRFbmTbBSJzcWxpdGUzRXhwclJlZmVyZW5jZXNVcGRhdGVkQ29sdW1u3AUQc3FsaXRlM0ZrT2xkbWFza90FFXNxbGl0ZTNUcmlnZ2VyQ29sbWFza94FG3NxbGl0ZTNUYWJsZUNvbHVtblRvU3RvcmFnZd8FHnNxbGl0ZTNDb21wdXRlR2VuZXJhdGVkQ29sdW1uc+AFFXNxbGl0ZTNDb2RlUm93VHJpZ2dlcuEFH3NxbGl0ZTNHZW5lcmF0ZUNvbnN0cmFpbnRDaGVja3PiBQ5zcWxpdGUzRmtDaGVja+MFHXNxbGl0ZTNHZW5lcmF0ZVJvd0luZGV4RGVsZXRl5AUYc3FsaXRlM0NvbXBsZXRlSW5zZXJ0aW9u5QUQc3FsaXRlM0ZrQWN0aW9uc+YFGXNxbGl0ZTNFeHByRm9yVmVjdG9yRmllbGTnBRN4ZmVyQ29tcGF0aWJsZUluZGV46AUMYXV0b0luY0JlZ2lu6QUWc3FsaXRlM1Jvd2lkQ29uc3RyYWludOoFG3NxbGl0ZTNSZXNvbHZlRXhwckxpc3ROYW1lc+sFGXNxbGl0ZTNFeHByQ29kZUZhY3RvcmFibGXsBRRzcWxpdGUzQXJyYXlBbGxvY2F0Ze0FDWV4cHJTZXRIZWlnaHTuBRNyZW5hbWVVbm1hcFNlbGVjdENi7wURcmVuYW1lVW5tYXBFeHByQ2LwBRByZXR1cm5TaW5nbGVUZXh08QUac2V0UHJhZ21hUmVzdWx0Q29sdW1uTmFtZXPyBQ9yZXR1cm5TaW5nbGVJbnTzBRdpbnRlZ3JpdHlDaGVja1Jlc3VsdFJvd/QFEXNxbGl0ZTNFeHBySWZUcnVl9QUXc3FsaXRlM0dlbmVyYXRlSW5kZXhLZXn2BQhsaWtlRnVuY/cFFHNxbGl0ZTNGa0xvY2F0ZUluZGV4+AUUc3FsaXRlM1ZkYmVNdWx0aUxvYWT5BRJwcmFnbWFGdW5jbGlzdExpbmX6BRBzZXRBbGxQYWdlckZsYWdz+wUVaW52YWxpZGF0ZVRlbXBTdG9yYWdl/AUQcmVpbmRleERhdGFiYXNlc/0FDHJlaW5kZXhUYWJsZf4FD2FuYWx5emVEYXRhYmFzZf8FDXNxbGl0ZTNGaW5kRGKABgxhbmFseXplVGFibGWBBgp3aW5kb3dGaW5kggYXc3FsaXRlM1dpbmRvd09mZnNldEV4cHKDBhVzcWxpdGUzRXhwckNvZGVUYXJnZXSEBhB2ZGJlQ2hhbmdlUDRGdWxshQYec3FsaXRlM0V4cHJDb2RlR2VuZXJhdGVkQ29sdW1uhgYLY29kZUludGVnZXKHBghjb2RlUmVhbIgGEHNxbGl0ZTNIZXhUb0Jsb2KJBhNzcWxpdGUzRXhwckNvZGVUZW1wigYUc3FsaXRlM0NvZGVTdWJzZWxlY3SLBg5leHByQ29kZVZlY3RvcowGDmV4cHJUb1JlZ2lzdGVyjQYVc3FsaXRlM0V4cHJDb2RlQXRJbml0jgYPZXhwckNvZGVCZXR3ZWVujwYRc3FsaXRlM0V4cHJDb2RlSU6QBhZzcWxpdGUzRXhwckltcGxpZXNFeHBykQYZc3FsaXRlM0V4cHJGdW5jdGlvblVzYWJsZZIGG3NxbGl0ZTNWdGFiT3ZlcmxvYWRGdW5jdGlvbpMGGnNxbGl0ZTNWZGJlQWRkRnVuY3Rpb25DYWxslAYSZXhwclZlY3RvclJlZ2lzdGVylQYLY29kZUNvbXBhcmWWBhVzcWxpdGUzVmRiZUFkZE9wNER1cDiXBhNzcWxpdGUzRXhwckFmZmluaXR5mAYWc3FsaXRlM0NvbXBhcmVBZmZpbml0eZkGEnNxbGl0ZTNFeHByQ2hlY2tJTpoGDmV4cHJJTkFmZmluaXR5mwYSc3FsaXRlM0ZpbmRJbkluZGV4nAYUc3FsaXRlM0V4cHJDYW5CZU51bGydBhlzcWxpdGUzVmVjdG9yRmllbGRTdWJleHByngYScmVzaXplUmVzb2x2ZUxhYmVsnwYac3FsaXRlM0V4cHJTaW1wbGlmaWVkQW5kT3KgBg9zcWxpdGUzV2Fsa0V4cHKhBhFzcWxpdGUzV2Fsa1NlbGVjdKIGDndhbGtXaW5kb3dMaXN0owYYc3FsaXRlM1ZkYmVHZXRCb3VuZFZhbHVlpAYUc3FsaXRlM1dpbmRvd0NvbXBhcmWlBhJleHBySW1wbGllc05vdE51bGymBhFpbXBsaWVzTm90TnVsbFJvd6cGFXNxbGl0ZTNWZWN0b3JFcnJvck1zZ6gGFXNxbGl0ZTNTZXRIYXNOdWxsRmxhZ6kGDWR1cGVkRXhwclNpemWqBhFkdXBlZEV4cHJOb2RlU2l6ZasGEHNxbGl0ZTNXaW5kb3dEdXCsBiFnYXRoZXJTZWxlY3RXaW5kb3dzU2VsZWN0Q2FsbGJhY2utBhtnYXRoZXJTZWxlY3RXaW5kb3dzQ2FsbGJhY2uuBhBzcWxpdGUzSWRMaXN0RHVwrwYRc3FsaXRlM1dpbmRvd0xpbmuwBhpzcWxpdGUzQ29sdW1uc0Zyb21FeHByTGlzdLEGJnNxbGl0ZTNTZWxlY3RBZGRDb2x1bW5UeXBlQW5kQ29sbGF0aW9usgYRcmVzb2x2ZVNlbGVjdFN0ZXCzBg9yZXNvbHZlRXhwclN0ZXC0Bgxub3RWYWxpZEltcGy1BgxleHByU3JjQ291bnS2BhFzcWxpdGUzTWF0Y2hFTmFtZbcGDHJlc29sdmVBbGlhc7gGEnNxbGl0ZTNBdXRoUmVhZENvbLkGE3Jlc29sdmVPcmRlckdyb3VwQnm6Bg1yZXNvbHZlQXNOYW1luwYMaW5jckFnZ0RlcHRovAYbc3FsaXRlM0V4cHJBZGRDb2xsYXRlU3RyaW5nvQYTc3FsaXRlM0V4cHJXYWxrTm9vcL4GH2NvbnZlcnRDb21wb3VuZFNlbGVjdFRvU3VicXVlcnm/Bg1zZWxlY3RQb3BXaXRowAYOc2VsZWN0RXhwYW5kZXLBBhlzZWxlY3RBZGRTdWJxdWVyeVR5cGVJbmZvwgYWcmVzb2x2ZVJlbW92ZVdpbmRvd3NDYsMGGnNxbGl0ZTNSZXNvbHZlT3JkZXJHcm91cEJ5xAYWc3FsaXRlM0luZGV4ZWRCeUxvb2t1cMUGE3RhYmxlQW5kQ29sdW1uSW5kZXjGBgxhZGRXaGVyZVRlcm3HBgtjb2x1bW5JbmRleMgGEnNxbGl0ZTNJZExpc3RJbmRleMkGF3NxbGl0ZTNDcmVhdGVDb2x1bW5FeHByygYOcmVuYW1lV2Fsa1dpdGjLBhdzcWxpdGUzVW5pcXVlQ29uc3RyYWludMwGFXNxbGl0ZTNFeHBySWZGYWxzZUR1cM0GE3NxbGl0ZTNFeHByQ29kZUNvcHnOBglzdWJzdEV4cHLPBhFzcWxpdGUzV2hlcmVTcGxpdNAGEXdoZXJlQ2xhdXNlSW5zZXJ00QYLZXhwckFuYWx5emXSBhdleHByTm9kZUlzRGV0ZXJtaW5pc3RpY9MGFHNxbGl0ZTNXaGVyZUZpbmRUZXJt1AYTd2hlcmVMb29wQWRkVmlydHVhbNUGEXdoZXJlTG9vcEFkZEJ0cmVl1gYOd2hlcmVMb29wQWRkT3LXBg53aGVyZUxvb3BDbGVhctgGD3doZXJlUGF0aFNvbHZlctkGGXNxbGl0ZTNXaGVyZUV4cHJMaXN0VXNhZ2XaBhF0ZXJtQ2FuRHJpdmVJbmRleNsGD3doZXJlTG9vcFJlc2l6ZdwGFXRyYW5zbGF0ZUNvbHVtblRvQ29wed0GGnNxbGl0ZTNXaGVyZUV4cGxhaW5PbmVTY2Fu3gYQY29kZUVxdWFsaXR5VGVybd8GEGNvZGVFeHByT3JWZWN0b3LgBgtkaXNhYmxlVGVybeEGFGNvZGVBbGxFcXVhbGl0eVRlcm1z4gYWdXBkYXRlUmFuZ2VBZmZpbml0eVN0cuMGEWNvZGVBcHBseUFmZmluaXR55AYXd2hlcmVJbmRleEV4cHJUcmFuc05vZGXlBhl3aGVyZUluZGV4RXhwclRyYW5zQ29sdW1u5gYhd2hlcmVBcHBseVBhcnRpYWxJbmRleENvbnN0cmFpbnRz5wYZc3FsaXRlM0V4cHJDb3ZlcmVkQnlJbmRleOgGDXdoZXJlSW5mb0ZyZWXpBgxjb2RlRGlzdGluY3TqBg5wdXNoT250b1NvcnRlcusGHHNxbGl0ZTNFeHByQW5hbHl6ZUFnZ3JlZ2F0ZXPsBhltdWx0aVNlbGVjdE9yZGVyQnlLZXlJbmZv7QYYZ2VuZXJhdGVPdXRwdXRTdWJyb3V0aW5l7gYLY29uc3RJbnNlcnTvBhBoZWlnaHRPZkV4cHJMaXN08AYZd2hlcmVQYXRoU2F0aXNmaWVzT3JkZXJCefEGFXNxbGl0ZTNXaGVyZUV4cHJVc2FnZfIGEWV4cGxhaW5BcHBlbmRUZXJt8wYXc3FsaXRlM1doZXJlQ2xhdXNlQ2xlYXL0BhdzcWxpdGUzV2hlcmVFeHByVXNhZ2VOTvUGD2V4cHJTZWxlY3RVc2FnZfYGEmV4cHJNaWdodEJlSW5kZXhlZPcGF3NxbGl0ZTNFeHByQ29sbFNlcU1hdGNo+AYVd2hlcmVDb21iaW5lRGlzanVuY3Rz+QYTZXhwck1pZ2h0QmVJbmRleGVkMvoGFnNxbGl0ZTNFeHByQ29tcGFyZVNraXD7Bg13aGVyZVNjYW5Jbml0/AYNd2hlcmVTY2FuTmV4dP0GFndoZXJlU2NhbkluaXRJbmRleEV4cHL+BhZzcWxpdGUzSW5kZXhBZmZpbml0eU9r/wYWd2hlcmVMb29wQWRkVmlydHVhbE9uZYAHD3doZXJlTG9vcEluc2VydIEHF3doZXJlVXNhYmxlUGFydGlhbEluZGV4ggcVd2hlcmVMb29wT3V0cHV0QWRqdXN0gwcWd2hlcmVMb29wQWRkQnRyZWVJbmRleIQHDXdoZXJlT3JJbnNlcnSFBxN3aGVyZUxvb3BDbGVhclVuaW9uhgccd2hlcmVMb29wQ2hlYXBlclByb3BlclN1YnNldIcHE3doZXJlTG9vcEZpbmRMZXNzZXKIBwxleHBySWR4Q292ZXKJBxN3aGVyZVJhbmdlVmVjdG9yTGVuigcgc3FsaXRlM0V4cHJOZWVkc05vQWZmaW5pdHlDaGFuZ2WLBwxwcmVzZXJ2ZUV4cHKMBxR3aW5kb3dSZWFkUGVlclZhbHVlc40HDXdpbmRvd0FnZ1N0ZXCOBwxub29wU3RlcEZ1bmOPBxBtYWtlU29ydGVyUmVjb3JkkAcbZXhwck5vZGVJc0NvbnN0YW50T3JHcm91cEJ5kQcSY2hlY2tDb2x1bW5PdmVybGFwkgcSZmtQYXJlbnRJc01vZGlmaWVkkwcNZ2V0Um93VHJpZ2dlcpQHG3NxbGl0ZTNDb2RlUm93VHJpZ2dlckRpcmVjdJUHDmZrTG9va3VwUGFyZW50lgcOZmtTY2FuQ2hpbGRyZW6XBxJjb2RlVHJpZ2dlclByb2dyYW2YBw10YXJnZXRTcmNMaXN0mQcRZXhwclRhYmxlUmVnaXN0ZXKaBxdjaGVja0NvbnN0cmFpbnRFeHByTm9kZZsHE2V4cHJDb2x1bW5GbGFnVW5pb26cBxVzcWxpdGUzVXBzZXJ0RG9VcGRhdGWdBwphdHRhY2hGdW5jngcKZGV0YWNoRnVuY58HDW9wZW5TdGF0VGFibGWgBw9hbmFseXplT25lVGFibGWhBwxsb2FkQW5hbHlzaXOiBwhzdGF0SW5pdKMHD3N0YXQ0RGVzdHJ1Y3RvcqQHCHN0YXRQdXNopQcHc3RhdEdldKYHC3ZlcnNpb25GdW5jpwcVY29tcGlsZW9wdGlvbnVzZWRGdW5jqAcUY29tcGlsZW9wdGlvbmdldEZ1bmOpBwh0cmltRnVuY6oHDWNvbnRleHRNYWxsb2OrBwptaW5tYXhGdW5jrAcKbWlubWF4U3RlcK0HDm1pbk1heEZpbmFsaXplrgcTbWluTWF4VmFsdWVGaW5hbGl6Za8HC21pbk1heFZhbHVlsAcKdHlwZW9mRnVuY7EHCmxlbmd0aEZ1bmOyBwlpbnN0ckZ1bmOzBwpwcmludGZGdW5jtAcLdW5pY29kZUZ1bmO1BwhjaGFyRnVuY7YHB2Fic0Z1bmO3Bwlyb3VuZEZ1bmO4Bwl1cHBlckZ1bmO5Bwlsb3dlckZ1bmO6BwdoZXhGdW5juwcKcmFuZG9tRnVuY7wHCnJhbmRvbUJsb2K9BwpudWxsaWZGdW5jvgcMc291cmNlaWRGdW5jvwcKZXJybG9nRnVuY8AHCXF1b3RlRnVuY8EHEWxhc3RfaW5zZXJ0X3Jvd2lkwgcHY2hhbmdlc8MHDXRvdGFsX2NoYW5nZXPEBwtyZXBsYWNlRnVuY8UHDHplcm9ibG9iRnVuY8YHCnN1YnN0ckZ1bmPHBwdzdW1TdGVwyAcLc3VtRmluYWxpemXJBwpzdW1JbnZlcnNlygcNdG90YWxGaW5hbGl6ZcsHC2F2Z0ZpbmFsaXplzAcJY291bnRTdGVwzQcNY291bnRGaW5hbGl6Zc4HDGNvdW50SW52ZXJzZc8HD2dyb3VwQ29uY2F0U3RlcNAHE2dyb3VwQ29uY2F0RmluYWxpemXRBxBncm91cENvbmNhdFZhbHVl0gcSZ3JvdXBDb25jYXRJbnZlcnNl0wcQcmVuYW1lQ29sdW1uRnVuY9QHDnJlbmFtZVBhcnNlU3Fs1QcUcmVuYW1lQ29sdW1uU2VsZWN0Q2LWBxJyZW5hbWVDb2x1bW5FeHByQ2LXBxRyZW5hbWVSZXNvbHZlVHJpZ2dlctgHFnJlbmFtZUNvbHVtbkVsaXN0TmFtZXPZBxdyZW5hbWVDb2x1bW5JZGxpc3ROYW1lc9oHEXJlbmFtZVdhbGtUcmlnZ2Vy2wcNcmVuYW1lRWRpdFNxbNwHFnJlbmFtZUNvbHVtblBhcnNlRXJyb3LdBxJyZW5hbWVQYXJzZUNsZWFudXDeBw9yZW5hbWVUYWJsZUZ1bmPfBxNyZW5hbWVUYWJsZVNlbGVjdENi4AcRcmVuYW1lVGFibGVFeHByQ2LhBw9yZW5hbWVUYWJsZVRlc3TiBxJyb3dfbnVtYmVyU3RlcEZ1bmPjBxNyb3dfbnVtYmVyVmFsdWVGdW5j5AcSZGVuc2VfcmFua1N0ZXBGdW5j5QcTZGVuc2VfcmFua1ZhbHVlRnVuY+YHDHJhbmtTdGVwRnVuY+cHDXJhbmtWYWx1ZUZ1bmPoBxRwZXJjZW50X3JhbmtTdGVwRnVuY+kHFXBlcmNlbnRfcmFua1ZhbHVlRnVuY+oHE3BlcmNlbnRfcmFua0ludkZ1bmPrBxFjdW1lX2Rpc3RTdGVwRnVuY+wHEmN1bWVfZGlzdFZhbHVlRnVuY+0HEGN1bWVfZGlzdEludkZ1bmPuBw1udGlsZVN0ZXBGdW5j7wcObnRpbGVWYWx1ZUZ1bmPwBwxudGlsZUludkZ1bmPxBxJsYXN0X3ZhbHVlU3RlcEZ1bmPyBxZsYXN0X3ZhbHVlRmluYWxpemVGdW5j8wcTbGFzdF92YWx1ZVZhbHVlRnVuY/QHEWxhc3RfdmFsdWVJbnZGdW5j9QcRbnRoX3ZhbHVlU3RlcEZ1bmP2BxVudGhfdmFsdWVGaW5hbGl6ZUZ1bmP3Bw1ub29wVmFsdWVGdW5j+AcTZmlyc3RfdmFsdWVTdGVwRnVuY/kHF2ZpcnN0X3ZhbHVlRmluYWxpemVGdW5j+gcNanVsaWFuZGF5RnVuY/sHBmlzRGF0ZfwHCWNvbXB1dGVKRP0HCGRhdGVGdW5j/gcKY29tcHV0ZVlNRP8HCHRpbWVGdW5jgAgKY29tcHV0ZUhNU4EIDGRhdGV0aW1lRnVuY4IIDHN0cmZ0aW1lRnVuY4MICWN0aW1lRnVuY4QIDmN0aW1lc3RhbXBGdW5jhQgJY2RhdGVGdW5jhggUc2V0RGF0ZVRpbWVUb0N1cnJlbnSHCAlnZXREaWdpdHOICAtwYXJzZUhoTW1Tc4kIEnNxbGl0ZTNOb3RQdXJlRnVuY4oID2xvY2FsdGltZU9mZnNldIsIEHNxbGl0ZTNNZW1NYWxsb2OMCA5zcWxpdGUzTWVtRnJlZY0IEXNxbGl0ZTNNZW1SZWFsbG9jjggOc3FsaXRlM01lbVNpemWPCBFzcWxpdGUzTWVtUm91bmR1cJAIDnNxbGl0ZTNNZW1Jbml0kQgSc3FsaXRlM01lbVNodXRkb3dukggLcGNhY2hlMUluaXSTCA9wY2FjaGUxU2h1dGRvd26UCA1wY2FjaGUxQ3JlYXRllQgRcGNhY2hlMVJlc2l6ZUhhc2iWCA5wY2FjaGUxRGVzdHJveZcIEHBjYWNoZTFDYWNoZXNpemWYCBVwY2FjaGUxRW5mb3JjZU1heFBhZ2WZCBBwY2FjaGUxUGFnZWNvdW50mggMcGNhY2hlMUZldGNomwgScGNhY2hlMUZldGNoU3RhZ2UynAgMcGNhY2hlMVVucGlunQgVcGNhY2hlMVJlbW92ZUZyb21IYXNonggMcGNhY2hlMVJla2V5nwgPcGNhY2hlMVRydW5jYXRloAgVcGNhY2hlMVRydW5jYXRlVW5zYWZloQgNcGNhY2hlMVNocmlua6IID3BjYWNoZTFGcmVlUGFnZaMICHBjZ19zZWVkpAgJcGNnX2J5dGVzpQgGbWFsbG9jpggIZGxtYWxsb2OnCARmcmVlqAgGZGxmcmVlqQgHcmVhbGxvY6oIDWRpc3Bvc2VfY2h1bmurCAVhYm9ydKwIBHNicmutCAlsb2NhbHRpbWWuCA1fX2xvY2FsdGltZV9yrwgMX19zZWNzX3RvX3RtsAgOX19zZWNzX3RvX3pvbmWxCAZtZW1jbXCyCAZtZW1jcHmzCAdtZW1tb3ZltAgGbWVtc2V0tQgGc3RyY21wtggLX19zdHJjaHJudWy3CAdzdHJjc3BuuAgGc3RybGVuuQgHc3RybmNtcLoICV9fbWVtcmNocrsIB3N0cnJjaHK8CAdfX2xldGYyvQgHX19nZXRmMr4IDV9fZXh0ZW5kZGZ0ZjK/CAlfX2ZpeHRmc2nACAtfX2Zsb2F0ZGl0ZsEIC19fZmxvYXRzaXRmwggMX190cnVuY3RmZGYywwgIX19hZGR0ZjPECAlfX2FzaGx0aTPFCAhfX2RpdnRmM8YIDV9fZmVfZ2V0cm91bmTHCBJfX2ZlX3JhaXNlX2luZXhhY3TICAlfX2xzaHJ0aTPJCAhfX211bHRpM8oICF9fbXVsdGYzywgIX19zdWJ0ZjMAhQEJcHJvZHVjZXJzAghsYW5ndWFnZQEDQzk5AAxwcm9jZXNzZWQtYnkBBWNsYW5nVjEwLjAuMCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0IGQzMjE3MGRiZDViMGQ1NDQzNjUzN2I2Yjc1YmVhZjQ0MzI0ZTBjMjgp"; + +function decode(base64) { + const bytesStr = atob(base64); + const bytes = new Uint8Array(bytesStr.length); + for (let i = 0, c = bytesStr.length; i < c; i++) { + bytes[i] = bytesStr.charCodeAt(i); + } + return bytes; +} + +const module = new WebAssembly.Module(decode(wasm)); + +// Create wasm instance and seed random number generator +export default function instantiate() { + const placeholder = { exports: null }; + const instance = new WebAssembly.Instance(module, env(placeholder)); + placeholder.exports = instance.exports; + instance.exports.seed_rng(Date.now()); + return instance; +} diff --git a/bundler/tests/.cache/deno/70d068476667405abfef2e4c5d56a3452441cea7.ts b/bundler/tests/.cache/deno/70d068476667405abfef2e4c5d56a3452441cea7.ts new file mode 100644 index 00000000000..0686d7ed6ac --- /dev/null +++ b/bundler/tests/.cache/deno/70d068476667405abfef2e4c5d56a3452441cea7.ts @@ -0,0 +1,146 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/negotiation/language.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface LanaguageSpecificity extends Specificity { + prefix: string; + suffix?: string; + full: string; +} + +const SIMPLE_LANGUAGE_REGEXP = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + +function parseLanguage( + str: string, + i: number, +): LanaguageSpecificity | undefined { + const match = SIMPLE_LANGUAGE_REGEXP.exec(str); + if (!match) { + return undefined; + } + + const [, prefix, suffix] = match; + const full = suffix ? `${prefix}-${suffix}` : prefix; + + let q = 1; + if (match[3]) { + const params = match[3].split(";"); + for (const param of params) { + const [key, value] = param.trim().split("="); + if (key === "q") { + q = parseFloat(value); + break; + } + } + } + + return { prefix, suffix, full, q, i }; +} + +function parseAcceptLanguage(accept: string): LanaguageSpecificity[] { + const accepts = accept.split(","); + const result: LanaguageSpecificity[] = []; + + for (let i = 0; i < accepts.length; i++) { + const language = parseLanguage(accepts[i].trim(), i); + if (language) { + result.push(language); + } + } + return result; +} + +function specify( + language: string, + spec: LanaguageSpecificity, + i: number, +): Specificity | undefined { + const p = parseLanguage(language, i); + if (!p) { + return undefined; + } + let s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.prefix.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return; + } + + return { i, o: spec.i, q: spec.q, s }; +} + +function getLanguagePriority( + language: string, + accepted: LanaguageSpecificity[], + index: number, +): Specificity { + let priority: Specificity = { i: -1, o: -1, q: 0, s: 0 }; + for (const accepts of accepted) { + const spec = specify(language, accepts, index); + if ( + spec && + ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q || + (priority.o ?? 0) - (spec.o ?? 0)) < 0 + ) { + priority = spec; + } + } + return priority; +} + +export function preferredLanguages( + accept = "*", + provided?: string[], +): string[] { + const accepts = parseAcceptLanguage(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.full); + } + + const priorities = provided + .map((type, index) => getLanguagePriority(type, accepts, index)); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/70dc824078330decf57f1772c3bebc5614bc9492.ts b/bundler/tests/.cache/deno/70dc824078330decf57f1772c3bebc5614bc9492.ts new file mode 100644 index 00000000000..04b07707e1d --- /dev/null +++ b/bundler/tests/.cache/deno/70dc824078330decf57f1772c3bebc5614bc9492.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isFunction.js + + +export default function _isFunction(x) { + var type = Object.prototype.toString.call(x); + return type === '[object Function]' || + type === '[object AsyncFunction]' || + type === '[object GeneratorFunction]' || + type === '[object AsyncGeneratorFunction]'; +} diff --git a/bundler/tests/.cache/deno/713ca9591daaf5e3d7601641fb62d1af4277a397.ts b/bundler/tests/.cache/deno/713ca9591daaf5e3d7601641fb62d1af4277a397.ts new file mode 100644 index 00000000000..2a13b43a1b3 --- /dev/null +++ b/bundler/tests/.cache/deno/713ca9591daaf5e3d7601641fb62d1af4277a397.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std/fmt/colors.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors +// on npm. +// +// ``` +// import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; +// console.log(bgBlue(red(bold("Hello world!")))); +// ``` +// +// This module supports `NO_COLOR` environmental variable disabling any coloring +// if `NO_COLOR` is set. +// +// This module is browser compatible. + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgb24("foo", 0xff00ff); + * rgb24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgb24("foo", 0xff00ff); + * bgRgb24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/71b26ce51ccf6d7932c718b438599193efc61a72.ts b/bundler/tests/.cache/deno/71b26ce51ccf6d7932c718b438599193efc61a72.ts new file mode 100644 index 00000000000..6c0e042869f --- /dev/null +++ b/bundler/tests/.cache/deno/71b26ce51ccf6d7932c718b438599193efc61a72.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case/dotCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function dotCase(value: string, locale?: string): string { + return normalCase(value, locale, "."); +} diff --git a/bundler/tests/.cache/deno/71c0c5a98ac147751dcd48b59f9419e994a1fb46.ts b/bundler/tests/.cache/deno/71c0c5a98ac147751dcd48b59f9419e994a1fb46.ts new file mode 100644 index 00000000000..0e78ebbb1de --- /dev/null +++ b/bundler/tests/.cache/deno/71c0c5a98ac147751dcd48b59f9419e994a1fb46.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/set.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data: Any): boolean { + if (data === null) return true; + + for (const key in data) { + if (_hasOwnProperty.call(data, key)) { + if (data[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data: string): Any { + return data !== null ? data : {}; +} + +export const set = new Type("tag:yaml.org,2002:set", { + construct: constructYamlSet, + kind: "mapping", + resolve: resolveYamlSet, +}); diff --git a/bundler/tests/.cache/deno/722a85bbc34ef77f799cb2b49aba8aa0cfa5e017.ts b/bundler/tests/.cache/deno/722a85bbc34ef77f799cb2b49aba8aa0cfa5e017.ts new file mode 100644 index 00000000000..c1d31b75755 --- /dev/null +++ b/bundler/tests/.cache/deno/722a85bbc34ef77f799cb2b49aba8aa0cfa5e017.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueDirectiveNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique directive names + * + * A GraphQL document is only valid if all defined directives have unique names. + */ +export function UniqueDirectiveNamesRule(context) { + const knownDirectiveNames = Object.create(null); + const schema = context.getSchema(); + return { + DirectiveDefinition(node) { + const directiveName = node.name.value; + + if (schema?.getDirective(directiveName)) { + context.reportError(new GraphQLError(`Directive "@${directiveName}" already exists in the schema. It cannot be redefined.`, node.name)); + return; + } + + if (knownDirectiveNames[directiveName]) { + context.reportError(new GraphQLError(`There can be only one directive named "@${directiveName}".`, [knownDirectiveNames[directiveName], node.name])); + } else { + knownDirectiveNames[directiveName] = node.name; + } + + return false; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/729b826f0ec6cd05ae4c56a66ff267f68d230551.ts b/bundler/tests/.cache/deno/729b826f0ec6cd05ae4c56a66ff267f68d230551.ts new file mode 100644 index 00000000000..8f81647f584 --- /dev/null +++ b/bundler/tests/.cache/deno/729b826f0ec6cd05ae4c56a66ff267f68d230551.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unionWith.js + + +import _concat from './internal/_concat.js'; +import _curry3 from './internal/_curry3.js'; +import uniqWith from './uniqWith.js'; + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. Duplication is determined according to the value returned by + * applying the supplied predicate to two list elements. If an element exists + * in both lists, the first element from the first list will be used. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @see R.union + * @example + * + * const l1 = [{a: 1}, {a: 2}]; + * const l2 = [{a: 1}, {a: 4}]; + * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] + */ +var unionWith = _curry3(function unionWith(pred, list1, list2) { + return uniqWith(pred, _concat(list1, list2)); +}); +export default unionWith; diff --git a/bundler/tests/.cache/deno/733f3e76d4872e8e4339cef254b2391db6e451da.ts b/bundler/tests/.cache/deno/733f3e76d4872e8e4339cef254b2391db6e451da.ts new file mode 100644 index 00000000000..b1ecce00d28 --- /dev/null +++ b/bundler/tests/.cache/deno/733f3e76d4872e8e4339cef254b2391db6e451da.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/std@0.85.0/fs/ensure_link.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export async function ensureLink(src: string, dest: string): Promise { + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + await Deno.link(src, dest); +} + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export function ensureLinkSync(src: string, dest: string): void { + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + + Deno.linkSync(src, dest); +} diff --git a/bundler/tests/.cache/deno/737f22e1d52d7111bad0fbca4ac98156c56812ce.ts b/bundler/tests/.cache/deno/737f22e1d52d7111bad0fbca4ac98156c56812ce.ts new file mode 100644 index 00000000000..c76fba31058 --- /dev/null +++ b/bundler/tests/.cache/deno/737f22e1d52d7111bad0fbca4ac98156c56812ce.ts @@ -0,0 +1,345 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/inftrees.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +import * as utils from "../utils/common.js"; + + +var MAXBITS = 15; +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + +var CODES = 0; +var LENS = 1; +var DISTS = 2; + +var lbase = [ /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +]; + +var lext = [ /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 +]; + +var dbase = [ /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0 +]; + +var dext = [ /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64 +]; + +export function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) +{ + var bits = opts.bits; + //here = opts.here; /* table entry for duplication */ + + var len = 0; /* a code's length in bits */ + var sym = 0; /* index of code symbols */ + var min = 0, max = 0; /* minimum and maximum code lengths */ + var root = 0; /* number of index bits for root table */ + var curr = 0; /* number of index bits for current table */ + var drop = 0; /* code bits to drop for sub-table */ + var left = 0; /* number of prefix codes available */ + var used = 0; /* code entries in table used */ + var huff = 0; /* Huffman code */ + var incr; /* for incrementing code, index */ + var fill; /* index for replicating entries */ + var low; /* low bits for current root entry */ + var mask; /* mask for low root bits */ + var next; /* next available space in table */ + var base = null; /* base value table to use */ + var base_index = 0; +// var shoextra; /* extra bits table to use */ + var end; /* use base and extra for symbol > end */ + var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ + var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ + var extra = null; + var extra_index = 0; + + var here_bits, here_op, here_val; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; + } + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; + } + + /* bound code lengths, force root to be within code lengths */ + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { break; } + } + if (root > max) { + root = max; + } + if (max === 0) { /* no symbols to code at all */ + //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ + //table.bits[opts.table_index] = 1; //here.bits = (var char)1; + //table.val[opts.table_index++] = 0; //here.val = (var short)0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + + //table.op[opts.table_index] = 64; + //table.bits[opts.table_index] = 1; + //table.val[opts.table_index++] = 0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + opts.bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { break; } + } + if (root < min) { + root = min; + } + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } /* over-subscribed */ + } + if (left > 0 && (type === CODES || max !== 1)) { + return -1; /* incomplete set */ + } + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } + } + + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + // poor man optimization - use if-else instead of switch, + // to avoid deopts in old v8 + if (type === CODES) { + base = extra = work; /* dummy value--not used */ + end = 19; + + } else if (type === LENS) { + base = lbase; + base_index -= 257; + extra = lext; + extra_index -= 257; + end = 256; + + } else { /* DISTS */ + base = dbase; + extra = dext; + end = -1; + } + + /* initialize opts for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = table_index; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = -1; /* trigger new sub-table when len > root */ + used = 1 << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here_bits = len - drop; + if (work[sym] < end) { + here_op = 0; + here_val = work[sym]; + } + else if (work[sym] > end) { + here_op = extra[extra_index + work[sym]]; + here_val = base[base_index + work[sym]]; + } + else { + here_op = 32 + 64; /* end of block */ + here_val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1 << (len - drop); + fill = 1 << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; + } while (fill !== 0); + + /* backwards increment the len-bit code huff */ + incr = 1 << (len - 1); + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; + } else { + huff = 0; + } + + /* go to next symbol, update count, len */ + sym++; + if (--count[len] === 0) { + if (len === max) { break; } + len = lens[lens_index + work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) !== low) { + /* if first time, transition to sub-tables */ + if (drop === 0) { + drop = root; + } + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { break; } + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1 << curr; + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } + + /* point entry in root table to sub-table */ + low = huff & mask; + /*table.op[low] = curr; + table.bits[low] = root; + table.val[low] = next - opts.table_index;*/ + table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; + } + } + + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff !== 0) { + //table.op[next + huff] = 64; /* invalid code marker */ + //table.bits[next + huff] = len - drop; + //table.val[next + huff] = 0; + table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; + } + + /* set return parameters */ + //opts.table_index += used; + opts.bits = root; + return 0; +}; diff --git a/bundler/tests/.cache/deno/73be4b5db4507e76dc9aaaf2e1be8e164dd9f1fa.ts b/bundler/tests/.cache/deno/73be4b5db4507e76dc9aaaf2e1be8e164dd9f1fa.ts new file mode 100644 index 00000000000..bb0cfe172c1 --- /dev/null +++ b/bundler/tests/.cache/deno/73be4b5db4507e76dc9aaaf2e1be8e164dd9f1fa.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.81.0/async/delay.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/74384cbde4990f56a0f176c22b7d99a74916f268.ts b/bundler/tests/.cache/deno/74384cbde4990f56a0f176c22b7d99a74916f268.ts new file mode 100644 index 00000000000..1f41df24660 --- /dev/null +++ b/bundler/tests/.cache/deno/74384cbde4990f56a0f176c22b7d99a74916f268.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/std@0.85.0/fs/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./empty_dir.ts"; +export * from "./ensure_dir.ts"; +export * from "./ensure_file.ts"; +export * from "./ensure_link.ts"; +export * from "./ensure_symlink.ts"; +export * from "./exists.ts"; +export * from "./expand_glob.ts"; +export * from "./move.ts"; +export * from "./copy.ts"; +export * from "./walk.ts"; +export * from "./eol.ts"; diff --git a/bundler/tests/.cache/deno/7468f3a48f08c5bc56fd2bcb64729ad757e0a851.ts b/bundler/tests/.cache/deno/7468f3a48f08c5bc56fd2bcb64729ad757e0a851.ts new file mode 100644 index 00000000000..1a9356ec5d1 --- /dev/null +++ b/bundler/tests/.cache/deno/7468f3a48f08c5bc56fd2bcb64729ad757e0a851.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/internalTypes.ts + + +export enum ColorType { + UNKNOWN = -1, + GREYSCALE = 0, + TRUECOLOUR = 2, + INDEXED_COLOUR = 3, + GREYSCALE_ALPHA = 4, + TRUECOLOUR_ALPHA = 6, +} + +export enum CompressionMethod { + UNKNOWN = -1, + DEFLATE = 0, +} + +export enum FilterMethod { + UNKNOWN = -1, + ADAPTIVE = 0, +} + +export enum InterlaceMethod { + UNKNOWN = -1, + NO_INTERLACE = 0, + ADAM7 = 1, +} diff --git a/bundler/tests/.cache/deno/74f6b480cf4df8ea36359b558b9f2662106dd2c2.ts b/bundler/tests/.cache/deno/74f6b480cf4df8ea36359b558b9f2662106dd2c2.ts new file mode 100644 index 00000000000..8f35415e064 --- /dev/null +++ b/bundler/tests/.cache/deno/74f6b480cf4df8ea36359b558b9f2662106dd2c2.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/call.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Returns the result of calling its first argument with the remaining + * arguments. This is occasionally useful as a converging function for + * [`R.converge`](#converge): the first branch can produce a function while the + * remaining branches produce values to be passed to that function as its + * arguments. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig ((*... -> a), *...) -> a + * @param {Function} fn The function to apply to the remaining arguments. + * @param {...*} args Any number of positional arguments. + * @return {*} + * @see R.apply + * @example + * + * R.call(R.add, 1, 2); //=> 3 + * + * const indentN = R.pipe( + * R.repeat(' '), + * R.join(''), + * R.replace(/^(?!$)/gm) + * ); + * + * const format = R.converge( + * R.call, + * [ + * R.pipe(R.prop('indent'), indentN), + * R.prop('value') + * ] + * ); + * + * format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' + * @symb R.call(f, a, b) = f(a, b) + */ +var call = _curry1(function call(fn) { + return fn.apply(this, Array.prototype.slice.call(arguments, 1)); +}); +export default call; diff --git a/bundler/tests/.cache/deno/74faf29ce09bfcf0067ed2b3452b8e1daaadd73a.ts b/bundler/tests/.cache/deno/74faf29ce09bfcf0067ed2b3452b8e1daaadd73a.ts new file mode 100644 index 00000000000..119cf7d58d4 --- /dev/null +++ b/bundler/tests/.cache/deno/74faf29ce09bfcf0067ed2b3452b8e1daaadd73a.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/useWith.js + + +import _curry2 from './internal/_curry2.js'; +import curryN from './curryN.js'; + + +/** + * Accepts a function `fn` and a list of transformer functions and returns a + * new curried function. When the new function is invoked, it calls the + * function `fn` with parameters consisting of the result of calling each + * supplied handler on successive arguments to the new function. + * + * If more arguments are passed to the returned function than transformer + * functions, those arguments are passed directly to `fn` as additional + * parameters. If you expect additional arguments that don't need to be + * transformed, although you can ignore them, it's best to pass an identity + * function so that the new function reports the correct arity. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} fn The function to wrap. + * @param {Array} transformers A list of transformer functions + * @return {Function} The wrapped function. + * @see R.converge + * @example + * + * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 + * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 + * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 + * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 + * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) + */ +var useWith = _curry2(function useWith(fn, transformers) { + return curryN(transformers.length, function() { + var args = []; + var idx = 0; + while (idx < transformers.length) { + args.push(transformers[idx].call(this, arguments[idx])); + idx += 1; + } + return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); + }); +}); +export default useWith; diff --git a/bundler/tests/.cache/deno/7521aa48dd614c8b2f9da7fd26d2b8616104cb6e.ts b/bundler/tests/.cache/deno/7521aa48dd614c8b2f9da7fd26d2b8616104cb6e.ts new file mode 100644 index 00000000000..8f5f4e4c0e9 --- /dev/null +++ b/bundler/tests/.cache/deno/7521aa48dd614c8b2f9da7fd26d2b8616104cb6e.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/innerJoin.js + + +import _includesWith from './internal/_includesWith.js'; +import _curry3 from './internal/_curry3.js'; +import _filter from './internal/_filter.js'; + + +/** + * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list + * `xs'` comprising each of the elements of `xs` which is equal to one or more + * elements of `ys` according to `pred`. + * + * `pred` must be a binary function expecting an element from each list. + * + * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should + * not be significant, but since `xs'` is ordered the implementation guarantees + * that its values are in the same order as they appear in `xs`. Duplicates are + * not removed, so `xs'` may contain duplicates if `xs` contains duplicates. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Relation + * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a] + * @param {Function} pred + * @param {Array} xs + * @param {Array} ys + * @return {Array} + * @see R.intersection + * @example + * + * R.innerJoin( + * (record, id) => record.id === id, + * [{id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'}], + * [177, 456, 999] + * ); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ +var innerJoin = _curry3(function innerJoin(pred, xs, ys) { + return _filter(function(x) { return _includesWith(pred, x, ys); }, xs); +}); +export default innerJoin; diff --git a/bundler/tests/.cache/deno/7574c470a446f9cfe5ba758b023b5629ee728f4f.ts b/bundler/tests/.cache/deno/7574c470a446f9cfe5ba758b023b5629ee728f4f.ts new file mode 100644 index 00000000000..81d3d24b675 --- /dev/null +++ b/bundler/tests/.cache/deno/7574c470a446f9cfe5ba758b023b5629ee728f4f.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeAll.js + + +import _objectAssign from './internal/_objectAssign.js'; +import _curry1 from './internal/_curry1.js'; + + +/** + * Creates one new object with the own properties from a list of objects. + * If a key exists in more than one object, the value from the last + * object it exists in will be used. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig [{k: v}] -> {k: v} + * @param {Array} list An array of objects + * @return {Object} A merged object. + * @see R.reduce + * @example + * + * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3} + * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} + * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 } + */ +var mergeAll = _curry1(function mergeAll(list) { + return _objectAssign.apply(null, [{}].concat(list)); +}); +export default mergeAll; diff --git a/bundler/tests/.cache/deno/75b05c480cd1107916ab3e9ff5718801bde920f2.ts b/bundler/tests/.cache/deno/75b05c480cd1107916ab3e9ff5718801bde920f2.ts new file mode 100644 index 00000000000..c937c770296 --- /dev/null +++ b/bundler/tests/.cache/deno/75b05c480cd1107916ab3e9ff5718801bde920f2.ts @@ -0,0 +1,105 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/typeComparators.js + + +import { isInterfaceType, isObjectType, isListType, isNonNullType, isAbstractType } from '../type/definition.js'; +/** + * Provided two types, return true if the types are equal (invariant). + */ + +export function isEqualType(typeA, typeB) { + // Equivalent types are equal. + if (typeA === typeB) { + return true; + } // If either type is non-null, the other must also be non-null. + + + if (isNonNullType(typeA) && isNonNullType(typeB)) { + return isEqualType(typeA.ofType, typeB.ofType); + } // If either type is a list, the other must also be a list. + + + if (isListType(typeA) && isListType(typeB)) { + return isEqualType(typeA.ofType, typeB.ofType); + } // Otherwise the types are not equal. + + + return false; +} +/** + * Provided a type and a super type, return true if the first type is either + * equal or a subset of the second super type (covariant). + */ + +export function isTypeSubTypeOf(schema, maybeSubType, superType) { + // Equivalent type is a valid subtype + if (maybeSubType === superType) { + return true; + } // If superType is non-null, maybeSubType must also be non-null. + + + if (isNonNullType(superType)) { + if (isNonNullType(maybeSubType)) { + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); + } + + return false; + } + + if (isNonNullType(maybeSubType)) { + // If superType is nullable, maybeSubType may be non-null or nullable. + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType); + } // If superType type is a list, maybeSubType type must also be a list. + + + if (isListType(superType)) { + if (isListType(maybeSubType)) { + return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType); + } + + return false; + } + + if (isListType(maybeSubType)) { + // If superType is not a list, maybeSubType must also be not a list. + return false; + } // If superType type is an abstract type, check if it is super type of maybeSubType. + // Otherwise, the child type is not a valid subtype of the parent type. + + + return isAbstractType(superType) && (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) && schema.isSubType(superType, maybeSubType); +} +/** + * Provided two composite types, determine if they "overlap". Two composite + * types overlap when the Sets of possible concrete types for each intersect. + * + * This is often used to determine if a fragment of a given type could possibly + * be visited in a context of another type. + * + * This function is commutative. + */ + +export function doTypesOverlap(schema, typeA, typeB) { + // Equivalent types overlap + if (typeA === typeB) { + return true; + } + + if (isAbstractType(typeA)) { + if (isAbstractType(typeB)) { + // If both types are abstract, then determine if there is any intersection + // between possible concrete types of each. + return schema.getPossibleTypes(typeA).some(type => schema.isSubType(typeB, type)); + } // Determine if the latter type is a possible concrete type of the former. + + + return schema.isSubType(typeA, typeB); + } + + if (isAbstractType(typeB)) { + // Determine if the former type is a possible concrete type of the latter. + return schema.isSubType(typeB, typeA); + } // Otherwise the types do not overlap. + + + return false; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/75b16eb10ab7d0867c7c835539785553a1630257.ts b/bundler/tests/.cache/deno/75b16eb10ab7d0867c7c835539785553a1630257.ts new file mode 100644 index 00000000000..9729fc5cb43 --- /dev/null +++ b/bundler/tests/.cache/deno/75b16eb10ab7d0867c7c835539785553a1630257.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/endsWith.js + + +import _curry2 from './internal/_curry2.js'; +import equals from './equals.js'; +import takeLast from './takeLast.js'; + +/** + * Checks if a list ends with the provided sublist. + * + * Similarly, checks if a string ends with the provided substring. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> [a] -> Boolean + * @sig String -> String -> Boolean + * @param {*} suffix + * @param {*} list + * @return {Boolean} + * @see R.startsWith + * @example + * + * R.endsWith('c', 'abc') //=> true + * R.endsWith('b', 'abc') //=> false + * R.endsWith(['c'], ['a', 'b', 'c']) //=> true + * R.endsWith(['b'], ['a', 'b', 'c']) //=> false + */ +var endsWith = _curry2(function(suffix, list) { + return equals(takeLast(suffix.length, list), suffix); +}); +export default endsWith; diff --git a/bundler/tests/.cache/deno/763252be4c80285bb0c76e3a61edbfb60b554be9.ts b/bundler/tests/.cache/deno/763252be4c80285bb0c76e3a61edbfb60b554be9.ts new file mode 100644 index 00000000000..b3d35f1d7f6 --- /dev/null +++ b/bundler/tests/.cache/deno/763252be4c80285bb0c76e3a61edbfb60b554be9.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xreduceBy.js + + +import _curryN from './_curryN.js'; +import _has from './_has.js'; +import _xfBase from './_xfBase.js'; + + +function XReduceBy(valueFn, valueAcc, keyFn, xf) { + this.valueFn = valueFn; + this.valueAcc = valueAcc; + this.keyFn = keyFn; + this.xf = xf; + this.inputs = {}; +} +XReduceBy.prototype['@@transducer/init'] = _xfBase.init; +XReduceBy.prototype['@@transducer/result'] = function(result) { + var key; + for (key in this.inputs) { + if (_has(key, this.inputs)) { + result = this.xf['@@transducer/step'](result, this.inputs[key]); + if (result['@@transducer/reduced']) { + result = result['@@transducer/value']; + break; + } + } + } + this.inputs = null; + return this.xf['@@transducer/result'](result); +}; +XReduceBy.prototype['@@transducer/step'] = function(result, input) { + var key = this.keyFn(input); + this.inputs[key] = this.inputs[key] || [key, this.valueAcc]; + this.inputs[key][1] = this.valueFn(this.inputs[key][1], input); + return result; +}; + +var _xreduceBy = _curryN(4, [], + function _xreduceBy(valueFn, valueAcc, keyFn, xf) { + return new XReduceBy(valueFn, valueAcc, keyFn, xf); + } +); +export default _xreduceBy; diff --git a/bundler/tests/.cache/deno/765d97d6ba2112ca9e8548a27f777e6cd05ec8ac.ts b/bundler/tests/.cache/deno/765d97d6ba2112ca9e8548a27f777e6cd05ec8ac.ts new file mode 100644 index 00000000000..98434bfd183 --- /dev/null +++ b/bundler/tests/.cache/deno/765d97d6ba2112ca9e8548a27f777e6cd05ec8ac.ts @@ -0,0 +1,384 @@ +// Loaded from https://deno.land/std@0.73.0/http/server.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { encode } from "../encoding/utf8.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { assert } from "../_util/assert.ts"; +import { Deferred, deferred, MuxAsyncIterator } from "../async/mod.ts"; +import { + bodyReader, + chunkedBodyReader, + emptyReader, + readRequest, + writeResponse, +} from "./_io.ts"; + +export class ServerRequest { + url!: string; + method!: string; + proto!: string; + protoMinor!: number; + protoMajor!: number; + headers!: Headers; + conn!: Deno.Conn; + r!: BufReader; + w!: BufWriter; + done: Deferred = deferred(); + + private _contentLength: number | undefined | null = undefined; + /** + * Value of Content-Length header. + * If null, then content length is invalid or not given (e.g. chunked encoding). + */ + get contentLength(): number | null { + // undefined means not cached. + // null means invalid or not provided. + if (this._contentLength === undefined) { + const cl = this.headers.get("content-length"); + if (cl) { + this._contentLength = parseInt(cl); + // Convert NaN to null (as NaN harder to test) + if (Number.isNaN(this._contentLength)) { + this._contentLength = null; + } + } else { + this._contentLength = null; + } + } + return this._contentLength; + } + + private _body: Deno.Reader | null = null; + + /** + * Body of the request. The easiest way to consume the body is: + * + * const buf: Uint8Array = await Deno.readAll(req.body); + */ + get body(): Deno.Reader { + if (!this._body) { + if (this.contentLength != null) { + this._body = bodyReader(this.contentLength, this.r); + } else { + const transferEncoding = this.headers.get("transfer-encoding"); + if (transferEncoding != null) { + const parts = transferEncoding + .split(",") + .map((e): string => e.trim().toLowerCase()); + assert( + parts.includes("chunked"), + 'transfer-encoding must include "chunked" if content-length is not set', + ); + this._body = chunkedBodyReader(this.headers, this.r); + } else { + // Neither content-length nor transfer-encoding: chunked + this._body = emptyReader(); + } + } + } + return this._body; + } + + async respond(r: Response): Promise { + let err: Error | undefined; + try { + // Write our response! + await writeResponse(this.w, r); + } catch (e) { + try { + // Eagerly close on error. + this.conn.close(); + } catch { + // Pass + } + err = e; + } + // Signal that this request has been processed and the next pipelined + // request on the same connection can be accepted. + this.done.resolve(err); + if (err) { + // Error during responding, rethrow. + throw err; + } + } + + private finalized = false; + async finalize(): Promise { + if (this.finalized) return; + // Consume unread body + const body = this.body; + const buf = new Uint8Array(1024); + while ((await body.read(buf)) !== null) { + // Pass + } + this.finalized = true; + } +} + +export class Server implements AsyncIterable { + private closing = false; + private connections: Deno.Conn[] = []; + + constructor(public listener: Deno.Listener) {} + + close(): void { + this.closing = true; + this.listener.close(); + for (const conn of this.connections) { + try { + conn.close(); + } catch (e) { + // Connection might have been already closed + if (!(e instanceof Deno.errors.BadResource)) { + throw e; + } + } + } + } + + // Yields all HTTP requests on a single TCP connection. + private async *iterateHttpRequests( + conn: Deno.Conn, + ): AsyncIterableIterator { + const reader = new BufReader(conn); + const writer = new BufWriter(conn); + + while (!this.closing) { + let request: ServerRequest | null; + try { + request = await readRequest(conn, reader); + } catch (error) { + if ( + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + // An error was thrown while parsing request headers. + await writeResponse(writer, { + status: 400, + body: encode(`${error.message}\r\n\r\n`), + }); + } + break; + } + if (request === null) { + break; + } + + request.w = writer; + yield request; + + // Wait for the request to be processed before we accept a new request on + // this connection. + const responseError = await request.done; + if (responseError) { + // Something bad happened during response. + // (likely other side closed during pipelined req) + // req.done implies this connection already closed, so we can just return. + this.untrackConnection(request.conn); + return; + } + // Consume unread body and trailers if receiver didn't consume those data + await request.finalize(); + } + + this.untrackConnection(conn); + try { + conn.close(); + } catch (e) { + // might have been already closed + } + } + + private trackConnection(conn: Deno.Conn): void { + this.connections.push(conn); + } + + private untrackConnection(conn: Deno.Conn): void { + const index = this.connections.indexOf(conn); + if (index !== -1) { + this.connections.splice(index, 1); + } + } + + // Accepts a new TCP connection and yields all HTTP requests that arrive on + // it. When a connection is accepted, it also creates a new iterator of the + // same kind and adds it to the request multiplexer so that another TCP + // connection can be accepted. + private async *acceptConnAndIterateHttpRequests( + mux: MuxAsyncIterator, + ): AsyncIterableIterator { + if (this.closing) return; + // Wait for a new connection. + let conn: Deno.Conn; + try { + conn = await this.listener.accept(); + } catch (error) { + if ( + error instanceof Deno.errors.BadResource || + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + return mux.add(this.acceptConnAndIterateHttpRequests(mux)); + } + throw error; + } + this.trackConnection(conn); + // Try to accept another connection and add it to the multiplexer. + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + // Yield the requests that arrive on the just-accepted connection. + yield* this.iterateHttpRequests(conn); + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + const mux: MuxAsyncIterator = new MuxAsyncIterator(); + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + return mux.iterate(); + } +} + +/** Options for creating an HTTP server. */ +export type HTTPOptions = Omit; + +/** + * Parse addr from string + * + * const addr = "::1:8000"; + * parseAddrFromString(addr); + * + * @param addr Address string + */ +export function _parseAddrFromStr(addr: string): HTTPOptions { + let url: URL; + try { + const host = addr.startsWith(":") ? `0.0.0.0${addr}` : addr; + url = new URL(`http://${host}`); + } catch { + throw new TypeError("Invalid address."); + } + if ( + url.username || + url.password || + url.pathname != "/" || + url.search || + url.hash + ) { + throw new TypeError("Invalid address."); + } + + return { + hostname: url.hostname, + port: url.port === "" ? 80 : Number(url.port), + }; +} + +/** + * Create a HTTP server + * + * import { serve } from "https://deno.land/std/http/server.ts"; + * const body = "Hello World\n"; + * const server = serve({ port: 8000 }); + * for await (const req of server) { + * req.respond({ body }); + * } + */ +export function serve(addr: string | HTTPOptions): Server { + if (typeof addr === "string") { + addr = _parseAddrFromStr(addr); + } + + const listener = Deno.listen(addr); + return new Server(listener); +} + +/** + * Start an HTTP server with given options and request handler + * + * const body = "Hello World\n"; + * const options = { port: 8000 }; + * listenAndServe(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServe( + addr: string | HTTPOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serve(addr); + + for await (const request of server) { + handler(request); + } +} + +/** Options for creating an HTTPS server. */ +export type HTTPSOptions = Omit; + +/** + * Create an HTTPS server with given options + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * for await (const req of serveTLS(options)) { + * req.respond({ body }); + * } + * + * @param options Server configuration + * @return Async iterable server instance for incoming requests + */ +export function serveTLS(options: HTTPSOptions): Server { + const tlsOptions: Deno.ListenTlsOptions = { + ...options, + transport: "tcp", + }; + const listener = Deno.listenTls(tlsOptions); + return new Server(listener); +} + +/** + * Start an HTTPS server with given options and request handler + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * listenAndServeTLS(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServeTLS( + options: HTTPSOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serveTLS(options); + + for await (const request of server) { + handler(request); + } +} + +/** + * Interface of HTTP server response. + * If body is a Reader, response would be chunked. + * If body is a string, it would be UTF-8 encoded by default. + */ +export interface Response { + status?: number; + headers?: Headers; + body?: Uint8Array | Deno.Reader | string; + trailers?: () => Promise | Headers; +} diff --git a/bundler/tests/.cache/deno/76654db7bbc0e432ccc438345e4a583e0b486339.ts b/bundler/tests/.cache/deno/76654db7bbc0e432ccc438345e4a583e0b486339.ts new file mode 100644 index 00000000000..9cf614cfdc7 --- /dev/null +++ b/bundler/tests/.cache/deno/76654db7bbc0e432ccc438345e4a583e0b486339.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/std@0.77.0/fs/ensure_dir.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureDir(dir: string): Promise { + try { + const fileInfo = await Deno.lstat(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + await Deno.mkdir(dir, { recursive: true }); + return; + } + throw err; + } +} + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureDirSync(dir: string): void { + try { + const fileInfo = Deno.lstatSync(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + Deno.mkdirSync(dir, { recursive: true }); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/76665b5478dfc5fbe9603d9f25fbd39acb692d73.ts b/bundler/tests/.cache/deno/76665b5478dfc5fbe9603d9f25fbd39acb692d73.ts new file mode 100644 index 00000000000..d6b02015944 --- /dev/null +++ b/bundler/tests/.cache/deno/76665b5478dfc5fbe9603d9f25fbd39acb692d73.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isArguments.js + + +import _has from './_has.js'; + + +var toString = Object.prototype.toString; +var _isArguments = (function() { + return toString.call(arguments) === '[object Arguments]' ? + function _isArguments(x) { return toString.call(x) === '[object Arguments]'; } : + function _isArguments(x) { return _has('callee', x); }; +}()); + +export default _isArguments; diff --git a/bundler/tests/.cache/deno/7687fa09d4cabf1b18f3c66634e539c83f0b24ae.ts b/bundler/tests/.cache/deno/7687fa09d4cabf1b18f3c66634e539c83f0b24ae.ts new file mode 100644 index 00000000000..5e40065ffc5 --- /dev/null +++ b/bundler/tests/.cache/deno/7687fa09d4cabf1b18f3c66634e539c83f0b24ae.ts @@ -0,0 +1,457 @@ +// Loaded from https://deno.land/std/hash/sha1.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; + +const blocks: number[] = []; + +export class Sha1 { + #blocks!: number[]; + #block!: number; + #start!: number; + #bytes!: number; + #hBytes!: number; + #finalized!: boolean; + #hashed!: boolean; + + #h0 = 0x67452301; + #h1 = 0xefcdab89; + #h2 = 0x98badcfe; + #h3 = 0x10325476; + #h4 = 0xc3d2e1f0; + #lastByteIndex = 0; + + constructor(sharedMemory = false) { + this.init(sharedMemory); + } + protected init(sharedMemory: boolean) { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + this.#h0 = 0x67452301; + this.#h1 = 0xefcdab89; + this.#h2 = 0x98badcfe; + this.#h3 = 0x10325476; + this.#h4 = 0xc3d2e1f0; + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + } + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) >>> 0; + this.#bytes = this.#bytes >>> 0; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + private hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f: number; + let j: number; + let t: number; + const blocks = this.#blocks; + + for (j = 16; j < 80; ++j) { + t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16]; + blocks[j] = (t << 1) | (t >>> 31); + } + + for (j = 0; j < 20; j += 5) { + f = (b & c) | (~b & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1518500249 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (~a & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1518500249 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (~e & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1518500249 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (~d & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1518500249 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (~c & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1518500249 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 40; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1859775393 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1859775393 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1859775393 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1859775393 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1859775393 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 60; j += 5) { + f = (b & c) | (b & d) | (c & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e - 1894007588 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (a & c) | (b & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d - 1894007588 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (e & b) | (a & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c - 1894007588 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (d & a) | (e & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b - 1894007588 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (c & e) | (d & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a - 1894007588 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 80; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e - 899497514 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d - 899497514 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c - 899497514 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b - 899497514 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a - 899497514 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + this.#h0 = (this.#h0 + a) >>> 0; + this.#h1 = (this.#h1 + b) >>> 0; + this.#h2 = (this.#h2 + c) >>> 0; + this.#h3 = (this.#h3 + d) >>> 0; + this.#h4 = (this.#h4 + e) >>> 0; + } + + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return ( + HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + ); + } + + toString(): string { + return this.hex(); + } + + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + ]; + } + + array(): number[] { + return this.digest(); + } + + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(20); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + + return buffer; + } +} +export class HmacSha1 extends Sha1 { + #sharedMemory: boolean; + #inner: boolean; + #oKeyPad: number[]; + constructor(secretKey: Message, sharedMemory = false) { + super(sharedMemory); + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length: number = secretKey.length; + let index = 0; + for (let i = 0; i < length; i++) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + if (key.length > 64) { + key = new Sha1(true).update(key).array(); + } + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; i++) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#sharedMemory = sharedMemory; + } + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/76d1b5d69dc192f40bdf7f959ce24d87f7643f4a.ts b/bundler/tests/.cache/deno/76d1b5d69dc192f40bdf7f959ce24d87f7643f4a.ts new file mode 100644 index 00000000000..b28384d603b --- /dev/null +++ b/bundler/tests/.cache/deno/76d1b5d69dc192f40bdf7f959ce24d87f7643f4a.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/middleware.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +// deno-lint-ignore-file + +import type { State } from "./application.ts"; +import type { Context } from "./context.ts"; + +/** Middleware are functions which are chained together to deal with requests. */ +export interface Middleware< + S extends State = Record, + T extends Context = Context, +> { + (context: T, next: () => Promise): Promise | void; +} + +/** Compose multiple middleware functions into a single middleware function. */ +export function compose< + S extends State = Record, + T extends Context = Context, +>( + middleware: Middleware[], +): (context: T, next?: () => Promise) => Promise { + return function composedMiddleware( + context: T, + next?: () => Promise, + ): Promise { + let index = -1; + + async function dispatch(i: number): Promise { + if (i <= index) { + throw new Error("next() called multiple times."); + } + index = i; + let fn: Middleware | undefined = middleware[i]; + if (i === middleware.length) { + fn = next; + } + if (!fn) { + return; + } + await fn(context, dispatch.bind(null, i + 1)); + } + + return dispatch(0); + }; +} diff --git a/bundler/tests/.cache/deno/76d2fdb7b9577301f985522851bc9fc520f85b63.ts b/bundler/tests/.cache/deno/76d2fdb7b9577301f985522851bc9fc520f85b63.ts new file mode 100644 index 00000000000..dcbc52f0718 --- /dev/null +++ b/bundler/tests/.cache/deno/76d2fdb7b9577301f985522851bc9fc520f85b63.ts @@ -0,0 +1,75 @@ +// Loaded from https://deno.land/std/fs/ensure_symlink.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; +import { isWindows } from "../_util/os.ts"; + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export async function ensureSymlink(src: string, dest: string): Promise { + const srcStatInfo = await Deno.lstat(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + const options: Deno.SymlinkOptions | undefined = isWindows + ? { + type: srcFilePathType === "dir" ? "dir" : "file", + } + : undefined; + + await Deno.symlink(src, dest, options); +} + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export function ensureSymlinkSync(src: string, dest: string): void { + const srcStatInfo = Deno.lstatSync(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + + const options: Deno.SymlinkOptions | undefined = isWindows + ? { + type: srcFilePathType === "dir" ? "dir" : "file", + } + : undefined; + + Deno.symlinkSync(src, dest, options); +} diff --git a/bundler/tests/.cache/deno/76ded5755756198f70d88116a058fc283ab09690.ts b/bundler/tests/.cache/deno/76ded5755756198f70d88116a058fc283ab09690.ts new file mode 100644 index 00000000000..c230f11753e --- /dev/null +++ b/bundler/tests/.cache/deno/76ded5755756198f70d88116a058fc283ab09690.ts @@ -0,0 +1,107 @@ +// Loaded from https://deno.land/x/mysql/src/packets/packet.ts + + +import { byteFormat } from "../../deps.ts"; +import { BufferReader, BufferWriter } from "../buffer.ts"; +import { WriteError } from "../constant/errors.ts"; +import { debug, log } from "../logger.ts"; +import { PacketType } from "../../src/constant/packet.ts"; + +/** @ignore */ +interface PacketHeader { + size: number; + no: number; +} + +/** @ignore */ +export class SendPacket { + header: PacketHeader; + + constructor(readonly body: Uint8Array, no: number) { + this.header = { size: body.length, no }; + } + + async send(conn: Deno.Conn) { + const body = this.body as Uint8Array; + const data = new BufferWriter(new Uint8Array(4 + body.length)); + data.writeUints(3, this.header.size); + data.write(this.header.no); + data.writeBuffer(body); + log.debug(`send: ${data.length}B \n${byteFormat(data.buffer)}\n`); + try { + let wrote = 0; + do { + wrote += await conn.write(data.buffer.subarray(wrote)); + } while (wrote < data.length); + } catch (error) { + throw new WriteError(error.message); + } + } +} + +/** @ignore */ +export class ReceivePacket { + header!: PacketHeader; + body!: BufferReader; + type!: PacketType; + + async parse(reader: Deno.Reader): Promise { + const header = new BufferReader(new Uint8Array(4)); + let readCount = 0; + let nread = await this.read(reader, header.buffer); + if (nread === null) return null; + readCount = nread; + const bodySize = header.readUints(3); + this.header = { + size: bodySize, + no: header.readUint8(), + }; + this.body = new BufferReader(new Uint8Array(bodySize)); + nread = await this.read(reader, this.body.buffer); + if (nread === null) return null; + readCount += nread; + + const { OK_Packet, ERR_Packet, EOF_Packet, Result } = PacketType; + switch (this.body.buffer[0]) { + case OK_Packet: + this.type = OK_Packet; + break; + case 0xff: + this.type = ERR_Packet; + break; + case 0xfe: + this.type = EOF_Packet; + break; + default: + this.type = Result; + break; + } + + debug(() => { + const data = new Uint8Array(readCount); + data.set(header.buffer); + data.set(this.body.buffer, 4); + log.debug( + `receive: ${readCount}B, size = ${this.header.size}, no = ${this.header.no} \n${ + byteFormat(data) + }\n`, + ); + }); + + return this; + } + + private async read( + reader: Deno.Reader, + buffer: Uint8Array, + ): Promise { + const size = buffer.length; + let haveRead = 0; + while (haveRead < size) { + const nread = await reader.read(buffer.subarray(haveRead)); + if (nread === null) return null; + haveRead += nread; + } + return haveRead; + } +} diff --git a/bundler/tests/.cache/deno/77917a9a34b772d8f676553fd265872465855a93.ts b/bundler/tests/.cache/deno/77917a9a34b772d8f676553fd265872465855a93.ts new file mode 100644 index 00000000000..d9e6cf4a139 --- /dev/null +++ b/bundler/tests/.cache/deno/77917a9a34b772d8f676553fd265872465855a93.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/jpegts@1.1/lib/pixel.ts + + +export class Pixel { + // @ts-ignore + r: number + // @ts-ignore + g: number + // @ts-ignore + b: number + // @ts-ignore + a: number +} diff --git a/bundler/tests/.cache/deno/783f5890dde13e85ec3009ba3cc8b211e459d635.ts b/bundler/tests/.cache/deno/783f5890dde13e85ec3009ba3cc8b211e459d635.ts new file mode 100644 index 00000000000..139ca126672 --- /dev/null +++ b/bundler/tests/.cache/deno/783f5890dde13e85ec3009ba3cc8b211e459d635.ts @@ -0,0 +1,582 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/extendSchema.js + + +import objectValues from '../polyfills/objectValues.js'; +import keyMap from '../jsutils/keyMap.js'; +import inspect from '../jsutils/inspect.js'; +import mapValue from '../jsutils/mapValue.js'; +import invariant from '../jsutils/invariant.js'; +import devAssert from '../jsutils/devAssert.js'; +import { Kind } from '../language/kinds.js'; +import { TokenKind } from '../language/tokenKind.js'; +import { dedentBlockStringValue } from '../language/blockString.js'; +import { isTypeDefinitionNode, isTypeExtensionNode } from '../language/predicates.js'; +import { assertValidSDLExtension } from '../validation/validate.js'; +import { getDirectiveValues } from '../execution/values.js'; +import { specifiedScalarTypes, isSpecifiedScalarType } from '../type/scalars.js'; +import { introspectionTypes, isIntrospectionType } from '../type/introspection.js'; +import { GraphQLDirective, GraphQLDeprecatedDirective } from '../type/directives.js'; +import { assertSchema, GraphQLSchema } from '../type/schema.js'; +import { isScalarType, isObjectType, isInterfaceType, isUnionType, isListType, isNonNullType, isEnumType, isInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType } from '../type/definition.js'; +import { valueFromAST } from './valueFromAST.js'; + +/** + * Produces a new schema given an existing schema and a document which may + * contain GraphQL type extensions and definitions. The original schema will + * remain unaltered. + * + * Because a schema represents a graph of references, a schema cannot be + * extended without effectively making an entire copy. We do not know until it's + * too late if subgraphs remain unchanged. + * + * This algorithm copies the provided schema, applying extensions while + * producing the copy. The original schema remains unaltered. + * + * Accepts options as a third argument: + * + * - commentDescriptions: + * Provide true to use preceding comments as the description. + * + */ +export function extendSchema(schema, documentAST, options) { + assertSchema(schema); + devAssert(documentAST != null && documentAST.kind === Kind.DOCUMENT, 'Must provide valid Document AST.'); + + if (options?.assumeValid !== true && options?.assumeValidSDL !== true) { + assertValidSDLExtension(documentAST, schema); + } + + const schemaConfig = schema.toConfig(); + const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options); + return schemaConfig === extendedConfig ? schema : new GraphQLSchema(extendedConfig); +} +/** + * @internal + */ + +export function extendSchemaImpl(schemaConfig, documentAST, options) { + // Collect the type definitions and extensions found in the document. + const typeDefs = []; + const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can + // have the same name. For example, a type named "skip". + + const directiveDefs = []; + let schemaDef; // Schema extensions are collected which may add additional operation types. + + const schemaExtensions = []; + + for (const def of documentAST.definitions) { + if (def.kind === Kind.SCHEMA_DEFINITION) { + schemaDef = def; + } else if (def.kind === Kind.SCHEMA_EXTENSION) { + schemaExtensions.push(def); + } else if (isTypeDefinitionNode(def)) { + typeDefs.push(def); + } else if (isTypeExtensionNode(def)) { + const extendedTypeName = def.name.value; + const existingTypeExtensions = typeExtensionsMap[extendedTypeName]; + typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def]; + } else if (def.kind === Kind.DIRECTIVE_DEFINITION) { + directiveDefs.push(def); + } + } // If this document contains no new types, extensions, or directives then + // return the same unmodified GraphQLSchema instance. + + + if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) { + return schemaConfig; + } + + const typeMap = Object.create(null); + + for (const existingType of schemaConfig.types) { + typeMap[existingType.name] = extendNamedType(existingType); + } + + for (const typeNode of typeDefs) { + const name = typeNode.name.value; + typeMap[name] = stdTypeMap[name] ?? buildType(typeNode); + } + + const operationTypes = { + // Get the extended root operation types. + query: schemaConfig.query && replaceNamedType(schemaConfig.query), + mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation), + subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription), + // Then, incorporate schema definition and all schema extensions. + ...(schemaDef && getOperationTypes([schemaDef])), + ...getOperationTypes(schemaExtensions) + }; // Then produce and return a Schema config with these types. + + return { + description: schemaDef?.description?.value, + ...operationTypes, + types: objectValues(typeMap), + directives: [...schemaConfig.directives.map(replaceDirective), ...directiveDefs.map(buildDirective)], + extensions: undefined, + astNode: schemaDef ?? schemaConfig.astNode, + extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions), + assumeValid: options?.assumeValid ?? false + }; // Below are functions used for producing this schema that have closed over + // this scope and have access to the schema, cache, and newly defined types. + + function replaceType(type) { + if (isListType(type)) { + return new GraphQLList(replaceType(type.ofType)); + } else if (isNonNullType(type)) { + return new GraphQLNonNull(replaceType(type.ofType)); + } + + return replaceNamedType(type); + } + + function replaceNamedType(type) { + // Note: While this could make early assertions to get the correctly + // typed values, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + return typeMap[type.name]; + } + + function replaceDirective(directive) { + const config = directive.toConfig(); + return new GraphQLDirective({ ...config, + args: mapValue(config.args, extendArg) + }); + } + + function extendNamedType(type) { + if (isIntrospectionType(type) || isSpecifiedScalarType(type)) { + // Builtin types are not extended. + return type; + } + + if (isScalarType(type)) { + return extendScalarType(type); + } + + if (isObjectType(type)) { + return extendObjectType(type); + } + + if (isInterfaceType(type)) { + return extendInterfaceType(type); + } + + if (isUnionType(type)) { + return extendUnionType(type); + } + + if (isEnumType(type)) { + return extendEnumType(type); + } + + if (isInputObjectType(type)) { + return extendInputObjectType(type); + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected type: ' + inspect(type)); + } + + function extendInputObjectType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[config.name] ?? []; + return new GraphQLInputObjectType({ ...config, + fields: () => ({ ...mapValue(config.fields, field => ({ ...field, + type: replaceType(field.type) + })), + ...buildInputFieldMap(extensions) + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendEnumType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[type.name] ?? []; + return new GraphQLEnumType({ ...config, + values: { ...config.values, + ...buildEnumValueMap(extensions) + }, + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendScalarType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[config.name] ?? []; + return new GraphQLScalarType({ ...config, + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendObjectType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[config.name] ?? []; + return new GraphQLObjectType({ ...config, + interfaces: () => [...type.getInterfaces().map(replaceNamedType), ...buildInterfaces(extensions)], + fields: () => ({ ...mapValue(config.fields, extendField), + ...buildFieldMap(extensions) + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendInterfaceType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[config.name] ?? []; + return new GraphQLInterfaceType({ ...config, + interfaces: () => [...type.getInterfaces().map(replaceNamedType), ...buildInterfaces(extensions)], + fields: () => ({ ...mapValue(config.fields, extendField), + ...buildFieldMap(extensions) + }), + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendUnionType(type) { + const config = type.toConfig(); + const extensions = typeExtensionsMap[config.name] ?? []; + return new GraphQLUnionType({ ...config, + types: () => [...type.getTypes().map(replaceNamedType), ...buildUnionTypes(extensions)], + extensionASTNodes: config.extensionASTNodes.concat(extensions) + }); + } + + function extendField(field) { + return { ...field, + type: replaceType(field.type), + args: mapValue(field.args, extendArg) + }; + } + + function extendArg(arg) { + return { ...arg, + type: replaceType(arg.type) + }; + } + + function getOperationTypes(nodes) { + const opTypes = {}; + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const operationTypesNodes = node.operationTypes ?? []; + + for (const operationType of operationTypesNodes) { + opTypes[operationType.operation] = getNamedType(operationType.type); + } + } // Note: While this could make early assertions to get the correctly + // typed values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable results. + + + return opTypes; + } + + function getNamedType(node) { + const name = node.name.value; + const type = stdTypeMap[name] ?? typeMap[name]; + + if (type === undefined) { + throw new Error(`Unknown type: "${name}".`); + } + + return type; + } + + function getWrappedType(node) { + if (node.kind === Kind.LIST_TYPE) { + return new GraphQLList(getWrappedType(node.type)); + } + + if (node.kind === Kind.NON_NULL_TYPE) { + return new GraphQLNonNull(getWrappedType(node.type)); + } + + return getNamedType(node); + } + + function buildDirective(node) { + const locations = node.locations.map(({ + value + }) => value); + return new GraphQLDirective({ + name: node.name.value, + description: getDescription(node, options), + locations, + isRepeatable: node.repeatable, + args: buildArgumentMap(node.arguments), + astNode: node + }); + } + + function buildFieldMap(nodes) { + const fieldConfigMap = Object.create(null); + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const nodeFields = node.fields ?? []; + + for (const field of nodeFields) { + fieldConfigMap[field.name.value] = { + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + type: getWrappedType(field.type), + description: getDescription(field, options), + args: buildArgumentMap(field.arguments), + deprecationReason: getDeprecationReason(field), + astNode: field + }; + } + } + + return fieldConfigMap; + } + + function buildArgumentMap(args) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const argsNodes = args ?? []; + const argConfigMap = Object.create(null); + + for (const arg of argsNodes) { + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + const type = getWrappedType(arg.type); + argConfigMap[arg.name.value] = { + type, + description: getDescription(arg, options), + defaultValue: valueFromAST(arg.defaultValue, type), + astNode: arg + }; + } + + return argConfigMap; + } + + function buildInputFieldMap(nodes) { + const inputFieldMap = Object.create(null); + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const fieldsNodes = node.fields ?? []; + + for (const field of fieldsNodes) { + // Note: While this could make assertions to get the correctly typed + // value, that would throw immediately while type system validation + // with validateSchema() will produce more actionable results. + const type = getWrappedType(field.type); + inputFieldMap[field.name.value] = { + type, + description: getDescription(field, options), + defaultValue: valueFromAST(field.defaultValue, type), + astNode: field + }; + } + } + + return inputFieldMap; + } + + function buildEnumValueMap(nodes) { + const enumValueMap = Object.create(null); + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const valuesNodes = node.values ?? []; + + for (const value of valuesNodes) { + enumValueMap[value.name.value] = { + description: getDescription(value, options), + deprecationReason: getDeprecationReason(value), + astNode: value + }; + } + } + + return enumValueMap; + } + + function buildInterfaces(nodes) { + const interfaces = []; + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const interfacesNodes = node.interfaces ?? []; + + for (const type of interfacesNodes) { + // Note: While this could make assertions to get the correctly typed + // values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable + // results. + interfaces.push(getNamedType(type)); + } + } + + return interfaces; + } + + function buildUnionTypes(nodes) { + const types = []; + + for (const node of nodes) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const typeNodes = node.types ?? []; + + for (const type of typeNodes) { + // Note: While this could make assertions to get the correctly typed + // values below, that would throw immediately while type system + // validation with validateSchema() will produce more actionable + // results. + types.push(getNamedType(type)); + } + } + + return types; + } + + function buildType(astNode) { + const name = astNode.name.value; + const description = getDescription(astNode, options); + const extensionNodes = typeExtensionsMap[name] ?? []; + + switch (astNode.kind) { + case Kind.OBJECT_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLObjectType({ + name, + description, + interfaces: () => buildInterfaces(allNodes), + fields: () => buildFieldMap(allNodes), + astNode, + extensionASTNodes + }); + } + + case Kind.INTERFACE_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLInterfaceType({ + name, + description, + interfaces: () => buildInterfaces(allNodes), + fields: () => buildFieldMap(allNodes), + astNode, + extensionASTNodes + }); + } + + case Kind.ENUM_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLEnumType({ + name, + description, + values: buildEnumValueMap(allNodes), + astNode, + extensionASTNodes + }); + } + + case Kind.UNION_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLUnionType({ + name, + description, + types: () => buildUnionTypes(allNodes), + astNode, + extensionASTNodes + }); + } + + case Kind.SCALAR_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + return new GraphQLScalarType({ + name, + description, + astNode, + extensionASTNodes + }); + } + + case Kind.INPUT_OBJECT_TYPE_DEFINITION: + { + const extensionASTNodes = extensionNodes; + const allNodes = [astNode, ...extensionASTNodes]; + return new GraphQLInputObjectType({ + name, + description, + fields: () => buildInputFieldMap(allNodes), + astNode, + extensionASTNodes + }); + } + } // Not reachable. All possible type definition nodes have been considered. + + + invariant(false, 'Unexpected type definition node: ' + inspect(astNode)); + } +} +const stdTypeMap = keyMap(specifiedScalarTypes.concat(introspectionTypes), type => type.name); +/** + * Given a field or enum value node, returns the string value for the + * deprecation reason. + */ + +function getDeprecationReason(node) { + const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); + return deprecated?.reason; +} +/** + * Given an ast node, returns its string description. + * @deprecated: provided to ease adoption and will be removed in v16. + * + * Accepts options as a second argument: + * + * - commentDescriptions: + * Provide true to use preceding comments as the description. + * + */ + + +export function getDescription(node, options) { + if (node.description) { + return node.description.value; + } + + if (options?.commentDescriptions === true) { + const rawValue = getLeadingCommentBlock(node); + + if (rawValue !== undefined) { + return dedentBlockStringValue('\n' + rawValue); + } + } +} + +function getLeadingCommentBlock(node) { + const loc = node.loc; + + if (!loc) { + return; + } + + const comments = []; + let token = loc.startToken.prev; + + while (token != null && token.kind === TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) { + const value = String(token.value); + comments.push(value); + token = token.prev; + } + + return comments.length > 0 ? comments.reverse().join('\n') : undefined; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/785a5c7a73317a88ca6c6722d91f232cc32313ae.ts b/bundler/tests/.cache/deno/785a5c7a73317a88ca6c6722d91f232cc32313ae.ts new file mode 100644 index 00000000000..2b0bd19cdf9 --- /dev/null +++ b/bundler/tests/.cache/deno/785a5c7a73317a88ca6c6722d91f232cc32313ae.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_has.js + + +export default function _has(prop, obj) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} diff --git a/bundler/tests/.cache/deno/78821e16b4859fd41cfd24ab71f728b35d93a1d2.ts b/bundler/tests/.cache/deno/78821e16b4859fd41cfd24ab71f728b35d93a1d2.ts new file mode 100644 index 00000000000..a01a13acb32 --- /dev/null +++ b/bundler/tests/.cache/deno/78821e16b4859fd41cfd24ab71f728b35d93a1d2.ts @@ -0,0 +1,329 @@ +// Loaded from https://deno.land/std@0.67.0/path/glob.ts + + +// globToRegExp() is originall ported from globrex@0.1.2. +// Copyright 2018 Terkel Gjervig Nielsen. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { NATIVE_OS } from "./_constants.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +/** Convert a glob string to a regular expressions. + * + * // Looking for all the `ts` files: + * walkSync(".", { + * match: [globToRegExp("*.ts")] + * }); + * + * Looking for all the `.json` files in any subfolder: + * walkSync(".", { + * match: [globToRegExp(join("a", "**", "*.json"), { + * extended: true, + * globstar: true + * })] + * }); */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = NATIVE_OS }: + GlobToRegExpOptions = {}, +): RegExp { + const sep = os == "windows" ? `(?:\\\\|\\/)+` : `\\/+`; + const sepMaybe = os == "windows" ? `(?:\\\\|\\/)*` : `\\/*`; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const sepRaw = os == "windows" ? `\\` : `/`; + const globstar = os == "windows" + ? `(?:[^\\\\/]*(?:\\\\|\\/|$)+)*` + : `(?:[^/]*(?:\\/|$)+)*`; + const wildcard = os == "windows" ? `[^\\\\/]*` : `[^/]*`; + + // Keep track of scope for extended syntaxes. + const extStack = []; + + // If we are doing extended matching, this boolean is true when we are inside + // a group (eg {*.html,*.js}), and false otherwise. + let inGroup = false; + let inRange = false; + + let regExpString = ""; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 0 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let c, n; + for (let i = 0; i < glob.length; i++) { + c = glob[i]; + n = glob[i + 1]; + + if (seps.includes(c)) { + regExpString += sep; + while (seps.includes(glob[i + 1])) i++; + continue; + } + + if (c == "[") { + if (inRange && n == ":") { + i++; // skip [ + let value = ""; + while (glob[++i] !== ":") value += glob[i]; + if (value == "alnum") regExpString += "\\w\\d"; + else if (value == "space") regExpString += "\\s"; + else if (value == "digit") regExpString += "\\d"; + i++; // skip last ] + continue; + } + inRange = true; + regExpString += c; + continue; + } + + if (c == "]") { + inRange = false; + regExpString += c; + continue; + } + + if (c == "!") { + if (inRange) { + if (glob[i - 1] == "[") { + regExpString += "^"; + continue; + } + } else if (extended) { + if (n == "(") { + extStack.push(c); + regExpString += "(?!"; + i++; + continue; + } + regExpString += `\\${c}`; + continue; + } else { + regExpString += `\\${c}`; + continue; + } + } + + if (inRange) { + if (c == "\\" || c == "^" && glob[i - 1] == "[") regExpString += `\\${c}`; + else regExpString += c; + continue; + } + + if (["\\", "$", "^", ".", "="].includes(c)) { + regExpString += `\\${c}`; + continue; + } + + if (c == "(") { + if (extStack.length) { + regExpString += `${c}?:`; + continue; + } + regExpString += `\\${c}`; + continue; + } + + if (c == ")") { + if (extStack.length) { + regExpString += c; + const type = extStack.pop()!; + if (type == "@") { + regExpString += "{1}"; + } else if (type == "!") { + regExpString += wildcard; + } else { + regExpString += type; + } + continue; + } + regExpString += `\\${c}`; + continue; + } + + if (c == "|") { + if (extStack.length) { + regExpString += c; + continue; + } + regExpString += `\\${c}`; + continue; + } + + if (c == "+") { + if (n == "(" && extended) { + extStack.push(c); + continue; + } + regExpString += `\\${c}`; + continue; + } + + if (c == "@" && extended) { + if (n == "(") { + extStack.push(c); + continue; + } + } + + if (c == "?") { + if (extended) { + if (n == "(") { + extStack.push(c); + } + continue; + } else { + regExpString += "."; + continue; + } + } + + if (c == "{") { + inGroup = true; + regExpString += "(?:"; + continue; + } + + if (c == "}") { + inGroup = false; + regExpString += ")"; + continue; + } + + if (c == ",") { + if (inGroup) { + regExpString += "|"; + continue; + } + regExpString += `\\${c}`; + continue; + } + + if (c == "*") { + if (n == "(" && extended) { + extStack.push(c); + continue; + } + // Move over all consecutive "*"'s. + // Also store the previous and next characters + const prevChar = glob[i - 1]; + let starCount = 1; + while (glob[i + 1] == "*") { + starCount++; + i++; + } + const nextChar = glob[i + 1]; + const isGlobstar = globstarOption && starCount > 1 && + // from the start of the segment + [sepRaw, "/", undefined].includes(prevChar) && + // to the end of the segment + [sepRaw, "/", undefined].includes(nextChar); + if (isGlobstar) { + // it's a globstar, so match zero or more path segments + regExpString += globstar; + while (seps.includes(glob[i + 1])) i++; + } else { + // it's not a globstar, so only match one path segment + regExpString += wildcard; + } + continue; + } + + regExpString += c; + } + + regExpString = `^${regExpString}${regExpString != "" ? sepMaybe : ""}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + /* eslint-disable-next-line max-len */ + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/78e85c38153fa5e04a795f5fd46eef12c33b4cb6.ts b/bundler/tests/.cache/deno/78e85c38153fa5e04a795f5fd46eef12c33b4cb6.ts new file mode 100644 index 00000000000..7c8b1e3a443 --- /dev/null +++ b/bundler/tests/.cache/deno/78e85c38153fa5e04a795f5fd46eef12c33b4cb6.ts @@ -0,0 +1,212 @@ +// Loaded from https://deno.land/std@0.77.0/log/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Logger } from "./logger.ts"; +import type { GenericFunction } from "./logger.ts"; +import { + BaseHandler, + ConsoleHandler, + FileHandler, + RotatingFileHandler, + WriterHandler, +} from "./handlers.ts"; +import { assert } from "../_util/assert.ts"; +import type { LevelName } from "./levels.ts"; + +export { LogLevels } from "./levels.ts"; +export type { LevelName } from "./levels.ts"; +export { Logger } from "./logger.ts"; + +export class LoggerConfig { + level?: LevelName; + handlers?: string[]; +} + +export interface LogConfig { + handlers?: { + [name: string]: BaseHandler; + }; + loggers?: { + [name: string]: LoggerConfig; + }; +} + +const DEFAULT_LEVEL = "INFO"; +const DEFAULT_CONFIG: LogConfig = { + handlers: { + default: new ConsoleHandler(DEFAULT_LEVEL), + }, + + loggers: { + default: { + level: DEFAULT_LEVEL, + handlers: ["default"], + }, + }, +}; + +const state = { + handlers: new Map(), + loggers: new Map(), + config: DEFAULT_CONFIG, +}; + +export const handlers = { + BaseHandler, + ConsoleHandler, + WriterHandler, + FileHandler, + RotatingFileHandler, +}; + +/** Get a logger instance. If not specified `name`, get the default logger. */ +export function getLogger(name?: string): Logger { + if (!name) { + const d = state.loggers.get("default"); + assert( + d != null, + `"default" logger must be set for getting logger without name`, + ); + return d; + } + const result = state.loggers.get(name); + if (!result) { + const logger = new Logger(name, "NOTSET", { handlers: [] }); + state.loggers.set(name, logger); + return logger; + } + return result; +} + +/** Log with debug level, using default logger. */ +export function debug(msg: () => T, ...args: unknown[]): T | undefined; +export function debug( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").debug(msg, ...args); + } + return getLogger("default").debug(msg, ...args); +} + +/** Log with info level, using default logger. */ +export function info(msg: () => T, ...args: unknown[]): T | undefined; +export function info( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").info(msg, ...args); + } + return getLogger("default").info(msg, ...args); +} + +/** Log with warning level, using default logger. */ +export function warning(msg: () => T, ...args: unknown[]): T | undefined; +export function warning( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").warning(msg, ...args); + } + return getLogger("default").warning(msg, ...args); +} + +/** Log with error level, using default logger. */ +export function error(msg: () => T, ...args: unknown[]): T | undefined; +export function error( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").error(msg, ...args); + } + return getLogger("default").error(msg, ...args); +} + +/** Log with critical level, using default logger. */ +export function critical(msg: () => T, ...args: unknown[]): T | undefined; +export function critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").critical(msg, ...args); + } + return getLogger("default").critical(msg, ...args); +} + +/** Setup logger config. */ +export async function setup(config: LogConfig): Promise { + state.config = { + handlers: { ...DEFAULT_CONFIG.handlers, ...config.handlers }, + loggers: { ...DEFAULT_CONFIG.loggers, ...config.loggers }, + }; + + // tear down existing handlers + state.handlers.forEach((handler): void => { + handler.destroy(); + }); + state.handlers.clear(); + + // setup handlers + const handlers = state.config.handlers || {}; + + for (const handlerName in handlers) { + const handler = handlers[handlerName]; + await handler.setup(); + state.handlers.set(handlerName, handler); + } + + // remove existing loggers + state.loggers.clear(); + + // setup loggers + const loggers = state.config.loggers || {}; + for (const loggerName in loggers) { + const loggerConfig = loggers[loggerName]; + const handlerNames = loggerConfig.handlers || []; + const handlers: BaseHandler[] = []; + + handlerNames.forEach((handlerName): void => { + const handler = state.handlers.get(handlerName); + if (handler) { + handlers.push(handler); + } + }); + + const levelName = loggerConfig.level || DEFAULT_LEVEL; + const logger = new Logger(loggerName, levelName, { handlers: handlers }); + state.loggers.set(loggerName, logger); + } +} + +await setup(DEFAULT_CONFIG); diff --git a/bundler/tests/.cache/deno/793e9f07b35bed4156c8a285c3976d7324247570.ts b/bundler/tests/.cache/deno/793e9f07b35bed4156c8a285c3976d7324247570.ts new file mode 100644 index 00000000000..01362550877 --- /dev/null +++ b/bundler/tests/.cache/deno/793e9f07b35bed4156c8a285c3976d7324247570.ts @@ -0,0 +1,935 @@ +// Loaded from https://deno.land/std@0.73.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +// It will solve the relative path from `from` to `to`, for instance: +// from = 'C:\\orandea\\test\\aaa' +// to = 'C:\\orandea\\impl\\bbb' +// The output of the function should be: '..\\..\\impl\\bbb' +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +export function format(pathObject: FormatInputPathObject): string { + /* eslint-disable max-len */ + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname + .replace(/^\/*([A-Za-z]:)(\/|$)/, "$1/") + .replace(/\//g, "\\") + .replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} diff --git a/bundler/tests/.cache/deno/7990a380a50d6c557f184ebcf6a35837037d6722.ts b/bundler/tests/.cache/deno/7990a380a50d6c557f184ebcf6a35837037d6722.ts new file mode 100644 index 00000000000..c8b022e1167 --- /dev/null +++ b/bundler/tests/.cache/deno/7990a380a50d6c557f184ebcf6a35837037d6722.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/std@0.85.0/io/writers.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { decode, encode } from "../encoding/utf8.ts"; + +/** Writer utility for buffering string chunks */ +export class StringWriter implements Writer, WriterSync { + private chunks: Uint8Array[] = []; + private byteLength = 0; + private cache: string | undefined; + + constructor(private base: string = "") { + const c = encode(base); + this.chunks.push(c); + this.byteLength += c.byteLength; + } + + write(p: Uint8Array): Promise { + return Promise.resolve(this.writeSync(p)); + } + + writeSync(p: Uint8Array): number { + this.chunks.push(p); + this.byteLength += p.byteLength; + this.cache = undefined; + return p.byteLength; + } + + toString(): string { + if (this.cache) { + return this.cache; + } + const buf = new Uint8Array(this.byteLength); + let offs = 0; + for (const chunk of this.chunks) { + buf.set(chunk, offs); + offs += chunk.byteLength; + } + this.cache = decode(buf); + return this.cache; + } +} diff --git a/bundler/tests/.cache/deno/79d809cf48163d86f3ae2c8b17c41f6dc8cdff01.ts b/bundler/tests/.cache/deno/79d809cf48163d86f3ae2c8b17c41f6dc8cdff01.ts new file mode 100644 index 00000000000..0a2cc6f1499 --- /dev/null +++ b/bundler/tests/.cache/deno/79d809cf48163d86f3ae2c8b17c41f6dc8cdff01.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/ExecutableDefinitionsRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { isExecutableDefinitionNode } from '../../language/predicates.js'; + +/** + * Executable definitions + * + * A GraphQL document is only valid for execution if all definitions are either + * operation or fragment definitions. + */ +export function ExecutableDefinitionsRule(context) { + return { + Document(node) { + for (const definition of node.definitions) { + if (!isExecutableDefinitionNode(definition)) { + const defName = definition.kind === Kind.SCHEMA_DEFINITION || definition.kind === Kind.SCHEMA_EXTENSION ? 'schema' : '"' + definition.name.value + '"'; + context.reportError(new GraphQLError(`The ${defName} definition is not executable.`, definition)); + } + } + + return false; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/79e86c5e195ad14afccd87a335f14c4cdcea6488.ts b/bundler/tests/.cache/deno/79e86c5e195ad14afccd87a335f14c4cdcea6488.ts new file mode 100644 index 00000000000..0926cf855a7 --- /dev/null +++ b/bundler/tests/.cache/deno/79e86c5e195ad14afccd87a335f14c4cdcea6488.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/error/syntaxError.js + + +import { GraphQLError } from './GraphQLError.js'; +/** + * Produces a GraphQLError representing a syntax error, containing useful + * descriptive information about the syntax error's position in the source. + */ + +export function syntaxError(source, position, description) { + return new GraphQLError(`Syntax Error: ${description}`, undefined, source, [position]); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/7a42ca78a2e065adec5211c9851e5db9374b9426.ts b/bundler/tests/.cache/deno/7a42ca78a2e065adec5211c9851e5db9374b9426.ts new file mode 100644 index 00000000000..de79f2609ec --- /dev/null +++ b/bundler/tests/.cache/deno/7a42ca78a2e065adec5211c9851e5db9374b9426.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/std@0.74.0/encoding/base64.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * Converts given data with base64 encoding + * @param data input to encode + */ +export function encode(data: string | ArrayBuffer): string { + if (typeof data === "string") { + return btoa(data); + } else { + const d = new Uint8Array(data); + let dataString = ""; + for (let i = 0; i < d.length; ++i) { + dataString += String.fromCharCode(d[i]); + } + + return btoa(dataString); + } +} + +/** + * Converts given base64 encoded data back to original + * @param data input to decode + */ +export function decode(data: string): ArrayBuffer { + const binaryString = decodeString(data); + const binary = new Uint8Array(binaryString.length); + for (let i = 0; i < binary.length; ++i) { + binary[i] = binaryString.charCodeAt(i); + } + + return binary.buffer; +} + +/** + * Decodes data assuming the output is in string type + * @param data input to decode + */ +export function decodeString(data: string): string { + return atob(data); +} diff --git a/bundler/tests/.cache/deno/7a63b3a3b8a9614a110d00b2e40e2340d3315c14.ts b/bundler/tests/.cache/deno/7a63b3a3b8a9614a110d00b2e40e2340d3315c14.ts new file mode 100644 index 00000000000..8095d95bd5b --- /dev/null +++ b/bundler/tests/.cache/deno/7a63b3a3b8a9614a110d00b2e40e2340d3315c14.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/negate.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Negates its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} + * @example + * + * R.negate(42); //=> -42 + */ +var negate = _curry1(function negate(n) { return -n; }); +export default negate; diff --git a/bundler/tests/.cache/deno/7a74e76c87cc20eb0ff08b26a7c37c3ed003e117.ts b/bundler/tests/.cache/deno/7a74e76c87cc20eb0ff08b26a7c37c3ed003e117.ts new file mode 100644 index 00000000000..271baa14ce3 --- /dev/null +++ b/bundler/tests/.cache/deno/7a74e76c87cc20eb0ff08b26a7c37c3ed003e117.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.85.0/fs/exists.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/** + * Test whether or not the given path exists by checking with the file system + */ +export async function exists(filePath: string): Promise { + try { + await Deno.lstat(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + + throw err; + } +} + +/** + * Test whether or not the given path exists by checking with the file system + */ +export function existsSync(filePath: string): boolean { + try { + Deno.lstatSync(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/7a7632089b03302fd2d861bda1595e08d7bf9956.ts b/bundler/tests/.cache/deno/7a7632089b03302fd2d861bda1595e08d7bf9956.ts new file mode 100644 index 00000000000..2f6af84497e --- /dev/null +++ b/bundler/tests/.cache/deno/7a7632089b03302fd2d861bda1595e08d7bf9956.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/gt.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns `true` if the first argument is greater than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.lt + * @example + * + * R.gt(2, 1); //=> true + * R.gt(2, 2); //=> false + * R.gt(2, 3); //=> false + * R.gt('a', 'z'); //=> false + * R.gt('z', 'a'); //=> true + */ +var gt = _curry2(function gt(a, b) { return a > b; }); +export default gt; diff --git a/bundler/tests/.cache/deno/7a9a4b356f9e37d84b1bcc46df13e40ec6e9e219.ts b/bundler/tests/.cache/deno/7a9a4b356f9e37d84b1bcc46df13e40ec6e9e219.ts new file mode 100644 index 00000000000..d8f0c34750b --- /dev/null +++ b/bundler/tests/.cache/deno/7a9a4b356f9e37d84b1bcc46df13e40ec6e9e219.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dropLast.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _dropLast from './internal/_dropLast.js'; +import _xdropLast from './internal/_xdropLast.js'; + + +/** + * Returns a list containing all but the last `n` elements of the given `list`. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements of `list` to skip. + * @param {Array} list The list of elements to consider. + * @return {Array} A copy of the list with only the first `list.length - n` elements + * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile + * @example + * + * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(3, 'ramda'); //=> 'ra' + */ +var dropLast = _curry2(_dispatchable([], _xdropLast, _dropLast)); +export default dropLast; diff --git a/bundler/tests/.cache/deno/7aa593b31947cc239638b653c7f2a4fbd4e0bc70.ts b/bundler/tests/.cache/deno/7aa593b31947cc239638b653c7f2a4fbd4e0bc70.ts new file mode 100644 index 00000000000..49e669bba34 --- /dev/null +++ b/bundler/tests/.cache/deno/7aa593b31947cc239638b653c7f2a4fbd4e0bc70.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.73.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/7abcb0cfce117c782f328a960440cfdab538ae3a.ts b/bundler/tests/.cache/deno/7abcb0cfce117c782f328a960440cfdab538ae3a.ts new file mode 100644 index 00000000000..39c6b259e36 --- /dev/null +++ b/bundler/tests/.cache/deno/7abcb0cfce117c782f328a960440cfdab538ae3a.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/case@v2.1.0/sentenceCase.ts + + +import normalCase from "./normalCase.ts"; +import upperFirstCase from "./upperFirstCase.ts"; + +export default function sentenceCase(value: string, locale?: string): string { + return upperFirstCase(normalCase(value, locale), locale); +} diff --git a/bundler/tests/.cache/deno/7abe2cb8747802a5939867e7a8676627fa667806.ts b/bundler/tests/.cache/deno/7abe2cb8747802a5939867e7a8676627fa667806.ts new file mode 100644 index 00000000000..a6e691303be --- /dev/null +++ b/bundler/tests/.cache/deno/7abe2cb8747802a5939867e7a8676627fa667806.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/symmetricDifference.js + + +import _curry2 from './internal/_curry2.js'; +import concat from './concat.js'; +import difference from './difference.js'; + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifferenceWith, R.difference, R.differenceWith + * @example + * + * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] + * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2] + */ +var symmetricDifference = _curry2(function symmetricDifference(list1, list2) { + return concat(difference(list1, list2), difference(list2, list1)); +}); +export default symmetricDifference; diff --git a/bundler/tests/.cache/deno/7acc8e7cf173abfbb82b4e379f1b367cddafc5d5.ts b/bundler/tests/.cache/deno/7acc8e7cf173abfbb82b4e379f1b367cddafc5d5.ts new file mode 100644 index 00000000000..665815392a5 --- /dev/null +++ b/bundler/tests/.cache/deno/7acc8e7cf173abfbb82b4e379f1b367cddafc5d5.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/defineToJSON.js + + +import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol.js'; +/** + * The `defineToJSON()` function defines toJSON() and inspect() prototype + * methods, if no function provided they become aliases for toString(). + */ + +export default function defineToJSON(classObject, fn = classObject.prototype.toString) { + classObject.prototype.toJSON = fn; + classObject.prototype.inspect = fn; + /* istanbul ignore else (See: https://github.com/graphql/graphql-js/issues/2317) */ + + if (nodejsCustomInspectSymbol) { + classObject.prototype[nodejsCustomInspectSymbol] = fn; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/7aded0740cb27c015443cdba7f35e72e47290825.ts b/bundler/tests/.cache/deno/7aded0740cb27c015443cdba7f35e72e47290825.ts new file mode 100644 index 00000000000..bbbc353dd8a --- /dev/null +++ b/bundler/tests/.cache/deno/7aded0740cb27c015443cdba7f35e72e47290825.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/utils/ns.ts + + +export function parseNamespace(ns: string) { + const [db, ...rest] = ns.split("."); + return { db, collection: rest.join(".") }; +} diff --git a/bundler/tests/.cache/deno/7ae9bcc8ace6c8d56f5cf6ba58e2b796cb48bd3e.ts b/bundler/tests/.cache/deno/7ae9bcc8ace6c8d56f5cf6ba58e2b796cb48bd3e.ts new file mode 100644 index 00000000000..4c805f8ef8e --- /dev/null +++ b/bundler/tests/.cache/deno/7ae9bcc8ace6c8d56f5cf6ba58e2b796cb48bd3e.ts @@ -0,0 +1,81 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/headers.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import type { BufReader } from "./buf_reader.ts"; +import { httpErrors } from "./httpError.ts"; + +const COLON = ":".charCodeAt(0); +const HTAB = "\t".charCodeAt(0); +const SPACE = " ".charCodeAt(0); + +const decoder = new TextDecoder(); + +/** With a provided attribute pattern, return a RegExp which will match and + * capture in the first group the value of the attribute from a header value. */ +export function toParamRegExp( + attributePattern: string, + flags?: string, +): RegExp { + // deno-fmt-ignore + return new RegExp( + `(?:^|;)\\s*${attributePattern}\\s*=\\s*` + + `(` + + `[^";\\s][^;\\s]*` + + `|` + + `"(?:[^"\\\\]|\\\\"?)+"?` + + `)`, + flags + ); +} + +/** Asynchronously read the headers out of body request and resolve with them as + * a `Headers` object. */ +export async function readHeaders( + body: BufReader, +): Promise> { + const headers: Record = {}; + let readResult = await body.readLine(); + while (readResult) { + const { bytes } = readResult; + if (!bytes.length) { + return headers; + } + let i = bytes.indexOf(COLON); + if (i === -1) { + throw new httpErrors.BadRequest( + `Malformed header: ${decoder.decode(bytes)}`, + ); + } + const key = decoder.decode(bytes.subarray(0, i)).trim().toLowerCase(); + if (key === "") { + throw new httpErrors.BadRequest("Invalid header key."); + } + i++; + while (i < bytes.byteLength && (bytes[i] === SPACE || bytes[i] === HTAB)) { + i++; + } + const value = decoder.decode(bytes.subarray(i)).trim(); + headers[key] = value; + readResult = await body.readLine(); + } + throw new httpErrors.BadRequest("Unexpected end of body reached."); +} + +/** Unquotes attribute values that might be pass as part of a header. */ +export function unquote(value: string): string { + if (value.startsWith(`"`)) { + const parts = value.slice(1).split(`\\"`); + for (let i = 0; i < parts.length; ++i) { + const quoteIndex = parts[i].indexOf(`"`); + if (quoteIndex !== -1) { + parts[i] = parts[i].slice(0, quoteIndex); + parts.length = i + 1; // Truncates and stops the loop + } + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + value = parts.join(`"`); + } + return value; +} diff --git a/bundler/tests/.cache/deno/7bbc857517d433fe324260638f2366514c655a99.ts b/bundler/tests/.cache/deno/7bbc857517d433fe324260638f2366514c655a99.ts new file mode 100644 index 00000000000..03fe6c18258 --- /dev/null +++ b/bundler/tests/.cache/deno/7bbc857517d433fe324260638f2366514c655a99.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.81.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/7c1dce387e456c70c622d782820348ccfaeb3e6e.ts b/bundler/tests/.cache/deno/7c1dce387e456c70c622d782820348ccfaeb3e6e.ts new file mode 100644 index 00000000000..616ee8c4cba --- /dev/null +++ b/bundler/tests/.cache/deno/7c1dce387e456c70c622d782820348ccfaeb3e6e.ts @@ -0,0 +1,249 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/http_exception.ts + + +import { Status } from "./vendor/https/deno.land/std/http/http_status.ts"; + +export interface HttpExceptionBody { + message?: string; + error?: string; + statusCode?: number; +} + +export function createHttpExceptionBody( + message: string, + error?: string, + statusCode?: number, +): HttpExceptionBody; +export function createHttpExceptionBody>( + body: T, +): T; +export function createHttpExceptionBody>( + msgOrBody: string | T, + error?: string, + statusCode?: number, +): HttpExceptionBody | T { + if (typeof msgOrBody === "object" && !Array.isArray(msgOrBody)) { + return msgOrBody; + } else if (typeof msgOrBody === "string") { + return { statusCode, error, message: msgOrBody }; + } + return { statusCode, error }; +} + +export class HttpException extends Error { + readonly message: any; + constructor( + readonly response: string | Record, + readonly status: number, + ) { + super(); + this.message = response; + } +} + +export class BadGatewayException extends HttpException { + constructor( + message?: string | Record | any, + error = "Bad Gateway", + ) { + super( + createHttpExceptionBody(message, error, Status.BadGateway), + Status.BadGateway, + ); + } +} + +export class BadRequestException extends HttpException { + constructor( + message?: string | Record | any, + error = "Bad Request", + ) { + super( + createHttpExceptionBody(message, error, Status.BadRequest), + Status.BadRequest, + ); + } +} + +export class ConflictException extends HttpException { + constructor( + message?: string | Record | any, + error = "Conflict", + ) { + super( + createHttpExceptionBody(message, error, Status.Conflict), + Status.Conflict, + ); + } +} + +export class ForbiddenException extends HttpException { + constructor( + message?: string | Record | any, + error = "Forbidden", + ) { + super( + createHttpExceptionBody(message, error, Status.Forbidden), + Status.Forbidden, + ); + } +} + +export class GatewayTimeoutException extends HttpException { + constructor( + message?: string | Record | any, + error = "Gateway Timeout", + ) { + super( + createHttpExceptionBody(message, error, Status.GatewayTimeout), + Status.GatewayTimeout, + ); + } +} + +export class GoneException extends HttpException { + constructor(message?: string | Record | any, error = "Gone") { + super(createHttpExceptionBody(message, error, Status.Gone), Status.Gone); + } +} + +export class TeapotException extends HttpException { + constructor(message?: string | Record | any, error = "Teapot") { + super( + createHttpExceptionBody(message, error, Status.Teapot), + Status.Teapot, + ); + } +} + +export class MethodNotAllowedException extends HttpException { + constructor( + message?: string | Record | any, + error = "Method Not Allowed", + ) { + super( + createHttpExceptionBody(message, error, Status.MethodNotAllowed), + Status.MethodNotAllowed, + ); + } +} + +export class NotAcceptableException extends HttpException { + constructor( + message?: string | Record | any, + error = "Not Acceptable", + ) { + super( + createHttpExceptionBody(message, error, Status.NotAcceptable), + Status.NotAcceptable, + ); + } +} + +export class NotFoundException extends HttpException { + constructor( + message?: string | Record | any, + error = "Not Found", + ) { + super( + createHttpExceptionBody(message, error, Status.NotFound), + Status.NotFound, + ); + } +} + +export class NotImplementedException extends HttpException { + constructor( + message?: string | Record | any, + error = "Not Implemented", + ) { + super( + createHttpExceptionBody(message, error, Status.NotImplemented), + Status.NotImplemented, + ); + } +} + +export class RequestEntityTooLargeException extends HttpException { + constructor( + message?: string | Record | any, + error = "Request Entity Too Large", + ) { + super( + createHttpExceptionBody(message, error, Status.RequestEntityTooLarge), + Status.RequestEntityTooLarge, + ); + } +} + +export class RequestTimeoutException extends HttpException { + constructor( + message?: string | Record | any, + error = "Request Timeout", + ) { + super( + createHttpExceptionBody(message, error, Status.RequestTimeout), + Status.RequestTimeout, + ); + } +} + +export class ServiceUnavailableException extends HttpException { + constructor( + message?: string | Record | any, + error = "Service Unavailable", + ) { + super( + createHttpExceptionBody(message, error, Status.ServiceUnavailable), + Status.ServiceUnavailable, + ); + } +} + +export class UnauthorizedException extends HttpException { + constructor( + message?: string | Record | any, + error = "Unauthorized", + ) { + super( + createHttpExceptionBody(message, error, Status.Unauthorized), + Status.Unauthorized, + ); + } +} + +export class UnprocessableEntityException extends HttpException { + constructor( + message?: string | Record | any, + error = "Unprocessable Entity", + ) { + super( + createHttpExceptionBody(message, error, Status.UnprocessableEntity), + Status.UnprocessableEntity, + ); + } +} + +export class InternalServerErrorException extends HttpException { + constructor( + message?: string | Record | any, + error = "Internal Server Error", + ) { + super( + createHttpExceptionBody(message, error, Status.InternalServerError), + Status.InternalServerError, + ); + } +} + +export class UnsupportedMediaTypeException extends HttpException { + constructor( + message?: string | Record | any, + error = "Unsupported Media Type", + ) { + super( + createHttpExceptionBody(message, error, Status.UnsupportedMediaType), + Status.UnsupportedMediaType, + ); + } +} diff --git a/bundler/tests/.cache/deno/7c21357211237ccc1687131e6dffbf13507cbd9c.ts b/bundler/tests/.cache/deno/7c21357211237ccc1687131e6dffbf13507cbd9c.ts new file mode 100644 index 00000000000..d8deae8af40 --- /dev/null +++ b/bundler/tests/.cache/deno/7c21357211237ccc1687131e6dffbf13507cbd9c.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std@0.86.0/bytes/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/7c23c2a3ed280e486b392c825480f3ca80048e58.ts b/bundler/tests/.cache/deno/7c23c2a3ed280e486b392c825480f3ca80048e58.ts new file mode 100644 index 00000000000..b60ac689e38 --- /dev/null +++ b/bundler/tests/.cache/deno/7c23c2a3ed280e486b392c825480f3ca80048e58.ts @@ -0,0 +1,294 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/db.ts + + +import instantiate from "../build/sqlite.js"; +import { getStr, setArr, setStr } from "./wasm.ts"; +import { Status, Values } from "./constants.ts"; +import SqliteError from "./error.ts"; +import { Empty, Rows } from "./rows.ts"; + +// Possible parameters to be bound to a query +type QueryParam = + | boolean + | number + | bigint + | string + | null + | undefined + | Date + | Uint8Array; + +export class DB { + private _wasm: any; + private _open: boolean; + private _transactions: Set; + + /** + * DB + * + * Create a new database. The passed + * path will be opened with read/ write + * permissions and created if it does not + * already exist. + * + * The default opens an in-memory database. + */ + constructor(path: string = ":memory:") { + this._wasm = instantiate().exports; + this._open = false; + this._transactions = new Set(); + + // Try to open the database + let status; + setStr(this._wasm, path, (ptr) => { + status = this._wasm.open(ptr); + }); + if (status !== Status.SqliteOk) { + throw this._error(); + } + this._open = true; + } + + /** + * DB.query + * + * Run a query against the database. The query + * can contain placeholder parameters, which + * are bound to the values passed in 'values'. + * + * db.query("SELECT name, email FROM users WHERE subscribed = ? AND list LIKE ?", [true, listName]); + * + * This supports positional and named parameters. + * Positional parameters can be set by passing an + * array for values. Named parameters can be set + * by passing an object for values. + * + * While they can be mixed in principle, this is + * not recommended. + * + * | Parameter | Values | + * |---------------|-------------------------| + * | `?NNN` or `?` | NNN-th value in array | + * | `:AAAA` | value `AAAA` or `:AAAA` | + * | `@AAAA` | value `@AAAA` | + * | `$AAAA` | value `$AAAA` | + * + * (see https://www.sqlite.org/lang_expr.html) + * + * Values may only be of the following + * types and are converted as follows: + * + * | JS in | SQL type | JS out | + * |------------|-----------------|------------------| + * | number | INTEGER or REAL | number or bigint | + * | bigint | INTEGER | number or bigint | + * | boolean | INTEGER | number | + * | string | TEXT | string | + * | Date | TEXT | string | + * | Uint8Array | BLOB | Uint8Array | + * | null | NULL | null | + * | undefined | NULL | null | + * + * If no value is provided to a given parameter, + * SQLite will default to NULL. + * + * If a `bigint` is bound, it is converted to a + * signed 64 big integer, which may not be lossless. + * If an integer value is read from the database, which + * is too big to safely be contained in a `number`, it + * is automatically returned as a `bigint`. + * + * If a `Date` is bound, it will be converted to + * an ISO 8601 string: `YYYY-MM-DDTHH:MM:SS.SSSZ`. + * This format is understood by built-in SQLite + * date-time functions. Also see + * https://sqlite.org/lang_datefunc.html. + * + * This always returns an iterable Rows object. + * As a special case, if the query has no rows + * to return this returns the Empty row (which + * is also iterable, but has zero entries). + * + * !> Any returned Rows object needs to be fully + * iterated over or discarded by calling + * `.return()` or closing the iterator. + */ + query(sql: string, values?: object | QueryParam[]): Rows { + if (!this._open) { + throw new SqliteError("Database was closed."); + } + + // Prepare sqlite query statement + let stmt: number = Values.Null; + setStr(this._wasm, sql, (ptr) => { + stmt = this._wasm.prepare(ptr); + }); + if (stmt === Values.Null) { + throw this._error(); + } + + // Prepare parameter array + let parameters: any[] = []; + if (Array.isArray(values)) { + parameters = values; + } else if (typeof values === "object") { + // Resolve parameter index for named values + for (const key of Object.keys(values)) { + let idx = Values.Error; + // Prepend ':' to name, if it does not have a special starting character + let name = key; + if (name[0] !== ":" && name[0] !== "@" && name[0] !== "$") { + name = `:${name}`; + } + setStr(this._wasm, name, (ptr) => { + idx = this._wasm.bind_parameter_index(stmt, ptr); + }); + if (idx === Values.Error) { + this._wasm.finalize(stmt); + throw new SqliteError(`No parameter named '${name}'.`); + } + parameters[idx - 1] = (values as any)[key]; + } + } + + // Bind parameters + for (let i = 0; i < parameters.length; i++) { + let value = parameters[i]; + let status; + switch (typeof value) { + case "boolean": + value = value ? 1 : 0; + // fall through + case "number": + if (Number.isSafeInteger(value)) { + status = this._wasm.bind_int(stmt, i + 1, value); + } else { + status = this._wasm.bind_double(stmt, i + 1, value); + } + break; + case "bigint": + // bigint is bound as a string and converted to i64 on C side + setStr(this._wasm, value.toString(), (ptr) => { + status = this._wasm.bind_big_int(stmt, i + 1, ptr); + }); + break; + case "string": + setStr(this._wasm, value, (ptr) => { + status = this._wasm.bind_text(stmt, i + 1, ptr); + }); + break; + default: + if (value instanceof Date) { + // Dates are allowed and bound to TEXT, formatted `YYYY-MM-DDTHH:MM:SS.SSSZ` + setStr(this._wasm, value.toISOString(), (ptr) => { + status = this._wasm.bind_text(stmt, i + 1, ptr); + }); + } else if (value instanceof Uint8Array) { + // Uint8Arrays are allowed and bound to BLOB + setArr(this._wasm, value, (ptr) => { + status = this._wasm.bind_blob(stmt, i + 1, ptr, value.length); + }); + } else if (value === null || value === undefined) { + // Both null and undefined result in a NULL entry + status = this._wasm.bind_null(stmt, i + 1); + } else { + this._wasm.finalize(stmt); + throw new SqliteError(`Can not bind ${typeof value}.`); + } + break; + } + if (status !== Status.SqliteOk) { + this._wasm.finalize(stmt); + throw this._error(status); + } + } + + // Step once to handle case where result is empty + const status = this._wasm.step(stmt); + switch (status) { + case Status.SqliteDone: + this._wasm.finalize(stmt); + return Empty; + break; + case Status.SqliteRow: + const transaction = new Rows(this, stmt); + this._transactions.add(transaction); + return transaction; + break; + default: + this._wasm.finalize(stmt); + throw this._error(status); + break; + } + } + + /** + * DB.close + * + * Close database handle. This must be called if + * DB is no longer used, to avoid leaking file + * resources. + * + * If force is specified, any on-going transactions + * will be closed. + */ + close(force: boolean = false) { + if (!this._open) { + return; + } + if (force) { + for (const transaction of this._transactions) { + transaction.return(); + } + } + if (this._wasm.close() !== Status.SqliteOk) { + throw this._error(); + } + this._open = false; + } + + /** + * DB.lastInsertRowId + * + * Get last inserted row id. This corresponds to + * the SQLite function `sqlite3_last_insert_rowid`. + * + * By default, it will return 0 if there is no row + * inserted yet. + */ + get lastInsertRowId(): number { + return this._wasm.last_insert_rowid(); + } + + /** + * DB.changes + * + * Return the number of rows modified, inserted or + * deleted by the most recently completed query. + * This corresponds to the SQLite function + * `sqlite3_changes`. + */ + get changes(): number { + return this._wasm.changes(); + } + + /** + * DB.totalChanges + * + * Return the number of rows modified, inserted or + * deleted since the database was opened. + * This corresponds to the SQLite function + * `sqlite3_total_changes`. + */ + get totalChanges(): number { + return this._wasm.total_changes(); + } + + private _error(code?: number): SqliteError { + if (code === undefined) { + code = this._wasm.get_status() as number; + } + const msg = getStr(this._wasm, this._wasm.get_sqlite_error_str()); + return new SqliteError(msg, code); + } +} diff --git a/bundler/tests/.cache/deno/7ca5bbc16be57c84d9cdf891977f1335743cb15b.ts b/bundler/tests/.cache/deno/7ca5bbc16be57c84d9cdf891977f1335743cb15b.ts new file mode 100644 index 00000000000..b951f5928a2 --- /dev/null +++ b/bundler/tests/.cache/deno/7ca5bbc16be57c84d9cdf891977f1335743cb15b.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.67.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_UPPERCASE_A, + CHAR_LOWERCASE_A, + CHAR_UPPERCASE_Z, + CHAR_LOWERCASE_Z, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_BACKWARD_SLASH, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/7ce870403c4d6de06afba28d120adead7c745740.ts b/bundler/tests/.cache/deno/7ce870403c4d6de06afba28d120adead7c745740.ts new file mode 100644 index 00000000000..0464496b828 --- /dev/null +++ b/bundler/tests/.cache/deno/7ce870403c4d6de06afba28d120adead7c745740.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_objectIs.js + + +// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is +function _objectIs(a, b) { + // SameValue algorithm + if (a === b) { // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return a !== 0 || 1 / a === 1 / b; + } else { + // Step 6.a: NaN == NaN + return a !== a && b !== b; + } +} + +export default typeof Object.is === 'function' ? Object.is : _objectIs; diff --git a/bundler/tests/.cache/deno/7cf98f205bef3b9638a9a9a5478a8e7a8015640d.ts b/bundler/tests/.cache/deno/7cf98f205bef3b9638a9a9a5478a8e7a8015640d.ts new file mode 100644 index 00000000000..645b52ce5f6 --- /dev/null +++ b/bundler/tests/.cache/deno/7cf98f205bef3b9638a9a9a5478a8e7a8015640d.ts @@ -0,0 +1,105 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/connectors/mysql-connector.ts + + +import { MySQLClient, MySQLConnection } from "../../deps.ts"; +import type { Connector, ConnectorOptions } from "./connector.ts"; +import { SQLTranslator } from "../translators/sql-translator.ts"; +import type { QueryDescription } from "../query-builder.ts"; + +export interface MySQLOptions extends ConnectorOptions { + database: string; + host: string; + username: string; + password: string; + port?: number; +} + +export class MySQLConnector implements Connector { + _client: MySQLClient; + _options: MySQLOptions; + _translator: SQLTranslator; + _connected = false; + + /** Create a MySQL connection. */ + constructor(options: MySQLOptions) { + this._options = options; + this._client = new MySQLClient(); + this._translator = new SQLTranslator("mysql"); + } + + async _makeConnection() { + if (this._connected) { + return; + } + + await this._client.connect({ + hostname: this._options.host, + username: this._options.username, + db: this._options.database, + password: this._options.password, + port: this._options.port ?? 3306, + }); + + this._connected = true; + } + + async ping() { + await this._makeConnection(); + + try { + const [{ result }] = await this._client.query("SELECT 1 + 1 as result"); + return result === 2; + } catch (error) { + return false; + } + } + + async query( + queryDescription: QueryDescription, + client?: MySQLClient | MySQLConnection, + ): Promise { + await this._makeConnection(); + + const queryClient = client ?? this._client; + const query = this._translator.translateToQuery(queryDescription); + const subqueries = query.split(";"); + const queryMethod = query.toLowerCase().startsWith("select") + ? "query" + : "execute"; + + for (let i = 0; i < subqueries.length; i++) { + const result = await queryClient[queryMethod](subqueries[i]); + + if (i === subqueries.length - 1) { + return result; + } + } + } + + async transaction(queries: QueryDescription[]): Promise { + if (queries.length === 0) { + return []; + } + + const results = await this._client.transaction(async (transaction) => { + const lastQuery = queries.pop()!; + + for (const query of queries) { + await this.query(query, transaction); + } + + return this.query(lastQuery, transaction); + }); + + return results as any; + } + + async close() { + if (!this._connected) { + return; + } + + await this._client.close(); + this._connected = false; + } +} diff --git a/bundler/tests/.cache/deno/7d321a0a4adba33947519f81b8af557bb503605c.ts b/bundler/tests/.cache/deno/7d321a0a4adba33947519f81b8af557bb503605c.ts new file mode 100644 index 00000000000..fa067144a24 --- /dev/null +++ b/bundler/tests/.cache/deno/7d321a0a4adba33947519f81b8af557bb503605c.ts @@ -0,0 +1,146 @@ +// Loaded from https://deno.land/x/oak/content_disposition.ts + + +/** + * Adapted directly from content-disposition.js at + * https://github.com/Rob--W/open-in-browser/blob/master/extension/content-disposition.js + * which is licensed as: + * + * (c) 2017 Rob Wu (https://robwu.nl) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { toParamRegExp, unquote } from "./headers.ts"; + +let needsEncodingFixup = false; + +function fixupEncoding(value: string): string { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textDecode("utf-8", value); + if (needsEncodingFixup) { + value = textDecode("iso-8859-1", value); + } + } + return value; +} + +const FILENAME_STAR_REGEX = toParamRegExp("filename\\*", "i"); +const FILENAME_START_ITER_REGEX = toParamRegExp( + "filename\\*((?!0\\d)\\d+)(\\*?)", + "ig", +); +const FILENAME_REGEX = toParamRegExp("filename", "i"); + +function rfc2047decode(value: string): string { + // deno-lint-ignore no-control-regex + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + return value.replace( + /=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, + (_: string, charset: string, encoding: string, text: string) => { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace( + /=([0-9a-fA-F]{2})/g, + (_, hex) => String.fromCharCode(parseInt(hex, 16)), + ); + return textDecode(charset, text); + } + try { + text = atob(text); + // deno-lint-ignore no-empty + } catch {} + return textDecode(charset, text); + }, + ); +} + +function rfc2231getParam(header: string): string { + const matches: [string, string][] = []; + let match: RegExpExecArray | null; + while ((match = FILENAME_START_ITER_REGEX.exec(header))) { + const [, ns, quote, part] = match; + const n = parseInt(ns, 10); + if (n in matches) { + if (n === 0) { + break; + } + continue; + } + matches[n] = [quote, part]; + } + const parts: string[] = []; + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + let [quote, part] = matches[n]; + part = unquote(part); + if (quote) { + part = unescape(part); + if (n === 0) { + part = rfc5987decode(part); + } + } + parts.push(part); + } + return parts.join(""); +} + +function rfc5987decode(value: string): string { + const encodingEnd = value.indexOf(`'`); + if (encodingEnd === -1) { + return value; + } + const encoding = value.slice(0, encodingEnd); + const langValue = value.slice(encodingEnd + 1); + return textDecode(encoding, langValue.replace(/^[^']*'/, "")); +} + +function textDecode(encoding: string, value: string): string { + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { fatal: true }); + const bytes = Array.from(value, (c) => c.charCodeAt(0)); + if (bytes.every((code) => code <= 0xFF)) { + value = decoder.decode(new Uint8Array(bytes)); + needsEncodingFixup = false; + } + // deno-lint-ignore no-empty + } catch {} + } + return value; +} + +export function getFilename(header: string): string { + needsEncodingFixup = true; + + // filename*=ext-value ("ext-value" from RFC 5987, referenced by RFC 6266). + let matches = FILENAME_STAR_REGEX.exec(header); + if (matches) { + const [, filename] = matches; + return fixupEncoding( + rfc2047decode(rfc5987decode(unescape(unquote(filename)))), + ); + } + + // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1). + // filename*n*=part + // filename*n=part + const filename = rfc2231getParam(header); + if (filename) { + return fixupEncoding(rfc2047decode(filename)); + } + + // filename=value (RFC 5987, section 4.1). + matches = FILENAME_REGEX.exec(header); + if (matches) { + const [, filename] = matches; + return fixupEncoding(rfc2047decode(unquote(filename))); + } + + return ""; +} diff --git a/bundler/tests/.cache/deno/7d816bc760832c0fe6bc2230610af872d6e7d6df.ts b/bundler/tests/.cache/deno/7d816bc760832c0fe6bc2230610af872d6e7d6df.ts new file mode 100644 index 00000000000..d22195f8f6a --- /dev/null +++ b/bundler/tests/.cache/deno/7d816bc760832c0fe6bc2230610af872d6e7d6df.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISSN.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const issn = '^\\d{4}-?\\d{3}[\\dX]$'; + +type ISSNOptions = { + requireHyphen?: boolean; + caseSensitive?: boolean; +}; + +export const isISSN = (str: string, options: ISSNOptions = {}) => { + assertString(str); + let testIssn = issn; + + testIssn = options.requireHyphen ? testIssn.replace('?', '') : testIssn; + const testIssnRegex = options.caseSensitive + ? new RegExp(testIssn) + : new RegExp(testIssn, 'i'); + + if (!testIssnRegex.test(str)) { + return false; + } + + const digits = str.replace('-', '').toUpperCase(); + let checksum = 0; + for (let i = 0; i < digits.length; i++) { + const digit = digits[i]; + checksum += (digit === 'X' ? 10 : +digit) * (8 - i); + } + return checksum % 11 === 0; +}; diff --git a/bundler/tests/.cache/deno/7dbb802a102789227da04940da0f89fc2919e418.ts b/bundler/tests/.cache/deno/7dbb802a102789227da04940da0f89fc2919e418.ts new file mode 100644 index 00000000000..d95f4439036 --- /dev/null +++ b/bundler/tests/.cache/deno/7dbb802a102789227da04940da0f89fc2919e418.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema/default.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { binary, merge, omap, pairs, set, timestamp } from "../type/mod.ts"; +import { core } from "./core.ts"; + +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +export const def = new Schema({ + explicit: [binary, omap, pairs, set], + implicit: [timestamp, merge], + include: [core], +}); diff --git a/bundler/tests/.cache/deno/7e17928999646c49e71cacee35d6f7300f2ed537.ts b/bundler/tests/.cache/deno/7e17928999646c49e71cacee35d6f7300f2ed537.ts new file mode 100644 index 00000000000..d4f9bb84a0c --- /dev/null +++ b/bundler/tests/.cache/deno/7e17928999646c49e71cacee35d6f7300f2ed537.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMagnetURI.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const magnetURI = /^magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32,40}&dn=.+&tr=.+$/i; + +export const isMagnetURI = (url: string) => { + assertString(url); + return magnetURI.test(url.trim()); +}; diff --git a/bundler/tests/.cache/deno/7e1e03ae78ebbfe81bfa16175375dc339d7de73c.ts b/bundler/tests/.cache/deno/7e1e03ae78ebbfe81bfa16175375dc339d7de73c.ts new file mode 100644 index 00000000000..408d8ed1b14 --- /dev/null +++ b/bundler/tests/.cache/deno/7e1e03ae78ebbfe81bfa16175375dc339d7de73c.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/complement.js + + +import lift from './lift.js'; +import not from './not.js'; + + +/** + * Takes a function `f` and returns a function `g` such that if called with the same arguments + * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`. + * + * `R.complement` may be applied to any functor + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> *) -> (*... -> Boolean) + * @param {Function} f + * @return {Function} + * @see R.not + * @example + * + * const isNotNil = R.complement(R.isNil); + * R.isNil(null); //=> true + * isNotNil(null); //=> false + * R.isNil(7); //=> false + * isNotNil(7); //=> true + */ +var complement = lift(not); +export default complement; diff --git a/bundler/tests/.cache/deno/7e65ba6a1badcbf82337f6ce08d7db46840f01b6.ts b/bundler/tests/.cache/deno/7e65ba6a1badcbf82337f6ce08d7db46840f01b6.ts new file mode 100644 index 00000000000..87a20507b84 --- /dev/null +++ b/bundler/tests/.cache/deno/7e65ba6a1badcbf82337f6ce08d7db46840f01b6.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case/snakeCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function snakeCase(value: string, locale?: string): string { + return normalCase(value, locale, "_"); +} diff --git a/bundler/tests/.cache/deno/7e6975a3e1e93bcf7fd065bd50aeb3ba090febed.ts b/bundler/tests/.cache/deno/7e6975a3e1e93bcf7fd065bd50aeb3ba090febed.ts new file mode 100644 index 00000000000..b6cbb8a5a0c --- /dev/null +++ b/bundler/tests/.cache/deno/7e6975a3e1e93bcf7fd065bd50aeb3ba090febed.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/case/constantCase.ts + + +import upperCase from "./upperCase.ts"; +import snakeCase from "./snakeCase.ts"; + +export default function constantCase(value: string, locale?: string): string { + return upperCase(snakeCase(value, locale), locale); +} diff --git a/bundler/tests/.cache/deno/7e9135591954e3f36b2ad538edca5efb30c5f399.ts b/bundler/tests/.cache/deno/7e9135591954e3f36b2ad538edca5efb30c5f399.ts new file mode 100644 index 00000000000..3be19a93e26 --- /dev/null +++ b/bundler/tests/.cache/deno/7e9135591954e3f36b2ad538edca5efb30c5f399.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/std/fs/ensure_link.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export async function ensureLink(src: string, dest: string): Promise { + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + await Deno.link(src, dest); +} + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export function ensureLinkSync(src: string, dest: string): void { + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + + Deno.linkSync(src, dest); +} diff --git a/bundler/tests/.cache/deno/7ed31e79626ae13ed08a2ad28a04566f63b8209e.ts b/bundler/tests/.cache/deno/7ed31e79626ae13ed08a2ad28a04566f63b8209e.ts new file mode 100644 index 00000000000..e2f0f04d948 --- /dev/null +++ b/bundler/tests/.cache/deno/7ed31e79626ae13ed08a2ad28a04566f63b8209e.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/flip.js + + +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; + + +/** + * Returns a new function much like the supplied one, except that the first two + * arguments' order is reversed. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z) + * @param {Function} fn The function to invoke with its first two parameters reversed. + * @return {*} The result of invoking `fn` with its first two parameters' order reversed. + * @example + * + * const mergeThree = (a, b, c) => [].concat(a, b, c); + * + * mergeThree(1, 2, 3); //=> [1, 2, 3] + * + * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] + * @symb R.flip(f)(a, b, c) = f(b, a, c) + */ +var flip = _curry1(function flip(fn) { + return curryN(fn.length, function(a, b) { + var args = Array.prototype.slice.call(arguments, 0); + args[0] = b; + args[1] = a; + return fn.apply(this, args); + }); +}); +export default flip; diff --git a/bundler/tests/.cache/deno/7f01369bec49c7c256617f9c898a2237480d78d3.ts b/bundler/tests/.cache/deno/7f01369bec49c7c256617f9c898a2237480d78d3.ts new file mode 100644 index 00000000000..58cf16a7755 --- /dev/null +++ b/bundler/tests/.cache/deno/7f01369bec49c7c256617f9c898a2237480d78d3.ts @@ -0,0 +1,67 @@ +// Loaded from https://deno.land/std@0.86.0/io/streams.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Create a `Writer` from a `WritableStreamDefaultReader`. */ +export function writerFromStreamWriter( + streamWriter: WritableStreamDefaultWriter, +): Deno.Writer { + return { + async write(p: Uint8Array): Promise { + await streamWriter.ready; + await streamWriter.write(p); + return p.length; + }, + }; +} + +/** Create a `Reader` from a `ReadableStreamDefaultReader`. */ +export function readerFromStreamReader( + streamReader: ReadableStreamDefaultReader, +): Deno.Reader { + const buffer = new Deno.Buffer(); + + return { + async read(p: Uint8Array): Promise { + if (buffer.empty()) { + const res = await streamReader.read(); + if (res.done) { + return null; // EOF + } + + await Deno.writeAll(buffer, res.value); + } + + return buffer.read(p); + }, + }; +} + +/** Create a `WritableStream` from a `Writer`. */ +export function writableStreamFromWriter( + writer: Deno.Writer, +): WritableStream { + return new WritableStream({ + async write(chunk) { + await Deno.writeAll(writer, chunk); + }, + }); +} + +/** Create a `ReadableStream` from an `AsyncIterator`. */ +export function readableStreamFromAsyncIterator( + iterator: AsyncIterableIterator, +): ReadableStream { + return new ReadableStream({ + async pull(controller) { + const { value, done } = await iterator.next(); + + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + }); +} diff --git a/bundler/tests/.cache/deno/7f7e7afce1432e6216cfaf131c293d8014e1cf77.ts b/bundler/tests/.cache/deno/7f7e7afce1432e6216cfaf131c293d8014e1cf77.ts new file mode 100644 index 00000000000..4369f4c1202 --- /dev/null +++ b/bundler/tests/.cache/deno/7f7e7afce1432e6216cfaf131c293d8014e1cf77.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/mysql/src/auth_plugin/index.ts + + +import * as caching_sha2_password from "./caching_sha2_password.ts"; +export default { + caching_sha2_password, +}; diff --git a/bundler/tests/.cache/deno/7f9c4f913f47c870b1038321feaa3e30417427f5.ts b/bundler/tests/.cache/deno/7f9c4f913f47c870b1038321feaa3e30417427f5.ts new file mode 100644 index 00000000000..eccf0c278fd --- /dev/null +++ b/bundler/tests/.cache/deno/7f9c4f913f47c870b1038321feaa3e30417427f5.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/or.js + + +import _curry2 from './internal/_curry2.js'; + +/** + * Returns `true` if one or both of its arguments are `true`. Returns `false` + * if both arguments are `false`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if truthy, otherwise the second argument. + * @see R.either, R.and + * @example + * + * R.or(true, true); //=> true + * R.or(true, false); //=> true + * R.or(false, true); //=> true + * R.or(false, false); //=> false + */ +var or = _curry2(function or(a, b) { + return a || b; +}); +export default or; diff --git a/bundler/tests/.cache/deno/7fa8cd676047f7f29262998a0ee917bd73d3f8f8.ts b/bundler/tests/.cache/deno/7fa8cd676047f7f29262998a0ee917bd73d3f8f8.ts new file mode 100644 index 00000000000..725f87c1c17 --- /dev/null +++ b/bundler/tests/.cache/deno/7fa8cd676047f7f29262998a0ee917bd73d3f8f8.ts @@ -0,0 +1,139 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/binary.ts + + +// Ported from js-yaml v3.13.1: +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +const BASE64_MAP = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; + +function resolveYamlBinary(data: Any): boolean { + if (data === null) return false; + + let code: number; + let bitlen = 0; + const max = data.length; + const map = BASE64_MAP; + + // Convert one by one. + for (let idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return bitlen % 8 === 0; +} + +function constructYamlBinary(data: string): Deno.Buffer { + // remove CR/LF & padding to simplify scan + const input = data.replace(/[\r\n=]/g, ""); + const max = input.length; + const map = BASE64_MAP; + + // Collect by 6*4 bits (3 bytes) + + const result = []; + let bits = 0; + for (let idx = 0; idx < max; idx++) { + if (idx % 4 === 0 && idx) { + result.push((bits >> 16) & 0xff); + result.push((bits >> 8) & 0xff); + result.push(bits & 0xff); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + const tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xff); + result.push((bits >> 8) & 0xff); + result.push(bits & 0xff); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xff); + result.push((bits >> 2) & 0xff); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xff); + } + + return new Deno.Buffer(new Uint8Array(result)); +} + +function representYamlBinary(object: Uint8Array): string { + const max = object.length; + const map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + let result = ""; + let bits = 0; + for (let idx = 0; idx < max; idx++) { + if (idx % 3 === 0 && idx) { + result += map[(bits >> 18) & 0x3f]; + result += map[(bits >> 12) & 0x3f]; + result += map[(bits >> 6) & 0x3f]; + result += map[bits & 0x3f]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + const tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3f]; + result += map[(bits >> 12) & 0x3f]; + result += map[(bits >> 6) & 0x3f]; + result += map[bits & 0x3f]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3f]; + result += map[(bits >> 4) & 0x3f]; + result += map[(bits << 2) & 0x3f]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3f]; + result += map[(bits << 4) & 0x3f]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(obj: Any): obj is Deno.Buffer { + const buf = new Deno.Buffer(); + try { + if (0 > buf.readFromSync(obj as Deno.Buffer)) return true; + return false; + } catch { + return false; + } finally { + buf.reset(); + } +} + +export const binary = new Type("tag:yaml.org,2002:binary", { + construct: constructYamlBinary, + kind: "scalar", + predicate: isBinary, + represent: representYamlBinary, + resolve: resolveYamlBinary, +}); diff --git a/bundler/tests/.cache/deno/7faac7b86f16e26d4cf5cf5dad053117f49c4877.ts b/bundler/tests/.cache/deno/7faac7b86f16e26d4cf5cf5dad053117f49c4877.ts new file mode 100644 index 00000000000..604783298bd --- /dev/null +++ b/bundler/tests/.cache/deno/7faac7b86f16e26d4cf5cf5dad053117f49c4877.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/VariablesInAllowedPositionRule.js + + +import inspect from '../../jsutils/inspect.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { isNonNullType } from '../../type/definition.js'; +import { typeFromAST } from '../../utilities/typeFromAST.js'; +import { isTypeSubTypeOf } from '../../utilities/typeComparators.js'; + +/** + * Variables passed to field arguments conform to type + */ +export function VariablesInAllowedPositionRule(context) { + let varDefMap = Object.create(null); + return { + OperationDefinition: { + enter() { + varDefMap = Object.create(null); + }, + + leave(operation) { + const usages = context.getRecursiveVariableUsages(operation); + + for (const { + node, + type, + defaultValue + } of usages) { + const varName = node.name.value; + const varDef = varDefMap[varName]; + + if (varDef && type) { + // A var type is allowed if it is the same or more strict (e.g. is + // a subtype of) than the expected type. It can be more strict if + // the variable type is non-null when the expected type is nullable. + // If both are list types, the variable item type can be more strict + // than the expected item type (contravariant). + const schema = context.getSchema(); + const varType = typeFromAST(schema, varDef.type); + + if (varType && !allowedVariableUsage(schema, varType, varDef.defaultValue, type, defaultValue)) { + const varTypeStr = inspect(varType); + const typeStr = inspect(type); + context.reportError(new GraphQLError(`Variable "$${varName}" of type "${varTypeStr}" used in position expecting type "${typeStr}".`, [varDef, node])); + } + } + } + } + + }, + + VariableDefinition(node) { + varDefMap[node.variable.name.value] = node; + } + + }; +} +/** + * Returns true if the variable is allowed in the location it was found, + * which includes considering if default values exist for either the variable + * or the location at which it is located. + */ + +function allowedVariableUsage(schema, varType, varDefaultValue, locationType, locationDefaultValue) { + if (isNonNullType(locationType) && !isNonNullType(varType)) { + const hasNonNullVariableDefaultValue = varDefaultValue != null && varDefaultValue.kind !== Kind.NULL; + const hasLocationDefaultValue = locationDefaultValue !== undefined; + + if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) { + return false; + } + + const nullableLocationType = locationType.ofType; + return isTypeSubTypeOf(schema, varType, nullableLocationType); + } + + return isTypeSubTypeOf(schema, varType, locationType); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/7fb9ab46a6bdc3718b6d297ce2eacf806691d512.ts b/bundler/tests/.cache/deno/7fb9ab46a6bdc3718b6d297ce2eacf806691d512.ts new file mode 100644 index 00000000000..d194e178ee6 --- /dev/null +++ b/bundler/tests/.cache/deno/7fb9ab46a6bdc3718b6d297ce2eacf806691d512.ts @@ -0,0 +1,81 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/textTable.ts + + +export function textTable(headings: string[], cells: string[][]): string { + const corners = [["┌", "┐"], ["└", "┘"]]; + const hbar = "─"; + const vbar = "│"; + const ttop = "┬"; + const tbottom = "┴"; + const cross = "┼"; + const tleft = "├"; + const tright = "┤"; + const maxWidths: number[] = headings.map((t) => t.length); + for (const row of cells) { + let colInd = 0; + for (const col of row) { + maxWidths[colInd] = Math.max(maxWidths[colInd], col.length); + ++colInd; + } + } + const output: string[] = []; + // corner & top bars + { + const textrow: string[] = []; + textrow.push(corners[0][0]); + textrow.push(maxWidths.map((n) => hbar.repeat(n + 2)).join(ttop)); + textrow.push(corners[0][1]); + output.push(textrow.join("")); + } + // mid + { + const textrow: string[] = []; + textrow.push(vbar); + textrow.push( + headings.map((h, i) => { + const curLength = h.length; + const maxWidth = maxWidths[i]; + const curSpaces = (maxWidth - curLength); + const spaceBefore = Math.floor(curSpaces / 2); + const spaceAfter = curSpaces - spaceBefore; + return " ".repeat(1 + spaceBefore) + h + " ".repeat(1 + spaceAfter); + }).join(vbar), + ); + textrow.push(vbar); + output.push(textrow.join("")); + } + // cross bar + { + const textrow: string[] = []; + textrow.push(tleft); + textrow.push(maxWidths.map((n) => hbar.repeat(n + 2)).join(cross)); + textrow.push(tright); + output.push(textrow.join("")); + } + // cells + for (const row of cells) { + const textrow: string[] = []; + textrow.push(vbar); + textrow.push( + row.map((t, i) => { + const curLength = t.length; + const maxWidth = maxWidths[i]; + const curSpaces = (maxWidth - curLength); + const spaceBefore = Math.floor(curSpaces / 2); + const spaceAfter = curSpaces - spaceBefore; + return " ".repeat(1 + spaceBefore) + t + " ".repeat(1 + spaceAfter); + }).join(vbar), + ); + textrow.push(vbar); + output.push(textrow.join("")); + } + // corner & bottom bars + { + const textrow: string[] = []; + textrow.push(corners[1][0]); + textrow.push(maxWidths.map((n) => hbar.repeat(n + 2)).join(tbottom)); + textrow.push(corners[1][1]); + output.push(textrow.join("")); + } + return output.join("\n"); +} diff --git a/bundler/tests/.cache/deno/7fd52323a08a88e89c1ff539603f0eed75300fee.ts b/bundler/tests/.cache/deno/7fd52323a08a88e89c1ff539603f0eed75300fee.ts new file mode 100644 index 00000000000..e1c7ace6889 --- /dev/null +++ b/bundler/tests/.cache/deno/7fd52323a08a88e89c1ff539603f0eed75300fee.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isAfter.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { toDate } from '../helpers/toDate.ts'; + +export const isAfter = (str: string, date = String(new Date())) => { + assertString(str); + + const comparison = toDate(date); + const original = toDate(str); + + // this is against standardx and gts but it converts it into a boolean + // cannot use the toBoolean method here, as it expects a string + return !!(original && comparison && original > comparison); +}; diff --git a/bundler/tests/.cache/deno/8005a6d40f4bc8caf70c58603c1a2135d75706ef.ts b/bundler/tests/.cache/deno/8005a6d40f4bc8caf70c58603c1a2135d75706ef.ts new file mode 100644 index 00000000000..0646777bd16 --- /dev/null +++ b/bundler/tests/.cache/deno/8005a6d40f4bc8caf70c58603c1a2135d75706ef.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std@0.81.0/bytes/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/800e0269d9d6f5d1befea624dae464b66a63e24c.ts b/bundler/tests/.cache/deno/800e0269d9d6f5d1befea624dae464b66a63e24c.ts new file mode 100644 index 00000000000..b69bc1070a3 --- /dev/null +++ b/bundler/tests/.cache/deno/800e0269d9d6f5d1befea624dae464b66a63e24c.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/media_types@v2.7.1/deps.ts + + +// Copyright 2020 the oak authors. All rights reserved. MIT license. + +export { extname } from "https://deno.land/std@0.84.0/path/mod.ts"; diff --git a/bundler/tests/.cache/deno/80581649dac8affe51fcf5a43235883217da2b0a.ts b/bundler/tests/.cache/deno/80581649dac8affe51fcf5a43235883217da2b0a.ts new file mode 100644 index 00000000000..e892efed6f1 --- /dev/null +++ b/bundler/tests/.cache/deno/80581649dac8affe51fcf5a43235883217da2b0a.ts @@ -0,0 +1,437 @@ +// Loaded from https://deno.land/x/args@1.0.7/command-types.ts + + +import { + once, +} from "./deps.ts"; + +import { + ArgvItem, + ParseError, + FlagType, +} from "./types.ts"; + +import { + record, +} from "./utils.ts"; + +import { + MAIN_COMMAND, + PARSE_FAILURE, +} from "./symbols.ts"; + +import { + CommandError, +} from "./command-errors.ts"; + +interface ExtraProps { + remaining(): { + rawFlags(): readonly string[]; + rawValues(): readonly string[]; + rawArgs(): readonly string[]; + }; + readonly _: readonly string[]; +} + +function addExtraProps

; +}>(main: Main, args: readonly ArgvItem[]): Main & ExtraProps { + const remaining: ExtraProps["remaining"] = once(() => { + const { consumedArgs } = object; + const remainingArgs = args.filter((item) => !consumedArgs.has(item)); + const mapFn = (item: ArgvItem) => item.raw; + const rawArgs = once(() => remainingArgs.map(mapFn)); + const rawFlags = once( + () => + remainingArgs + .filter((item) => item.type !== "value") + .map(mapFn), + ); + const rawValues = once( + () => + remainingArgs + .filter((item) => item.type === "value") + .map(mapFn), + ); + return { + rawArgs, + rawFlags, + rawValues, + }; + }); + const object: Main & ExtraProps = { + get _() { + return this.remaining().rawArgs(); + }, + remaining, + ...main, + }; + return object; +} + +/** + * Success variant of `Command::extract` + * @template MainVal Type of main dictionary + * @template Name Command name + * @template Sub Type of subcommand dictionary + */ +export type CommandReturn< + MainVal, + Name extends string, + Sub extends CommandReturn, +> = CommandReturn.Main | CommandReturn.Sub; + +/** + * Failure variant of `Command::extract` + * @template ErrList Type of list of errors + */ +export type ParseFailure< + ErrList extends readonly ParseError[], +> = CommandReturn.Failure; + +/** + * Create a failure for `Command::extract` + * @template ErrList Type of list of errors + * @param error List of errors + * @returns A wrapper of `error` + */ +export const ParseFailure = < + ErrList extends readonly ParseError[], +>(error: ErrList): ParseFailure => ({ + tag: PARSE_FAILURE, + error: new CommandError(error), +}); + +export namespace CommandReturn { + interface Base { + /** Discriminant. Determine whether parsing result is from main command, sub command or failure */ + readonly tag: string | MAIN_COMMAND | PARSE_FAILURE; + /** Parsing result */ + readonly value?: unknown; + /** Parsing error */ + readonly error?: null | CommandError; + } + + interface SuccessBase extends Base, ExtraProps { + readonly tag: string | MAIN_COMMAND; + readonly value: Value; + readonly error?: null; + readonly consumedArgs: ReadonlySet; + } + + /** + * Interface of a main command variant + * @template Value Type of parsing result + */ + export interface Main extends SuccessBase { + readonly tag: MAIN_COMMAND; + } + + /** + * Interface of a sub command variant + * @template Name Type of subcommand name + * @template Value Type of wrapped main command + */ + export interface Sub< + Name extends string, + Value extends CommandReturn, + > extends SuccessBase { + readonly tag: Name; + } + + interface FailureBase< + ErrList extends readonly ParseError[], + > extends Base { + readonly tag: PARSE_FAILURE; + readonly error: CommandError; + readonly value?: null; + } + + /** + * Interface of parsing failure + * @template ErrList Type of list of errors + */ + export interface Failure + extends FailureBase {} +} + +/** + * Interface of a command parser + * @template Return Type of parsing result + * @template ErrList Possible types of list of errors + */ +export interface Command< + Return extends CommandReturn, + ErrList extends readonly ParseError[], +> { + /** + * Convert a list of classified arguments to parsing result + * @param args List of classified arguments + * @returns Parsing result + */ + extract(args: readonly ArgvItem[]): Return | ParseFailure; + + /** + * Describe the command in `--help` + * @returns An iterable of lines of help messages + */ + describe(): Iterable; + + /** + * All components to construct help message so far + * @param cmdPath Path to target subcommand + * @returns An iterable of components + */ + help(cmdPath: readonly string[]): Iterable; +} + +/** + * Interface of component of help message of command parser + */ +export interface CommandHelp { + /** Which section should this component be display under? */ + readonly category: string; + /** Title of the component */ + readonly title: string; + /** Content of the component */ + readonly description?: string; +} + +/** Type of value of {@link BLANK} */ +type BlankReturn = CommandReturn.Main<{}>; +/** Starting point of a command parser construction chain */ +export const BLANK: Command = ({ + extract: (args) => + addExtraProps({ + tag: MAIN_COMMAND, + value: {}, + consumedArgs: new Set(), + } as const, args), + describe: () => [], + *help(): Iterable { + for (const line of this.describe()) { + yield { + category: "DESCRIPTION", + title: line, + }; + } + }, +}); + +/** + * Assign description to a command parser during construction chain + * @param target Target of description assignment + * @param description Description to assign + * @returns A transitive "command parser" that does everything `target` does + */ +export const Describe = >( + target: Target, + description: string, +): Target => ({ + ...target, + describe: () => [description], +}); + +/** + * Type of value of {@link FlaggedCommand} + * @template MainVal Type of main dictionary + * @template NextKey Type of flag name + * @template NextVal Type of flag value + */ +export type FlaggedCommandReturn< + MainVal, + NextKey extends string, + NextVal, +> = CommandReturn.Main>; +/** + * Return type of `FlaggedCommand::extract` + * @template MainVal Type of main dictionary + * @template NextKey Type of flag name + * @template NextVal Type of flag value + */ +type FlaggedCommandExtract< + MainVal, + NextKey extends string, + NextVal, + ErrList extends readonly ParseError[], +> = FlaggedCommandReturn | ParseFailure< + ErrList | readonly [ParseError] +>; +/** + * Add a flag parser on top of existing command parser + * @template MainVal Type of main dictionary + * @template NextKey Type of flag name + * @template NextVal Type of flag value + * @template ErrList Possible type of list of errors + * @param main Targeted command parser + * @param flag Flag type to add + * @returns A command parser that does what `main` and `flag` do + */ +export const FlaggedCommand = < + MainVal, + NextKey extends string, + NextVal, + ErrList extends readonly ParseError[], +>( + main: Command, ErrList>, + flag: FlagType, +): Command< + FlaggedCommandReturn, + ErrList | readonly [ParseError] +> => ({ + extract(args): FlaggedCommandExtract { + const prevResult = main.extract(args); + if (prevResult.tag === PARSE_FAILURE) return prevResult; + const nextResult = flag.extract(args); + if (!nextResult.tag) return ParseFailure([nextResult.error]); + const value = { + ...prevResult.value, + ...record(flag.name, nextResult.value.value), + }; + const consumedArgs = new Set([ + ...prevResult.consumedArgs, + ...nextResult.value.consumedFlags, + ]); + return addExtraProps({ + tag: MAIN_COMMAND, + value, + consumedArgs, + } as const, args); + }, + describe: () => main.describe(), + *help(cmdPath): Iterable { + if (cmdPath.length) return; + yield* main.help(cmdPath); + yield { + category: "OPTIONS", + ...flag.help(), + }; + }, +}); + +/** + * Type of value of {@link SubCommand} + * @template Main Type of main wrapper + * @template Name Type of subcommand name + * @template Sub Subcommand parser + */ +export type SubCommandReturn< + Main extends CommandReturn, + Name extends string, + Sub extends CommandReturn, +> = Main | CommandReturn.Sub; +/** + * Declare add subcommand to existing command parser + * @template Main Type of main wrapper + * @template Name Type of subcommand name + * @template Sub Subcommand parser + * @template ErrList Possible type of list of errors + * @param main Main command parser + * @param name Subcommand name + * @param sub Subcommand parser + * @returns A command parser that parses either subcommand or main command + */ +export const SubCommand = < + Main extends CommandReturn, + Name extends string, + Sub extends CommandReturn, + ErrList extends readonly ParseError[], +>( + main: Command, + name: Name, + sub: Command, +): Command, ErrList> => ({ + extract(args): SubCommandReturn | ParseFailure { + if (args.length === 0) return main.extract(args); + const [first, ...rest] = args; + if (first.type !== "value" || first.raw !== name) return main.extract(args); + const result = sub.extract(rest.map((item, index) => ({ ...item, index }))); + if (result.tag === PARSE_FAILURE) return result as ParseFailure; + const value = result as Sub; + const consumedArgs = new Set([first, ...value.consumedArgs]); + return addExtraProps({ + tag: name, + consumedArgs, + value, + } as const, args) as CommandReturn.Sub; + }, + describe: () => main.describe(), + *help(cmdPath): Iterable { + if (cmdPath.length) { + const [first, ...rest] = cmdPath; + yield* first === name + ? sub.help(rest) + : main.help(cmdPath); + return; + } + + yield* main.help(cmdPath); + yield { + category: "SUBCOMMANDS", + title: name, + description: [...sub.describe()].join("\n"), + }; + }, +}); + +/** + * Type of value of {@link MergeCommand} + * @template LeftVal Type of left dictionary + * @template RightVal Type of right dictionary + */ +export type MergeCommandReturn< + LeftVal, + RightVal, +> = CommandReturn.Main; +/** + * Merge two command parsers + * @template LeftVal Type of left dictionary + * @template RightVal Type of right dictionary + * @template Error Type of element of error + * @param left Left command parser + * @param right Right command parser + * @returns A command parser that parses two sets of flags + */ +export const MergeCommand = < + LeftVal, + RightVal, + Error extends ParseError, +>( + left: Command, readonly Error[]>, + right: Command, readonly Error[]>, +): Command, readonly Error[]> => ({ + extract( + args, + ): MergeCommandReturn | ParseFailure { + const leftRes = left.extract(args); + const rightRes = right.extract(args); + if (leftRes.tag === MAIN_COMMAND && rightRes.tag === MAIN_COMMAND) { + const value = { ...leftRes.value, ...rightRes.value }; + const consumedArgs = new Set( + [...leftRes.consumedArgs, ...rightRes.consumedArgs], + ); + return addExtraProps({ + tag: MAIN_COMMAND, + value, + consumedArgs, + } as const, args); + } else { + const errors = [ + ...leftRes.error?.errors || [], + ...rightRes.error?.errors || [], + ]; + return { + tag: PARSE_FAILURE, + error: new CommandError(errors), + }; + } + }, + *describe(): Iterable { + yield* left.describe(); + yield* right.describe(); + }, + *help(cmdPath): Iterable { + yield* left.help(cmdPath); + yield* right.help(cmdPath); + }, +}); diff --git a/bundler/tests/.cache/deno/805a90266a6d4a5b289292fba043bdea1b49c9f8.ts b/bundler/tests/.cache/deno/805a90266a6d4a5b289292fba043bdea1b49c9f8.ts new file mode 100644 index 00000000000..a69565dc4ed --- /dev/null +++ b/bundler/tests/.cache/deno/805a90266a6d4a5b289292fba043bdea1b49c9f8.ts @@ -0,0 +1,82 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/mark.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { repeat } from "./utils.ts"; + +export class Mark { + constructor( + public name: string, + public buffer: string, + public position: number, + public line: number, + public column: number, + ) {} + + public getSnippet(indent = 4, maxLength = 75): string | null { + if (!this.buffer) return null; + + let head = ""; + let start = this.position; + + while ( + start > 0 && + "\x00\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1 + ) { + start -= 1; + if (this.position - start > maxLength / 2 - 1) { + head = " ... "; + start += 5; + break; + } + } + + let tail = ""; + let end = this.position; + + while ( + end < this.buffer.length && + "\x00\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1 + ) { + end += 1; + if (end - this.position > maxLength / 2 - 1) { + tail = " ... "; + end -= 5; + break; + } + } + + const snippet = this.buffer.slice(start, end); + return `${repeat(" ", indent)}${head}${snippet}${tail}\n${ + repeat( + " ", + indent + this.position - start + head.length, + ) + }^`; + } + + public toString(compact?: boolean): string { + let snippet, + where = ""; + + if (this.name) { + where += `in "${this.name}" `; + } + + where += `at line ${this.line + 1}, column ${this.column + 1}`; + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += `:\n${snippet}`; + } + } + + return where; + } +} diff --git a/bundler/tests/.cache/deno/806693eaf8249da89dbe5b5602a459c2b201e843.ts b/bundler/tests/.cache/deno/806693eaf8249da89dbe5b5602a459c2b201e843.ts new file mode 100644 index 00000000000..174bebe8b86 --- /dev/null +++ b/bundler/tests/.cache/deno/806693eaf8249da89dbe5b5602a459c2b201e843.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.77.0/encoding/base64.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +// deno-fmt-ignore +const base64abc = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", + "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", + "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", + "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", "+", "/"]; + +/** + * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 + * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation + * @param data + */ +export function encode(data: ArrayBuffer | string): string { + const uint8 = + typeof data === "string" + ? new TextEncoder().encode(data) + : data instanceof Uint8Array + ? data + : new Uint8Array(data); + let result = "", + i; + const l = uint8.length; + for (i = 2; i < l; i += 3) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[((uint8[i - 1] & 0x0f) << 2) | (uint8[i] >> 6)]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + // 1 octet yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + // 2 octets yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[((uint8[i - 2] & 0x03) << 4) | (uint8[i - 1] >> 4)]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} + +/** + * Decodes a given RFC4648 base64 encoded string + * @param b64 + */ +export function decode(b64: string): Uint8Array { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for (let i = 0; i < size; i++) { + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} diff --git a/bundler/tests/.cache/deno/80797233c86ee71f9bf0465b49d6765039d35241.ts b/bundler/tests/.cache/deno/80797233c86ee71f9bf0465b49d6765039d35241.ts new file mode 100644 index 00000000000..13628e272a3 --- /dev/null +++ b/bundler/tests/.cache/deno/80797233c86ee71f9bf0465b49d6765039d35241.ts @@ -0,0 +1,71 @@ +// Loaded from https://deno.land/std@0.85.0/async/pool.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * If an error is thrown from `iterableFn`, no new transformations will begin. + * All currently executing transformations are allowed to finish and still + * yielded on success. After that, the rejections among them are gathered and + * thrown by the iterator in an `AggregateError`. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + try { + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + // Only write on success. If we `writer.write()` a rejected promise, + // that will end the iteration. We don't want that yet. Instead let it + // fail the race, taking us to the catch block where all currently + // executing jobs are allowed to finish and all rejections among them + // can be reported together. + p.then((v) => writer.write(Promise.resolve(v))).catch(() => {}); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + } catch { + const errors = []; + for (const result of await Promise.allSettled(executing)) { + if (result.status == "rejected") { + errors.push(result.reason); + } + } + writer.write(Promise.reject( + new AggregateError(errors, "Threw while mapping."), + )).catch(() => {}); + } + })(); + return res.readable[Symbol.asyncIterator](); +} diff --git a/bundler/tests/.cache/deno/80e98ad1d69691a1006049cefb69176b0c3a630e.ts b/bundler/tests/.cache/deno/80e98ad1d69691a1006049cefb69176b0c3a630e.ts new file mode 100644 index 00000000000..58cde04adea --- /dev/null +++ b/bundler/tests/.cache/deno/80e98ad1d69691a1006049cefb69176b0c3a630e.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/groupBy.js + + +import _checkForMethod from './internal/_checkForMethod.js'; +import _curry2 from './internal/_curry2.js'; +import reduceBy from './reduceBy.js'; + +/** + * Splits a list into sub-lists stored in an object, based on the result of + * calling a key-returning function on each element, and grouping the + * results according to values returned. + * + * Dispatches to the `groupBy` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @typedefn Idx = String | Int | Symbol + * @sig Idx a => (b -> a) -> [b] -> {a: [b]} + * @param {Function} fn Function :: a -> Idx + * @param {Array} list The array to group + * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements + * that produced that key when passed to `fn`. + * @see R.reduceBy, R.transduce, R.indexBy + * @example + * + * const byGrade = R.groupBy(function(student) { + * const score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * const students = [{name: 'Abby', score: 84}, + * {name: 'Eddy', score: 58}, + * // ... + * {name: 'Jack', score: 69}]; + * byGrade(students); + * // { + * // 'A': [{name: 'Dianne', score: 99}], + * // 'B': [{name: 'Abby', score: 84}] + * // // ..., + * // 'F': [{name: 'Eddy', score: 58}] + * // } + */ +var groupBy = _curry2(_checkForMethod('groupBy', reduceBy(function(acc, item) { + if (acc == null) { + acc = []; + } + acc.push(item); + return acc; +}, null))); +export default groupBy; diff --git a/bundler/tests/.cache/deno/80f27cbd543cd8d4be680b68be6e0c5d6a04b9d5.ts b/bundler/tests/.cache/deno/80f27cbd543cd8d4be680b68be6e0c5d6a04b9d5.ts new file mode 100644 index 00000000000..40556ac05ca --- /dev/null +++ b/bundler/tests/.cache/deno/80f27cbd543cd8d4be680b68be6e0c5d6a04b9d5.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std@0.77.0/hash/_wasm/hash.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import init, { + source, + create_hash as createHash, + update_hash as updateHash, + digest_hash as digestHash, + DenoHash, +} from "./wasm.js"; + +import * as hex from "../../encoding/hex.ts"; +import * as base64 from "../../encoding/base64.ts"; +import type { Hasher, Message, OutputFormat } from "../hasher.ts"; + +await init(source); + +const TYPE_ERROR_MSG = "hash: `data` is invalid type"; + +export class Hash implements Hasher { + #hash: DenoHash; + #digested: boolean; + + constructor(algorithm: string) { + this.#hash = createHash(algorithm); + this.#digested = false; + } + + /** + * Update internal state + * @param data data to update + */ + update(data: Message): this { + let msg: Uint8Array; + + if (typeof data === "string") { + msg = new TextEncoder().encode(data as string); + } else if (typeof data === "object") { + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + msg = new Uint8Array(data); + } else { + throw new Error(TYPE_ERROR_MSG); + } + } else { + throw new Error(TYPE_ERROR_MSG); + } + + updateHash(this.#hash, msg); + + return this; + } + + /** Returns final hash */ + digest(): ArrayBuffer { + if (this.#digested) throw new Error("hash: already digested"); + + this.#digested = true; + return digestHash(this.#hash); + } + + /** + * Returns hash as a string of given format + * @param format format of output string (hex or base64). Default is hex + */ + toString(format: OutputFormat = "hex"): string { + const finalized = new Uint8Array(this.digest()); + + switch (format) { + case "hex": + return hex.encodeToString(finalized); + case "base64": + return base64.encode(finalized); + default: + throw new Error("hash: invalid format"); + } + } +} diff --git a/bundler/tests/.cache/deno/81481be06561c8a7d11b106a25d2ba74561c235b.ts b/bundler/tests/.cache/deno/81481be06561c8a7d11b106a25d2ba74561c235b.ts new file mode 100644 index 00000000000..41f1c56bafc --- /dev/null +++ b/bundler/tests/.cache/deno/81481be06561c8a7d11b106a25d2ba74561c235b.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/maxBy.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Takes a function and two values, and returns whichever value produces the + * larger result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.max, R.minBy + * @example + * + * // square :: Number -> Number + * const square = n => n * n; + * + * R.maxBy(square, -3, 2); //=> -3 + * + * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 + * R.reduce(R.maxBy(square), 0, []); //=> 0 + */ +var maxBy = _curry3(function maxBy(f, a, b) { + return f(b) > f(a) ? b : a; +}); +export default maxBy; diff --git a/bundler/tests/.cache/deno/818689de8c644d3a599c7a38fd4be5dd96f18bb1.ts b/bundler/tests/.cache/deno/818689de8c644d3a599c7a38fd4be5dd96f18bb1.ts new file mode 100644 index 00000000000..fab7fdce6ca --- /dev/null +++ b/bundler/tests/.cache/deno/818689de8c644d3a599c7a38fd4be5dd96f18bb1.ts @@ -0,0 +1,133 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/KnownDirectivesRule.js + + +import inspect from '../../jsutils/inspect.js'; +import invariant from '../../jsutils/invariant.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { DirectiveLocation } from '../../language/directiveLocation.js'; +import { specifiedDirectives } from '../../type/directives.js'; + +/** + * Known directives + * + * A GraphQL document is only valid if all `@directives` are known by the + * schema and legally positioned. + */ +export function KnownDirectivesRule(context) { + const locationsMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema ? schema.getDirectives() : specifiedDirectives; + + for (const directive of definedDirectives) { + locationsMap[directive.name] = directive.locations; + } + + const astDefinitions = context.getDocument().definitions; + + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + locationsMap[def.name.value] = def.locations.map(name => name.value); + } + } + + return { + Directive(node, _key, _parent, _path, ancestors) { + const name = node.name.value; + const locations = locationsMap[name]; + + if (!locations) { + context.reportError(new GraphQLError(`Unknown directive "@${name}".`, node)); + return; + } + + const candidateLocation = getDirectiveLocationForASTPath(ancestors); + + if (candidateLocation && locations.indexOf(candidateLocation) === -1) { + context.reportError(new GraphQLError(`Directive "@${name}" may not be used on ${candidateLocation}.`, node)); + } + } + + }; +} + +function getDirectiveLocationForASTPath(ancestors) { + const appliedTo = ancestors[ancestors.length - 1]; + invariant(!Array.isArray(appliedTo)); + + switch (appliedTo.kind) { + case Kind.OPERATION_DEFINITION: + return getDirectiveLocationForOperation(appliedTo.operation); + + case Kind.FIELD: + return DirectiveLocation.FIELD; + + case Kind.FRAGMENT_SPREAD: + return DirectiveLocation.FRAGMENT_SPREAD; + + case Kind.INLINE_FRAGMENT: + return DirectiveLocation.INLINE_FRAGMENT; + + case Kind.FRAGMENT_DEFINITION: + return DirectiveLocation.FRAGMENT_DEFINITION; + + case Kind.VARIABLE_DEFINITION: + return DirectiveLocation.VARIABLE_DEFINITION; + + case Kind.SCHEMA_DEFINITION: + case Kind.SCHEMA_EXTENSION: + return DirectiveLocation.SCHEMA; + + case Kind.SCALAR_TYPE_DEFINITION: + case Kind.SCALAR_TYPE_EXTENSION: + return DirectiveLocation.SCALAR; + + case Kind.OBJECT_TYPE_DEFINITION: + case Kind.OBJECT_TYPE_EXTENSION: + return DirectiveLocation.OBJECT; + + case Kind.FIELD_DEFINITION: + return DirectiveLocation.FIELD_DEFINITION; + + case Kind.INTERFACE_TYPE_DEFINITION: + case Kind.INTERFACE_TYPE_EXTENSION: + return DirectiveLocation.INTERFACE; + + case Kind.UNION_TYPE_DEFINITION: + case Kind.UNION_TYPE_EXTENSION: + return DirectiveLocation.UNION; + + case Kind.ENUM_TYPE_DEFINITION: + case Kind.ENUM_TYPE_EXTENSION: + return DirectiveLocation.ENUM; + + case Kind.ENUM_VALUE_DEFINITION: + return DirectiveLocation.ENUM_VALUE; + + case Kind.INPUT_OBJECT_TYPE_DEFINITION: + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + return DirectiveLocation.INPUT_OBJECT; + + case Kind.INPUT_VALUE_DEFINITION: + { + const parentNode = ancestors[ancestors.length - 3]; + return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? DirectiveLocation.INPUT_FIELD_DEFINITION : DirectiveLocation.ARGUMENT_DEFINITION; + } + } +} + +function getDirectiveLocationForOperation(operation) { + switch (operation) { + case 'query': + return DirectiveLocation.QUERY; + + case 'mutation': + return DirectiveLocation.MUTATION; + + case 'subscription': + return DirectiveLocation.SUBSCRIPTION; + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected operation: ' + inspect(operation)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/81bebc1ecbb5f0562022195fec7cd337dac9f4bc.ts b/bundler/tests/.cache/deno/81bebc1ecbb5f0562022195fec7cd337dac9f4bc.ts new file mode 100644 index 00000000000..21f7e68bda7 --- /dev/null +++ b/bundler/tests/.cache/deno/81bebc1ecbb5f0562022195fec7cd337dac9f4bc.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isTypedArray.js + + +/** + * Tests whether or not an object is a typed array. + * + * @private + * @param {*} val The object to test. + * @return {Boolean} `true` if `val` is a typed array, `false` otherwise. + * @example + * + * _isTypedArray(new Uint8Array([])); //=> true + * _isTypedArray(new Float32Array([])); //=> true + * _isTypedArray([]); //=> false + * _isTypedArray(null); //=> false + * _isTypedArray({}); //=> false + */ +export default function _isTypedArray(val) { + var type = Object.prototype.toString.call(val); + return type === '[object Uint8ClampedArray]' || + type === '[object Int8Array]' || type === '[object Uint8Array]' || + type === '[object Int16Array]' || type === '[object Uint16Array]' || + type === '[object Int32Array]' || type === '[object Uint32Array]' || + type === '[object Float32Array]' || type === '[object Float64Array]' || + type === '[object BigInt64Array]' || type === '[object BigUint64Array]'; +} diff --git a/bundler/tests/.cache/deno/82078dc54e160b7508f30445c6a994ab4ca44b11.ts b/bundler/tests/.cache/deno/82078dc54e160b7508f30445c6a994ab4ca44b11.ts new file mode 100644 index 00000000000..5da64d99333 --- /dev/null +++ b/bundler/tests/.cache/deno/82078dc54e160b7508f30445c6a994ab4ca44b11.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xany.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XAny(f, xf) { + this.xf = xf; + this.f = f; + this.any = false; +} +XAny.prototype['@@transducer/init'] = _xfBase.init; +XAny.prototype['@@transducer/result'] = function(result) { + if (!this.any) { + result = this.xf['@@transducer/step'](result, false); + } + return this.xf['@@transducer/result'](result); +}; +XAny.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.any = true; + result = _reduced(this.xf['@@transducer/step'](result, true)); + } + return result; +}; + +var _xany = _curry2(function _xany(f, xf) { return new XAny(f, xf); }); +export default _xany; diff --git a/bundler/tests/.cache/deno/820d587c124ae7c593e51318e74da3d05ccdfe78.ts b/bundler/tests/.cache/deno/820d587c124ae7c593e51318e74da3d05ccdfe78.ts new file mode 100644 index 00000000000..3fd7e43d218 --- /dev/null +++ b/bundler/tests/.cache/deno/820d587c124ae7c593e51318e74da3d05ccdfe78.ts @@ -0,0 +1,214 @@ +// Loaded from https://deno.land/x/jszip/mod.ts + + +import _JSZip from "https://dev.jspm.io/jszip@3.5.0"; +import { WalkOptions, walk } from "https://deno.land/std@0.85.0/fs/mod.ts"; +import { SEP, join } from "https://deno.land/std@0.85.0/path/mod.ts"; +import type { + InputFileFormat, + JSZipFileOptions, + JSZipGeneratorOptions, + JSZipLoadOptions, + JSZipObject, + OutputByType, +} from "./types.ts"; + +/** + * Read zip file asynchronously from a file + * + * @param path of zip file + * @return Returns promise + */ +export async function readZip(path: string): Promise { + const z = new JSZip(); + const content: Uint8Array = await Deno.readFile(path); + await z.loadAsync(content); + return z; +} + +/** + * Read a directory as a JSZip + * + * @param dir directory + * @return Returns promise + */ +export async function zipDir( + dir: string, + options?: WalkOptions, +): Promise { + const z = new JSZip(); + const cwd = Deno.cwd(); + // FIXME it would be nice to do this without chdir... + Deno.chdir(dir); + try { + for await (const f of walk(".", options)) { + if (f.isDirectory) { + // skip directories + continue; + } + const contents = await Deno.readFile(f.path); + + // In order to support Windows we do this ridiculousness. + let ff = f.path.split(SEP); + let zz = z; + while (ff.length > 1) { + zz = zz.folder(ff.shift()!); + } + zz.addFile(ff[0], contents); + } + } finally { + Deno.chdir(cwd); + } + return z; +} + +export class JSZip { + protected _z: any; + + // we should assert the type (we want it to be a _JSZip) ? + constructor(z?: any) { + if (z === undefined) { + // @ts-ignores + this._z = new _JSZip(); + } else { + this._z = z; + } + } + + /** + * Returns an new JSZip instance with the given folder as root + * + * @param name Name of the folder + * @return New JSZip object with the given folder as root or null + */ + folder(name: string): JSZip { + // @ts-ignores + const f = this._z.folder(name); + return new JSZip(f); + } + + /** + * Get a file from the archive + * + * @param Path relative path to file + * @return File matching path, null if no file found + */ + file(path: string): JSZipObject { + // @ts-ignores + const f = this._z.file(path); + return f as JSZipObject; + } + + /** + * Add a file to the archive + * + * @param path Relative path to file + * @param data Content of the file + * @param options Optional information about the file + * @return JSZip object + */ + addFile( + path: string, + content?: string | Uint8Array, + options?: JSZipFileOptions, + ): JSZipObject { + // @ts-ignores + const f = this._z.file(path, content, options); + return f as JSZipObject; + } + + files(): { [key: string]: JSZipObject } { + // @ts-ignores + const fs = this._z.files; + return fs; + } + + /** + * Generates a new archive asynchronously + * + * @param options Optional options for the generator + * @param onUpdate The optional function called on each internal update with the metadata. + * @return The serialized archive + */ + async generateAsync( + options?: JSZipGeneratorOptions, + ): Promise { + // @ts-ignores + return await this._z.generateAsync(options); + } + + /** + * Get all files which match the given filter function + * + * @param predicate Filter function + * @return Array of matched elements + */ + filter( + predicate: (relativePath: string, file: JSZipObject) => boolean, + ): JSZipObject[] { + // @ts-ignores + return this._z.filter(predicate); + } + + /** + * Removes the file or folder from the archive + * + * @param path Relative path of file or folder + * @return Returns the JSZip instance + */ + remove(path: string): JSZip { + // @ts-ignores + return this._z.remove(path); + } + + /** + * Load zip data + * + * @param data Serialized zip file + * @param options Options for deserializing + * @return Returns promise of self + */ + async loadAsync( + data: InputFileFormat, + options?: JSZipLoadOptions, + ): Promise { + await this._z.loadAsync(data, options); + return this; + } + + /** + * Write zip file asynchronously to a file + * + * @param path of zip file + * @return Returns promise + */ + async writeZip(path: string): Promise { + const b: Uint8Array = await this.generateAsync({ type: "uint8array" }); + return await Deno.writeFile(path, b); + } + + /** + * Unzip a JSZip asynchronously to a directory + * + * @param dir to unzip into + * @return Returns promise + */ + async unzip(dir: string = "."): Promise { + // FIXME optionally replace the existing folder prefix with dir. + for (const f of this) { + const ff = join(dir, f.name); + if (f.dir) { + // hopefully the directory is prior to any files inside it! + await Deno.mkdir(ff, { recursive: true }); + continue; + } + const content = await f.async("uint8array"); + // TODO pass WriteFileOptions e.g. mode + await Deno.writeFile(ff, content); + } + } + + *[Symbol.iterator](): Iterator { + yield* Object.values(this.files()); + } +} diff --git a/bundler/tests/.cache/deno/822e83ee81927e56bf78a36aa037927244334e69.ts b/bundler/tests/.cache/deno/822e83ee81927e56bf78a36aa037927244334e69.ts new file mode 100644 index 00000000000..cf21fd0dfd7 --- /dev/null +++ b/bundler/tests/.cache/deno/822e83ee81927e56bf78a36aa037927244334e69.ts @@ -0,0 +1,177 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/launch.ts + + +/// Convenience util to launch a user's dnit.ts + +import { log, fs, path, semver } from "./deps.ts"; + +type UserSource = { + baseDir: string; + dnitDir: string; + mainSrc: string; + importmap: string | null; +}; + +type FindUserSourceContext = { + stat: Deno.FileInfo; + path: string; +}; + +function findUserSourceContext(dir: string): FindUserSourceContext { + const pathParts = dir.split(path.SEP); + return { + path: dir, + stat: Deno.lstatSync(dir), + }; +} + +function findUserSource( + dir: string, + startCtxArg: FindUserSourceContext | null, +): UserSource | null { + const startCtx = (startCtxArg === null) + ? findUserSourceContext(dir) + : startCtxArg; + const dirStat = Deno.lstatSync(dir); + + /// Do not cross filesystems (this is how git stops looking for a git dir) + if (dirStat.dev !== startCtx.stat.dev) { + return null; + } + + /// Abort at root: + if (path.resolve(path.join(dir, "..")) === dir) { + return null; + } + + const subdirs = [ + "dnit", // subdirectory (preferred so that subdir is a deno only typescript tree) + ]; + + const defaultSources = [ + "main.ts", + "dnit.ts", + ]; + + const importmaps = [ + "import_map.json", + ".import_map.json", // optionally hidden file + ]; + + for (const subdir of subdirs) { + for (const sourceName of defaultSources) { + const res = { + baseDir: path.resolve(dir), + dnitDir: path.resolve(path.join(dir, subdir)), + mainSrc: path.resolve(path.join(dir, subdir, sourceName)), + }; + + if (fs.existsSync(res.mainSrc)) { + for (const importMapFile of importmaps) { + const importmap = path.resolve(path.join(dir, subdir, importMapFile)); + if (fs.existsSync(importmap)) { + return { + ...res, + importmap, + }; + } + } + + return { + ...res, + importmap: null, + }; + } + } + } + + // recurse to parent directory to find dnit script + return findUserSource(path.join(dir, ".."), startCtx); +} + +export async function parseDotDenoVersionFile(fname: string) : Promise { + const denoReqSemverRange = await Deno.readTextFile(fname); + return denoReqSemverRange; +} + +export async function getDenoVersion() : Promise { + const proc = Deno.run({ + cmd: ["deno", "--version"], + stdout: 'piped' + }); + const [status, output] = await Promise.all([proc.status(), proc.output()]); + const decoder = new TextDecoder(); + const denoVersionStr = decoder.decode(output); + + const regmatch = denoVersionStr.match(/deno[ ]+([0-9.]+)/); + if(regmatch) { + return regmatch[1]; + } + throw new Error("Invalid parse of deno version output"); +} + +export function checkValidDenoVersion(denoVersion: string, denoReqSemverRange: string) : boolean { + return semver.satisfies(denoVersion, denoReqSemverRange); +} + +export async function launch(logger: log.Logger): Promise { + const userSource = findUserSource(Deno.cwd(), null); + if (userSource !== null) { + logger.info("running source:" + userSource.mainSrc); + logger.info("running wd:" + userSource.baseDir); + logger.info("running importmap:" + userSource.importmap); + logger.info("running dnitDir:" + userSource.dnitDir); + + const denoVersion = await getDenoVersion(); + logger.info("deno version:" + denoVersion); + + const dotDenoVersionFile = path.join(userSource.dnitDir, '.denoversion'); + if (fs.existsSync(dotDenoVersionFile)) { + const reqDenoVerStr = await parseDotDenoVersionFile(dotDenoVersionFile); + const validDenoVer = checkValidDenoVersion(denoVersion, reqDenoVerStr); + if (!validDenoVer) { + throw new Error("Requires deno version " + reqDenoVerStr); + } + logger.info("deno version ok:" + denoVersion + " for " + reqDenoVerStr); + } + + Deno.chdir(userSource.baseDir); + + const permissions = [ + "--allow-read", + "--allow-write", + "--allow-run", + "--allow-env", + "--allow-net", + ]; + const flags = [ + "--quiet", + "--unstable", + ]; + const importmap = userSource.importmap + ? [ + "--importmap", + userSource.importmap, + ] + : []; + + const proc = Deno.run({ + cmd: ["deno", "run"] + .concat(flags) + .concat(permissions) + .concat(importmap) + .concat([userSource.mainSrc]) + .concat(["--dnitDir", userSource.dnitDir]) + .concat(Deno.args), + }); + + const status = await proc.status(); + return status; + } else { + logger.error("No dnit.ts or dnit directory found"); + return { + success: false, + code: 1, + }; + } +} diff --git a/bundler/tests/.cache/deno/827c3edd2d4f57fcb724cb0d4570f62c64e2479a.ts b/bundler/tests/.cache/deno/827c3edd2d4f57fcb724cb0d4570f62c64e2479a.ts new file mode 100644 index 00000000000..905eebb14aa --- /dev/null +++ b/bundler/tests/.cache/deno/827c3edd2d4f57fcb724cb0d4570f62c64e2479a.ts @@ -0,0 +1,61 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reduceBy.js + + +import _clone from './internal/_clone.js'; +import _curryN from './internal/_curryN.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _has from './internal/_has.js'; +import _reduce from './internal/_reduce.js'; +import _xreduceBy from './internal/_xreduceBy.js'; + + +/** + * Groups the elements of the list according to the result of calling + * the String-returning function `keyFn` on each element and reduces the elements + * of each group to a single value via the reducer function `valueFn`. + * + * This function is basically a more general [`groupBy`](#groupBy) function. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category List + * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a} + * @param {Function} valueFn The function that reduces the elements of each group to a single + * value. Receives two values, accumulator for a particular group and the current element. + * @param {*} acc The (initial) accumulator value for each group. + * @param {Function} keyFn The function that maps the list's element into a key. + * @param {Array} list The array to group. + * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of + * `valueFn` for elements which produced that key when passed to `keyFn`. + * @see R.groupBy, R.reduce + * @example + * + * const groupNames = (acc, {name}) => acc.concat(name) + * const toGrade = ({score}) => + * score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A' + * + * var students = [ + * {name: 'Abby', score: 83}, + * {name: 'Bart', score: 62}, + * {name: 'Curt', score: 88}, + * {name: 'Dora', score: 92}, + * ] + * + * reduceBy(groupNames, [], toGrade, students) + * //=> {"A": ["Dora"], "B": ["Abby", "Curt"], "F": ["Bart"]} + */ +var reduceBy = _curryN(4, [], _dispatchable([], _xreduceBy, + function reduceBy(valueFn, valueAcc, keyFn, list) { + return _reduce(function(acc, elt) { + var key = keyFn(elt); + acc[key] = valueFn(_has(key, acc) ? acc[key] : _clone(valueAcc, [], [], false), elt); + return acc; + }, {}, list); + })); +export default reduceBy; diff --git a/bundler/tests/.cache/deno/828981bd87421b166442a2e592aa2d9c4ba63289.ts b/bundler/tests/.cache/deno/828981bd87421b166442a2e592aa2d9c4ba63289.ts new file mode 100644 index 00000000000..792cfa43e66 --- /dev/null +++ b/bundler/tests/.cache/deno/828981bd87421b166442a2e592aa2d9c4ba63289.ts @@ -0,0 +1,69 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/constants.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +export default { + + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + //Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + + + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + + /* The deflate compression method */ + Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type +}; diff --git a/bundler/tests/.cache/deno/83076aa9c8b206000e1c7cd5784bfaed4bdb211d.ts b/bundler/tests/.cache/deno/83076aa9c8b206000e1c7cd5784bfaed4bdb211d.ts new file mode 100644 index 00000000000..8e2b6178a25 --- /dev/null +++ b/bundler/tests/.cache/deno/83076aa9c8b206000e1c7cd5784bfaed4bdb211d.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.74.0/async/delay.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/836fe966941dbada4adbcb3b39b36e9820053fd4.ts b/bundler/tests/.cache/deno/836fe966941dbada4adbcb3b39b36e9820053fd4.ts new file mode 100644 index 00000000000..5b40b69c3b6 --- /dev/null +++ b/bundler/tests/.cache/deno/836fe966941dbada4adbcb3b39b36e9820053fd4.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/rsa_key.ts + + +import type { RSAKeyParams, JSONWebKey } from "./common.ts"; +import { encode } from "./../../src/utility/encode.ts"; +import { + rsa_export_pkcs8_private, + rsa_export_pkcs8_public, +} from "./export_key.ts"; + +export class RSAKey { + public n: bigint; + public e?: bigint; + public d?: bigint; + public p?: bigint; + public q?: bigint; + public dp?: bigint; + public dq?: bigint; + public qi?: bigint; + public length: number; + + constructor(params: RSAKeyParams) { + this.n = params.n; + this.e = params.e; + this.d = params.d; + this.p = params.p; + this.q = params.q; + this.dp = params.dp; + this.dq = params.dq; + this.qi = params.qi; + this.length = params.length; + } + + public pem(): string { + if (this.d) { + return rsa_export_pkcs8_private(this); + } else { + return rsa_export_pkcs8_public(this); + } + } + + public jwk(): JSONWebKey { + let jwk: JSONWebKey = { + kty: "RSA", + n: encode.bigint(this.n).base64url(), + }; + + if (this.d) jwk = { ...jwk, d: encode.bigint(this.d).base64url() }; + if (this.e) jwk = { ...jwk, e: encode.bigint(this.e).base64url() }; + if (this.p) jwk = { ...jwk, p: encode.bigint(this.p).base64url() }; + if (this.q) jwk = { ...jwk, q: encode.bigint(this.q).base64url() }; + if (this.dp) jwk = { ...jwk, dp: encode.bigint(this.dp).base64url() }; + if (this.dq) jwk = { ...jwk, dq: encode.bigint(this.dq).base64url() }; + if (this.qi) jwk = { ...jwk, qi: encode.bigint(this.qi).base64url() }; + + return jwk; + } +} diff --git a/bundler/tests/.cache/deno/8376f4468129b626d419e1689092b6a9cd39a421.ts b/bundler/tests/.cache/deno/8376f4468129b626d419e1689092b6a9cd39a421.ts new file mode 100644 index 00000000000..9a706a2f706 --- /dev/null +++ b/bundler/tests/.cache/deno/8376f4468129b626d419e1689092b6a9cd39a421.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIPRange.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { isIP } from './isIP.ts'; + +/** + * @ignore + */ +const subnetMaybe = /^\d{1,2}$/; + +export const isIPRange = (str: string) => { + assertString(str); + const parts = str.split('/'); + + // parts[0] -> ip, parts[1] -> subnet + if (parts.length !== 2) { + return false; + } + + if (!subnetMaybe.test(parts[1])) { + return false; + } + + // Disallow preceding 0 i.e. 01, 02, ... + if (parts[1].length > 1 && parts[1].startsWith('0')) { + return false; + } + + return isIP(parts[0], 4) && +parts[1] <= 32 && +parts[1] >= 0; +}; diff --git a/bundler/tests/.cache/deno/838e80d5668ae33000a11c6b9df3ebb7a0a295a6.ts b/bundler/tests/.cache/deno/838e80d5668ae33000a11c6b9df3ebb7a0a295a6.ts new file mode 100644 index 00000000000..e5b71600bc9 --- /dev/null +++ b/bundler/tests/.cache/deno/838e80d5668ae33000a11c6b9df3ebb7a0a295a6.ts @@ -0,0 +1,8332 @@ +// Loaded from https://deno.land/x/media_types@v2.7.1/db.ts + + +/*! + * Ported from: https://github.com/jshttp/mime-db and licensed as: + * + * (The MIT License) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2020 the Deno authors + * Copyright (c) 2020 the oak authors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export const db: { + [mediaType: string]: { + source?: string; + compressible?: boolean; + charset?: string; + extensions?: string[]; + }; +} = JSON.parse(`{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["ecma","es"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana" + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana" + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana" + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana" + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana" + }, + "image/avcs": { + "source": "iana" + }, + "image/avif": { + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana" + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +}`); diff --git a/bundler/tests/.cache/deno/83a212fcda1c5760ec9fd0abf491a9f437de010f.ts b/bundler/tests/.cache/deno/83a212fcda1c5760ec9fd0abf491a9f437de010f.ts new file mode 100644 index 00000000000..6f79537677e --- /dev/null +++ b/bundler/tests/.cache/deno/83a212fcda1c5760ec9fd0abf491a9f437de010f.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/tail.js + + +import _checkForMethod from './internal/_checkForMethod.js'; +import _curry1 from './internal/_curry1.js'; +import slice from './slice.js'; + + +/** + * Returns all but the first element of the given list or string (or object + * with a `tail` method). + * + * Dispatches to the `slice` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.head, R.init, R.last + * @example + * + * R.tail([1, 2, 3]); //=> [2, 3] + * R.tail([1, 2]); //=> [2] + * R.tail([1]); //=> [] + * R.tail([]); //=> [] + * + * R.tail('abc'); //=> 'bc' + * R.tail('ab'); //=> 'b' + * R.tail('a'); //=> '' + * R.tail(''); //=> '' + */ +var tail = _curry1(_checkForMethod('tail', slice(1, Infinity))); +export default tail; diff --git a/bundler/tests/.cache/deno/83b79ffa51a489b4f445c2d70792926aa72cefab.ts b/bundler/tests/.cache/deno/83b79ffa51a489b4f445c2d70792926aa72cefab.ts new file mode 100644 index 00000000000..6c6ca6643a7 --- /dev/null +++ b/bundler/tests/.cache/deno/83b79ffa51a489b4f445c2d70792926aa72cefab.ts @@ -0,0 +1,714 @@ +// Loaded from https://deno.land/std@0.73.0/io/bufio.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copyBytes } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copyBytes(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +// eslint-disable-next-line require-await +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + yield* readStringDelim(reader, "\n"); +} diff --git a/bundler/tests/.cache/deno/83d4a0242923a8a5fd3817333aaacf70249a429b.ts b/bundler/tests/.cache/deno/83d4a0242923a8a5fd3817333aaacf70249a429b.ts new file mode 100644 index 00000000000..2533ee40fc2 --- /dev/null +++ b/bundler/tests/.cache/deno/83d4a0242923a8a5fd3817333aaacf70249a429b.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/kinds.js + + +/** + * The set of allowed kind values for AST nodes. + */ +export const Kind = Object.freeze({ + // Name + NAME: 'Name', + // Document + DOCUMENT: 'Document', + OPERATION_DEFINITION: 'OperationDefinition', + VARIABLE_DEFINITION: 'VariableDefinition', + SELECTION_SET: 'SelectionSet', + FIELD: 'Field', + ARGUMENT: 'Argument', + // Fragments + FRAGMENT_SPREAD: 'FragmentSpread', + INLINE_FRAGMENT: 'InlineFragment', + FRAGMENT_DEFINITION: 'FragmentDefinition', + // Values + VARIABLE: 'Variable', + INT: 'IntValue', + FLOAT: 'FloatValue', + STRING: 'StringValue', + BOOLEAN: 'BooleanValue', + NULL: 'NullValue', + ENUM: 'EnumValue', + LIST: 'ListValue', + OBJECT: 'ObjectValue', + OBJECT_FIELD: 'ObjectField', + // Directives + DIRECTIVE: 'Directive', + // Types + NAMED_TYPE: 'NamedType', + LIST_TYPE: 'ListType', + NON_NULL_TYPE: 'NonNullType', + // Type System Definitions + SCHEMA_DEFINITION: 'SchemaDefinition', + OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition', + // Type Definitions + SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition', + OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition', + FIELD_DEFINITION: 'FieldDefinition', + INPUT_VALUE_DEFINITION: 'InputValueDefinition', + INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition', + UNION_TYPE_DEFINITION: 'UnionTypeDefinition', + ENUM_TYPE_DEFINITION: 'EnumTypeDefinition', + ENUM_VALUE_DEFINITION: 'EnumValueDefinition', + INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition', + // Directive Definitions + DIRECTIVE_DEFINITION: 'DirectiveDefinition', + // Type System Extensions + SCHEMA_EXTENSION: 'SchemaExtension', + // Type Extensions + SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension', + OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension', + INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension', + UNION_TYPE_EXTENSION: 'UnionTypeExtension', + ENUM_TYPE_EXTENSION: 'EnumTypeExtension', + INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension' +}); +/** + * The enum type representing the possible kind values of AST nodes. + */ \ No newline at end of file diff --git a/bundler/tests/.cache/deno/83f2b932572129fce06d40c317798e27fd41d530.ts b/bundler/tests/.cache/deno/83f2b932572129fce06d40c317798e27fd41d530.ts new file mode 100644 index 00000000000..61f5abced85 --- /dev/null +++ b/bundler/tests/.cache/deno/83f2b932572129fce06d40c317798e27fd41d530.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/eqBy.js + + +import _curry3 from './internal/_curry3.js'; +import equals from './equals.js'; + + +/** + * Takes a function and two values in its domain and returns `true` if the + * values map to the same value in the codomain; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Relation + * @sig (a -> b) -> a -> a -> Boolean + * @param {Function} f + * @param {*} x + * @param {*} y + * @return {Boolean} + * @example + * + * R.eqBy(Math.abs, 5, -5); //=> true + */ +var eqBy = _curry3(function eqBy(f, x, y) { + return equals(f(x), f(y)); +}); +export default eqBy; diff --git a/bundler/tests/.cache/deno/84095c4cea1623e3e80d0153bad17f2dbe3b4432.ts b/bundler/tests/.cache/deno/84095c4cea1623e3e80d0153bad17f2dbe3b4432.ts new file mode 100644 index 00000000000..f5794989495 --- /dev/null +++ b/bundler/tests/.cache/deno/84095c4cea1623e3e80d0153bad17f2dbe3b4432.ts @@ -0,0 +1,191 @@ +// Loaded from https://deno.land/std/fs/walk.ts + + +// Documentation and interface for walk were adapted from Go +// https://golang.org/pkg/path/filepath/#Walk +// Copyright 2009 The Go Authors. All rights reserved. BSD license. +import { assert } from "../_util/assert.ts"; +import { basename, join, normalize } from "../path/mod.ts"; + +/** Create WalkEntry for the `path` synchronously */ +export function _createWalkEntrySync(path: string): WalkEntry { + path = normalize(path); + const name = basename(path); + const info = Deno.statSync(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +/** Create WalkEntry for the `path` asynchronously */ +export async function _createWalkEntry(path: string): Promise { + path = normalize(path); + const name = basename(path); + const info = await Deno.stat(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +export interface WalkOptions { + maxDepth?: number; + includeFiles?: boolean; + includeDirs?: boolean; + followSymlinks?: boolean; + exts?: string[]; + match?: RegExp[]; + skip?: RegExp[]; +} + +function include( + path: string, + exts?: string[], + match?: RegExp[], + skip?: RegExp[], +): boolean { + if (exts && !exts.some((ext): boolean => path.endsWith(ext))) { + return false; + } + if (match && !match.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + if (skip && skip.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + return true; +} + +export interface WalkEntry extends Deno.DirEntry { + path: string; +} + +/** Walks the file tree rooted at root, yielding each file or directory in the + * tree filtered according to the given options. The files are walked in lexical + * order, which makes the output deterministic but means that for very large + * directories walk() can be inefficient. + * + * Options: + * - maxDepth?: number = Infinity; + * - includeFiles?: boolean = true; + * - includeDirs?: boolean = true; + * - followSymlinks?: boolean = false; + * - exts?: string[]; + * - match?: RegExp[]; + * - skip?: RegExp[]; + * + * + * for await (const entry of walk(".")) { + * console.log(entry.path); + * assert(entry.isFile); + * } + */ +export async function* walk( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): AsyncIterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield await _createWalkEntry(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for await (const entry of Deno.readDir(root)) { + assert(entry.name != null); + let path = join(root, entry.name); + + if (entry.isSymlink) { + if (followSymlinks) { + path = await Deno.realPath(path); + } else { + continue; + } + } + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walk(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} + +/** Same as walk() but uses synchronous ops */ +export function* walkSync( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): IterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield _createWalkEntrySync(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for (const entry of Deno.readDirSync(root)) { + assert(entry.name != null); + let path = join(root, entry.name); + + if (entry.isSymlink) { + if (followSymlinks) { + path = Deno.realPathSync(path); + } else { + continue; + } + } + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walkSync(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} diff --git a/bundler/tests/.cache/deno/841979b27ebe2b6fbe8705dc8acde05a391cc8a1.ts b/bundler/tests/.cache/deno/841979b27ebe2b6fbe8705dc8acde05a391cc8a1.ts new file mode 100644 index 00000000000..844d0788105 --- /dev/null +++ b/bundler/tests/.cache/deno/841979b27ebe2b6fbe8705dc8acde05a391cc8a1.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/minBy.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Takes a function and two values, and returns whichever value produces the + * smaller result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.min, R.maxBy + * @example + * + * // square :: Number -> Number + * const square = n => n * n; + * + * R.minBy(square, -3, 2); //=> 2 + * + * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 + * R.reduce(R.minBy(square), Infinity, []); //=> Infinity + */ +var minBy = _curry3(function minBy(f, a, b) { + return f(b) < f(a) ? b : a; +}); +export default minBy; diff --git a/bundler/tests/.cache/deno/841cf6700b49ed12a9eff2f50b70a1a2c1d45478.ts b/bundler/tests/.cache/deno/841cf6700b49ed12a9eff2f50b70a1a2c1d45478.ts new file mode 100644 index 00000000000..e6509249f5d --- /dev/null +++ b/bundler/tests/.cache/deno/841cf6700b49ed12a9eff2f50b70a1a2c1d45478.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/assertString.ts + + +export const assertString = (input: string) => { + const isString = typeof input === 'string'; + + if (!isString) { + throw new TypeError(`Expected a string but received ${typeof input}.`); + } +}; diff --git a/bundler/tests/.cache/deno/8437d620a4033f13beef167bd38d53e02df0a457.ts b/bundler/tests/.cache/deno/8437d620a4033f13beef167bd38d53e02df0a457.ts new file mode 100644 index 00000000000..ec6b557b624 --- /dev/null +++ b/bundler/tests/.cache/deno/8437d620a4033f13beef167bd38d53e02df0a457.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBIC.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const isBICReg = /^[A-z]{4}[A-z]{2}\w{2}(\w{3})?$/; + +export const isBIC = (str: string) => { + assertString(str); + return isBICReg.test(str); +}; diff --git a/bundler/tests/.cache/deno/8493c8b3e6389118e9506c6c4d43d44b26563f5a.ts b/bundler/tests/.cache/deno/8493c8b3e6389118e9506c6c4d43d44b26563f5a.ts new file mode 100644 index 00000000000..591710bfc3c --- /dev/null +++ b/bundler/tests/.cache/deno/8493c8b3e6389118e9506c6c4d43d44b26563f5a.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.83.0/fs/exists.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** + * Test whether or not the given path exists by checking with the file system + */ +export async function exists(filePath: string): Promise { + try { + await Deno.lstat(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + + throw err; + } +} + +/** + * Test whether or not the given path exists by checking with the file system + */ +export function existsSync(filePath: string): boolean { + try { + Deno.lstatSync(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/8499ed96852f55f691866315153653b4a3f3e326.ts b/bundler/tests/.cache/deno/8499ed96852f55f691866315153653b4a3f3e326.ts new file mode 100644 index 00000000000..090dd60294c --- /dev/null +++ b/bundler/tests/.cache/deno/8499ed96852f55f691866315153653b4a3f3e326.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.85.0/encoding/utf8.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/84ae3e95fa054e68fb3c5015cda3abb44b3f59f1.ts b/bundler/tests/.cache/deno/84ae3e95fa054e68fb3c5015cda3abb44b3f59f1.ts new file mode 100644 index 00000000000..b374f56b77a --- /dev/null +++ b/bundler/tests/.cache/deno/84ae3e95fa054e68fb3c5015cda3abb44b3f59f1.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/isFinite.js + + +/* eslint-disable no-redeclare */ +// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441 +const isFinitePolyfill = Number.isFinite || function (value) { + return typeof value === 'number' && isFinite(value); +}; + +export default isFinitePolyfill; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/84c549a91453ea884cd0c323fe30ee7440cf1fca.ts b/bundler/tests/.cache/deno/84c549a91453ea884cd0c323fe30ee7440cf1fca.ts new file mode 100644 index 00000000000..dfecb10a887 --- /dev/null +++ b/bundler/tests/.cache/deno/84c549a91453ea884cd0c323fe30ee7440cf1fca.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.83.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/84d15db35af119365ec4f1e66b00f0ca9e987e1e.ts b/bundler/tests/.cache/deno/84d15db35af119365ec4f1e66b00f0ca9e987e1e.ts new file mode 100644 index 00000000000..1e564eafce5 --- /dev/null +++ b/bundler/tests/.cache/deno/84d15db35af119365ec4f1e66b00f0ca9e987e1e.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/ADLMap.ts + + +import type * as sys_types from "./adl-gen/runtime/sys/types.ts"; + +export class ADLMap { + constructor( + public data: sys_types.Map, + private isEqual: (k1: K, k2: K) => boolean, + ) { + } + has(k: K): boolean { + return this.findIndex(k) !== -1; + } + get(k: K): V | undefined { + const ind = this.findIndex(k); + if (ind === -1) { + return undefined; + } + return this.data[ind].v2; + } + getOrInsert(k: K, v: V): V { + const existing = this.get(k); + if (existing === undefined) { + this.set(k, v); + return v; + } + return existing; + } + set(k: K, v: V) { + const ind = this.findIndex(k); + if (ind === -1) { + this.data.push({ v1: k, v2: v }); + } + this.data[ind] = { v1: k, v2: v }; + return this; + } + keys(): K[] { + return this.data.map((p) => p.v1); + } + values(): V[] { + return this.data.map((p) => p.v2); + } + entries(): [K, V][] { + return this.data.map((p) => [p.v1, p.v2]); + } + toData() { + return this.data; + } + + findIndex(k: K) { + return this.data.findIndex((p) => this.isEqual(p.v1, k)); + } +} diff --git a/bundler/tests/.cache/deno/84db5ba4363156631c0a5fd07f97f4866ab95108.ts b/bundler/tests/.cache/deno/84db5ba4363156631c0a5fd07f97f4866ab95108.ts new file mode 100644 index 00000000000..7ae90e7c9de --- /dev/null +++ b/bundler/tests/.cache/deno/84db5ba4363156631c0a5fd07f97f4866ab95108.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_curry1.js + + +import _isPlaceholder from './_isPlaceholder.js'; + + +/** + * Optimized internal one-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +export default function _curry1(fn) { + return function f1(a) { + if (arguments.length === 0 || _isPlaceholder(a)) { + return f1; + } else { + return fn.apply(this, arguments); + } + }; +} diff --git a/bundler/tests/.cache/deno/8500be1ad7006d46daedac7bb309f48ef8bd425d.ts b/bundler/tests/.cache/deno/8500be1ad7006d46daedac7bb309f48ef8bd425d.ts new file mode 100644 index 00000000000..b14ce72712c --- /dev/null +++ b/bundler/tests/.cache/deno/8500be1ad7006d46daedac7bb309f48ef8bd425d.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/intersection.js + + +import _includes from './internal/_includes.js'; +import _curry2 from './internal/_curry2.js'; +import _filter from './internal/_filter.js'; +import flip from './flip.js'; +import uniq from './uniq.js'; + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The list of elements found in both `list1` and `list2`. + * @see R.innerJoin + * @example + * + * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3] + */ +var intersection = _curry2(function intersection(list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + return uniq(_filter(flip(_includes)(lookupList), filteredList)); +}); +export default intersection; diff --git a/bundler/tests/.cache/deno/850193df2f3c3414df9ac573ba9bbb491ad71f65.ts b/bundler/tests/.cache/deno/850193df2f3c3414df9ac573ba9bbb491ad71f65.ts new file mode 100644 index 00000000000..2c0ec61a032 --- /dev/null +++ b/bundler/tests/.cache/deno/850193df2f3c3414df9ac573ba9bbb491ad71f65.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/propOr.js + + +import _curry3 from './internal/_curry3.js'; +import defaultTo from './defaultTo.js'; +import prop from './prop.js'; + + +/** + * Return the specified property of the given non-null object if the property + * is present and it's value is not `null`, `undefined` or `NaN`. + * + * Otherwise the first argument is returned. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Object + * @sig a -> String -> Object -> a + * @param {*} val The default value. + * @param {String} p The name of the property to return. + * @param {Object} obj The object to query. + * @return {*} The value of given property of the supplied object or the default value. + * @example + * + * const alice = { + * name: 'ALICE', + * age: 101 + * }; + * const favorite = R.prop('favoriteLibrary'); + * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary'); + * + * favorite(alice); //=> undefined + * favoriteWithDefault(alice); //=> 'Ramda' + */ +var propOr = _curry3(function propOr(val, p, obj) { + return defaultTo(val, prop(p, obj)); +}); +export default propOr; diff --git a/bundler/tests/.cache/deno/855abcea65d9140c2148f1d92f5ca51de145d797.ts b/bundler/tests/.cache/deno/855abcea65d9140c2148f1d92f5ca51de145d797.ts new file mode 100644 index 00000000000..3db603d4432 --- /dev/null +++ b/bundler/tests/.cache/deno/855abcea65d9140c2148f1d92f5ca51de145d797.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/includes.ts + + +export const includes = (arr: any[], val: any) => + arr.some((arrVal) => val === arrVal); diff --git a/bundler/tests/.cache/deno/859e0cd641e6b4e1b2be30d58c97fb84f34d1580.ts b/bundler/tests/.cache/deno/859e0cd641e6b4e1b2be30d58c97fb84f34d1580.ts new file mode 100644 index 00000000000..0f196c27eba --- /dev/null +++ b/bundler/tests/.cache/deno/859e0cd641e6b4e1b2be30d58c97fb84f34d1580.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.85.0/_util/assert.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/85c03db3854bdffd7b6002c0d286f204481cb1be.ts b/bundler/tests/.cache/deno/85c03db3854bdffd7b6002c0d286f204481cb1be.ts new file mode 100644 index 00000000000..e0db8c09b59 --- /dev/null +++ b/bundler/tests/.cache/deno/85c03db3854bdffd7b6002c0d286f204481cb1be.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lift.js + + +import _curry1 from './internal/_curry1.js'; +import liftN from './liftN.js'; + + +/** + * "lifts" a function of arity > 1 so that it may "map over" a list, Function or other + * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.liftN + * @example + * + * const madd3 = R.lift((a, b, c) => a + b + c); + * + * madd3([100, 200], [30, 40], [5, 6, 7]); //=> [135, 136, 137, 145, 146, 147, 235, 236, 237, 245, 246, 247] + * + * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); + * + * madd5([10, 20], [1], [2, 3], [4], [100, 200]); //=> [117, 217, 118, 218, 127, 227, 128, 228] + */ +var lift = _curry1(function lift(fn) { + return liftN(fn.length, fn); +}); +export default lift; diff --git a/bundler/tests/.cache/deno/85e4e2aa98d009b187a72395227719f9f1253b56.ts b/bundler/tests/.cache/deno/85e4e2aa98d009b187a72395227719f9f1253b56.ts new file mode 100644 index 00000000000..0cd96d9f6fd --- /dev/null +++ b/bundler/tests/.cache/deno/85e4e2aa98d009b187a72395227719f9f1253b56.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/translators/translator.ts + + +import type { Query, QueryDescription } from "../query-builder.ts"; +import type { FieldAlias } from "../data-types.ts"; + +/** Translator interface for translating `QueryDescription` objects to regular queries. */ +export class Translator { + /** Translate a query description into a regular query. */ + translateToQuery(query: QueryDescription): Query { + return ""; + } + + /** Format a field to the database format, e.g. `userName` to `user_name`. */ + formatFieldNameToDatabase( + fieldName: string | FieldAlias, + ): string | FieldAlias { + return fieldName; + } +} diff --git a/bundler/tests/.cache/deno/85ee64b7b0386674b60a4f24b5cf5bab4bdd8967.ts b/bundler/tests/.cache/deno/85ee64b7b0386674b60a4f24b5cf5bab4bdd8967.ts new file mode 100644 index 00000000000..df2b1719420 --- /dev/null +++ b/bundler/tests/.cache/deno/85ee64b7b0386674b60a4f24b5cf5bab4bdd8967.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Any, ArrayObject } from "./utils.ts"; + +export type KindType = "sequence" | "scalar" | "mapping"; +export type StyleVariant = "lowercase" | "uppercase" | "camelcase" | "decimal"; +export type RepresentFn = (data: Any, style?: StyleVariant) => Any; + +const DEFAULT_RESOLVE = (): boolean => true; +const DEFAULT_CONSTRUCT = (data: Any): Any => data; + +interface TypeOptions { + kind: KindType; + resolve?: (data: Any) => boolean; + construct?: (data: string) => Any; + instanceOf?: Any; + predicate?: (data: Record) => boolean; + represent?: RepresentFn | ArrayObject; + defaultStyle?: StyleVariant; + styleAliases?: ArrayObject; +} + +function checkTagFormat(tag: string): string { + return tag; +} + +export class Type { + public tag: string; + public kind: KindType | null = null; + public instanceOf: Any; + public predicate?: (data: Record) => boolean; + public represent?: RepresentFn | ArrayObject; + public defaultStyle?: StyleVariant; + public styleAliases?: ArrayObject; + public loadKind?: KindType; + + constructor(tag: string, options?: TypeOptions) { + this.tag = checkTagFormat(tag); + if (options) { + this.kind = options.kind; + this.resolve = options.resolve || DEFAULT_RESOLVE; + this.construct = options.construct || DEFAULT_CONSTRUCT; + this.instanceOf = options.instanceOf; + this.predicate = options.predicate; + this.represent = options.represent; + this.defaultStyle = options.defaultStyle; + this.styleAliases = options.styleAliases; + } + } + public resolve: (data?: Any) => boolean = (): boolean => true; + public construct: (data?: Any) => Any = (data): Any => data; +} diff --git a/bundler/tests/.cache/deno/86013a2b1079ccf03a50f620f3962be040163986.ts b/bundler/tests/.cache/deno/86013a2b1079ccf03a50f620f3962be040163986.ts new file mode 100644 index 00000000000..0fa05daf4b7 --- /dev/null +++ b/bundler/tests/.cache/deno/86013a2b1079ccf03a50f620f3962be040163986.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/and.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns `true` if both arguments are `true`; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if it is falsy, otherwise the second argument. + * @see R.both, R.or + * @example + * + * R.and(true, true); //=> true + * R.and(true, false); //=> false + * R.and(false, true); //=> false + * R.and(false, false); //=> false + */ +var and = _curry2(function and(a, b) { + return a && b; +}); +export default and; diff --git a/bundler/tests/.cache/deno/86176fb1ac4911a0f4e4da4a7c6167053713e1df.ts b/bundler/tests/.cache/deno/86176fb1ac4911a0f4e4da4a7c6167053713e1df.ts new file mode 100644 index 00000000000..89cd1689780 --- /dev/null +++ b/bundler/tests/.cache/deno/86176fb1ac4911a0f4e4da4a7c6167053713e1df.ts @@ -0,0 +1,403 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/deflate.js + + +import * as zlib_deflate from "./zlib/deflate.js"; +import * as utils from "./utils/common.js"; +import * as strings from "./utils/strings.js"; +import msg from "./zlib/messages.js"; +import { ZStream } from "./zlib/zstream.js"; + + +var toString = Object.prototype.toString; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + +var Z_NO_FLUSH = 0; +var Z_FINISH = 4; + +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_SYNC_FLUSH = 2; + +var Z_DEFAULT_COMPRESSION = -1; + +var Z_DEFAULT_STRATEGY = 0; + +var Z_DEFLATED = 8; + +/* ===========================================================================*/ + + +/** + * class Deflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[deflate]], + * [[deflateRaw]] and [[gzip]]. + **/ + +/* internal + * Deflate.chunks -> Array + * + * Chunks of output data, if [[Deflate#onData]] not overridden. + **/ + +/** + * Deflate.result -> Uint8Array|Array + * + * Compressed result, generated by default [[Deflate#onData]] + * and [[Deflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Deflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + +/** + * Deflate.err -> Number + * + * Error code after deflate finished. 0 (Z_OK) on success. + * You will not need it in real life, because deflate errors + * are possible only on wrong options or bad `onData` / `onEnd` + * custom handlers. + **/ + +/** + * Deflate.msg -> String + * + * Error message, if [[Deflate.err]] != 0 + **/ + + +/** + * new Deflate(options) + * - options (Object): zlib deflate options. + * + * Creates new deflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `level` + * - `windowBits` + * - `memLevel` + * - `strategy` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw deflate + * - `gzip` (Boolean) - create gzip wrapper + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * - `header` (Object) - custom header for gzip + * - `text` (Boolean) - true if compressed data believed to be text + * - `time` (Number) - modification time, unix timestamp + * - `os` (Number) - operation system code + * - `extra` (Array) - array of bytes with extra data (max 65536) + * - `name` (String) - file name (binary string) + * - `comment` (String) - comment (binary string) + * - `hcrc` (Boolean) - true if header crc should be added + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var deflate = new pako.Deflate({ level: 3}); + * + * deflate.push(chunk1, false); + * deflate.push(chunk2, true); // true -> last chunk + * + * if (deflate.err) { throw new Error(deflate.err); } + * + * console.log(deflate.result); + * ``` + **/ +function Deflate(options) { + if (!(this instanceof Deflate)) return new Deflate(options); + + this.options = utils.assign({ + level: Z_DEFAULT_COMPRESSION, + method: Z_DEFLATED, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: Z_DEFAULT_STRATEGY, + to: '' + }, options || {}); + + var opt = this.options; + + if (opt.raw && (opt.windowBits > 0)) { + opt.windowBits = -opt.windowBits; + } + + else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) { + opt.windowBits += 16; + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + + var status = zlib_deflate.deflateInit2( + this.strm, + opt.level, + opt.method, + opt.windowBits, + opt.memLevel, + opt.strategy + ); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + if (opt.header) { + zlib_deflate.deflateSetHeader(this.strm, opt.header); + } + + if (opt.dictionary) { + var dict; + // Convert data if needed + if (typeof opt.dictionary === 'string') { + // If we need to compress text, change encoding to utf8. + dict = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + dict = new Uint8Array(opt.dictionary); + } else { + dict = opt.dictionary; + } + + status = zlib_deflate.deflateSetDictionary(this.strm, dict); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + this._dict_set = true; + } +} + +/** + * Deflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be + * converted to utf8 byte sequence. + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with + * new compressed chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the compression context. + * + * On fail call [[Deflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * array format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ +Deflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + var status, _mode; + + if (this.ended) { return false; } + + _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH); + + // Convert data if needed + if (typeof data === 'string') { + // If we need to compress text, change encoding to utf8. + strm.input = strings.string2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + status = zlib_deflate.deflate(strm, _mode); /* no bad return value */ + + if (status !== Z_STREAM_END && status !== Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) { + if (this.options.to === 'string') { + this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out))); + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END); + + // Finalize on the last chunk. + if (_mode === Z_FINISH) { + status = zlib_deflate.deflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === Z_OK; + } + + // callback interim results if Z_SYNC_FLUSH. + if (_mode === Z_SYNC_FLUSH) { + this.onEnd(Z_OK); + strm.avail_out = 0; + return true; + } + + return true; +}; + + +/** + * Deflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ +Deflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); +}; + + +/** + * Deflate#onEnd(status) -> Void + * - status (Number): deflate status. 0 (Z_OK) on success, + * other if not. + * + * Called once after you tell deflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ +Deflate.prototype.onEnd = function (status) { + // On success - join + if (status === Z_OK) { + if (this.options.to === 'string') { + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; + + +/** + * deflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * Compress `data` with deflate algorithm and `options`. + * + * Supported options are: + * + * - level + * - windowBits + * - memLevel + * - strategy + * - dictionary + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , data = Uint8Array([1,2,3,4,5,6,7,8,9]); + * + * console.log(pako.deflate(data)); + * ``` + **/ +function deflate(input, options) { + var deflator = new Deflate(options); + + deflator.push(input, true); + + // That will never happens, if you don't cheat with options :) + if (deflator.err) { throw deflator.msg || msg[deflator.err]; } + + return deflator.result; +} + + +/** + * deflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ +function deflateRaw(input, options) { + options = options || {}; + options.raw = true; + return deflate(input, options); +} + + +/** + * gzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but create gzip wrapper instead of + * deflate one. + **/ +function gzip(input, options) { + options = options || {}; + options.gzip = true; + return deflate(input, options); +} + + +export { + Deflate, + deflate, + deflateRaw, + gzip +} diff --git a/bundler/tests/.cache/deno/8624d1347cc0ad3afc872383f6408aaef2a851fc.ts b/bundler/tests/.cache/deno/8624d1347cc0ad3afc872383f6408aaef2a851fc.ts new file mode 100644 index 00000000000..e9b00abc154 --- /dev/null +++ b/bundler/tests/.cache/deno/8624d1347cc0ad3afc872383f6408aaef2a851fc.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/mod.ts + + +export { MongoClient } from "./src/client.ts"; +export * from "./src/types.ts"; diff --git a/bundler/tests/.cache/deno/8629bcfba42545b2ee1ce8248bc5aae68d58ab1b.ts b/bundler/tests/.cache/deno/8629bcfba42545b2ee1ce8248bc5aae68d58ab1b.ts new file mode 100644 index 00000000000..e1b54e756e3 --- /dev/null +++ b/bundler/tests/.cache/deno/8629bcfba42545b2ee1ce8248bc5aae68d58ab1b.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/index.ts + + +import PNGDecoder from './PNGDecoder.ts'; +import PNGEncoder from './PNGEncoder.ts'; +import { + DecoderInputType, + IPNGDecoderOptions, + IDecodedPNG, + IImageData, + IPNGEncoderOptions, +} from './types.ts'; + +export * from './types.ts'; + +function decodePNG( + data: DecoderInputType, + options?: IPNGDecoderOptions, +): IDecodedPNG { + const decoder = new PNGDecoder(data, options); + return decoder.decode(); +} + +function encodePNG(png: IImageData, options?: IPNGEncoderOptions): Uint8Array { + const encoder = new PNGEncoder(png, options); + return encoder.encode(); +} + +export { decodePNG as decode, encodePNG as encode }; diff --git a/bundler/tests/.cache/deno/863a9a8b625e8c5c9bd057af13a2afa7616cc824.ts b/bundler/tests/.cache/deno/863a9a8b625e8c5c9bd057af13a2afa7616cc824.ts new file mode 100644 index 00000000000..bd9e8c5c774 --- /dev/null +++ b/bundler/tests/.cache/deno/863a9a8b625e8c5c9bd057af13a2afa7616cc824.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.73.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/865999f43cb76814155ac60062f88fbc05597000.ts b/bundler/tests/.cache/deno/865999f43cb76814155ac60062f88fbc05597000.ts new file mode 100644 index 00000000000..0b2671be251 --- /dev/null +++ b/bundler/tests/.cache/deno/865999f43cb76814155ac60062f88fbc05597000.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pathEq.js + + +import _curry3 from './internal/_curry3.js'; +import equals from './equals.js'; +import path from './path.js'; + + +/** + * Determines whether a nested path on an object has a specific value, in + * [`R.equals`](#equals) terms. Most likely used to filter a list. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Relation + * @typedefn Idx = String | Int | Symbol + * @sig [Idx] -> a -> {a} -> Boolean + * @param {Array} path The path of the nested property to use + * @param {*} val The value to compare the nested property with + * @param {Object} obj The object to check the nested property in + * @return {Boolean} `true` if the value equals the nested object property, + * `false` otherwise. + * @example + * + * const user1 = { address: { zipCode: 90210 } }; + * const user2 = { address: { zipCode: 55555 } }; + * const user3 = { name: 'Bob' }; + * const users = [ user1, user2, user3 ]; + * const isFamous = R.pathEq(['address', 'zipCode'], 90210); + * R.filter(isFamous, users); //=> [ user1 ] + */ +var pathEq = _curry3(function pathEq(_path, val, obj) { + return equals(path(_path, obj), val); +}); +export default pathEq; diff --git a/bundler/tests/.cache/deno/866601f459daec6af60511b9127866218f04922f.ts b/bundler/tests/.cache/deno/866601f459daec6af60511b9127866218f04922f.ts new file mode 100644 index 00000000000..b86b5c7ef12 --- /dev/null +++ b/bundler/tests/.cache/deno/866601f459daec6af60511b9127866218f04922f.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std/path/_interface.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/866f2a705fab3a19b2dbb218dba240a4a8682841.ts b/bundler/tests/.cache/deno/866f2a705fab3a19b2dbb218dba240a4a8682841.ts new file mode 100644 index 00000000000..55921346b66 --- /dev/null +++ b/bundler/tests/.cache/deno/866f2a705fab3a19b2dbb218dba240a4a8682841.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/assocPath.js + + +import _curry3 from './internal/_curry3.js'; +import _has from './internal/_has.js'; +import _isInteger from './internal/_isInteger.js'; +import _assoc from './internal/_assoc.js'; +import isNil from './isNil.js'; + +/** + * Makes a shallow clone of an object, setting or overriding the nodes required + * to create the given path, and placing the specific value at the tail end of + * that path. Note that this copies and flattens prototype properties onto the + * new object as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig [Idx] -> a -> {a} -> {a} + * @param {Array} path the path to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except along the specified path. + * @see R.dissocPath + * @example + * + * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}} + * + * // Any missing or non-object keys in path will be overridden + * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} + */ +var assocPath = _curry3(function assocPath(path, val, obj) { + if (path.length === 0) { + return val; + } + var idx = path[0]; + if (path.length > 1) { + var nextObj = (!isNil(obj) && _has(idx, obj)) ? obj[idx] : _isInteger(path[1]) ? [] : {}; + val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj); + } + return _assoc(idx, val, obj); +}); +export default assocPath; diff --git a/bundler/tests/.cache/deno/876468d184f239cc6918fbd8539cab6b97b67e3a.ts b/bundler/tests/.cache/deno/876468d184f239cc6918fbd8539cab6b97b67e3a.ts new file mode 100644 index 00000000000..3449d59bdfd --- /dev/null +++ b/bundler/tests/.cache/deno/876468d184f239cc6918fbd8539cab6b97b67e3a.ts @@ -0,0 +1,71 @@ +// Loaded from https://deno.land/std/uuid/v5.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { + bytesToUuid, + createBuffer, + stringToBytes, + uuidToBytes, +} from "./_common.ts"; +import { Sha1 } from "../hash/sha1.ts"; +import { assert } from "../_util/assert.ts"; + +const UUID_RE = + /^[0-9a-f]{8}-[0-9a-f]{4}-[5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +/** + * Validates the UUID v5. + * @param id UUID value. + */ +export function validate(id: string): boolean { + return UUID_RE.test(id); +} + +/** The options used for generating a v5 uuid. */ +export interface V5Options { + value: string | number[]; + namespace: string | number[]; +} + +/** + * Generates a RFC4122 v5 UUID (SHA-1 namespace-based). + * @param options Can use a namespace and value to create SHA-1 hash. + * @param buf Can allow the UUID to be written in byte-form starting at the offset. + * @param offset Index to start writing on the UUID bytes in buffer. + */ +export function generate( + options: V5Options, + buf?: number[], + offset?: number, +): string | number[] { + const i = (buf && offset) || 0; + + let { value, namespace } = options; + if (typeof value === "string") { + value = stringToBytes(value); + } + + if (typeof namespace === "string") { + namespace = uuidToBytes(namespace); + } + + assert( + namespace.length === 16, + "namespace must be uuid string or an Array of 16 byte values", + ); + + const content = namespace.concat(value); + const bytes = new Sha1().update(createBuffer(content)).digest(); + + bytes[6] = (bytes[6] & 0x0f) | 0x50; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + + if (buf !== undefined) { + for (let idx = 0; idx < 16; ++idx) { + buf[i + idx] = bytes[idx]; + } + } + + return buf ?? bytesToUuid(bytes); +} diff --git a/bundler/tests/.cache/deno/87a7ae05e9cfd3f6577face85df91cb015e83b5b.ts b/bundler/tests/.cache/deno/87a7ae05e9cfd3f6577face85df91cb015e83b5b.ts new file mode 100644 index 00000000000..ddfd3fd0008 --- /dev/null +++ b/bundler/tests/.cache/deno/87a7ae05e9cfd3f6577face85df91cb015e83b5b.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/promiseForObject.js + + +/** + * This function transforms a JS object `ObjMap>` into + * a `Promise>` + * + * This is akin to bluebird's `Promise.props`, but implemented only using + * `Promise.all` so it will work with any implementation of ES6 promises. + */ +export default function promiseForObject(object) { + const keys = Object.keys(object); + const valuesAndPromises = keys.map(name => object[name]); + return Promise.all(valuesAndPromises).then(values => values.reduce((resolvedObject, value, i) => { + resolvedObject[keys[i]] = value; + return resolvedObject; + }, Object.create(null))); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/87ad5cba6d36c8e443fa705207d29e851d61568c.ts b/bundler/tests/.cache/deno/87ad5cba6d36c8e443fa705207d29e851d61568c.ts new file mode 100644 index 00000000000..e1b16f35776 --- /dev/null +++ b/bundler/tests/.cache/deno/87ad5cba6d36c8e443fa705207d29e851d61568c.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/std@0.77.0/io/readers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/0452f9460f50f0f0aba18df43dc2b31906fb66cc/src/io/io.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +import { encode } from "../encoding/utf8.ts"; + +/** Reader utility for strings */ +export class StringReader extends Deno.Buffer { + constructor(s: string) { + super(encode(s).buffer); + } +} + +/** Reader utility for combining multiple readers */ +export class MultiReader implements Deno.Reader { + private readonly readers: Deno.Reader[]; + private currentIndex = 0; + + constructor(...readers: Deno.Reader[]) { + this.readers = readers; + } + + async read(p: Uint8Array): Promise { + const r = this.readers[this.currentIndex]; + if (!r) return null; + const result = await r.read(p); + if (result === null) { + this.currentIndex++; + return 0; + } + return result; + } +} + +/** + * A `LimitedReader` reads from `reader` but limits the amount of data returned to just `limit` bytes. + * Each call to `read` updates `limit` to reflect the new amount remaining. + * `read` returns `null` when `limit` <= `0` or + * when the underlying `reader` returns `null`. + */ +export class LimitedReader implements Deno.Reader { + constructor(public reader: Deno.Reader, public limit: number) {} + + async read(p: Uint8Array): Promise { + if (this.limit <= 0) { + return null; + } + + if (p.length > this.limit) { + p = p.subarray(0, this.limit); + } + const n = await this.reader.read(p); + if (n == null) { + return null; + } + + this.limit -= n; + return n; + } +} diff --git a/bundler/tests/.cache/deno/87c99d9dc1553f1e5895d0d1ddca39df9d88f8b4.ts b/bundler/tests/.cache/deno/87c99d9dc1553f1e5895d0d1ddca39df9d88f8b4.ts new file mode 100644 index 00000000000..7e804d5aa7e --- /dev/null +++ b/bundler/tests/.cache/deno/87c99d9dc1553f1e5895d0d1ddca39df9d88f8b4.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/lz4/wasm.js + + +//deno-fmt-ignore-file +export const source=Uint8Array.from(atob("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QcCjwAAgAjYCAEHIo8AAIAMgBmoiADYCACAAIAJBAXI2AgQgASADaiACNgIAIANBBGohACAGQQNyCyEGIAAgBjYCAAwHC0Hso8AAKAIAIgBBACAAIANNG0UEQEHso8AAIAM2AgALQfCjwABB/x82AgBB3KPAACAFNgIAQdijwAAgAzYCAEHEoMAAQbigwAA2AgBBzKDAAEHAoMAANgIAQcCgwABBuKDAADYCAEHUoMAAQcigwAA2AgBByKDAAEHAoMAANgIAQdygwABB0KDAADYCAEHQoMAAQcigwAA2AgBB5KDAAEHYoMAANgIAQdigwABB0KDAADYCAEHsoMAAQeCgwAA2AgBB4KDAAEHYoMAANgIAQfSgwABB6KDAADYCAEHooMAAQeCgwAA2AgBB/KDAAEHwoMAANgIAQfCgwABB6KDAADYCAEHko8AAQQA2AgBBhKHAAEH4oMAANgIAQfigwABB8KDAADYCAEGAocAAQfigwAA2AgBBjKHAAEGAocAANgIAQYihwABBgKHAADYCAEGUocAAQYihwAA2AgBBkKHAAEGIocAANgIAQZyhwABBkKHAADYCAEGYocAAQZChwAA2AgBBpKHAAEGYocAANgIAQaChwABBmKHAADYCAEGsocAAQaChwAA2AgBBqKHAAEGgocAANgIAQbShwABBqKHAADYCAEGwocAAQaihwAA2AgBBvKHAAEGwocAANgIAQbihwABBsKHAADYCAEHEocAAQbihwAA2AgBBzKHAAEHAocAANgIAQcChwABBuKHAADYCAEHUocAAQcihwAA2AgBByKHAAEHAocAANgIAQdyhwABB0KHAADYCAEHQocAAQcihwAA2AgBB5KHAAEHYocAANgIAQdihwABB0KHAADYCAEHsocAAQeChwAA2AgBB4KHAAEHYocAANgIAQfShwABB6KHAADYCAEHoocAAQeChwAA2AgBB/KHAAEHwocAANgIAQfChwABB6KHAADYCAEGEosAAQfihwAA2AgBB+KHAAEHwocAANgIAQYyiwABBgKLAADYCAEGAosAAQfihwAA2AgBBlKLAAEGIosAANgIAQYiiwABBgKLAADYCAEGcosAAQZCiwAA2AgBBkKLAAEGIosAANgIAQaSiwABBmKLAADYCAEGYosAAQZCiwAA2AgBBrKLAAEGgosAANgIAQaCi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AEsbIgIgAkEEaiICIAJBAnRBmJHAAGooAgBBC3QgAEsbIgIgAkECaiICIAJBAnRBmJHAAGooAgBBC3QgAEsbIgIgAkEBaiICIAJBAnRBmJHAAGooAgBBC3QgAEsbIgJBAnRBmJHAAGooAgBBC3QiBCAARiAEIABJaiACaiIEQR5NBEAgBEECdCEGQbEFIQACQCAEQR5GDQAgBkGckcAAaiICRQ0AIAIoAgBBFXYhAAtBACECIARBf2oiBSAETQRAIAVBH08NBiAFQQJ0QZiRwABqKAIAQf///wBxIQILAkAgACAGQZiRwABqKAIAQRV2IgRBAWpGDQAgAyACayECIABBf2ohBUEAIQADQCAEQbAFSw0DIAAgBEGkksAAai0AAGoiACACSw0BIAUgBEEBaiIERw0ACwsgBEEBcQ0GIANBgIAESQ0CIANBgIAISQ0DIANBkPxHakGQ/AtJIANBtdlzakG12ytJciADQeKLdGpB4gtJIANBn6h0akGfGElyciADQf7//wBxQZ7wCkYgA0He4nRqQQ5JciADQaKydWpBIklycg0EIANBy5F1akEKSw0IDAQLIARBH0HYl8AAEBwACyAEQbEFQeiXwAAQHAALIANBkIbAAEEpQeKGwABBogJBhInAAEG1AhAPRQ0BDAULIANBuYvAAEEmQYWMwABBrwFBtI3AAEGjAxAPDQQLIANBAXJnQQJ2QQdzrUKAgICA0ACEDAILIAVBH0GUksAAEBwACyADQQFyZ0ECdkEHc61CgICAgNAAhAshB0EDIQQMAQtBASEECyADIQILA0AgBCEDQdwAIQBBASEFQQEhBAJAAn4CQAJAAkACQCADQQFrDgMBBQACCwJAAkACQAJAIAdCIIinQf8BcUEBaw4FAwIBAAYFC0H1ACEAIAdC/////49gg0KAgICAMIQMBgtB+wAhACAHQv////+PYINCgICAgCCEDAULIAIgB6ciA0ECdEEccXZBD3EiAEEwciAAQdcAaiAAQQpJGyEAIAdCf3xC/////w+DIAdCgICAgHCDhCADDQQaIAdC/////49gg0KAgICAEIQMBAtB/QAhACAHQv////+PYIMMAwtBACEEIAIhAAwDCyABKAIYQScgASgCHCgCEBEAAA8LIAdC/////49gg0KAgICAwACECyEHQQMhBAsgASgCGCAAIAEoAhwoAhARAABFDQALCyAFC8gGAQx/IABBEGooAgAhAwJAAkACQAJAIABBCGooAgAiDUEBRwRAIANBAUYNASAAKAIYIAEgAiAAQRxqKAIAKAIMEQEAIQMMAwsgA0EBRw0BCwJAIAJFBEBBACECDAELIAEgAmohByAAQRRqKAIAQQFqIQogASIDIQsDQCADQQFqIQUCQAJ/IAMsAAAiBEF/TARAAn8gBSAHRgRAQQAhCCAHDAELIAMtAAFBP3EhCCADQQJqIgULIQMgBEEfcSEJIAggCUEGdHIgBEH/AXEiDkHfAU0NARoCfyADIAdGBEBBACEMIAcMAQsgAy0AAEE/cSEMIANBAWoiBQshBCAMIAhBBnRyIQggCCAJQQx0ciAOQfABSQ0BGgJ/IAQgB0YEQCAFIQNBAAwBCyAEQQFqIQMgBC0AAEE/cQsgCUESdEGAgPAAcSAIQQZ0cnIiBEGAgMQARw0CDAQLIARB/wFxCyEEIAUhAwsgCkF/aiIKBEAgBiALayADaiEGIAMhCyADIAdHDQEMAgsLIARBgIDEAEYNAAJAIAZFIAIgBkZyRQRAQQAhAyAGIAJPDQEgASAGaiwAAEFASA0BCyABIQMLIAYgAiADGyECIAMgASADGyEBCyANQQFGDQAMAgtBACEFIAIEQCACIQQgASEDA0AgBSADLQAAQcABcUGAAUZqIQUgA0EBaiEDIARBf2oiBA0ACwsgAiAFayAAKAIMIgdPDQFBACEGQQAhBSACBEAgAiEEIAEhAwNAIAUgAy0AAEHAAXFBgAFGaiEFIANBAWohAyAEQX9qIgQNAAsLIAUgAmsgB2oiAyEEAkACQAJAQQAgAC0AICIFIAVBA0YbQQFrDgMBAAECCyADQQF2IQYgA0EBakEBdiEEDAELQQAhBCADIQYLIAZBAWohAwJAA0AgA0F/aiIDRQ0BIAAoAhggACgCBCAAKAIcKAIQEQAARQ0AC0EBDwsgACgCBCEFQQEhAyAAKAIYIAEgAiAAKAIcKAIMEQEADQAgBEEBaiEDIAAoAhwhASAAKAIYIQADQCADQX9qIgNFBEBBAA8LIAAgBSABKAIQEQAARQ0AC0EBDwsgAw8LIAAoAhggASACIABBHGooAgAoAgwRAQALwgYBBH8gACABaiECAkACQAJAAkACQCAAQQRqKAIAIgNBAXENACADQQNxRQ0BIAAoAgAiAyABaiEBIAAgA2siAEHIo8AAKAIARgRAIAIoAgRBA3FBA0cNAUHAo8AAIAE2AgAgAiACKAIEQX5xNgIEIAAgAUEBcjYCBCACIAE2AgAPCyAAIAMQDgsCQCACQQRqKAIAIgNBAnEEQCACQQRqIANBfnE2AgAgACABQQFyNgIEIAAgAWogATYCAAwBCwJAIAJBzKPAACgCAEcEQEHIo8AAKAIAIAJGDQEgAiADQXhxIgIQDiAAIAEgAmoiAUEBcjYCBCAAIAFqIAE2AgAgAEHIo8AAKAIARw0CQcCjwAAgATYCAA8LQcyjwAAgADYCAEHEo8AAQcSjwAAoAgAgAWoiATYCACAAIAFBAXI2AgQgAEHIo8AAKAIARw0CQcCjwABBADYCAEHIo8AAQQA2AgAPC0HIo8AAIAA2AgBBwKPAAEHAo8AAKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAFBgAJJDQMgAEIANwIQIABBHGoCf0EAIAFBCHYiA0UNABpBHyABQf///wdLDQAaIAFBBiADZyICa0EfcXZBAXEgAkEBdGtBPmoLIgI2AgAgAkECdEHAosAAaiEDAkACQEG0oMAAKAIAIgRBASACQR9xdCIFcQRAIAMoAgAiA0EEaigCAEF4cSABRw0BIAMhAgwCC0G0oMAAIAQgBXI2AgAgAyAANgIADAQLIAFBAEEZIAJBAXZrQR9xIAJBH0YbdCEEA0AgAyAEQR12QQRxakEQaiIFKAIAIgJFDQMgBEEBdCEEIAIhAyACQQRqKAIAQXhxIAFHDQALCyACKAIIIgEgADYCDCACIAA2AgggAEEYakEANgIAIAAgAjYCDCAAIAE2AggLDwsgBSAANgIACyAAQRhqIAM2AgAgACAANgIMIAAgADYCCA8LIAFBA3YiAkEDdEG4oMAAaiEBAn9BsKDAACgCACIDQQEgAkEfcXQiAnEEQCABKAIIDAELQbCgwAAgAiADcjYCACABCyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCAujBgEKfyMAQTBrIgQkACAEQSRqIAE2AgAgBEEDOgAoIARCgICAgIAENwMIIAQgADYCICAEQQA2AhggBEEANgIQAkACQAJAIAIoAggiCARAIAIoAgAhBiACKAIEIgogAkEMaigCACIDIAMgCksbIgtFDQEgAkEUaigCACEHIAIoAhAhCUEBIQMgACAGKAIAIAYoAgQgASgCDBEBAA0DIAhBEGohAiAGQQhqIQBBASEFAkACQANAIAQgAkF0aigCADYCDCAEIAJBDGotAAA6ACggBCACQXhqKAIANgIIIAJBCGooAgAhA0EAIQhBACEBAkACQAJAIAJBBGooAgBBAWsOAgACAQsgAyAHTw0DIANBA3QgCWoiDCgCBEEHRw0BIAwoAgAoAgAhAwtBASEBCyAEIAM2AhQgBCABNgIQIAIoAgAhAwJAAkACQCACQXxqKAIAQQFrDgIAAgELIAMgB08NBCADQQN0IAlqIgEoAgRBB0cNASABKAIAKAIAIQMLQQEhCAsgBCADNgIcIAQgCDYCGCACQXBqKAIAIgEgB0kEQCAJIAFBA3RqIgEoAgAgBEEIaiABKAIEEQAADQYgBSALTw0FIABBBGohASAAKAIAIQggAkEgaiECIABBCGohAEEBIQMgBUEBaiEFIAQoAiAgCCABKAIAIAQoAiQoAgwRAQBFDQEMBwsLIAEgB0HAhcAAEBwACyADIAdBsIXAABAcAAsgAyAHQbCFwAAQHAALIAIoAgAhBiACKAIEIgogAkEUaigCACIDIAMgCksbIgdFDQAgAigCECECQQEhAyAAIAYoAgAgBigCBCABKAIMEQEADQIgBkEIaiEAQQEhBQNAIAIoAgAgBEEIaiACQQRqKAIAEQAADQIgBSAHTw0BIABBBGohASAAKAIAIQkgAkEIaiECIABBCGohACAFQQFqIQUgBCgCICAJIAEoAgAgBCgCJCgCDBEBAEUNAAsMAgsgCiAFSwRAQQEhAyAEKAIgIAYgBUEDdGoiACgCACAAKAIEIAQoAiQoAgwRAQANAgtBACEDDAELQQEhAwsgBEEwaiQAIAML5wUBCH8jAEHQgAJrIgMkACADQSBqIAEgAhApIAMgAygCJCIENgIsIAMgAygCICICNgIoIANBMGogBBAhQQAhAQNAIAFBgIABRkUEQCADQdCAAWogAWpBfzYCACABQQRqIQEMAQsLIANBADYCTCADIAQ2AkQgAyACNgJAIAMgA0EwajYCSCADQdAAaiADQdCAAWpBgIABECsaA0AgCCEBQQAhAgJ/AkACQANAAkAgAUEEaiIKIARPDQAgA0FAaxAyIgZB/x9NBEAgBkECdCADakHQAGooAgAiB0F/Rg0BIANBQGsgBxAjIANBQGsQPEcNASABIAdrIgZBgIAETw0BIANBGGogAygCQCIFIAQgCkHMnMAAEC0gAygCGCEJIAMoAhwhASADQRBqIAUgBCAHQQRqQdycwAAQLSADKAIUIgUgASABIAVLGyEFQQAhASADKAIQIQQDQCABIAVPDQQgASAJai0AACABIARqLQAARw0EIAFBAWohAQwACwALIAZBgCBB7JzAABAcAAsgA0FAa0EBEBsEQCACQQFqIQIgAygCRCEEIAMoAkwhAQwBCwsgAkEEdEFwIAJBD0kbIQpBACEBIAUhBkEAIQUMAQsgA0FAayABQQRqEBsaIAJBBHRBcCACQQ9JGyEKIAZBgP4DcUEIdiEJQQEhBUEPIAFBDksNARoLIAELIQQgAygCSCIHIAQgCnIQKiACQQ9PBEAgA0FAayACQXFqEC8LIANBCGogCCACIAhqIAMoAkAgAygCRCIEQfycwAAQKCAHIAMoAgggAygCDBAxIAUEQCAHIAYQKiAHIAkQKiABQQ9PBEAgA0FAayABQXFqEC8LIAMoAkwhCCAGIQUMAQsLIANB2IABaiIBIANBOGooAgA2AgAgAyADKQMwNwPQgAEgA0EoahA0IANByABqIAEoAgA2AgAgAyADKQPQgAE3A0AgAyADQUBrECYgACADKQMANwIAIANB0IACaiQAC+MFAgN/AX4jAEHgAGsiAyQAIANBEGogASACECkgAyADKAIUIgE2AhwgAyADKAIQIgI2AhggA0EwakGAIBAhIANBADoATCADIAE2AkQgAyACNgJAIAMgA0EwajYCSANAAkACQAJAAkACQAJAAkACQAJAIAFFDQAgA0HQAGogA0FAa0EBEBggAy0AUEEBRg0BIAMoAlgEQCADIAMoAlQtAAAiAToATCABQQR2IgFBD0YEQCADQdAAaiADQUBrEBYgAykDUCIGp0H/AXFBAUYNBCAGQiCIp0EPaiEBCyADKAJIIANB0ABqIANBQGsgARAYIAMtAFBBAUYEQCADLQBRQQBHIQEMCQsgA0EIaiADKAJUIAMoAlgiASABQbiawAAQLiADKAIIIAMoAgwQMSADKAJERQ0BIANB0ABqIANBQGtBAhAYIAMtAFBBAUYNBSADKAJYQQJHDQQgAygCVC8AACEBIAMtAExB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QQBBAEGcnMAAEBwAC30BAX8jAEEQayICJAACQCAALQAAQQFGBEAgAiABKAIYQZCewABBGiABQRxqKAIAKAIMEQEAIgA6AAgMAQsgAiABKAIYQaqewABBDSABQRxqKAIAKAIMEQEAIgA6AAgLIAIgATYCACACQQA6AAkgAkEANgIEIAJBEGokACAAC4EBAgJ/An4jAEEQayIDJAAgAAJ/IAEoAgQiBCACTwRAIANBCGogASgCACAEIAJBrJzAABAuIAMpAwghBSADIAEoAgAgASgCBCACQbycwAAQLSADKQMAIQYgAEEEaiAFNwIAIAEgBjcCAEEADAELIABBADoAAUEBCzoAACADQRBqJAALdwEDfyMAQSBrIgIkAAJAIAAoAgAgARARRQRAIAFBHGooAgAhAyABKAIYIAJBHGpBADYCACACQeSewAA2AhggAkIBNwIMIAJBqIXAADYCCCADIAJBCGoQBkUNAQsgAkEgaiQAQQEPCyAAKAIEIAEQESACQSBqJAALgAEBAX8jAEFAaiIDJAAgA0ErNgIMIANByJrAADYCCCADIAE2AhQgAyAANgIQIANBLGpBAjYCACADQTxqQQM2AgAgA0ICNwIcIANB7JjAADYCGCADQQQ2AjQgAyADQTBqNgIoIAMgA0EQajYCOCADIANBCGo2AjAgA0EYaiACEDAAC3ABAn8CQANAIAEEQCAAIAAoAgwiAkEEaiAAKAIESQR/IAAQMiIDQf8fSw0DIAAgA0ECdGpBEGogAjYCACAAKAIMBSACC0EBajYCDCABQX9qIQEMAQsLIAAoAgwgACgCBE0PCyADQYAgQfCdwAAQHAALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQI2AgAgA0ICNwIMIANB6IDAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEDAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQYSDwAA2AgggA0ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhAwAAtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBAjYCACADQgI3AgwgA0G8g8AANgIIIANBAjYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQMAALWQEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGImsAAIAJBCGoQBiACQSBqJAALVgEBfyMAQSBrIgIkACACIAA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGImsAAIAJBCGoQBiACQSBqJAALaQECfyMAQRBrIgIkAAJAIAFBf0oEQCACQQhqIAEQMyACKAIIIgNFDQEgAigCDCEBIABBADYCCCAAIAM2AgAgACABNgIEIAJBEGokAA8LEDgACyABQQFBhKTAACgCACIAQQEgABsRAgAAC2oBAn9BASEAAkACQEH4o8AAKAIAQQFHBEBB+KPAAEKBgICAEDcDAAwBC0H8o8AAQfyjwAAoAgBBAWoiADYCACAAQQJLDQELQYCkwAAoAgAiAUF/TA0AQYCkwAAgATYCACAAQQFLDQAACwALUwEBfyMAQRBrIgIkACACIAEgAUEEaiAAKAIAIAAoAgRBgJ7AABAoIAIoAgRBBEcEQCACQQhqQfSawABBgJ7AABAaAAsgAigCACgAACACQRBqJAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIABBAWohACABQQFqIQEgAkF/aiICDQEMAgsLIAQgBWshAwsgAwtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQAADQEaCyACRQRAQQAPCyAAKAIYIAIgAyAAQRxqKAIAKAIMEQEACwtEAQF/IwBBIGsiAiQAIAJBGGogAUEIaigCADYCACACIAEpAgA3AxAgAkEIaiACQRBqEBUgACACKQMINwIAIAJBIGokAAtHAQF/IwBBIGsiAyQAIANBFGpBADYCACADQeSewAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhAwAAs6AAJAIAIgAU8EQCAEIAJPDQEgAiAEIAUQHQALIAEgAiAFEB4ACyAAIAIgAWs2AgQgACABIANqNgIACz8BAX8jAEEgayIDJAAgAyACNgIYIAMg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XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcbHo0LWNvbXByZXNzaW9uLTAuNy4wXHNyY1xjb21wcmVzcy5yc4wOEABkAAAAWAAAAA0AAACMDhAAZAAAAHYAAAAcAAAASW52YWxpZERlZHVwbGljYXRpb25PZmZzZXRVbmV4cGVjdGVkRW5kY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQAAdA8QABcAAACiAQAADwAAAHNyYy9saWJzdGQvcGFuaWNraW5nLnJzVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5AMAPEABuAAAAIgAAAAkAAABDOlxVc2Vyc1xlbGlhc1wucnVzdHVwXHRvb2xjaGFpbnNcc3RhYmxlLXg4Nl82NC1wYy13aW5kb3dzLW1zdmNcbGliL3J1c3RsaWIvc3JjL3J1c3Rcc3JjL2xpYmNvcmUvbWFjcm9zL21vZC5ycwB7CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS40NC4xIChjNzA4N2ZlMDAgMjAyMC0wNi0xNykGd2FscnVzBjAuMTcuMAx3YXNtLWJpbmRnZW4SMC4yLjY0ICgzMWMyZDZmYmUp"),A=>A.charCodeAt(0));let A,I=null;function g(){return null!==I&&I.buffer===A.memory.buffer||(I=new Uint8Array(A.memory.buffer)),I}let B=0;function Q(A,I){const Q=I(1*A.length);return g().set(A,Q/1),B=A.length,Q}let C=null;function E(){return null!==C&&C.buffer===A.memory.buffer||(C=new Int32Array(A.memory.buffer)),C}function D(A,I){return g().subarray(A/1,A/1+I)}export function lz4_compress(I){var g=Q(I,A.__wbindgen_malloc),C=B;A.lz4_compress(8,g,C);var w=E()[2],o=E()[3],i=D(w,o).slice();return A.__wbindgen_free(w,1*o),i}export function lz4_decompress(I){var g=Q(I,A.__wbindgen_malloc),C=B;A.lz4_decompress(8,g,C);var w=E()[2],o=E()[3],i=D(w,o).slice();return A.__wbindgen_free(w,1*o),i}async function w(A,I){if("function"==typeof Response&&A instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(A,I)}catch(I){if("application/wasm"==A.headers.get("Content-Type"))throw I;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",I)}const g=await A.arrayBuffer();return await WebAssembly.instantiate(g,I)}{const g=await WebAssembly.instantiate(A,I);return g instanceof WebAssembly.Instance?{instance:g,module:A}:g}}async function o(I){void 0===I&&(I=import.meta.url.replace(/\.js$/,"_bg.wasm"));("string"==typeof I||"function"==typeof Request&&I instanceof Request||"function"==typeof URL&&I instanceof URL)&&(I=fetch(I));const{instance:g,module:B}=await w(await I,{});return A=g.exports,o.__wbindgen_wasm_module=B,A}export default o; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/87c9be5e57ebc3b7a43345f000d440c4864abc6d.ts b/bundler/tests/.cache/deno/87c9be5e57ebc3b7a43345f000d440c4864abc6d.ts new file mode 100644 index 00000000000..067f3060b99 --- /dev/null +++ b/bundler/tests/.cache/deno/87c9be5e57ebc3b7a43345f000d440c4864abc6d.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/mysql/src/logger.ts + + +import { log } from "../deps.ts"; + +let logger = log.getLogger(); + +export { logger as log }; + +let isDebug = false; + +/** @ignore */ +export function debug(func: Function) { + if (isDebug) { + func(); + } +} + +export interface LoggerConfig { + /** Enable logging (default: true) */ + enable?: boolean; + /** The minimal level to print (default: "INFO") */ + level?: log.LevelName; + /** A deno_std/log.Logger instance to be used as logger. When used, `level` is ignored. */ + logger?: log.Logger; +} + +export async function configLogger(config: LoggerConfig) { + let { enable = true, level = "INFO" } = config; + if (config.logger) level = config.logger.levelName; + isDebug = level == "DEBUG"; + + if (!enable) { + logger = new log.Logger("fakeLogger", "NOTSET", {}); + logger.level = 100; + } else { + if (!config.logger) { + await log.setup({ + handlers: { + console: new log.handlers.ConsoleHandler(level), + }, + loggers: { + default: { + level: "DEBUG", + handlers: ["console"], + }, + }, + }); + logger = log.getLogger(); + } else { + logger = config.logger; + } + } +} diff --git a/bundler/tests/.cache/deno/87cc413efc498644ea24f76da5fc760031209e99.ts b/bundler/tests/.cache/deno/87cc413efc498644ea24f76da5fc760031209e99.ts new file mode 100644 index 00000000000..e9607a1e996 --- /dev/null +++ b/bundler/tests/.cache/deno/87cc413efc498644ea24f76da5fc760031209e99.ts @@ -0,0 +1,17 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isAlphanumeric.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { alphanumeric } from '../helpers/alpha.ts'; + +export const isAlphanumeric = (str: string, locale = 'en-US') => { + assertString(str); + if (locale in alphanumeric) { + return (alphanumeric as any)[locale].test(str); + } + throw new Error(`Invalid locale '${locale}'`); +}; + +export const alphanumericLocales = Object.keys(alphanumeric); diff --git a/bundler/tests/.cache/deno/87e099029b8bcf692e95aeed7e7a0583672d2ca0.ts b/bundler/tests/.cache/deno/87e099029b8bcf692e95aeed7e7a0583672d2ca0.ts new file mode 100644 index 00000000000..3ba3c6b7e25 --- /dev/null +++ b/bundler/tests/.cache/deno/87e099029b8bcf692e95aeed7e7a0583672d2ca0.ts @@ -0,0 +1,140 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/httpError.ts + + +/*! + * Adapted directly from http-errors at https://github.com/jshttp/http-errors + * which is licensed as follows: + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Jonathan Ong me@jongleberry.com + * Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +import { Status, STATUS_TEXT } from "./deps.ts"; +import type { ErrorStatus } from "./types.d.ts"; + +const errorStatusMap = { + "BadRequest": 400, + "Unauthorized": 401, + "PaymentRequired": 402, + "Forbidden": 403, + "NotFound": 404, + "MethodNotAllowed": 405, + "NotAcceptable": 406, + "ProxyAuthRequired": 407, + "RequestTimeout": 408, + "Conflict": 409, + "Gone": 410, + "LengthRequired": 411, + "PreconditionFailed": 412, + "RequestEntityTooLarge": 413, + "RequestURITooLong": 414, + "UnsupportedMediaType": 415, + "RequestedRangeNotSatisfiable": 416, + "ExpectationFailed": 417, + "Teapot": 418, + "MisdirectedRequest": 421, + "UnprocessableEntity": 422, + "Locked": 423, + "FailedDependency": 424, + "UpgradeRequired": 426, + "PreconditionRequired": 428, + "TooManyRequests": 429, + "RequestHeaderFieldsTooLarge": 431, + "UnavailableForLegalReasons": 451, + "InternalServerError": 500, + "NotImplemented": 501, + "BadGateway": 502, + "ServiceUnavailable": 503, + "GatewayTimeout": 504, + "HTTPVersionNotSupported": 505, + "VariantAlsoNegotiates": 506, + "InsufficientStorage": 507, + "LoopDetected": 508, + "NotExtended": 510, + "NetworkAuthenticationRequired": 511, +}; + +/** A base class for individual classes of HTTP errors. */ +export class HttpError extends Error { + /** Determines if details about the error should be automatically exposed + * in a response. This is automatically set to `true` for 4XX errors, as + * they represent errors in the request, while 5XX errors are set to `false` + * as they are internal server errors and exposing details could leak + * important server security information. */ + expose = false; + + /** The HTTP error status associated with this class of error. */ + status = Status.InternalServerError; +} + +function createHttpErrorConstructor( + status: ErrorStatus, +): E { + const name = `${Status[status]}Error`; + const Ctor = class extends HttpError { + constructor(message?: string) { + super(); + // deno-lint-ignore no-explicit-any + this.message = message || STATUS_TEXT.get(status as any)!; + this.status = status; + this.expose = status >= 400 && status < 500 ? true : false; + Object.defineProperty(this, "name", { + configurable: true, + enumerable: false, + value: name, + writable: true, + }); + } + }; + return Ctor as E; +} + +/** An object which contains an individual HTTP Error for each HTTP status + * error code (4XX and 5XX). When errors are raised related to a particular + * HTTP status code, they will be of the appropriate instance located on this + * object. Also, context's `.throw()` will throw errors based on the passed + * status code. */ +export const httpErrors: Record = + // deno-lint-ignore no-explicit-any + {} as any; + +for (const [key, value] of Object.entries(errorStatusMap)) { + httpErrors[key as keyof typeof errorStatusMap] = createHttpErrorConstructor( + value, + ); +} + +/** Create a specific class of `HttpError` based on the status, which defaults + * to _500 Internal Server Error_. + */ +export function createHttpError( + status: ErrorStatus = 500, + message?: string, +): HttpError { + return new httpErrors[Status[status] as keyof typeof errorStatusMap](message); +} + +// deno-lint-ignore no-explicit-any +export function isHttpError(value: any): value is HttpError { + return value instanceof HttpError; +} diff --git a/bundler/tests/.cache/deno/87e40089c43556862776b8260f22fefcd3c56ea5.ts b/bundler/tests/.cache/deno/87e40089c43556862776b8260f22fefcd3c56ea5.ts new file mode 100644 index 00000000000..dda42393d42 --- /dev/null +++ b/bundler/tests/.cache/deno/87e40089c43556862776b8260f22fefcd3c56ea5.ts @@ -0,0 +1,105 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/helpers/fields.ts + + +import type { + DataTypes, + FieldOptions, + FieldProps, + FieldType, + FieldTypeString, +} from "../data-types.ts"; + +/** Add a model field to a table schema. */ +export function addFieldToSchema( + table: any, + fieldOptions: FieldOptions, +) { + const type = typeof fieldOptions.type === "string" + ? fieldOptions.type + : fieldOptions.type.type!; + + let instruction; + + if (typeof fieldOptions.type === "object") { + if (fieldOptions.type.relationship) { + const relationshipPKName = fieldOptions.type.relationship.model + .getComputedPrimaryKey(); + + const relationshipPKProps: FieldProps = fieldOptions.type.relationship + .model + .getComputedPrimaryProps(); + + const relationshipPKType: FieldTypeString = fieldOptions.type.relationship + .model + .getComputedPrimaryType(); + + if (relationshipPKType === "integer") { + const foreignField = table[relationshipPKType](fieldOptions.name); + + if (!relationshipPKProps.allowNull) { + foreignField.notNullable(); + } + + if (relationshipPKProps.autoIncrement) { + foreignField.unsigned(); + } + } else { + table[relationshipPKType](fieldOptions.name); + } + + table + .foreign(fieldOptions.name) + .references( + fieldOptions.type.relationship.model + .field(relationshipPKName), + ) + .onDelete("CASCADE"); + + return; + } + + const fieldNameArgs: [string | number | (string | number)[]] = [ + fieldOptions.name, + ]; + + if (fieldOptions.type.length) { + fieldNameArgs.push(fieldOptions.type.length); + } + + if (fieldOptions.type.precision) { + fieldNameArgs.push(fieldOptions.type.precision); + } + + if (fieldOptions.type.scale) { + fieldNameArgs.push(fieldOptions.type.scale); + } + + if (fieldOptions.type.values) { + fieldNameArgs.push(fieldOptions.type.values); + } + + if (fieldOptions.type.autoIncrement) { + instruction = table.increments(fieldOptions.name); + } else { + instruction = table[type](...fieldNameArgs); + } + + if (fieldOptions.type.primaryKey) { + instruction = instruction.primary(fieldOptions.name); + } + + if (fieldOptions.type.unique) { + instruction = instruction.unique(fieldOptions.name); + } + + if (!fieldOptions.type.allowNull) { + instruction = instruction.notNullable(); + } + } else { + instruction = table[type](fieldOptions.name); + } + + if (typeof fieldOptions.defaultValue !== "undefined") { + instruction.defaultTo(fieldOptions.defaultValue); + } +} diff --git a/bundler/tests/.cache/deno/88d2b1efed0ac364f10f08623ebb0a3b806c9515.ts b/bundler/tests/.cache/deno/88d2b1efed0ac364f10f08623ebb0a3b806c9515.ts new file mode 100644 index 00000000000..057f505229f --- /dev/null +++ b/bundler/tests/.cache/deno/88d2b1efed0ac364f10f08623ebb0a3b806c9515.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/addIndex.js + + +import _concat from './internal/_concat.js'; +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; + + +/** + * Creates a new list iteration function from an existing one by adding two new + * parameters to its callback function: the current index, and the entire list. + * + * This would turn, for instance, [`R.map`](#map) function into one that + * more closely resembles `Array.prototype.map`. Note that this will only work + * for functions in which the iteration callback function is the first + * parameter, and where the list is the last parameter. (This latter might be + * unimportant if the list parameter is not used.) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Function + * @category List + * @sig (((a ...) -> b) ... -> [a] -> *) -> (((a ..., Int, [a]) -> b) ... -> [a] -> *) + * @param {Function} fn A list iteration function that does not pass index or list to its callback + * @return {Function} An altered list iteration function that passes (item, index, list) to its callback + * @example + * + * const mapIndexed = R.addIndex(R.map); + * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); + * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] + */ +var addIndex = _curry1(function addIndex(fn) { + return curryN(fn.length, function() { + var idx = 0; + var origFn = arguments[0]; + var list = arguments[arguments.length - 1]; + var args = Array.prototype.slice.call(arguments, 0); + args[0] = function() { + var result = origFn.apply(this, _concat(arguments, [idx, list])); + idx += 1; + return result; + }; + return fn.apply(this, args); + }); +}); +export default addIndex; diff --git a/bundler/tests/.cache/deno/88d81ca8b3ebdc9ebf5722a7e77dc0a3f1631e79.ts b/bundler/tests/.cache/deno/88d81ca8b3ebdc9ebf5722a7e77dc0a3f1631e79.ts new file mode 100644 index 00000000000..b27e44feb52 --- /dev/null +++ b/bundler/tests/.cache/deno/88d81ca8b3ebdc9ebf5722a7e77dc0a3f1631e79.ts @@ -0,0 +1,92 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/isMediaType.ts + + +/*! + * Adapted directly from type-is at https://github.com/jshttp/type-is/ + * which is licensed as follows: + * + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +import { lookup } from "./deps.ts"; +import { format, parse } from "./mediaTyper.ts"; + +function mimeMatch(expected: string | undefined, actual: string): boolean { + if (expected === undefined) { + return false; + } + + const actualParts = actual.split("/"); + const expectedParts = expected.split("/"); + + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + + const [actualType, actualSubtype] = actualParts; + const [expectedType, expectedSubtype] = expectedParts; + + if (expectedType !== "*" && expectedType !== actualType) { + return false; + } + + if (expectedSubtype.substr(0, 2) === "*+") { + return ( + expectedSubtype.length <= actualSubtype.length + 1 && + expectedSubtype.substr(1) === + actualSubtype.substr(1 - expectedSubtype.length) + ); + } + + if (expectedSubtype !== "*" && expectedSubtype !== actualSubtype) { + return false; + } + + return true; +} + +function normalize(type: string): string | undefined { + if (type === "urlencoded") { + return "application/x-www-form-urlencoded"; + } else if (type === "multipart") { + return "multipart/*"; + } else if (type[0] === "+") { + return `*/*${type}`; + } + return type.includes("/") ? type : lookup(type); +} + +function normalizeType(value: string): string | undefined { + try { + const val = value.split(";"); + const type = parse(val[0]); + return format(type); + } catch { + return; + } +} + +/** Given a value of the content type of a request and an array of types, + * provide the matching type or `false` if no types are matched. + */ +export function isMediaType(value: string, types: string[]): string | false { + const val = normalizeType(value); + + if (!val) { + return false; + } + + if (!types.length) { + return val; + } + + for (const type of types) { + if (mimeMatch(normalize(type), val)) { + return type[0] === "+" || type.includes("*") ? val : type; + } + } + + return false; +} diff --git a/bundler/tests/.cache/deno/88f14b5c902f5c2804b5d9908ba501ac85035f6d.ts b/bundler/tests/.cache/deno/88f14b5c902f5c2804b5d9908ba501ac85035f6d.ts new file mode 100644 index 00000000000..7917c708ecf --- /dev/null +++ b/bundler/tests/.cache/deno/88f14b5c902f5c2804b5d9908ba501ac85035f6d.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/andThen.js + + +import _curry2 from './internal/_curry2.js'; +import _assertPromise from './internal/_assertPromise.js'; + + +/** + * Returns the result of applying the onSuccess function to the value inside + * a successfully resolved promise. This is useful for working with promises + * inside function compositions. + * + * @func + * @memberOf R + * @since v0.27.1 + * @category Function + * @sig (a -> b) -> (Promise e a) -> (Promise e b) + * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b) + * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value. + * @param {Promise} p + * @return {Promise} The result of calling `p.then(onSuccess)` + * @see R.otherwise + * @example + * + * const makeQuery = email => ({ query: { email }}); + * const fetchMember = request => + * Promise.resolve({ firstName: 'Bob', lastName: 'Loblaw', id: 42 }); + * + * //getMemberName :: String -> Promise ({ firstName, lastName }) + * const getMemberName = R.pipe( + * makeQuery, + * fetchMember, + * R.andThen(R.pick(['firstName', 'lastName'])) + * ); + * + * getMemberName('bob@gmail.com').then(console.log); + */ +var andThen = _curry2(function andThen(f, p) { + _assertPromise('andThen', p); + + return p.then(f); +}); +export default andThen; diff --git a/bundler/tests/.cache/deno/88f8248fd33fa1fba094673e020d5e3736299e99.ts b/bundler/tests/.cache/deno/88f8248fd33fa1fba094673e020d5e3736299e99.ts new file mode 100644 index 00000000000..814da91fcbb --- /dev/null +++ b/bundler/tests/.cache/deno/88f8248fd33fa1fba094673e020d5e3736299e99.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/std@0.86.0/io/writers.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { decode, encode } from "../encoding/utf8.ts"; + +/** Writer utility for buffering string chunks */ +export class StringWriter implements Writer, WriterSync { + private chunks: Uint8Array[] = []; + private byteLength = 0; + private cache: string | undefined; + + constructor(private base: string = "") { + const c = encode(base); + this.chunks.push(c); + this.byteLength += c.byteLength; + } + + write(p: Uint8Array): Promise { + return Promise.resolve(this.writeSync(p)); + } + + writeSync(p: Uint8Array): number { + this.chunks.push(p); + this.byteLength += p.byteLength; + this.cache = undefined; + return p.byteLength; + } + + toString(): string { + if (this.cache) { + return this.cache; + } + const buf = new Uint8Array(this.byteLength); + let offs = 0; + for (const chunk of this.chunks) { + buf.set(chunk, offs); + offs += chunk.byteLength; + } + this.cache = decode(buf); + return this.cache; + } +} diff --git a/bundler/tests/.cache/deno/891789659e854539b2ef863677ed886d9630b3e0.ts b/bundler/tests/.cache/deno/891789659e854539b2ef863677ed886d9630b3e0.ts new file mode 100644 index 00000000000..3f011e6fe17 --- /dev/null +++ b/bundler/tests/.cache/deno/891789659e854539b2ef863677ed886d9630b3e0.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/src/row_objects.ts + + +import { ColumnName, Empty, Rows } from "./rows.ts"; + +export class RowObjects> { + private _rows: Rows; + private _columns?: ColumnName[]; + + /** + * RowObjects + * + * RowObjects represent a set of results + * from a query in the form of an object. + * They are iterable and yield objects. + * + * This class is not exported from the module + * and the only correct way to obtain a `RowObjects` + * object is by making a database query + * and using the `asObject()` method on the `Rows` result. + */ + constructor(rows: Rows) { + this._rows = rows; + + if (rows !== Empty) { + this._columns = this._rows.columns(); + } + } + + /** + * RowObjects.return + * + * Implements the closing iterator + * protocol. See also: + * https://exploringjs.com/es6/ch_iteration.html#sec_closing-iterators + */ + return(): IteratorResult { + return this._rows.return(); + } + + /** + * RowObjects.next + * + * Implements the iterator protocol. + */ + next(): IteratorResult { + const { value, done } = this._rows.next(); + if (done) { + return { value: value, done: true }; + } + + const rowAsObject: any = {}; + + for (let i = 0; i < value.length; i++) { + rowAsObject[this._columns![i].name] = value[i]; + } + + return { value: rowAsObject, done: false }; + } + + [Symbol.iterator]() { + return this; + } +} diff --git a/bundler/tests/.cache/deno/892270386d4b9fafaf84cf40e0fcc71fcf47471a.ts b/bundler/tests/.cache/deno/892270386d4b9fafaf84cf40e0fcc71fcf47471a.ts new file mode 100644 index 00000000000..0eb2eb81499 --- /dev/null +++ b/bundler/tests/.cache/deno/892270386d4b9fafaf84cf40e0fcc71fcf47471a.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/case/sentenceCase.ts + + +import normalCase from "./normalCase.ts"; +import upperFirstCase from "./upperFirstCase.ts"; + +export default function sentenceCase(value: string, locale?: string): string { + return upperFirstCase(normalCase(value, locale), locale); +} diff --git a/bundler/tests/.cache/deno/89c23e5bdd8c6f9c5b43be87c9be29acfdb96d75.ts b/bundler/tests/.cache/deno/89c23e5bdd8c6f9c5b43be87c9be29acfdb96d75.ts new file mode 100644 index 00000000000..1f4c9e81aa7 --- /dev/null +++ b/bundler/tests/.cache/deno/89c23e5bdd8c6f9c5b43be87c9be29acfdb96d75.ts @@ -0,0 +1,1801 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/loader/loader.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "../error.ts"; +import { Mark } from "../mark.ts"; +import type { Type } from "../type.ts"; +import * as common from "../utils.ts"; +import { LoaderState, LoaderStateOptions, ResultType } from "./loader_state.ts"; + +type Any = common.Any; +type ArrayObject = common.ArrayObject; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +const CONTEXT_FLOW_IN = 1; +const CONTEXT_FLOW_OUT = 2; +const CONTEXT_BLOCK_IN = 3; +const CONTEXT_BLOCK_OUT = 4; + +const CHOMPING_CLIP = 1; +const CHOMPING_STRIP = 2; +const CHOMPING_KEEP = 3; + +const PATTERN_NON_PRINTABLE = + // deno-lint-ignore no-control-regex + /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +const PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +const PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +const PATTERN_TAG_URI = + /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + +function _class(obj: unknown): string { + return Object.prototype.toString.call(obj); +} + +function isEOL(c: number): boolean { + return c === 0x0a || /* LF */ c === 0x0d /* CR */; +} + +function isWhiteSpace(c: number): boolean { + return c === 0x09 || /* Tab */ c === 0x20 /* Space */; +} + +function isWsOrEol(c: number): boolean { + return ( + c === 0x09 /* Tab */ || + c === 0x20 /* Space */ || + c === 0x0a /* LF */ || + c === 0x0d /* CR */ + ); +} + +function isFlowIndicator(c: number): boolean { + return ( + c === 0x2c /* , */ || + c === 0x5b /* [ */ || + c === 0x5d /* ] */ || + c === 0x7b /* { */ || + c === 0x7d /* } */ + ); +} + +function fromHexCode(c: number): number { + if (0x30 <= /* 0 */ c && c <= 0x39 /* 9 */) { + return c - 0x30; + } + + const lc = c | 0x20; + + if (0x61 <= /* a */ lc && lc <= 0x66 /* f */) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c: number): number { + if (c === 0x78 /* x */) { + return 2; + } + if (c === 0x75 /* u */) { + return 4; + } + if (c === 0x55 /* U */) { + return 8; + } + return 0; +} + +function fromDecimalCode(c: number): number { + if (0x30 <= /* 0 */ c && c <= 0x39 /* 9 */) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c: number): string { + /* eslint:disable:prettier */ + return c === 0x30 /* 0 */ + ? "\x00" + : c === 0x61 /* a */ + ? "\x07" + : c === 0x62 /* b */ + ? "\x08" + : c === 0x74 /* t */ + ? "\x09" + : c === 0x09 /* Tab */ + ? "\x09" + : c === 0x6e /* n */ + ? "\x0A" + : c === 0x76 /* v */ + ? "\x0B" + : c === 0x66 /* f */ + ? "\x0C" + : c === 0x72 /* r */ + ? "\x0D" + : c === 0x65 /* e */ + ? "\x1B" + : c === 0x20 /* Space */ + ? " " + : c === 0x22 /* " */ + ? "\x22" + : c === 0x2f /* / */ + ? "/" + : c === 0x5c /* \ */ + ? "\x5C" + : c === 0x4e /* N */ + ? "\x85" + : c === 0x5f /* _ */ + ? "\xA0" + : c === 0x4c /* L */ + ? "\u2028" + : c === 0x50 /* P */ + ? "\u2029" + : ""; + /* eslint:enable:prettier */ +} + +function charFromCodepoint(c: number): string { + if (c <= 0xffff) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xd800, + ((c - 0x010000) & 0x03ff) + 0xdc00, + ); +} + +const simpleEscapeCheck = new Array(256); // integer, for fast access +const simpleEscapeMap = new Array(256); +for (let i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + +function generateError(state: LoaderState, message: string): YAMLError { + return new YAMLError( + message, + new Mark( + state.filename as string, + state.input, + state.position, + state.line, + state.position - state.lineStart, + ), + ); +} + +function throwError(state: LoaderState, message: string): never { + throw generateError(state, message); +} + +function throwWarning(state: LoaderState, message: string): void { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + +interface DirectiveHandlers { + [directive: string]: ( + state: LoaderState, + name: string, + ...args: string[] + ) => void; +} + +const directiveHandlers: DirectiveHandlers = { + YAML(state, _name, ...args: string[]) { + if (state.version !== null) { + return throwError(state, "duplication of %YAML directive"); + } + + if (args.length !== 1) { + return throwError(state, "YAML directive accepts exactly one argument"); + } + + const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + if (match === null) { + return throwError(state, "ill-formed argument of the YAML directive"); + } + + const major = parseInt(match[1], 10); + const minor = parseInt(match[2], 10); + if (major !== 1) { + return throwError(state, "unacceptable YAML version of the document"); + } + + state.version = args[0]; + state.checkLineBreaks = minor < 2; + if (minor !== 1 && minor !== 2) { + return throwWarning(state, "unsupported YAML version of the document"); + } + }, + + TAG(state, _name, ...args: string[]): void { + if (args.length !== 2) { + return throwError(state, "TAG directive accepts exactly two arguments"); + } + + const handle = args[0]; + const prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + return throwError( + state, + "ill-formed tag handle (first argument) of the TAG directive", + ); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + return throwError( + state, + `there is a previously declared suffix for "${handle}" tag handle`, + ); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + return throwError( + state, + "ill-formed tag prefix (second argument) of the TAG directive", + ); + } + + if (typeof state.tagMap === "undefined") { + state.tagMap = {}; + } + state.tagMap[handle] = prefix; + }, +}; + +function captureSegment( + state: LoaderState, + start: number, + end: number, + checkJson: boolean, +): void { + let result: string; + if (start < end) { + result = state.input.slice(start, end); + + if (checkJson) { + for ( + let position = 0, length = result.length; + position < length; + position++ + ) { + const character = result.charCodeAt(position); + if ( + !(character === 0x09 || (0x20 <= character && character <= 0x10ffff)) + ) { + return throwError(state, "expected valid JSON character"); + } + } + } else if (PATTERN_NON_PRINTABLE.test(result)) { + return throwError(state, "the stream contains non-printable characters"); + } + + state.result += result; + } +} + +function mergeMappings( + state: LoaderState, + destination: ArrayObject, + source: ArrayObject, + overridableKeys: ArrayObject, +): void { + if (!common.isObject(source)) { + return throwError( + state, + "cannot merge mappings; the provided source object is unacceptable", + ); + } + + const keys = Object.keys(source); + for (let i = 0, len = keys.length; i < len; i++) { + const key = keys[i]; + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = (source as ArrayObject)[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair( + state: LoaderState, + result: ArrayObject | null, + overridableKeys: ArrayObject, + keyTag: string | null, + keyNode: Any, + valueNode: unknown, + startLine?: number, + startPos?: number, +): ArrayObject { + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (let index = 0, quantity = keyNode.length; index < quantity; index++) { + if (Array.isArray(keyNode[index])) { + return throwError(state, "nested arrays are not supported inside keys"); + } + + if ( + typeof keyNode === "object" && + _class(keyNode[index]) === "[object Object]" + ) { + keyNode[index] = "[object Object]"; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { + keyNode = "[object Object]"; + } + + keyNode = String(keyNode); + + if (result === null) { + result = {}; + } + + if (keyTag === "tag:yaml.org,2002:merge") { + if (Array.isArray(valueNode)) { + for ( + let index = 0, quantity = valueNode.length; + index < quantity; + index++ + ) { + mergeMappings(state, result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, result, valueNode as ArrayObject, overridableKeys); + } + } else { + if ( + !state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(result, keyNode) + ) { + state.line = startLine || state.line; + state.position = startPos || state.position; + return throwError(state, "duplicated mapping key"); + } + result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return result; +} + +function readLineBreak(state: LoaderState): void { + const ch = state.input.charCodeAt(state.position); + + if (ch === 0x0a /* LF */) { + state.position++; + } else if (ch === 0x0d /* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0a /* LF */) { + state.position++; + } + } else { + return throwError(state, "a line break is expected"); + } + + state.line += 1; + state.lineStart = state.position; +} + +function skipSeparationSpace( + state: LoaderState, + allowComments: boolean, + checkIndent: number, +): number { + let lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0a && /* LF */ ch !== 0x0d && /* CR */ ch !== 0); + } + + if (isEOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20 /* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if ( + checkIndent !== -1 && + lineBreaks !== 0 && + state.lineIndent < checkIndent + ) { + throwWarning(state, "deficient indentation"); + } + + return lineBreaks; +} + +function testDocumentSeparator(state: LoaderState): boolean { + let _position = state.position; + let ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ( + (ch === 0x2d || /* - */ ch === 0x2e) /* . */ && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2) + ) { + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || isWsOrEol(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state: LoaderState, count: number): void { + if (count === 1) { + state.result += " "; + } else if (count > 1) { + state.result += common.repeat("\n", count - 1); + } +} + +function readPlainScalar( + state: LoaderState, + nodeIndent: number, + withinFlowCollection: boolean, +): boolean { + const kind = state.kind; + const result = state.result; + let ch = state.input.charCodeAt(state.position); + + if ( + isWsOrEol(ch) || + isFlowIndicator(ch) || + ch === 0x23 /* # */ || + ch === 0x26 /* & */ || + ch === 0x2a /* * */ || + ch === 0x21 /* ! */ || + ch === 0x7c /* | */ || + ch === 0x3e /* > */ || + ch === 0x27 /* ' */ || + ch === 0x22 /* " */ || + ch === 0x25 /* % */ || + ch === 0x40 /* @ */ || + ch === 0x60 /* ` */ + ) { + return false; + } + + let following: number; + if (ch === 0x3f || /* ? */ ch === 0x2d /* - */) { + following = state.input.charCodeAt(state.position + 1); + + if ( + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) + ) { + return false; + } + } + + state.kind = "scalar"; + state.result = ""; + let captureEnd: number, + captureStart = (captureEnd = state.position); + let hasPendingContent = false; + let line = 0; + while (ch !== 0) { + if (ch === 0x3a /* : */) { + following = state.input.charCodeAt(state.position + 1); + + if ( + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) + ) { + break; + } + } else if (ch === 0x23 /* # */) { + const preceding = state.input.charCodeAt(state.position - 1); + + if (isWsOrEol(preceding)) { + break; + } + } else if ( + (state.position === state.lineStart && testDocumentSeparator(state)) || + (withinFlowCollection && isFlowIndicator(ch)) + ) { + break; + } else if (isEOL(ch)) { + line = state.line; + const lineStart = state.lineStart; + const lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = line; + state.lineStart = lineStart; + state.lineIndent = lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!isWhiteSpace(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = kind; + state.result = result; + return false; +} + +function readSingleQuotedScalar( + state: LoaderState, + nodeIndent: number, +): boolean { + let ch, captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27 /* ' */) { + return false; + } + + state.kind = "scalar"; + state.result = ""; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27 /* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27 /* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (isEOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if ( + state.position === state.lineStart && + testDocumentSeparator(state) + ) { + return throwError( + state, + "unexpected end of the document within a single quoted scalar", + ); + } else { + state.position++; + captureEnd = state.position; + } + } + + return throwError( + state, + "unexpected end of the stream within a single quoted scalar", + ); +} + +function readDoubleQuotedScalar( + state: LoaderState, + nodeIndent: number, +): boolean { + let ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22 /* " */) { + return false; + } + + state.kind = "scalar"; + state.result = ""; + state.position++; + let captureEnd: number, + captureStart = (captureEnd = state.position); + let tmp: number; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22 /* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + } + if (ch === 0x5c /* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (isEOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + let hexLength = tmp; + let hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + return throwError(state, "expected hexadecimal character"); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + } else { + return throwError(state, "unknown escape sequence"); + } + + captureStart = captureEnd = state.position; + } else if (isEOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if ( + state.position === state.lineStart && + testDocumentSeparator(state) + ) { + return throwError( + state, + "unexpected end of the document within a double quoted scalar", + ); + } else { + state.position++; + captureEnd = state.position; + } + } + + return throwError( + state, + "unexpected end of the stream within a double quoted scalar", + ); +} + +function readFlowCollection(state: LoaderState, nodeIndent: number): boolean { + let ch = state.input.charCodeAt(state.position); + let terminator: number; + let isMapping = true; + let result: ResultType = {}; + if (ch === 0x5b /* [ */) { + terminator = 0x5d; /* ] */ + isMapping = false; + result = []; + } else if (ch === 0x7b /* { */) { + terminator = 0x7d; /* } */ + } else { + return false; + } + + if ( + state.anchor !== null && + typeof state.anchor != "undefined" && + typeof state.anchorMap != "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(++state.position); + + const tag = state.tag, + anchor = state.anchor; + let readNext = true; + let valueNode, + keyNode, + keyTag: string | null = (keyNode = valueNode = null), + isExplicitPair: boolean, + isPair = (isExplicitPair = false); + let following = 0, + line = 0; + const overridableKeys: ArrayObject = {}; + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = tag; + state.anchor = anchor; + state.kind = isMapping ? "mapping" : "sequence"; + state.result = result; + return true; + } + if (!readNext) { + return throwError(state, "missed comma between flow collection entries"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3f /* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (isWsOrEol(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + line = state.line; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag || null; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === line) && ch === 0x3a /* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag, + keyNode, + valueNode, + ); + } else if (isPair) { + (result as ArrayObject[]).push( + storeMappingPair( + state, + null, + overridableKeys, + keyTag, + keyNode, + valueNode, + ), + ); + } else { + (result as ResultType[]).push(keyNode as ResultType); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2c /* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + return throwError( + state, + "unexpected end of the stream within a flow collection", + ); +} + +function readBlockScalar(state: LoaderState, nodeIndent: number): boolean { + let chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false; + + let ch = state.input.charCodeAt(state.position); + + let folding = false; + if (ch === 0x7c /* | */) { + folding = false; + } else if (ch === 0x3e /* > */) { + folding = true; + } else { + return false; + } + + state.kind = "scalar"; + state.result = ""; + + let tmp = 0; + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2b || /* + */ ch === 0x2d /* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 0x2b /* + */ ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + return throwError(state, "repeat of a chomping mode identifier"); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + return throwError( + state, + "bad explicit indentation width of a block scalar; it cannot be less than one", + ); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + return throwError(state, "repeat of an indentation width identifier"); + } + } else { + break; + } + } + + if (isWhiteSpace(ch)) { + do { + ch = state.input.charCodeAt(++state.position); + } while (isWhiteSpace(ch)); + + if (ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!isEOL(ch) && ch !== 0); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ( + (!detectedIndent || state.lineIndent < textIndent) && + ch === 0x20 /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (isEOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + // i.e. only if the scalar is not empty. + state.result += "\n"; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (isWhiteSpace(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat("\n", emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { + // i.e. only if we have already read some scalar content. + state.result += " "; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat("\n", emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + const captureStart = state.position; + + while (!isEOL(ch) && ch !== 0) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state: LoaderState, nodeIndent: number): boolean { + let line: number, + following: number, + detected = false, + ch: number; + const tag = state.tag, + anchor = state.anchor, + result: unknown[] = []; + + if ( + state.anchor !== null && + typeof state.anchor !== "undefined" && + typeof state.anchorMap !== "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (ch !== 0x2d /* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!isWsOrEol(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + line = state.line; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === line || state.lineIndent > nodeIndent) && ch !== 0) { + return throwError(state, "bad indentation of a sequence entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = tag; + state.anchor = anchor; + state.kind = "sequence"; + state.result = result; + return true; + } + return false; +} + +function readBlockMapping( + state: LoaderState, + nodeIndent: number, + flowIndent: number, +): boolean { + const tag = state.tag, + anchor = state.anchor, + result = {}, + overridableKeys = {}; + let following: number, + allowCompact = false, + line: number, + pos: number, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch: number; + + if ( + state.anchor !== null && + typeof state.anchor !== "undefined" && + typeof state.anchorMap !== "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + line = state.line; // Save the current line. + pos = state.position; + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3f || /* ? */ ch === 0x3a) && /* : */ isWsOrEol(following)) { + if (ch === 0x3f /* ? */) { + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + } else { + return throwError( + state, + "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line", + ); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + // eslint-disable-next-line @typescript-eslint/no-use-before-define + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + if (state.line === line) { + ch = state.input.charCodeAt(state.position); + + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3a /* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!isWsOrEol(ch)) { + return throwError( + state, + "a whitespace character is expected after the key-value separator within a block mapping", + ); + } + + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { + return throwError( + state, + "can not read an implicit mapping pair; a colon is missed", + ); + } else { + state.tag = tag; + state.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else if (detected) { + return throwError( + state, + "can not read a block mapping entry; a multiline key may not be an implicit key", + ); + } else { + state.tag = tag; + state.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else { + break; // Reading is done. Go to the epilogue. + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === line || state.lineIndent > nodeIndent) { + if ( + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact) + ) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + valueNode, + line, + pos, + ); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && ch !== 0) { + return throwError(state, "bad indentation of a mapping entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = tag; + state.anchor = anchor; + state.kind = "mapping"; + state.result = result; + } + + return detected; +} + +function readTagProperty(state: LoaderState): boolean { + let position: number, + isVerbatim = false, + isNamed = false, + tagHandle = "", + tagName: string, + ch: number; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21 /* ! */) return false; + + if (state.tag !== null) { + return throwError(state, "duplication of a tag property"); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3c /* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 0x21 /* ! */) { + isNamed = true; + tagHandle = "!!"; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = "!"; + } + + position = state.position; + + if (isVerbatim) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 0x3e /* > */); + + if (state.position < state.length) { + tagName = state.input.slice(position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + return throwError( + state, + "unexpected end of the stream within a verbatim tag", + ); + } + } else { + while (ch !== 0 && !isWsOrEol(ch)) { + if (ch === 0x21 /* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + return throwError( + state, + "named tag handle cannot contain such characters", + ); + } + + isNamed = true; + position = state.position + 1; + } else { + return throwError( + state, + "tag suffix cannot contain exclamation marks", + ); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + return throwError( + state, + "tag suffix cannot contain flow indicator characters", + ); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + return throwError( + state, + `tag name cannot contain such characters: ${tagName}`, + ); + } + + if (isVerbatim) { + state.tag = tagName; + } else if ( + typeof state.tagMap !== "undefined" && + _hasOwnProperty.call(state.tagMap, tagHandle) + ) { + state.tag = state.tagMap[tagHandle] + tagName; + } else if (tagHandle === "!") { + state.tag = `!${tagName}`; + } else if (tagHandle === "!!") { + state.tag = `tag:yaml.org,2002:${tagName}`; + } else { + return throwError(state, `undeclared tag handle "${tagHandle}"`); + } + + return true; +} + +function readAnchorProperty(state: LoaderState): boolean { + let ch = state.input.charCodeAt(state.position); + if (ch !== 0x26 /* & */) return false; + + if (state.anchor !== null) { + return throwError(state, "duplication of an anchor property"); + } + ch = state.input.charCodeAt(++state.position); + + const position = state.position; + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === position) { + return throwError( + state, + "name of an anchor node must contain at least one character", + ); + } + + state.anchor = state.input.slice(position, state.position); + return true; +} + +function readAlias(state: LoaderState): boolean { + let ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2a /* * */) return false; + + ch = state.input.charCodeAt(++state.position); + const _position = state.position; + + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + return throwError( + state, + "name of an alias node must contain at least one character", + ); + } + + const alias = state.input.slice(_position, state.position); + if ( + typeof state.anchorMap !== "undefined" && + !Object.prototype.hasOwnProperty.call(state.anchorMap, alias) + ) { + return throwError(state, `unidentified alias "${alias}"`); + } + + if (typeof state.anchorMap !== "undefined") { + state.result = state.anchorMap[alias]; + } + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode( + state: LoaderState, + parentIndent: number, + nodeContext: number, + allowToSeek: boolean, + allowCompact: boolean, +): boolean { + let allowBlockScalars: boolean, + allowBlockCollections: boolean, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + const cond = CONTEXT_FLOW_IN === nodeContext || + CONTEXT_FLOW_OUT === nodeContext; + flowIndent = cond ? parentIndent : parentIndent + 1; + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if ( + (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent))) || + readFlowCollection(state, flowIndent) + ) { + hasContent = true; + } else { + if ( + (allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent) + ) { + hasContent = true; + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + return throwError( + state, + "alias node should not have Any properties", + ); + } + } else if ( + readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext) + ) { + hasContent = true; + + if (state.tag === null) { + state.tag = "?"; + } + } + + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && + readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== "!") { + if (state.tag === "?") { + for ( + let typeIndex = 0, typeQuantity = state.implicitTypes.length; + typeIndex < typeQuantity; + typeIndex++ + ) { + type = state.implicitTypes[typeIndex]; + + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only assigned to plain scalars. So, it isn't + // needed to check for 'kind' conformity. + + if (type.resolve(state.result)) { + // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if ( + _hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag) + ) { + type = state.typeMap[state.kind || "fallback"][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + return throwError( + state, + `unacceptable node kind for !<${state.tag}> tag; it should be "${type.kind}", not "${state.kind}"`, + ); + } + + if (!type.resolve(state.result)) { + // `state.result` updated in resolver if matched + return throwError( + state, + `cannot resolve a node with !<${state.tag}> explicit tag`, + ); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + return throwError(state, `unknown tag !<${state.tag}>`); + } + } + + if (state.listener && state.listener !== null) { + state.listener("close", state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state: LoaderState): void { + const documentStart = state.position; + let position: number, + directiveName: string, + directiveArgs: string[], + hasDirectives = false, + ch: number; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25 /* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + position = state.position; + + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + return throwError( + state, + "directive name must not be less than one character in length", + ); + } + + while (ch !== 0) { + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !isEOL(ch)); + break; + } + + if (isEOL(ch)) break; + + position = state.position; + + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, ...directiveArgs); + } else { + throwWarning(state, `unknown document directive "${directiveName}"`); + } + } + + skipSeparationSpace(state, true, -1); + + if ( + state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2d /* - */ && + state.input.charCodeAt(state.position + 1) === 0x2d /* - */ && + state.input.charCodeAt(state.position + 2) === 0x2d /* - */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { + return throwError(state, "directives end mark is expected"); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if ( + state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test( + state.input.slice(documentStart, state.position), + ) + ) { + throwWarning(state, "non-ASCII line breaks are interpreted as content"); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 0x2e /* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < state.length - 1) { + return throwError( + state, + "end of the stream or a document separator is expected", + ); + } else { + return; + } +} + +function loadDocuments(input: string, options?: LoaderStateOptions): unknown[] { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + // Add tailing `\n` if not exists + if ( + input.charCodeAt(input.length - 1) !== 0x0a /* LF */ && + input.charCodeAt(input.length - 1) !== 0x0d /* CR */ + ) { + input += "\n"; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xfeff) { + input = input.slice(1); + } + } + + const state = new LoaderState(input, options); + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += "\0"; + + while (state.input.charCodeAt(state.position) === 0x20 /* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < state.length - 1) { + readDocument(state); + } + + return state.documents; +} + +export type CbFunction = (doc: unknown) => void; +function isCbFunction(fn: unknown): fn is CbFunction { + return typeof fn === "function"; +} + +export function loadAll( + input: string, + iteratorOrOption?: T, + options?: LoaderStateOptions, +): T extends CbFunction ? void : unknown[] { + if (!isCbFunction(iteratorOrOption)) { + return loadDocuments(input, iteratorOrOption as LoaderStateOptions) as Any; + } + + const documents = loadDocuments(input, options); + const iterator = iteratorOrOption; + for (let index = 0, length = documents.length; index < length; index++) { + iterator(documents[index]); + } + + return void 0 as Any; +} + +export function load(input: string, options?: LoaderStateOptions): unknown { + const documents = loadDocuments(input, options); + + if (documents.length === 0) { + return; + } + if (documents.length === 1) { + return documents[0]; + } + throw new YAMLError( + "expected a single document in the stream, but found more", + ); +} diff --git a/bundler/tests/.cache/deno/89ee41c649f759a8c80ad7ff3e9aedae374e89b0.ts b/bundler/tests/.cache/deno/89ee41c649f759a8c80ad7ff3e9aedae374e89b0.ts new file mode 100644 index 00000000000..64e1665437c --- /dev/null +++ b/bundler/tests/.cache/deno/89ee41c649f759a8c80ad7ff3e9aedae374e89b0.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/splitWhenever.js + + +import _curryN from './internal/_curryN.js'; +/** + * Splits an array into slices on every occurrence of a value. + * + * @func + * @memberOf R + * @since v0.26.1 + * @category List + * @sig (a -> Boolean) -> [a] -> [[a]] + * @param {Function} pred The predicate that determines where the array is split. + * @param {Array} list The array to be split. + * @return {Array} + * @example + * + * R.splitWhenever(R.equals(2), [1, 2, 3, 2, 4, 5, 2, 6, 7]); //=> [[1], [3], [4, 5], [6, 7]] + */ +var splitWhenever = _curryN(2, [], function splitWhenever(pred, list) { + var acc = []; + var curr = []; + for (var i = 0;i < list.length;i = i + 1) { + if (!pred(list[i])) { + curr.push(list[i]); + } + if ((i < list.length - 1 && pred(list[i + 1]) || i === list.length - 1) && curr.length > 0) { + acc.push(curr); + curr = []; + } + } + return acc; +}); +export default splitWhenever; diff --git a/bundler/tests/.cache/deno/8a19fba544ec06977bb86085de674ce408e02f6a.ts b/bundler/tests/.cache/deno/8a19fba544ec06977bb86085de674ce408e02f6a.ts new file mode 100644 index 00000000000..1438c19ce48 --- /dev/null +++ b/bundler/tests/.cache/deno/8a19fba544ec06977bb86085de674ce408e02f6a.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/groupWith.js + + +import _curry2 from './internal/_curry2.js'; + +/** + * Takes a list and returns a list of lists where each sublist's elements are + * all satisfied pairwise comparison according to the provided function. + * Only adjacent elements are passed to the comparison function. + * + * @func + * @memberOf R + * @since v0.21.0 + * @category List + * @sig ((a, a) → Boolean) → [a] → [[a]] + * @param {Function} fn Function for determining whether two given (adjacent) + * elements should be in the same group + * @param {Array} list The array to group. Also accepts a string, which will be + * treated as a list of characters. + * @return {List} A list that contains sublists of elements, + * whose concatenations are equal to the original list. + * @example + * + * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] + * + * const isVowel = R.test(/^[aeiou]$/i); + * R.groupWith(R.eqBy(isVowel), 'aestiou') + * //=> ['ae', 'st', 'iou'] + */ +var groupWith = _curry2(function(fn, list) { + var res = []; + var idx = 0; + var len = list.length; + while (idx < len) { + var nextidx = idx + 1; + while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) { + nextidx += 1; + } + res.push(list.slice(idx, nextidx)); + idx = nextidx; + } + return res; +}); +export default groupWith; diff --git a/bundler/tests/.cache/deno/8a303ac125019e9022c442b85052ab759fd4a86e.ts b/bundler/tests/.cache/deno/8a303ac125019e9022c442b85052ab759fd4a86e.ts new file mode 100644 index 00000000000..5161fda04cd --- /dev/null +++ b/bundler/tests/.cache/deno/8a303ac125019e9022c442b85052ab759fd4a86e.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dropWhile.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xdropWhile from './internal/_xdropWhile.js'; +import slice from './slice.js'; + + +/** + * Returns a new list excluding the leading elements of a given list which + * satisfy the supplied predicate function. It passes each value to the supplied + * predicate function, skipping elements while the predicate function returns + * `true`. The predicate function is applied to one argument: *(value)*. + * + * Dispatches to the `dropWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.takeWhile, R.transduce, R.addIndex + * @example + * + * const lteTwo = x => x <= 2; + * + * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] + * + * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da' + */ +var dropWhile = _curry2(_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) { + var idx = 0; + var len = xs.length; + while (idx < len && pred(xs[idx])) { + idx += 1; + } + return slice(idx, Infinity, xs); +})); +export default dropWhile; diff --git a/bundler/tests/.cache/deno/8ac066d3f0ad434161827a16a20b19da6d22082b.ts b/bundler/tests/.cache/deno/8ac066d3f0ad434161827a16a20b19da6d22082b.ts new file mode 100644 index 00000000000..715c877ff08 --- /dev/null +++ b/bundler/tests/.cache/deno/8ac066d3f0ad434161827a16a20b19da6d22082b.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/ascend.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Makes an ascending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0` + * @see R.descend + * @example + * + * const byAge = R.ascend(R.prop('age')); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByYoungestFirst = R.sort(byAge, people); + * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] + */ +var ascend = _curry3(function ascend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; +}); +export default ascend; diff --git a/bundler/tests/.cache/deno/8b6db76640b287c88c926b3e0ed529474fd6c381.ts b/bundler/tests/.cache/deno/8b6db76640b287c88c926b3e0ed529474fd6c381.ts new file mode 100644 index 00000000000..fe1230c56a7 --- /dev/null +++ b/bundler/tests/.cache/deno/8b6db76640b287c88c926b3e0ed529474fd6c381.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/util.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { isAbsolute, join, normalize, sep, Sha1, Status } from "./deps.ts"; +import { createHttpError } from "./httpError.ts"; +import type { ErrorStatus, RedirectStatus } from "./types.d.ts"; + +const ENCODE_CHARS_REGEXP = + /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; +const HTAB = "\t".charCodeAt(0); +const SPACE = " ".charCodeAt(0); +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); +const UNMATCHED_SURROGATE_PAIR_REGEXP = + /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; +const UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + +/** Safely decode a URI component, where if it fails, instead of throwing, + * just returns the original string + */ +export function decodeComponent(text: string) { + try { + return decodeURIComponent(text); + } catch { + return text; + } +} + +/** Encodes the url preventing double enconding */ +export function encodeUrl(url: string) { + return String(url) + .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) + .replace(ENCODE_CHARS_REGEXP, encodeURI); +} + +export function getRandomFilename(prefix = "", extension = ""): string { + return `${prefix}${ + new Sha1().update(crypto.getRandomValues(new Uint8Array(256))).hex() + }${extension ? `.${extension}` : ""}`; +} + +/** Determines if a HTTP `Status` is an `ErrorStatus` (4XX or 5XX). */ +export function isErrorStatus(value: Status): value is ErrorStatus { + return [ + Status.BadRequest, + Status.Unauthorized, + Status.PaymentRequired, + Status.Forbidden, + Status.NotFound, + Status.MethodNotAllowed, + Status.NotAcceptable, + Status.ProxyAuthRequired, + Status.RequestTimeout, + Status.Conflict, + Status.Gone, + Status.LengthRequired, + Status.PreconditionFailed, + Status.RequestEntityTooLarge, + Status.RequestURITooLong, + Status.UnsupportedMediaType, + Status.RequestedRangeNotSatisfiable, + Status.ExpectationFailed, + Status.Teapot, + Status.MisdirectedRequest, + Status.UnprocessableEntity, + Status.Locked, + Status.FailedDependency, + Status.UpgradeRequired, + Status.PreconditionRequired, + Status.TooManyRequests, + Status.RequestHeaderFieldsTooLarge, + Status.UnavailableForLegalReasons, + Status.InternalServerError, + Status.NotImplemented, + Status.BadGateway, + Status.ServiceUnavailable, + Status.GatewayTimeout, + Status.HTTPVersionNotSupported, + Status.VariantAlsoNegotiates, + Status.InsufficientStorage, + Status.LoopDetected, + Status.NotExtended, + Status.NetworkAuthenticationRequired, + ].includes(value); +} + +/** Determines if a HTTP `Status` is a `RedirectStatus` (3XX). */ +export function isRedirectStatus(value: Status): value is RedirectStatus { + return [ + Status.MultipleChoices, + Status.MovedPermanently, + Status.Found, + Status.SeeOther, + Status.UseProxy, + Status.TemporaryRedirect, + Status.PermanentRedirect, + ].includes(value); +} + +/** Determines if a string "looks" like HTML */ +export function isHtml(value: string): boolean { + return /^\s*<(?:!DOCTYPE|html|body)/i.test(value); +} + +/** Returns `u8` with leading white space removed. */ +export function skipLWSPChar(u8: Uint8Array): Uint8Array { + const result = new Uint8Array(u8.length); + let j = 0; + for (let i = 0; i < u8.length; i++) { + if (u8[i] === SPACE || u8[i] === HTAB) continue; + result[j++] = u8[i]; + } + return result.slice(0, j); +} + +export function stripEol(value: Uint8Array): Uint8Array { + if (value[value.byteLength - 1] == LF) { + let drop = 1; + if (value.byteLength > 1 && value[value.byteLength - 2] === CR) { + drop = 2; + } + return value.subarray(0, value.byteLength - drop); + } + return value; +} + +/*! + * Adapted directly from https://github.com/pillarjs/resolve-path + * which is licensed as follows: + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2015-2018 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +const UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + +export function resolvePath(relativePath: string): string; +export function resolvePath(rootPath: string, relativePath: string): string; +export function resolvePath(rootPath: string, relativePath?: string): string { + let path = relativePath; + let root = rootPath; + + // root is optional, similar to root.resolve + if (relativePath === undefined) { + path = rootPath; + root = "."; + } + + if (path == null) { + throw new TypeError("Argument relativePath is required."); + } + + // containing NULL bytes is malicious + if (path.includes("\0")) { + throw createHttpError(400, "Malicious Path"); + } + + // path should never be absolute + if (isAbsolute(path)) { + throw createHttpError(400, "Malicious Path"); + } + + // path outside root + if (UP_PATH_REGEXP.test(normalize("." + sep + path))) { + throw createHttpError(403); + } + + // join the relative path + return normalize(join(root, path)); +} diff --git a/bundler/tests/.cache/deno/8bdcd609e81178c17d4acc98807d6386857de858.ts b/bundler/tests/.cache/deno/8bdcd609e81178c17d4acc98807d6386857de858.ts new file mode 100644 index 00000000000..bbd2926943e --- /dev/null +++ b/bundler/tests/.cache/deno/8bdcd609e81178c17d4acc98807d6386857de858.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case@v2.1.0/snakeCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function snakeCase(value: string, locale?: string): string { + return normalCase(value, locale, "_"); +} diff --git a/bundler/tests/.cache/deno/8c1f385f47be317fcd56c78a920aed329ae26cbf.ts b/bundler/tests/.cache/deno/8c1f385f47be317fcd56c78a920aed329ae26cbf.ts new file mode 100644 index 00000000000..2380578265a --- /dev/null +++ b/bundler/tests/.cache/deno/8c1f385f47be317fcd56c78a920aed329ae26cbf.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/getOperationRootType.js + + +import { GraphQLError } from '../error/GraphQLError.js'; + +/** + * Extracts the root type of the operation from the schema. + */ +export function getOperationRootType(schema, operation) { + if (operation.operation === 'query') { + const queryType = schema.getQueryType(); + + if (!queryType) { + throw new GraphQLError('Schema does not define the required query root type.', operation); + } + + return queryType; + } + + if (operation.operation === 'mutation') { + const mutationType = schema.getMutationType(); + + if (!mutationType) { + throw new GraphQLError('Schema is not configured for mutations.', operation); + } + + return mutationType; + } + + if (operation.operation === 'subscription') { + const subscriptionType = schema.getSubscriptionType(); + + if (!subscriptionType) { + throw new GraphQLError('Schema is not configured for subscriptions.', operation); + } + + return subscriptionType; + } + + throw new GraphQLError('Can only have query, mutation and subscription operations.', operation); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/8c74f411b9d10093fa640009fd812f68a5857673.ts b/bundler/tests/.cache/deno/8c74f411b9d10093fa640009fd812f68a5857673.ts new file mode 100644 index 00000000000..225778059e0 --- /dev/null +++ b/bundler/tests/.cache/deno/8c74f411b9d10093fa640009fd812f68a5857673.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_map.js + + +export default function _map(fn, functor) { + var idx = 0; + var len = functor.length; + var result = Array(len); + while (idx < len) { + result[idx] = fn(functor[idx]); + idx += 1; + } + return result; +} diff --git a/bundler/tests/.cache/deno/8cb26fca2ea3e82ade0ce6fed1820c64bebe5a31.ts b/bundler/tests/.cache/deno/8cb26fca2ea3e82ade0ce6fed1820c64bebe5a31.ts new file mode 100644 index 00000000000..40dccd36ce4 --- /dev/null +++ b/bundler/tests/.cache/deno/8cb26fca2ea3e82ade0ce6fed1820c64bebe5a31.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/lz4/mod.ts + + +// Copyright 2020-present the denosaurs team. All rights reserved. MIT license. + +import init, { + source, + lz4_compress, + lz4_decompress, +} from "./wasm.js"; + +await init(source); + +/** + * Compress a byte array using lz4. + * + * ```typescript + * import { compress } from "https://deno.land/x/lz4/mod.ts"; + * const text = new TextEncoder().encode("X".repeat(64)); + * console.log(text.length); // 64 Bytes + * console.log(compress(text).length); // 6 Bytes + * ``` + * + * @param input Input data. + */ +export function compress(input: Uint8Array): Uint8Array { + return lz4_compress(input); +} + +/** + * Decompress a byte array using lz4. + * + * ```typescript + * import { decompress } from "https://deno.land/x/lz4/mod.ts"; + * const compressed = Uint8Array.from([ 31, 88, 1, 0, 44, 0 ]); + * console.log(compressed.length); // 6 Bytes + * console.log(decompress(compressed).length); // 64 Bytes + * ``` + * + * @param input Input data. + */ +export function decompress(input: Uint8Array): Uint8Array { + return lz4_decompress(input); +} diff --git a/bundler/tests/.cache/deno/8d796d9f2c522b2c3efc59d3b1755eb7f2f12ca0.ts b/bundler/tests/.cache/deno/8d796d9f2c522b2c3efc59d3b1755eb7f2f12ca0.ts new file mode 100644 index 00000000000..b90c5729523 --- /dev/null +++ b/bundler/tests/.cache/deno/8d796d9f2c522b2c3efc59d3b1755eb7f2f12ca0.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/bytes_formater/deps.ts + + +export { + green, + setColorEnabled, +} from "https://deno.land/std@0.77.0/fmt/colors.ts"; diff --git a/bundler/tests/.cache/deno/8d9fb2ed380c62a979ede05f13c8d944d31e322f.ts b/bundler/tests/.cache/deno/8d9fb2ed380c62a979ede05f13c8d944d31e322f.ts new file mode 100644 index 00000000000..67ccb6fbfd1 --- /dev/null +++ b/bundler/tests/.cache/deno/8d9fb2ed380c62a979ede05f13c8d944d31e322f.ts @@ -0,0 +1,75 @@ +// Loaded from https://deno.land/std@0.85.0/fs/ensure_symlink.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; +import { isWindows } from "../_util/os.ts"; + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export async function ensureSymlink(src: string, dest: string): Promise { + const srcStatInfo = await Deno.lstat(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + const options: Deno.SymlinkOptions | undefined = isWindows + ? { + type: srcFilePathType === "dir" ? "dir" : "file", + } + : undefined; + + await Deno.symlink(src, dest, options); +} + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export function ensureSymlinkSync(src: string, dest: string): void { + const srcStatInfo = Deno.lstatSync(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + + const options: Deno.SymlinkOptions | undefined = isWindows + ? { + type: srcFilePathType === "dir" ? "dir" : "file", + } + : undefined; + + Deno.symlinkSync(src, dest, options); +} diff --git a/bundler/tests/.cache/deno/8dbd05883dea58125dac08eec329300c7b32871f.ts b/bundler/tests/.cache/deno/8dbd05883dea58125dac08eec329300c7b32871f.ts new file mode 100644 index 00000000000..17d7dfba89f --- /dev/null +++ b/bundler/tests/.cache/deno/8dbd05883dea58125dac08eec329300c7b32871f.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/replace.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Replace a substring or regex match in a string with a replacement. + * + * The first two parameters correspond to the parameters of the + * `String.prototype.replace()` function, so the second parameter can also be a + * function. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category String + * @sig RegExp|String -> String -> String -> String + * @param {RegExp|String} pattern A regular expression or a substring to match. + * @param {String} replacement The string to replace the matches with. + * @param {String} str The String to do the search and replacement in. + * @return {String} The result. + * @example + * + * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo' + * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo' + * + * // Use the "g" (global) flag to replace all occurrences: + * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' + */ +var replace = _curry3(function replace(regex, replacement, str) { + return str.replace(regex, replacement); +}); +export default replace; diff --git a/bundler/tests/.cache/deno/8dcdbd88740911debdaecb6b14e9bea1d344b3c5.ts b/bundler/tests/.cache/deno/8dcdbd88740911debdaecb6b14e9bea1d344b3c5.ts new file mode 100644 index 00000000000..671f9ed55c9 --- /dev/null +++ b/bundler/tests/.cache/deno/8dcdbd88740911debdaecb6b14e9bea1d344b3c5.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/util.ts + + +import { extname } from "./vendor/https/deno.land/std/path/mod.ts"; +import { MIME } from "./constants.ts"; +import { NotFoundException } from "./http_exception.ts"; + +/** Returns the content-type based on the extension of a path. */ +export function contentType(filepath: string): string | undefined { + return MIME.DB[extname(filepath)]; +} + +export function hasTrailingSlash(str: string): boolean { + if (str.length > 1 && str[str.length - 1] === "/") { + return true; + } + + return false; +} + +export function NotFoundHandler(): never { + throw new NotFoundException(); +} diff --git a/bundler/tests/.cache/deno/8df0d7a78c7d560dbaba93c58d63bdc213a4aa79.ts b/bundler/tests/.cache/deno/8df0d7a78c7d560dbaba93c58d63bdc213a4aa79.ts new file mode 100644 index 00000000000..39bf1fc0010 --- /dev/null +++ b/bundler/tests/.cache/deno/8df0d7a78c7d560dbaba93c58d63bdc213a4aa79.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/std@0.85.0/fs/ensure_dir.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureDir(dir: string): Promise { + try { + const fileInfo = await Deno.lstat(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + await Deno.mkdir(dir, { recursive: true }); + return; + } + throw err; + } +} + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureDirSync(dir: string): void { + try { + const fileInfo = Deno.lstatSync(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + Deno.mkdirSync(dir, { recursive: true }); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/8dfc590142b60eee0cc23a51bf3e3f7c7cd54454.ts b/bundler/tests/.cache/deno/8dfc590142b60eee0cc23a51bf3e3f7c7cd54454.ts new file mode 100644 index 00000000000..a77a181934b --- /dev/null +++ b/bundler/tests/.cache/deno/8dfc590142b60eee0cc23a51bf3e3f7c7cd54454.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isOctal.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const octal = /^(0o)?[0-7]+$/i; + +export const isOctal = (str: string) => { + assertString(str); + return octal.test(str); +}; diff --git a/bundler/tests/.cache/deno/8e1dd502b1cc10e22235f34fdb8eb03d90ec1eee.ts b/bundler/tests/.cache/deno/8e1dd502b1cc10e22235f34fdb8eb03d90ec1eee.ts new file mode 100644 index 00000000000..97f16eb36bd --- /dev/null +++ b/bundler/tests/.cache/deno/8e1dd502b1cc10e22235f34fdb8eb03d90ec1eee.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/case@v2.1.0/normalCase.ts + + +import lowerCase from "./lowerCase.ts"; + +import nonWordRegexp from "./vendor/nonWordRegexp.ts"; +import camelCaseRegexp from "./vendor/camelCaseRegexp.ts"; +import camelCaseUpperRegexp from "./vendor/camelCaseUpperRegexp.ts"; + +export default function normalCase( + str: string, + locale?: string, + replacement?: string, +): string { + if (str == null) { + return ""; + } + + replacement = typeof replacement !== "string" ? " " : replacement; + + function replace(match: string, index: number, value: string): string { + if (index === 0 || index === value.length - match.length) { + return ""; + } + + return replacement!; + } + + str = String(str) + // Support camel case ("camelCase" -> "camel Case"). + .replace(camelCaseRegexp, "$1 $2") + // Support odd camel case ("CAMELCase" -> "CAMEL Case"). + .replace(camelCaseUpperRegexp, "$1 $2") + // Remove all non-word characters and replace with a single space. + .replace(nonWordRegexp, replace); + + // Lower case the entire string. + return lowerCase(str, locale); +} diff --git a/bundler/tests/.cache/deno/8e6d32a1241fe3c0eac9710c89ffe38e03d8637c.ts b/bundler/tests/.cache/deno/8e6d32a1241fe3c0eac9710c89ffe38e03d8637c.ts new file mode 100644 index 00000000000..a73461b30e6 --- /dev/null +++ b/bundler/tests/.cache/deno/8e6d32a1241fe3c0eac9710c89ffe38e03d8637c.ts @@ -0,0 +1,214 @@ +// Loaded from https://deno.land/x/djwt@v1.9/mod.ts + + +import { base64url, convertUint8ArrayToHex } from "./_depts.ts"; +import { + create as createSignature, + verify as verifySignature, +} from "./_signature.ts"; +import { verify as verifyAlgorithm } from "./_algorithm.ts"; + +import type { Algorithm, AlgorithmInput } from "./_algorithm.ts"; + +/* + * JWT §4.1: The following Claim Names are registered in the IANA + * "JSON Web Token Claims" registry established by Section 10.1. None of the + * claims defined below are intended to be mandatory to use or implement in all + * cases, but rather they provide a starting point for a set of useful, + * interoperable claims. + * Applications using JWTs should define which specific claims they use and when + * they are required or optional. + */ +export interface Payload { + iss?: string; + sub?: string; + aud?: string[] | string; + exp?: number; + nbf?: number; + iat?: number; + jti?: string; + [key: string]: unknown; +} + +/* + * JWS §4.1.1: The "alg" value is a case-sensitive ASCII string containing a + * StringOrURI value. This Header Parameter MUST be present and MUST be + * understood and processed by implementations. + */ +export interface Header { + alg: Algorithm; + [key: string]: unknown; +} + +const encoder = new TextEncoder(); +const decoder = new TextDecoder(); + +/* + * Helper function: getNumericDate() + * returns the number of seconds since January 1, 1970, 00:00:00 UTC + */ +export function getNumericDate(exp: number | Date): number { + return Math.round( + (exp instanceof Date ? exp.getTime() : Date.now() + exp * 1000) / 1000, + ); +} + +/* + * JWT §4.1.4: Implementers MAY provide for some small leeway to account for + * clock skew. + */ +function isExpired(exp: number, leeway = 0): boolean { + return exp + leeway < Date.now() / 1000; +} + +function isTooEarly(nbf: number, leeway = 0): boolean { + return nbf - leeway > Date.now() / 1000; +} + +function isObject(obj: unknown) { + return ( + obj !== null && typeof obj === "object" && Array.isArray(obj) === false + ); +} + +function hasValidExpAndNbfClaims(claimValue: unknown) { + return claimValue !== undefined ? typeof claimValue === "number" : true; +} + +export function decode( + jwt: string, +): { + header: Header; + payload: Payload; + signature: string; +} { + const parsedArray = jwt + .split(".") + .map(base64url.decode) + .map((uint8Array, index) => { + switch (index) { + case 0: + case 1: + try { + return JSON.parse(decoder.decode(uint8Array)); + } catch { + break; + } + case 2: + return convertUint8ArrayToHex(uint8Array); + } + throw TypeError("The serialization is invalid."); + }); + + const [header, payload, signature] = parsedArray; + + if (typeof signature !== "string") { + throw new Error(`The signature is missing.`); + } + + if (typeof header?.alg !== "string") { + throw new Error(`The header 'alg' parameter must be a string.`); + } + + /* + * JWT §7.2: Verify that the resulting octet sequence is a UTF-8-encoded + * representation of a completely valid JSON object conforming to RFC 7159; + * let the JWT Claims Set be this JSON object. + */ + if (!isObject(payload)) { + throw new Error(`The jwt claims set is not a JSON object.`); + } + + if ( + !hasValidExpAndNbfClaims(payload.exp) || + !hasValidExpAndNbfClaims(payload.nbf) + ) { + throw new Error(`The jwt has an invalid 'exp' or 'nbf' claim.`); + } + + if ( + typeof payload.exp === "number" && + isExpired(payload.exp, 1) + ) { + throw RangeError("The jwt is expired."); + } + + if ( + typeof payload.nbf === "number" && + isTooEarly(payload.nbf, 1) + ) { + throw RangeError("The jwt is used too early."); + } + + return { + header, + payload, + signature, + }; +} + +export async function verify( + jwt: string, + key: string, + algorithm: AlgorithmInput, +): Promise { + const { header, payload, signature } = decode(jwt); + + if (!verifyAlgorithm(algorithm, header.alg)) { + throw new Error( + `The jwt's algorithm does not match the specified algorithm '${algorithm}'.`, + ); + } + + /* + * JWS §4.1.11: The "crit" (critical) Header Parameter indicates that + * extensions to this specification and/or [JWA] are being used that MUST be + * understood and processed. + */ + if ("crit" in header) { + throw new Error( + "The 'crit' header parameter is currently not supported by this module.", + ); + } + + if ( + !(await verifySignature({ + signature, + key, + algorithm: header.alg, + signingInput: jwt.slice(0, jwt.lastIndexOf(".")), + })) + ) { + throw new Error( + "The jwt's signature does not match the verification signature.", + ); + } + + return payload; +} + +/* + * JWT §3: JWTs represent a set of claims as a JSON object that is encoded in + * a JWS and/or JWE structure. This JSON object is the JWT Claims Set. + * JSW §7.1: The JWS Compact Serialization represents digitally signed or MACed + * content as a compact, URL-safe string. This string is: + * BASE64URL(UTF8(JWS Protected Header)) || '.' || + * BASE64URL(JWS Payload) || '.' || + * BASE64URL(JWS Signature) + */ +function createSigningInput(header: Header, payload: Payload): string { + return `${base64url.encode(encoder.encode(JSON.stringify(header)))}.${ + base64url.encode(encoder.encode(JSON.stringify(payload))) + }`; +} + +export async function create( + header: Header, + payload: Payload, + key: string, +): Promise { + const signingInput = createSigningInput(header, payload); + const signature = await createSignature(header.alg, key, signingInput); + + return `${signingInput}.${signature}`; +} diff --git a/bundler/tests/.cache/deno/8e84fb8a7c5b83ee72d199d3112ff89b01713798.ts b/bundler/tests/.cache/deno/8e84fb8a7c5b83ee72d199d3112ff89b01713798.ts new file mode 100644 index 00000000000..aa74eec6af2 --- /dev/null +++ b/bundler/tests/.cache/deno/8e84fb8a7c5b83ee72d199d3112ff89b01713798.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfindLastIndex.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XFindLastIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.lastIdx = -1; +} +XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init; +XFindLastIndex.prototype['@@transducer/result'] = function(result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx)); +}; +XFindLastIndex.prototype['@@transducer/step'] = function(result, input) { + this.idx += 1; + if (this.f(input)) { + this.lastIdx = this.idx; + } + return result; +}; + +var _xfindLastIndex = _curry2(function _xfindLastIndex(f, xf) { return new XFindLastIndex(f, xf); }); +export default _xfindLastIndex; diff --git a/bundler/tests/.cache/deno/8eb550f1f2eb561ec557ba88538c0c5ebc656043.ts b/bundler/tests/.cache/deno/8eb550f1f2eb561ec557ba88538c0c5ebc656043.ts new file mode 100644 index 00000000000..ed76add4935 --- /dev/null +++ b/bundler/tests/.cache/deno/8eb550f1f2eb561ec557ba88538c0c5ebc656043.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.77.0/encoding/utf8.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/8ed3edcf8cc4d25e48cc1c92eb91dedfa06eb97b.ts b/bundler/tests/.cache/deno/8ed3edcf8cc4d25e48cc1c92eb91dedfa06eb97b.ts new file mode 100644 index 00000000000..beb51e652e5 --- /dev/null +++ b/bundler/tests/.cache/deno/8ed3edcf8cc4d25e48cc1c92eb91dedfa06eb97b.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/nAry.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly `n` parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} n The desired arity of the new function. + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity `n`. + * @see R.binary, R.unary + * @example + * + * const takesTwoArgs = (a, b) => [a, b]; + * + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * const takesOneArg = R.nAry(1, takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only `n` arguments are passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.nAry(0, f)(a, b) = f() + * @symb R.nAry(1, f)(a, b) = f(a) + * @symb R.nAry(2, f)(a, b) = f(a, b) + */ +var nAry = _curry2(function nAry(n, fn) { + switch (n) { + case 0: return function() {return fn.call(this);}; + case 1: return function(a0) {return fn.call(this, a0);}; + case 2: return function(a0, a1) {return fn.call(this, a0, a1);}; + case 3: return function(a0, a1, a2) {return fn.call(this, a0, a1, a2);}; + case 4: return function(a0, a1, a2, a3) {return fn.call(this, a0, a1, a2, a3);}; + case 5: return function(a0, a1, a2, a3, a4) {return fn.call(this, a0, a1, a2, a3, a4);}; + case 6: return function(a0, a1, a2, a3, a4, a5) {return fn.call(this, a0, a1, a2, a3, a4, a5);}; + case 7: return function(a0, a1, a2, a3, a4, a5, a6) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6);}; + case 8: return function(a0, a1, a2, a3, a4, a5, a6, a7) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);}; + case 9: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);}; + case 10: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);}; + default: throw new Error('First argument to nAry must be a non-negative integer no greater than ten'); + } +}); +export default nAry; diff --git a/bundler/tests/.cache/deno/8f3f862ec31530edd43a4113d3105b62bb74260f.ts b/bundler/tests/.cache/deno/8f3f862ec31530edd43a4113d3105b62bb74260f.ts new file mode 100644 index 00000000000..76ab2ef22ca --- /dev/null +++ b/bundler/tests/.cache/deno/8f3f862ec31530edd43a4113d3105b62bb74260f.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std@0.85.0/bytes/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/8f576d004620e529e9fe4b5f00eb14e7aa07218c.ts b/bundler/tests/.cache/deno/8f576d004620e529e9fe4b5f00eb14e7aa07218c.ts new file mode 100644 index 00000000000..560b3a2adb8 --- /dev/null +++ b/bundler/tests/.cache/deno/8f576d004620e529e9fe4b5f00eb14e7aa07218c.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/identityFunc.js + + +/** + * Returns the first argument it receives. + */ +export default function identityFunc(x) { + return x; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/8f638d54f05451aee3a17081046597bf45ae0ce3.ts b/bundler/tests/.cache/deno/8f638d54f05451aee3a17081046597bf45ae0ce3.ts new file mode 100644 index 00000000000..b3c87b29baf --- /dev/null +++ b/bundler/tests/.cache/deno/8f638d54f05451aee3a17081046597bf45ae0ce3.ts @@ -0,0 +1,994 @@ +// Loaded from https://deno.land/x/sodium/basic_types.ts + + +// Type definitions for libsodium-wrappers 0.7 +// Project: https://github.com/jedisct1/libsodium.js +// Definitions by: Florian Keller +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 + +// Copyright 2020-present the denosaurs team. All rights reserved. MIT license. + +export type Uint8ArrayOutputFormat = "uint8array"; + +export type StringOutputFormat = "text" | "hex" | "base64"; + +export type KeyType = "curve25519" | "ed25519" | "x25519"; + +export enum base64_variants { + ORIGINAL, + ORIGINAL_NO_PADDING, + URLSAFE, + URLSAFE_NO_PADDING, +} + +export interface CryptoBox { + ciphertext: Uint8Array; + mac: Uint8Array; +} + +export interface StringCryptoBox { + ciphertext: string; + mac: string; +} + +export interface CryptoKX { + sharedRx: Uint8Array; + sharedTx: Uint8Array; +} + +export interface StringCryptoKX { + sharedRx: string; + sharedTx: string; +} + +export interface KeyPair { + keyType: KeyType; + privateKey: Uint8Array; + publicKey: Uint8Array; +} + +export interface StringKeyPair { + keyType: KeyType; + privateKey: string; + publicKey: string; +} + +export interface SecretBox { + cipher: Uint8Array; + mac: Uint8Array; +} + +export interface StringSecretBox { + cipher: string; + mac: string; +} + +export interface StateAddress { + name: string; +} + +export interface MessageTag { + message: Uint8Array; + tag: number; +} + +export interface StringMessageTag { + message: string; + tag: number; +} + +export interface Sodium { + readonly crypto_aead_chacha20poly1305_ABYTES: number; + readonly crypto_aead_chacha20poly1305_ietf_ABYTES: number; + readonly crypto_aead_chacha20poly1305_ietf_KEYBYTES: number; + readonly crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX: number; + readonly crypto_aead_chacha20poly1305_ietf_NPUBBYTES: number; + readonly crypto_aead_chacha20poly1305_ietf_NSECBYTES: number; + readonly crypto_aead_chacha20poly1305_KEYBYTES: number; + readonly crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX: number; + readonly crypto_aead_chacha20poly1305_NPUBBYTES: number; + readonly crypto_aead_chacha20poly1305_NSECBYTES: number; + readonly crypto_aead_xchacha20poly1305_ietf_ABYTES: number; + readonly crypto_aead_xchacha20poly1305_ietf_KEYBYTES: number; + readonly crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX: number; + readonly crypto_aead_xchacha20poly1305_ietf_NPUBBYTES: number; + readonly crypto_aead_xchacha20poly1305_ietf_NSECBYTES: number; + readonly crypto_auth_BYTES: number; + readonly crypto_auth_KEYBYTES: number; + readonly crypto_box_BEFORENMBYTES: number; + readonly crypto_box_MACBYTES: number; + readonly crypto_box_MESSAGEBYTES_MAX: number; + readonly crypto_box_NONCEBYTES: number; + readonly crypto_box_PUBLICKEYBYTES: number; + readonly crypto_box_SEALBYTES: number; + readonly crypto_box_SECRETKEYBYTES: number; + readonly crypto_box_SEEDBYTES: number; + readonly crypto_generichash_BYTES_MAX: number; + readonly crypto_generichash_BYTES_MIN: number; + readonly crypto_generichash_BYTES: number; + readonly crypto_generichash_KEYBYTES_MAX: number; + readonly crypto_generichash_KEYBYTES_MIN: number; + readonly crypto_generichash_KEYBYTES: number; + readonly crypto_hash_BYTES: number; + readonly crypto_kdf_BYTES_MAX: number; + readonly crypto_kdf_BYTES_MIN: number; + readonly crypto_kdf_CONTEXTBYTES: number; + readonly crypto_kdf_KEYBYTES: number; + readonly crypto_kx_PUBLICKEYBYTES: number; + readonly crypto_kx_SECRETKEYBYTES: number; + readonly crypto_kx_SEEDBYTES: number; + readonly crypto_kx_SESSIONKEYBYTES: number; + readonly crypto_pwhash_ALG_ARGON2I13: number; + readonly crypto_pwhash_ALG_ARGON2ID13: number; + readonly crypto_pwhash_ALG_DEFAULT: number; + readonly crypto_pwhash_BYTES_MAX: number; + readonly crypto_pwhash_BYTES_MIN: number; + readonly crypto_pwhash_MEMLIMIT_INTERACTIVE: number; + readonly crypto_pwhash_MEMLIMIT_MAX: number; + readonly crypto_pwhash_MEMLIMIT_MIN: number; + readonly crypto_pwhash_MEMLIMIT_MODERATE: number; + readonly crypto_pwhash_MEMLIMIT_SENSITIVE: number; + readonly crypto_pwhash_OPSLIMIT_INTERACTIVE: number; + readonly crypto_pwhash_OPSLIMIT_MAX: number; + readonly crypto_pwhash_OPSLIMIT_MIN: number; + readonly crypto_pwhash_OPSLIMIT_MODERATE: number; + readonly crypto_pwhash_OPSLIMIT_SENSITIVE: number; + readonly crypto_pwhash_PASSWD_MAX: number; + readonly crypto_pwhash_PASSWD_MIN: number; + readonly crypto_pwhash_SALTBYTES: number; + readonly crypto_pwhash_STR_VERIFY: number; + readonly crypto_pwhash_STRBYTES: number; + readonly crypto_pwhash_STRPREFIX: string; + readonly crypto_scalarmult_BYTES: number; + readonly crypto_scalarmult_SCALARBYTES: number; + readonly crypto_secretbox_KEYBYTES: number; + readonly crypto_secretbox_MACBYTES: number; + readonly crypto_secretbox_MESSAGEBYTES_MAX: number; + readonly crypto_secretbox_NONCEBYTES: number; + readonly crypto_secretstream_xchacha20poly1305_ABYTES: number; + readonly crypto_secretstream_xchacha20poly1305_HEADERBYTES: number; + readonly crypto_secretstream_xchacha20poly1305_KEYBYTES: number; + readonly crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX: number; + readonly crypto_secretstream_xchacha20poly1305_TAG_FINAL: number; + readonly crypto_secretstream_xchacha20poly1305_TAG_MESSAGE: number; + readonly crypto_secretstream_xchacha20poly1305_TAG_PUSH: number; + readonly crypto_secretstream_xchacha20poly1305_TAG_REKEY: number; + readonly crypto_shorthash_BYTES: number; + readonly crypto_shorthash_KEYBYTES: number; + readonly crypto_sign_BYTES: number; + readonly crypto_sign_MESSAGEBYTES_MAX: number; + readonly crypto_sign_PUBLICKEYBYTES: number; + readonly crypto_sign_SECRETKEYBYTES: number; + readonly crypto_sign_SEEDBYTES: number; + readonly randombytes_SEEDBYTES: number; + readonly SODIUM_LIBRARY_VERSION_MAJOR: number; + readonly SODIUM_LIBRARY_VERSION_MINOR: number; + readonly SODIUM_VERSION_STRING: string; + + readonly ready: Promise; + + add(a: Uint8Array, b: Uint8Array): void; + + compare(b1: Uint8Array, b2: Uint8Array): number; + + crypto_aead_chacha20poly1305_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoBox; + crypto_aead_chacha20poly1305_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoBox; + + crypto_aead_chacha20poly1305_ietf_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_ietf_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_ietf_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_ietf_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_ietf_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_ietf_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_ietf_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoBox; + crypto_aead_chacha20poly1305_ietf_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoBox; + + crypto_aead_chacha20poly1305_ietf_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_ietf_keygen( + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_chacha20poly1305_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_chacha20poly1305_keygen(outputFormat: StringOutputFormat): string; + + crypto_aead_xchacha20poly1305_ietf_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_xchacha20poly1305_ietf_decrypt( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_xchacha20poly1305_ietf_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_xchacha20poly1305_ietf_decrypt_detached( + secret_nonce: string | Uint8Array | null, + ciphertext: string | Uint8Array, + mac: Uint8Array, + additional_data: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_xchacha20poly1305_ietf_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_xchacha20poly1305_ietf_encrypt( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_aead_xchacha20poly1305_ietf_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoBox; + crypto_aead_xchacha20poly1305_ietf_encrypt_detached( + message: string | Uint8Array, + additional_data: string | Uint8Array | null, + secret_nonce: string | Uint8Array | null, + public_nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoBox; + + crypto_aead_xchacha20poly1305_ietf_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_aead_xchacha20poly1305_ietf_keygen( + outputFormat: StringOutputFormat, + ): string; + + crypto_auth( + message: string | Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_auth( + message: string | Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_auth_keygen(outputFormat?: Uint8ArrayOutputFormat | null): Uint8Array; + crypto_auth_keygen(outputFormat: StringOutputFormat): string; + + crypto_auth_verify( + tag: Uint8Array, + message: string | Uint8Array, + key: Uint8Array, + ): boolean; + + crypto_box_beforenm( + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_beforenm( + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_detached( + message: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoBox; + crypto_box_detached( + message: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoBox; + + crypto_box_easy( + message: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_easy( + message: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_easy_afternm( + message: string | Uint8Array, + nonce: Uint8Array, + sharedKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_easy_afternm( + message: string | Uint8Array, + nonce: Uint8Array, + sharedKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_keypair(outputFormat?: Uint8ArrayOutputFormat | null): KeyPair; + crypto_box_keypair(outputFormat: StringOutputFormat): StringKeyPair; + + crypto_box_open_detached( + ciphertext: string | Uint8Array, + mac: Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_open_detached( + ciphertext: string | Uint8Array, + mac: Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_open_easy( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_open_easy( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_open_easy_afternm( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + sharedKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_open_easy_afternm( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + sharedKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_seal( + message: string | Uint8Array, + publicKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_seal( + message: string | Uint8Array, + publicKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_seal_open( + ciphertext: string | Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_box_seal_open( + ciphertext: string | Uint8Array, + publicKey: Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_box_seed_keypair( + seed: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): KeyPair; + crypto_box_seed_keypair( + seed: Uint8Array, + outputFormat: StringOutputFormat, + ): StringKeyPair; + + crypto_generichash( + hash_length: number, + message: string | Uint8Array, + key?: string | Uint8Array | null, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_generichash( + hash_length: number, + message: string | Uint8Array, + key: string | Uint8Array | null, + outputFormat: StringOutputFormat, + ): string; + + crypto_generichash_final( + state_address: StateAddress, + hash_length: number, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_generichash_final( + state_address: StateAddress, + hash_length: number, + outputFormat: StringOutputFormat, + ): string; + + crypto_generichash_init( + key: string | Uint8Array | null, + hash_length: number, + ): StateAddress; + + crypto_generichash_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_generichash_keygen(outputFormat: StringOutputFormat): string; + + crypto_generichash_update( + state_address: StateAddress, + message_chunk: string | Uint8Array, + ): void; + + crypto_hash( + message: string | Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_hash( + message: string | Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_kdf_derive_from_key( + subkey_len: number, + subkey_id: number, + ctx: string, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_kdf_derive_from_key( + subkey_len: number, + subkey_id: number, + ctx: string, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_kdf_keygen(outputFormat?: Uint8ArrayOutputFormat | null): Uint8Array; + crypto_kdf_keygen(outputFormat: StringOutputFormat): string; + + crypto_kx_client_session_keys( + clientPublicKey: Uint8Array, + clientSecretKey: Uint8Array, + serverPublicKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoKX; + crypto_kx_client_session_keys( + clientPublicKey: Uint8Array, + clientSecretKey: Uint8Array, + serverPublicKey: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoKX; + + crypto_kx_keypair(outputFormat?: Uint8ArrayOutputFormat | null): KeyPair; + crypto_kx_keypair(outputFormat: StringOutputFormat): StringKeyPair; + + crypto_kx_seed_keypair( + seed: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): KeyPair; + crypto_kx_seed_keypair( + seed: Uint8Array, + outputFormat: StringOutputFormat, + ): StringKeyPair; + + crypto_kx_server_session_keys( + serverPublicKey: Uint8Array, + serverSecretKey: Uint8Array, + clientPublicKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): CryptoKX; + crypto_kx_server_session_keys( + serverPublicKey: Uint8Array, + serverSecretKey: Uint8Array, + clientPublicKey: Uint8Array, + outputFormat: StringOutputFormat, + ): StringCryptoKX; + + crypto_pwhash( + keyLength: number, + password: string | Uint8Array, + salt: Uint8Array, + opsLimit: number, + memLimit: number, + algorithm: number, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_pwhash( + keyLength: number, + password: string | Uint8Array, + salt: Uint8Array, + opsLimit: number, + memLimit: number, + algorithm: number, + outputFormat: StringOutputFormat, + ): string; + + crypto_pwhash_str( + password: string | Uint8Array, + opsLimit: number, + memLimit: number, + ): string; + + crypto_pwhash_str_needs_rehash( + hashed_password: string | Uint8Array, + opsLimit: number, + memLimit: number, + ): boolean; + + crypto_pwhash_str_verify( + hashed_password: string, + password: string | Uint8Array, + ): boolean; + + crypto_scalarmult( + privateKey: Uint8Array, + publicKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_scalarmult( + privateKey: Uint8Array, + publicKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_scalarmult_base( + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_scalarmult_base( + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_secretbox_detached( + message: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): SecretBox; + crypto_secretbox_detached( + message: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): StringSecretBox; + + crypto_secretbox_easy( + message: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretbox_easy( + message: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_secretbox_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretbox_keygen(outputFormat: StringOutputFormat): string; + + crypto_secretbox_open_detached( + ciphertext: string | Uint8Array, + mac: Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretbox_open_detached( + ciphertext: string | Uint8Array, + mac: Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_secretbox_open_easy( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretbox_open_easy( + ciphertext: string | Uint8Array, + nonce: Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_secretstream_xchacha20poly1305_init_pull( + header: Uint8Array, + key: Uint8Array, + ): StateAddress; + + crypto_secretstream_xchacha20poly1305_init_push( + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): { state: StateAddress; header: Uint8Array }; + crypto_secretstream_xchacha20poly1305_init_push( + key: Uint8Array, + outputFormat: StringOutputFormat, + ): { state: StateAddress; header: string }; + + crypto_secretstream_xchacha20poly1305_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretstream_xchacha20poly1305_keygen( + outputFormat: StringOutputFormat, + ): string; + + crypto_secretstream_xchacha20poly1305_pull( + state_address: StateAddress, + cipher: string | Uint8Array, + ad?: string | Uint8Array | null, + outputFormat?: Uint8ArrayOutputFormat | null, + ): MessageTag; + crypto_secretstream_xchacha20poly1305_pull( + state_address: StateAddress, + cipher: string | Uint8Array, + ad: string | Uint8Array | null, + outputFormat: StringOutputFormat, + ): StringMessageTag; + + crypto_secretstream_xchacha20poly1305_push( + state_address: StateAddress, + message_chunk: string | Uint8Array, + ad: string | Uint8Array | null, + tag: number, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_secretstream_xchacha20poly1305_push( + state_address: StateAddress, + message_chunk: string | Uint8Array, + ad: string | Uint8Array | null, + tag: number, + outputFormat: StringOutputFormat, + ): string; + + crypto_secretstream_xchacha20poly1305_rekey( + state_address: StateAddress, + ): true; + + crypto_shorthash( + message: string | Uint8Array, + key: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_shorthash( + message: string | Uint8Array, + key: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_shorthash_keygen( + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_shorthash_keygen(outputFormat: StringOutputFormat): string; + + crypto_sign( + message: string | Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign( + message: string | Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_detached( + message: string | Uint8Array, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign_detached( + message: string | Uint8Array, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_ed25519_pk_to_curve25519( + edPk: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign_ed25519_pk_to_curve25519( + edPk: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_ed25519_sk_to_curve25519( + edSk: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign_ed25519_sk_to_curve25519( + edSk: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_final_create( + state_address: StateAddress, + privateKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign_final_create( + state_address: StateAddress, + privateKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_final_verify( + state_address: StateAddress, + signature: Uint8Array, + publicKey: Uint8Array, + ): boolean; + + crypto_sign_init(): StateAddress; + + crypto_sign_keypair(outputFormat?: Uint8ArrayOutputFormat | null): KeyPair; + crypto_sign_keypair(outputFormat: StringOutputFormat): StringKeyPair; + + crypto_sign_open( + signedMessage: string | Uint8Array, + publicKey: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + crypto_sign_open( + signedMessage: string | Uint8Array, + publicKey: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + crypto_sign_seed_keypair( + seed: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): KeyPair; + crypto_sign_seed_keypair( + seed: Uint8Array, + outputFormat: StringOutputFormat, + ): StringKeyPair; + + crypto_sign_update( + state_address: StateAddress, + message_chunk: string | Uint8Array, + ): void; + + crypto_sign_verify_detached( + signature: Uint8Array, + message: string | Uint8Array, + publicKey: Uint8Array, + ): boolean; + + from_base64(input: string, variant?: base64_variants): Uint8Array; + + from_hex(input: string): Uint8Array; + + from_string(str: string): Uint8Array; + + increment(bytes: Uint8Array): void; + + is_zero(bytes: Uint8Array): boolean; + + memcmp(b1: Uint8Array, b2: Uint8Array): boolean; + + memzero(bytes: Uint8Array): void; + + output_formats(): Array; + + pad(buf: Uint8Array, blocksize: number): Uint8Array; + + randombytes_buf( + length: number, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + randombytes_buf(length: number, outputFormat: StringOutputFormat): string; + + randombytes_buf_deterministic( + length: number, + seed: Uint8Array, + outputFormat?: Uint8ArrayOutputFormat | null, + ): Uint8Array; + randombytes_buf_deterministic( + length: number, + seed: Uint8Array, + outputFormat: StringOutputFormat, + ): string; + + randombytes_close(): void; + + randombytes_random(): number; + + randombytes_stir(): void; + + randombytes_uniform(upper_bound: number): number; + + sodium_version_string(): string; + + symbols(): string[]; + + to_base64(input: string | Uint8Array, variant?: base64_variants): string; + + to_hex(input: string | Uint8Array): string; + + to_string(bytes: Uint8Array): string; + + unpad(buf: Uint8Array, blocksize: number): Uint8Array; +} diff --git a/bundler/tests/.cache/deno/8fb2bd80dc822acb788f4dcbc8d254bcece5bd58.ts b/bundler/tests/.cache/deno/8fb2bd80dc822acb788f4dcbc8d254bcece5bd58.ts new file mode 100644 index 00000000000..2c3020a5f91 --- /dev/null +++ b/bundler/tests/.cache/deno/8fb2bd80dc822acb788f4dcbc8d254bcece5bd58.ts @@ -0,0 +1,259 @@ +// Loaded from https://deno.land/x/oak/server_sent_event.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import type { Application } from "./application.ts"; +import { assert, BufWriter } from "./deps.ts"; +import type { ServerRequest } from "./types.d.ts"; + +const encoder = new TextEncoder(); + +export interface ServerSentEventInit extends EventInit { + /** An optional `id` which will be sent with the event and exposed in the + * client `EventSource`. */ + id?: number; + + /** The replacer is passed to `JSON.stringify` when converting the `data` + * property to a JSON string. */ + replacer?: + | (string | number)[] + // deno-lint-ignore no-explicit-any + | ((this: any, key: string, value: any) => any); + + /** Space is passed to `JSON.stringify` when converting the `data` property + * to a JSON string. */ + space?: string | number; +} + +export interface ServerSentEventTargetOptions { + /** Additional headers to send to the client during startup. These headers + * will overwrite any of the default headers if the key is duplicated. */ + headers?: Headers; +} + +class CloseEvent extends Event { + constructor(eventInit: EventInit) { + super("close", eventInit); + } +} + +/** An event which contains information which will be sent to the remote + * connection and be made available in an `EventSource` as an event. */ +export class ServerSentEvent extends Event { + #data: string; + #id?: number; + #type: string; + + constructor( + type: string, + // deno-lint-ignore no-explicit-any + data: any, + { replacer, space, ...eventInit }: ServerSentEventInit = {}, + ) { + super(type, eventInit); + this.#type = type; + try { + this.#data = typeof data === "string" + ? data + : JSON.stringify(data, replacer as (string | number)[], space); + } catch (e) { + assert(e instanceof Error); + throw new TypeError( + `data could not be coerced into a serialized string.\n ${e.message}`, + ); + } + const { id } = eventInit; + this.#id = id; + } + + /** The data associated with the event, which will be sent to the client and + * be made available in the `EventSource`. */ + get data(): string { + return this.#data; + } + + /** The optional ID associated with the event that will be sent to the client + * and be made available in the `EventSource`. */ + get id(): number | undefined { + return this.#id; + } + + toString(): string { + const data = `data: ${this.#data.split("\n").join("\ndata: ")}\n`; + return `${this.#type === "__message" ? "" : `event: ${this.#type}\n`}${ + this.#id ? `id: ${String(this.#id)}\n` : "" + }${data}\n`; + } +} + +const response = `HTTP/1.1 200 OK\n`; + +const responseHeaders = new Headers( + [ + ["Connection", "Keep-Alive"], + ["Content-Type", "text/event-stream"], + ["Cache-Control", "no-cache"], + ["Keep-Alive", `timeout=${Number.MAX_SAFE_INTEGER}`], + ], +); + +export class ServerSentEventTarget extends EventTarget { + #app: Application; + #closed = false; + #prev = Promise.resolve(); + #ready: Promise | true; + #serverRequest: ServerRequest; + #writer: BufWriter; + + #send = async (payload: string, prev: Promise): Promise => { + if (this.#closed) { + return; + } + if (this.#ready !== true) { + await this.#ready; + this.#ready = true; + } + try { + await prev; + await this.#writer.write(encoder.encode(payload)); + await this.#writer.flush(); + } catch (error) { + this.dispatchEvent(new CloseEvent({ cancelable: false })); + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + } + }; + + #setup = async (overrideHeaders?: Headers): Promise => { + const headers = new Headers(responseHeaders); + if (overrideHeaders) { + for (const [key, value] of overrideHeaders) { + headers.set(key, value); + } + } + let payload = response; + for (const [key, value] of headers) { + payload += `${key}: ${value}\n`; + } + payload += `\n`; + try { + await this.#writer.write(encoder.encode(payload)); + await this.#writer.flush(); + } catch (error) { + this.dispatchEvent(new CloseEvent({ cancelable: false })); + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + throw error; + } + }; + + /** Is set to `true` if events cannot be sent to the remote connection. + * Otherwise it is set to `false`. + * + * *Note*: This flag is lazily set, and might not reflect a closed state until + * another event, comment or message is attempted to be processed. */ + get closed(): boolean { + return this.#closed; + } + + constructor( + app: Application, + serverRequest: ServerRequest, + { headers }: ServerSentEventTargetOptions = {}, + ) { + super(); + this.#app = app; + this.#serverRequest = serverRequest; + this.#writer = this.#serverRequest.w; + this.addEventListener("close", () => { + this.#closed = true; + try { + this.#serverRequest.conn.close(); + } catch (error) { + if (!(error instanceof Deno.errors.BadResource)) { + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + } + } + }); + this.#ready = this.#setup(headers); + } + + /** Stop sending events to the remote connection and close the connection. */ + async close(): Promise { + if (this.#ready !== true) { + await this.#ready; + } + await this.#prev; + this.dispatchEvent(new CloseEvent({ cancelable: false })); + } + + /** Send a comment to the remote connection. Comments are not exposed to the + * client `EventSource` but are used for diagnostics and helping ensure a + * connection is kept alive. + * + * ```ts + * import { Application } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * const sse = ctx.getSSETarget(); + * sse.dispatchComment("this is a comment"); + * }); + * + * await app.listen(); + * ``` + */ + dispatchComment(comment: string): boolean { + this.#prev = this.#send( + `: ${comment.split("\n").join("\n: ")}\n\n`, + this.#prev, + ); + return true; + } + + /** Dispatch a message to the client. This message will contain `data: ` only + * and be available on the client `EventSource` on the `onmessage` or an event + * listener of type `"message"`. */ + // deno-lint-ignore no-explicit-any + dispatchMessage(data: any): boolean { + const event = new ServerSentEvent("__message", data); + return this.dispatchEvent(event); + } + + /** Dispatch a server sent event to the client. The event `type` will be + * sent as `event: ` to the client which will be raised as a `MessageEvent` + * on the `EventSource` in the client. + * + * Any local event handlers will be dispatched to first, and if the event + * is cancelled, it will not be sent to the client. + * + * ```ts + * import { Application, ServerSentEvent } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * const sse = ctx.getSSETarget(); + * const evt = new ServerSentEvent("ping", "hello"); + * sse.dispatchEvent(evt); + * }); + * + * await app.listen(); + * ``` + */ + dispatchEvent(event: ServerSentEvent): boolean; + dispatchEvent(event: CloseEvent | ErrorEvent): boolean; + dispatchEvent(event: ServerSentEvent | CloseEvent | ErrorEvent): boolean { + const dispatched = super.dispatchEvent(event); + if (dispatched && event instanceof ServerSentEvent) { + this.#prev = this.#send(String(event), this.#prev); + } + return dispatched; + } +} diff --git a/bundler/tests/.cache/deno/8fc82c04c3da476b57cb6815993113e94aa5fb7b.ts b/bundler/tests/.cache/deno/8fc82c04c3da476b57cb6815993113e94aa5fb7b.ts new file mode 100644 index 00000000000..adc524d922e --- /dev/null +++ b/bundler/tests/.cache/deno/8fc82c04c3da476b57cb6815993113e94aa5fb7b.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.84.0/_util/os.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/8fff27d7562ccc464f0749d51a915fe30323be39.ts b/bundler/tests/.cache/deno/8fff27d7562ccc464f0749d51a915fe30323be39.ts new file mode 100644 index 00000000000..41047e9c1e5 --- /dev/null +++ b/bundler/tests/.cache/deno/8fff27d7562ccc464f0749d51a915fe30323be39.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std@0.73.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ + +let NATIVE_OS: typeof Deno.build.os = "linux"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const navigator = (globalThis as any).navigator; +if (globalThis.Deno != null) { + NATIVE_OS = Deno.build.os; +} else if (navigator?.appVersion?.includes?.("Win") ?? false) { + NATIVE_OS = "windows"; +} +// TODO(nayeemrmn): Improve OS detection in browsers beyond Windows. + +export const isWindows = NATIVE_OS == "windows"; + +export { NATIVE_OS }; diff --git a/bundler/tests/.cache/deno/9016f9dbae6daca0ac5b0a94caeb0aace51f7748.ts b/bundler/tests/.cache/deno/9016f9dbae6daca0ac5b0a94caeb0aace51f7748.ts new file mode 100644 index 00000000000..840b30bd68d --- /dev/null +++ b/bundler/tests/.cache/deno/9016f9dbae6daca0ac5b0a94caeb0aace51f7748.ts @@ -0,0 +1,144 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/dumper/dumper_state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Schema, SchemaDefinition } from "../schema.ts"; +import { State } from "../state.ts"; +import type { StyleVariant, Type } from "../type.ts"; +import type { Any, ArrayObject } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +function compileStyleMap( + schema: Schema, + map?: ArrayObject | null, +): ArrayObject { + if (typeof map === "undefined" || map === null) return {}; + + let type: Type; + const result: ArrayObject = {}; + const keys = Object.keys(map); + let tag: string, style: StyleVariant; + for (let index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]) as StyleVariant; + if (tag.slice(0, 2) === "!!") { + tag = `tag:yaml.org,2002:${tag.slice(2)}`; + } + type = schema.compiledTypeMap.fallback[tag]; + + if ( + type && + typeof type.styleAliases !== "undefined" && + _hasOwnProperty.call(type.styleAliases, style) + ) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +export interface DumperStateOptions { + /** indentation width to use (in spaces). */ + indent?: number; + /** when true, will not add an indentation level to array elements */ + noArrayIndent?: boolean; + /** + * do not throw on invalid types (like function in the safe schema) + * and skip pairs and single values with such types. + */ + skipInvalid?: boolean; + /** + * specifies level of nesting, when to switch from + * block to flow style for collections. -1 means block style everywhere + */ + flowLevel?: number; + /** Each tag may have own set of styles. - "tag" => "style" map. */ + styles?: ArrayObject | null; + /** specifies a schema to use. */ + schema?: SchemaDefinition; + /** + * If true, sort keys when dumping YAML in ascending, ASCII character order. + * If a function, use the function to sort the keys. (default: false) + * If a function is specified, the function must return a negative value + * if first argument is less than second argument, zero if they're equal + * and a positive value otherwise. + */ + sortKeys?: boolean | ((a: string, b: string) => number); + /** set max line width. (default: 80) */ + lineWidth?: number; + /** + * if true, don't convert duplicate objects + * into references (default: false) + */ + noRefs?: boolean; + /** + * if true don't try to be compatible with older yaml versions. + * Currently: don't quote "yes", "no" and so on, + * as required for YAML 1.1 (default: false) + */ + noCompatMode?: boolean; + /** + * if true flow sequences will be condensed, omitting the + * space between `key: value` or `a, b`. Eg. `'[a,b]'` or `{a:{b:c}}`. + * Can be useful when using yaml for pretty URL query params + * as spaces are %-encoded. (default: false). + */ + condenseFlow?: boolean; +} + +export class DumperState extends State { + public indent: number; + public noArrayIndent: boolean; + public skipInvalid: boolean; + public flowLevel: number; + public sortKeys: boolean | ((a: Any, b: Any) => number); + public lineWidth: number; + public noRefs: boolean; + public noCompatMode: boolean; + public condenseFlow: boolean; + public implicitTypes: Type[]; + public explicitTypes: Type[]; + public tag: string | null = null; + public result = ""; + public duplicates: Any[] = []; + public usedDuplicates: Any[] = []; // changed from null to [] + public styleMap: ArrayObject; + public dump: Any; + + constructor({ + schema, + indent = 2, + noArrayIndent = false, + skipInvalid = false, + flowLevel = -1, + styles = null, + sortKeys = false, + lineWidth = 80, + noRefs = false, + noCompatMode = false, + condenseFlow = false, + }: DumperStateOptions) { + super(schema); + this.indent = Math.max(1, indent); + this.noArrayIndent = noArrayIndent; + this.skipInvalid = skipInvalid; + this.flowLevel = flowLevel; + this.styleMap = compileStyleMap(this.schema as Schema, styles); + this.sortKeys = sortKeys; + this.lineWidth = lineWidth; + this.noRefs = noRefs; + this.noCompatMode = noCompatMode; + this.condenseFlow = condenseFlow; + + this.implicitTypes = (this.schema as Schema).compiledImplicit; + this.explicitTypes = (this.schema as Schema).compiledExplicit; + } +} diff --git a/bundler/tests/.cache/deno/90704641c81576d268079355a67d613274b7d7a3.ts b/bundler/tests/.cache/deno/90704641c81576d268079355a67d613274b7d7a3.ts new file mode 100644 index 00000000000..e8ae310fb93 --- /dev/null +++ b/bundler/tests/.cache/deno/90704641c81576d268079355a67d613274b7d7a3.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/case/camelCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function camelCase( + value: string, + locale?: string, + mergeNumbers?: boolean, +): string { + let result = normalCase(value, locale); + + // Replace periods between numeric entities with an underscore. + if (!mergeNumbers) { + result = result.replace(/ (?=\d)/g, "_"); + } + + // Replace spaces between words with an upper cased character. + return result.replace(/ (.)/g, function (m: string, $1: string): string { + return upperCase($1, locale); + }); +} diff --git a/bundler/tests/.cache/deno/90b9eff0e637acf1f4eef040483d3ff3c159b770.ts b/bundler/tests/.cache/deno/90b9eff0e637acf1f4eef040483d3ff3c159b770.ts new file mode 100644 index 00000000000..11e50211561 --- /dev/null +++ b/bundler/tests/.cache/deno/90b9eff0e637acf1f4eef040483d3ff3c159b770.ts @@ -0,0 +1,376 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/TypeInfo.js + + +import find from '../polyfills/find.js'; +import { Kind } from '../language/kinds.js'; +import { getVisitFn } from '../language/visitor.js'; +import { isNode } from '../language/ast.js'; +import { isObjectType, isInterfaceType, isEnumType, isInputObjectType, isListType, isCompositeType, isInputType, isOutputType, getNullableType, getNamedType } from '../type/definition.js'; +import { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection.js'; +import { typeFromAST } from './typeFromAST.js'; +/** + * TypeInfo is a utility class which, given a GraphQL schema, can keep track + * of the current field and type definitions at any point in a GraphQL document + * AST during a recursive descent by calling `enter(node)` and `leave(node)`. + */ + +export class TypeInfo { + constructor(schema, // NOTE: this experimental optional second parameter is only needed in order + // to support non-spec-compliant code bases. You should never need to use it. + // It may disappear in the future. + getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals + // beginning somewhere other than documents. + initialType) { + this._schema = schema; + this._typeStack = []; + this._parentTypeStack = []; + this._inputTypeStack = []; + this._fieldDefStack = []; + this._defaultValueStack = []; + this._directive = null; + this._argument = null; + this._enumValue = null; + this._getFieldDef = getFieldDefFn ?? getFieldDef; + + if (initialType) { + if (isInputType(initialType)) { + this._inputTypeStack.push(initialType); + } + + if (isCompositeType(initialType)) { + this._parentTypeStack.push(initialType); + } + + if (isOutputType(initialType)) { + this._typeStack.push(initialType); + } + } + } + + getType() { + if (this._typeStack.length > 0) { + return this._typeStack[this._typeStack.length - 1]; + } + } + + getParentType() { + if (this._parentTypeStack.length > 0) { + return this._parentTypeStack[this._parentTypeStack.length - 1]; + } + } + + getInputType() { + if (this._inputTypeStack.length > 0) { + return this._inputTypeStack[this._inputTypeStack.length - 1]; + } + } + + getParentInputType() { + if (this._inputTypeStack.length > 1) { + return this._inputTypeStack[this._inputTypeStack.length - 2]; + } + } + + getFieldDef() { + if (this._fieldDefStack.length > 0) { + return this._fieldDefStack[this._fieldDefStack.length - 1]; + } + } + + getDefaultValue() { + if (this._defaultValueStack.length > 0) { + return this._defaultValueStack[this._defaultValueStack.length - 1]; + } + } + + getDirective() { + return this._directive; + } + + getArgument() { + return this._argument; + } + + getEnumValue() { + return this._enumValue; + } + + enter(node) { + const schema = this._schema; // Note: many of the types below are explicitly typed as "mixed" to drop + // any assumptions of a valid schema to ensure runtime types are properly + // checked before continuing since TypeInfo is used as part of validation + // which occurs before guarantees of schema and document validity. + + switch (node.kind) { + case Kind.SELECTION_SET: + { + const namedType = getNamedType(this.getType()); + + this._parentTypeStack.push(isCompositeType(namedType) ? namedType : undefined); + + break; + } + + case Kind.FIELD: + { + const parentType = this.getParentType(); + let fieldDef; + let fieldType; + + if (parentType) { + fieldDef = this._getFieldDef(schema, parentType, node); + + if (fieldDef) { + fieldType = fieldDef.type; + } + } + + this._fieldDefStack.push(fieldDef); + + this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined); + + break; + } + + case Kind.DIRECTIVE: + this._directive = schema.getDirective(node.name.value); + break; + + case Kind.OPERATION_DEFINITION: + { + let type; + + switch (node.operation) { + case 'query': + type = schema.getQueryType(); + break; + + case 'mutation': + type = schema.getMutationType(); + break; + + case 'subscription': + type = schema.getSubscriptionType(); + break; + } + + this._typeStack.push(isObjectType(type) ? type : undefined); + + break; + } + + case Kind.INLINE_FRAGMENT: + case Kind.FRAGMENT_DEFINITION: + { + const typeConditionAST = node.typeCondition; + const outputType = typeConditionAST ? typeFromAST(schema, typeConditionAST) : getNamedType(this.getType()); + + this._typeStack.push(isOutputType(outputType) ? outputType : undefined); + + break; + } + + case Kind.VARIABLE_DEFINITION: + { + const inputType = typeFromAST(schema, node.type); + + this._inputTypeStack.push(isInputType(inputType) ? inputType : undefined); + + break; + } + + case Kind.ARGUMENT: + { + let argDef; + let argType; + const fieldOrDirective = this.getDirective() ?? this.getFieldDef(); + + if (fieldOrDirective) { + argDef = find(fieldOrDirective.args, arg => arg.name === node.name.value); + + if (argDef) { + argType = argDef.type; + } + } + + this._argument = argDef; + + this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined); + + this._inputTypeStack.push(isInputType(argType) ? argType : undefined); + + break; + } + + case Kind.LIST: + { + const listType = getNullableType(this.getInputType()); + const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value. + + this._defaultValueStack.push(undefined); + + this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined); + + break; + } + + case Kind.OBJECT_FIELD: + { + const objectType = getNamedType(this.getInputType()); + let inputFieldType; + let inputField; + + if (isInputObjectType(objectType)) { + inputField = objectType.getFields()[node.name.value]; + + if (inputField) { + inputFieldType = inputField.type; + } + } + + this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined); + + this._inputTypeStack.push(isInputType(inputFieldType) ? inputFieldType : undefined); + + break; + } + + case Kind.ENUM: + { + const enumType = getNamedType(this.getInputType()); + let enumValue; + + if (isEnumType(enumType)) { + enumValue = enumType.getValue(node.value); + } + + this._enumValue = enumValue; + break; + } + } + } + + leave(node) { + switch (node.kind) { + case Kind.SELECTION_SET: + this._parentTypeStack.pop(); + + break; + + case Kind.FIELD: + this._fieldDefStack.pop(); + + this._typeStack.pop(); + + break; + + case Kind.DIRECTIVE: + this._directive = null; + break; + + case Kind.OPERATION_DEFINITION: + case Kind.INLINE_FRAGMENT: + case Kind.FRAGMENT_DEFINITION: + this._typeStack.pop(); + + break; + + case Kind.VARIABLE_DEFINITION: + this._inputTypeStack.pop(); + + break; + + case Kind.ARGUMENT: + this._argument = null; + + this._defaultValueStack.pop(); + + this._inputTypeStack.pop(); + + break; + + case Kind.LIST: + case Kind.OBJECT_FIELD: + this._defaultValueStack.pop(); + + this._inputTypeStack.pop(); + + break; + + case Kind.ENUM: + this._enumValue = null; + break; + } + } + +} +/** + * Not exactly the same as the executor's definition of getFieldDef, in this + * statically evaluated environment we do not always have an Object type, + * and need to handle Interface and Union types. + */ + +function getFieldDef(schema, parentType, fieldNode) { + const name = fieldNode.name.value; + + if (name === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) { + return SchemaMetaFieldDef; + } + + if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) { + return TypeMetaFieldDef; + } + + if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) { + return TypeNameMetaFieldDef; + } + + if (isObjectType(parentType) || isInterfaceType(parentType)) { + return parentType.getFields()[name]; + } +} +/** + * Creates a new visitor instance which maintains a provided TypeInfo instance + * along with visiting visitor. + */ + + +export function visitWithTypeInfo(typeInfo, visitor) { + return { + enter(node) { + typeInfo.enter(node); + const fn = getVisitFn(visitor, node.kind, + /* isLeaving */ + false); + + if (fn) { + const result = fn.apply(visitor, arguments); + + if (result !== undefined) { + typeInfo.leave(node); + + if (isNode(result)) { + typeInfo.enter(result); + } + } + + return result; + } + }, + + leave(node) { + const fn = getVisitFn(visitor, node.kind, + /* isLeaving */ + true); + let result; + + if (fn) { + result = fn.apply(visitor, arguments); + } + + typeInfo.leave(node); + return result; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/912159cca395c89550a8bf4dd96c59caa7a0491c.ts b/bundler/tests/.cache/deno/912159cca395c89550a8bf4dd96c59caa7a0491c.ts new file mode 100644 index 00000000000..ea79b89ac89 --- /dev/null +++ b/bundler/tests/.cache/deno/912159cca395c89550a8bf4dd96c59caa7a0491c.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/djwt@v1.9/_algorithm.ts + + +/* + * JSW §1: Cryptographic algorithms and identifiers for use with this specification + * are described in the separate JSON Web Algorithms (JWA) specification: + * https://www.rfc-editor.org/rfc/rfc7518 + */ +export type Algorithm = "none" | "HS256" | "HS512" | "RS256"; +export type AlgorithmInput = Algorithm | Array>; + +export function verify(algorithm: AlgorithmInput, jwtAlg: string): boolean { + return Array.isArray(algorithm) + ? (algorithm as string[]).includes(jwtAlg) + : algorithm === jwtAlg; +} diff --git a/bundler/tests/.cache/deno/913ad2ee1d96e794e75ab086ebbc44a621318c0e.ts b/bundler/tests/.cache/deno/913ad2ee1d96e794e75ab086ebbc44a621318c0e.ts new file mode 100644 index 00000000000..c2dba98308a --- /dev/null +++ b/bundler/tests/.cache/deno/913ad2ee1d96e794e75ab086ebbc44a621318c0e.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/rsa.ts + + +export * from "./src/rsa/mod.ts"; diff --git a/bundler/tests/.cache/deno/914dd2006ee4835291856b75f53266104d257c72.ts b/bundler/tests/.cache/deno/914dd2006ee4835291856b75f53266104d257c72.ts new file mode 100644 index 00000000000..c865f1f099b --- /dev/null +++ b/bundler/tests/.cache/deno/914dd2006ee4835291856b75f53266104d257c72.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/repeat.js + + +import _curry2 from './internal/_curry2.js'; +import always from './always.js'; +import times from './times.js'; + + +/** + * Returns a fixed list of size `n` containing a specified identical value. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig a -> n -> [a] + * @param {*} value The value to repeat. + * @param {Number} n The desired size of the output list. + * @return {Array} A new array containing `n` `value`s. + * @see R.times + * @example + * + * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi'] + * + * const obj = {}; + * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}] + * repeatedObjs[0] === repeatedObjs[1]; //=> true + * @symb R.repeat(a, 0) = [] + * @symb R.repeat(a, 1) = [a] + * @symb R.repeat(a, 2) = [a, a] + */ +var repeat = _curry2(function repeat(value, n) { + return times(always(value), n); +}); +export default repeat; diff --git a/bundler/tests/.cache/deno/917d25b1356f5415c8ae59cf11feadb4b161d74a.ts b/bundler/tests/.cache/deno/917d25b1356f5415c8ae59cf11feadb4b161d74a.ts new file mode 100644 index 00000000000..fe7075a3b42 --- /dev/null +++ b/bundler/tests/.cache/deno/917d25b1356f5415c8ae59cf11feadb4b161d74a.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isAlpha.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { alpha } from '../helpers/alpha.ts'; + +export const isAlpha = (str: string, locale = 'en-US') => { + assertString(str); + + if (locale in alpha) { + return (alpha as any)[locale].test(str); + } + + throw new Error(`Invalid locale '${locale}'`); +}; + +export const alphaLocales = Object.keys(alpha); diff --git a/bundler/tests/.cache/deno/9193cd2bdcf4d4a43841bfbd807ffcb37617a43f.ts b/bundler/tests/.cache/deno/9193cd2bdcf4d4a43841bfbd807ffcb37617a43f.ts new file mode 100644 index 00000000000..8bf35b0243c --- /dev/null +++ b/bundler/tests/.cache/deno/9193cd2bdcf4d4a43841bfbd807ffcb37617a43f.ts @@ -0,0 +1,85 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/mediaTyper.ts + + +/*! + * Adapted directly from media-typer at https://github.com/jshttp/media-typer/ + * which is licensed as follows: + * + * media-typer + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +const SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; +const TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; +const TYPE_REGEXP = + /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + +class MediaType { + constructor( + /** The type of the media type. */ + public type: string, + /** The subtype of the media type. */ + public subtype: string, + /** The optional suffix of the media type. */ + public suffix?: string, + ) {} +} + +/** Given a media type object, return a media type string. + * + * format({ + * type: "text", + * subtype: "html" + * }); // returns "text/html" + */ +export function format(obj: MediaType): string { + const { subtype, suffix, type } = obj; + + if (!TYPE_NAME_REGEXP.test(type)) { + throw new TypeError("Invalid type."); + } + if (!SUBTYPE_NAME_REGEXP.test(subtype)) { + throw new TypeError("Invalid subtype."); + } + + let str = `${type}/${subtype}`; + + if (suffix) { + if (!TYPE_NAME_REGEXP.test(suffix)) { + throw new TypeError("Invalid suffix."); + } + + str += `+${suffix}`; + } + + return str; +} + +/** Given a media type string, return a media type object. + * + * parse("application/json-patch+json"); + * // returns { + * // type: "application", + * // subtype: "json-patch", + * // suffix: "json" + * // } + */ +export function parse(str: string): MediaType { + const match = TYPE_REGEXP.exec(str.toLowerCase()); + + if (!match) { + throw new TypeError("Invalid media type."); + } + + let [, type, subtype] = match; + let suffix: string | undefined; + + const idx = subtype.lastIndexOf("+"); + if (idx !== -1) { + suffix = subtype.substr(idx + 1); + subtype = subtype.substr(0, idx); + } + + return new MediaType(type, subtype, suffix); +} diff --git a/bundler/tests/.cache/deno/91a3278cffe125ea1d39ab32b68668328582caa0.ts b/bundler/tests/.cache/deno/91a3278cffe125ea1d39ab32b68668328582caa0.ts new file mode 100644 index 00000000000..beca3628dd8 --- /dev/null +++ b/bundler/tests/.cache/deno/91a3278cffe125ea1d39ab32b68668328582caa0.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/args@1.0.7/command-errors.ts + + +import { + ParseError, +} from "./types.ts"; + +import { + FlagError, +} from "./flag-errors.ts"; + +/** + * Class of error created by `CommandType::extract` + * @template ErrList Type of array of {@link FlagError} + */ +export class CommandError< + ErrList extends readonly FlagError[], +> implements ParseError, Iterable { + constructor( + /** Array of {@link FlagError} */ + public readonly errors: ErrList, + ) {} + + public readonly toString = () => + this.errors + .map((error) => error.toString()) + .join("\n"); + + public *[Symbol.iterator]() { + yield* this.errors; + } +} diff --git a/bundler/tests/.cache/deno/91d50db2db9f158f1437cc38fc3506a9de0bc11c.ts b/bundler/tests/.cache/deno/91d50db2db9f158f1437cc38fc3506a9de0bc11c.ts new file mode 100644 index 00000000000..590fa71172e --- /dev/null +++ b/bundler/tests/.cache/deno/91d50db2db9f158f1437cc38fc3506a9de0bc11c.ts @@ -0,0 +1,224 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/database.ts + + +import type { Connector } from "./connectors/connector.ts"; +import type { + FieldMatchingTable, + Model, + ModelFields, + ModelSchema, +} from "./model.ts"; +import { QueryBuilder, QueryDescription } from "./query-builder.ts"; +import { + PostgresConnector, + PostgresOptions, +} from "./connectors/postgres-connector.ts"; +import { + SQLite3Connector, + SQLite3Options, +} from "./connectors/sqlite3-connector.ts"; +import { MySQLConnector, MySQLOptions } from "./connectors/mysql-connector.ts"; +import { + MongoDBConnector, + MongoDBOptions, +} from "./connectors/mongodb-connector.ts"; +import { formatResultToModelInstance } from "./helpers/results.ts"; +import { Translator } from "./translators/translator.ts"; +import { SQLTranslator } from "./translators/sql-translator.ts"; + +type DatabaseOptions = + | DatabaseDialect + | { + dialect: DatabaseDialect; + debug?: boolean; + }; + +export type SyncOptions = { + /** If tables should be dropped if they exist. */ + drop?: boolean; +}; + +export type DatabaseDialect = "postgres" | "sqlite3" | "mysql" | "mongo"; + +/** Database client which interacts with an external database instance. */ +export class Database { + private _dialect: DatabaseDialect; + private _connector: Connector; + private _queryBuilder: QueryBuilder; + private _models: ModelSchema[] = []; + private _debug: boolean; + + /** Initialize database given a dialect and options. + * + * const db = new Database("sqlite3", { + * filepath: "./db.sqlite" + * }); + * + * const db = new Database({ + * dialect: "sqlite3", + * debug: true + * }, { ... }); + */ + constructor( + databaseOptionsOrDialect: DatabaseOptions, + connectionOptions: + | PostgresOptions + | SQLite3Options + | MySQLOptions + | MongoDBOptions, + ) { + this._dialect = typeof databaseOptionsOrDialect === "object" + ? databaseOptionsOrDialect.dialect + : databaseOptionsOrDialect; + + this._debug = typeof databaseOptionsOrDialect === "object" + ? databaseOptionsOrDialect.debug ?? false + : false; + + this._queryBuilder = new QueryBuilder(); + + switch (this._dialect) { + case "postgres": + this._connector = new PostgresConnector( + connectionOptions as PostgresOptions, + ); + break; + + case "sqlite3": + this._connector = new SQLite3Connector( + connectionOptions as SQLite3Options, + ); + break; + + case "mysql": + this._connector = new MySQLConnector(connectionOptions as MySQLOptions); + break; + + case "mongo": + this._connector = new MongoDBConnector( + connectionOptions as MongoDBOptions, + ); + break; + + default: + throw new Error( + `No connector was found for the given dialect: ${this._dialect}.`, + ); + } + } + + /** Test database connection. */ + ping() { + return this._connector.ping(); + } + + /** Get the database dialect. */ + getDialect() { + return this._dialect; + } + + /* Get the database connector. */ + getConnector() { + return this._connector; + } + + /** Create the given models in the current database. + * + * await db.sync({ drop: true }); + */ + async sync(options: SyncOptions = {}) { + if (options.drop) { + for (const model of this._models) { + await model.drop(); + } + } + + for (const model of this._models) { + await model.createTable(); + } + } + + /** Associate all the required information for a model to connect to a database. + * + * await db.link([Flight, Airport]); + */ + link(models: ModelSchema[]) { + this._models = models; + + this._models.forEach((model) => + model._link({ + queryBuilder: this._queryBuilder, + database: this, + }) + ); + + return this; + } + + /** Pass on any query to the database. + * + * await db.query("SELECT * FROM `flights`"); + */ + async query(query: QueryDescription): Promise { + if (this._debug) { + console.log(query); + } + + const results = await this._connector.query(query); + + return Array.isArray(results) + ? results.map((result) => + formatResultToModelInstance(query.schema, result) + ) + : formatResultToModelInstance(query.schema, results); + } + + /** Compute field matchings tables for model usage. */ + _computeModelFieldMatchings( + table: string, + fields: ModelFields, + withTimestamps: boolean, + ): { + toClient: FieldMatchingTable; + toDatabase: FieldMatchingTable; + } { + const databaseDialect = this.getDialect(); + const translator = databaseDialect === "mongo" + ? new Translator() + : new SQLTranslator(databaseDialect); + + const modelFields = { ...fields }; + if (withTimestamps) { + modelFields.updatedAt = ""; + modelFields.createdAt = ""; + } + + const toDatabase: FieldMatchingTable = Object.entries(modelFields).reduce( + (prev: any, [clientFieldName, fieldType]) => { + const databaseFieldName = typeof fieldType !== "string" && fieldType.as + ? fieldType.as + : (translator.formatFieldNameToDatabase(clientFieldName) as string); + + prev[clientFieldName] = databaseFieldName; + prev[`${table}.${clientFieldName}`] = `${table}.${databaseFieldName}`; + return prev; + }, + {}, + ); + + const toClient: FieldMatchingTable = Object.entries(toDatabase).reduce( + (prev, [clientFieldName, databaseFieldName]) => ({ + ...prev, + [databaseFieldName]: clientFieldName, + }), + {}, + ); + + return { toDatabase, toClient }; + } + + /** Close the current database connection. */ + async close() { + return this._connector.close(); + } +} diff --git a/bundler/tests/.cache/deno/92f25bed9413840ab7090f43c727ec0f6141247c.ts b/bundler/tests/.cache/deno/92f25bed9413840ab7090f43c727ec0f6141247c.ts new file mode 100644 index 00000000000..a0187ee0f76 --- /dev/null +++ b/bundler/tests/.cache/deno/92f25bed9413840ab7090f43c727ec0f6141247c.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/mysql/src/constant/capabilities.ts + + +enum ServerCapabilities { + CLIENT_PROTOCOL_41 = 0x00000200, + CLIENT_CONNECT_WITH_DB = 0x00000008, + CLIENT_LONG_FLAG = 0x00000004, + CLIENT_DEPRECATE_EOF = 0x01000000, + CLIENT_LONG_PASSWORD = 0x00000001, + CLIENT_TRANSACTIONS = 0x00002000, + CLIENT_MULTI_RESULTS = 0x00020000, + CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA = 0x00200000, + CLIENT_PLUGIN_AUTH = 0x80000, + CLIENT_SECURE_CONNECTION = 0x8000, + CLIENT_FOUND_ROWS = 0x00000002, + CLIENT_CONNECT_ATTRS = 0x00100000, + CLIENT_IGNORE_SPACE = 0x00000100, + CLIENT_IGNORE_SIGPIPE = 0x00001000, + CLIENT_RESERVED = 0x00004000, + CLIENT_PS_MULTI_RESULTS = 0x00040000, +} + +export default ServerCapabilities; diff --git a/bundler/tests/.cache/deno/92f62fbca0fcf140695b1347dd3443f4d08e85d5.ts b/bundler/tests/.cache/deno/92f62fbca0fcf140695b1347dd3443f4d08e85d5.ts new file mode 100644 index 00000000000..1a7559258a4 --- /dev/null +++ b/bundler/tests/.cache/deno/92f62fbca0fcf140695b1347dd3443f4d08e85d5.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_forceReduced.js + + +export default function _forceReduced(x) { + return { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +} diff --git a/bundler/tests/.cache/deno/9308baec008c11e5d9fdd35e26c857d4b6de6d23.ts b/bundler/tests/.cache/deno/9308baec008c11e5d9fdd35e26c857d4b6de6d23.ts new file mode 100644 index 00000000000..6bc489f0b86 --- /dev/null +++ b/bundler/tests/.cache/deno/9308baec008c11e5d9fdd35e26c857d4b6de6d23.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pickAll.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Similar to `pick` except that this one includes a `key: undefined` pair for + * properties that don't exist. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.pick + * @example + * + * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} + */ +var pickAll = _curry2(function pickAll(names, obj) { + var result = {}; + var idx = 0; + var len = names.length; + while (idx < len) { + var name = names[idx]; + result[name] = obj[name]; + idx += 1; + } + return result; +}); +export default pickAll; diff --git a/bundler/tests/.cache/deno/930cdcb3788f30348526fcff522f787686532e60.ts b/bundler/tests/.cache/deno/930cdcb3788f30348526fcff522f787686532e60.ts new file mode 100644 index 00000000000..a25fc89f042 --- /dev/null +++ b/bundler/tests/.cache/deno/930cdcb3788f30348526fcff522f787686532e60.ts @@ -0,0 +1,621 @@ +// Loaded from https://deno.land/x/path_to_regexp@v6.2.0/index.ts + + +/** + * Tokenizer results. + */ +interface LexToken { + type: + | "OPEN" + | "CLOSE" + | "PATTERN" + | "NAME" + | "CHAR" + | "ESCAPED_CHAR" + | "MODIFIER" + | "END"; + index: number; + value: string; +} + +/** + * Tokenize input string. + */ +function lexer(str: string): LexToken[] { + const tokens: LexToken[] = []; + let i = 0; + + while (i < str.length) { + const char = str[i]; + + if (char === "*" || char === "+" || char === "?") { + tokens.push({ type: "MODIFIER", index: i, value: str[i++] }); + continue; + } + + if (char === "\\") { + tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] }); + continue; + } + + if (char === "{") { + tokens.push({ type: "OPEN", index: i, value: str[i++] }); + continue; + } + + if (char === "}") { + tokens.push({ type: "CLOSE", index: i, value: str[i++] }); + continue; + } + + if (char === ":") { + let name = ""; + let j = i + 1; + + while (j < str.length) { + const code = str.charCodeAt(j); + + if ( + // `0-9` + (code >= 48 && code <= 57) || + // `A-Z` + (code >= 65 && code <= 90) || + // `a-z` + (code >= 97 && code <= 122) || + // `_` + code === 95 + ) { + name += str[j++]; + continue; + } + + break; + } + + if (!name) throw new TypeError(`Missing parameter name at ${i}`); + + tokens.push({ type: "NAME", index: i, value: name }); + i = j; + continue; + } + + if (char === "(") { + let count = 1; + let pattern = ""; + let j = i + 1; + + if (str[j] === "?") { + throw new TypeError(`Pattern cannot start with "?" at ${j}`); + } + + while (j < str.length) { + if (str[j] === "\\") { + pattern += str[j++] + str[j++]; + continue; + } + + if (str[j] === ")") { + count--; + if (count === 0) { + j++; + break; + } + } else if (str[j] === "(") { + count++; + if (str[j + 1] !== "?") { + throw new TypeError(`Capturing groups are not allowed at ${j}`); + } + } + + pattern += str[j++]; + } + + if (count) throw new TypeError(`Unbalanced pattern at ${i}`); + if (!pattern) throw new TypeError(`Missing pattern at ${i}`); + + tokens.push({ type: "PATTERN", index: i, value: pattern }); + i = j; + continue; + } + + tokens.push({ type: "CHAR", index: i, value: str[i++] }); + } + + tokens.push({ type: "END", index: i, value: "" }); + + return tokens; +} + +export interface ParseOptions { + /** + * Set the default delimiter for repeat parameters. (default: `'/'`) + */ + delimiter?: string; + /** + * List of characters to automatically consider prefixes when parsing. + */ + prefixes?: string; +} + +/** + * Parse a string for the raw tokens. + */ +export function parse(str: string, options: ParseOptions = {}): Token[] { + const tokens = lexer(str); + const { prefixes = "./" } = options; + const defaultPattern = `[^${escapeString(options.delimiter || "/#?")}]+?`; + const result: Token[] = []; + let key = 0; + let i = 0; + let path = ""; + + const tryConsume = (type: LexToken["type"]): string | undefined => { + if (i < tokens.length && tokens[i].type === type) return tokens[i++].value; + }; + + const mustConsume = (type: LexToken["type"]): string => { + const value = tryConsume(type); + if (value !== undefined) return value; + const { type: nextType, index } = tokens[i]; + throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`); + }; + + const consumeText = (): string => { + let result = ""; + let value: string | undefined; + // tslint:disable-next-line + while ((value = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR"))) { + result += value; + } + return result; + }; + + while (i < tokens.length) { + const char = tryConsume("CHAR"); + const name = tryConsume("NAME"); + const pattern = tryConsume("PATTERN"); + + if (name || pattern) { + let prefix = char || ""; + + if (prefixes.indexOf(prefix) === -1) { + path += prefix; + prefix = ""; + } + + if (path) { + result.push(path); + path = ""; + } + + result.push({ + name: name || key++, + prefix, + suffix: "", + pattern: pattern || defaultPattern, + modifier: tryConsume("MODIFIER") || "" + }); + continue; + } + + const value = char || tryConsume("ESCAPED_CHAR"); + if (value) { + path += value; + continue; + } + + if (path) { + result.push(path); + path = ""; + } + + const open = tryConsume("OPEN"); + if (open) { + const prefix = consumeText(); + const name = tryConsume("NAME") || ""; + const pattern = tryConsume("PATTERN") || ""; + const suffix = consumeText(); + + mustConsume("CLOSE"); + + result.push({ + name: name || (pattern ? key++ : ""), + pattern: name && !pattern ? defaultPattern : pattern, + prefix, + suffix, + modifier: tryConsume("MODIFIER") || "" + }); + continue; + } + + mustConsume("END"); + } + + return result; +} + +export interface TokensToFunctionOptions { + /** + * When `true` the regexp will be case sensitive. (default: `false`) + */ + sensitive?: boolean; + /** + * Function for encoding input strings for output. + */ + encode?: (value: string, token: Key) => string; + /** + * When `false` the function can produce an invalid (unmatched) path. (default: `true`) + */ + validate?: boolean; +} + +/** + * Compile a string to a template function for the path. + */ +export function compile

( + str: string, + options?: ParseOptions & TokensToFunctionOptions +) { + return tokensToFunction

(parse(str, options), options); +} + +export type PathFunction

= (data?: P) => string; + +/** + * Expose a method for transforming tokens into the path function. + */ +export function tokensToFunction

( + tokens: Token[], + options: TokensToFunctionOptions = {} +): PathFunction

{ + const reFlags = flags(options); + const { encode = (x: string) => x, validate = true } = options; + + // Compile all the tokens into regexps. + const matches = tokens.map(token => { + if (typeof token === "object") { + return new RegExp(`^(?:${token.pattern})$`, reFlags); + } + }); + + return (data: Record | null | undefined) => { + let path = ""; + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + + if (typeof token === "string") { + path += token; + continue; + } + + const value = data ? data[token.name] : undefined; + const optional = token.modifier === "?" || token.modifier === "*"; + const repeat = token.modifier === "*" || token.modifier === "+"; + + if (Array.isArray(value)) { + if (!repeat) { + throw new TypeError( + `Expected "${token.name}" to not repeat, but got an array` + ); + } + + if (value.length === 0) { + if (optional) continue; + + throw new TypeError(`Expected "${token.name}" to not be empty`); + } + + for (let j = 0; j < value.length; j++) { + const segment = encode(value[j], token); + + if (validate && !(matches[i] as RegExp).test(segment)) { + throw new TypeError( + `Expected all "${token.name}" to match "${token.pattern}", but got "${segment}"` + ); + } + + path += token.prefix + segment + token.suffix; + } + + continue; + } + + if (typeof value === "string" || typeof value === "number") { + const segment = encode(String(value), token); + + if (validate && !(matches[i] as RegExp).test(segment)) { + throw new TypeError( + `Expected "${token.name}" to match "${token.pattern}", but got "${segment}"` + ); + } + + path += token.prefix + segment + token.suffix; + continue; + } + + if (optional) continue; + + const typeOfMessage = repeat ? "an array" : "a string"; + throw new TypeError(`Expected "${token.name}" to be ${typeOfMessage}`); + } + + return path; + }; +} + +export interface RegexpToFunctionOptions { + /** + * Function for decoding strings for params. + */ + decode?: (value: string, token: Key) => string; +} + +/** + * A match result contains data about the path match. + */ +export interface MatchResult

{ + path: string; + index: number; + params: P; +} + +/** + * A match is either `false` (no match) or a match result. + */ +export type Match

= false | MatchResult

; + +/** + * The match function takes a string and returns whether it matched the path. + */ +export type MatchFunction

= ( + path: string +) => Match

; + +/** + * Create path match function from `path-to-regexp` spec. + */ +export function match

( + str: Path, + options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions +) { + const keys: Key[] = []; + const re = pathToRegexp(str, keys, options); + return regexpToFunction

(re, keys, options); +} + +/** + * Create a path match function from `path-to-regexp` output. + */ +export function regexpToFunction

( + re: RegExp, + keys: Key[], + options: RegexpToFunctionOptions = {} +): MatchFunction

{ + const { decode = (x: string) => x } = options; + + return function(pathname: string) { + const m = re.exec(pathname); + if (!m) return false; + + const { 0: path, index } = m; + const params = Object.create(null); + + for (let i = 1; i < m.length; i++) { + // tslint:disable-next-line + if (m[i] === undefined) continue; + + const key = keys[i - 1]; + + if (key.modifier === "*" || key.modifier === "+") { + params[key.name] = m[i].split(key.prefix + key.suffix).map(value => { + return decode(value, key); + }); + } else { + params[key.name] = decode(m[i], key); + } + } + + return { path, index, params }; + }; +} + +/** + * Escape a regular expression string. + */ +function escapeString(str: string) { + return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); +} + +/** + * Get the flags for a regexp from the options. + */ +function flags(options?: { sensitive?: boolean }) { + return options && options.sensitive ? "" : "i"; +} + +/** + * Metadata about a key. + */ +export interface Key { + name: string | number; + prefix: string; + suffix: string; + pattern: string; + modifier: string; +} + +/** + * A token is a string (nothing special) or key metadata (capture group). + */ +export type Token = string | Key; + +/** + * Pull out keys from a regexp. + */ +function regexpToRegexp(path: RegExp, keys?: Key[]): RegExp { + if (!keys) return path; + + const groupsRegex = /\((?:\?<(.*?)>)?(?!\?)/g; + + let index = 0; + let execResult = groupsRegex.exec(path.source); + while (execResult) { + keys.push({ + // Use parenthesized substring match if available, index otherwise + name: execResult[1] || index++, + prefix: "", + suffix: "", + modifier: "", + pattern: "" + }); + execResult = groupsRegex.exec(path.source); + } + + return path; +} + +/** + * Transform an array into a regexp. + */ +function arrayToRegexp( + paths: Array, + keys?: Key[], + options?: TokensToRegexpOptions & ParseOptions +): RegExp { + const parts = paths.map(path => pathToRegexp(path, keys, options).source); + return new RegExp(`(?:${parts.join("|")})`, flags(options)); +} + +/** + * Create a path regexp from string input. + */ +function stringToRegexp( + path: string, + keys?: Key[], + options?: TokensToRegexpOptions & ParseOptions +) { + return tokensToRegexp(parse(path, options), keys, options); +} + +export interface TokensToRegexpOptions { + /** + * When `true` the regexp will be case sensitive. (default: `false`) + */ + sensitive?: boolean; + /** + * When `true` the regexp won't allow an optional trailing delimiter to match. (default: `false`) + */ + strict?: boolean; + /** + * When `true` the regexp will match to the end of the string. (default: `true`) + */ + end?: boolean; + /** + * When `true` the regexp will match from the beginning of the string. (default: `true`) + */ + start?: boolean; + /** + * Sets the final character for non-ending optimistic matches. (default: `/`) + */ + delimiter?: string; + /** + * List of characters that can also be "end" characters. + */ + endsWith?: string; + /** + * Encode path tokens for use in the `RegExp`. + */ + encode?: (value: string) => string; +} + +/** + * Expose a function for taking tokens and returning a RegExp. + */ +export function tokensToRegexp( + tokens: Token[], + keys?: Key[], + options: TokensToRegexpOptions = {} +) { + const { + strict = false, + start = true, + end = true, + encode = (x: string) => x + } = options; + const endsWith = `[${escapeString(options.endsWith || "")}]|$`; + const delimiter = `[${escapeString(options.delimiter || "/#?")}]`; + let route = start ? "^" : ""; + + // Iterate over the tokens and create our regexp string. + for (const token of tokens) { + if (typeof token === "string") { + route += escapeString(encode(token)); + } else { + const prefix = escapeString(encode(token.prefix)); + const suffix = escapeString(encode(token.suffix)); + + if (token.pattern) { + if (keys) keys.push(token); + + if (prefix || suffix) { + if (token.modifier === "+" || token.modifier === "*") { + const mod = token.modifier === "*" ? "?" : ""; + route += `(?:${prefix}((?:${token.pattern})(?:${suffix}${prefix}(?:${token.pattern}))*)${suffix})${mod}`; + } else { + route += `(?:${prefix}(${token.pattern})${suffix})${token.modifier}`; + } + } else { + route += `(${token.pattern})${token.modifier}`; + } + } else { + route += `(?:${prefix}${suffix})${token.modifier}`; + } + } + } + + if (end) { + if (!strict) route += `${delimiter}?`; + + route += !options.endsWith ? "$" : `(?=${endsWith})`; + } else { + const endToken = tokens[tokens.length - 1]; + const isEndDelimited = + typeof endToken === "string" + ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 + : // tslint:disable-next-line + endToken === undefined; + + if (!strict) { + route += `(?:${delimiter}(?=${endsWith}))?`; + } + + if (!isEndDelimited) { + route += `(?=${delimiter}|${endsWith})`; + } + } + + return new RegExp(route, flags(options)); +} + +/** + * Supported `path-to-regexp` input types. + */ +export type Path = string | RegExp | Array; + +/** + * Normalize the given path string, returning a regular expression. + * + * An empty array can be passed in for the keys, which will hold the + * placeholder key descriptions. For example, using `/user/:id`, `keys` will + * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. + */ +export function pathToRegexp( + path: Path, + keys?: Key[], + options?: TokensToRegexpOptions & ParseOptions +) { + if (path instanceof RegExp) return regexpToRegexp(path, keys); + if (Array.isArray(path)) return arrayToRegexp(path, keys, options); + return stringToRegexp(path, keys, options); +} diff --git a/bundler/tests/.cache/deno/931284ff6f206e5b6cb8434500b5e93d5189dda3.ts b/bundler/tests/.cache/deno/931284ff6f206e5b6cb8434500b5e93d5189dda3.ts new file mode 100644 index 00000000000..ac30d1c03fa --- /dev/null +++ b/bundler/tests/.cache/deno/931284ff6f206e5b6cb8434500b5e93d5189dda3.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/std@0.77.0/fs/ensure_link.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export async function ensureLink(src: string, dest: string): Promise { + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + await Deno.link(src, dest); +} + +/** + * Ensures that the hard link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path. Directory hard links are not allowed. + * @param dest the destination link path + */ +export function ensureLinkSync(src: string, dest: string): void { + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "file") { + throw new Error( + `Ensure path exists, expected 'file', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + + Deno.linkSync(src, dest); +} diff --git a/bundler/tests/.cache/deno/9324fe55cec9116cd64020166b666c670ed52c49.ts b/bundler/tests/.cache/deno/9324fe55cec9116cd64020166b666c670ed52c49.ts new file mode 100644 index 00000000000..517a69cc569 --- /dev/null +++ b/bundler/tests/.cache/deno/9324fe55cec9116cd64020166b666c670ed52c49.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isInt.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/; + +/** + * @ignore + */ +const intLeadingZeroes = /^[-+]?[0-9]+$/; + +type IntOptions = { + allowLeadingZeroes?: boolean; + min?: number; + max?: number; + lt?: number; + gt?: number; +}; + +export const isInt = (str: string, options?: IntOptions) => { + assertString(str); + options = options || {}; + + // Get the regex to use for testing, based on whether + // leading zeroes are allowed or not. + const regex = + options.hasOwnProperty('allowLeadingZeroes') && !options.allowLeadingZeroes + ? int + : intLeadingZeroes; + + // Check min/max/lt/gt + // @ts-ignore allowing typedoc to build + const minCheckPassed = !options.hasOwnProperty('min') || +str >= options.min; + // @ts-ignore allowing typedoc to build + const maxCheckPassed = !options.hasOwnProperty('max') || +str <= options.max; + // @ts-ignore allowing typedoc to build + const ltCheckPassed = !options.hasOwnProperty('lt') || +str < options.lt; + // @ts-ignore allowing typedoc to build + const gtCheckPassed = !options.hasOwnProperty('gt') || +str > options.gt; + + return ( + regex.test(str) && + minCheckPassed && + maxCheckPassed && + ltCheckPassed && + gtCheckPassed + ); +}; diff --git a/bundler/tests/.cache/deno/9332e6f272be77a67cc92a5fc04e228c158f6435.ts b/bundler/tests/.cache/deno/9332e6f272be77a67cc92a5fc04e228c158f6435.ts new file mode 100644 index 00000000000..8f3f7e9d317 --- /dev/null +++ b/bundler/tests/.cache/deno/9332e6f272be77a67cc92a5fc04e228c158f6435.ts @@ -0,0 +1,1003 @@ +// Loaded from https://deno.land/std@0.79.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/933a1e88e36f7711de7e0ef6d06ba3998e3b7d0a.ts b/bundler/tests/.cache/deno/933a1e88e36f7711de7e0ef6d06ba3998e3b7d0a.ts new file mode 100644 index 00000000000..8677c3237fe --- /dev/null +++ b/bundler/tests/.cache/deno/933a1e88e36f7711de7e0ef6d06ba3998e3b7d0a.ts @@ -0,0 +1,156 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_equals.js + + +import _arrayFromIterator from './_arrayFromIterator.js'; +import _includesWith from './_includesWith.js'; +import _functionName from './_functionName.js'; +import _has from './_has.js'; +import _objectIs from './_objectIs.js'; +import keys from '../keys.js'; +import type from '../type.js'; + +/** + * private _uniqContentEquals function. + * That function is checking equality of 2 iterator contents with 2 assumptions + * - iterators lengths are the same + * - iterators values are unique + * + * false-positive result will be returned for comparision of, e.g. + * - [1,2,3] and [1,2,3,4] + * - [1,1,1] and [1,2,3] + * */ + +function _uniqContentEquals(aIterator, bIterator, stackA, stackB) { + var a = _arrayFromIterator(aIterator); + var b = _arrayFromIterator(bIterator); + + function eq(_a, _b) { + return _equals(_a, _b, stackA.slice(), stackB.slice()); + } + + // if *a* array contains any element that is not included in *b* + return !_includesWith(function(b, aItem) { + return !_includesWith(eq, aItem, b); + }, b, a); +} + +export default function _equals(a, b, stackA, stackB) { + if (_objectIs(a, b)) { + return true; + } + + var typeA = type(a); + + if (typeA !== type(b)) { + return false; + } + + if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') { + return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && + typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a); + } + + if (typeof a.equals === 'function' || typeof b.equals === 'function') { + return typeof a.equals === 'function' && a.equals(b) && + typeof b.equals === 'function' && b.equals(a); + } + + switch (typeA) { + case 'Arguments': + case 'Array': + case 'Object': + if (typeof a.constructor === 'function' && + _functionName(a.constructor) === 'Promise') { + return a === b; + } + break; + case 'Boolean': + case 'Number': + case 'String': + if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) { + return false; + } + break; + case 'Date': + if (!_objectIs(a.valueOf(), b.valueOf())) { + return false; + } + break; + case 'Error': + return a.name === b.name && a.message === b.message; + case 'RegExp': + if (!(a.source === b.source && + a.global === b.global && + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky && + a.unicode === b.unicode)) { + return false; + } + break; + } + + var idx = stackA.length - 1; + while (idx >= 0) { + if (stackA[idx] === a) { + return stackB[idx] === b; + } + idx -= 1; + } + + switch (typeA) { + case 'Map': + if (a.size !== b.size) { + return false; + } + + return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b])); + case 'Set': + if (a.size !== b.size) { + return false; + } + + return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b])); + case 'Arguments': + case 'Array': + case 'Object': + case 'Boolean': + case 'Number': + case 'String': + case 'Date': + case 'Error': + case 'RegExp': + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'ArrayBuffer': + break; + default: + // Values of other types are only equal if identical. + return false; + } + + var keysA = keys(a); + if (keysA.length !== keys(b).length) { + return false; + } + + var extendedStackA = stackA.concat([a]); + var extendedStackB = stackB.concat([b]); + + idx = keysA.length - 1; + while (idx >= 0) { + var key = keysA[idx]; + if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) { + return false; + } + idx -= 1; + } + return true; +} diff --git a/bundler/tests/.cache/deno/938b32b0d6751f3aba67ef524c04833e96350f2a.ts b/bundler/tests/.cache/deno/938b32b0d6751f3aba67ef524c04833e96350f2a.ts new file mode 100644 index 00000000000..a8a2f25a0eb --- /dev/null +++ b/bundler/tests/.cache/deno/938b32b0d6751f3aba67ef524c04833e96350f2a.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.81.0/io/ioutil.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/93c1ee29889dba621d84cfe6545b2d52344176f5.ts b/bundler/tests/.cache/deno/93c1ee29889dba621d84cfe6545b2d52344176f5.ts new file mode 100644 index 00000000000..1caf574f86f --- /dev/null +++ b/bundler/tests/.cache/deno/93c1ee29889dba621d84cfe6545b2d52344176f5.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_filter.js + + +export default function _filter(fn, list) { + var idx = 0; + var len = list.length; + var result = []; + + while (idx < len) { + if (fn(list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; +} diff --git a/bundler/tests/.cache/deno/93f37665c0a570d9251dd8146fc132832d09ad3a.ts b/bundler/tests/.cache/deno/93f37665c0a570d9251dd8146fc132832d09ad3a.ts new file mode 100644 index 00000000000..bc10c9adc14 --- /dev/null +++ b/bundler/tests/.cache/deno/93f37665c0a570d9251dd8146fc132832d09ad3a.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/toFloat.ts + + +import { isFloat } from '../validations/isFloat.ts'; + +export const toFloat = (str: string) => { + if (!isFloat(str)) return NaN; + + return parseFloat(str); +}; diff --git a/bundler/tests/.cache/deno/9409c3f194163c446592e150bebb737c3d28dfec.ts b/bundler/tests/.cache/deno/9409c3f194163c446592e150bebb737c3d28dfec.ts new file mode 100644 index 00000000000..f049d84935b --- /dev/null +++ b/bundler/tests/.cache/deno/9409c3f194163c446592e150bebb737c3d28dfec.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std@0.85.0/fs/empty_dir.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { join } from "../path/mod.ts"; + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function emptyDir(dir: string): Promise { + try { + const items = []; + for await (const dirEntry of Deno.readDir(dir)) { + items.push(dirEntry); + } + + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + await Deno.remove(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + + // if not exist. then create it + await Deno.mkdir(dir, { recursive: true }); + } +} + +/** + * Ensures that a directory is empty. + * Deletes directory contents if the directory is not empty. + * If the directory does not exist, it is created. + * The directory itself is not deleted. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function emptyDirSync(dir: string): void { + try { + const items = [...Deno.readDirSync(dir)]; + + // If the directory exists, remove all entries inside it. + while (items.length) { + const item = items.shift(); + if (item && item.name) { + const filepath = join(dir, item.name); + Deno.removeSync(filepath, { recursive: true }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + // if not exist. then create it + Deno.mkdirSync(dir, { recursive: true }); + return; + } +} diff --git a/bundler/tests/.cache/deno/94f90a6d01b8280ce5c99f6f4b54af76a92032ef.ts b/bundler/tests/.cache/deno/94f90a6d01b8280ce5c99f6f4b54af76a92032ef.ts new file mode 100644 index 00000000000..af63f8b9ab9 --- /dev/null +++ b/bundler/tests/.cache/deno/94f90a6d01b8280ce5c99f6f4b54af76a92032ef.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.73.0/async/pool.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + writer.write(p); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + })(); + return res.readable.getIterator(); +} diff --git a/bundler/tests/.cache/deno/953fe96d93f20d7016601beab985b049123de5eb.ts b/bundler/tests/.cache/deno/953fe96d93f20d7016601beab985b049123de5eb.ts new file mode 100644 index 00000000000..ad50f13b923 --- /dev/null +++ b/bundler/tests/.cache/deno/953fe96d93f20d7016601beab985b049123de5eb.ts @@ -0,0 +1,125 @@ +// Loaded from https://deno.land/x/mysql/src/pool.ts + + +import { DeferredStack } from "./deferred.ts"; +import { Connection } from "./connection.ts"; +import { log } from "./logger.ts"; + +/** @ignore */ +export class PoolConnection extends Connection { + _pool?: ConnectionPool = undefined; + + private _idleTimer?: number = undefined; + private _idle = false; + + /** + * Should be called by the pool. + */ + enterIdle() { + this._idle = true; + if (this.config.idleTimeout) { + this._idleTimer = setTimeout(() => { + log.info("connection idle timeout"); + this._pool!.remove(this); + try { + this.close(); + } catch (error) { + log.warning(`error closing idle connection`, error); + } + }, this.config.idleTimeout); + } + } + + /** + * Should be called by the pool. + */ + exitIdle() { + this._idle = false; + if (this._idleTimer !== undefined) { + clearTimeout(this._idleTimer); + } + } + + /** + * Remove the connection from the pool permanently, when the connection is not usable. + */ + removeFromPool() { + this._pool!.reduceSize(); + this._pool = undefined; + } + + returnToPool() { + this._pool?.push(this); + } +} + +/** @ignore */ +export class ConnectionPool { + _deferred: DeferredStack; + _connections: PoolConnection[] = []; + _closed: boolean = false; + + constructor(maxSize: number, creator: () => Promise) { + this._deferred = new DeferredStack(maxSize, this._connections, async () => { + const conn = await creator(); + conn._pool = this; + return conn; + }); + } + + get info() { + return { + size: this._deferred.size, + maxSize: this._deferred.maxSize, + available: this._deferred.available, + }; + } + + push(conn: PoolConnection) { + if (this._closed) { + conn.close(); + this.reduceSize(); + } + if (this._deferred.push(conn)) { + conn.enterIdle(); + } + } + + async pop(): Promise { + if (this._closed) { + throw new Error("Connection pool is closed"); + } + let conn = this._deferred.tryPopAvailable(); + if (conn) { + conn.exitIdle(); + } else { + conn = await this._deferred.pop(); + } + return conn; + } + + remove(conn: PoolConnection) { + return this._deferred.remove(conn); + } + + /** + * Close the pool and all connections in the pool. + * + * After closing, pop() will throw an error, + * push() will close the connection immediately. + */ + close() { + this._closed = true; + + let conn: PoolConnection | undefined; + while (conn = this._deferred.tryPopAvailable()) { + conn.exitIdle(); + conn.close(); + this.reduceSize(); + } + } + + reduceSize() { + this._deferred.reduceSize(); + } +} diff --git a/bundler/tests/.cache/deno/95665d2af519997768eeb1310050bbda412864bc.ts b/bundler/tests/.cache/deno/95665d2af519997768eeb1310050bbda412864bc.ts new file mode 100644 index 00000000000..e899a6247c5 --- /dev/null +++ b/bundler/tests/.cache/deno/95665d2af519997768eeb1310050bbda412864bc.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.74.0/hash/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Hash } from "./_wasm/hash.ts"; +import type { Hasher } from "./hasher.ts"; + +export type { Hasher } from "./hasher.ts"; +export type SupportedAlgorithm = + | "md2" + | "md4" + | "md5" + | "ripemd160" + | "ripemd320" + | "sha1" + | "sha224" + | "sha256" + | "sha384" + | "sha512" + | "sha3-224" + | "sha3-256" + | "sha3-384" + | "sha3-512" + | "keccak224" + | "keccak256" + | "keccak384" + | "keccak512"; + +/** + * Creates a new `Hash` instance. + * + * @param algorithm name of hash algorithm to use + */ +export function createHash(algorithm: SupportedAlgorithm): Hasher { + return new Hash(algorithm as string); +} diff --git a/bundler/tests/.cache/deno/95a9b9250391e1c51b7bf168cfd5a4ccf8bc6a47.ts b/bundler/tests/.cache/deno/95a9b9250391e1c51b7bf168cfd5a4ccf8bc6a47.ts new file mode 100644 index 00000000000..30c42532cea --- /dev/null +++ b/bundler/tests/.cache/deno/95a9b9250391e1c51b7bf168cfd5a4ccf8bc6a47.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std@0.84.0/async/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/9665c34a77935994e17829246c0ca4d9001c1f09.ts b/bundler/tests/.cache/deno/9665c34a77935994e17829246c0ca4d9001c1f09.ts new file mode 100644 index 00000000000..0216b35ce91 --- /dev/null +++ b/bundler/tests/.cache/deno/9665c34a77935994e17829246c0ca4d9001c1f09.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/runtime/utils.ts + + +import type * as AST from "./sys/adlast.ts"; + +export function isEnum(union : AST.Union) : boolean { + for (let field of union.fields) { + if (!isVoid(field.typeExpr)) { + return false; + } + } + return true; +} + +export function isVoid(texpr : AST.TypeExpr) : boolean { + if (texpr.typeRef.kind === "primitive") { + return texpr.typeRef.value === "Void"; + } + return false; +} + +export function typeExprsEqual(texpr1 : AST.TypeExpr, texpr2 : AST.TypeExpr) : boolean { + if (!typeRefsEqual(texpr1.typeRef, texpr2.typeRef)) { + return false; + } + if (texpr1.parameters.length != texpr2.parameters.length) { + return false; + } + for (let i = 0; i < texpr1.parameters.length; i++) { + if(!typeExprsEqual(texpr1.parameters[i], texpr2.parameters[i])) { + return false; + } + } + return true; +} + +export function typeRefsEqual(tref1 : AST.TypeRef, tref2 : AST.TypeRef) : boolean { + if (tref1.kind === "primitive" && tref2.kind === "primitive") { + return tref1.value === tref2.value; + } else if (tref1.kind === "typeParam" && tref2.kind === "typeParam") { + return tref1.value === tref2.value; + } else if (tref1.kind === "reference" && tref2.kind === "reference") { + return scopedNamesEqual(tref1.value, tref2.value); + } + return false; +} + +export function scopedNamesEqual(sn1: AST.ScopedName, sn2: AST.ScopedName): boolean { + return sn1.moduleName === sn2.moduleName && sn1.name === sn2.name; +} + +function typeExprToStringImpl(te: AST.TypeExpr, withScopedNames: boolean) : string { + let result = ""; + if (te.typeRef.kind == "primitive") { + result = te.typeRef.value; + } else if (te.typeRef.kind == "typeParam") { + result = te.typeRef.value; + } else if (te.typeRef.kind == "reference") { + result = withScopedNames + ? te.typeRef.value.moduleName + "." + te.typeRef.value.name + : te.typeRef.value.name; + } + if (te.parameters.length > 0) { + result = result + "<" + te.parameters.map(p => typeExprToStringImpl(p, withScopedNames)) + ">"; + } + return result; +} + +/* Convert a type expression to a string, with fully scoped names */ + +export function typeExprToString(te: AST.TypeExpr) : string { + return typeExprToStringImpl(te, true); +} + +/* Convert a type expression to a string, with unscoped names */ + +export function typeExprToStringUnscoped(te: AST.TypeExpr) : string { + return typeExprToStringImpl(te, false); +} + +// "Flavoured" nominal typing. +// https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/ +const symS = Symbol(); +const symT = Symbol(); +const symU = Symbol(); +const symV = Symbol(); + +/// Zero ADL type params - literal string type Name (fully scoped module name) +/// eg for 'newtype X = string' -> 'type X = Flavouring0<"X">;' +type Flavoring0 = { + readonly [symS]?: Name; +} + +/// 1 ADL type param +/// eg for 'newtype X = string' -> 'type X = Flavouring1<"X",T>;' +type Flavoring1 = Flavoring0 & { + readonly [symT]?: T; +} + +/// 2 ADL type params +/// eg for 'newtype X = string' -> 'type X = Flavouring2<"X",T,U>;' +type Flavoring2 = Flavoring1 & { + readonly [symU]?: U; +} + +/// 3 ADL type params +/// eg for 'newtype X = string' -> 'type X = Flavouring3<"X",T,U,V>;' +type Flavoring3 = Flavoring2 & { + readonly [symV]?: V; +} +export type Flavored0 = A & Flavoring0; +export type Flavored1 = A & Flavoring1; +export type Flavored2 = A & Flavoring2; +export type Flavored3 = A & Flavoring3; diff --git a/bundler/tests/.cache/deno/96ffc1e38aa910376b9584f63a3fe04af09d4fe7.ts b/bundler/tests/.cache/deno/96ffc1e38aa910376b9584f63a3fe04af09d4fe7.ts new file mode 100644 index 00000000000..b2f25185bf5 --- /dev/null +++ b/bundler/tests/.cache/deno/96ffc1e38aa910376b9584f63a3fe04af09d4fe7.ts @@ -0,0 +1,1813 @@ +// Loaded from https://deno.land/x/semver@v1.0.0/mod.ts + + +export type ReleaseType = + | "pre" + | "major" + | "premajor" + | "minor" + | "preminor" + | "patch" + | "prepatch" + | "prerelease"; + +export type Operator = + | "===" + | "!==" + | "" + | "=" + | "==" + | "!=" + | ">" + | ">=" + | "<" + | "<="; + +export interface Options { + loose?: boolean; + includePrerelease?: boolean; +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +export const SEMVER_SPEC_VERSION = "2.0.0"; + +const MAX_LENGTH: number = 256; + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH: number = 16; + +// The actual regexps +const re: RegExp[] = []; +const src: string[] = []; +let R: number = 0; + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +const NUMERICIDENTIFIER: number = R++; +src[NUMERICIDENTIFIER] = "0|[1-9]\\d*"; +const NUMERICIDENTIFIERLOOSE: number = R++; +src[NUMERICIDENTIFIERLOOSE] = "[0-9]+"; + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +const NONNUMERICIDENTIFIER: number = R++; +src[NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-][a-zA-Z0-9-]*"; + +// ## Main Version +// Three dot-separated numeric identifiers. + +const MAINVERSION: number = R++; +const nid = src[NUMERICIDENTIFIER]; +src[MAINVERSION] = `(${nid})\\.(${nid})\\.(${nid})`; + +const MAINVERSIONLOOSE: number = R++; +const nidl = src[NUMERICIDENTIFIERLOOSE]; +src[MAINVERSIONLOOSE] = `(${nidl})\\.(${nidl})\\.(${nidl})`; + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +const PRERELEASEIDENTIFIER: number = R++; +src[PRERELEASEIDENTIFIER] = + "(?:" + src[NUMERICIDENTIFIER] + "|" + src[NONNUMERICIDENTIFIER] + ")"; + +const PRERELEASEIDENTIFIERLOOSE: number = R++; +src[PRERELEASEIDENTIFIERLOOSE] = + "(?:" + src[NUMERICIDENTIFIERLOOSE] + "|" + src[NONNUMERICIDENTIFIER] + ")"; + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +const PRERELEASE: number = R++; +src[PRERELEASE] = + "(?:-(" + + src[PRERELEASEIDENTIFIER] + + "(?:\\." + + src[PRERELEASEIDENTIFIER] + + ")*))"; + +const PRERELEASELOOSE: number = R++; +src[PRERELEASELOOSE] = + "(?:-?(" + + src[PRERELEASEIDENTIFIERLOOSE] + + "(?:\\." + + src[PRERELEASEIDENTIFIERLOOSE] + + ")*))"; + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +const BUILDIDENTIFIER: number = R++; +src[BUILDIDENTIFIER] = "[0-9A-Za-z-]+"; + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +const BUILD: number = R++; +src[BUILD] = + "(?:\\+(" + src[BUILDIDENTIFIER] + "(?:\\." + src[BUILDIDENTIFIER] + ")*))"; + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +const FULL: number = R++; +const FULLPLAIN = + "v?" + src[MAINVERSION] + src[PRERELEASE] + "?" + src[BUILD] + "?"; + +src[FULL] = "^" + FULLPLAIN + "$"; + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +const LOOSEPLAIN: string = + "[v=\\s]*" + + src[MAINVERSIONLOOSE] + + src[PRERELEASELOOSE] + + "?" + + src[BUILD] + + "?"; + +const LOOSE: number = R++; +src[LOOSE] = "^" + LOOSEPLAIN + "$"; + +const GTLT: number = R++; +src[GTLT] = "((?:<|>)?=?)"; + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +const XRANGEIDENTIFIERLOOSE: number = R++; +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + "|x|X|\\*"; +const XRANGEIDENTIFIER: number = R++; +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + "|x|X|\\*"; + +const XRANGEPLAIN: number = R++; +src[XRANGEPLAIN] = + "[v=\\s]*(" + + src[XRANGEIDENTIFIER] + + ")" + + "(?:\\.(" + + src[XRANGEIDENTIFIER] + + ")" + + "(?:\\.(" + + src[XRANGEIDENTIFIER] + + ")" + + "(?:" + + src[PRERELEASE] + + ")?" + + src[BUILD] + + "?" + + ")?)?"; + +const XRANGEPLAINLOOSE: number = R++; +src[XRANGEPLAINLOOSE] = + "[v=\\s]*(" + + src[XRANGEIDENTIFIERLOOSE] + + ")" + + "(?:\\.(" + + src[XRANGEIDENTIFIERLOOSE] + + ")" + + "(?:\\.(" + + src[XRANGEIDENTIFIERLOOSE] + + ")" + + "(?:" + + src[PRERELEASELOOSE] + + ")?" + + src[BUILD] + + "?" + + ")?)?"; + +const XRANGE: number = R++; +src[XRANGE] = "^" + src[GTLT] + "\\s*" + src[XRANGEPLAIN] + "$"; +const XRANGELOOSE = R++; +src[XRANGELOOSE] = "^" + src[GTLT] + "\\s*" + src[XRANGEPLAINLOOSE] + "$"; + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +const COERCE: number = R++; +src[COERCE] = + "(?:^|[^\\d])" + + "(\\d{1," + + MAX_SAFE_COMPONENT_LENGTH + + "})" + + "(?:\\.(\\d{1," + + MAX_SAFE_COMPONENT_LENGTH + + "}))?" + + "(?:\\.(\\d{1," + + MAX_SAFE_COMPONENT_LENGTH + + "}))?" + + "(?:$|[^\\d])"; + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +const LONETILDE: number = R++; +src[LONETILDE] = "(?:~>?)"; + +const TILDETRIM: number = R++; +src[TILDETRIM] = "(\\s*)" + src[LONETILDE] + "\\s+"; +re[TILDETRIM] = new RegExp(src[TILDETRIM], "g"); +const tildeTrimReplace: string = "$1~"; + +const TILDE: number = R++; +src[TILDE] = "^" + src[LONETILDE] + src[XRANGEPLAIN] + "$"; +const TILDELOOSE: number = R++; +src[TILDELOOSE] = "^" + src[LONETILDE] + src[XRANGEPLAINLOOSE] + "$"; + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +const LONECARET: number = R++; +src[LONECARET] = "(?:\\^)"; + +const CARETTRIM: number = R++; +src[CARETTRIM] = "(\\s*)" + src[LONECARET] + "\\s+"; +re[CARETTRIM] = new RegExp(src[CARETTRIM], "g"); +const caretTrimReplace: string = "$1^"; + +const CARET: number = R++; +src[CARET] = "^" + src[LONECARET] + src[XRANGEPLAIN] + "$"; +const CARETLOOSE: number = R++; +src[CARETLOOSE] = "^" + src[LONECARET] + src[XRANGEPLAINLOOSE] + "$"; + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +const COMPARATORLOOSE: number = R++; +src[COMPARATORLOOSE] = "^" + src[GTLT] + "\\s*(" + LOOSEPLAIN + ")$|^$"; +const COMPARATOR: number = R++; +src[COMPARATOR] = "^" + src[GTLT] + "\\s*(" + FULLPLAIN + ")$|^$"; + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +const COMPARATORTRIM: number = R++; +src[COMPARATORTRIM] = + "(\\s*)" + src[GTLT] + "\\s*(" + LOOSEPLAIN + "|" + src[XRANGEPLAIN] + ")"; + +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], "g"); +const comparatorTrimReplace: string = "$1$2$3"; + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +const HYPHENRANGE: number = R++; +src[HYPHENRANGE] = + "^\\s*(" + + src[XRANGEPLAIN] + + ")" + + "\\s+-\\s+" + + "(" + + src[XRANGEPLAIN] + + ")" + + "\\s*$"; + +const HYPHENRANGELOOSE: number = R++; +src[HYPHENRANGELOOSE] = + "^\\s*(" + + src[XRANGEPLAINLOOSE] + + ")" + + "\\s+-\\s+" + + "(" + + src[XRANGEPLAINLOOSE] + + ")" + + "\\s*$"; + +// Star ranges basically just allow anything at all. +const STAR: number = R++; +src[STAR] = "(<|>)?=?\\s*\\*"; + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (let i: number = 0; i < R; i++) { + if (!re[i]) { + re[i] = new RegExp(src[i]); + } +} + +export function parse( + version: string | SemVer | null, + optionsOrLoose?: boolean | Options, +): SemVer | null { + if (!optionsOrLoose || typeof optionsOrLoose !== "object") { + optionsOrLoose = { + loose: !!optionsOrLoose, + includePrerelease: false, + }; + } + + if (version instanceof SemVer) { + return version; + } + + if (typeof version !== "string") { + return null; + } + + if (version.length > MAX_LENGTH) { + return null; + } + + const r: RegExp = optionsOrLoose.loose ? re[LOOSE] : re[FULL]; + if (!r.test(version)) { + return null; + } + + try { + return new SemVer(version, optionsOrLoose); + } catch (er) { + return null; + } +} + +export function valid( + version: string | SemVer | null, + optionsOrLoose?: boolean | Options, +): string | null { + if (version === null) return null; + const v: SemVer | null = parse(version, optionsOrLoose); + return v ? v.version : null; +} + +export function clean( + version: string, + optionsOrLoose?: boolean | Options, +): string | null { + const s: SemVer | null = parse( + version.trim().replace(/^[=v]+/, ""), + optionsOrLoose, + ); + return s ? s.version : null; +} + +export class SemVer { + raw!: string; + loose!: boolean; + options!: Options; + + major!: number; + minor!: number; + patch!: number; + version!: string; + build!: ReadonlyArray; + prerelease!: Array; + + constructor(version: string | SemVer, optionsOrLoose?: boolean | Options) { + if (!optionsOrLoose || typeof optionsOrLoose !== "object") { + optionsOrLoose = { + loose: !!optionsOrLoose, + includePrerelease: false, + }; + } + if (version instanceof SemVer) { + if (version.loose === optionsOrLoose.loose) { + return version; + } else { + version = version.version; + } + } else if (typeof version !== "string") { + throw new TypeError("Invalid Version: " + version); + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + "version is longer than " + MAX_LENGTH + " characters", + ); + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, optionsOrLoose); + } + + this.options = optionsOrLoose; + this.loose = !!optionsOrLoose.loose; + + const m = version.trim().match(optionsOrLoose.loose ? re[LOOSE] : re[FULL]); + + if (!m) { + throw new TypeError("Invalid Version: " + version); + } + + this.raw = version; + + // these are actually numbers + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + + if (this.major > Number.MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + + if (this.minor > Number.MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + + if (this.patch > Number.MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id: string) => { + if (/^[0-9]+$/.test(id)) { + const num: number = +id; + if (num >= 0 && num < Number.MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + + format(): string { + this.version = this.major + "." + this.minor + "." + this.patch; + if (this.prerelease.length) { + this.version += "-" + this.prerelease.join("."); + } + return this.version; + } + + compare(other: string | SemVer): 1 | 0 | -1 { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + return this.compareMain(other) || this.comparePre(other); + } + + compareMain(other: string | SemVer): 1 | 0 | -1 { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ); + } + + comparePre(other: string | SemVer): 1 | 0 | -1 { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + + let i: number = 0; + do { + const a: string | number = this.prerelease[i]; + const b: string | number = other.prerelease[i]; + if (a === undefined && b === undefined) { + return 0; + } else if (b === undefined) { + return 1; + } else if (a === undefined) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + return 1; + } + + compareBuild(other: string | SemVer): 1 | 0 | -1 { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + let i: number = 0; + do { + const a: string = this.build[i]; + const b: string = other.build[i]; + if (a === undefined && b === undefined) { + return 0; + } else if (b === undefined) { + return 1; + } else if (a === undefined) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + return 1; + } + + inc(release: ReleaseType, identifier?: string): SemVer { + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier); + break; + case "prepatch": + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0; + this.inc("patch", identifier); + this.inc("pre", identifier); + break; + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier); + } + this.inc("pre", identifier); + break; + + case "major": + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case "pre": + if (this.prerelease.length === 0) { + this.prerelease = [0]; + } else { + let i: number = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + (this.prerelease[i] as number)++; + i = -2; + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0); + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1] as number)) { + this.prerelease = [identifier, 0]; + } + } else { + this.prerelease = [identifier, 0]; + } + } + break; + + default: + throw new Error("invalid increment argument: " + release); + } + this.format(); + this.raw = this.version; + return this; + } + + toString(): string { + return this.version; + } +} + +/** + * Return the version incremented by the release type (major, minor, patch, or prerelease), or null if it's not valid. + */ +export function inc( + version: string | SemVer, + release: ReleaseType, + optionsOrLoose?: boolean | Options, + identifier?: string, +): string | null { + if (typeof optionsOrLoose === "string") { + identifier = optionsOrLoose; + optionsOrLoose = undefined; + } + try { + return new SemVer(version, optionsOrLoose).inc(release, identifier).version; + } catch (er) { + return null; + } +} + +export function diff( + version1: string | SemVer, + version2: string | SemVer, + optionsOrLoose?: boolean | Options, +): ReleaseType | null { + if (eq(version1, version2, optionsOrLoose)) { + return null; + } else { + const v1: SemVer | null = parse(version1); + const v2: SemVer | null = parse(version2); + let prefix: string = ""; + let defaultResult: ReleaseType | null = null; + + if (v1 && v2) { + if (v1.prerelease.length || v2.prerelease.length) { + prefix = "pre"; + defaultResult = "prerelease"; + } + + for (const key in v1) { + if (key === "major" || key === "minor" || key === "patch") { + if (v1[key] !== v2[key]) { + return (prefix + key) as ReleaseType; + } + } + } + } + return defaultResult; // may be undefined + } +} + +const numeric: RegExp = /^[0-9]+$/; + +export function compareIdentifiers( + a: string | number | null, + b: string | number | null, +): 1 | 0 | -1 { + const anum: boolean = numeric.test(a as string); + const bnum: boolean = numeric.test(b as string); + + if (a === null || b === null) throw "Comparison against null invalid"; + + if (anum && bnum) { + a = +a; + b = +b; + } + + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; +} + +export function rcompareIdentifiers( + a: string | null, + b: string | null, +): 1 | 0 | -1 { + return compareIdentifiers(b, a); +} + +/** + * Return the major version number. + */ +export function major( + v: string | SemVer, + optionsOrLoose?: boolean | Options, +): number { + return new SemVer(v, optionsOrLoose).major; +} + +/** + * Return the minor version number. + */ +export function minor( + v: string | SemVer, + optionsOrLoose?: boolean | Options, +): number { + return new SemVer(v, optionsOrLoose).minor; +} + +/** + * Return the patch version number. + */ +export function patch( + v: string | SemVer, + optionsOrLoose?: boolean | Options, +): number { + return new SemVer(v, optionsOrLoose).patch; +} + +export function compare( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): 1 | 0 | -1 { + return new SemVer(v1, optionsOrLoose).compare(new SemVer(v2, optionsOrLoose)); +} + +export function compareLoose( + a: string | SemVer, + b: string | SemVer, +): 1 | 0 | -1 { + return compare(a, b, true); +} + +export function compareBuild( + a: string | SemVer, + b: string | SemVer, + loose?: boolean | Options, +): 1 | 0 | -1 { + var versionA = new SemVer(a, loose); + var versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); +} + +export function rcompare( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): 1 | 0 | -1 { + return compare(v2, v1, optionsOrLoose); +} + +export function sort( + list: T[], + optionsOrLoose?: boolean | Options, +): T[] { + return list.sort((a, b) => { + return compareBuild(a, b, optionsOrLoose); + }); +} + +export function rsort( + list: T[], + optionsOrLoose?: boolean | Options, +): T[] { + return list.sort((a, b) => { + return compareBuild(b, a, optionsOrLoose); + }); +} + +export function gt( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) > 0; +} + +export function lt( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) < 0; +} + +export function eq( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) === 0; +} + +export function neq( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) !== 0; +} + +export function gte( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) >= 0; +} + +export function lte( + v1: string | SemVer, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + return compare(v1, v2, optionsOrLoose) <= 0; +} + +export function cmp( + v1: string | SemVer, + operator: Operator, + v2: string | SemVer, + optionsOrLoose?: boolean | Options, +): boolean { + switch (operator) { + case "===": + if (typeof v1 === "object") v1 = v1.version; + if (typeof v2 === "object") v2 = v2.version; + return v1 === v2; + + case "!==": + if (typeof v1 === "object") v1 = v1.version; + if (typeof v2 === "object") v2 = v2.version; + return v1 !== v2; + + case "": + case "=": + case "==": + return eq(v1, v2, optionsOrLoose); + + case "!=": + return neq(v1, v2, optionsOrLoose); + + case ">": + return gt(v1, v2, optionsOrLoose); + + case ">=": + return gte(v1, v2, optionsOrLoose); + + case "<": + return lt(v1, v2, optionsOrLoose); + + case "<=": + return lte(v1, v2, optionsOrLoose); + + default: + throw new TypeError("Invalid operator: " + operator); + } +} + +const ANY: SemVer = {} as SemVer; + +export class Comparator { + semver!: SemVer; + operator!: "" | "=" | "<" | ">" | "<=" | ">="; + value!: string; + loose!: boolean; + options!: Options; + + constructor(comp: string | Comparator, optionsOrLoose?: boolean | Options) { + if (!optionsOrLoose || typeof optionsOrLoose !== "object") { + optionsOrLoose = { + loose: !!optionsOrLoose, + includePrerelease: false, + }; + } + + if (comp instanceof Comparator) { + if (comp.loose === !!optionsOrLoose.loose) { + return comp; + } else { + comp = comp.value; + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, optionsOrLoose); + } + + this.options = optionsOrLoose; + this.loose = !!optionsOrLoose.loose; + this.parse(comp); + + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + } + + parse(comp: string): void { + const r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; + const m = comp.match(r); + + if (!m) { + throw new TypeError("Invalid comparator: " + comp); + } + + const m1 = m[1] as "" | "=" | "<" | ">" | "<=" | ">="; + this.operator = m1 !== undefined ? m1 : ""; + + if (this.operator === "=") { + this.operator = ""; + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + + test(version: string | SemVer): boolean { + if (this.semver === ANY || version === ANY) { + return true; + } + + if (typeof version === "string") { + version = new SemVer(version, this.options); + } + + return cmp(version, this.operator, this.semver, this.options); + } + + intersects(comp: Comparator, optionsOrLoose?: boolean | Options): boolean { + if (!(comp instanceof Comparator)) { + throw new TypeError("a Comparator is required"); + } + + if (!optionsOrLoose || typeof optionsOrLoose !== "object") { + optionsOrLoose = { + loose: !!optionsOrLoose, + includePrerelease: false, + }; + } + + let rangeTmp: Range; + + if (this.operator === "") { + if (this.value === "") { + return true; + } + rangeTmp = new Range(comp.value, optionsOrLoose); + return satisfies(this.value, rangeTmp, optionsOrLoose); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + rangeTmp = new Range(this.value, optionsOrLoose); + return satisfies(comp.semver, rangeTmp, optionsOrLoose); + } + + const sameDirectionIncreasing: boolean = + (this.operator === ">=" || this.operator === ">") && + (comp.operator === ">=" || comp.operator === ">"); + const sameDirectionDecreasing: boolean = + (this.operator === "<=" || this.operator === "<") && + (comp.operator === "<=" || comp.operator === "<"); + const sameSemVer: boolean = this.semver.version === comp.semver.version; + const differentDirectionsInclusive: boolean = + (this.operator === ">=" || this.operator === "<=") && + (comp.operator === ">=" || comp.operator === "<="); + const oppositeDirectionsLessThan: boolean = + cmp(this.semver, "<", comp.semver, optionsOrLoose) && + (this.operator === ">=" || this.operator === ">") && + (comp.operator === "<=" || comp.operator === "<"); + const oppositeDirectionsGreaterThan: boolean = + cmp(this.semver, ">", comp.semver, optionsOrLoose) && + (this.operator === "<=" || this.operator === "<") && + (comp.operator === ">=" || comp.operator === ">"); + + return ( + sameDirectionIncreasing || + sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || + oppositeDirectionsGreaterThan + ); + } + + toString(): string { + return this.value; + } +} + +export class Range { + range!: string; + raw!: string; + loose!: boolean; + options!: Options; + includePrerelease!: boolean; + set!: ReadonlyArray>; + + constructor( + range: string | Range | Comparator, + optionsOrLoose?: boolean | Options, + ) { + if (!optionsOrLoose || typeof optionsOrLoose !== "object") { + optionsOrLoose = { + loose: !!optionsOrLoose, + includePrerelease: false, + }; + } + + if (range instanceof Range) { + if ( + range.loose === !!optionsOrLoose.loose && + range.includePrerelease === !!optionsOrLoose.includePrerelease + ) { + return range; + } else { + return new Range(range.raw, optionsOrLoose); + } + } + + if (range instanceof Comparator) { + return new Range(range.value, optionsOrLoose); + } + + if (!(this instanceof Range)) { + return new Range(range, optionsOrLoose); + } + + this.options = optionsOrLoose; + this.loose = !!optionsOrLoose.loose; + this.includePrerelease = !!optionsOrLoose.includePrerelease; + + // First, split based on boolean or || + this.raw = range; + this.set = range + .split(/\s*\|\|\s*/) + .map(range => this.parseRange(range.trim())) + .filter(c => { + // throw out any that are not relevant for whatever reason + return c.length; + }); + + if (!this.set.length) { + throw new TypeError("Invalid SemVer Range: " + range); + } + + this.format(); + } + + format(): string { + this.range = this.set + .map(comps => comps.join(" ").trim()) + .join("||") + .trim(); + return this.range; + } + + parseRange(range: string): ReadonlyArray { + const loose = this.options.loose; + range = range.trim(); + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr: RegExp = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; + range = range.replace(hr, hyphenReplace); + + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[TILDETRIM], tildeTrimReplace); + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[CARETTRIM], caretTrimReplace); + + // normalize spaces + range = range.split(/\s+/).join(" "); + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + const compRe: RegExp = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; + let set: string[] = range + .split(" ") + .map(comp => parseComparator(comp, this.options)) + .join(" ") + .split(/\s+/); + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(comp => { + return !!comp.match(compRe); + }); + } + + return set.map(comp => new Comparator(comp, this.options)); + } + + test(version: string | SemVer): boolean { + if (typeof version === "string") { + version = new SemVer(version, this.options); + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true; + } + } + return false; + } + + intersects(range?: Range, optionsOrLoose?: boolean | Options): boolean { + if (!(range instanceof Range)) { + throw new TypeError("a Range is required"); + } + + return this.set.some(thisComparators => { + return ( + isSatisfiable(thisComparators, optionsOrLoose) && + range.set.some(rangeComparators => { + return ( + isSatisfiable(rangeComparators, optionsOrLoose) && + thisComparators.every(thisComparator => { + return rangeComparators.every(rangeComparator => { + return thisComparator.intersects( + rangeComparator, + optionsOrLoose, + ); + }); + }) + ); + }) + ); + }); + } + + toString(): string { + return this.range; + } +} + +function testSet( + set: ReadonlyArray, + version: SemVer, + options: Options, +): boolean { + for (let i: number = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false; + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i: number = 0; i < set.length; i++) { + if (set[i].semver === ANY) { + continue; + } + + if (set[i].semver.prerelease.length > 0) { + const allowed: SemVer = set[i].semver; + if ( + allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch + ) { + return true; + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false; + } + + return true; +} + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +function isSatisfiable( + comparators: readonly Comparator[], + options?: boolean | Options, +): boolean { + let result: boolean = true; + const remainingComparators: Comparator[] = comparators.slice(); + let testComparator = remainingComparators.pop(); + + while (result && remainingComparators.length) { + result = remainingComparators.every(otherComparator => { + return testComparator?.intersects(otherComparator, options); + }); + + testComparator = remainingComparators.pop(); + } + + return result; +} + +// Mostly just for testing and legacy API reasons +export function toComparators( + range: string | Range, + optionsOrLoose?: boolean | Options, +): string[][] { + return new Range(range, optionsOrLoose).set.map(comp => { + return comp + .map(c => c.value) + .join(" ") + .trim() + .split(" "); + }); +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator(comp: string, options: Options): string { + comp = replaceCarets(comp, options); + comp = replaceTildes(comp, options); + comp = replaceXRanges(comp, options); + comp = replaceStars(comp, options); + return comp; +} + +function isX(id: string): boolean { + return !id || id.toLowerCase() === "x" || id === "*"; +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes(comp: string, options: Options): string { + return comp + .trim() + .split(/\s+/) + .map(comp => replaceTilde(comp, options)) + .join(" "); +} + +function replaceTilde(comp: string, options: Options): string { + const r: RegExp = options.loose ? re[TILDELOOSE] : re[TILDE]; + return comp.replace( + r, + (_: string, M: string, m: string, p: string, pr: string) => { + let ret: string; + + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; + } else if (pr) { + ret = + ">=" + + M + + "." + + m + + "." + + p + + "-" + + pr + + " <" + + M + + "." + + (+m + 1) + + ".0"; + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; + } + + return ret; + }, + ); +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets(comp: string, options: Options): string { + return comp + .trim() + .split(/\s+/) + .map(comp => replaceCaret(comp, options)) + .join(" "); +} + +function replaceCaret(comp: string, options: Options): string { + const r: RegExp = options.loose ? re[CARETLOOSE] : re[CARET]; + return comp.replace(r, (_: string, M, m, p, pr) => { + let ret: string; + + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; + } else if (isX(p)) { + if (M === "0") { + ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; + } else { + ret = ">=" + M + "." + m + ".0 <" + (+M + 1) + ".0.0"; + } + } else if (pr) { + if (M === "0") { + if (m === "0") { + ret = + ">=" + + M + + "." + + m + + "." + + p + + "-" + + pr + + " <" + + M + + "." + + m + + "." + + (+p + 1); + } else { + ret = + ">=" + + M + + "." + + m + + "." + + p + + "-" + + pr + + " <" + + M + + "." + + (+m + 1) + + ".0"; + } + } else { + ret = + ">=" + M + "." + m + "." + p + "-" + pr + " <" + (+M + 1) + ".0.0"; + } + } else { + if (M === "0") { + if (m === "0") { + ret = + ">=" + M + "." + m + "." + p + " <" + M + "." + m + "." + (+p + 1); + } else { + ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0"; + } + } else { + ret = ">=" + M + "." + m + "." + p + " <" + (+M + 1) + ".0.0"; + } + } + + return ret; + }); +} + +function replaceXRanges(comp: string, options: Options): string { + return comp + .split(/\s+/) + .map(comp => replaceXRange(comp, options)) + .join(" "); +} + +function replaceXRange(comp: string, options: Options): string { + comp = comp.trim(); + const r: RegExp = options.loose ? re[XRANGELOOSE] : re[XRANGE]; + return comp.replace(r, (ret: string, gtlt, M, m, p, pr) => { + const xM: boolean = isX(M); + const xm: boolean = xM || isX(m); + const xp: boolean = xm || isX(p); + const anyX: boolean = xp; + + if (gtlt === "=" && anyX) { + gtlt = ""; + } + + if (xM) { + if (gtlt === ">" || gtlt === "<") { + // nothing is allowed + ret = "<0.0.0"; + } else { + // nothing is forbidden + ret = "*"; + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + + if (gtlt === ">") { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + + ret = gtlt + M + "." + m + "." + p; + } else if (xm) { + ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0"; + } else if (xp) { + ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0"; + } + + return ret; + }); +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars(comp: string, options: Options): string { + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[STAR], ""); +} + +// This function is passed to string.replace(re[HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace( + $0: any, + from: any, + fM: any, + fm: any, + fp: any, + fpr: any, + fb: any, + to: any, + tM: any, + tm: any, + tp: any, + tpr: any, + tb: any, +) { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = ">=" + fM + ".0.0"; + } else if (isX(fp)) { + from = ">=" + fM + "." + fm + ".0"; + } else { + from = ">=" + from; + } + + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = "<" + (+tM + 1) + ".0.0"; + } else if (isX(tp)) { + to = "<" + tM + "." + (+tm + 1) + ".0"; + } else if (tpr) { + to = "<=" + tM + "." + tm + "." + tp + "-" + tpr; + } else { + to = "<=" + to; + } + + return (from + " " + to).trim(); +} + +export function satisfies( + version: string | SemVer, + range: string | Range, + optionsOrLoose?: boolean | Options, +): boolean { + try { + range = new Range(range, optionsOrLoose); + } catch (er) { + return false; + } + return range.test(version); +} + +export function maxSatisfying( + versions: ReadonlyArray, + range: string | Range, + optionsOrLoose?: boolean | Options, +): T | null { + //todo + var max: T | SemVer | null = null; + var maxSV: SemVer | null = null; + try { + var rangeObj = new Range(range, optionsOrLoose); + } catch (er) { + return null; + } + versions.forEach(v => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || (maxSV && maxSV.compare(v) === -1)) { + // compare(max, v, true) + max = v; + maxSV = new SemVer(max, optionsOrLoose); + } + } + }); + return max; +} + +export function minSatisfying( + versions: ReadonlyArray, + range: string | Range, + optionsOrLoose?: boolean | Options, +): T | null { + //todo + var min: any = null; + var minSV: any = null; + try { + var rangeObj = new Range(range, optionsOrLoose); + } catch (er) { + return null; + } + versions.forEach(v => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v; + minSV = new SemVer(min, optionsOrLoose); + } + } + }); + return min; +} + +export function minVersion( + range: string | Range, + optionsOrLoose?: boolean | Options, +): SemVer | null { + range = new Range(range, optionsOrLoose); + + var minver: SemVer | null = new SemVer("0.0.0"); + if (range.test(minver)) { + return minver; + } + + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) { + return minver; + } + + minver = null; + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i]; + + comparators.forEach(comparator => { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case "": + case ">=": + if (!minver || gt(minver, compver)) { + minver = compver; + } + break; + case "<": + case "<=": + /* Ignore maximum versions */ + break; + /* istanbul ignore next */ + default: + throw new Error("Unexpected operation: " + comparator.operator); + } + }); + } + + if (minver && range.test(minver)) { + return minver; + } + + return null; +} + +export function validRange( + range: string | Range | null, + optionsOrLoose?: boolean | Options, +): string | null { + try { + if (range === null) return null; + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, optionsOrLoose).range || "*"; + } catch (er) { + return null; + } +} + +/** + * Return true if version is less than all the versions possible in the range. + */ +export function ltr( + version: string | SemVer, + range: string | Range, + optionsOrLoose?: boolean | Options, +): boolean { + return outside(version, range, "<", optionsOrLoose); +} + +/** + * Return true if version is greater than all the versions possible in the range. + */ +export function gtr( + version: string | SemVer, + range: string | Range, + optionsOrLoose?: boolean | Options, +): boolean { + return outside(version, range, ">", optionsOrLoose); +} + +/** + * Return true if the version is outside the bounds of the range in either the high or low direction. + * The hilo argument must be either the string '>' or '<'. (This is the function called by gtr and ltr.) + */ +export function outside( + version: string | SemVer, + range: string | Range, + hilo: ">" | "<", + optionsOrLoose?: boolean | Options, +): boolean { + version = new SemVer(version, optionsOrLoose); + range = new Range(range, optionsOrLoose); + + let gtfn: typeof gt; + let ltefn: typeof lte; + let ltfn: typeof lt; + let comp: string; + let ecomp: string; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, optionsOrLoose)) { + return false; + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i: number = 0; i < range.set.length; ++i) { + const comparators: readonly Comparator[] = range.set[i]; + + let high: Comparator | null = null; + let low: Comparator | null = null; + + comparators.forEach(comparator => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, optionsOrLoose)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, optionsOrLoose)) { + low = comparator; + } + }); + + if (high === null || low === null) return true; + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high!.operator === comp || high!.operator === ecomp) { + return false; + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ( + (!low!.operator || low!.operator === comp) && + ltefn(version, low!.semver) + ) { + return false; + } else if (low!.operator === ecomp && ltfn(version, low!.semver)) { + return false; + } + } + return true; +} + +export function prerelease( + version: string | SemVer, + optionsOrLoose?: boolean | Options, +): ReadonlyArray | null { + var parsed = parse(version, optionsOrLoose); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; +} + +/** + * Return true if any of the ranges comparators intersect + */ +export function intersects( + range1: string | Range | Comparator, + range2: string | Range | Comparator, + optionsOrLoose?: boolean | Options, +): boolean { + range1 = new Range(range1, optionsOrLoose); + range2 = new Range(range2, optionsOrLoose); + return range1.intersects(range2); +} + +/** + * Coerces a string to semver if possible + */ +export function coerce( + version: string | SemVer, + optionsOrLoose?: boolean | Options, +): SemVer | null { + if (version instanceof SemVer) { + return version; + } + + if (typeof version !== "string") { + return null; + } + + const match = version.match(re[COERCE]); + + if (match == null) { + return null; + } + + return parse( + match[1] + "." + (match[2] || "0") + "." + (match[3] || "0"), + optionsOrLoose, + ); +} + +export default SemVer; diff --git a/bundler/tests/.cache/deno/97016f4c5b86b703da27b18afdbf5491171f7452.ts b/bundler/tests/.cache/deno/97016f4c5b86b703da27b18afdbf5491171f7452.ts new file mode 100644 index 00000000000..146f89bc223 --- /dev/null +++ b/bundler/tests/.cache/deno/97016f4c5b86b703da27b18afdbf5491171f7452.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/toString.js + + +import _curry1 from './internal/_curry1.js'; +import _toString from './internal/_toString.js'; + + +/** + * Returns the string representation of the given value. `eval`'ing the output + * should result in a value equivalent to the input value. Many of the built-in + * `toString` methods do not satisfy this requirement. + * + * If the given value is an `[object Object]` with a `toString` method other + * than `Object.prototype.toString`, this method is invoked with no arguments + * to produce the return value. This means user-defined constructor functions + * can provide a suitable `toString` method. For example: + * + * function Point(x, y) { + * this.x = x; + * this.y = y; + * } + * + * Point.prototype.toString = function() { + * return 'new Point(' + this.x + ', ' + this.y + ')'; + * }; + * + * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)' + * + * @func + * @memberOf R + * @since v0.14.0 + * @category String + * @sig * -> String + * @param {*} val + * @return {String} + * @example + * + * R.toString(42); //=> '42' + * R.toString('abc'); //=> '"abc"' + * R.toString([1, 2, 3]); //=> '[1, 2, 3]' + * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}' + * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' + */ +var toString = _curry1(function toString(val) { return _toString(val, []); }); +export default toString; diff --git a/bundler/tests/.cache/deno/970ff5282cd842f9478906c4fec8a73a179ad85f.ts b/bundler/tests/.cache/deno/970ff5282cd842f9478906c4fec8a73a179ad85f.ts new file mode 100644 index 00000000000..2bee66c7afa --- /dev/null +++ b/bundler/tests/.cache/deno/970ff5282cd842f9478906c4fec8a73a179ad85f.ts @@ -0,0 +1,108 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/helper.ts + + +export function str2bytes(str: string): Uint8Array { + const encoder = new TextEncoder(); + return encoder.encode(str); +} + +export function hex(bytes: Uint8Array): string { + let output = ""; + for(const b of bytes) output += b.toString(16).padStart(2, "0"); + return output; +} + +export function xor(a: Uint8Array, b: Uint8Array) { + const c = new Uint8Array(a.length); + for(let i = 0; i < c.length; i++) { + c[i] = a[i] ^ b[i % b.length]; + } + return c; +} + +export function concat(...arg: (Uint8Array | number[])[]) { + const length = arg.reduce((a, b) => a + b.length, 0); + const c = new Uint8Array(length); + let ptr = 0; + for(let i = 0; i < arg.length; i++) { + c.set(arg[i], ptr); + ptr += arg[i].length; + } + + return c; +} + +export function random_bytes(length: number): Uint8Array { + const n = new Uint8Array(length); + for(let i = 0; i < length; i++) n[i] = ((Math.random() * 254) | 0) + 1; + return n; +} + +export function get_key_size(n: bigint): number { + const size_list = [64n, 128n, 256n, 512n, 1024n]; + + for(const size of size_list) { + if (n < (1n << size * 8n)) return Number(size); + } + + return 2048; +} + +export function base64_to_binary(b: string): Uint8Array { + const base64_map = [ + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-1, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,62,-2,-2,-2,63,52,53,54,55,56,57,58,59, + 60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6, + 7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, + 23,24,25,-2,-2,-2,-2,-2,-2,26,27,28,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, + 50,51,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, + -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 + ]; + + // Remove unneccessary character + let e = ""; + for (const c of b) { + const v = base64_map[c.charCodeAt(0)]; + if (v === -2) throw "Invalid"; + if (v >= 0) e += c; + } + + // Allocate enough bytes to store given base64 + const bytes = new Uint8Array(Math.floor((e.length * 6) / 8)); + let ptr = 0; + + for(let i = 0; i < e.length; i += 4) { + const remain = e.length - i; + if (remain >= 4) { + const v = (base64_map[e.charCodeAt(i)] << 18) + + (base64_map[e.charCodeAt(i + 1)] << 12) + + (base64_map[e.charCodeAt(i + 2)] << 6) + + base64_map[e.charCodeAt(i + 3)]; + + bytes[ptr++] = v >> 16 % 256; + bytes[ptr++] = v >> 8 % 256; + bytes[ptr++] = v % 256; + } else if (remain === 3) { + const v = (base64_map[e.charCodeAt(i)] << 10) + + (base64_map[e.charCodeAt(i + 1)] << 4) + + (base64_map[e.charCodeAt(i + 2)] >> 2); + + bytes[ptr++] = v >> 8 % 256; + bytes[ptr++] = v % 256; + } else if (remain === 2) { + bytes[ptr++] = (base64_map[e.charCodeAt(i)] << 2) + + (base64_map[e.charCodeAt(i + 1)] >> 4); + } + } + + return bytes; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/976d5cb8fc5ce22551731ee11ca4b97000e404a5.ts b/bundler/tests/.cache/deno/976d5cb8fc5ce22551731ee11ca4b97000e404a5.ts new file mode 100644 index 00000000000..26d0e9c64cc --- /dev/null +++ b/bundler/tests/.cache/deno/976d5cb8fc5ce22551731ee11ca4b97000e404a5.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xpromap.js + + +import _curry3 from './_curry3.js'; +import _xfBase from './_xfBase.js'; +import _promap from './_promap.js'; + + +function XPromap(f, g, xf) { + this.xf = xf; + this.f = f; + this.g = g; +} +XPromap.prototype['@@transducer/init'] = _xfBase.init; +XPromap.prototype['@@transducer/result'] = _xfBase.result; +XPromap.prototype['@@transducer/step'] = function(result, input) { + return this.xf['@@transducer/step'](result, _promap(this.f, this.g, input)); +}; + +var _xpromap = _curry3(function _xpromap(f, g, xf) { return new XPromap(f, g, xf); }); +export default _xpromap; diff --git a/bundler/tests/.cache/deno/97907cb5b328a3b72865b12faf143c5e3c9f0b95.ts b/bundler/tests/.cache/deno/97907cb5b328a3b72865b12faf143c5e3c9f0b95.ts new file mode 100644 index 00000000000..e2eb833d6c7 --- /dev/null +++ b/bundler/tests/.cache/deno/97907cb5b328a3b72865b12faf143c5e3c9f0b95.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.83.0/flags/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/979a48799c6e8fbbf20c3cdebf4824236f52f93a.ts b/bundler/tests/.cache/deno/979a48799c6e8fbbf20c3cdebf4824236f52f93a.ts new file mode 100644 index 00000000000..3d6f28da737 --- /dev/null +++ b/bundler/tests/.cache/deno/979a48799c6e8fbbf20c3cdebf4824236f52f93a.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/bool.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import { isBoolean } from "../utils.ts"; + +function resolveYamlBoolean(data: string): boolean { + const max = data.length; + + return ( + (max === 4 && (data === "true" || data === "True" || data === "TRUE")) || + (max === 5 && (data === "false" || data === "False" || data === "FALSE")) + ); +} + +function constructYamlBoolean(data: string): boolean { + return data === "true" || data === "True" || data === "TRUE"; +} + +export const bool = new Type("tag:yaml.org,2002:bool", { + construct: constructYamlBoolean, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isBoolean, + represent: { + lowercase(object: boolean): string { + return object ? "true" : "false"; + }, + uppercase(object: boolean): string { + return object ? "TRUE" : "FALSE"; + }, + camelcase(object: boolean): string { + return object ? "True" : "False"; + }, + }, + resolve: resolveYamlBoolean, +}); diff --git a/bundler/tests/.cache/deno/98561c8769391140d14b971167cb9a2d66855bbd.ts b/bundler/tests/.cache/deno/98561c8769391140d14b971167cb9a2d66855bbd.ts new file mode 100644 index 00000000000..1813f708a28 --- /dev/null +++ b/bundler/tests/.cache/deno/98561c8769391140d14b971167cb9a2d66855bbd.ts @@ -0,0 +1,67 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/index.js + + +export { validate } from './validate.js'; +export { ValidationContext } from './ValidationContext.js'; +// All validation rules in the GraphQL Specification. +export { specifiedRules } from './specifiedRules.js'; // Spec Section: "Executable Definitions" + +export { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.js'; // Spec Section: "Field Selections on Objects, Interfaces, and Unions Types" + +export { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.js'; // Spec Section: "Fragments on Composite Types" + +export { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.js'; // Spec Section: "Argument Names" + +export { KnownArgumentNamesRule } from './rules/KnownArgumentNamesRule.js'; // Spec Section: "Directives Are Defined" + +export { KnownDirectivesRule } from './rules/KnownDirectivesRule.js'; // Spec Section: "Fragment spread target defined" + +export { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.js'; // Spec Section: "Fragment Spread Type Existence" + +export { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.js'; // Spec Section: "Lone Anonymous Operation" + +export { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.js'; // Spec Section: "Fragments must not form cycles" + +export { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.js'; // Spec Section: "All Variable Used Defined" + +export { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.js'; // Spec Section: "Fragments must be used" + +export { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.js'; // Spec Section: "All Variables Used" + +export { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.js'; // Spec Section: "Field Selection Merging" + +export { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.js'; // Spec Section: "Fragment spread is possible" + +export { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.js'; // Spec Section: "Argument Optionality" + +export { ProvidedRequiredArgumentsRule } from './rules/ProvidedRequiredArgumentsRule.js'; // Spec Section: "Leaf Field Selections" + +export { ScalarLeafsRule } from './rules/ScalarLeafsRule.js'; // Spec Section: "Subscriptions with Single Root Field" + +export { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.js'; // Spec Section: "Argument Uniqueness" + +export { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.js'; // Spec Section: "Directives Are Unique Per Location" + +export { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.js'; // Spec Section: "Fragment Name Uniqueness" + +export { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.js'; // Spec Section: "Input Object Field Uniqueness" + +export { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.js'; // Spec Section: "Operation Name Uniqueness" + +export { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.js'; // Spec Section: "Variable Uniqueness" + +export { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.js'; // Spec Section: "Values Type Correctness" + +export { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.js'; // Spec Section: "Variables are Input Types" + +export { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.js'; // Spec Section: "All Variable Usages Are Allowed" + +export { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.js'; // SDL-specific validation rules + +export { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.js'; +export { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.js'; +export { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.js'; +export { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.js'; +export { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.js'; +export { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.js'; +export { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9869d98ee939ba8e5f6c333c8d745063f17cad68.ts b/bundler/tests/.cache/deno/9869d98ee939ba8e5f6c333c8d745063f17cad68.ts new file mode 100644 index 00000000000..a628372cd91 --- /dev/null +++ b/bundler/tests/.cache/deno/9869d98ee939ba8e5f6c333c8d745063f17cad68.ts @@ -0,0 +1,252 @@ +// Loaded from https://deno.land/std@0.81.0/datetime/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { DateTimeFormatter } from "./formatter.ts"; + +export const SECOND = 1e3; +export const MINUTE = SECOND * 60; +export const HOUR = MINUTE * 60; +export const DAY = HOUR * 24; +export const WEEK = DAY * 7; +const DAYS_PER_WEEK = 7; + +enum Day { + Sun, + Mon, + Tue, + Wed, + Thu, + Fri, + Sat, +} + +/** + * Parse date from string using format string + * @param dateString Date string + * @param format Format string + * @return Parsed date + */ +export function parse(dateString: string, formatString: string): Date { + const formatter = new DateTimeFormatter(formatString); + const parts = formatter.parseToParts(dateString); + const sortParts = formatter.sortDateTimeFormatPart(parts); + return formatter.partsToDate(sortParts); +} + +/** + * Format date using format string + * @param date Date + * @param format Format string + * @return formatted date string + */ +export function format(date: Date, formatString: string): string { + const formatter = new DateTimeFormatter(formatString); + return formatter.format(date); +} + +/** + * Get number of the day in the year + * @return Number of the day in year + */ +export function dayOfYear(date: Date): number { + // Values from 0 to 99 map to the years 1900 to 1999. All other values are the actual year. (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date) + // Using setFullYear as a workaround + + const yearStart = new Date(date); + + yearStart.setUTCFullYear(date.getUTCFullYear(), 0, 0); + const diff = date.getTime() - + yearStart.getTime() + + (yearStart.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000; + + return Math.floor(diff / DAY); +} +/** + * Get number of the week in the year (ISO-8601) + * @return Number of the week in year + */ +export function weekOfYear(date: Date): number { + const workingDate = new Date( + Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()), + ); + + const day = workingDate.getUTCDay(); + + const nearestThursday = workingDate.getUTCDate() + + Day.Thu - + (day === Day.Sun ? DAYS_PER_WEEK : day); + + workingDate.setUTCDate(nearestThursday); + + // Get first day of year + const yearStart = new Date(Date.UTC(workingDate.getUTCFullYear(), 0, 1)); + + // return the calculated full weeks to nearest Thursday + return Math.ceil((workingDate.getTime() - yearStart.getTime() + DAY) / WEEK); +} + +/** + * Parse a date to return a IMF formatted string date + * RFC: https://tools.ietf.org/html/rfc7231#section-7.1.1.1 + * IMF is the time format to use when generating times in HTTP + * headers. The time being formatted must be in UTC for Format to + * generate the correct format. + * @param date Date to parse + * @return IMF date formatted string + */ +export function toIMF(date: Date): string { + function dtPad(v: string, lPad = 2): string { + return v.padStart(lPad, "0"); + } + const d = dtPad(date.getUTCDate().toString()); + const h = dtPad(date.getUTCHours().toString()); + const min = dtPad(date.getUTCMinutes().toString()); + const s = dtPad(date.getUTCSeconds().toString()); + const y = date.getUTCFullYear(); + const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ]; + return `${days[date.getUTCDay()]}, ${d} ${ + months[date.getUTCMonth()] + } ${y} ${h}:${min}:${s} GMT`; +} + +/** + * Check given year is a leap year or not. + * based on : https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-a-leap-year + * @param year year in number or Date format + */ +export function isLeap(year: Date | number): boolean { + const yearNumber = year instanceof Date ? year.getFullYear() : year; + return ( + (yearNumber % 4 === 0 && yearNumber % 100 !== 0) || yearNumber % 400 === 0 + ); +} + +export type Unit = + | "milliseconds" + | "seconds" + | "minutes" + | "hours" + | "days" + | "weeks" + | "months" + | "quarters" + | "years"; + +export type DifferenceFormat = Partial>; + +export type DifferenceOptions = { + units?: Unit[]; +}; + +/** + * Calculate difference between two dates. + * @param from Year to calculate difference + * @param to Year to calculate difference with + * @param options Options for determining how to respond + * + * example : + * + * ```typescript + * datetime.difference(new Date("2020/1/1"),new Date("2020/2/2"),{ units : ["days","months"] }) + * ``` + */ +export function difference( + from: Date, + to: Date, + options?: DifferenceOptions, +): DifferenceFormat { + const uniqueUnits = options?.units ? [...new Set(options?.units)] : [ + "milliseconds", + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months", + "quarters", + "years", + ]; + + const bigger = Math.max(from.getTime(), to.getTime()); + const smaller = Math.min(from.getTime(), to.getTime()); + const differenceInMs = bigger - smaller; + + const differences: DifferenceFormat = {}; + + for (const uniqueUnit of uniqueUnits) { + switch (uniqueUnit) { + case "milliseconds": + differences.milliseconds = differenceInMs; + break; + case "seconds": + differences.seconds = Math.floor(differenceInMs / SECOND); + break; + case "minutes": + differences.minutes = Math.floor(differenceInMs / MINUTE); + break; + case "hours": + differences.hours = Math.floor(differenceInMs / HOUR); + break; + case "days": + differences.days = Math.floor(differenceInMs / DAY); + break; + case "weeks": + differences.weeks = Math.floor(differenceInMs / WEEK); + break; + case "months": + differences.months = calculateMonthsDifference(bigger, smaller); + break; + case "quarters": + differences.quarters = Math.floor( + (typeof differences.months !== "undefined" && + differences.months / 4) || + calculateMonthsDifference(bigger, smaller) / 4, + ); + break; + case "years": + differences.years = Math.floor( + (typeof differences.months !== "undefined" && + differences.months / 12) || + calculateMonthsDifference(bigger, smaller) / 12, + ); + break; + } + } + + return differences; +} + +function calculateMonthsDifference(bigger: number, smaller: number): number { + const biggerDate = new Date(bigger); + const smallerDate = new Date(smaller); + const yearsDiff = biggerDate.getFullYear() - smallerDate.getFullYear(); + const monthsDiff = biggerDate.getMonth() - smallerDate.getMonth(); + const calendarDifferences = Math.abs(yearsDiff * 12 + monthsDiff); + const compareResult = biggerDate > smallerDate ? 1 : -1; + biggerDate.setMonth( + biggerDate.getMonth() - compareResult * calendarDifferences, + ); + const isLastMonthNotFull = biggerDate > smallerDate + ? 1 + : -1 === -compareResult + ? 1 + : 0; + const months = compareResult * (calendarDifferences - isLastMonthNotFull); + return months === 0 ? 0 : months; +} diff --git a/bundler/tests/.cache/deno/987fe90be7227917481e81f94403aeafa64835ca.ts b/bundler/tests/.cache/deno/987fe90be7227917481e81f94403aeafa64835ca.ts new file mode 100644 index 00000000000..aa29e93af69 --- /dev/null +++ b/bundler/tests/.cache/deno/987fe90be7227917481e81f94403aeafa64835ca.ts @@ -0,0 +1,103 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/blockString.js + + +/** + * Produces the value of a block string from its parsed raw value, similar to + * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc. + * + * This implements the GraphQL spec's BlockStringValue() static algorithm. + * + * @internal + */ +export function dedentBlockStringValue(rawString) { + // Expand a block string's raw value into independent lines. + const lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first. + + const commonIndent = getBlockStringIndentation(lines); + + if (commonIndent !== 0) { + for (let i = 1; i < lines.length; i++) { + lines[i] = lines[i].slice(commonIndent); + } + } // Remove leading and trailing blank lines. + + + while (lines.length > 0 && isBlank(lines[0])) { + lines.shift(); + } + + while (lines.length > 0 && isBlank(lines[lines.length - 1])) { + lines.pop(); + } // Return a string of the lines joined with U+000A. + + + return lines.join('\n'); +} +/** + * @internal + */ + +export function getBlockStringIndentation(lines) { + let commonIndent = null; + + for (let i = 1; i < lines.length; i++) { + const line = lines[i]; + const indent = leadingWhitespace(line); + + if (indent === line.length) { + continue; // skip empty lines + } + + if (commonIndent === null || indent < commonIndent) { + commonIndent = indent; + + if (commonIndent === 0) { + break; + } + } + } + + return commonIndent === null ? 0 : commonIndent; +} + +function leadingWhitespace(str) { + let i = 0; + + while (i < str.length && (str[i] === ' ' || str[i] === '\t')) { + i++; + } + + return i; +} + +function isBlank(str) { + return leadingWhitespace(str) === str.length; +} +/** + * Print a block string in the indented block form by adding a leading and + * trailing blank line. However, if a block string starts with whitespace and is + * a single-line, adding a leading blank line would strip that whitespace. + * + * @internal + */ + + +export function printBlockString(value, indentation = '', preferMultipleLines = false) { + const isSingleLine = value.indexOf('\n') === -1; + const hasLeadingSpace = value[0] === ' ' || value[0] === '\t'; + const hasTrailingQuote = value[value.length - 1] === '"'; + const printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines; + let result = ''; // Format a multi-line block quote to account for leading space. + + if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) { + result += '\n' + indentation; + } + + result += indentation ? value.replace(/\n/g, '\n' + indentation) : value; + + if (printAsMultipleLines) { + result += '\n'; + } + + return '"""' + result.replace(/"""/g, '\\"""') + '"""'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/98facb91d996ee56dd5524610c52c74c61afd8a8.ts b/bundler/tests/.cache/deno/98facb91d996ee56dd5524610c52c74c61afd8a8.ts new file mode 100644 index 00000000000..c7146fd3f06 --- /dev/null +++ b/bundler/tests/.cache/deno/98facb91d996ee56dd5524610c52c74c61afd8a8.ts @@ -0,0 +1,451 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/resize/resize.js + + +//JavaScript Image Resizer (c) 2012 - Grant Galitz + +export class Resize { + constructor(widthOriginal, heightOriginal, targetWidth, targetHeight, blendAlpha, interpolationPass, useWebWorker, resizeCallback) { + this.widthOriginal = Math.abs(parseInt(widthOriginal) || 0); + this.heightOriginal = Math.abs(parseInt(heightOriginal) || 0); + this.targetWidth = Math.abs(parseInt(targetWidth) || 0); + this.targetHeight = Math.abs(parseInt(targetHeight) || 0); + this.colorChannels = (!!blendAlpha) ? 4 : 3; + this.interpolationPass = !!interpolationPass; + this.useWebWorker = !!useWebWorker; + this.resizeCallback = (typeof resizeCallback == "function") ? resizeCallback : function (returnedArray) { }; + this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels; + this.originalWidthMultipliedByChannels = this.widthOriginal * this.colorChannels; + this.originalHeightMultipliedByChannels = this.heightOriginal * this.colorChannels; + this.widthPassResultSize = this.targetWidthMultipliedByChannels * this.heightOriginal; + this.finalResultSize = this.targetWidthMultipliedByChannels * this.targetHeight; + this.initialize(); + } + initialize() { + //Perform some checks: + if (this.widthOriginal > 0 && this.heightOriginal > 0 && this.targetWidth > 0 && this.targetHeight > 0) { + if (this.useWebWorker) { + this.useWebWorker = (this.widthOriginal != this.targetWidth || this.heightOriginal != this.targetHeight); + if (this.useWebWorker) { + this.configureWorker(); + } + } + if (!this.useWebWorker) { + this.configurePasses(); + } + } + else { + throw (new Error("Invalid settings specified for the resizer.")); + } + } + configureWorker() { + try { + var parentObj = this; + this.worker = new Worker('./resizeWorker.js'); + this.worker.onmessage = function (event) { + parentObj.heightBuffer = event.data; + parentObj.resizeCallback(parentObj.heightBuffer); + }; + this.worker.postMessage(["setup", this.widthOriginal, this.heightOriginal, this.targetWidth, this.targetHeight, this.colorChannels, this.interpolationPass]); + } + catch (error) { + this.useWebWorker = false; + } + } + configurePasses() { + if (this.widthOriginal == this.targetWidth) { + //Bypass the width resizer pass: + this.resizeWidth = this.bypassResizer; + } + else { + //Setup the width resizer pass: + this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth; + if (this.ratioWeightWidthPass < 1 && this.interpolationPass) { + this.initializeFirstPassBuffers(true); + this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthInterpolatedRGBA : this.resizeWidthInterpolatedRGB; + } + else { + this.initializeFirstPassBuffers(false); + this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthRGBA : this.resizeWidthRGB; + } + } + if (this.heightOriginal == this.targetHeight) { + //Bypass the height resizer pass: + this.resizeHeight = this.bypassResizer; + } + else { + //Setup the height resizer pass: + this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight; + if (this.ratioWeightHeightPass < 1 && this.interpolationPass) { + this.initializeSecondPassBuffers(true); + this.resizeHeight = this.resizeHeightInterpolated; + } + else { + this.initializeSecondPassBuffers(false); + this.resizeHeight = (this.colorChannels == 4) ? this.resizeHeightRGBA : this.resizeHeightRGB; + } + } + } + resizeWidthRGB(buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var ratioWeightDivisor = 1 / ratioWeight; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var line = 0; + var pixelOffset = 0; + var outputOffset = 0; + var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 2; + var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 2; + var output = this.outputWidthWorkBench; + var outputBuffer = this.widthBuffer; + do { + for (line = 0; line < this.originalHeightMultipliedByChannels;) { + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset] * amountToNext; + } + currentPosition = actualPosition = actualPosition + 3; + weight -= amountToNext; + } + else { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels); + for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) { + outputBuffer[pixelOffset++] = output[line++] * ratioWeightDivisor; + outputBuffer[pixelOffset++] = output[line++] * ratioWeightDivisor; + outputBuffer[pixelOffset] = output[line++] * ratioWeightDivisor; + } + outputOffset += 3; + } while (outputOffset < this.targetWidthMultipliedByChannels); + return outputBuffer; + } + resizeWidthInterpolatedRGB(buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var firstWeight = 0; + var secondWeight = 0; + var outputBuffer = this.widthBuffer; + //Handle for only one interpolation input being valid for start calculation: + for (var targetPosition = 0; weight < 0.25; targetPosition += 3, weight += ratioWeight) { + for (finalOffset = targetPosition, pixelOffset = 0; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + } + } + weight -= 0.25; + for (var interpolationWidthSourceReadStop = this.widthOriginal - 1; weight < interpolationWidthSourceReadStop; targetPosition += 3, weight += ratioWeight) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 3; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 3] * secondWeight); + outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight); + outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight); + } + } + //Handle for only one interpolation input being valid for end calculation: + for (interpolationWidthSourceReadStop = this.originalWidthMultipliedByChannels - 3; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 3) { + for (finalOffset = targetPosition, pixelOffset = interpolationWidthSourceReadStop; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + } + } + return outputBuffer; + } + resizeWidthRGBA(buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var ratioWeightDivisor = 1 / ratioWeight; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var line = 0; + var pixelOffset = 0; + var outputOffset = 0; + var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 3; + var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 3; + var output = this.outputWidthWorkBench; + var outputBuffer = this.widthBuffer; + do { + for (line = 0; line < this.originalHeightMultipliedByChannels;) { + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset++] * amountToNext; + output[line++] += buffer[pixelOffset] * amountToNext; + } + currentPosition = actualPosition = actualPosition + 4; + weight -= amountToNext; + } + else { + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset++] * weight; + output[line++] += buffer[pixelOffset] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels); + for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) { + outputBuffer[pixelOffset++] = output[line++] * ratioWeightDivisor; + outputBuffer[pixelOffset++] = output[line++] * ratioWeightDivisor; + outputBuffer[pixelOffset++] = output[line++] * ratioWeightDivisor; + outputBuffer[pixelOffset] = output[line++] * ratioWeightDivisor; + } + outputOffset += 4; + } while (outputOffset < this.targetWidthMultipliedByChannels); + return outputBuffer; + } + resizeWidthInterpolatedRGBA(buffer) { + var ratioWeight = this.ratioWeightWidthPass; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var firstWeight = 0; + var secondWeight = 0; + var outputBuffer = this.widthBuffer; + //Handle for only one interpolation input being valid for start calculation: + for (var targetPosition = 0; weight < 0.25; targetPosition += 4, weight += ratioWeight) { + for (finalOffset = targetPosition, pixelOffset = 0; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3]; + } + } + weight -= 0.25; + for (var interpolationWidthSourceReadStop = this.widthOriginal - 1; weight < interpolationWidthSourceReadStop; targetPosition += 4, weight += ratioWeight) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 4; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight); + outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight); + outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 6] * secondWeight); + outputBuffer[finalOffset + 3] = (buffer[pixelOffset + 3] * firstWeight) + (buffer[pixelOffset + 7] * secondWeight); + } + } + //Handle for only one interpolation input being valid for end calculation: + for (interpolationWidthSourceReadStop = this.originalWidthMultipliedByChannels - 4; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 4) { + for (finalOffset = targetPosition, pixelOffset = interpolationWidthSourceReadStop; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3]; + } + } + return outputBuffer; + } + resizeHeightRGB(buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var ratioWeightDivisor = 1 / ratioWeight; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var pixelOffset = 0; + var outputOffset = 0; + var output = this.outputHeightWorkBench; + var outputBuffer = this.heightBuffer; + do { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + } + currentPosition = actualPosition; + weight -= amountToNext; + } + else { + for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.widthPassResultSize); + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + } + } while (outputOffset < this.finalResultSize); + return outputBuffer; + } + resizeHeightInterpolated(buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var pixelOffsetAccumulated = 0; + var pixelOffsetAccumulated2 = 0; + var firstWeight = 0; + var secondWeight = 0; + var outputBuffer = this.heightBuffer; + //Handle for only one interpolation input being valid for start calculation: + for (; weight < 0.25; weight += ratioWeight) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[finalOffset++] = buffer[pixelOffset++]; + } + } + weight -= 0.25; + for (var interpolationHeightSourceReadStop = this.heightOriginal - 1; weight < interpolationHeightSourceReadStop; weight += ratioWeight) { + //Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; + //Interpolate: + pixelOffsetAccumulated = Math.floor(weight) * this.targetWidthMultipliedByChannels; + pixelOffsetAccumulated2 = pixelOffsetAccumulated + this.targetWidthMultipliedByChannels; + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) { + outputBuffer[finalOffset++] = (buffer[pixelOffsetAccumulated + pixelOffset] * firstWeight) + (buffer[pixelOffsetAccumulated2 + pixelOffset] * secondWeight); + } + } + //Handle for only one interpolation input being valid for end calculation: + while (finalOffset < this.finalResultSize) { + for (pixelOffset = 0, pixelOffsetAccumulated = interpolationHeightSourceReadStop * this.targetWidthMultipliedByChannels; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) { + outputBuffer[finalOffset++] = buffer[pixelOffsetAccumulated++]; + } + } + return outputBuffer; + } + resizeHeightRGBA(buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var ratioWeightDivisor = 1 / ratioWeight; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var pixelOffset = 0; + var outputOffset = 0; + var output = this.outputHeightWorkBench; + var outputBuffer = this.heightBuffer; + do { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + } + weight = ratioWeight; + do { + amountToNext = 1 + actualPosition - currentPosition; + if (weight >= amountToNext) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + output[pixelOffset++] += buffer[actualPosition++] * amountToNext; + } + currentPosition = actualPosition; + weight -= amountToNext; + } + else { + for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + output[pixelOffset++] += buffer[amountToNext++] * weight; + } + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.widthPassResultSize); + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + } + } while (outputOffset < this.finalResultSize); + return outputBuffer; + } + resize(buffer) { + if (this.useWebWorker) { + this.worker.postMessage(["resize", buffer]); + } + else { + this.resizeCallback(this.resizeHeight(this.resizeWidth(buffer))); + } + } + bypassResizer(buffer) { + //Just return the buffer passsed: + return buffer; + } + initializeFirstPassBuffers(BILINEARAlgo) { + //Initialize the internal width pass buffers: + this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize); + if (!BILINEARAlgo) { + this.outputWidthWorkBench = this.generateFloatBuffer(this.originalHeightMultipliedByChannels); + } + } + initializeSecondPassBuffers(BILINEARAlgo) { + //Initialize the internal height pass buffers: + this.heightBuffer = this.generateUint8Buffer(this.finalResultSize); + if (!BILINEARAlgo) { + this.outputHeightWorkBench = this.generateFloatBuffer(this.targetWidthMultipliedByChannels); + } + } + generateFloatBuffer(bufferLength) { + //Generate a float32 typed array buffer: + try { + return new Float32Array(bufferLength); + } + catch (error) { + return []; + } + } + generateUint8Buffer(bufferLength) { + //Generate a uint8 typed array buffer: + try { + return new Uint8Array(bufferLength); + } + catch (error) { + return []; + } + } +} diff --git a/bundler/tests/.cache/deno/997bfd04da400e57d24beffc37e6a510d3516424.ts b/bundler/tests/.cache/deno/997bfd04da400e57d24beffc37e6a510d3516424.ts new file mode 100644 index 00000000000..fa2ca454b3e --- /dev/null +++ b/bundler/tests/.cache/deno/997bfd04da400e57d24beffc37e6a510d3516424.ts @@ -0,0 +1,123 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/stripIgnoredCharacters.js + + +import inspect from '../jsutils/inspect.js'; +import { Source } from '../language/source.js'; +import { TokenKind } from '../language/tokenKind.js'; +import { Lexer, isPunctuatorTokenKind } from '../language/lexer.js'; +import { dedentBlockStringValue, getBlockStringIndentation } from '../language/blockString.js'; +/** + * Strips characters that are not significant to the validity or execution + * of a GraphQL document: + * - UnicodeBOM + * - WhiteSpace + * - LineTerminator + * - Comment + * - Comma + * - BlockString indentation + * + * Note: It is required to have a delimiter character between neighboring + * non-punctuator tokens and this function always uses single space as delimiter. + * + * It is guaranteed that both input and output documents if parsed would result + * in the exact same AST except for nodes location. + * + * Warning: It is guaranteed that this function will always produce stable results. + * However, it's not guaranteed that it will stay the same between different + * releases due to bugfixes or changes in the GraphQL specification. + * + * Query example: + * + * query SomeQuery($foo: String!, $bar: String) { + * someField(foo: $foo, bar: $bar) { + * a + * b { + * c + * d + * } + * } + * } + * + * Becomes: + * + * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}} + * + * SDL example: + * + * """ + * Type description + * """ + * type Foo { + * """ + * Field description + * """ + * bar: String + * } + * + * Becomes: + * + * """Type description""" type Foo{"""Field description""" bar:String} + */ + +export function stripIgnoredCharacters(source) { + const sourceObj = typeof source === 'string' ? new Source(source) : source; + + if (!(sourceObj instanceof Source)) { + throw new TypeError(`Must provide string or Source. Received: ${inspect(sourceObj)}.`); + } + + const body = sourceObj.body; + const lexer = new Lexer(sourceObj); + let strippedBody = ''; + let wasLastAddedTokenNonPunctuator = false; + + while (lexer.advance().kind !== TokenKind.EOF) { + const currentToken = lexer.token; + const tokenKind = currentToken.kind; + /** + * Every two non-punctuator tokens should have space between them. + * Also prevent case of non-punctuator token following by spread resulting + * in invalid token (e.g. `1...` is invalid Float token). + */ + + const isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind); + + if (wasLastAddedTokenNonPunctuator) { + if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) { + strippedBody += ' '; + } + } + + const tokenBody = body.slice(currentToken.start, currentToken.end); + + if (tokenKind === TokenKind.BLOCK_STRING) { + strippedBody += dedentBlockString(tokenBody); + } else { + strippedBody += tokenBody; + } + + wasLastAddedTokenNonPunctuator = isNonPunctuator; + } + + return strippedBody; +} + +function dedentBlockString(blockStr) { + // skip leading and trailing triple quotations + const rawStr = blockStr.slice(3, -3); + let body = dedentBlockStringValue(rawStr); + const lines = body.split(/\r\n|[\n\r]/g); + + if (getBlockStringIndentation(lines) > 0) { + body = '\n' + body; + } + + const lastChar = body[body.length - 1]; + const hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""'; + + if (hasTrailingQuote || lastChar === '\\') { + body += '\n'; + } + + return '"""' + body + '"""'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9985aff73012127ae1e5c05ce1f7943e112b0656.ts b/bundler/tests/.cache/deno/9985aff73012127ae1e5c05ce1f7943e112b0656.ts new file mode 100644 index 00000000000..3e49a6e3a7e --- /dev/null +++ b/bundler/tests/.cache/deno/9985aff73012127ae1e5c05ce1f7943e112b0656.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/not.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * A function that returns the `!` of its argument. It will return `true` when + * passed false-y value, and `false` when passed a truth-y one. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig * -> Boolean + * @param {*} a any value + * @return {Boolean} the logical inverse of passed argument. + * @see R.complement + * @example + * + * R.not(true); //=> false + * R.not(false); //=> true + * R.not(0); //=> true + * R.not(1); //=> false + */ +var not = _curry1(function not(a) { + return !a; +}); +export default not; diff --git a/bundler/tests/.cache/deno/99a3bb90a2d488faece7beebb3f3d741aad15536.ts b/bundler/tests/.cache/deno/99a3bb90a2d488faece7beebb3f3d741aad15536.ts new file mode 100644 index 00000000000..42bdfaa8621 --- /dev/null +++ b/bundler/tests/.cache/deno/99a3bb90a2d488faece7beebb3f3d741aad15536.ts @@ -0,0 +1,71 @@ +// Loaded from https://deno.land/x/args@1.0.7/value-errors.ts + + +import { + ParseError, +} from "./types.ts"; + +/** + * Base class of all `ValueError` + */ +export abstract class ValueError implements ParseError { + /** Raw input */ + public abstract readonly raw: string; + public abstract toString(): string; +} + +/** + * `ValueError` class for when non-number raw input being place in where a number is expected + */ +export class NotANumber extends ValueError { + constructor( + /** Raw input */ + public readonly raw: string, + ) { + super(); + } + + public toString() { + return `Not a number: ${this.raw}`; + } +} + +/** + * `ValueError` class for when non-integer raw input being place in where an integer is expected + */ +export class NotAnInteger extends ValueError { + constructor( + /** Raw input */ + public readonly raw: string, + /** BigInt parsing error */ + public readonly error: SyntaxError, + ) { + super(); + } + + public toString() { + return `Not an integer: ${this.raw} (${this.error})`; + } +} + +/** + * `ValueError` class for when raw input not matching any expected choice + * @template ValidChoice Union type of valid choices + */ +export class InvalidChoice + extends ValueError { + constructor( + /** Raw input */ + public readonly raw: string, + /** List of valid choices */ + public readonly choices: readonly ValidChoice[], + ) { + super(); + } + + public toString() { + return `Invalid choice: ${this.raw} is not one of ${this.choices.join( + ", ", + )}`; + } +} diff --git a/bundler/tests/.cache/deno/99bc8d3c8204355079b5a33fe9707ab0d0f1c823.ts b/bundler/tests/.cache/deno/99bc8d3c8204355079b5a33fe9707ab0d0f1c823.ts new file mode 100644 index 00000000000..bf569c85abd --- /dev/null +++ b/bundler/tests/.cache/deno/99bc8d3c8204355079b5a33fe9707ab0d0f1c823.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std/bytes/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/99c8f9ffb2769b7c8a38b8c028eb9644e7e0c7ce.ts b/bundler/tests/.cache/deno/99c8f9ffb2769b7c8a38b8c028eb9644e7e0c7ce.ts new file mode 100644 index 00000000000..dde882aca7b --- /dev/null +++ b/bundler/tests/.cache/deno/99c8f9ffb2769b7c8a38b8c028eb9644e7e0c7ce.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/bytes_formater/mod.ts + + +export { format } from "./format.ts"; +export { setColorEnabled } from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/99d5df44232646fd9cd0e6f61c854f6a4caeba26.ts b/bundler/tests/.cache/deno/99d5df44232646fd9cd0e6f61c854f6a4caeba26.ts new file mode 100644 index 00000000000..eb89236eb52 --- /dev/null +++ b/bundler/tests/.cache/deno/99d5df44232646fd9cd0e6f61c854f6a4caeba26.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.81.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/99e6408e62dd4a64c2610648e8cdd49451d8477b.ts b/bundler/tests/.cache/deno/99e6408e62dd4a64c2610648e8cdd49451d8477b.ts new file mode 100644 index 00000000000..10e0ff0266c --- /dev/null +++ b/bundler/tests/.cache/deno/99e6408e62dd4a64c2610648e8cdd49451d8477b.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/std/fs/eol.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** EndOfLine character enum */ +export enum EOL { + LF = "\n", + CRLF = "\r\n", +} + +const regDetect = /(?:\r?\n)/g; + +/** + * Detect the EOL character for string input. + * returns null if no newline + */ +export function detect(content: string): EOL | null { + const d = content.match(regDetect); + if (!d || d.length === 0) { + return null; + } + const hasCRLF = d.some((x: string): boolean => x === EOL.CRLF); + + return hasCRLF ? EOL.CRLF : EOL.LF; +} + +/** Format the file to the targeted EOL */ +export function format(content: string, eol: EOL): string { + return content.replace(regDetect, eol); +} diff --git a/bundler/tests/.cache/deno/9a54aa41e5f75d772cbb60a6a9b5981a978f8316.ts b/bundler/tests/.cache/deno/9a54aa41e5f75d772cbb60a6a9b5981a978f8316.ts new file mode 100644 index 00000000000..81f31c9f076 --- /dev/null +++ b/bundler/tests/.cache/deno/9a54aa41e5f75d772cbb60a6a9b5981a978f8316.ts @@ -0,0 +1,115 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/group.ts + + +import type { HandlerFunc, MiddlewareFunc } from "./types.ts"; +import type { Application } from "./app.ts"; + +import { join } from "./vendor/https/deno.land/std/path/mod.ts"; +import { NotFoundHandler } from "./util.ts"; + +export class Group { + prefix: string; + middleware: MiddlewareFunc[]; + app: Application; + + constructor(opts: { app: Application; prefix: string }) { + this.prefix = opts.prefix || ""; + this.app = opts.app || ({} as Application); + + this.middleware = []; + } + + use(...m: MiddlewareFunc[]): Group { + this.middleware.push(...m); + if (this.middleware.length !== 0) { + this.any("", NotFoundHandler); + } + return this; + } + + connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("CONNECT", path, h, ...m); + } + delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("DELETE", path, h, ...m); + } + get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("GET", path, h, ...m); + } + head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("HEAD", path, h, ...m); + } + options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("OPTIONS", path, h, ...m); + } + patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("PATCH", path, h, ...m); + } + post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("POST", path, h, ...m); + } + put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("PUT", path, h, ...m); + } + trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + return this.add("TRACE", path, h, ...m); + } + any(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Group { + const methods = [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + "TRACE", + ]; + for (const method of methods) { + this.add(method, path, h, ...m); + } + return this; + } + match( + methods: string[], + path: string, + h: HandlerFunc, + ...m: MiddlewareFunc[] + ): Group { + for (const method of methods) { + this.add(method, path, h, ...m); + } + return this; + } + add( + method: string, + path: string, + handler: HandlerFunc, + ...middleware: MiddlewareFunc[] + ): Group { + this.app.add( + method, + this.prefix + path, + handler, + ...this.middleware, + ...middleware, + ); + return this; + } + + static(prefix: string, root: string): Group { + this.app.static(join(this.prefix, prefix), root); + return this; + } + + file(p: string, filepath: string, ...m: MiddlewareFunc[]): Group { + this.app.file(join(this.prefix, p), filepath, ...m); + return this; + } + + group(prefix: string, ...m: MiddlewareFunc[]): Group { + const g = this.app.group(this.prefix + prefix, ...this.middleware, ...m); + return g; + } +} diff --git a/bundler/tests/.cache/deno/9a5fff78dd6609bd3add0404c6be987ca110d756.ts b/bundler/tests/.cache/deno/9a5fff78dd6609bd3add0404c6be987ca110d756.ts new file mode 100644 index 00000000000..7b2a18aa76a --- /dev/null +++ b/bundler/tests/.cache/deno/9a5fff78dd6609bd3add0404c6be987ca110d756.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/djwt@v1.9/_depts.ts + + +export * as base64url from "https://deno.land/std@0.75.0/encoding/base64url.ts"; +export { + decodeString as convertHexToUint8Array, + encodeToString as convertUint8ArrayToHex, +} from "https://deno.land/std@0.75.0/encoding/hex.ts"; +export { HmacSha256 } from "https://deno.land/std@0.75.0/hash/sha256.ts"; +export { HmacSha512 } from "https://deno.land/std@0.75.0/hash/sha512.ts"; +export { RSA } from "https://deno.land/x/god_crypto@v1.4.3/rsa.ts"; diff --git a/bundler/tests/.cache/deno/9a92d2bbef513374c4cf97a7173aa0df19e6ba6d.ts b/bundler/tests/.cache/deno/9a92d2bbef513374c4cf97a7173aa0df19e6ba6d.ts new file mode 100644 index 00000000000..e29d622fc1f --- /dev/null +++ b/bundler/tests/.cache/deno/9a92d2bbef513374c4cf97a7173aa0df19e6ba6d.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/slice.js + + +import _checkForMethod from './internal/_checkForMethod.js'; +import _curry3 from './internal/_curry3.js'; + + +/** + * Returns the elements of the given list or string (or object with a `slice` + * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). + * + * Dispatches to the `slice` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @sig Number -> Number -> String -> String + * @param {Number} fromIndex The start index (inclusive). + * @param {Number} toIndex The end index (exclusive). + * @param {*} list + * @return {*} + * @example + * + * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] + * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] + * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(0, 3, 'ramda'); //=> 'ram' + */ +var slice = _curry3(_checkForMethod('slice', function slice(fromIndex, toIndex, list) { + return Array.prototype.slice.call(list, fromIndex, toIndex); +})); +export default slice; diff --git a/bundler/tests/.cache/deno/9a95075c98085ee5ba5712ee0dfc4ac915a9b4d8.ts b/bundler/tests/.cache/deno/9a95075c98085ee5ba5712ee0dfc4ac915a9b4d8.ts new file mode 100644 index 00000000000..be1b5188d98 --- /dev/null +++ b/bundler/tests/.cache/deno/9a95075c98085ee5ba5712ee0dfc4ac915a9b4d8.ts @@ -0,0 +1,75 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/mod.ts + + +import { resolve } from 'https://deno.land/std/path/mod.ts'; +import { _find, _insert, _findOne, _update, _updateOne, _remove, _removeOne } from './methods/mod.js'; +import { init } from './storage.ts'; +import DataStoreOptions from './types/ds.options.ts' + +class Datastore{ + public filename: string; + constructor({ filename, autoload, timeStamp, onLoad = () => {} }: DataStoreOptions) { + this.filename = filename ? resolve(Deno.cwd(), filename) : resolve(Deno.cwd(), "./database.json"); + if (autoload) this.loadDatabase().then(() => { + onLoad() + }) + }; + + /* + * Loads the database on first load and ensures that path exists. + * + */ + async loadDatabase () { + return init(this.filename) + } + + // Find a document + + async find (query: {any: any}, projection: any = {}, cb: (x: any) => any) { + if (cb && typeof cb == 'function') return cb(await _find(this.filename, query, projection)); + return _find(this.filename, query, projection) + } + + // Find first matching document + + async findOne(query: {any: any}, projection: any = {}, cb: (x: any) => any) { + projection = projection || {}; + if (cb && typeof cb == 'function') return cb(await _findOne(this.filename, query, projection)); + return _findOne(this.filename, query, projection) + } + + // Inserts a document + + async insert (data: any, cb: (x: any) => any) { + if (cb && typeof cb == 'function') await _insert(this.filename, data) + return _insert(this.filename, data) + } + + // Updates matching documents + + async update (query: {any: any}, operators: any, projection: any = {}, cb: (x: any) => any) { + if (cb && typeof cb == "function") return cb(await _update(this.filename, query, operators)); + return _update(this.filename, query, operators) + } + + async updateOne (query: {any: any}, operators: any, projection: any = {}, cb: (x: any) => any) { + if (cb && typeof cb == "function") return cb(await _updateOne(this.filename, query, operators)); + return _updateOne(this.filename, query, operators) + } + + // Removes matching document + + async remove(query: any, cb: (x: any) => any) { + if (cb && typeof cb == "function") return cb(await _remove(this.filename, query)); + return _remove(this.filename, query) + } + + async removeOne(query: any, cb: (x: any) => any) { + if (cb && typeof cb == "function") return cb(await _removeOne(this.filename, query)); + return _removeOne(this.filename, query) + } + +} + +export { Datastore } + diff --git a/bundler/tests/.cache/deno/9abef5534b7bfa653115e8c66598b8eb530dd23a.ts b/bundler/tests/.cache/deno/9abef5534b7bfa653115e8c66598b8eb530dd23a.ts new file mode 100644 index 00000000000..2162b23bf4a --- /dev/null +++ b/bundler/tests/.cache/deno/9abef5534b7bfa653115e8c66598b8eb530dd23a.ts @@ -0,0 +1,612 @@ +// Loaded from https://deno.land/std@0.81.0/mime/multipart.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { equals, indexOf, lastIndexOf, startsWith } from "../bytes/mod.ts"; +import { copyN } from "../io/ioutil.ts"; +import { MultiReader } from "../io/readers.ts"; +import { extname } from "../path/mod.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { encoder } from "../encoding/utf8.ts"; +import { assert } from "../_util/assert.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { hasOwnProperty } from "../_util/has_own_property.ts"; + +/** FormFile object */ +export interface FormFile { + /** filename */ + filename: string; + /** content-type header value of file */ + type: string; + /** byte size of file */ + size: number; + /** in-memory content of file. Either content or tempfile is set */ + content?: Uint8Array; + /** temporal file path. + * Set if file size is bigger than specified max-memory size at reading form + * */ + tempfile?: string; +} + +/** Type guard for FormFile */ +// deno-lint-ignore no-explicit-any +export function isFormFile(x: any): x is FormFile { + return hasOwnProperty(x, "filename") && hasOwnProperty(x, "type"); +} + +function randomBoundary(): string { + let boundary = "--------------------------"; + for (let i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 16).toString(16); + } + return boundary; +} + +/** + * Checks whether `buf` should be considered to match the boundary. + * + * The prefix is "--boundary" or "\r\n--boundary" or "\n--boundary", and the + * caller has verified already that `hasPrefix(buf, prefix)` is true. + * + * `matchAfterPrefix()` returns `1` if the buffer does match the boundary, + * meaning the prefix is followed by a dash, space, tab, cr, nl, or EOF. + * + * It returns `-1` if the buffer definitely does NOT match the boundary, + * meaning the prefix is followed by some other character. + * For example, "--foobar" does not match "--foo". + * + * It returns `0` more input needs to be read to make the decision, + * meaning that `buf.length` and `prefix.length` are the same. + */ +export function matchAfterPrefix( + buf: Uint8Array, + prefix: Uint8Array, + eof: boolean, +): -1 | 0 | 1 { + if (buf.length === prefix.length) { + return eof ? 1 : 0; + } + const c = buf[prefix.length]; + if ( + c === " ".charCodeAt(0) || + c === "\t".charCodeAt(0) || + c === "\r".charCodeAt(0) || + c === "\n".charCodeAt(0) || + c === "-".charCodeAt(0) + ) { + return 1; + } + return -1; +} + +/** + * Scans `buf` to identify how much of it can be safely returned as part of the + * `PartReader` body. + * + * @param buf - The buffer to search for boundaries. + * @param dashBoundary - Is "--boundary". + * @param newLineDashBoundary - Is "\r\n--boundary" or "\n--boundary", depending + * on what mode we are in. The comments below (and the name) assume + * "\n--boundary", but either is accepted. + * @param total - The number of bytes read out so far. If total == 0, then a + * leading "--boundary" is recognized. + * @param eof - Whether `buf` contains the final bytes in the stream before EOF. + * If `eof` is false, more bytes are expected to follow. + * @returns The number of data bytes from buf that can be returned as part of + * the `PartReader` body. + */ +export function scanUntilBoundary( + buf: Uint8Array, + dashBoundary: Uint8Array, + newLineDashBoundary: Uint8Array, + total: number, + eof: boolean, +): number | null { + if (total === 0) { + // At beginning of body, allow dashBoundary. + if (startsWith(buf, dashBoundary)) { + switch (matchAfterPrefix(buf, dashBoundary, eof)) { + case -1: + return dashBoundary.length; + case 0: + return 0; + case 1: + return null; + } + } + if (startsWith(dashBoundary, buf)) { + return 0; + } + } + + // Search for "\n--boundary". + const i = indexOf(buf, newLineDashBoundary); + if (i >= 0) { + switch (matchAfterPrefix(buf.slice(i), newLineDashBoundary, eof)) { + case -1: + return i + newLineDashBoundary.length; + case 0: + return i; + case 1: + return i > 0 ? i : null; + } + } + if (startsWith(newLineDashBoundary, buf)) { + return 0; + } + + // Otherwise, anything up to the final \n is not part of the boundary and so + // must be part of the body. Also, if the section from the final \n onward is + // not a prefix of the boundary, it too must be part of the body. + const j = lastIndexOf(buf, newLineDashBoundary.slice(0, 1)); + if (j >= 0 && startsWith(newLineDashBoundary, buf.slice(j))) { + return j; + } + + return buf.length; +} + +class PartReader implements Deno.Reader, Deno.Closer { + n: number | null = 0; + total = 0; + + constructor(private mr: MultipartReader, public readonly headers: Headers) {} + + async read(p: Uint8Array): Promise { + const br = this.mr.bufReader; + + // Read into buffer until we identify some data to return, + // or we find a reason to stop (boundary or EOF). + let peekLength = 1; + while (this.n === 0) { + peekLength = Math.max(peekLength, br.buffered()); + const peekBuf = await br.peek(peekLength); + if (peekBuf === null) { + throw new Deno.errors.UnexpectedEof(); + } + const eof = peekBuf.length < peekLength; + this.n = scanUntilBoundary( + peekBuf, + this.mr.dashBoundary, + this.mr.newLineDashBoundary, + this.total, + eof, + ); + if (this.n === 0) { + // Force buffered I/O to read more into buffer. + assert(eof === false); + peekLength++; + } + } + + if (this.n === null) { + return null; + } + + const nread = Math.min(p.length, this.n); + const buf = p.subarray(0, nread); + const r = await br.readFull(buf); + assert(r === buf); + this.n -= nread; + this.total += nread; + return nread; + } + + close(): void {} + + private contentDisposition!: string; + private contentDispositionParams!: { [key: string]: string }; + + private getContentDispositionParams(): { [key: string]: string } { + if (this.contentDispositionParams) return this.contentDispositionParams; + const cd = this.headers.get("content-disposition"); + const params: { [key: string]: string } = {}; + assert(cd != null, "content-disposition must be set"); + const comps = decodeURI(cd).split(";"); + this.contentDisposition = comps[0]; + comps + .slice(1) + .map((v: string): string => v.trim()) + .map((kv: string): void => { + const [k, v] = kv.split("="); + if (v) { + const s = v.charAt(0); + const e = v.charAt(v.length - 1); + if ((s === e && s === '"') || s === "'") { + params[k] = v.substr(1, v.length - 2); + } else { + params[k] = v; + } + } + }); + return (this.contentDispositionParams = params); + } + + get fileName(): string { + return this.getContentDispositionParams()["filename"]; + } + + get formName(): string { + const p = this.getContentDispositionParams(); + if (this.contentDisposition === "form-data") { + return p["name"]; + } + return ""; + } +} + +function skipLWSPChar(u: Uint8Array): Uint8Array { + const ret = new Uint8Array(u.length); + const sp = " ".charCodeAt(0); + const ht = "\t".charCodeAt(0); + let j = 0; + for (let i = 0; i < u.length; i++) { + if (u[i] === sp || u[i] === ht) continue; + ret[j++] = u[i]; + } + return ret.slice(0, j); +} + +export interface MultipartFormData { + file(key: string): FormFile | FormFile[] | undefined; + value(key: string): string | undefined; + entries(): IterableIterator< + [string, string | FormFile | FormFile[] | undefined] + >; + [Symbol.iterator](): IterableIterator< + [string, string | FormFile | FormFile[] | undefined] + >; + /** Remove all tempfiles */ + removeAll(): Promise; +} + +/** Reader for parsing multipart/form-data */ +export class MultipartReader { + readonly newLine = encoder.encode("\r\n"); + readonly newLineDashBoundary = encoder.encode(`\r\n--${this.boundary}`); + readonly dashBoundaryDash = encoder.encode(`--${this.boundary}--`); + readonly dashBoundary = encoder.encode(`--${this.boundary}`); + readonly bufReader: BufReader; + + constructor(reader: Deno.Reader, private boundary: string) { + this.bufReader = new BufReader(reader); + } + + /** Read all form data from stream. + * If total size of stored data in memory exceed maxMemory, + * overflowed file data will be written to temporal files. + * String field values are never written to files. + * null value means parsing or writing to file was failed in some reason. + * @param maxMemory maximum memory size to store file in memory. bytes. @default 10485760 (10MB) + * */ + async readForm(maxMemory = 10 << 20): Promise { + const fileMap = new Map(); + const valueMap = new Map(); + let maxValueBytes = maxMemory + (10 << 20); + const buf = new Deno.Buffer(new Uint8Array(maxValueBytes)); + for (;;) { + const p = await this.nextPart(); + if (p === null) { + break; + } + if (p.formName === "") { + continue; + } + buf.reset(); + if (!p.fileName) { + // value + const n = await copyN(p, buf, maxValueBytes); + maxValueBytes -= n; + if (maxValueBytes < 0) { + throw new RangeError("message too large"); + } + const value = new TextDecoder().decode(buf.bytes()); + valueMap.set(p.formName, value); + continue; + } + // file + let formFile: FormFile | FormFile[] | undefined; + const n = await copyN(p, buf, maxValueBytes); + const contentType = p.headers.get("content-type"); + assert(contentType != null, "content-type must be set"); + if (n > maxMemory) { + // too big, write to disk and flush buffer + const ext = extname(p.fileName); + const filepath = await Deno.makeTempFile({ + dir: ".", + prefix: "multipart-", + suffix: ext, + }); + + const file = await Deno.open(filepath, { write: true }); + + try { + const size = await Deno.copy(new MultiReader(buf, p), file); + + file.close(); + formFile = { + filename: p.fileName, + type: contentType, + tempfile: filepath, + size, + }; + } catch (e) { + await Deno.remove(filepath); + throw e; + } + } else { + formFile = { + filename: p.fileName, + type: contentType, + content: buf.bytes(), + size: buf.length, + }; + maxMemory -= n; + maxValueBytes -= n; + } + if (formFile) { + const mapVal = fileMap.get(p.formName); + if (mapVal !== undefined) { + if (Array.isArray(mapVal)) { + mapVal.push(formFile); + } else { + fileMap.set(p.formName, [mapVal, formFile]); + } + } else { + fileMap.set(p.formName, formFile); + } + } + } + return multipatFormData(fileMap, valueMap); + } + + private currentPart: PartReader | undefined; + private partsRead = 0; + + private async nextPart(): Promise { + if (this.currentPart) { + this.currentPart.close(); + } + if (equals(this.dashBoundary, encoder.encode("--"))) { + throw new Error("boundary is empty"); + } + let expectNewPart = false; + for (;;) { + const line = await this.bufReader.readSlice("\n".charCodeAt(0)); + if (line === null) { + throw new Deno.errors.UnexpectedEof(); + } + if (this.isBoundaryDelimiterLine(line)) { + this.partsRead++; + const r = new TextProtoReader(this.bufReader); + const headers = await r.readMIMEHeader(); + if (headers === null) { + throw new Deno.errors.UnexpectedEof(); + } + const np = new PartReader(this, headers); + this.currentPart = np; + return np; + } + if (this.isFinalBoundary(line)) { + return null; + } + if (expectNewPart) { + throw new Error(`expecting a new Part; got line ${line}`); + } + if (this.partsRead === 0) { + continue; + } + if (equals(line, this.newLine)) { + expectNewPart = true; + continue; + } + throw new Error(`unexpected line in nextPart(): ${line}`); + } + } + + private isFinalBoundary(line: Uint8Array): boolean { + if (!startsWith(line, this.dashBoundaryDash)) { + return false; + } + const rest = line.slice(this.dashBoundaryDash.length, line.length); + return rest.length === 0 || equals(skipLWSPChar(rest), this.newLine); + } + + private isBoundaryDelimiterLine(line: Uint8Array): boolean { + if (!startsWith(line, this.dashBoundary)) { + return false; + } + const rest = line.slice(this.dashBoundary.length); + return equals(skipLWSPChar(rest), this.newLine); + } +} + +function multipatFormData( + fileMap: Map, + valueMap: Map, +): MultipartFormData { + function file(key: string): FormFile | FormFile[] | undefined { + return fileMap.get(key); + } + function value(key: string): string | undefined { + return valueMap.get(key); + } + function* entries(): IterableIterator< + [string, string | FormFile | FormFile[] | undefined] + > { + yield* fileMap; + yield* valueMap; + } + async function removeAll(): Promise { + const promises: Array> = []; + for (const val of fileMap.values()) { + if (Array.isArray(val)) { + for (const subVal of val) { + if (!subVal.tempfile) continue; + promises.push(Deno.remove(subVal.tempfile)); + } + } else { + if (!val.tempfile) continue; + promises.push(Deno.remove(val.tempfile)); + } + } + await Promise.all(promises); + } + return { + file, + value, + entries, + removeAll, + [Symbol.iterator](): IterableIterator< + [string, string | FormFile | FormFile[] | undefined] + > { + return entries(); + }, + }; +} + +class PartWriter implements Deno.Writer { + closed = false; + private readonly partHeader: string; + private headersWritten = false; + + constructor( + private writer: Deno.Writer, + readonly boundary: string, + public headers: Headers, + isFirstBoundary: boolean, + ) { + let buf = ""; + if (isFirstBoundary) { + buf += `--${boundary}\r\n`; + } else { + buf += `\r\n--${boundary}\r\n`; + } + for (const [key, value] of headers.entries()) { + buf += `${key}: ${value}\r\n`; + } + buf += `\r\n`; + this.partHeader = buf; + } + + close(): void { + this.closed = true; + } + + async write(p: Uint8Array): Promise { + if (this.closed) { + throw new Error("part is closed"); + } + if (!this.headersWritten) { + await this.writer.write(encoder.encode(this.partHeader)); + this.headersWritten = true; + } + return this.writer.write(p); + } +} + +function checkBoundary(b: string): string { + if (b.length < 1 || b.length > 70) { + throw new Error(`invalid boundary length: ${b.length}`); + } + const end = b.length - 1; + for (let i = 0; i < end; i++) { + const c = b.charAt(i); + if (!c.match(/[a-zA-Z0-9'()+_,\-./:=?]/) || (c === " " && i !== end)) { + throw new Error("invalid boundary character: " + c); + } + } + return b; +} + +/** Writer for creating multipart/form-data */ +export class MultipartWriter { + private readonly _boundary: string; + + get boundary(): string { + return this._boundary; + } + + private lastPart: PartWriter | undefined; + private bufWriter: BufWriter; + private isClosed = false; + + constructor(private readonly writer: Deno.Writer, boundary?: string) { + if (boundary !== void 0) { + this._boundary = checkBoundary(boundary); + } else { + this._boundary = randomBoundary(); + } + this.bufWriter = new BufWriter(writer); + } + + formDataContentType(): string { + return `multipart/form-data; boundary=${this.boundary}`; + } + + private createPart(headers: Headers): Deno.Writer { + if (this.isClosed) { + throw new Error("multipart: writer is closed"); + } + if (this.lastPart) { + this.lastPart.close(); + } + const part = new PartWriter( + this.writer, + this.boundary, + headers, + !this.lastPart, + ); + this.lastPart = part; + return part; + } + + createFormFile(field: string, filename: string): Deno.Writer { + const h = new Headers(); + h.set( + "Content-Disposition", + `form-data; name="${field}"; filename="${filename}"`, + ); + h.set("Content-Type", "application/octet-stream"); + return this.createPart(h); + } + + createFormField(field: string): Deno.Writer { + const h = new Headers(); + h.set("Content-Disposition", `form-data; name="${field}"`); + h.set("Content-Type", "application/octet-stream"); + return this.createPart(h); + } + + async writeField(field: string, value: string): Promise { + const f = await this.createFormField(field); + await f.write(encoder.encode(value)); + } + + async writeFile( + field: string, + filename: string, + file: Deno.Reader, + ): Promise { + const f = await this.createFormFile(field, filename); + await Deno.copy(file, f); + } + + private flush(): Promise { + return this.bufWriter.flush(); + } + + /** Close writer. No additional data can be written to stream */ + async close(): Promise { + if (this.isClosed) { + throw new Error("multipart: writer is closed"); + } + if (this.lastPart) { + this.lastPart.close(); + this.lastPart = void 0; + } + await this.writer.write(encoder.encode(`\r\n--${this.boundary}--\r\n`)); + await this.flush(); + this.isClosed = true; + } +} diff --git a/bundler/tests/.cache/deno/9b3c55c32e87549332177095420f778702ea4d1f.ts b/bundler/tests/.cache/deno/9b3c55c32e87549332177095420f778702ea4d1f.ts new file mode 100644 index 00000000000..ffd48138034 --- /dev/null +++ b/bundler/tests/.cache/deno/9b3c55c32e87549332177095420f778702ea4d1f.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/mime-type.ts + + +/** + * Return mime type of a file + * @param headerString - header of file + * List here: + * https://en.wikipedia.org/wiki/List_of_file_signatures + * https://mimesniff.spec.whatwg.org/#matching-an-image-type-pattern + */ +export function mimeType(imgFile: Uint8Array) { + // Get mime type + const arr = imgFile.subarray(0, 4); + let header = ""; + for (let i = 0; i < arr.length; i++) { + header += arr[i].toString(16); + } + + let type = "unknown"; + switch (header) { + case "89504e47": + type = "image/png"; + break; + case "47494638": + type = "image/gif"; + break; + case "ffd8ffe0": + case "ffd8ffe1": + case "ffd8ffe2": + type = "image/jpeg"; + break; + default: + type = "unknown"; + break; + } + return type; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9b9748d7d7c6da0df8807cec3546472da2134a55.ts b/bundler/tests/.cache/deno/9b9748d7d7c6da0df8807cec3546472da2134a55.ts new file mode 100644 index 00000000000..003868a9b09 --- /dev/null +++ b/bundler/tests/.cache/deno/9b9748d7d7c6da0df8807cec3546472da2134a55.ts @@ -0,0 +1,205 @@ +// Loaded from https://deno.land/std@0.74.0/log/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Logger } from "./logger.ts"; +import type { GenericFunction } from "./logger.ts"; +import { + BaseHandler, + ConsoleHandler, + FileHandler, + RotatingFileHandler, + WriterHandler, +} from "./handlers.ts"; +import { assert } from "../_util/assert.ts"; +import type { LevelName } from "./levels.ts"; + +export { LogLevels } from "./levels.ts"; +export type { LevelName } from "./levels.ts"; +export { Logger } from "./logger.ts"; + +export class LoggerConfig { + level?: LevelName; + handlers?: string[]; +} + +export interface LogConfig { + handlers?: { + [name: string]: BaseHandler; + }; + loggers?: { + [name: string]: LoggerConfig; + }; +} + +const DEFAULT_LEVEL = "INFO"; +const DEFAULT_CONFIG: LogConfig = { + handlers: { + default: new ConsoleHandler(DEFAULT_LEVEL), + }, + + loggers: { + default: { + level: DEFAULT_LEVEL, + handlers: ["default"], + }, + }, +}; + +const state = { + handlers: new Map(), + loggers: new Map(), + config: DEFAULT_CONFIG, +}; + +export const handlers = { + BaseHandler, + ConsoleHandler, + WriterHandler, + FileHandler, + RotatingFileHandler, +}; + +export function getLogger(name?: string): Logger { + if (!name) { + const d = state.loggers.get("default"); + assert( + d != null, + `"default" logger must be set for getting logger without name`, + ); + return d; + } + const result = state.loggers.get(name); + if (!result) { + const logger = new Logger(name, "NOTSET", { handlers: [] }); + state.loggers.set(name, logger); + return logger; + } + return result; +} + +export function debug(msg: () => T, ...args: unknown[]): T | undefined; +export function debug( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").debug(msg, ...args); + } + return getLogger("default").debug(msg, ...args); +} + +export function info(msg: () => T, ...args: unknown[]): T | undefined; +export function info( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").info(msg, ...args); + } + return getLogger("default").info(msg, ...args); +} + +export function warning(msg: () => T, ...args: unknown[]): T | undefined; +export function warning( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").warning(msg, ...args); + } + return getLogger("default").warning(msg, ...args); +} + +export function error(msg: () => T, ...args: unknown[]): T | undefined; +export function error( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").error(msg, ...args); + } + return getLogger("default").error(msg, ...args); +} + +export function critical(msg: () => T, ...args: unknown[]): T | undefined; +export function critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").critical(msg, ...args); + } + return getLogger("default").critical(msg, ...args); +} + +export async function setup(config: LogConfig): Promise { + state.config = { + handlers: { ...DEFAULT_CONFIG.handlers, ...config.handlers }, + loggers: { ...DEFAULT_CONFIG.loggers, ...config.loggers }, + }; + + // tear down existing handlers + state.handlers.forEach((handler): void => { + handler.destroy(); + }); + state.handlers.clear(); + + // setup handlers + const handlers = state.config.handlers || {}; + + for (const handlerName in handlers) { + const handler = handlers[handlerName]; + await handler.setup(); + state.handlers.set(handlerName, handler); + } + + // remove existing loggers + state.loggers.clear(); + + // setup loggers + const loggers = state.config.loggers || {}; + for (const loggerName in loggers) { + const loggerConfig = loggers[loggerName]; + const handlerNames = loggerConfig.handlers || []; + const handlers: BaseHandler[] = []; + + handlerNames.forEach((handlerName): void => { + const handler = state.handlers.get(handlerName); + if (handler) { + handlers.push(handler); + } + }); + + const levelName = loggerConfig.level || DEFAULT_LEVEL; + const logger = new Logger(loggerName, levelName, { handlers: handlers }); + state.loggers.set(loggerName, logger); + } +} + +await setup(DEFAULT_CONFIG); diff --git a/bundler/tests/.cache/deno/9c5ca0e5731e16ff5197221fe61ba6beea163fc0.ts b/bundler/tests/.cache/deno/9c5ca0e5731e16ff5197221fe61ba6beea163fc0.ts new file mode 100644 index 00000000000..3bce4e421bb --- /dev/null +++ b/bundler/tests/.cache/deno/9c5ca0e5731e16ff5197221fe61ba6beea163fc0.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/curry.js + + +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; + + +/** + * Returns a curried equivalent of the provided function. The curried function + * has two unusual capabilities. First, its arguments needn't be provided one + * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> a) -> (* -> a) + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curryN, R.partial + * @example + * + * const addFourNumbers = (a, b, c, d) => a + b + c + d; + * + * const curriedAddFourNumbers = R.curry(addFourNumbers); + * const f = curriedAddFourNumbers(1, 2); + * const g = f(3); + * g(4); //=> 10 + */ +var curry = _curry1(function curry(fn) { + return curryN(fn.length, fn); +}); +export default curry; diff --git a/bundler/tests/.cache/deno/9c63dc11abb86dce3f2c541c3aed34ac5cb562c8.ts b/bundler/tests/.cache/deno/9c63dc11abb86dce3f2c541c3aed34ac5cb562c8.ts new file mode 100644 index 00000000000..37f5c549e31 --- /dev/null +++ b/bundler/tests/.cache/deno/9c63dc11abb86dce3f2c541c3aed34ac5cb562c8.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/deps.ts + + +export * as ConsoleColor from "https://deno.land/x/colorlog@v1.0/mod.ts"; + +export { default as SQLQueryBuilder } from "https://raw.githubusercontent.com/denjucks/dex/master/mod.ts"; + +export { camelCase, snakeCase } from "https://deno.land/x/case/mod.ts"; + +export { Client as PostgresClient } from "https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/mod.ts"; + +export { + Client as MySQLClient, + Connection as MySQLConnection, +} from "https://deno.land/x/mysql/mod.ts"; + +export { DB as SQLiteClient } from "https://deno.land/x/sqlite@v2.3.1/mod.ts"; + +export { MongoClient as MongoDBClient } from "https://deno.land/x/mongo@v0.20.0/mod.ts"; +export type { ConnectOptions as MongoDBClientOptions } from "https://deno.land/x/mongo@v0.20.0/mod.ts"; +export type { Database as MongoDBDatabase } from "https://deno.land/x/mongo@v0.20.0/src/database.ts"; diff --git a/bundler/tests/.cache/deno/9c76992410f3623cd49b48606cff60cd3d96ffa3.ts b/bundler/tests/.cache/deno/9c76992410f3623cd49b48606cff60cd3d96ffa3.ts new file mode 100644 index 00000000000..7d19edd36a2 --- /dev/null +++ b/bundler/tests/.cache/deno/9c76992410f3623cd49b48606cff60cd3d96ffa3.ts @@ -0,0 +1,140 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/directives.js + + +import objectEntries from '../polyfills/objectEntries.js'; +import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols.js'; +import inspect from '../jsutils/inspect.js'; +import toObjMap from '../jsutils/toObjMap.js'; +import devAssert from '../jsutils/devAssert.js'; +import instanceOf from '../jsutils/instanceOf.js'; +import defineToJSON from '../jsutils/defineToJSON.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import { DirectiveLocation } from '../language/directiveLocation.js'; +import { GraphQLString, GraphQLBoolean } from './scalars.js'; +import { argsToArgsConfig, GraphQLNonNull } from './definition.js'; +/** + * Test if the given value is a GraphQL directive. + */ + +// eslint-disable-next-line no-redeclare +export function isDirective(directive) { + return instanceOf(directive, GraphQLDirective); +} +export function assertDirective(directive) { + if (!isDirective(directive)) { + throw new Error(`Expected ${inspect(directive)} to be a GraphQL directive.`); + } + + return directive; +} +/** + * Directives are used by the GraphQL runtime as a way of modifying execution + * behavior. Type system creators will usually not create these directly. + */ + +export class GraphQLDirective { + constructor(config) { + this.name = config.name; + this.description = config.description; + this.locations = config.locations; + this.isRepeatable = config.isRepeatable ?? false; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + devAssert(config.name, 'Directive must be named.'); + devAssert(Array.isArray(config.locations), `@${config.name} locations must be an Array.`); + const args = config.args ?? {}; + devAssert(isObjectLike(args) && !Array.isArray(args), `@${config.name} args must be an object with argument names as keys.`); + this.args = objectEntries(args).map(([argName, argConfig]) => ({ + name: argName, + description: argConfig.description, + type: argConfig.type, + defaultValue: argConfig.defaultValue, + extensions: argConfig.extensions && toObjMap(argConfig.extensions), + astNode: argConfig.astNode + })); + } + + toConfig() { + return { + name: this.name, + description: this.description, + locations: this.locations, + args: argsToArgsConfig(this.args), + isRepeatable: this.isRepeatable, + extensions: this.extensions, + astNode: this.astNode + }; + } + + toString() { + return '@' + this.name; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLDirective'; + } + +} +defineToJSON(GraphQLDirective); + +/** + * Used to conditionally include fields or fragments. + */ +export const GraphQLIncludeDirective = new GraphQLDirective({ + name: 'include', + description: 'Directs the executor to include this field or fragment only when the `if` argument is true.', + locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT], + args: { + if: { + type: GraphQLNonNull(GraphQLBoolean), + description: 'Included when true.' + } + } +}); +/** + * Used to conditionally skip (exclude) fields or fragments. + */ + +export const GraphQLSkipDirective = new GraphQLDirective({ + name: 'skip', + description: 'Directs the executor to skip this field or fragment when the `if` argument is true.', + locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT], + args: { + if: { + type: GraphQLNonNull(GraphQLBoolean), + description: 'Skipped when true.' + } + } +}); +/** + * Constant string used for default reason for a deprecation. + */ + +export const DEFAULT_DEPRECATION_REASON = 'No longer supported'; +/** + * Used to declare element of a GraphQL schema as deprecated. + */ + +export const GraphQLDeprecatedDirective = new GraphQLDirective({ + name: 'deprecated', + description: 'Marks an element of a GraphQL schema as no longer supported.', + locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.ENUM_VALUE], + args: { + reason: { + type: GraphQLString, + description: 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).', + defaultValue: DEFAULT_DEPRECATION_REASON + } + } +}); +/** + * The full list of specified directives. + */ + +export const specifiedDirectives = Object.freeze([GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective]); +export function isSpecifiedDirective(directive) { + return specifiedDirectives.some(({ + name + }) => name === directive.name); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9c82043323fc0bedbcef878efd5f57ac474a167a.ts b/bundler/tests/.cache/deno/9c82043323fc0bedbcef878efd5f57ac474a167a.ts new file mode 100644 index 00000000000..183c746e22d --- /dev/null +++ b/bundler/tests/.cache/deno/9c82043323fc0bedbcef878efd5f57ac474a167a.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema/json.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { bool, float, int, nil } from "../type/mod.ts"; +import { failsafe } from "./failsafe.ts"; + +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +export const json = new Schema({ + implicit: [nil, bool, int, float], + include: [failsafe], +}); diff --git a/bundler/tests/.cache/deno/9c9b37ee49588ac69071cc12105286e561114082.ts b/bundler/tests/.cache/deno/9c9b37ee49588ac69071cc12105286e561114082.ts new file mode 100644 index 00000000000..d9718de7d06 --- /dev/null +++ b/bundler/tests/.cache/deno/9c9b37ee49588ac69071cc12105286e561114082.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isJSON.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type JSONOptions = { + allowPrimitives?: boolean; +}; + +/** + * @ignore + */ +const defaultJSONOptions = { + allowPrimitives: false, +}; + +export const isJSON = (str: string, options?: JSONOptions) => { + assertString(str); + + try { + options = { ...defaultJSONOptions, ...options }; + let primitives: Array = []; + if (options.allowPrimitives) { + primitives = [null, false, true]; + } + + const obj = JSON.parse(str); + return primitives.includes(obj) || (!!obj && typeof obj === 'object'); + } catch (e) { + /* ignore */ + } + return false; +}; diff --git a/bundler/tests/.cache/deno/9c9e6d78179d2bb95ebbb9a342dccfbab2126bda.ts b/bundler/tests/.cache/deno/9c9e6d78179d2bb95ebbb9a342dccfbab2126bda.ts new file mode 100644 index 00000000000..1f6a5d13fc5 --- /dev/null +++ b/bundler/tests/.cache/deno/9c9e6d78179d2bb95ebbb9a342dccfbab2126bda.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema/mod.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export { core as CORE_SCHEMA } from "./core.ts"; +export { def as DEFAULT_SCHEMA } from "./default.ts"; +export { failsafe as FAILSAFE_SCHEMA } from "./failsafe.ts"; +export { json as JSON_SCHEMA } from "./json.ts"; diff --git a/bundler/tests/.cache/deno/9cc8d5abc567d953176a286c2b3f91548ed40f0c.ts b/bundler/tests/.cache/deno/9cc8d5abc567d953176a286c2b3f91548ed40f0c.ts new file mode 100644 index 00000000000..f7aaf57dead --- /dev/null +++ b/bundler/tests/.cache/deno/9cc8d5abc567d953176a286c2b3f91548ed40f0c.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_dropLast.js + + +import take from '../take.js'; + +export default function dropLast(n, xs) { + return take(n < xs.length ? xs.length - n : 0, xs); +} diff --git a/bundler/tests/.cache/deno/9cd9b64ab6e8c7cf1faad4e63c46c2428391105d.ts b/bundler/tests/.cache/deno/9cd9b64ab6e8c7cf1faad4e63c46c2428391105d.ts new file mode 100644 index 00000000000..358df63bb07 --- /dev/null +++ b/bundler/tests/.cache/deno/9cd9b64ab6e8c7cf1faad4e63c46c2428391105d.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case/headerCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function headerCase(value: string, locale?: string): string { + return normalCase(value, locale, "-").replace(/^.|-./g, function ( + m: string, + ): string { + return upperCase(m, locale); + }); +} diff --git a/bundler/tests/.cache/deno/9d2a1bc97acfa3d69ad0b0475c6239291fd39ca0.ts b/bundler/tests/.cache/deno/9d2a1bc97acfa3d69ad0b0475c6239291fd39ca0.ts new file mode 100644 index 00000000000..bc1064a53e0 --- /dev/null +++ b/bundler/tests/.cache/deno/9d2a1bc97acfa3d69ad0b0475c6239291fd39ca0.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/without.js + + +import _includes from './internal/_includes.js'; +import _curry2 from './internal/_curry2.js'; +import flip from './flip.js'; +import reject from './reject.js'; + + +/** + * Returns a new list without values in the first argument. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [a] -> [a] -> [a] + * @param {Array} list1 The values to be removed from `list2`. + * @param {Array} list2 The array to remove values from. + * @return {Array} The new array without values in `list1`. + * @see R.transduce, R.difference, R.remove + * @example + * + * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4] + */ +var without = _curry2(function(xs, list) { + return reject(flip(_includes)(xs), list); +}); +export default without; diff --git a/bundler/tests/.cache/deno/9d2d497b9e6ca45db50ecdf91e329bf9b7213822.ts b/bundler/tests/.cache/deno/9d2d497b9e6ca45db50ecdf91e329bf9b7213822.ts new file mode 100644 index 00000000000..4d75fb9b59b --- /dev/null +++ b/bundler/tests/.cache/deno/9d2d497b9e6ca45db50ecdf91e329bf9b7213822.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/apply.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Applies function `fn` to the argument list `args`. This is useful for + * creating a fixed-arity function from a variadic function. `fn` should be a + * bound function if context is significant. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> a) -> [*] -> a + * @param {Function} fn The function which will be called with `args` + * @param {Array} args The arguments to call `fn` with + * @return {*} result The result, equivalent to `fn(...args)` + * @see R.call, R.unapply + * @example + * + * const nums = [1, 2, 3, -99, 42, 6, 7]; + * R.apply(Math.max, nums); //=> 42 + * @symb R.apply(f, [a, b, c]) = f(a, b, c) + */ +var apply = _curry2(function apply(fn, args) { + return fn.apply(this, args); +}); +export default apply; diff --git a/bundler/tests/.cache/deno/9d6e3c83a4d819014cc598e48cb57b1d54598e41.ts b/bundler/tests/.cache/deno/9d6e3c83a4d819014cc598e48cb57b1d54598e41.ts new file mode 100644 index 00000000000..f05ecb2757e --- /dev/null +++ b/bundler/tests/.cache/deno/9d6e3c83a4d819014cc598e48cb57b1d54598e41.ts @@ -0,0 +1,279 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/app.ts + + +import type { HandlerFunc, MiddlewareFunc, Renderer } from "./types.ts"; +import type { + HTTPOptions, + HTTPSOptions, + Server, +} from "./vendor/https/deno.land/std/http/server.ts"; + +import { serve, serveTLS } from "./vendor/https/deno.land/std/http/server.ts"; +import { join } from "./vendor/https/deno.land/std/path/mod.ts"; +import { yellow } from "./vendor/https/deno.land/std/fmt/colors.ts"; +import { Context } from "./context.ts"; +import { Router } from "./router.ts"; +import { Group } from "./group.ts"; +import { + createHttpExceptionBody, + HttpException, + InternalServerErrorException, +} from "./http_exception.ts"; + +export function NotImplemented(): Error { + return new Error("Not Implemented"); +} + +/** + * Hello World. + * + * const app = new Application(); + * + * app + * .get("/hello", (c) => { + * return "Hello, Abc!"; + * }) + * .start({ port: 8080 }); + */ +export class Application { + server: Server | undefined; + renderer: Renderer | undefined; + router = new Router(); + middleware: MiddlewareFunc[] = []; + premiddleware: MiddlewareFunc[] = []; + + #process: Promise | undefined; + + /** Unstable */ + get θprocess(): Promise | undefined { + console.warn(yellow("`Application#θprocess` is UNSTABLE!")); + return this.#process; + } + + #start = async (s: Server): Promise => { + this.server = s; + for await (const req of this.server) { + const c = new Context({ + r: req, + app: this, + }); + let h: HandlerFunc; + + if (this.premiddleware.length === 0) { + h = this.router.find(req.method, c); + h = this.#applyMiddleware(h, ...this.middleware); + } else { + h = (c) => { + h = this.router.find(req.method, c); + h = this.#applyMiddleware(h, ...this.middleware); + return h(c); + }; + h = this.#applyMiddleware(h, ...this.premiddleware); + } + + this.#transformResult(c, h).then((): void => { + req.respond(c.response).catch(() => {}); + }); + } + }; + + #applyMiddleware = (h: HandlerFunc, ...m: MiddlewareFunc[]): HandlerFunc => { + for (let i = m.length - 1; i >= 0; --i) { + h = m[i](h); + } + + return h; + }; + + /** + * Start an HTTP server. + * + * app.start({ port: 8080 }); + */ + start(sc: HTTPOptions): void { + this.#process = this.#start(serve(sc)); + } + + /** Start an HTTPS server. */ + startTLS(sc: HTTPSOptions): void { + this.#process = this.#start(serveTLS(sc)); + } + + /** + * Stop the server immediately. + * + * await app.close(); + */ + async close(): Promise { + if (this.server) { + this.server.close(); + } + await this.#process; + } + + /** `pre` adds middleware which is run before router. */ + pre(...m: MiddlewareFunc[]): Application { + this.premiddleware.push(...m); + return this; + } + + /** `use` adds middleware which is run after router. */ + use(...m: MiddlewareFunc[]): Application { + this.middleware.push(...m); + return this; + } + + connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("CONNECT", path, h, ...m); + } + + delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("DELETE", path, h, ...m); + } + + get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("GET", path, h, ...m); + } + + head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("HEAD", path, h, ...m); + } + + options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("OPTIONS", path, h, ...m); + } + + patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("PATCH", path, h, ...m); + } + + post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("POST", path, h, ...m); + } + + put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("PUT", path, h, ...m); + } + + trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + return this.add("TRACE", path, h, ...m); + } + + any(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): Application { + const methods = [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + "TRACE", + ]; + for (const method of methods) { + this.add(method, path, h, ...m); + } + return this; + } + + match( + methods: string[], + path: string, + h: HandlerFunc, + ...m: MiddlewareFunc[] + ): Application { + for (const method of methods) { + this.add(method, path, h, ...m); + } + return this; + } + + add( + method: string, + path: string, + handler: HandlerFunc, + ...middleware: MiddlewareFunc[] + ): Application { + this.router.add(method, path, (c: Context): unknown => { + let h = handler; + for (const m of middleware) { + h = m(h); + } + return h(c); + }); + return this; + } + + /** `group` creates a new router group with prefix and optional group level middleware. */ + group(prefix: string, ...m: MiddlewareFunc[]): Group { + const g = new Group({ app: this, prefix }); + g.use(...m); + return g; + } + + /** + * Register a new route with path prefix to serve static files from the provided root directory. + * For example, a request to `/static/js/main.js` will fetch and serve `assets/js/main.js` file. + * + * app.static("/static", "assets"); + */ + static(prefix: string, root: string, ...m: MiddlewareFunc[]): Application { + if (prefix[prefix.length - 1] === "/") { + prefix = prefix.slice(0, prefix.length - 1); + } + const h: HandlerFunc = (c) => { + const filepath = c.path.substr(prefix.length); + return c.file(join(root, filepath)); + }; + return this.get(`${prefix}/*`, h, ...m); + } + + /** + * Register a new route with path to serve a static file with optional route-level middleware. + * + * app.file("/", "public/index.html"); + */ + file(path: string, filepath: string, ...m: MiddlewareFunc[]): Application { + return this.get(path, (c) => c.file(filepath), ...m); + } + + #transformResult = async (c: Context, h: HandlerFunc): Promise => { + let result: unknown; + try { + result = await h(c); + } catch (e) { + if (e instanceof HttpException) { + result = c.json( + typeof e.response === "object" + ? e.response + : createHttpExceptionBody(e.response, undefined, e.status), + e.status, + ); + } else { + console.log(e); + e = new InternalServerErrorException(e.message); + result = c.json( + (e as InternalServerErrorException).response, + (e as InternalServerErrorException).status, + ); + } + } + if (c.response.status == undefined) { + switch (typeof result) { + case "object": + if (result instanceof Uint8Array) { + c.blob(result); + } else { + c.json(result as Record); + } + break; + case "string": + /^\s* { + const distanceDiff = optionsByDistance[a] - optionsByDistance[b]; + return distanceDiff !== 0 ? distanceDiff : a.localeCompare(b); + }); +} +/** + * Computes the lexical distance between strings A and B. + * + * The "distance" between two strings is given by counting the minimum number + * of edits needed to transform string A into string B. An edit can be an + * insertion, deletion, or substitution of a single character, or a swap of two + * adjacent characters. + * + * Includes a custom alteration from Damerau-Levenshtein to treat case changes + * as a single edit which helps identify mis-cased values with an edit distance + * of 1. + * + * This distance can be useful for detecting typos in input or sorting + */ + +class LexicalDistance { + constructor(input) { + this._input = input; + this._inputLowerCase = input.toLowerCase(); + this._inputArray = stringToArray(this._inputLowerCase); + this._rows = [new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0)]; + } + + measure(option, threshold) { + if (this._input === option) { + return 0; + } + + const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit + + if (this._inputLowerCase === optionLowerCase) { + return 1; + } + + let a = stringToArray(optionLowerCase); + let b = this._inputArray; + + if (a.length < b.length) { + const tmp = a; + a = b; + b = tmp; + } + + const aLength = a.length; + const bLength = b.length; + + if (aLength - bLength > threshold) { + return undefined; + } + + const rows = this._rows; + + for (let j = 0; j <= bLength; j++) { + rows[0][j] = j; + } + + for (let i = 1; i <= aLength; i++) { + const upRow = rows[(i - 1) % 3]; + const currentRow = rows[i % 3]; + let smallestCell = currentRow[0] = i; + + for (let j = 1; j <= bLength; j++) { + const cost = a[i - 1] === b[j - 1] ? 0 : 1; + let currentCell = Math.min(upRow[j] + 1, // delete + currentRow[j - 1] + 1, // insert + upRow[j - 1] + cost // substitute + ); + + if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { + // transposition + const doubleDiagonalCell = rows[(i - 2) % 3][j - 2]; + currentCell = Math.min(currentCell, doubleDiagonalCell + 1); + } + + if (currentCell < smallestCell) { + smallestCell = currentCell; + } + + currentRow[j] = currentCell; + } // Early exit, since distance can't go smaller than smallest element of the previous row. + + + if (smallestCell > threshold) { + return undefined; + } + } + + const distance = rows[aLength % 3][bLength]; + return distance <= threshold ? distance : undefined; + } + +} + +function stringToArray(str) { + const strLength = str.length; + const array = new Array(strLength); + + for (let i = 0; i < strLength; ++i) { + array[i] = str.charCodeAt(i); + } + + return array; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9da7e4179d6ebcf72f22a4885758a4a7c7a68367.ts b/bundler/tests/.cache/deno/9da7e4179d6ebcf72f22a4885758a4a7c7a68367.ts new file mode 100644 index 00000000000..2457a3cfd19 --- /dev/null +++ b/bundler/tests/.cache/deno/9da7e4179d6ebcf72f22a4885758a4a7c7a68367.ts @@ -0,0 +1,193 @@ +// Loaded from https://deno.land/std@0.84.0/bytes/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from source. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function indexOf( + source: Uint8Array, + pat: Uint8Array, + start = 0, +): number { + if (start >= source.length) { + return -1; + } + if (start < 0) { + start = 0; + } + const s = pat[0]; + for (let i = start; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from source. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + * @param start the index to start looking in the source + */ +export function lastIndexOf( + source: Uint8Array, + pat: Uint8Array, + start = source.length - 1, +): number { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = pat[pat.length - 1]; + for (let i = start; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param a first array to check equality + * @param b second array to check equality + */ +export function equals(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + for (let i = 0; i < b.length; i++) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source source array + * @param prefix prefix array to check in source + */ +export function startsWith(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function endsWith(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + * @throws `RangeError` When count is negative + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new RangeError("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copy(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copy(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate multiple binary arrays and return new one. + * @param buf binary arrays to concatenate + */ +export function concat(...buf: Uint8Array[]): Uint8Array { + let length = 0; + for (const b of buf) { + length += b.length; + } + + const output = new Uint8Array(length); + let index = 0; + for (const b of buf) { + output.set(b, index); + index += b.length; + } + + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return indexOf(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/9e02da7d9a12d1b73a86ce9548a7dbeca8611eef.ts b/bundler/tests/.cache/deno/9e02da7d9a12d1b73a86ce9548a7dbeca8611eef.ts new file mode 100644 index 00000000000..e6d0c162d01 --- /dev/null +++ b/bundler/tests/.cache/deno/9e02da7d9a12d1b73a86ce9548a7dbeca8611eef.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISIN.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; + +export const isISIN = (str: string) => { + assertString(str); + if (!isin.test(str)) { + return false; + } + + const checksumStr = str.replace(/[A-Z]/g, (character) => + // @ts-ignore allowing typedoc to build + parseInt(character, 36) + ); + + let sum = 0; + let digit; + let tmpNum; + let shouldDouble = true; + for (let i = checksumStr.length - 2; i >= 0; i--) { + digit = checksumStr.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + if (shouldDouble) { + tmpNum *= 2; + if (tmpNum >= 10) { + sum += tmpNum + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + shouldDouble = !shouldDouble; + } + + return parseInt(str.substr(str.length - 1), 10) === (10000 - sum) % 10; +}; diff --git a/bundler/tests/.cache/deno/9e3be7f995d1941f802cf870ffe35abf0fd95880.ts b/bundler/tests/.cache/deno/9e3be7f995d1941f802cf870ffe35abf0fd95880.ts new file mode 100644 index 00000000000..778279021e8 --- /dev/null +++ b/bundler/tests/.cache/deno/9e3be7f995d1941f802cf870ffe35abf0fd95880.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/sodium/basic.ts + + +// Copyright 2020-present the denosaurs team. All rights reserved. MIT license. + +import type { Sodium } from "./basic_types.ts"; +import sodium from "./dist/browsers/sodium.js"; + +export default sodium as Sodium; + +export * from "./basic_types.ts"; diff --git a/bundler/tests/.cache/deno/9ed30952b4eec3c021dc83fa5a602ff0d6bb4d2d.ts b/bundler/tests/.cache/deno/9ed30952b4eec3c021dc83fa5a602ff0d6bb4d2d.ts new file mode 100644 index 00000000000..7fc6dc12744 --- /dev/null +++ b/bundler/tests/.cache/deno/9ed30952b4eec3c021dc83fa5a602ff0d6bb4d2d.ts @@ -0,0 +1,139 @@ +// Loaded from https://deno.land/x/base64/base.ts + + +function getLengths(b64: string): [number, number] { + const len: number = b64.length; + + // if (len % 4 > 0) { + // throw new TypeError("Invalid string. Length must be a multiple of 4"); + // } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + let validLen: number = b64.indexOf("="); + + if (validLen === -1) { + validLen = len; + } + + const placeHoldersLen: number = validLen === len ? 0 : 4 - (validLen % 4); + + return [validLen, placeHoldersLen]; +} + +export function init( + lookup: string[], + revLookup: number[], + urlsafe: boolean = false, +) { + function _byteLength(validLen: number, placeHoldersLen: number): number { + return Math.floor(((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen); + } + + function tripletToBase64(num: number): string { + return ( + lookup[(num >> 18) & 0x3f] + + lookup[(num >> 12) & 0x3f] + + lookup[(num >> 6) & 0x3f] + + lookup[num & 0x3f] + ); + } + + function encodeChunk(buf: Uint8Array, start: number, end: number): string { + const out: string[] = new Array((end - start) / 3); + + for (let i: number = start, curTriplet: number = 0; i < end; i += 3) { + out[curTriplet++] = tripletToBase64( + (buf[i] << 16) + (buf[i + 1] << 8) + buf[i + 2], + ); + } + + return out.join(""); + } + + return { + // base64 is 4/3 + up to two characters of the original data + byteLength(b64: string): number { + return _byteLength.apply(null, getLengths(b64)); + }, + toUint8Array(b64: string): Uint8Array { + const [validLen, placeHoldersLen]: number[] = getLengths(b64); + + const buf = new Uint8Array(_byteLength(validLen, placeHoldersLen)); + + // If there are placeholders, only get up to the last complete 4 chars + const len: number = placeHoldersLen ? validLen - 4 : validLen; + + let tmp: number; + let curByte: number = 0; + let i: number; + + for (i = 0; i < len; i += 4) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)]; + buf[curByte++] = (tmp >> 16) & 0xff; + buf[curByte++] = (tmp >> 8) & 0xff; + buf[curByte++] = tmp & 0xff; + } + + if (placeHoldersLen === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4); + buf[curByte++] = tmp & 0xff; + } else if (placeHoldersLen === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2); + buf[curByte++] = (tmp >> 8) & 0xff; + buf[curByte++] = tmp & 0xff; + } + + return buf; + }, + fromUint8Array(buf: Uint8Array): string { + const maxChunkLength: number = 16383; // Must be multiple of 3 + + const len: number = buf.length; + + const extraBytes: number = len % 3; // If we have 1 byte left, pad 2 bytes + + const len2: number = len - extraBytes; + + const parts: string[] = new Array( + Math.ceil(len2 / maxChunkLength) + (extraBytes ? 1 : 0), + ); + + let curChunk: number = 0; + let chunkEnd: number; + + // Go through the array every three bytes, we'll deal with trailing stuff later + for (let i: number = 0; i < len2; i += maxChunkLength) { + chunkEnd = i + maxChunkLength; + parts[curChunk++] = encodeChunk( + buf, + i, + chunkEnd > len2 ? len2 : chunkEnd, + ); + } + + let tmp: number; + + // Pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = buf[len2]; + parts[curChunk] = lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3f]; + if (!urlsafe) parts[curChunk] += "=="; + } else if (extraBytes === 2) { + tmp = (buf[len2] << 8) | (buf[len2 + 1] & 0xff); + parts[curChunk] = lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3f] + + lookup[(tmp << 2) & 0x3f]; + if (!urlsafe) parts[curChunk] += "="; + } + + return parts.join(""); + }, + }; +} diff --git a/bundler/tests/.cache/deno/9f5cdcfcb2729cc827f25c504e9bc61290f17beb.ts b/bundler/tests/.cache/deno/9f5cdcfcb2729cc827f25c504e9bc61290f17beb.ts new file mode 100644 index 00000000000..818d23c2c33 --- /dev/null +++ b/bundler/tests/.cache/deno/9f5cdcfcb2729cc827f25c504e9bc61290f17beb.ts @@ -0,0 +1,991 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/model.ts + + +import type { + Operator, + OrderByClauses, + OrderDirection, + QueryBuilder, + QueryDescription, + QueryType, +} from "./query-builder.ts"; +import type { Database } from "./database.ts"; +import type { PivotModelSchema } from "./model-pivot.ts"; +import { camelCase } from "../deps.ts"; +import { + DataTypes, + FieldAlias, + FieldOptions, + FieldProps, + FieldType, + FieldTypeString, + FieldValue, + Values, +} from "./data-types.ts"; + +/** Represents a Model class, not an instance. */ +export type ModelSchema = typeof Model; + +export type ModelFields = { [key: string]: FieldType }; +export type ModelDefaults = { + [field: string]: FieldValue | (() => FieldValue); +}; +export type ModelPivotModels = { [modelName: string]: PivotModelSchema }; +export type FieldMatchingTable = { [clientField: string]: string }; + +export type ModelOptions = { + queryBuilder: QueryBuilder; + database: Database; +}; + +export type AggregationResult = Model & { + avg?: number; + count?: number; + max?: number; + min?: number; + sum?: number; +}; + +export type ModelEventType = + | "creating" + | "created" + | "updating" + | "updated" + | "deleting" + | "deleted"; + +export type ModelEventListenerWithModel = (model: Model) => void; +export type ModelEventListenerWithoutModel = (model?: Model) => void; +export type ModelEventListener = + | ModelEventListenerWithoutModel + | ModelEventListenerWithModel; + +export type ModelEventListeners = { + [eventType in ModelEventType]?: ModelEventListener[]; +}; + +/** Model that can be used with a `Database`. */ +export class Model { + [attribute: string]: FieldValue | Function + + /** Table name as it should be saved in the database. */ + static table = ""; + + /** Should this model have `created_at` and `updated_at` fields by default. */ + static timestamps = false; + + /** Model fields. */ + static fields: ModelFields = {}; + + /** Default values for the model fields. */ + static defaults: ModelDefaults = {}; + + /** Pivot table to use for a given model. */ + static pivot: ModelPivotModels = {}; + + /** If the model has been created in the database. */ + private static _isCreatedInDatabase: boolean = false; + + /** Query builder instance. */ + private static _queryBuilder: QueryBuilder; + + /** Database which this model will be attached to. */ + private static _database: Database; + + /** Model primary key. Manually found through `_findPrimaryKey()`. */ + private static _primaryKey: string; + + /** Model field matching, from database to client and vice versa. */ + private static _fieldMatching: { + toDatabase: FieldMatchingTable; + toClient: FieldMatchingTable; + } = { + toDatabase: {}, + toClient: {}, + }; + + /** Model current query being built. */ + private static _currentQuery: QueryBuilder; + + /** Options this model was initialized with. */ + private static _options: ModelOptions; + + /** Attached event listeners. */ + private static _listeners: ModelEventListeners = {}; + + /** Link a model to a database. Should not be called from a child model. */ + static _link(options: ModelOptions) { + this._options = options; + this._database = options.database; + this._queryBuilder = options.queryBuilder; + + this._fieldMatching = this._database._computeModelFieldMatchings( + this.name, + this.fields, + this.timestamps, + ); + + this._currentQuery = this._queryBuilder.queryForSchema(this); + this._primaryKey = this._findPrimaryKey(); + } + + /** Drop a model in the database. */ + static async drop() { + const dropQuery = this._options.queryBuilder + .queryForSchema(this) + .table(this.table) + .dropIfExists() + .toDescription(); + + await this._options.database.query(dropQuery); + + this._isCreatedInDatabase = false; + } + + /** Create a model in the database. Should not be called from a child model. */ + static async createTable() { + if (this._isCreatedInDatabase) { + throw new Error("This model has already been initialized."); + } + + const createQuery = this._options.queryBuilder + .queryForSchema(this) + .table(this.table) + .createTable( + this.formatFieldToDatabase(this.fields) as ModelFields, + this.formatFieldToDatabase(this.defaults) as ModelDefaults, + { + withTimestamps: this.timestamps, + ifNotExists: true, + }, + ) + .toDescription(); + + await this._options.database.query(createQuery); + + this._isCreatedInDatabase = true; + } + + /** Manually find the primary field by going through the schema fields. */ + private static _findPrimaryField(): FieldOptions { + const field = Object.entries(this.fields).find( + ([_, fieldType]) => typeof fieldType === "object" && fieldType.primaryKey, + ); + + return { + name: field ? (this.formatFieldToDatabase(field[0]) as string) : "", + type: field ? field[1] : DataTypes.INTEGER, + defaultValue: 0, + }; + } + + /** Manually find the primary key by going through the schema fields. */ + private static _findPrimaryKey(): string { + return this._findPrimaryField().name; + } + + /** Return the model computed primary key. */ + static getComputedPrimaryKey(): string { + if (!this._primaryKey) { + this._primaryKey = this._findPrimaryKey(); + } + + return this._primaryKey; + } + + /** Return the field type of the primary key. */ + static getComputedPrimaryType(): FieldTypeString { + const field = this._findPrimaryField(); + + return typeof field.type === "object" + ? (field.type as any).type + : field.type; + } + + /** Return the field properties of the primary key */ + static getComputedPrimaryProps(): FieldProps { + const field = this._findPrimaryField(); + + return typeof field === "object" ? field.type : {}; + } + + /** Build the current query and run it on the associated database. */ + private static async _runQuery(query: QueryDescription) { + this._currentQuery = this._queryBuilder.queryForSchema(this); + + if (query.type) { + this._runEventListeners(query.type); + } + + const results = await this._database.query(query); + + if (query.type) { + this._runEventListeners(query.type, results); + } + + return results; + } + + /** Format a field or an object of fields, following a field matching table. + * Defaulting to `defaultCase` or `field` otherwise. */ + private static _formatField( + fieldMatching: FieldMatchingTable, + field: string | { [fieldName: string]: any }, + defaultCase?: (field: string) => string, + ): string | { [fieldName: string]: any } { + if (typeof field !== "string") { + return Object.entries(field).reduce((prev: any, [fieldName, value]) => { + prev[this._formatField(fieldMatching, fieldName) as string] = value; + return prev; + }, {}) as { [fieldName: string]: any }; + } + + if (field in fieldMatching) { + return fieldMatching[field]; + } + + return defaultCase ? defaultCase(field) : field; + } + + /** Format field or an object of fields from client to database. */ + static formatFieldToDatabase(field: string | Object) { + return this._formatField(this._fieldMatching.toDatabase, field); + } + + /** Format field or an object of fields from database to client. */ + static formatFieldToClient(field: string | Object) { + return this._formatField(this._fieldMatching.toClient, field, camelCase); + } + + /** Add an event listener for a specific operation/hook. + * + * Flight.on('created', (model) => console.log('New model:', model)); + */ + static on( + this: T, + eventType: ModelEventType, + callback: ModelEventListener, + ) { + if (!(eventType in this._listeners)) { + this._listeners[eventType] = []; + } + + this._listeners[eventType]!.push(callback); + + return this; + } + + /** Alias for `Model.on`, add an event listener for a specific operation/hook. + * + * Flight.addEventListener('created', (model) => console.log('New model:', model)); + */ + static addEventListener( + this: T, + eventType: ModelEventType, + callback: ModelEventListener, + ) { + return this.on(eventType, callback); + } + + static removeEventListener( + eventType: ModelEventType, + callback: ModelEventListener, + ) { + if (!(eventType in this._listeners)) { + throw new Error( + `There is no event listener for ${eventType}. You might be trying to remove a listener that you haven't added with Model.on('${eventType}', ...).`, + ); + } + + this._listeners[eventType] = this._listeners[eventType]!.filter(( + listener, + ) => listener !== callback); + + return this; + } + + /** Run event listeners given a query type and results. */ + private static _runEventListeners( + queryType: QueryType, + instances?: Model | Model[], + ) { + // -ing => present, -ed => past + const isPastEvent = !!instances; + + let eventType: ModelEventType; + switch (queryType) { + case "insert": + eventType = isPastEvent ? "created" : "creating"; + break; + + case "update": + eventType = isPastEvent ? "updated" : "updating"; + break; + + case "delete": + eventType = isPastEvent ? "deleted" : "deleting"; + break; + + default: + return; + } + + const listeners = this._listeners[eventType]; + + if (!listeners) { + return; + } + + for (const listener of listeners) { + if (instances) { + if (Array.isArray(instances)) { + if (instances.length > 0) { + instances.forEach(listener); + } else { + (listener as ModelEventListenerWithoutModel)(); + } + } else { + listener(instances); + } + } else { + (listener as ModelEventListenerWithoutModel)(); + } + } + } + + /** Return the table name followed by a field name. Can also rename a field using `nameAs`. + * + * Flight.field("departure") => "flights.departure" + * + * Flight.field("id", "flight_id") => { flight_id: "flights.id" } + */ + static field(field: string): string; + static field(field: string, nameAs: string): FieldAlias; + static field(field: string, nameAs?: string): string | FieldAlias { + const fullField = this.formatFieldToDatabase( + `${this.table}.${field}`, + ) as string; + + if (nameAs) { + return { [nameAs]: fullField }; + } + + return fullField; + } + + /** Run the current query. */ + static async get() { + return this._runQuery( + this._currentQuery.table(this.table).get().toDescription(), + ); + } + + /** Fetch all the model records. + * + * await Flight.all(); + * + * await Flight.select("id").all(); + */ + static async all() { + return this.get() as Promise; + } + + /** Indicate which fields should be returned/selected from the query. + * + * await Flight.select("id").get(); + * + * await Flight.select("id", "destination").get(); + */ + static select( + this: T, + ...fields: (string | FieldAlias)[] + ) { + this._currentQuery.select( + ...fields.map((field) => this.formatFieldToDatabase(field)), + ); + return this; + } + + /** Create one or multiple records in the current model. + * + * await Flight.create({ departure: "Paris", destination: "Tokyo" }); + * + * await Flight.create([{ ... }, { ... }]); + */ + static async create(values: Values): Promise; + static async create(values: Values[]): Promise; + static async create(values: Values | Values[]) { + const insertions = Array.isArray(values) ? values : [values]; + + const results = await this._runQuery( + this._currentQuery.table(this.table).create( + insertions.map((field) => + this.formatFieldToDatabase(field) + ) as Values[], + ).toDescription(), + ); + + if (!Array.isArray(values) && Array.isArray(results)) { + return results[0]; + } + + return results; + } + + /** Find one or multiple records based on the model primary key. + * + * await Flight.find("1"); + */ + static async find(idOrIds: FieldValue): Promise; + static async find(idOrIds: FieldValue[]): Promise; + static async find(idOrIds: FieldValue | FieldValue[]) { + const results = await this._runQuery( + this._currentQuery + .table(this.table) + .find( + this.getComputedPrimaryKey(), + Array.isArray(idOrIds) ? idOrIds : [idOrIds], + ) + .toDescription(), + ); + + return Array.isArray(idOrIds) ? results : (results as Model[])[0]; + } + + /** Order query results based on a field name and an optional direction. + * + * await Flight.orderBy("departure").all(); + * + * await Flight.orderBy("departure", "desc").all(); + * + * await Flight.orderBy({ departure: "desc", destination: "asc" }).all(); + */ + static orderBy( + this: T, + fieldOrFields: string | OrderByClauses, + orderDirection: OrderDirection = "asc", + ) { + if (typeof fieldOrFields === "string") { + this._currentQuery.orderBy( + this.formatFieldToDatabase(fieldOrFields) as string, + orderDirection, + ); + } else { + for ( + const [field, orderDirectionField] of Object.entries( + fieldOrFields, + ) + ) { + this._currentQuery.orderBy( + this.formatFieldToDatabase(field) as string, + orderDirectionField, + ); + } + } + + return this; + } + + /** Group rows by a given field. + * + * await Flight.groupBy('departure').all(); + */ + static groupBy(this: T, field: string) { + this._currentQuery.groupBy(this.formatFieldToDatabase(field) as string); + return this; + } + + /** Similar to `limit`, limit the number of results returned from the query. + * + * await Flight.take(10).get(); + */ + static take(this: T, limit: number) { + return this.limit(limit); + } + + /** Limit the number of results returned from the query. + * + * await Flight.limit(10).get(); + */ + static limit(this: T, limit: number) { + this._currentQuery.limit(limit); + return this; + } + + /** Return the first record that matches the current query. + * + * await Flight.where("id", ">", "1").first(); + */ + static async first() { + this.take(1); + const results = await this.get(); + return (results as Model[])[0]; + } + + /** Skip n values in the results. + * + * await Flight.offset(10).get(); + * + * await Flight.offset(10).limit(2).get(); + */ + static offset(this: T, offset: number) { + this._currentQuery.offset(offset); + return this; + } + + /** Similar to `offset`, skip n values in the results. + * + * await Flight.skip(10).get(); + * + * await Flight.skip(10).take(2).get(); + */ + static skip(this: T, offset: number) { + return this.offset(offset); + } + + /** Add a `where` clause to your query. + * + * await Flight.where("id", "1").get(); + * + * await Flight.where("id", ">", "1").get(); + * + * await Flight.where({ id: "1", departure: "Paris" }).get(); + */ + static where( + this: T, + fieldOrFields: string | Values, + operatorOrFieldValue?: Operator | FieldValue, + fieldValue?: FieldValue, + ) { + if (typeof fieldOrFields === "string") { + const whereOperator: Operator = typeof fieldValue !== "undefined" + ? (operatorOrFieldValue as Operator) + : "="; + + const whereValue: FieldValue = typeof fieldValue !== "undefined" + ? fieldValue + : (operatorOrFieldValue as FieldValue); + + if (whereValue !== undefined) { + this._currentQuery.where( + this.formatFieldToDatabase(fieldOrFields) as string, + whereOperator, + whereValue, + ); + } + } else { + // TODO(eveningkid): cannot do multiple where with different operators + // Need to find a great API for multiple where potentially with operators + // .where({ name: 'John', age: { moreThan: 19 } }) + // and then format it using Knex .andWhere(...) + + for (const [field, value] of Object.entries(fieldOrFields)) { + if (value === undefined) { + continue; + } + + this._currentQuery.where( + this.formatFieldToDatabase(field) as string, + "=", + value, + ); + } + } + + return this; + } + + /** Update one or multiple records. Also update `updated_at` if `timestamps` is `true`. + * + * await Flight.where("departure", "Dublin").update("departure", "Tokyo"); + * + * await Flight.where("departure", "Dublin").update({ destination: "Tokyo" }); + */ + static async update(fieldOrFields: string | Values, fieldValue?: FieldValue) { + let fieldsToUpdate: Values = {}; + + if (this.timestamps) { + fieldsToUpdate[ + this.formatFieldToDatabase("updated_at") as string + ] = new Date(); + } + + if (typeof fieldOrFields === "string") { + fieldsToUpdate[ + this.formatFieldToDatabase(fieldOrFields) as string + ] = fieldValue!; + } else { + fieldsToUpdate = { + ...fieldsToUpdate, + ...(this.formatFieldToDatabase(fieldOrFields) as { + [fieldName: string]: any; + }), + }; + } + + return this._runQuery( + this._currentQuery + .table(this.table) + .update(fieldsToUpdate) + .toDescription(), + ) as Promise; + } + + /** Delete a record by a primary key value. + * + * await Flight.deleteById("1"); + */ + static async deleteById(id: FieldValue) { + return this._runQuery( + this._currentQuery + .table(this.table) + .where(this.getComputedPrimaryKey(), "=", id) + .delete() + .toDescription(), + ); + } + + /** Delete selected records. + * + * await Flight.where("destination", "Paris").delete(); + */ + static async delete() { + return this._runQuery( + this._currentQuery.table(this.table).delete().toDescription(), + ); + } + + /** Join a table to the current query. + * + * await Flight.where( + * Flight.field("departure"), + * "Paris", + * ).join( + * Airport, + * Airport.field("id"), + * Flight.field("airportId"), + * ).get() + */ + static join( + this: T, + joinTable: ModelSchema, + originField: string, + targetField: string, + ) { + this._currentQuery.join( + joinTable.table, + joinTable.formatFieldToDatabase(originField) as string, + this.formatFieldToDatabase(targetField) as string, + ); + return this; + } + + /** Join a table with left outer statement to the current query. + * + * await Flight.where( + * Flight.field("departure"), + * "Paris", + * ).leftOuterJoin( + * Airport, + * Airport.field("id"), + * Flight.field("airportId"), + * ).get() + */ + static leftOuterJoin( + this: T, + joinTable: ModelSchema, + originField: string, + targetField: string, + ) { + this._currentQuery.leftOuterJoin( + joinTable.table, + joinTable.formatFieldToDatabase(originField) as string, + this.formatFieldToDatabase(targetField) as string, + ); + return this; + } + + /** Join a table with left statement to the current query. + * + * await Flight.where( + * Flight.field("departure"), + * "Paris", + * ).leftJoin( + * Airport, + * Airport.field("id"), + * Flight.field("airportId"), + * ).get() + */ + static leftJoin( + this: T, + joinTable: ModelSchema, + originField: string, + targetField: string, + ) { + this._currentQuery.leftJoin( + joinTable.table, + joinTable.formatFieldToDatabase(originField) as string, + this.formatFieldToDatabase(targetField) as string, + ); + return this; + } + + /** Count the number of records of a model or filtered by a field name. + * + * await Flight.count(); + * + * await Flight.where("destination", "Dublin").count(); + */ + static async count(field: string = "*") { + const value = await this._runQuery( + this._currentQuery + .table(this.table) + .count(this.formatFieldToDatabase(field) as string) + .toDescription(), + ); + + return (value as AggregationResult[])[0].count; + } + + /** Find the minimum value of a field from all the selected records. + * + * await Flight.min("flightDuration"); + */ + static async min(field: string) { + const value = await this._runQuery( + this._currentQuery + .table(this.table) + .min(this.formatFieldToDatabase(field) as string) + .toDescription(), + ); + + return (value as AggregationResult[])[0].min; + } + + /** Find the maximum value of a field from all the selected records. + * + * await Flight.max("flightDuration"); + */ + static async max(field: string) { + const value = await this._runQuery( + this._currentQuery + .table(this.table) + .max(this.formatFieldToDatabase(field) as string) + .toDescription(), + ); + + return (value as AggregationResult[])[0].max; + } + + /** Compute the sum of a field's values from all the selected records. + * + * await Flight.sum("flightDuration"); + */ + static async sum(field: string) { + const value = await this._runQuery( + this._currentQuery + .table(this.table) + .sum(this.formatFieldToDatabase(field) as string) + .toDescription(), + ); + + return (value as AggregationResult[])[0].sum; + } + + /** Compute the average value of a field's values from all the selected records. + * + * await Flight.avg("flightDuration"); + * + * await Flight.where("destination", "San Francisco").avg("flightDuration"); + */ + static async avg(field: string) { + const value = await this._runQuery( + this._currentQuery + .table(this.table) + .avg(this.formatFieldToDatabase(field) as string) + .toDescription(), + ); + + return (value as AggregationResult[])[0].avg; + } + + /** Find associated values for the given model for one-to-many and many-to-many relationships. + * + * class Airport { + * static flights() { + * return this.hasMany(Flight); + * } + * } + * + * Airport.where("id", "1").flights(); + */ + static hasMany( + this: T, + model: ModelSchema, + ): Promise { + const currentWhereValue = this._findCurrentQueryWhereClause(); + + if (model.name in this.pivot) { + const pivot = this.pivot[model.name]; + const pivotField = this.formatFieldToDatabase( + pivot._pivotsFields[this.name], + ) as string; + const pivotOtherModel = pivot._pivotsModels[model.name]; + const pivotOtherModelField = pivotOtherModel.formatFieldToDatabase( + pivot._pivotsFields[model.name], + ) as string; + + return pivot + .where(pivot.field(pivotField), currentWhereValue) + .join( + pivotOtherModel, + pivotOtherModel.field(pivotOtherModel.getComputedPrimaryKey()), + pivot.field(pivotOtherModelField), + ) + .get(); + } + + const foreignKeyName = this._findModelForeignKeyField(model); + this._currentQuery = this._queryBuilder.queryForSchema(this); + return model.where(foreignKeyName, currentWhereValue).all(); + } + + /** Find associated values for the given model for one-to-one and one-to-many relationships. */ + static async hasOne(this: T, model: ModelSchema) { + const currentWhereValue = this._findCurrentQueryWhereClause(); + const FKName = this._findModelForeignKeyField(model); + + if (!FKName) { + const currentModelFKName = this._findModelForeignKeyField(this, model); + const currentModelValue = await this.where( + this.getComputedPrimaryKey(), + currentWhereValue, + ).first(); + const currentModelFKValue = + currentModelValue[currentModelFKName] as FieldValue; + return model.where(model.getComputedPrimaryKey(), currentModelFKValue) + .first(); + } + + return model.where(FKName, currentWhereValue).first(); + } + + /** Look for the current query's where clause for this model's primary key. */ + private static _findCurrentQueryWhereClause() { + if (!this._currentQuery._query.wheres) { + throw new Error("The current query does not have any where clause."); + } + + const where = this._currentQuery._query.wheres.find((where) => { + return where.field === this.getComputedPrimaryKey(); + }); + + if (!where) { + throw new Error( + "The current query does not have any where clause for this model primary key.", + ); + } + + return where.value; + } + + /** Look for a `fieldName: Relationships.belongsTo(forModel)` field for a given `model`. */ + private static _findModelForeignKeyField( + model: ModelSchema, + forModel: ModelSchema = this, + ): string { + const modelFK: [string, FieldType] | undefined = Object.entries( + model.fields, + ).find(([, type]) => { + return typeof type === "object" + ? type.relationship?.model === forModel + : false; + }); + + if (!modelFK) { + return ""; + } + + return modelFK[0]; + } + + /** Return the instance current value for its primary key. */ + private _getCurrentPrimaryKey() { + const model = this.constructor as ModelSchema; + return (this as any)[model.getComputedPrimaryKey()] as string; + } + + /** Create a new record for the model. + * + * const flight = new Flight(); + * flight.departure = "Toronto"; + * flight.destination = "Paris"; + * await flight.save(); + */ + async save() { + const model = this.constructor as ModelSchema; + + const values: Values = {}; + for (const field of Object.keys(model.fields)) { + if (this.hasOwnProperty(field)) { + values[field] = (this as any)[field]; + } else if (model.defaults.hasOwnProperty(field)) { + const defaultValue = model.defaults[field]; + + if (typeof defaultValue === "function") { + values[field] = defaultValue(); + } else { + values[field] = defaultValue; + } + } + } + + const createdInstance = await model.create(values); + + for (const field in createdInstance) { + (this as any)[field] = (createdInstance as any)[field]; + } + + return this; + } + + /** Update this record using its current field values. + * + * flight.destination = "London"; + * await flight.update(); + */ + async update() { + const model = this.constructor as ModelSchema; + const modelPK = model.getComputedPrimaryKey(); + + const values: Values = {}; + for (const field of Object.keys(model.fields)) { + if (this.hasOwnProperty(field) && field !== modelPK) { + values[field] = (this as any)[field]; + } + } + + await model.where(modelPK, this._getCurrentPrimaryKey()).update( + values, + ); + + return this; + } + + /** Delete this record from the database. + * + * await flight.delete(); + */ + async delete() { + const model = this.constructor as ModelSchema; + const PKCurrentValue = this._getCurrentPrimaryKey(); + + if (PKCurrentValue === undefined) { + throw new Error( + "This instance does not have a value for its primary key. It cannot be deleted.", + ); + } + + return model.deleteById(PKCurrentValue); + } +} diff --git a/bundler/tests/.cache/deno/9f785be930eb0edcce28b7f5e8b1fbb94c2c66bb.ts b/bundler/tests/.cache/deno/9f785be930eb0edcce28b7f5e8b1fbb94c2c66bb.ts new file mode 100644 index 00000000000..2bac6879483 --- /dev/null +++ b/bundler/tests/.cache/deno/9f785be930eb0edcce28b7f5e8b1fbb94c2c66bb.ts @@ -0,0 +1,179 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/astFromValue.js + + +import isFinite from '../polyfills/isFinite.js'; +import arrayFrom from '../polyfills/arrayFrom.js'; +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import isCollection from '../jsutils/isCollection.js'; +import { Kind } from '../language/kinds.js'; +import { GraphQLID } from '../type/scalars.js'; +import { isLeafType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition.js'; +/** + * Produces a GraphQL Value AST given a JavaScript object. + * Function will match JavaScript/JSON values to GraphQL AST schema format + * by using suggested GraphQLInputType. For example: + * + * astFromValue("value", GraphQLString) + * + * A GraphQL type must be provided, which will be used to interpret different + * JavaScript values. + * + * | JSON Value | GraphQL Value | + * | ------------- | -------------------- | + * | Object | Input Object | + * | Array | List | + * | Boolean | Boolean | + * | String | String / Enum Value | + * | Number | Int / Float | + * | Mixed | Enum Value | + * | null | NullValue | + * + */ + +export function astFromValue(value, type) { + if (isNonNullType(type)) { + const astValue = astFromValue(value, type.ofType); + + if (astValue?.kind === Kind.NULL) { + return null; + } + + return astValue; + } // only explicit null, not undefined, NaN + + + if (value === null) { + return { + kind: Kind.NULL + }; + } // undefined + + + if (value === undefined) { + return null; + } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but + // the value is not an array, convert the value using the list's item type. + + + if (isListType(type)) { + const itemType = type.ofType; + + if (isCollection(value)) { + const valuesNodes = []; // Since we transpile for-of in loose mode it doesn't support iterators + // and it's required to first convert iteratable into array + + for (const item of arrayFrom(value)) { + const itemNode = astFromValue(item, itemType); + + if (itemNode != null) { + valuesNodes.push(itemNode); + } + } + + return { + kind: Kind.LIST, + values: valuesNodes + }; + } + + return astFromValue(value, itemType); + } // Populate the fields of the input object by creating ASTs from each value + // in the JavaScript object according to the fields in the input type. + + + if (isInputObjectType(type)) { + if (!isObjectLike(value)) { + return null; + } + + const fieldNodes = []; + + for (const field of objectValues(type.getFields())) { + const fieldValue = astFromValue(value[field.name], field.type); + + if (fieldValue) { + fieldNodes.push({ + kind: Kind.OBJECT_FIELD, + name: { + kind: Kind.NAME, + value: field.name + }, + value: fieldValue + }); + } + } + + return { + kind: Kind.OBJECT, + fields: fieldNodes + }; + } + + if (isLeafType(type)) { + // Since value is an internally represented value, it must be serialized + // to an externally represented value before converting into an AST. + const serialized = type.serialize(value); + + if (serialized == null) { + return null; + } // Others serialize based on their corresponding JavaScript scalar types. + + + if (typeof serialized === 'boolean') { + return { + kind: Kind.BOOLEAN, + value: serialized + }; + } // JavaScript numbers can be Int or Float values. + + + if (typeof serialized === 'number' && isFinite(serialized)) { + const stringNum = String(serialized); + return integerStringRegExp.test(stringNum) ? { + kind: Kind.INT, + value: stringNum + } : { + kind: Kind.FLOAT, + value: stringNum + }; + } + + if (typeof serialized === 'string') { + // Enum types use Enum literals. + if (isEnumType(type)) { + return { + kind: Kind.ENUM, + value: serialized + }; + } // ID types can use Int literals. + + + if (type === GraphQLID && integerStringRegExp.test(serialized)) { + return { + kind: Kind.INT, + value: serialized + }; + } + + return { + kind: Kind.STRING, + value: serialized + }; + } + + throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`); + } // Not reachable. All possible input types have been considered. + + + invariant(false, 'Unexpected input type: ' + inspect(type)); +} +/** + * IntValue: + * - NegativeSign? 0 + * - NegativeSign? NonZeroDigit ( Digit+ )? + */ + +const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/9fb76e3b0f12955adf1974932fb23da6d5456b02.ts b/bundler/tests/.cache/deno/9fb76e3b0f12955adf1974932fb23da6d5456b02.ts new file mode 100644 index 00000000000..4d1a02cc341 --- /dev/null +++ b/bundler/tests/.cache/deno/9fb76e3b0f12955adf1974932fb23da6d5456b02.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/memoizeWith.js + + +import _arity from './internal/_arity.js'; +import _curry2 from './internal/_curry2.js'; +import _has from './internal/_has.js'; + + +/** + * Creates a new function that, when invoked, caches the result of calling `fn` + * for a given argument set and returns the result. Subsequent calls to the + * memoized `fn` with the same argument set will not result in an additional + * call to `fn`; instead, the cached result for that set of arguments will be + * returned. + * + * Care must be taken when implementing key generation to avoid key collision, + * or if tracking references, memory leaks and mutating arguments. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (*... -> String) -> (*... -> a) -> (*... -> a) + * @param {Function} fn The function to generate the cache key. + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @example + * + * let count = 0; + * const factorial = R.memoizeWith(Number, n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ +var memoizeWith = _curry2(function memoizeWith(mFn, fn) { + var cache = {}; + return _arity(fn.length, function() { + var key = mFn.apply(this, arguments); + if (!_has(key, cache)) { + cache[key] = fn.apply(this, arguments); + } + return cache[key]; + }); +}); +export default memoizeWith; diff --git a/bundler/tests/.cache/deno/9ff3546c8a86abae4076ee5b0962adba04573216.ts b/bundler/tests/.cache/deno/9ff3546c8a86abae4076ee5b0962adba04573216.ts new file mode 100644 index 00000000000..5aa887ab5cd --- /dev/null +++ b/bundler/tests/.cache/deno/9ff3546c8a86abae4076ee5b0962adba04573216.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/binary.ts + + +export class RawBinary extends Uint8Array { + hex() { + return [...this].map((x) => x.toString(16).padStart(2, "0")).join(""); + } + + binary(): Uint8Array { + return this; + } + + base64(): string { + return btoa(String.fromCharCode.apply(null, [...this])); + } + + base64url(): string { + let a = btoa(String.fromCharCode.apply(null, [...this])).replace(/=/g, ""); + a = a.replace(/\+/g, "-"); + a = a.replace(/\//g, "_"); + return a; + } + + base32(): string { + const lookup = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; + const trim = [0x0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff]; + let output = ""; + let bits = 0; + let current = 0; + + for (let i = 0; i < this.length; i++) { + current = (current << 8) + this[i]; + bits += 8; + + while (bits >= 5) { + bits -= 5; + output += lookup[current >> bits]; + current = current & trim[bits]; + } + } + + if (bits > 0) { + output += lookup[current << (5 - bits)]; + } + + return output; + } + + toString(): string { + return new TextDecoder().decode(this); + } +} diff --git a/bundler/tests/.cache/deno/a0ce90699f36d6eff2a6c46552dd71e7290631d0.ts b/bundler/tests/.cache/deno/a0ce90699f36d6eff2a6c46552dd71e7290631d0.ts new file mode 100644 index 00000000000..0495cdd5c9a --- /dev/null +++ b/bundler/tests/.cache/deno/a0ce90699f36d6eff2a6c46552dd71e7290631d0.ts @@ -0,0 +1,71 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dissocPath.js + + +import _curry2 from './internal/_curry2.js'; +import _dissoc from './internal/_dissoc.js'; +import _isInteger from './internal/_isInteger.js'; +import _isArray from './internal/_isArray.js'; +import assoc from './assoc.js'; + +/** + * Makes a shallow clone of an object. Note that this copies and flattens + * prototype properties onto the new object as well. All non-primitive + * properties are copied by reference. + * + * @private + * @param {String|Integer} prop The prop operating + * @param {Object|Array} obj The object to clone + * @return {Object|Array} A new object equivalent to the original. + */ +function _shallowCloneObject(prop, obj) { + if (_isInteger(prop) && _isArray(obj)) { + return [].concat(obj); + } + + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + return result; +} + +/** + * Makes a shallow clone of an object, omitting the property at the given path. + * Note that this copies and flattens prototype properties onto the new object + * as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.11.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig [Idx] -> {k: v} -> {k: v} + * @param {Array} path The path to the value to omit + * @param {Object} obj The object to clone + * @return {Object} A new object without the property at path + * @see R.assocPath + * @example + * + * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} + */ +var dissocPath = _curry2(function dissocPath(path, obj) { + if (obj == null) { + return obj; + } + + switch (path.length) { + case 0: + return obj; + case 1: + return _dissoc(path[0], obj); + default: + var head = path[0]; + var tail = Array.prototype.slice.call(path, 1); + if (obj[head] == null) { + return _shallowCloneObject(head, obj); + } else { + return assoc(head, dissocPath(tail, obj[head]), obj); + } + } +}); +export default dissocPath; diff --git a/bundler/tests/.cache/deno/a0d944ee426f6b53f2d4c0b7a7677fd234ea0d71.ts b/bundler/tests/.cache/deno/a0d944ee426f6b53f2d4c0b7a7677fd234ea0d71.ts new file mode 100644 index 00000000000..d36f8f109e5 --- /dev/null +++ b/bundler/tests/.cache/deno/a0d944ee426f6b53f2d4c0b7a7677fd234ea0d71.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/devAssert.js + + +export default function devAssert(condition, message) { + const booleanCondition = Boolean(condition); + /* istanbul ignore else (see transformation done in './resources/inlineInvariant.js') */ + + if (!booleanCondition) { + throw new Error(message); + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/a0e6e3414326f598d7fd3ae73751015dfcdcfc66.ts b/bundler/tests/.cache/deno/a0e6e3414326f598d7fd3ae73751015dfcdcfc66.ts new file mode 100644 index 00000000000..b2c596bd512 --- /dev/null +++ b/bundler/tests/.cache/deno/a0e6e3414326f598d7fd3ae73751015dfcdcfc66.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_arity.js + + +export default function _arity(n, fn) { + /* eslint-disable no-unused-vars */ + switch (n) { + case 0: return function() { return fn.apply(this, arguments); }; + case 1: return function(a0) { return fn.apply(this, arguments); }; + case 2: return function(a0, a1) { return fn.apply(this, arguments); }; + case 3: return function(a0, a1, a2) { return fn.apply(this, arguments); }; + case 4: return function(a0, a1, a2, a3) { return fn.apply(this, arguments); }; + case 5: return function(a0, a1, a2, a3, a4) { return fn.apply(this, arguments); }; + case 6: return function(a0, a1, a2, a3, a4, a5) { return fn.apply(this, arguments); }; + case 7: return function(a0, a1, a2, a3, a4, a5, a6) { return fn.apply(this, arguments); }; + case 8: return function(a0, a1, a2, a3, a4, a5, a6, a7) { return fn.apply(this, arguments); }; + case 9: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) { return fn.apply(this, arguments); }; + case 10: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { return fn.apply(this, arguments); }; + default: throw new Error('First argument to _arity must be a non-negative integer no greater than ten'); + } +} diff --git a/bundler/tests/.cache/deno/a0ea2e238a1e02016791fa7797e01956529e54e5.ts b/bundler/tests/.cache/deno/a0ea2e238a1e02016791fa7797e01956529e54e5.ts new file mode 100644 index 00000000000..e00af33aa81 --- /dev/null +++ b/bundler/tests/.cache/deno/a0ea2e238a1e02016791fa7797e01956529e54e5.ts @@ -0,0 +1,83 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/utils.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore no-explicit-any +export type Any = any; + +export function isNothing(subject: unknown): subject is never { + return typeof subject === "undefined" || subject === null; +} + +export function isArray(value: unknown): value is Any[] { + return Array.isArray(value); +} + +export function isBoolean(value: unknown): value is boolean { + return typeof value === "boolean" || value instanceof Boolean; +} + +export function isNull(value: unknown): value is null { + return value === null; +} + +export function isNumber(value: unknown): value is number { + return typeof value === "number" || value instanceof Number; +} + +export function isString(value: unknown): value is string { + return typeof value === "string" || value instanceof String; +} + +export function isSymbol(value: unknown): value is symbol { + return typeof value === "symbol"; +} + +export function isUndefined(value: unknown): value is undefined { + return value === undefined; +} + +export function isObject(value: unknown): value is Record { + return value !== null && typeof value === "object"; +} + +export function isError(e: unknown): boolean { + return e instanceof Error; +} + +export function isFunction(value: unknown): value is () => void { + return typeof value === "function"; +} + +export function isRegExp(value: unknown): value is RegExp { + return value instanceof RegExp; +} + +export function toArray(sequence: T): T | [] | [T] { + if (isArray(sequence)) return sequence; + if (isNothing(sequence)) return []; + + return [sequence]; +} + +export function repeat(str: string, count: number): string { + let result = ""; + + for (let cycle = 0; cycle < count; cycle++) { + result += str; + } + + return result; +} + +export function isNegativeZero(i: number): boolean { + return i === 0 && Number.NEGATIVE_INFINITY === 1 / i; +} + +export interface ArrayObject { + [P: string]: T; +} diff --git a/bundler/tests/.cache/deno/a0ec615fc998552dc25b92f8d0949c54b286dc0c.ts b/bundler/tests/.cache/deno/a0ec615fc998552dc25b92f8d0949c54b286dc0c.ts new file mode 100644 index 00000000000..3b71267689c --- /dev/null +++ b/bundler/tests/.cache/deno/a0ec615fc998552dc25b92f8d0949c54b286dc0c.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfind.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XFind(f, xf) { + this.xf = xf; + this.f = f; + this.found = false; +} +XFind.prototype['@@transducer/init'] = _xfBase.init; +XFind.prototype['@@transducer/result'] = function(result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, void 0); + } + return this.xf['@@transducer/result'](result); +}; +XFind.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, input)); + } + return result; +}; + +var _xfind = _curry2(function _xfind(f, xf) { return new XFind(f, xf); }); +export default _xfind; diff --git a/bundler/tests/.cache/deno/a0fc45eac1469f47ed6e2bbaad4b323e856fac7b.ts b/bundler/tests/.cache/deno/a0fc45eac1469f47ed6e2bbaad4b323e856fac7b.ts new file mode 100644 index 00000000000..cf7f4964eec --- /dev/null +++ b/bundler/tests/.cache/deno/a0fc45eac1469f47ed6e2bbaad4b323e856fac7b.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/main.ts + + +import { setupLogging, log, flags } from "./mod.ts"; +import { launch } from "./launch.ts"; +import { version } from './version.ts'; + +export async function main() { + const args = flags.parse(Deno.args); + if (args["version"] === true) { + console.log(`dnit ${version}`); + Deno.exit(0); + } + + await setupLogging(); + const internalLogger = log.getLogger("internal"); + + if (args["verbose"] !== undefined) { + internalLogger.levelName = "INFO"; + } + + internalLogger.info(`starting dnit launch using version: ${version}`); + + launch(internalLogger).then((st) => { + Deno.exit(st.code); + }); +} + +main(); diff --git a/bundler/tests/.cache/deno/a0fc6a489f364f69771cdaa068b0d481258e9b3f.ts b/bundler/tests/.cache/deno/a0fc6a489f364f69771cdaa068b0d481258e9b3f.ts new file mode 100644 index 00000000000..e2147f6859e --- /dev/null +++ b/bundler/tests/.cache/deno/a0fc6a489f364f69771cdaa068b0d481258e9b3f.ts @@ -0,0 +1,90 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/utility/encode.ts + + +import { RawBinary } from "../binary.ts"; + +export class encode { + static hex(data: string) { + if (data.length % 2 !== 0) throw "Invalid hex format"; + + const output = new RawBinary(data.length >> 1); + let ptr = 0; + + for (let i = 0; i < data.length; i += 2) { + output[ptr++] = parseInt(data.substr(i, 2), 16); + } + + return output; + } + + static bigint(n: bigint) { + const bytes = []; + while (n > 0) { + bytes.push(Number(n & 255n)); + n = n >> 8n; + } + + bytes.reverse(); + return new RawBinary(bytes); + } + + static string(data: string) { + return new RawBinary(new TextEncoder().encode(data)); + } + + static base64(data: string) { + return new RawBinary(Uint8Array.from(atob(data), (c) => c.charCodeAt(0))); + } + + static base64url(data: string) { + let input = data + .replace(/-/g, "+") + .replace(/_/g, "/"); + + const pad = input.length % 4; + if (pad) { + if (pad === 1) throw "Invalid length"; + input += new Array(5 - pad).join("="); + } + + return encode.base64(input); + } + + static binary(data: Uint8Array | number[]) { + return new RawBinary(data); + } + + static base32(data: string) { + // Ignore case + data = data.toUpperCase(); + + // Ignore padding + data = data.replace(/=+$/g, ""); + + const lookup = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; + const size = (data.length * 5) >> 3; + const output = new RawBinary(size); + + let ptr = 0; + let bits = 0; + let current = 0; + + for (let i = 0; i < data.length; i++) { + const value = lookup.indexOf(data[i]); + + if (value < 0) throw "Invalid base32 format"; + + current = (current << 5) + value; + bits += 5; + + if (bits >= 8) { + bits -= 8; + const t = current >> bits; + current -= t << bits; + output[ptr++] = t; + } + } + + return output; + } +} diff --git a/bundler/tests/.cache/deno/a142b5e1699303d9d84903b5d8ab47e4d70e663c.ts b/bundler/tests/.cache/deno/a142b5e1699303d9d84903b5d8ab47e4d70e663c.ts new file mode 100644 index 00000000000..1f5c23daafa --- /dev/null +++ b/bundler/tests/.cache/deno/a142b5e1699303d9d84903b5d8ab47e4d70e663c.ts @@ -0,0 +1,1570 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/inflate.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +import * as utils from "../utils/common.js"; +import { adler32 } from "./adler32.js"; +import { crc32 } from "./crc32.js"; +import { inflate_fast } from "./inffast.js"; +import { inflate_table } from "./inftrees.js"; + + +// var utils = require('../utils/common'); +// var adler32 = require('./adler32'); +// var crc32 = require('./crc32'); +// var inflate_fast = require('./inffast'); +// var inflate_table = require('./inftrees'); + +var CODES = 0; +var LENS = 1; +var DISTS = 2; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +//var Z_NO_FLUSH = 0; +//var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +//var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + +/* The deflate compression method */ +var Z_DEFLATED = 8; + + +/* STATES ====================================================================*/ +/* ===========================================================================*/ + + +var HEAD = 1; /* i: waiting for magic header */ +var FLAGS = 2; /* i: waiting for method and flags (gzip) */ +var TIME = 3; /* i: waiting for modification time (gzip) */ +var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ +var EXLEN = 5; /* i: waiting for extra length (gzip) */ +var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ +var NAME = 7; /* i: waiting for end of file name (gzip) */ +var COMMENT = 8; /* i: waiting for end of comment (gzip) */ +var HCRC = 9; /* i: waiting for header crc (gzip) */ +var DICTID = 10; /* i: waiting for dictionary check value */ +var DICT = 11; /* waiting for inflateSetDictionary() call */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ +var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ +var STORED = 14; /* i: waiting for stored size (length and complement) */ +var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ +var COPY = 16; /* i/o: waiting for input or output to copy stored block */ +var TABLE = 17; /* i: waiting for dynamic block table lengths */ +var LENLENS = 18; /* i: waiting for code length code lengths */ +var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ +var LEN_ = 20; /* i: same as LEN below, but only first time in */ +var LEN = 21; /* i: waiting for length/lit/eob code */ +var LENEXT = 22; /* i: waiting for length extra bits */ +var DIST = 23; /* i: waiting for distance code */ +var DISTEXT = 24; /* i: waiting for distance extra bits */ +var MATCH = 25; /* o: waiting for output space to copy string */ +var LIT = 26; /* o: waiting for output space to write literal */ +var CHECK = 27; /* i: waiting for 32-bit check value */ +var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ +var DONE = 29; /* finished check, done -- remain here until reset */ +var BAD = 30; /* got a data error -- remain here until reset */ +var MEM = 31; /* got an inflate() memory error -- remain here until reset */ +var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ + +/* ===========================================================================*/ + + + +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_WBITS = MAX_WBITS; + + +function zswap32(q) { + return (((q >>> 24) & 0xff) + + ((q >>> 8) & 0xff00) + + ((q & 0xff00) << 8) + + ((q & 0xff) << 24)); +} + + +function InflateState() { + this.mode = 0; /* current inflate mode */ + this.last = false; /* true if processing last block */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.havedict = false; /* true if dictionary provided */ + this.flags = 0; /* gzip header method and flags (0 if zlib) */ + this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ + this.check = 0; /* protected copy of check value */ + this.total = 0; /* protected copy of output count */ + // TODO: may be {} + this.head = null; /* where to save gzip header information */ + + /* sliding window */ + this.wbits = 0; /* log base 2 of requested window size */ + this.wsize = 0; /* window size or zero if not using window */ + this.whave = 0; /* valid bytes in the window */ + this.wnext = 0; /* window write index */ + this.window = null; /* allocated sliding window, if needed */ + + /* bit accumulator */ + this.hold = 0; /* input bit accumulator */ + this.bits = 0; /* number of bits in "in" */ + + /* for string and stored block copying */ + this.length = 0; /* literal or length of data to copy */ + this.offset = 0; /* distance back to copy string from */ + + /* for table and code decoding */ + this.extra = 0; /* extra bits needed */ + + /* fixed and dynamic code tables */ + this.lencode = null; /* starting table for length/literal codes */ + this.distcode = null; /* starting table for distance codes */ + this.lenbits = 0; /* index bits for lencode */ + this.distbits = 0; /* index bits for distcode */ + + /* dynamic table building */ + this.ncode = 0; /* number of code length code lengths */ + this.nlen = 0; /* number of length code lengths */ + this.ndist = 0; /* number of distance code lengths */ + this.have = 0; /* number of code lengths in lens[] */ + this.next = null; /* next available space in codes[] */ + + this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ + this.work = new utils.Buf16(288); /* work area for code table building */ + + /* + because we don't have pointers in js, we use lencode and distcode directly + as buffers so we don't need codes + */ + //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ + this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ + this.distdyn = null; /* dynamic table for distance codes (JS specific) */ + this.sane = 0; /* if false, allow invalid distance too far */ + this.back = 0; /* bits back of last unprocessed length/lit */ + this.was = 0; /* initial length of match */ +} + +function inflateResetKeep(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ''; /*Z_NULL*/ + if (state.wrap) { /* to support ill-conceived Java test suite */ + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.dmax = 32768; + state.head = null/*Z_NULL*/; + state.hold = 0; + state.bits = 0; + //state.lencode = state.distcode = state.next = state.codes; + state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); + state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); + + state.sane = 1; + state.back = -1; + //Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +function inflateReset(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); + +} + +function inflateReset2(strm, windowBits) { + var wrap; + var state; + + /* get the state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 1; + if (windowBits < 48) { + windowBits &= 15; + } + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; + } + + /* update state and reset the rest of it */ + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); +} + +function inflateInit2(strm, windowBits) { + var ret; + var state; + + if (!strm) { return Z_STREAM_ERROR; } + //strm.msg = Z_NULL; /* in case we return an error */ + + state = new InflateState(); + + //if (state === Z_NULL) return Z_MEM_ERROR; + //Tracev((stderr, "inflate: allocated\n")); + strm.state = state; + state.window = null/*Z_NULL*/; + ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK) { + strm.state = null/*Z_NULL*/; + } + return ret; +} + +function inflateInit(strm) { + return inflateInit2(strm, DEF_WBITS); +} + + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +var virgin = true; + +var lenfix, distfix; // We have no pointers in JS, so keep tables separate + +function fixedtables(state) { + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + var sym; + + lenfix = new utils.Buf32(512); + distfix = new utils.Buf32(32); + + /* literal/length table */ + sym = 0; + while (sym < 144) { state.lens[sym++] = 8; } + while (sym < 256) { state.lens[sym++] = 9; } + while (sym < 280) { state.lens[sym++] = 7; } + while (sym < 288) { state.lens[sym++] = 8; } + + inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + + /* distance table */ + sym = 0; + while (sym < 32) { state.lens[sym++] = 5; } + + inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); + + /* do this just once */ + virgin = false; + } + + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; +} + + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +function updatewindow(strm, src, end, copy) { + var dist; + var state = strm.state; + + /* if it hasn't been done already, allocate space for the window */ + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; + + state.window = new utils.Buf8(state.wsize); + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state.wsize) { + utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); + state.wnext = 0; + state.whave = state.wsize; + } + else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + //zmemcpy(state->window + state->wnext, end - copy, dist); + utils.arraySet(state.window, src, end - copy, dist, state.wnext); + copy -= dist; + if (copy) { + //zmemcpy(state->window, end - copy, copy); + utils.arraySet(state.window, src, end - copy, copy, 0); + state.wnext = copy; + state.whave = state.wsize; + } + else { + state.wnext += dist; + if (state.wnext === state.wsize) { state.wnext = 0; } + if (state.whave < state.wsize) { state.whave += dist; } + } + } + return 0; +} + +function inflate(strm, flush) { + var state; + var input, output; // input/output buffers + var next; /* next input INDEX */ + var put; /* next output INDEX */ + var have, left; /* available input and output */ + var hold; /* bit buffer */ + var bits; /* bits in bit buffer */ + var _in, _out; /* save starting available input and output */ + var copy; /* number of stored or match bytes to copy */ + var from; /* where to copy match bytes from */ + var from_source; + var here = 0; /* current decoding table entry */ + var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) + //var last; /* parent table entry */ + var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) + var len; /* length to copy for repeats, bits to drop */ + var ret; /* return code */ + var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ + var opts; + + var n; // temporary var for NEED_BITS + + var order = /* permutation of code lengths */ + [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + + + if (!strm || !strm.state || !strm.output || + (!strm.input && strm.avail_in !== 0)) { + return Z_STREAM_ERROR; + } + + state = strm.state; + if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ + + + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + _in = have; + _out = left; + ret = Z_OK; + + inf_leave: // goto emulation + for (;;) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + //=== NEEDBITS(16); + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ + state.check = 0/*crc32(0L, Z_NULL, 0)*/; + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = FLAGS; + break; + } + state.flags = 0; /* expect zlib header */ + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { + strm.msg = 'incorrect header check'; + state.mode = BAD; + break; + } + if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + len = (hold & 0x0f)/*BITS(4)*/ + 8; + if (state.wbits === 0) { + state.wbits = len; + } + else if (len > state.wbits) { + strm.msg = 'invalid window size'; + state.mode = BAD; + break; + } + state.dmax = 1 << len; + //Tracev((stderr, "inflate: zlib header ok\n")); + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = hold & 0x200 ? DICTID : TYPE; + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + break; + case FLAGS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.flags = hold; + if ((state.flags & 0xff) !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + if (state.flags & 0xe000) { + strm.msg = 'unknown header flags set'; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = ((hold >> 8) & 1); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = TIME; + /* falls through */ + case TIME: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.time = hold; + } + if (state.flags & 0x0200) { + //=== CRC4(state.check, hold) + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + hbuf[2] = (hold >>> 16) & 0xff; + hbuf[3] = (hold >>> 24) & 0xff; + state.check = crc32(state.check, hbuf, 4, 0); + //=== + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = OS; + /* falls through */ + case OS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.xflags = (hold & 0xff); + state.head.os = (hold >> 8); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = EXLEN; + /* falls through */ + case EXLEN: + if (state.flags & 0x0400) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + else if (state.head) { + state.head.extra = null/*Z_NULL*/; + } + state.mode = EXTRA; + /* falls through */ + case EXTRA: + if (state.flags & 0x0400) { + copy = state.length; + if (copy > have) { copy = have; } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + // Use untyped array for more convenient processing later + state.head.extra = new Array(state.head.extra_len); + } + utils.arraySet( + state.head.extra, + input, + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + copy, + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + //zmemcpy(state.head.extra + len, next, + // len + copy > state.head.extra_max ? + // state.head.extra_max - len : copy); + } + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { break inf_leave; } + } + state.length = 0; + state.mode = NAME; + /* falls through */ + case NAME: + if (state.flags & 0x0800) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + // TODO: 2 or 1 bytes? + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.name_max*/)) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); + + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + /* falls through */ + case COMMENT: + if (state.flags & 0x1000) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.comm_max*/)) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + /* falls through */ + case HCRC: + if (state.flags & 0x0200) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.check & 0xffff)) { + strm.msg = 'header crc mismatch'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + if (state.head) { + state.head.hcrc = ((state.flags >> 9) & 1); + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + strm.adler = state.check = zswap32(hold); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = DICT; + /* falls through */ + case DICT: + if (state.havedict === 0) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + return Z_NEED_DICT; + } + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = TYPE; + /* falls through */ + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } + /* falls through */ + case TYPEDO: + if (state.last) { + //--- BYTEBITS() ---// + hold >>>= bits & 7; + bits -= bits & 7; + //---// + state.mode = CHECK; + break; + } + //=== NEEDBITS(3); */ + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.last = (hold & 0x01)/*BITS(1)*/; + //--- DROPBITS(1) ---// + hold >>>= 1; + bits -= 1; + //---// + + switch ((hold & 0x03)/*BITS(2)*/) { + case 0: /* stored block */ + //Tracev((stderr, "inflate: stored block%s\n", + // state.last ? " (last)" : "")); + state.mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + //Tracev((stderr, "inflate: fixed codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = LEN_; /* decode codes */ + if (flush === Z_TREES) { + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break inf_leave; + } + break; + case 2: /* dynamic block */ + //Tracev((stderr, "inflate: dynamic codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = TABLE; + break; + case 3: + strm.msg = 'invalid block type'; + state.mode = BAD; + } + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break; + case STORED: + //--- BYTEBITS() ---// /* go to byte boundary */ + hold >>>= bits & 7; + bits -= bits & 7; + //---// + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { + strm.msg = 'invalid stored block lengths'; + state.mode = BAD; + break; + } + state.length = hold & 0xffff; + //Tracev((stderr, "inflate: stored length %u\n", + // state.length)); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = COPY_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case COPY_: + state.mode = COPY; + /* falls through */ + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { copy = have; } + if (copy > left) { copy = left; } + if (copy === 0) { break inf_leave; } + //--- zmemcpy(put, next, copy); --- + utils.arraySet(output, input, next, copy, put); + //---// + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + //Tracev((stderr, "inflate: stored end\n")); + state.mode = TYPE; + break; + case TABLE: + //=== NEEDBITS(14); */ + while (bits < 14) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// +//#ifndef PKZIP_BUG_WORKAROUND + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = 'too many length or distance symbols'; + state.mode = BAD; + break; + } +//#endif + //Tracev((stderr, "inflate: table sizes ok\n")); + state.have = 0; + state.mode = LENLENS; + /* falls through */ + case LENLENS: + while (state.have < state.ncode) { + //=== NEEDBITS(3); + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + // We have separate tables & no pointers. 2 commented lines below not needed. + //state.next = state.codes; + //state.lencode = state.next; + // Switch to use dynamic table + state.lencode = state.lendyn; + state.lenbits = 7; + + opts = { bits: state.lenbits }; + ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; + + if (ret) { + strm.msg = 'invalid code lengths set'; + state.mode = BAD; + break; + } + //Tracev((stderr, "inflate: code lengths ok\n")); + state.have = 0; + state.mode = CODELENS; + /* falls through */ + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_val < 16) { + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.lens[state.have++] = here_val; + } + else { + if (here_val === 16) { + //=== NEEDBITS(here.bits + 2); + n = here_bits + 2; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + if (state.have === 0) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 0x03);//BITS(2); + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + } + else if (here_val === 17) { + //=== NEEDBITS(here.bits + 3); + n = here_bits + 3; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 3 + (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + else { + //=== NEEDBITS(here.bits + 7); + n = here_bits + 7; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 11 + (hold & 0x7f);//BITS(7); + //--- DROPBITS(7) ---// + hold >>>= 7; + bits -= 7; + //---// + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } + + /* handle error breaks in while */ + if (state.mode === BAD) { break; } + + /* check for end-of-block code (better have one) */ + if (state.lens[256] === 0) { + strm.msg = 'invalid code -- missing end-of-block'; + state.mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state.lenbits = 9; + + opts = { bits: state.lenbits }; + ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.lenbits = opts.bits; + // state.lencode = state.next; + + if (ret) { + strm.msg = 'invalid literal/lengths set'; + state.mode = BAD; + break; + } + + state.distbits = 6; + //state.distcode.copy(state.codes); + // Switch to use dynamic table + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.distbits = opts.bits; + // state.distcode = state.next; + + if (ret) { + strm.msg = 'invalid distances set'; + state.mode = BAD; + break; + } + //Tracev((stderr, 'inflate: codes ok\n')); + state.mode = LEN_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case LEN_: + state.mode = LEN; + /* falls through */ + case LEN: + if (have >= 6 && left >= 258) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + inflate_fast(strm, _out); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if (here_bits <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_op && (here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.lencode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + state.mode = LIT; + break; + } + if (here_op & 32) { + //Tracevv((stderr, "inflate: end of block\n")); + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + /* falls through */ + case LENEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //Tracevv((stderr, "inflate: length %u\n", state.length)); + state.was = state.length; + state.mode = DIST; + /* falls through */ + case DIST: + for (;;) { + here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if ((here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.distcode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + if (here_op & 64) { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = (here_op) & 15; + state.mode = DISTEXT; + /* falls through */ + case DISTEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } +//#ifdef INFLATE_STRICT + if (state.offset > state.dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +//#endif + //Tracevv((stderr, "inflate: distance %u\n", state.offset)); + state.mode = MATCH; + /* falls through */ + case MATCH: + if (left === 0) { break inf_leave; } + copy = _out - left; + if (state.offset > copy) { /* copy from window */ + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// Trace((stderr, "inflate.c too far\n")); +// copy -= state.whave; +// if (copy > state.length) { copy = state.length; } +// if (copy > left) { copy = left; } +// left -= copy; +// state.length -= copy; +// do { +// output[put++] = 0; +// } while (--copy); +// if (state.length === 0) { state.mode = LEN; } +// break; +//#endif + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } + else { + from = state.wnext - copy; + } + if (copy > state.length) { copy = state.length; } + from_source = state.window; + } + else { /* copy from output */ + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { copy = left; } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { state.mode = LEN; } + break; + case LIT: + if (left === 0) { break inf_leave; } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + // Use '|' instead of '+' to make sure that result is signed + hold |= input[next++] << bits; + bits += 8; + } + //===// + _out -= left; + strm.total_out += _out; + state.total += _out; + if (_out) { + strm.adler = state.check = + /*UPDATE(state.check, put - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); + + } + _out = left; + // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too + if ((state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = 'incorrect data check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: check matches trailer\n")); + } + state.mode = LENGTH; + /* falls through */ + case LENGTH: + if (state.wrap && state.flags) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.total & 0xffffffff)) { + strm.msg = 'incorrect length check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: length matches trailer\n")); + } + state.mode = DONE; + /* falls through */ + case DONE: + ret = Z_STREAM_END; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR; + break inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* falls through */ + default: + return Z_STREAM_ERROR; + } + } + + // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + + if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && + (state.mode < CHECK || flush !== Z_FINISH))) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { + state.mode = MEM; + return Z_MEM_ERROR; + } + } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap && _out) { + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + + (state.mode === TYPE ? 128 : 0) + + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { + ret = Z_BUF_ERROR; + } + return ret; +} + +function inflateEnd(strm) { + + if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { + return Z_STREAM_ERROR; + } + + var state = strm.state; + if (state.window) { + state.window = null; + } + strm.state = null; + return Z_OK; +} + +function inflateGetHeader(strm, head) { + var state; + + /* check state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } + + /* save header structure */ + state.head = head; + head.done = false; + return Z_OK; +} + +function inflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; + + var state; + var dictid; + var ret; + + /* check state */ + if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; } + state = strm.state; + + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR; + } + + /* check for correct dictionary identifier */ + if (state.mode === DICT) { + dictid = 1; /* adler32(0, null, 0)*/ + /* dictid = adler32(dictid, dictionary, dictLength); */ + dictid = adler32(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR; + } + } + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR; + } + state.havedict = 1; + // Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +const inflateInfo = 'pako inflate (from Nodeca project)'; + +export { + inflateReset, + inflateReset2, + inflateResetKeep, + inflateInit, + inflateInit2, + inflate, + inflateEnd, + inflateGetHeader, + inflateSetDictionary, + inflateInfo +}; + +/* Not implemented +export { + inflateCopy, + inflateGetDictionary, + inflateMark, + inflatePrime, + inflateSync, + inflateSyncPoint, + inflateUndermine +}; +*/ diff --git a/bundler/tests/.cache/deno/a15b11d129b5e8610439feb319f9820f27f70306.ts b/bundler/tests/.cache/deno/a15b11d129b5e8610439feb319f9820f27f70306.ts new file mode 100644 index 00000000000..0ec24294e44 --- /dev/null +++ b/bundler/tests/.cache/deno/a15b11d129b5e8610439feb319f9820f27f70306.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/toPairsIn.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Converts an object into an array of key, value arrays. The object's own + * properties and prototype properties are used. Note that the order of the + * output array is not guaranteed to be consistent across different JS + * platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own + * and prototype properties. + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.toPairsIn(f); //=> [['x','X'], ['y','Y']] + */ +var toPairsIn = _curry1(function toPairsIn(obj) { + var pairs = []; + for (var prop in obj) { + pairs[pairs.length] = [prop, obj[prop]]; + } + return pairs; +}); +export default toPairsIn; diff --git a/bundler/tests/.cache/deno/a2626f5ab048da5f313379ef7dc74db490c86368.ts b/bundler/tests/.cache/deno/a2626f5ab048da5f313379ef7dc74db490c86368.ts new file mode 100644 index 00000000000..f7a7843e4f4 --- /dev/null +++ b/bundler/tests/.cache/deno/a2626f5ab048da5f313379ef7dc74db490c86368.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/NoUnusedFragmentsRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * No unused fragments + * + * A GraphQL document is only valid if all fragment definitions are spread + * within operations, or spread within other fragments spread within operations. + */ +export function NoUnusedFragmentsRule(context) { + const operationDefs = []; + const fragmentDefs = []; + return { + OperationDefinition(node) { + operationDefs.push(node); + return false; + }, + + FragmentDefinition(node) { + fragmentDefs.push(node); + return false; + }, + + Document: { + leave() { + const fragmentNameUsed = Object.create(null); + + for (const operation of operationDefs) { + for (const fragment of context.getRecursivelyReferencedFragments(operation)) { + fragmentNameUsed[fragment.name.value] = true; + } + } + + for (const fragmentDef of fragmentDefs) { + const fragName = fragmentDef.name.value; + + if (fragmentNameUsed[fragName] !== true) { + context.reportError(new GraphQLError(`Fragment "${fragName}" is never used.`, fragmentDef)); + } + } + } + + } + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/a268c7e75a2e2b6b207972e91e1818f60f33d058.ts b/bundler/tests/.cache/deno/a268c7e75a2e2b6b207972e91e1818f60f33d058.ts new file mode 100644 index 00000000000..22bb6c6b42d --- /dev/null +++ b/bundler/tests/.cache/deno/a268c7e75a2e2b6b207972e91e1818f60f33d058.ts @@ -0,0 +1,119 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/ValuesOfCorrectTypeRule.js + + +import objectValues from '../../polyfills/objectValues.js'; +import keyMap from '../../jsutils/keyMap.js'; +import inspect from '../../jsutils/inspect.js'; +import didYouMean from '../../jsutils/didYouMean.js'; +import suggestionList from '../../jsutils/suggestionList.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { print } from '../../language/printer.js'; +import { isLeafType, isInputObjectType, isListType, isNonNullType, isRequiredInputField, getNullableType, getNamedType } from '../../type/definition.js'; + +/** + * Value literals of correct type + * + * A GraphQL document is only valid if all value literals are of the type + * expected at their position. + */ +export function ValuesOfCorrectTypeRule(context) { + return { + ListValue(node) { + // Note: TypeInfo will traverse into a list's item type, so look to the + // parent input type to check if it is a list. + const type = getNullableType(context.getParentInputType()); + + if (!isListType(type)) { + isValidValueNode(context, node); + return false; // Don't traverse further. + } + }, + + ObjectValue(node) { + const type = getNamedType(context.getInputType()); + + if (!isInputObjectType(type)) { + isValidValueNode(context, node); + return false; // Don't traverse further. + } // Ensure every required field exists. + + + const fieldNodeMap = keyMap(node.fields, field => field.name.value); + + for (const fieldDef of objectValues(type.getFields())) { + const fieldNode = fieldNodeMap[fieldDef.name]; + + if (!fieldNode && isRequiredInputField(fieldDef)) { + const typeStr = inspect(fieldDef.type); + context.reportError(new GraphQLError(`Field "${type.name}.${fieldDef.name}" of required type "${typeStr}" was not provided.`, node)); + } + } + }, + + ObjectField(node) { + const parentType = getNamedType(context.getParentInputType()); + const fieldType = context.getInputType(); + + if (!fieldType && isInputObjectType(parentType)) { + const suggestions = suggestionList(node.name.value, Object.keys(parentType.getFields())); + context.reportError(new GraphQLError(`Field "${node.name.value}" is not defined by type "${parentType.name}".` + didYouMean(suggestions), node)); + } + }, + + NullValue(node) { + const type = context.getInputType(); + + if (isNonNullType(type)) { + context.reportError(new GraphQLError(`Expected value of type "${inspect(type)}", found ${print(node)}.`, node)); + } + }, + + EnumValue: node => isValidValueNode(context, node), + IntValue: node => isValidValueNode(context, node), + FloatValue: node => isValidValueNode(context, node), + StringValue: node => isValidValueNode(context, node), + BooleanValue: node => isValidValueNode(context, node) + }; +} +/** + * Any value literal may be a valid representation of a Scalar, depending on + * that scalar type. + */ + +function isValidValueNode(context, node) { + // Report any error at the full type expected by the location. + const locationType = context.getInputType(); + + if (!locationType) { + return; + } + + const type = getNamedType(locationType); + + if (!isLeafType(type)) { + const typeStr = inspect(locationType); + context.reportError(new GraphQLError(`Expected value of type "${typeStr}", found ${print(node)}.`, node)); + return; + } // Scalars and Enums determine if a literal value is valid via parseLiteral(), + // which may throw or return an invalid value to indicate failure. + + + try { + const parseResult = type.parseLiteral(node, undefined + /* variables */ + ); + + if (parseResult === undefined) { + const typeStr = inspect(locationType); + context.reportError(new GraphQLError(`Expected value of type "${typeStr}", found ${print(node)}.`, node)); + } + } catch (error) { + const typeStr = inspect(locationType); + + if (error instanceof GraphQLError) { + context.reportError(error); + } else { + context.reportError(new GraphQLError(`Expected value of type "${typeStr}", found ${print(node)}; ` + error.message, node, undefined, undefined, undefined, error)); + } + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/a27ac559077481e0855e6f712e8c46361a85e490.ts b/bundler/tests/.cache/deno/a27ac559077481e0855e6f712e8c46361a85e490.ts new file mode 100644 index 00000000000..868d14da550 --- /dev/null +++ b/bundler/tests/.cache/deno/a27ac559077481e0855e6f712e8c46361a85e490.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/constructN.js + + +import _curry2 from './internal/_curry2.js'; +import curry from './curry.js'; +import nAry from './nAry.js'; + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. The arity of the function + * returned is specified to allow using variadic constructor functions. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Function + * @sig Number -> (* -> {*}) -> (* -> {*}) + * @param {Number} n The arity of the constructor function. + * @param {Function} Fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @example + * + * // Variadic Constructor function + * function Salad() { + * this.ingredients = arguments; + * } + * + * Salad.prototype.recipe = function() { + * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients); + * return R.join('\n', instructions); + * }; + * + * const ThreeLayerSalad = R.constructN(3, Salad); + * + * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments. + * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup'); + * + * console.log(salad.recipe()); + * // Add a dollop of Mayonnaise + * // Add a dollop of Potato Chips + * // Add a dollop of Ketchup + */ +var constructN = _curry2(function constructN(n, Fn) { + if (n > 10) { + throw new Error('Constructor with greater than ten arguments'); + } + if (n === 0) { + return function() { return new Fn(); }; + } + return curry(nAry(n, function($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) { + switch (arguments.length) { + case 1: return new Fn($0); + case 2: return new Fn($0, $1); + case 3: return new Fn($0, $1, $2); + case 4: return new Fn($0, $1, $2, $3); + case 5: return new Fn($0, $1, $2, $3, $4); + case 6: return new Fn($0, $1, $2, $3, $4, $5); + case 7: return new Fn($0, $1, $2, $3, $4, $5, $6); + case 8: return new Fn($0, $1, $2, $3, $4, $5, $6, $7); + case 9: return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8); + case 10: return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9); + } + })); +}); +export default constructN; diff --git a/bundler/tests/.cache/deno/a288ff294ba8ed53e4c4efda5e662ffc01756ece.ts b/bundler/tests/.cache/deno/a288ff294ba8ed53e4c4efda5e662ffc01756ece.ts new file mode 100644 index 00000000000..c928c4cf9d6 --- /dev/null +++ b/bundler/tests/.cache/deno/a288ff294ba8ed53e4c4efda5e662ffc01756ece.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/sequence.js + + +import _curry2 from './internal/_curry2.js'; +import ap from './ap.js'; +import map from './map.js'; +import prepend from './prepend.js'; +import reduceRight from './reduceRight.js'; + + +/** + * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) + * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an + * Applicative of Traversable. + * + * Dispatches to the `sequence` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a) + * @param {Function} of + * @param {*} traversable + * @return {*} + * @see R.traverse + * @example + * + * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) + * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() + * + * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] + * R.sequence(R.of, Nothing()); //=> [Nothing()] + */ +var sequence = _curry2(function sequence(of, traversable) { + return typeof traversable.sequence === 'function' ? + traversable.sequence(of) : + reduceRight( + function(x, acc) { return ap(map(prepend, x), acc); }, + of([]), + traversable + ); +}); +export default sequence; diff --git a/bundler/tests/.cache/deno/a28ff8733f5ead137230cf0c8f86e809c228b794.ts b/bundler/tests/.cache/deno/a28ff8733f5ead137230cf0c8f86e809c228b794.ts new file mode 100644 index 00000000000..af65391968f --- /dev/null +++ b/bundler/tests/.cache/deno/a28ff8733f5ead137230cf0c8f86e809c228b794.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_objectAssign.js + + +import _has from './_has.js'; + +// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign +function _objectAssign(target) { + if (target == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + var idx = 1; + var length = arguments.length; + while (idx < length) { + var source = arguments[idx]; + if (source != null) { + for (var nextKey in source) { + if (_has(nextKey, source)) { + output[nextKey] = source[nextKey]; + } + } + } + idx += 1; + } + return output; +} + +export default typeof Object.assign === 'function' ? Object.assign : _objectAssign; diff --git a/bundler/tests/.cache/deno/a28ffee6293481d2bff1a2ed09801d3a1abfc052.ts b/bundler/tests/.cache/deno/a28ffee6293481d2bff1a2ed09801d3a1abfc052.ts new file mode 100644 index 00000000000..c98836a928f --- /dev/null +++ b/bundler/tests/.cache/deno/a28ffee6293481d2bff1a2ed09801d3a1abfc052.ts @@ -0,0 +1,160 @@ +// Loaded from https://deno.land/x/mysql/src/buffer.ts + + +import { decode, encode } from "../deps.ts"; + +/** @ignore */ +export class BufferReader { + private pos: number = 0; + constructor(readonly buffer: Uint8Array) {} + + get finished(): boolean { + return this.pos >= this.buffer.length; + } + + skip(len: number): BufferReader { + this.pos += len; + return this; + } + + readBuffer(len: number): Uint8Array { + const buffer = this.buffer.slice(this.pos, this.pos + len); + this.pos += len; + return buffer; + } + + readUints(len: number): number { + let num = 0; + for (let n = 0; n < len; n++) { + num += this.buffer[this.pos++] << (8 * n); + } + return num; + } + + readUint8(): number { + return this.buffer[this.pos++]; + } + + readUint16(): number { + return this.readUints(2); + } + + readUint32(): number { + return this.readUints(4); + } + + readUint64(): number { + return this.readUints(8); + } + + readNullTerminatedString(): string { + let end = this.buffer.indexOf(0x00, this.pos); + if (end === -1) end = this.buffer.length; + const buf = this.buffer.slice(this.pos, end); + this.pos += buf.length + 1; + return decode(buf); + } + + readString(len: number): string { + const str = decode(this.buffer.slice(this.pos, this.pos + len)); + this.pos += len; + return str; + } + + readEncodedLen(): number { + const first = this.readUint8(); + if (first < 251) { + return first; + } else { + if (first == 0xfc) { + return this.readUint16(); + } else if (first == 0xfd) { + return this.readUints(3); + } else if (first == 0xfe) { + return this.readUints(8); + } + } + return -1; + } + + readLenCodeString(): string | null { + const len = this.readEncodedLen(); + if (len == -1) return null; + return this.readString(len); + } +} + +/** @ignore */ +export class BufferWriter { + private pos: number = 0; + constructor(readonly buffer: Uint8Array) {} + + get wroteData(): Uint8Array { + return this.buffer.slice(0, this.pos); + } + + get length(): number { + return this.pos; + } + + get capacity(): number { + return this.buffer.length - this.pos; + } + + skip(len: number): BufferWriter { + this.pos += len; + return this; + } + + writeBuffer(buffer: Uint8Array): BufferWriter { + if (buffer.length > this.capacity) { + buffer = buffer.slice(0, this.capacity); + } + this.buffer.set(buffer, this.pos); + this.pos += buffer.length; + return this; + } + + write(byte: number): BufferWriter { + this.buffer[this.pos++] = byte; + return this; + } + + writeInt16LE(num: number) {} + + writeIntLE(num: number, len: number) { + const int = new Int32Array(1); + int[0] = 40; + console.log(int); + } + + writeUint16(num: number): BufferWriter { + return this.writeUints(2, num); + } + + writeUint32(num: number): BufferWriter { + return this.writeUints(4, num); + } + + writeUint64(num: number): BufferWriter { + return this.writeUints(8, num); + } + + writeUints(len: number, num: number): BufferWriter { + for (let n = 0; n < len; n++) { + this.buffer[this.pos++] = (num >> (n * 8)) & 0xff; + } + return this; + } + + writeNullTerminatedString(str: string): BufferWriter { + return this.writeString(str).write(0x00); + } + + writeString(str: string): BufferWriter { + const buf = encode(str); + this.buffer.set(buf, this.pos); + this.pos += buf.length; + return this; + } +} diff --git a/bundler/tests/.cache/deno/a29a56db8af6ba83faca60508b76ed8fb7446737.ts b/bundler/tests/.cache/deno/a29a56db8af6ba83faca60508b76ed8fb7446737.ts new file mode 100644 index 00000000000..23c4fe04f29 --- /dev/null +++ b/bundler/tests/.cache/deno/a29a56db8af6ba83faca60508b76ed8fb7446737.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/http/cookie.ts + + +export * from "https://deno.land/std@0.81.0/http/cookie.ts"; diff --git a/bundler/tests/.cache/deno/a30b0d9d18a858f20ad758d2bb4d880bcc059e75.ts b/bundler/tests/.cache/deno/a30b0d9d18a858f20ad758d2bb4d880bcc059e75.ts new file mode 100644 index 00000000000..35a55e55548 --- /dev/null +++ b/bundler/tests/.cache/deno/a30b0d9d18a858f20ad758d2bb4d880bcc059e75.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/any.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xany from './internal/_xany.js'; + + +/** + * Returns `true` if at least one of the elements of the list match the predicate, + * `false` otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false` + * otherwise. + * @see R.all, R.none, R.transduce + * @example + * + * const lessThan0 = R.flip(R.lt)(0); + * const lessThan2 = R.flip(R.lt)(2); + * R.any(lessThan0)([1, 2]); //=> false + * R.any(lessThan2)([1, 2]); //=> true + */ +var any = _curry2(_dispatchable(['any'], _xany, function any(fn, list) { + var idx = 0; + while (idx < list.length) { + if (fn(list[idx])) { + return true; + } + idx += 1; + } + return false; +})); +export default any; diff --git a/bundler/tests/.cache/deno/a31ba630c7846259801ce6754948849310ebca5d.ts b/bundler/tests/.cache/deno/a31ba630c7846259801ce6754948849310ebca5d.ts new file mode 100644 index 00000000000..72124d2d91c --- /dev/null +++ b/bundler/tests/.cache/deno/a31ba630c7846259801ce6754948849310ebca5d.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.85.0/io/ioutil.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/a326ef2822310f4c45eb62e7ce056e016af21a3d.ts b/bundler/tests/.cache/deno/a326ef2822310f4c45eb62e7ce056e016af21a3d.ts new file mode 100644 index 00000000000..d33bee7d9b6 --- /dev/null +++ b/bundler/tests/.cache/deno/a326ef2822310f4c45eb62e7ce056e016af21a3d.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/messages.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +export default { + 2: 'need dictionary', /* Z_NEED_DICT 2 */ + 1: 'stream end', /* Z_STREAM_END 1 */ + 0: '', /* Z_OK 0 */ + '-1': 'file error', /* Z_ERRNO (-1) */ + '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ +}; diff --git a/bundler/tests/.cache/deno/a33d67717c5a69e4428cb42c110b4c06e9712ad8.ts b/bundler/tests/.cache/deno/a33d67717c5a69e4428cb42c110b4c06e9712ad8.ts new file mode 100644 index 00000000000..12aee616179 --- /dev/null +++ b/bundler/tests/.cache/deno/a33d67717c5a69e4428cb42c110b4c06e9712ad8.ts @@ -0,0 +1,140 @@ +// Loaded from https://deno.land/x/oak/httpError.ts + + +/*! + * Adapted directly from http-errors at https://github.com/jshttp/http-errors + * which is licensed as follows: + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Jonathan Ong me@jongleberry.com + * Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +import { Status, STATUS_TEXT } from "./deps.ts"; +import type { ErrorStatus } from "./types.d.ts"; + +const errorStatusMap = { + "BadRequest": 400, + "Unauthorized": 401, + "PaymentRequired": 402, + "Forbidden": 403, + "NotFound": 404, + "MethodNotAllowed": 405, + "NotAcceptable": 406, + "ProxyAuthRequired": 407, + "RequestTimeout": 408, + "Conflict": 409, + "Gone": 410, + "LengthRequired": 411, + "PreconditionFailed": 412, + "RequestEntityTooLarge": 413, + "RequestURITooLong": 414, + "UnsupportedMediaType": 415, + "RequestedRangeNotSatisfiable": 416, + "ExpectationFailed": 417, + "Teapot": 418, + "MisdirectedRequest": 421, + "UnprocessableEntity": 422, + "Locked": 423, + "FailedDependency": 424, + "UpgradeRequired": 426, + "PreconditionRequired": 428, + "TooManyRequests": 429, + "RequestHeaderFieldsTooLarge": 431, + "UnavailableForLegalReasons": 451, + "InternalServerError": 500, + "NotImplemented": 501, + "BadGateway": 502, + "ServiceUnavailable": 503, + "GatewayTimeout": 504, + "HTTPVersionNotSupported": 505, + "VariantAlsoNegotiates": 506, + "InsufficientStorage": 507, + "LoopDetected": 508, + "NotExtended": 510, + "NetworkAuthenticationRequired": 511, +}; + +/** A base class for individual classes of HTTP errors. */ +export class HttpError extends Error { + /** Determines if details about the error should be automatically exposed + * in a response. This is automatically set to `true` for 4XX errors, as + * they represent errors in the request, while 5XX errors are set to `false` + * as they are internal server errors and exposing details could leak + * important server security information. */ + expose = false; + + /** The HTTP error status associated with this class of error. */ + status = Status.InternalServerError; +} + +function createHttpErrorConstructor( + status: ErrorStatus, +): E { + const name = `${Status[status]}Error`; + const Ctor = class extends HttpError { + constructor(message?: string) { + super(); + // deno-lint-ignore no-explicit-any + this.message = message || STATUS_TEXT.get(status as any)!; + this.status = status; + this.expose = status >= 400 && status < 500 ? true : false; + Object.defineProperty(this, "name", { + configurable: true, + enumerable: false, + value: name, + writable: true, + }); + } + }; + return Ctor as E; +} + +/** An object which contains an individual HTTP Error for each HTTP status + * error code (4XX and 5XX). When errors are raised related to a particular + * HTTP status code, they will be of the appropriate instance located on this + * object. Also, context's `.throw()` will throw errors based on the passed + * status code. */ +export const httpErrors: Record = + // deno-lint-ignore no-explicit-any + {} as any; + +for (const [key, value] of Object.entries(errorStatusMap)) { + httpErrors[key as keyof typeof errorStatusMap] = createHttpErrorConstructor( + value, + ); +} + +/** Create a specific class of `HttpError` based on the status, which defaults + * to _500 Internal Server Error_. + */ +export function createHttpError( + status: ErrorStatus = 500, + message?: string, +): HttpError { + return new httpErrors[Status[status] as keyof typeof errorStatusMap](message); +} + +// deno-lint-ignore no-explicit-any +export function isHttpError(value: any): value is HttpError { + return value instanceof HttpError; +} diff --git a/bundler/tests/.cache/deno/a38a6d9c6b556b00c459f48cea0da3d9e21089f2.ts b/bundler/tests/.cache/deno/a38a6d9c6b556b00c459f48cea0da3d9e21089f2.ts new file mode 100644 index 00000000000..b8961a1338b --- /dev/null +++ b/bundler/tests/.cache/deno/a38a6d9c6b556b00c459f48cea0da3d9e21089f2.ts @@ -0,0 +1,625 @@ +// Loaded from https://deno.land/std/testing/asserts.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. Do not rely on good formatting of values +// for AssertionError messages in browsers. + +import { bold, gray, green, red, stripColor, white } from "../fmt/colors.ts"; +import { diff, DiffResult, DiffType } from "./_diff.ts"; + +const CAN_NOT_DISPLAY = "[Cannot display]"; + +interface Constructor { + // deno-lint-ignore no-explicit-any + new (...args: any[]): any; +} + +export class AssertionError extends Error { + constructor(message: string) { + super(message); + this.name = "AssertionError"; + } +} + +/** + * Converts the input into a string. Objects, Sets and Maps are sorted so as to + * make tests less flaky + * @param v Value to be formatted + */ +export function _format(v: unknown): string { + return globalThis.Deno + ? Deno.inspect(v, { + depth: Infinity, + sorted: true, + trailingComma: true, + compact: false, + iterableLimit: Infinity, + }) + : `"${String(v).replace(/(?=["\\])/g, "\\")}"`; +} + +/** + * Colors the output of assertion diffs + * @param diffType Difference type, either added or removed + */ +function createColor(diffType: DiffType): (s: string) => string { + switch (diffType) { + case DiffType.added: + return (s: string): string => green(bold(s)); + case DiffType.removed: + return (s: string): string => red(bold(s)); + default: + return white; + } +} + +/** + * Prefixes `+` or `-` in diff output + * @param diffType Difference type, either added or removed + */ +function createSign(diffType: DiffType): string { + switch (diffType) { + case DiffType.added: + return "+ "; + case DiffType.removed: + return "- "; + default: + return " "; + } +} + +function buildMessage(diffResult: ReadonlyArray>): string[] { + const messages: string[] = []; + messages.push(""); + messages.push(""); + messages.push( + ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${ + green(bold("Expected")) + }`, + ); + messages.push(""); + messages.push(""); + diffResult.forEach((result: DiffResult): void => { + const c = createColor(result.type); + messages.push(c(`${createSign(result.type)}${result.value}`)); + }); + messages.push(""); + + return messages; +} + +function isKeyedCollection(x: unknown): x is Set { + return [Symbol.iterator, "size"].every((k) => k in (x as Set)); +} + +/** + * Deep equality comparison used in assertions + * @param c actual value + * @param d expected value + */ +export function equal(c: unknown, d: unknown): boolean { + const seen = new Map(); + return (function compare(a: unknown, b: unknown): boolean { + // Have to render RegExp & Date for string comparison + // unless it's mistreated as object + if ( + a && + b && + ((a instanceof RegExp && b instanceof RegExp) || + (a instanceof URL && b instanceof URL)) + ) { + return String(a) === String(b); + } + if (a instanceof Date && b instanceof Date) { + const aTime = a.getTime(); + const bTime = b.getTime(); + // Check for NaN equality manually since NaN is not + // equal to itself. + if (Number.isNaN(aTime) && Number.isNaN(bTime)) { + return true; + } + return a.getTime() === b.getTime(); + } + if (Object.is(a, b)) { + return true; + } + if (a && typeof a === "object" && b && typeof b === "object") { + if (seen.get(a) === b) { + return true; + } + if (Object.keys(a || {}).length !== Object.keys(b || {}).length) { + return false; + } + if (isKeyedCollection(a) && isKeyedCollection(b)) { + if (a.size !== b.size) { + return false; + } + + let unmatchedEntries = a.size; + + for (const [aKey, aValue] of a.entries()) { + for (const [bKey, bValue] of b.entries()) { + /* Given that Map keys can be references, we need + * to ensure that they are also deeply equal */ + if ( + (aKey === aValue && bKey === bValue && compare(aKey, bKey)) || + (compare(aKey, bKey) && compare(aValue, bValue)) + ) { + unmatchedEntries--; + } + } + } + + return unmatchedEntries === 0; + } + const merged = { ...a, ...b }; + for ( + const key of [ + ...Object.getOwnPropertyNames(merged), + ...Object.getOwnPropertySymbols(merged), + ] + ) { + type Key = keyof typeof merged; + if (!compare(a && a[key as Key], b && b[key as Key])) { + return false; + } + } + seen.set(a, b); + return true; + } + return false; + })(c, d); +} + +/** Make an assertion, error will be thrown if `expr` does not have truthy value. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` and `expected` are equal, deeply. If not + * deeply equal, then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertEquals(1, 2) + *``` + */ +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertEquals(actual: T, expected: T, msg?: string): void; +export function assertEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (equal(actual, expected)) { + return; + } + let message = ""; + const actualString = _format(actual); + const expectedString = _format(expected); + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + if (msg) { + message = msg; + } + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not equal, deeply. + * If not then throw. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertNotEquals(1, 2) + *``` + */ +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotEquals(actual: T, expected: T, msg?: string): void; +export function assertNotEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (!equal(actual, expected)) { + return; + } + let actualString: string; + let expectedString: string; + try { + actualString = String(actual); + } catch (e) { + actualString = "[Cannot display]"; + } + try { + expectedString = String(expected); + } catch (e) { + expectedString = "[Cannot display]"; + } + if (!msg) { + msg = `actual: ${actualString} expected: ${expectedString}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` and `expected` are strictly equal. If + * not then throw. + * ```ts + * assertStrictEquals(1, 2) + * ``` + */ +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual === expected) { + return; + } + + let message: string; + + if (msg) { + message = msg; + } else { + const actualString = _format(actual); + const expectedString = _format(expected); + + if (actualString === expectedString) { + const withOffset = actualString + .split("\n") + .map((l) => ` ${l}`) + .join("\n"); + message = + `Values have the same structure but are not reference-equal:\n\n${ + red(withOffset) + }\n`; + } else { + try { + const diffResult = diff( + actualString.split("\n"), + expectedString.split("\n"), + ); + const diffMsg = buildMessage(diffResult).join("\n"); + message = `Values are not strictly equal:\n${diffMsg}`; + } catch (e) { + message = `\n${red(CAN_NOT_DISPLAY)} + \n\n`; + } + } + } + + throw new AssertionError(message); +} + +/** + * Make an assertion that `actual` and `expected` are not strictly equal. + * If the values are strictly equal then throw. + * ```ts + * assertNotStrictEquals(1, 1) + * ``` + */ +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: T, + expected: T, + msg?: string, +): void; +export function assertNotStrictEquals( + actual: unknown, + expected: unknown, + msg?: string, +): void { + if (actual !== expected) { + return; + } + + throw new AssertionError( + msg ?? `Expected "actual" to be strictly unequal to: ${_format(actual)}\n`, + ); +} + +/** + * Make an assertion that actual is not null or undefined. If not + * then thrown. + */ +export function assertExists( + actual: unknown, + msg?: string, +): void { + if (actual === undefined || actual === null) { + if (!msg) { + msg = + `actual: "${actual}" expected to match anything but null or undefined`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that actual includes expected. If not + * then thrown. + */ +export function assertStringIncludes( + actual: string, + expected: string, + msg?: string, +): void { + if (!actual.includes(expected)) { + if (!msg) { + msg = `actual: "${actual}" expected to contain: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` includes the `expected` values. + * If not then an error will be thrown. + * + * Type parameter can be specified to ensure values under comparison have the same type. + * For example: + *```ts + *assertArrayIncludes([1, 2], [2]) + *``` + */ +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void; +export function assertArrayIncludes( + actual: ArrayLike, + expected: ArrayLike, + msg?: string, +): void { + const missing: unknown[] = []; + for (let i = 0; i < expected.length; i++) { + let found = false; + for (let j = 0; j < actual.length; j++) { + if (equal(expected[i], actual[j])) { + found = true; + break; + } + } + if (!found) { + missing.push(expected[i]); + } + } + if (missing.length === 0) { + return; + } + if (!msg) { + msg = `actual: "${_format(actual)}" expected to include: "${ + _format(expected) + }"\nmissing: ${_format(missing)}`; + } + throw new AssertionError(msg); +} + +/** + * Make an assertion that `actual` match RegExp `expected`. If not + * then thrown + */ +export function assertMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (!expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` not match RegExp `expected`. If match + * then thrown + */ +export function assertNotMatch( + actual: string, + expected: RegExp, + msg?: string, +): void { + if (expected.test(actual)) { + if (!msg) { + msg = `actual: "${actual}" expected to not match: "${expected}"`; + } + throw new AssertionError(msg); + } +} + +/** + * Make an assertion that `actual` object is a subset of `expected` object, deeply. + * If not, then throw. + */ +export function assertObjectMatch( + actual: Record, + expected: Record, +): void { + type loose = Record; + const seen = new WeakMap(); + return assertEquals( + (function filter(a: loose, b: loose): loose { + // Prevent infinite loop with circular references with same filter + if ((seen.has(a)) && (seen.get(a) === b)) { + return a; + } + seen.set(a, b); + // Filter keys and symbols which are present in both actual and expected + const filtered = {} as loose; + const entries = [ + ...Object.getOwnPropertyNames(a), + ...Object.getOwnPropertySymbols(a), + ] + .filter((key) => key in b) + .map((key) => [key, a[key as string]]) as Array<[string, unknown]>; + // Build filtered object and filter recursively on nested objects references + for (const [key, value] of entries) { + if (typeof value === "object") { + const subset = (b as loose)[key]; + if ((typeof subset === "object") && (subset)) { + filtered[key] = filter(value as loose, subset as loose); + continue; + } + } + filtered[key] = value; + } + return filtered; + })(actual, expected), + expected, + ); +} + +/** + * Forcefully throws a failed assertion + */ +export function fail(msg?: string): void { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + assert(false, `Failed assertion${msg ? `: ${msg}` : "."}`); +} + +/** + * Executes a function, expecting it to throw. If it does not, then it + * throws. An error class and a string that should be included in the + * error message can also be asserted. + */ +export function assertThrows( + fn: () => T, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Error { + let doesThrow = false; + let error = null; + try { + fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but was "${e.constructor.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** + * Executes a function which returns a promise, expecting it to throw or reject. + * If it does not, then it throws. An error class and a string that should be + * included in the error message can also be asserted. + */ +export async function assertThrowsAsync( + fn: () => Promise, + ErrorClass?: Constructor, + msgIncludes = "", + msg?: string, +): Promise { + let doesThrow = false; + let error = null; + try { + await fn(); + } catch (e) { + if (e instanceof Error === false) { + throw new AssertionError("A non-Error object was thrown or rejected."); + } + if (ErrorClass && !(e instanceof ErrorClass)) { + msg = + `Expected error to be instance of "${ErrorClass.name}", but got "${e.name}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + if ( + msgIncludes && + !stripColor(e.message).includes(stripColor(msgIncludes)) + ) { + msg = + `Expected error message to include "${msgIncludes}", but got "${e.message}"${ + msg ? `: ${msg}` : "." + }`; + throw new AssertionError(msg); + } + doesThrow = true; + error = e; + } + if (!doesThrow) { + msg = `Expected function to throw${msg ? `: ${msg}` : "."}`; + throw new AssertionError(msg); + } + return error; +} + +/** Use this to stub out methods that will throw when invoked. */ +export function unimplemented(msg?: string): never { + throw new AssertionError(msg || "unimplemented"); +} + +/** Use this to assert unreachable code. */ +export function unreachable(): never { + throw new AssertionError("unreachable"); +} diff --git a/bundler/tests/.cache/deno/a3ca7b26f6949136fe4633683d1debc8213f5e06.ts b/bundler/tests/.cache/deno/a3ca7b26f6949136fe4633683d1debc8213f5e06.ts new file mode 100644 index 00000000000..52f8be3589e --- /dev/null +++ b/bundler/tests/.cache/deno/a3ca7b26f6949136fe4633683d1debc8213f5e06.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/encoding/utf8.ts + + +export * from "https://deno.land/std@0.81.0/encoding/utf8.ts"; diff --git a/bundler/tests/.cache/deno/a4185d797ae420ea1d5c3946abec64df7d3a03b5.ts b/bundler/tests/.cache/deno/a4185d797ae420ea1d5c3946abec64df7d3a03b5.ts new file mode 100644 index 00000000000..250438afddb --- /dev/null +++ b/bundler/tests/.cache/deno/a4185d797ae420ea1d5c3946abec64df7d3a03b5.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/keysIn.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Returns a list containing the names of all the properties of the supplied + * object, including prototype properties. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own and prototype properties. + * @see R.keys, R.valuesIn + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.keysIn(f); //=> ['x', 'y'] + */ +var keysIn = _curry1(function keysIn(obj) { + var prop; + var ks = []; + for (prop in obj) { + ks[ks.length] = prop; + } + return ks; +}); +export default keysIn; diff --git a/bundler/tests/.cache/deno/a41e999c2223615484075b574cf34570a0c89864.ts b/bundler/tests/.cache/deno/a41e999c2223615484075b574cf34570a0c89864.ts new file mode 100644 index 00000000000..969fa989800 --- /dev/null +++ b/bundler/tests/.cache/deno/a41e999c2223615484075b574cf34570a0c89864.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/math.ts + + +export function power_mod(n: bigint, p: bigint, m: bigint): bigint { + if (p === 1n) return n; + if (p % 2n === 0n) { + const t = power_mod(n, p >> 1n, m); + return (t * t) % m; + } else { + const t = power_mod(n, p >> 1n, m); + return (t * t * n) % m; + } +} diff --git a/bundler/tests/.cache/deno/a429787bd696fd73d9b3aac10919c5df3f520668.ts b/bundler/tests/.cache/deno/a429787bd696fd73d9b3aac10919c5df3f520668.ts new file mode 100644 index 00000000000..f0f9859e612 --- /dev/null +++ b/bundler/tests/.cache/deno/a429787bd696fd73d9b3aac10919c5df3f520668.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/takeLastWhile.js + + +import _curry2 from './internal/_curry2.js'; +import slice from './slice.js'; + + +/** + * Returns a new list containing the last `n` elements of a given list, passing + * each value to the supplied predicate function, and terminating when the + * predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.dropLastWhile, R.addIndex + * @example + * + * const isNotOne = x => x !== 1; + * + * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] + * + * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda' + */ +var takeLastWhile = _curry2(function takeLastWhile(fn, xs) { + var idx = xs.length - 1; + while (idx >= 0 && fn(xs[idx])) { + idx -= 1; + } + return slice(idx + 1, Infinity, xs); +}); +export default takeLastWhile; diff --git a/bundler/tests/.cache/deno/a44b4161bbf7811a35d53227fa5d18b8bc839169.ts b/bundler/tests/.cache/deno/a44b4161bbf7811a35d53227fa5d18b8bc839169.ts new file mode 100644 index 00000000000..d9eb80fd317 --- /dev/null +++ b/bundler/tests/.cache/deno/a44b4161bbf7811a35d53227fa5d18b8bc839169.ts @@ -0,0 +1,257 @@ +// Loaded from https://deno.land/std@0.85.0/hash/_wasm/wasm.js + + +// deno-lint-ignore-file +//deno-fmt-ignore-file +//deno-lint-ignore-file +import * as base64 from "../../encoding/base64.ts";export const source = base64.decode("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HiADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpB/IXAACEEQQAMEQsgAEHYgcAARwRAIAAoAABB89CFiwNHDRALIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB4ABBCBChASIDRQ0XIANCADcDACADQQA2AhwgAyACKQPwAjcDICADQfiXwAApAwA3AwggA0EQakGAmMAAKQMANwMAIANBGGpBiJjAACgCADYCACADQShqIAgpAwA3AwAgA0EwaiAHKQMANwMAIANBOGogBikDADcDACADQUBrIAopAwA3AwAgA0HIAGogCSkDADcDACADQdAAaiAFKQMANwMAIANB2ABqIAQpAwA3AwBB3IHAACEEQQAMEAsgAEGAgsAARg0FIABBgILAAEEGEIMBRQ0FIABBrILAAEYNBiAAQayCwABBBhCDAUUNBiAAQdiCwABGDQcgAEHYgsAAQQYQgwFFDQcgAEGEg8AARwRAIABBhIPAAEEGEIMBDQ8LIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNGCADQgA3AwggA0IANwMAIANBADYCUCADQZCZwAApAwA3AxAgA0EYakGYmcAAKQMANwMAIANBIGpBoJnAACkDADcDACADQShqQaiZwAApAwA3AwAgA0EwakGwmcAAKQMANwMAIANBOGpBuJnAACkDADcDACADQUBrQcCZwAApAwA3AwAgA0HIAGpByJnAACkDADcDACADQdQAaiACQfACakGAARCLARpBjIPAACEEQQAMDwsgAEGwg8AARg0HIAApAABC89CFm9PFjJk0UQ0HIABB3IPAAEYNCCAAKQAAQvPQhZvTxcyaNlENCCAAQYiEwABGDQkgACkAAELz0IWb0+WMnDRRDQkgAEG0hMAARwRAIAApAABC89CFm9OlzZgyUg0OCyACQZgBakEAQcgBEJEBGiACQf4CakIANwEAIAJBhgNqQgA3AQAgAkGOA2pCADcBACACQZYDakIANwEAIAJBngNqQgA3AQAgAkGmA2pCADcBACACQa4DakIANwEAIAJBtgNqQQA2AQAgAkG6A2pBADsBACACQQA7AfQCIAJCADcB9gIgAkHIADYC8AIgAkGIBGogAkHwAmpBzAAQiwEaIAJBCGogAkGIBGpBBHJByAAQiwEaQZgCQQgQoQEiA0UNGyADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpBvITAACEEQQAMDgsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBEDYCiAQgAkEAOwGMBCACQQA2AY4EIAJBqAFqIgMgAkGYBGoiBCgCADYCACACQaABaiIJIAJBkARqIgUpAwA3AwAgAkHoAmoiBiACQaQBaikCADcDACACIAIpA4gENwOYASACIAIpApwBNwPgAiACQcABaiIHQgA3AwAgAkG4AWoiCEIANwMAIAJBsAFqIg1CADcDACADQgA3AwAgCUIANwMAIAJCADcDmAEgAkH6AmpCADcBACACQYIDakEAOwEAIAJBEDYC8AIgAkEAOwH0AiACQQA2AfYCIAQgAkGAA2ooAgA2AgAgBSACQfgCaiIKKQMANwMAIAJBEGoiCyACQZQEaikCADcDACACIAIpA/ACNwOIBCACIAIpAowENwMIIAJB0AFqIgwgCykDADcDACACIAIpAwg3A8gBIAogBikDADcDACACIAIpA+ACNwPwAiACQcAEaiIGIAwpAwA3AwAgAkG4BGoiCyACKQPIATcDACACQbAEaiIMIAcpAwA3AwAgAkGoBGoiByAIKQMANwMAIAJBoARqIgggDSkDADcDACAEIAMpAwA3AwAgBSAJKQMANwMAIAIgAikDmAE3A4gEQdQAQQQQoQEiA0UNDiADQQA2AgAgAyACKQPwAjcCBCADIAIpA4gENwIUIANBDGogCikDADcCACADQRxqIAUpAwA3AgAgA0EkaiAEKQMANwIAIANBLGogCCkDADcCACADQTRqIAcpAwA3AgAgA0E8aiAMKQMANwIAIANBxABqIAspAwA3AgAgA0HMAGogBikDADcCAEGEgMAAIQRBAAwNCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEyADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQdQAakHIl8AAKQIANwIAIANBwJfAACkCADcCTEGsgMAAIQRBAAwMCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEiADQgA3AwAgA0EANgIcIAMgAikD8AI3AyAgA0H4l8AAKQMANwMIIANBEGpBgJjAACkDADcDACADQRhqQYiYwAAoAgA2AgAgA0EoaiAIKQMANwMAIANBMGogBykDADcDACADQThqIAYpAwA3AwAgA0FAayAKKQMANwMAIANByABqIAkpAwA3AwAgA0HQAGogBSkDADcDACADQdgAaiAEKQMANwMAQYSBwAAhBEEADAsLIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB+ABBCBChASIDRQ0MIANCADcDACADQQA2AjAgAyACKQPwAjcCNCADQdCXwAApAwA3AwggA0EQakHYl8AAKQMANwMAIANBGGpB4JfAACkDADcDACADQSBqQeiXwAApAwA3AwAgA0EoakHwl8AAKQMANwMAIANBPGogCCkDADcCACADQcQAaiAHKQMANwIAIANBzABqIAYpAwA3AgAgA0HUAGogCikDADcCACADQdwAaiAJKQMANwIAIANB5ABqIAUpAwA3AgAgA0HsAGogBCkDADcCAEG0gcAAIQRBAAwKCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQfAAQQgQoQEiA0UNESADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQeQAakGkmMAAKQIANwIAIANB3ABqQZyYwAApAgA3AgAgA0HUAGpBlJjAACkCADcCACADQYyYwAApAgA3AkxBiILAACEEQQAMCQsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBnARqQgA3AgAgAkGkBGpCADcCACACQawEakIANwIAIAJBtARqQgA3AgAgAkG8BGpCADcCACACQcQEakEAOgAAIAJBxQRqQQA2AAAgAkHJBGpBADsAACACQcsEakEAOgAAIAJBwAA2AogEIAJBADsBjAQgAkEANgGOBCACQZgBaiACQYgEakHEABCLARogAkGoA2oiBCACQdQBaikCADcDACACQaADaiIFIAJBzAFqKQIANwMAIAJBmANqIgkgAkHEAWopAgA3AwAgAkGQA2oiCiACQbwBaikCADcDACACQYgDaiIGIAJBtAFqKQIANwMAIAJBgANqIgcgAkGsAWopAgA3AwAgAkH4AmoiCCACQaQBaikCADcDACACIAIpApwBNwPwAkHwAEEIEKEBIgNFDRAgA0EANgIIIANCADcDACADIAIpA/ACNwIMIANBFGogCCkDADcCACADQRxqIAcpAwA3AgAgA0EkaiAGKQMANwIAIANBLGogCikDADcCACADQTRqIAkpAwA3AgAgA0E8aiAFKQMANwIAIANBxABqIAQpAwA3AgAgA0HkAGpBxJjAACkCADcCACADQdwAakG8mMAAKQIANwIAIANB1ABqQbSYwAApAgA3AgAgA0GsmMAAKQIANwJMQbSCwAAhBEEADAgLIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNECADQgA3AwggA0IANwMAIANBADYCUCADQdCYwAApAwA3AxAgA0EYakHYmMAAKQMANwMAIANBIGpB4JjAACkDADcDACADQShqQeiYwAApAwA3AwAgA0EwakHwmMAAKQMANwMAIANBOGpB+JjAACkDADcDACADQUBrQYCZwAApAwA3AwAgA0HIAGpBiJnAACkDADcDACADQdQAaiACQfACakGAARCLARpB4ILAACEEQQAMBwsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GUAUcNAAsgAkGIBGogAkHwAmpBlAEQiwEaIAJBCGogAkGIBGpBBHJBkAEQiwEaQeACQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGQARCLARpBuIPAACEEQQAMBgsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GMAUcNAAsgAkGIBGogAkHwAmpBjAEQiwEaIAJBCGogAkGIBGpBBHJBiAEQiwEaQdgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGIARCLARpB5IPAACEEQQAMBQsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0HsAEcNAAsgAkGIBGogAkHwAmpB7AAQiwEaIAJBCGogAkGIBGpBBHJB6AAQiwEaQbgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHoABCLARpBkITAACEEQQAMBAsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GUAUcNAAsgAkGIBGogAkHwAmpBlAEQiwEaIAJBCGogAkGIBGpBBHJBkAEQiwEaQeACQQgQoQEiA0UNDSADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGQARCLARpB7ITAACEEQQAMAwsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GMAUcNAAsgAkGIBGogAkHwAmpBjAEQiwEaIAJBCGogAkGIBGpBBHJBiAEQiwEaQdgCQQgQoQEiA0UNDSADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGIARCLARpBnIXAACEEQQAMAgsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0HsAEcNAAsgAkGIBGogAkHwAmpB7AAQiwEaIAJBCGogAkGIBGpBBHJB6AAQiwEaQbgCQQgQoQEiA0UNDSADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHoABCLARpBzIXAACEEQQAMAQsgAkEBNgL0AiACIAI2AvACQThBARChASIDRQ0DIAJCODcCjAQgAiADNgKIBCACIAJBiARqNgIIIAJBrAFqQQE2AgAgAkIBNwKcASACQbyGwAA2ApgBIAIgAkHwAmo2AqgBIAJBCGogAkGYAWoQFg0EIAIoAogEIAIoApAEEAAhAyACKAKMBARAIAIoAogEEBALQQELIAEEQCAAEBALDQRBDEEEEKEBIgBFDQUgACAENgIIIAAgAzYCBCAAQQA2AgAgAkGgBWokACAADwtB1ABBBEG0pcAAKAIAIgBBAiAAGxEAAAALQfgAQQhBtKXAACgCACIAQQIgABsRAAAAC0E4QQFBtKXAACgCACIAQQIgABsRAAAAC0GYh8AAQTMgAkGYAWpBzIfAAEHch8AAEHkACyADEAIAC0EMQQRBtKXAACgCACIAQQIgABsRAAAAC0HgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAtB8ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALQdgBQQhBtKXAACgCACIAQQIgABsRAAAAC0HgAkEIQbSlwAAoAgAiAEECIAAbEQAAAAtB2AJBCEG0pcAAKAIAIgBBAiAAGxEAAAALQbgCQQhBtKXAACgCACIAQQIgABsRAAAAC0GYAkEIQbSlwAAoAgAiAEECIAAbEQAAAAuJLgEifyMAQUBqIgxBGGoiFUIANwMAIAxBIGoiD0IANwMAIAxBOGoiFkIANwMAIAxBMGoiEEIANwMAIAxBKGoiF0IANwMAIAxBCGoiCSABKQAINwMAIAxBEGoiFCABKQAQNwMAIBUgASgAGCIVNgIAIA8gASgAICIPNgIAIAwgASkAADcDACAMIAEoABwiEjYCHCAMIAEoACQiGTYCJCAXIAEoACgiFzYCACAMIAEoACwiGzYCLCAQIAEoADAiEDYCACAMIAEoADQiHDYCNCAWIAEoADgiFjYCACAMIAEoADwiATYCPCAAIBYgDyABIBkgDCgCACIYIBQoAgAiFCAYIBsgDCgCDCIdIAwoAgQiHiABIBggASAXIAwoAhQiDCAAKAIQIgQgGCAAKAIAIiMgACgCDCITIAAoAggiBSAAKAIEIgZzc2pqQQt3aiIDQQp3IgJqIB0gBUEKdyIFaiAEIB5qIAUgBnMgA3NqQQ53IBNqIgQgAnMgEyAJKAIAIhNqIAMgBkEKdyIGcyAEc2pBD3cgBWoiA3NqQQx3IAZqIgUgA0EKdyIJcyAGIBRqIAMgBEEKdyIGcyAFc2pBBXcgAmoiA3NqQQh3IAZqIgJBCnciBGogDyAFQQp3IgVqIAYgFWogAyAFcyACc2pBB3cgCWoiBiAEcyAJIBJqIAIgA0EKdyIDcyAGc2pBCXcgBWoiAnNqQQt3IANqIgUgAkEKdyIJcyADIBlqIAIgBkEKdyIGcyAFc2pBDXcgBGoiA3NqQQ53IAZqIgJBCnciBGogHCAFQQp3IgVqIAYgG2ogAyAFcyACc2pBD3cgCWoiBiAEcyAJIBBqIAIgA0EKdyIDcyAGc2pBBncgBWoiAnNqQQd3IANqIgkgAkEKdyINcyADIBZqIAIgBkEKdyIKcyAJc2pBCXcgBGoiB3NqQQh3IApqIgVBCnciBmogBiASIB0gFSAZIAAoAhgiA0EKdyICaiACIBggACgCHCIOQQp3IgRqIBIgACgCICIIaiAIIBYgACgCJCILaiAMIAAoAhRqIA4gCEF/c3IgA3NqQeaXioUFakEIdyALaiIIIAMgBEF/c3JzakHml4qFBWpBCXdqIgMgCCACQX9zcnNqQeaXioUFakEJdyAEaiICIAMgCEEKdyIEQX9zcnNqQeaXioUFakELd2oiCCACIANBCnciA0F/c3JzakHml4qFBWpBDXcgBGoiDkEKdyILaiAcIAhBCnciEWogFCACQQp3IgJqIAMgG2ogBCATaiAOIAggAkF/c3JzakHml4qFBWpBD3cgA2oiAyAOIBFBf3Nyc2pB5peKhQVqQQ93IAJqIgIgAyALQX9zcnNqQeaXioUFakEFdyARaiIEIAIgA0EKdyIDQX9zcnNqQeaXioUFakEHdyALaiIIIAQgAkEKdyICQX9zcnNqQeaXioUFakEHdyADaiIOQQp3IgtqIBcgCEEKdyIRaiAeIARBCnciBGogAiAPaiABIANqIA4gCCAEQX9zcnNqQeaXioUFakEIdyACaiIDIA4gEUF/c3JzakHml4qFBWpBC3cgBGoiAiADIAtBf3Nyc2pB5peKhQVqQQ53IBFqIgQgAiADQQp3IghBf3Nyc2pB5peKhQVqQQ53IAtqIg4gBCACQQp3IgtBf3Nyc2pB5peKhQVqQQx3IAhqIhFBCnciA2ogAyAdIA5BCnciAmogAiAbIARBCnciGmogCyAVaiARIAJBf3NxIAIgBXFyakGkorfiBWpBCXcgGmoiAiADcSAFIANBf3NxcmpBpKK34gVqQQ13aiIDIAZxIAIgBkF/c3FyakGkorfiBWpBD3dqIgQgAkEKdyIGcSADIAZBf3NxcmpBpKK34gVqQQd3aiIfIANBCnciA3EgBCADQX9zcXJqQaSit+IFakEMdyAGaiIgQQp3IgJqIBYgH0EKdyIFaiAXIARBCnciBGogAyAMaiAGIBxqIAQgIHEgHyAEQX9zcXJqQaSit+IFakEIdyADaiIGIAVxICAgBUF/c3FyakGkorfiBWpBCXcgBGoiAyACcSAGIAJBf3NxcmpBpKK34gVqQQt3IAVqIgQgBkEKdyIGcSADIAZBf3NxcmpBpKK34gVqQQd3IAJqIh8gA0EKdyIDcSAEIANBf3NxcmpBpKK34gVqQQd3IAZqIiBBCnciAmogGSAfQQp3IgVqIBQgBEEKdyIEaiADIBBqIAYgD2ogBCAgcSAfIARBf3NxcmpBpKK34gVqQQx3IANqIgYgBXEgICAFQX9zcXJqQaSit+IFakEHdyAEaiIDIAJxIAYgAkF/c3FyakGkorfiBWpBBncgBWoiHyAGQQp3IgZxIAMgBkF/c3FyakGkorfiBWpBD3cgAmoiICADQQp3IgNxIB8gA0F/c3FyakGkorfiBWpBDXcgBmoiIUEKdyIiaiAeIBYgECAeIAdBCnciBGogBCAcIAlBCnciBWogBSANIBRqIAogEmogCCAQaiARIA4gGkF/c3JzakHml4qFBWpBBncgC2oiAiAHcSAFIAJBf3NxcmpBmfOJ1AVqQQd3IA1qIgUgAnEgBCAFQX9zcXJqQZnzidQFakEGd2oiBCAFcSACQQp3IgkgBEF/c3FyakGZ84nUBWpBCHdqIgIgBHEgBUEKdyINIAJBf3NxcmpBmfOJ1AVqQQ13IAlqIgVBCnciCmogHSACQQp3IgdqIAEgBEEKdyIEaiANIBVqIAkgF2ogAiAFcSAEIAVBf3NxcmpBmfOJ1AVqQQt3IA1qIgIgBXEgByACQX9zcXJqQZnzidQFakEJdyAEaiIFIAJxIAogBUF/c3FyakGZ84nUBWpBB3cgB2oiBCAFcSACQQp3IgkgBEF/c3FyakGZ84nUBWpBD3cgCmoiAiAEcSAFQQp3Ig0gAkF/c3FyakGZ84nUBWpBB3cgCWoiBUEKdyIKaiATIAJBCnciB2ogDCAEQQp3IgRqIA0gGWogCSAYaiACIAVxIAQgBUF/c3FyakGZ84nUBWpBDHcgDWoiAiAFcSAHIAJBf3NxcmpBmfOJ1AVqQQ93IARqIgUgAnEgCiAFQX9zcXJqQZnzidQFakEJdyAHaiIEIAVxIAJBCnciDSAEQX9zcXJqQZnzidQFakELdyAKaiICIARxIAVBCnciCiACQX9zcXJqQZnzidQFakEHdyANaiIFQQp3IgdqIAwgH0EKdyIJaiABIANqIAYgE2ogCSAhcSAgIAlBf3NxcmpBpKK34gVqQQt3IANqIgYgIUF/c3IgB3NqQfP9wOsGakEJdyAJaiIDIAZBf3NyICJzakHz/cDrBmpBB3cgB2oiCSADQX9zciAGQQp3IgZzakHz/cDrBmpBD3cgImoiByAJQX9zciADQQp3IgNzakHz/cDrBmpBC3cgBmoiCEEKdyIOaiAZIAdBCnciC2ogFSAJQQp3IglqIAMgFmogBiASaiAIIAdBf3NyIAlzakHz/cDrBmpBCHcgA2oiBiAIQX9zciALc2pB8/3A6wZqQQZ3IAlqIgMgBkF/c3IgDnNqQfP9wOsGakEGdyALaiIJIANBf3NyIAZBCnciBnNqQfP9wOsGakEOdyAOaiIHIAlBf3NyIANBCnciA3NqQfP9wOsGakEMdyAGaiIIQQp3Ig5qIBcgB0EKdyILaiATIAlBCnciCWogAyAQaiAGIA9qIAggB0F/c3IgCXNqQfP9wOsGakENdyADaiIGIAhBf3NyIAtzakHz/cDrBmpBBXcgCWoiAyAGQX9zciAOc2pB8/3A6wZqQQ53IAtqIgkgA0F/c3IgBkEKdyIGc2pB8/3A6wZqQQ13IA5qIgcgCUF/c3IgA0EKdyIDc2pB8/3A6wZqQQ13IAZqIghBCnciDmogFSAHQQp3IgtqIA8gFSAPIBcgAkEKdyIRaiAdIARBCnciBGogIEEKdyIaIAQgCiAPaiANIBtqIAIgBXEgBCAFQX9zcXJqQZnzidQFakENdyAKaiICIAVxIBEgAkF/cyIEcXJqQZnzidQFakEMd2oiBSAEcnNqQaHX5/YGakELdyARaiIEIAVBf3NyIAJBCnciAnNqQaHX5/YGakENdyAaaiINQQp3IgpqIAEgBEEKdyIRaiAZIAVBCnciBWogAiAUaiAWIBpqIA0gBEF/c3IgBXNqQaHX5/YGakEGdyACaiICIA1Bf3NyIBFzakGh1+f2BmpBB3cgBWoiBSACQX9zciAKc2pBodfn9gZqQQ53IBFqIgQgBUF/c3IgAkEKdyICc2pBodfn9gZqQQl3IApqIg0gBEF/c3IgBUEKdyIFc2pBodfn9gZqQQ13IAJqIgpBCnciEWogGCANQQp3IhpqIBIgBEEKdyIEaiAFIBNqIAIgHmogCiANQX9zciAEc2pBodfn9gZqQQ93IAVqIgIgCkF/c3IgGnNqQaHX5/YGakEOdyAEaiIFIAJBf3NyIBFzakGh1+f2BmpBCHcgGmoiBCAFQX9zciACQQp3Ig1zakGh1+f2BmpBDXcgEWoiCiAEQX9zciAFQQp3IgVzakGh1+f2BmpBBncgDWoiEUEKdyIaaiADIBxqIAYgFGogCUEKdyIJIAggB0F/c3JzakHz/cDrBmpBB3cgA2oiAiAIQX9zciALc2pB8/3A6wZqQQV3IAlqIgYgAnEgDiAGQX9zcXJqQenttdMHakEPdyALaiIDIAZxIAJBCnciByADQX9zcXJqQenttdMHakEFdyAOaiICIANxIAZBCnciCCACQX9zcXJqQenttdMHakEIdyAHaiIGQQp3Ig5qIAEgAkEKdyILaiAbIANBCnciA2ogCCAdaiAGIAcgHmogAiAGcSADIAZBf3NxcmpB6e210wdqQQt3IAhqIgZxIAsgBkF/c3FyakHp7bXTB2pBDncgA2oiAyAGcSAOIANBf3NxcmpB6e210wdqQQ53IAtqIgIgA3EgBkEKdyIHIAJBf3NxcmpB6e210wdqQQZ3IA5qIgYgAnEgA0EKdyIIIAZBf3NxcmpB6e210wdqQQ53IAdqIgNBCnciDmogHCAGQQp3IgtqIBMgAkEKdyICaiAIIBBqIAcgDGogAyAGcSACIANBf3NxcmpB6e210wdqQQZ3IAhqIgYgA3EgCyAGQX9zcXJqQenttdMHakEJdyACaiIDIAZxIA4gA0F/c3FyakHp7bXTB2pBDHcgC2oiAiADcSAGQQp3IgcgAkF/c3FyakHp7bXTB2pBCXcgDmoiBiACcSADQQp3IgggBkF/c3FyakHp7bXTB2pBDHcgB2oiA0EKdyIOaiAWIAJBCnciAmogCCAXaiADIAcgEmogAyAGcSACIANBf3NxcmpB6e210wdqQQV3IAhqIgNxIAZBCnciByADQX9zcXJqQenttdMHakEPdyACaiIGIANxIA4gBkF/c3FyakHp7bXTB2pBCHcgB2oiCCAVIB0gGCAQIApBCnciAmogAiAMIARBCnciBGogBSAbaiACIA0gHGogESAKQX9zciAEc2pBodfn9gZqQQV3IAVqIgIgEUF/c3JzakGh1+f2BmpBDHcgBGoiBCACQX9zciAac2pBodfn9gZqQQd3aiINIARBf3NyIAJBCnciCnNqQaHX5/YGakEFdyAaaiILQQp3IgJqIAIgFyANQQp3IgVqIAUgGyAEQQp3IgRqIAQgCiAZaiAJIB5qIAQgC3EgDSAEQX9zcXJqQdz57vh4akELdyAKaiIEIAVxIAsgBUF/c3FyakHc+e74eGpBDHdqIgUgAnEgBCACQX9zcXJqQdz57vh4akEOd2oiDSAEQQp3IgJxIAUgAkF/c3FyakHc+e74eGpBD3dqIgogBUEKdyIFcSANIAVBf3NxcmpB3Pnu+HhqQQ53IAJqIgtBCnciBGogHCAKQQp3IglqIBQgDUEKdyINaiAFIBBqIAIgD2ogCyANcSAKIA1Bf3NxcmpB3Pnu+HhqQQ93IAVqIgIgCXEgCyAJQX9zcXJqQdz57vh4akEJdyANaiIFIARxIAIgBEF/c3FyakHc+e74eGpBCHcgCWoiDSACQQp3IgJxIAUgAkF/c3FyakHc+e74eGpBCXcgBGoiCiAFQQp3IgVxIA0gBUF/c3FyakHc+e74eGpBDncgAmoiC0EKdyIEaiAEIAwgCkEKdyIJaiAWIA1BCnciDWogASAFaiACIBJqIAsgDXEgCiANQX9zcXJqQdz57vh4akEFdyAFaiICIAlxIAsgCUF/c3FyakHc+e74eGpBBncgDWoiBSAEcSACIARBf3NxcmpB3Pnu+HhqQQh3IAlqIgQgAkEKdyICcSAFIAJBf3NxcmpB3Pnu+HhqQQZ3aiIJIAVBCnciBXEgBCAFQX9zcXJqQdz57vh4akEFdyACaiINQQp3IgpzIAcgEGogA0EKdyIDIA1zIAhzakEIdyAOaiIHc2pBBXcgA2oiDkEKdyILaiAIQQp3IgggHmogAyAXaiAHIAhzIA5zakEMdyAKaiIDIAtzIAogFGogDiAHQQp3IgpzIANzakEJdyAIaiIHc2pBDHcgCmoiCCAHQQp3Ig5zIAogDGogByADQQp3IgNzIAhzakEFdyALaiIKc2pBDncgA2oiB0EKdyILaiAIQQp3IgggE2ogAyASaiAIIApzIAdzakEGdyAOaiIDIAtzIA4gFWogByAKQQp3IgpzIANzakEIdyAIaiIHc2pBDXcgCmoiCCAHQQp3Ig5zIAogHGogByADQQp3IgNzIAhzakEGdyALaiIKc2pBBXcgA2oiB0EKdyILIAAoAhRqNgIUIAAgAyAYaiAKIAhBCnciCHMgB3NqQQ93IA5qIhFBCnciGiAAKAIQajYCECAAIAAoAiAgDiAdaiAHIApBCnciCnMgEXNqQQ13IAhqIgdBCndqNgIgIAAgIyAPIBMgGCAEQQp3IgNqIAUgFGogAiATaiADIA1xIAkgA0F/c3FyakHc+e74eGpBDHcgBWoiGCAGIAlBCnciFEF/c3JzakHO+s/KempBCXcgA2oiAyAYIAZBCnciBkF/c3JzakHO+s/KempBD3cgFGoiAkEKdyIFaiAQIANBCnciE2ogEiAYQQp3IhBqIAYgGWogDCAUaiACIAMgEEF/c3JzakHO+s/KempBBXcgBmoiDCACIBNBf3Nyc2pBzvrPynpqQQt3IBBqIhIgDCAFQX9zcnNqQc76z8p6akEGdyATaiIQIBIgDEEKdyIMQX9zcnNqQc76z8p6akEIdyAFaiIYIBAgEkEKdyISQX9zcnNqQc76z8p6akENdyAMaiIUQQp3IhNqIB0gGEEKdyIPaiAPIB4gEEEKdyIQaiASIBZqIAwgF2ogFCAYIBBBf3Nyc2pBzvrPynpqQQx3IBJqIgwgFCAPQX9zcnNqQc76z8p6akEFdyAQaiIPIAwgE0F/c3JzakHO+s/KempBDHdqIhIgDyAMQQp3IgxBf3Nyc2pBzvrPynpqQQ13IBNqIhcgEiAPQQp3Ig9Bf3Nyc2pBzvrPynpqQQ53IAxqIhBBCnciFmo2AgAgACAIIBlqIAsgEXMgB3NqQQt3IApqIhkgACgCHGo2AhwgACAAKAIYIAogG2ogByAacyAZc2pBC3cgC2pqNgIYIAAgDCAbaiAQIBcgEkEKdyIMQX9zcnNqQc76z8p6akELdyAPaiISQQp3IhkgACgCJGo2AiQgACAAKAIMIA8gFWogEiAQIBdBCnciFUF/c3JzakHO+s/KempBCHcgDGoiD0EKd2o2AgwgACABIAxqIA8gEiAWQX9zcnNqQc76z8p6akEFdyAVaiIBIAAoAghqNgIIIAAgACgCBCAVIBxqIAEgDyAZQX9zcnNqQc76z8p6akEGdyAWamo2AgQLqi0BIH8jAEFAaiIPQRhqIhVCADcDACAPQSBqIg1CADcDACAPQThqIhNCADcDACAPQTBqIhBCADcDACAPQShqIhFCADcDACAPQQhqIhggASkACDcDACAPQRBqIhQgASkAEDcDACAVIAEoABgiFTYCACANIAEoACAiDTYCACAPIAEpAAA3AwAgDyABKAAcIhI2AhwgDyABKAAkIho2AiQgESABKAAoIhE2AgAgDyABKAAsIhs2AiwgECABKAAwIhA2AgAgDyABKAA0Ihw2AjQgEyABKAA4IhM2AgAgDyABKAA8IgE2AjwgACAbIBEgDygCFCIWIBYgHCARIBYgEiAaIA0gGiAVIBIgGyAVIA8oAgQiFyAAKAIQIh5qIAAoAggiH0EKdyIEIAAoAgQiHXMgDygCACIZIAAoAgAiICAAKAIMIgUgHSAfc3NqakELdyAeaiIDc2pBDncgBWoiAkEKdyIHaiAUKAIAIhQgHUEKdyIGaiAYKAIAIhggBWogAyAGcyACc2pBD3cgBGoiCCAHcyAPKAIMIg8gBGogAiADQQp3IgNzIAhzakEMdyAGaiICc2pBBXcgA2oiCSACQQp3IgpzIAMgFmogAiAIQQp3IgNzIAlzakEIdyAHaiICc2pBB3cgA2oiB0EKdyIIaiAaIAlBCnciCWogAyASaiACIAlzIAdzakEJdyAKaiIDIAhzIAogDWogByACQQp3IgJzIANzakELdyAJaiIHc2pBDXcgAmoiCSAHQQp3IgpzIAIgEWogByADQQp3IgNzIAlzakEOdyAIaiICc2pBD3cgA2oiB0EKdyIIaiAIIAEgAkEKdyILaiAKIBxqIAMgEGogAiAJQQp3IgNzIAdzakEGdyAKaiICIAcgC3NzakEHdyADaiIHIAJBCnciCXMgAyATaiACIAhzIAdzakEJdyALaiIIc2pBCHdqIgMgCHEgB0EKdyIHIANBf3NxcmpBmfOJ1AVqQQd3IAlqIgJBCnciCmogESADQQp3IgtqIBcgCEEKdyIIaiAHIBxqIAkgFGogAiADcSAIIAJBf3NxcmpBmfOJ1AVqQQZ3IAdqIgMgAnEgCyADQX9zcXJqQZnzidQFakEIdyAIaiICIANxIAogAkF/c3FyakGZ84nUBWpBDXcgC2oiByACcSADQQp3IgggB0F/c3FyakGZ84nUBWpBC3cgCmoiAyAHcSACQQp3IgkgA0F/c3FyakGZ84nUBWpBCXcgCGoiAkEKdyIKaiAZIANBCnciC2ogECAHQQp3IgdqIAkgD2ogASAIaiACIANxIAcgAkF/c3FyakGZ84nUBWpBB3cgCWoiAyACcSALIANBf3NxcmpBmfOJ1AVqQQ93IAdqIgIgA3EgCiACQX9zcXJqQZnzidQFakEHdyALaiIHIAJxIANBCnciCCAHQX9zcXJqQZnzidQFakEMdyAKaiIDIAdxIAJBCnciCSADQX9zcXJqQZnzidQFakEPdyAIaiICQQp3IgpqIBsgA0EKdyILaiATIAdBCnciB2ogCSAYaiAIIBZqIAIgA3EgByACQX9zcXJqQZnzidQFakEJdyAJaiIDIAJxIAsgA0F/c3FyakGZ84nUBWpBC3cgB2oiAiADcSAKIAJBf3NxcmpBmfOJ1AVqQQd3IAtqIgcgAnEgA0EKdyIDIAdBf3NxcmpBmfOJ1AVqQQ13IApqIgggB3EgAkEKdyICIAhBf3MiC3FyakGZ84nUBWpBDHcgA2oiCUEKdyIKaiAUIAhBCnciCGogEyAHQQp3IgdqIAIgEWogAyAPaiAJIAtyIAdzakGh1+f2BmpBC3cgAmoiAyAJQX9zciAIc2pBodfn9gZqQQ13IAdqIgIgA0F/c3IgCnNqQaHX5/YGakEGdyAIaiIHIAJBf3NyIANBCnciA3NqQaHX5/YGakEHdyAKaiIIIAdBf3NyIAJBCnciAnNqQaHX5/YGakEOdyADaiIJQQp3IgpqIBggCEEKdyILaiAXIAdBCnciB2ogAiANaiABIANqIAkgCEF/c3IgB3NqQaHX5/YGakEJdyACaiIDIAlBf3NyIAtzakGh1+f2BmpBDXcgB2oiAiADQX9zciAKc2pBodfn9gZqQQ93IAtqIgcgAkF/c3IgA0EKdyIDc2pBodfn9gZqQQ53IApqIgggB0F/c3IgAkEKdyICc2pBodfn9gZqQQh3IANqIglBCnciCmogGyAIQQp3IgtqIBwgB0EKdyIHaiACIBVqIAMgGWogCSAIQX9zciAHc2pBodfn9gZqQQ13IAJqIgMgCUF/c3IgC3NqQaHX5/YGakEGdyAHaiICIANBf3NyIApzakGh1+f2BmpBBXcgC2oiByACQX9zciADQQp3IghzakGh1+f2BmpBDHcgCmoiCSAHQX9zciACQQp3IgpzakGh1+f2BmpBB3cgCGoiC0EKdyIDaiADIBsgCUEKdyICaiACIBogB0EKdyIHaiAHIAogF2ogCCAQaiALIAlBf3NyIAdzakGh1+f2BmpBBXcgCmoiByACcSALIAJBf3NxcmpB3Pnu+HhqQQt3aiICIANxIAcgA0F/c3FyakHc+e74eGpBDHdqIgkgB0EKdyIDcSACIANBf3NxcmpB3Pnu+HhqQQ53aiIKIAJBCnciAnEgCSACQX9zcXJqQdz57vh4akEPdyADaiILQQp3IgdqIBQgCkEKdyIIaiAQIAlBCnciCWogAiANaiADIBlqIAkgC3EgCiAJQX9zcXJqQdz57vh4akEOdyACaiIDIAhxIAsgCEF/c3FyakHc+e74eGpBD3cgCWoiAiAHcSADIAdBf3NxcmpB3Pnu+HhqQQl3IAhqIgkgA0EKdyIDcSACIANBf3NxcmpB3Pnu+HhqQQh3IAdqIgogAkEKdyICcSAJIAJBf3NxcmpB3Pnu+HhqQQl3IANqIgtBCnciB2ogEyAKQQp3IghqIAEgCUEKdyIJaiACIBJqIAMgD2ogCSALcSAKIAlBf3NxcmpB3Pnu+HhqQQ53IAJqIgMgCHEgCyAIQX9zcXJqQdz57vh4akEFdyAJaiICIAdxIAMgB0F/c3FyakHc+e74eGpBBncgCGoiCCADQQp3IgNxIAIgA0F/c3FyakHc+e74eGpBCHcgB2oiCSACQQp3IgJxIAggAkF/c3FyakHc+e74eGpBBncgA2oiCkEKdyILaiAZIAlBCnciB2ogFCAIQQp3IghqIAIgGGogAyAVaiAIIApxIAkgCEF/c3FyakHc+e74eGpBBXcgAmoiAyAHcSAKIAdBf3NxcmpB3Pnu+HhqQQx3IAhqIgIgAyALQX9zcnNqQc76z8p6akEJdyAHaiIHIAIgA0EKdyIDQX9zcnNqQc76z8p6akEPdyALaiIIIAcgAkEKdyICQX9zcnNqQc76z8p6akEFdyADaiIJQQp3IgpqIBggCEEKdyILaiAQIAdBCnciB2ogAiASaiADIBpqIAkgCCAHQX9zcnNqQc76z8p6akELdyACaiIDIAkgC0F/c3JzakHO+s/KempBBncgB2oiAiADIApBf3Nyc2pBzvrPynpqQQh3IAtqIgcgAiADQQp3IgNBf3Nyc2pBzvrPynpqQQ13IApqIgggByACQQp3IgJBf3Nyc2pBzvrPynpqQQx3IANqIglBCnciCmogDSAIQQp3IgtqIA8gB0EKdyIHaiACIBdqIAMgE2ogCSAIIAdBf3Nyc2pBzvrPynpqQQV3IAJqIgMgCSALQX9zcnNqQc76z8p6akEMdyAHaiICIAMgCkF/c3JzakHO+s/KempBDXcgC2oiByACIANBCnciCEF/c3JzakHO+s/KempBDncgCmoiCSAHIAJBCnciCkF/c3JzakHO+s/KempBC3cgCGoiC0EKdyIhIAVqIBMgDSABIBogGSAUIBkgGyAPIBcgASAZIBAgASAYICAgHyAFQX9zciAdc2ogFmpB5peKhQVqQQh3IB5qIgNBCnciAmogBiAaaiAEIBlqIAUgEmogEyAeIAMgHSAEQX9zcnNqakHml4qFBWpBCXcgBWoiBSADIAZBf3Nyc2pB5peKhQVqQQl3IARqIgQgBSACQX9zcnNqQeaXioUFakELdyAGaiIGIAQgBUEKdyIFQX9zcnNqQeaXioUFakENdyACaiIDIAYgBEEKdyIEQX9zcnNqQeaXioUFakEPdyAFaiICQQp3IgxqIBUgA0EKdyIOaiAcIAZBCnciBmogBCAUaiAFIBtqIAIgAyAGQX9zcnNqQeaXioUFakEPdyAEaiIFIAIgDkF/c3JzakHml4qFBWpBBXcgBmoiBCAFIAxBf3Nyc2pB5peKhQVqQQd3IA5qIgYgBCAFQQp3IgVBf3Nyc2pB5peKhQVqQQd3IAxqIgMgBiAEQQp3IgRBf3Nyc2pB5peKhQVqQQh3IAVqIgJBCnciDGogDyADQQp3Ig5qIBEgBkEKdyIGaiAEIBdqIAUgDWogAiADIAZBf3Nyc2pB5peKhQVqQQt3IARqIgUgAiAOQX9zcnNqQeaXioUFakEOdyAGaiIEIAUgDEF/c3JzakHml4qFBWpBDncgDmoiBiAEIAVBCnciA0F/c3JzakHml4qFBWpBDHcgDGoiAiAGIARBCnciDEF/c3JzakHml4qFBWpBBncgA2oiDkEKdyIFaiAFIBIgAkEKdyIEaiAEIA8gBkEKdyIGaiAGIAwgG2ogAyAVaiAGIA5xIAIgBkF/c3FyakGkorfiBWpBCXcgDGoiBiAEcSAOIARBf3NxcmpBpKK34gVqQQ13aiIEIAVxIAYgBUF/c3FyakGkorfiBWpBD3dqIgIgBkEKdyIFcSAEIAVBf3NxcmpBpKK34gVqQQd3aiIMIARBCnciBHEgAiAEQX9zcXJqQaSit+IFakEMdyAFaiIOQQp3IgZqIBMgDEEKdyIDaiARIAJBCnciAmogBCAWaiAFIBxqIAIgDnEgDCACQX9zcXJqQaSit+IFakEIdyAEaiIFIANxIA4gA0F/c3FyakGkorfiBWpBCXcgAmoiBCAGcSAFIAZBf3NxcmpBpKK34gVqQQt3IANqIgIgBUEKdyIFcSAEIAVBf3NxcmpBpKK34gVqQQd3IAZqIgwgBEEKdyIEcSACIARBf3NxcmpBpKK34gVqQQd3IAVqIg5BCnciBmogBiAaIAxBCnciA2ogFCACQQp3IgJqIAQgEGogBSANaiACIA5xIAwgAkF/c3FyakGkorfiBWpBDHcgBGoiBSADcSAOIANBf3NxcmpBpKK34gVqQQd3IAJqIgQgBnEgBSAGQX9zcXJqQaSit+IFakEGdyADaiIGIAVBCnciBXEgBCAFQX9zcXJqQaSit+IFakEPd2oiAyAEQQp3IgRxIAYgBEF/c3FyakGkorfiBWpBDXcgBWoiAkEKdyIMaiAXIANBCnciDmogFiAGQQp3IgZqIAEgBGogBSAYaiACIAZxIAMgBkF/c3FyakGkorfiBWpBC3cgBGoiBSACQX9zciAOc2pB8/3A6wZqQQl3IAZqIgQgBUF/c3IgDHNqQfP9wOsGakEHdyAOaiIGIARBf3NyIAVBCnciBXNqQfP9wOsGakEPdyAMaiIDIAZBf3NyIARBCnciBHNqQfP9wOsGakELdyAFaiICQQp3IgxqIBogA0EKdyIOaiAVIAZBCnciBmogBCATaiAFIBJqIAIgA0F/c3IgBnNqQfP9wOsGakEIdyAEaiIFIAJBf3NyIA5zakHz/cDrBmpBBncgBmoiBCAFQX9zciAMc2pB8/3A6wZqQQZ3IA5qIgYgBEF/c3IgBUEKdyIFc2pB8/3A6wZqQQ53IAxqIgMgBkF/c3IgBEEKdyIEc2pB8/3A6wZqQQx3IAVqIgJBCnciDGogESADQQp3Ig5qIBggBkEKdyIGaiAEIBBqIAUgDWogAiADQX9zciAGc2pB8/3A6wZqQQ13IARqIgUgAkF/c3IgDnNqQfP9wOsGakEFdyAGaiIEIAVBf3NyIAxzakHz/cDrBmpBDncgDmoiBiAEQX9zciAFQQp3IgVzakHz/cDrBmpBDXcgDGoiAyAGQX9zciAEQQp3IgRzakHz/cDrBmpBDXcgBWoiAkEKdyIMaiAVIANBCnciDmogDSAGQQp3IgZqIAYgBCAcaiAFIBRqIAIgA0F/c3IgBnNqQfP9wOsGakEHdyAEaiIGIAJBf3NyIA5zakHz/cDrBmpBBXdqIgUgBnEgDCAFQX9zcXJqQenttdMHakEPdyAOaiIEIAVxIAZBCnciAyAEQX9zcXJqQenttdMHakEFdyAMaiIGIARxIAVBCnciAiAGQX9zcXJqQenttdMHakEIdyADaiIFQQp3IgxqIAEgBkEKdyIOaiAbIARBCnciBGogAiAPaiAFIAMgF2ogBSAGcSAEIAVBf3NxcmpB6e210wdqQQt3IAJqIgVxIA4gBUF/c3FyakHp7bXTB2pBDncgBGoiBCAFcSAMIARBf3NxcmpB6e210wdqQQ53IA5qIgYgBHEgBUEKdyIDIAZBf3NxcmpB6e210wdqQQZ3IAxqIgUgBnEgBEEKdyICIAVBf3NxcmpB6e210wdqQQ53IANqIgRBCnciDGogHCAFQQp3Ig5qIBggBkEKdyIGaiACIBBqIAMgFmogBCAFcSAGIARBf3NxcmpB6e210wdqQQZ3IAJqIgUgBHEgDiAFQX9zcXJqQenttdMHakEJdyAGaiIEIAVxIAwgBEF/c3FyakHp7bXTB2pBDHcgDmoiBiAEcSAFQQp3IgMgBkF/c3FyakHp7bXTB2pBCXcgDGoiBSAGcSAEQQp3IgIgBUF/c3FyakHp7bXTB2pBDHcgA2oiBEEKdyIMaiATIAZBCnciBmogBiACIBFqIAQgAyASaiAEIAVxIAYgBEF/c3FyakHp7bXTB2pBBXcgAmoiBHEgBUEKdyIGIARBf3NxcmpB6e210wdqQQ93aiIFIARxIAwgBUF/c3FyakHp7bXTB2pBCHcgBmoiAyAFQQp3IgJzIAYgEGogBSAEQQp3IhBzIANzakEIdyAMaiIFc2pBBXcgEGoiBEEKdyIGaiADQQp3Ig0gF2ogECARaiAFIA1zIARzakEMdyACaiIRIAZzIA0gAiAUaiAEIAVBCnciDXMgEXNqQQl3aiIQc2pBDHcgDWoiFyAQQQp3IhRzIA0gFmogECARQQp3Ig1zIBdzakEFdyAGaiIRc2pBDncgDWoiEEEKdyIWaiAXQQp3IhMgGGogDSASaiARIBNzIBBzakEGdyAUaiINIBZzIBQgFWogECARQQp3IhJzIA1zakEIdyATaiIRc2pBDXcgEmoiECARQQp3IhNzIBIgHGogESANQQp3Ig1zIBBzakEGdyAWaiISc2pBBXcgDWoiEUEKdyIWajYCCCAAIA0gGWogEiAQQQp3Ig1zIBFzakEPdyATaiIQQQp3IhkgHyAIIBVqIAsgCSAHQQp3IhVBf3Nyc2pBzvrPynpqQQh3IApqIhdBCndqajYCBCAAIB0gASAKaiAXIAsgCUEKdyIBQX9zcnNqQc76z8p6akEFdyAVaiIUaiAPIBNqIBEgEkEKdyIPcyAQc2pBDXcgDWoiEkEKd2o2AgAgACANIBpqIBAgFnMgEnNqQQt3IA9qIg0gASAgaiAVIBxqIBQgFyAhQX9zcnNqQc76z8p6akEGd2pqNgIQIAAgASAeaiAWaiAPIBtqIBIgGXMgDXNqQQt3ajYCDAuoJAFTfyMAQUBqIglBOGpCADcDACAJQTBqQgA3AwAgCUEoakIANwMAIAlBIGpCADcDACAJQRhqQgA3AwAgCUEQakIANwMAIAlBCGpCADcDACAJQgA3AwAgACgCECEWIAAoAgwhEiAAKAIIIRAgACgCBCEUIAAoAgAhBCACQQZ0IgIEQCABIAJqIVIDQCAJIAEoAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIAIAkgAUEEaigAACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AgQgCSABQQhqKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCCCAJIAFBDGooAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIMIAkgAUEQaigAACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AhAgCSABQRRqKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCFCAJIAFBGGooAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIgw2AhggCSABQRxqKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciITNgIcIAkgAUEgaigAACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiBjYCICAJIAFBJGooAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIgU2AiQgCSABQShqKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciIINgIoIAkgAUEsaigAACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIiCjYCLCAJIAFBMGooAAAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIhE2AjAgCSABQTRqKAAAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciICNgI0IAkgAUE4aigAACIDQRh0IANBCHRBgID8B3FyIANBCHZBgP4DcSADQRh2cnIiAzYCOCAJIAFBPGooAAAiB0EYdCAHQQh0QYCA/AdxciAHQQh2QYD+A3EgB0EYdnJyIgc2AjwgBCAJKAIMIg4gCSgCBCILcyAFcyADc0EBdyIXIAwgCSgCECINcyARc3NBAXciGCAFIBNzIAdzc0EBdyIZIA0gCSgCCCIVcyAIcyAHc0EBdyIaIBMgCSgCFCJJcyACc3NBAXciG3MgCCARcyAacyAZc0EBdyIcIAIgB3MgG3NzQQF3Ih1zIBUgCSgCACIPcyAGcyACc0EBdyIeIA4gSXMgCnNzQQF3Ih8gBiAMcyADc3NBAXciICAFIApzIBdzc0EBdyIhIAMgEXMgGHNzQQF3IiIgByAXcyAZc3NBAXciIyAYIBpzIBxzc0EBdyIkc0EBdyIlIAYgCHMgHnMgG3NBAXciJiACIApzIB9zc0EBdyInIBsgH3NzIBogHnMgJnMgHXNBAXciKHNBAXciKXMgHCAmcyAocyAlc0EBdyIqIB0gJ3MgKXNzQQF3IitzIAMgHnMgIHMgJ3NBAXciLCAXIB9zICFzc0EBdyItIBggIHMgInNzQQF3Ii4gGSAhcyAjc3NBAXciLyAcICJzICRzc0EBdyIwIB0gI3MgJXNzQQF3IjEgJCAocyAqc3NBAXciMnNBAXciMyAgICZzICxzIClzQQF3IjQgISAncyAtc3NBAXciNSApIC1zcyAoICxzIDRzICtzQQF3IjZzQQF3IjdzICogNHMgNnMgM3NBAXciOCArIDVzIDdzc0EBdyI5cyAiICxzIC5zIDVzQQF3IjogIyAtcyAvc3NBAXciOyAkIC5zIDBzc0EBdyI8ICUgL3MgMXNzQQF3Ij0gKiAwcyAyc3NBAXciPiArIDFzIDNzc0EBdyI/IDIgNnMgOHNzQQF3IkBzQQF3IkcgLiA0cyA6cyA3c0EBdyJBIC8gNXMgO3NzQQF3IkIgNyA7c3MgNiA6cyBBcyA5c0EBdyJDc0EBdyJEcyA4IEFzIENzIEdzQQF3IkogOSBCcyBEc3NBAXciS3MgMCA6cyA8cyBCc0EBdyJFIDEgO3MgPXNzQQF3IkYgMiA8cyA+c3NBAXciSCAzID1zID9zc0EBdyJMIDggPnMgQHNzQQF3Ik0gOSA/cyBHc3NBAXciUyBAIENzIEpzc0EBdyJUc0EBd2ogPCBBcyBFcyBEc0EBdyJOIEMgRXNzIEtzQQF3IlUgPSBCcyBGcyBOc0EBdyJPIEggPyA4IDcgOiAvICQgHSAmIB8gAyAFIA0gBEEedyINaiALIBIgFEEedyILIBBzIARxIBBzamogFiAEQQV3aiAQIBJzIBRxIBJzaiAPakGZ84nUBWoiUEEFd2pBmfOJ1AVqIlFBHnciBCBQQR53Ig9zIBAgFWogUCALIA1zcSALc2ogUUEFd2pBmfOJ1AVqIhVxIA9zaiALIA5qIFEgDSAPc3EgDXNqIBVBBXdqQZnzidQFaiILQQV3akGZ84nUBWoiDkEedyINaiAEIAxqIA4gC0EedyIFIBVBHnciDHNxIAxzaiAPIElqIAQgDHMgC3EgBHNqIA5BBXdqQZnzidQFaiIPQQV3akGZ84nUBWoiDkEedyIEIA9BHnciC3MgDCATaiAPIAUgDXNxIAVzaiAOQQV3akGZ84nUBWoiDHEgC3NqIAUgBmogCyANcyAOcSANc2ogDEEFd2pBmfOJ1AVqIgVBBXdqQZnzidQFaiITQR53IgZqIBEgDEEedyIDaiAIIAtqIAUgAyAEc3EgBHNqIBNBBXdqQZnzidQFaiIIIAYgBUEedyIFc3EgBXNqIAQgCmogEyADIAVzcSADc2ogCEEFd2pBmfOJ1AVqIgpBBXdqQZnzidQFaiIRIApBHnciBCAIQR53IgNzcSADc2ogAiAFaiADIAZzIApxIAZzaiARQQV3akGZ84nUBWoiBUEFd2pBmfOJ1AVqIghBHnciAmogFyARQR53IgZqIAMgB2ogBSAEIAZzcSAEc2ogCEEFd2pBmfOJ1AVqIgcgAiAFQR53IgNzcSADc2ogBCAeaiADIAZzIAhxIAZzaiAHQQV3akGZ84nUBWoiBkEFd2pBmfOJ1AVqIgUgBkEedyIIIAdBHnciBHNxIARzaiADIBpqIAYgAiAEc3EgAnNqIAVBBXdqQZnzidQFaiICQQV3akGZ84nUBWoiA0EedyIHaiAIIBtqIAJBHnciBiAFQR53IgVzIANzaiAEIBhqIAUgCHMgAnNqIANBBXdqQaHX5/YGaiICQQV3akGh1+f2BmoiBEEedyIDIAJBHnciCHMgBSAgaiAGIAdzIAJzaiAEQQV3akGh1+f2BmoiAnNqIAYgGWogByAIcyAEc2ogAkEFd2pBodfn9gZqIgRBBXdqQaHX5/YGaiIHQR53IgZqIAMgHGogBEEedyIFIAJBHnciAnMgB3NqIAggIWogAiADcyAEc2ogB0EFd2pBodfn9gZqIgRBBXdqQaHX5/YGaiIDQR53IgcgBEEedyIIcyACICdqIAUgBnMgBHNqIANBBXdqQaHX5/YGaiICc2ogBSAiaiAGIAhzIANzaiACQQV3akGh1+f2BmoiBEEFd2pBodfn9gZqIgNBHnciBmogByAjaiAEQR53IgUgAkEedyICcyADc2ogCCAsaiACIAdzIARzaiADQQV3akGh1+f2BmoiBEEFd2pBodfn9gZqIgNBHnciByAEQR53IghzIAIgKGogBSAGcyAEc2ogA0EFd2pBodfn9gZqIgJzaiAFIC1qIAYgCHMgA3NqIAJBBXdqQaHX5/YGaiIEQQV3akGh1+f2BmoiA0EedyIGaiAHIC5qIARBHnciBSACQR53IgJzIANzaiAIIClqIAIgB3MgBHNqIANBBXdqQaHX5/YGaiIEQQV3akGh1+f2BmoiA0EedyIHIARBHnciCHMgAiAlaiAFIAZzIARzaiADQQV3akGh1+f2BmoiCnNqIAUgNGogBiAIcyADc2ogCkEFd2pBodfn9gZqIgZBBXdqQaHX5/YGaiIFQR53IgJqIAcgNWogBkEedyIEIApBHnciA3MgBXEgAyAEcXNqIAggKmogAyAHcyAGcSADIAdxc2ogBUEFd2pB3Pnu+HhqIgVBBXdqQdz57vh4aiIIQR53IgcgBUEedyIGcyADIDBqIAUgAiAEc3EgAiAEcXNqIAhBBXdqQdz57vh4aiIDcSAGIAdxc2ogBCAraiAIIAIgBnNxIAIgBnFzaiADQQV3akHc+e74eGoiBUEFd2pB3Pnu+HhqIghBHnciAmogByA2aiAIIAVBHnciBCADQR53IgNzcSADIARxc2ogBiAxaiADIAdzIAVxIAMgB3FzaiAIQQV3akHc+e74eGoiBUEFd2pB3Pnu+HhqIghBHnciByAFQR53IgZzIAMgO2ogBSACIARzcSACIARxc2ogCEEFd2pB3Pnu+HhqIgNxIAYgB3FzaiAEIDJqIAIgBnMgCHEgAiAGcXNqIANBBXdqQdz57vh4aiIFQQV3akHc+e74eGoiCEEedyICaiBBIANBHnciBGogBiA8aiAFIAQgB3NxIAQgB3FzaiAIQQV3akHc+e74eGoiBiACIAVBHnciA3NxIAIgA3FzaiAHIDNqIAggAyAEc3EgAyAEcXNqIAZBBXdqQdz57vh4aiIFQQV3akHc+e74eGoiCCAFQR53IgQgBkEedyIHc3EgBCAHcXNqIAMgPWogAiAHcyAFcSACIAdxc2ogCEEFd2pB3Pnu+HhqIgZBBXdqQdz57vh4aiIFQR53IgJqIDkgCEEedyIDaiAHIEJqIAYgAyAEc3EgAyAEcXNqIAVBBXdqQdz57vh4aiIIIAIgBkEedyIHc3EgAiAHcXNqIAQgPmogAyAHcyAFcSADIAdxc2ogCEEFd2pB3Pnu+HhqIgZBBXdqQdz57vh4aiIFIAZBHnciAyAIQR53IgRzcSADIARxc2ogByBFaiAGIAIgBHNxIAIgBHFzaiAFQQV3akHc+e74eGoiAkEFd2pB3Pnu+HhqIgdBHnciBmogAyBGaiACQR53IgggBUEedyIFcyAHc2ogBCBDaiADIAVzIAJzaiAHQQV3akHWg4vTfGoiAkEFd2pB1oOL03xqIgRBHnciAyACQR53IgdzIAUgQGogBiAIcyACc2ogBEEFd2pB1oOL03xqIgJzaiAIIERqIAYgB3MgBHNqIAJBBXdqQdaDi9N8aiIEQQV3akHWg4vTfGoiBkEedyIFaiADIE5qIARBHnciCCACQR53IgJzIAZzaiAHIEdqIAIgA3MgBHNqIAZBBXdqQdaDi9N8aiIEQQV3akHWg4vTfGoiA0EedyIHIARBHnciBnMgAiBMaiAFIAhzIARzaiADQQV3akHWg4vTfGoiAnNqIAggSmogBSAGcyADc2ogAkEFd2pB1oOL03xqIgRBBXdqQdaDi9N8aiIDQR53IgVqIAcgS2ogBEEedyIIIAJBHnciAnMgA3NqIAYgTWogAiAHcyAEc2ogA0EFd2pB1oOL03xqIgRBBXdqQdaDi9N8aiIDQR53IgcgBEEedyIGcyA+IEVzIEhzIE9zQQF3IgogAmogBSAIcyAEc2ogA0EFd2pB1oOL03xqIgJzaiAIIFNqIAUgBnMgA3NqIAJBBXdqQdaDi9N8aiIEQQV3akHWg4vTfGoiA0EedyIFaiAHIFRqIARBHnciCCACQR53IgJzIANzaiAGID8gRnMgTHMgCnNBAXciBmogAiAHcyAEc2ogA0EFd2pB1oOL03xqIgRBBXdqQdaDi9N8aiIDQR53IgogBEEedyIHcyBEIEZzIE9zIFVzQQF3IAJqIAUgCHMgBHNqIANBBXdqQdaDi9N8aiICc2ogQCBIcyBNcyAGc0EBdyAIaiAFIAdzIANzaiACQQV3akHWg4vTfGoiA0EFd2pB1oOL03xqIQQgAyAUaiEUIAogEmohEiACQR53IBBqIRAgByAWaiEWIAFBQGsiASBSRw0ACwsgACAWNgIQIAAgEjYCDCAAIBA2AgggACAUNgIEIAAgBDYCAAugKgIIfwF+AkACQAJAAkACQAJAIABB9QFPBEAgAEHN/3tPDQQgAEELaiIAQXhxIQZB6KHAACgCACIHRQ0BQQAgBmshBQJAAkACf0EAIABBCHYiAEUNABpBHyAGQf///wdLDQAaIAZBBiAAZyIAa0EfcXZBAXEgAEEBdGtBPmoLIghBAnRB9KPAAGooAgAiAARAIAZBAEEZIAhBAXZrQR9xIAhBH0YbdCEDA0ACQCAAQQRqKAIAQXhxIgQgBkkNACAEIAZrIgQgBU8NACAAIQIgBCIFDQBBACEFDAMLIABBFGooAgAiBCABIAQgACADQR12QQRxakEQaigCACIARxsgASAEGyEBIANBAXQhAyAADQALIAEEQCABIQAMAgsgAg0CC0EAIQJBAiAIQR9xdCIAQQAgAGtyIAdxIgBFDQMgAEEAIABrcWhBAnRB9KPAAGooAgAiAEUNAwsDQCAAIAIgAEEEaigCAEF4cSIBIAZPIAEgBmsiAyAFSXEiBBshAiADIAUgBBshBSAAKAIQIgEEfyABBSAAQRRqKAIACyIADQALIAJFDQILQfSkwAAoAgAiACAGT0EAIAUgACAGa08bDQEgAigCGCEHAkACQCACIAIoAgwiAUYEQCACQRRBECACQRRqIgMoAgAiARtqKAIAIgANAUEAIQEMAgsgAigCCCIAIAE2AgwgASAANgIIDAELIAMgAkEQaiABGyEDA0AgAyEEIAAiAUEUaiIDKAIAIgBFBEAgAUEQaiEDIAEoAhAhAAsgAA0ACyAEQQA2AgALAkAgB0UNAAJAIAIgAigCHEECdEH0o8AAaiIAKAIARwRAIAdBEEEUIAcoAhAgAkYbaiABNgIAIAFFDQIMAQsgACABNgIAIAENAEHoocAAQeihwAAoAgBBfiACKAIcd3E2AgAMAQsgASAHNgIYIAIoAhAiAARAIAEgADYCECAAIAE2AhgLIAJBFGooAgAiAEUNACABQRRqIAA2AgAgACABNgIYCwJAIAVBEE8EQCACIAZBA3I2AgQgAiAGaiIHIAVBAXI2AgQgBSAHaiAFNgIAIAVBgAJPBEAgB0IANwIQIAcCf0EAIAVBCHYiAUUNABpBHyAFQf///wdLDQAaIAVBBiABZyIAa0EfcXZBAXEgAEEBdGtBPmoLIgA2AhwgAEECdEH0o8AAaiEEAkACQAJAAkBB6KHAACgCACIDQQEgAEEfcXQiAXEEQCAEKAIAIgNBBGooAgBBeHEgBUcNASADIQAMAgtB6KHAACABIANyNgIAIAQgBzYCACAHIAQ2AhgMAwsgBUEAQRkgAEEBdmtBH3EgAEEfRht0IQEDQCADIAFBHXZBBHFqQRBqIgQoAgAiAEUNAiABQQF0IQEgACEDIABBBGooAgBBeHEgBUcNAAsLIAAoAggiASAHNgIMIAAgBzYCCCAHQQA2AhggByAANgIMIAcgATYCCAwECyAEIAc2AgAgByADNgIYCyAHIAc2AgwgByAHNgIIDAILIAVBA3YiAUEDdEHsocAAaiEAAn9B5KHAACgCACIDQQEgAXQiAXEEQCAAKAIIDAELQeShwAAgASADcjYCACAACyEFIAAgBzYCCCAFIAc2AgwgByAANgIMIAcgBTYCCAwBCyACIAUgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAsgAkEIag8LAkACQEHkocAAKAIAIgdBECAAQQtqQXhxIABBC0kbIgZBA3YiAXYiAkEDcUUEQCAGQfSkwAAoAgBNDQMgAg0BQeihwAAoAgAiAEUNAyAAQQAgAGtxaEECdEH0o8AAaigCACIBQQRqKAIAQXhxIAZrIQUgASEDA0AgASgCECIARQRAIAFBFGooAgAiAEUNBAsgAEEEaigCAEF4cSAGayICIAUgAiAFSSICGyEFIAAgAyACGyEDIAAhAQwACwALAkAgAkF/c0EBcSABaiIDQQN0IgBB9KHAAGooAgAiAUEIaiIFKAIAIgIgAEHsocAAaiIARwRAIAIgADYCDCAAIAI2AggMAQtB5KHAACAHQX4gA3dxNgIACyABIANBA3QiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwFCwJAQQIgAXQiAEEAIABrciACIAF0cSIAQQAgAGtxaCIBQQN0IgBB9KHAAGooAgAiA0EIaiIEKAIAIgIgAEHsocAAaiIARwRAIAIgADYCDCAAIAI2AggMAQtB5KHAACAHQX4gAXdxNgIACyADIAZBA3I2AgQgAyAGaiIFIAFBA3QiACAGayIHQQFyNgIEIAAgA2ogBzYCAEH0pMAAKAIAIgAEQCAAQQN2IgJBA3RB7KHAAGohAEH8pMAAKAIAIQgCf0HkocAAKAIAIgFBASACQR9xdCICcQRAIAAoAggMAQtB5KHAACABIAJyNgIAIAALIQMgACAINgIIIAMgCDYCDCAIIAA2AgwgCCADNgIIC0H8pMAAIAU2AgBB9KTAACAHNgIAIAQPCyADKAIYIQcCQAJAIAMgAygCDCIBRgRAIANBFEEQIANBFGoiASgCACICG2ooAgAiAA0BQQAhAQwCCyADKAIIIgAgATYCDCABIAA2AggMAQsgASADQRBqIAIbIQIDQCACIQQgACIBQRRqIgIoAgAiAEUEQCABQRBqIQIgASgCECEACyAADQALIARBADYCAAsgB0UNAiADIAMoAhxBAnRB9KPAAGoiACgCAEcEQCAHQRBBFCAHKAIQIANGG2ogATYCACABRQ0DDAILIAAgATYCACABDQFB6KHAAEHoocAAKAIAQX4gAygCHHdxNgIADAILAkACQAJAAkBB9KTAACgCACIBIAZJBEBB+KTAACgCACIAIAZLDQlBACEFIAZBr4AEaiICQRB2QAAiAEF/Rg0HIABBEHQiA0UNB0GEpcAAIAJBgIB8cSIFQYSlwAAoAgBqIgI2AgBBiKXAAEGIpcAAKAIAIgAgAiAAIAJLGzYCAEGApcAAKAIAIgRFDQFBjKXAACEAA0AgACgCACIBIAAoAgQiAmogA0YNAyAAKAIIIgANAAsMAwtB/KTAACgCACEDAn8gASAGayICQQ9NBEBB/KTAAEEANgIAQfSkwABBADYCACADIAFBA3I2AgQgASADaiICQQRqIQAgAigCBEEBcgwBC0H0pMAAIAI2AgBB/KTAACADIAZqIgA2AgAgACACQQFyNgIEIAEgA2ogAjYCACADQQRqIQAgBkEDcgshBiAAIAY2AgAMBwtBoKXAACgCACIAQQAgACADTRtFBEBBoKXAACADNgIAC0GkpcAAQf8fNgIAQZClwAAgBTYCAEGMpcAAIAM2AgBB+KHAAEHsocAANgIAQYCiwABB9KHAADYCAEH0ocAAQeyhwAA2AgBBiKLAAEH8ocAANgIAQfyhwABB9KHAADYCAEGQosAAQYSiwAA2AgBBhKLAAEH8ocAANgIAQZiiwABBjKLAADYCAEGMosAAQYSiwAA2AgBBoKLAAEGUosAANgIAQZSiwABBjKLAADYCAEGoosAAQZyiwAA2AgBBnKLAAEGUosAANgIAQbCiwABBpKLAADYCAEGkosAAQZyiwAA2AgBBmKXAAEEANgIAQbiiwABBrKLAADYCAEGsosAAQaSiwAA2AgBBtKLAAEGsosAANgIAQcCiwABBtKLAADYCAEG8osAAQbSiwAA2AgBByKLAAEG8osAANgIAQcSiwABBvKLAADYCAEHQosAAQcSiwAA2AgBBzKLAAEHEosAANgIAQdiiwABBzKLAADYCAEHUosAAQcyiwAA2AgBB4KLAAEHUosAANgIAQdyiwABB1KLAADYCAEHoosAAQdyiwAA2AgBB5KLAAEHcosAANgIAQfCiwABB5KLAADYCAEHsosAAQeSiwAA2AgBB+KLAAEHsosAANgIAQYCjwABB9KLAADYCAEH0osAAQeyiwAA2AgBBiKPAAEH8osAANgIAQfyiwABB9KLAADYCAEGQo8AAQYSjwAA2AgBBhKPAAEH8osAANgIAQZijwABBjKPAADYCAEGMo8AAQYSjwAA2AgBBoKPAAEGUo8AANgIAQZSjwABBjKPAADYCAEGoo8AAQZyjwAA2AgBBnKPAAEGUo8AANgIAQbCjwABBpKPAADYCAEGko8AAQZyjwAA2AgBBuKPAAEGso8AANgIAQayjwABBpKPAADYCAEHAo8AAQbSjwAA2AgBBtKPAAEGso8AANgIAQcijwABBvKPAADYCAEG8o8AAQbSjwAA2AgBB0KPAAEHEo8AANgIAQcSjwABBvKPAADYCAEHYo8AAQcyjwAA2AgBBzKPAAEHEo8AANgIAQeCjwABB1KPAADYCAEHUo8AAQcyjwAA2AgBB6KPAAEHco8AANgIAQdyjwABB1KPAADYCAEHwo8AAQeSjwAA2AgBB5KPAAEHco8AANgIAQYClwAAgAzYCAEHso8AAQeSjwAA2AgBB+KTAACAFQVhqIgA2AgAgAyAAQQFyNgIEIAAgA2pBKDYCBEGcpcAAQYCAgAE2AgAMAgsgAEEMaigCACADIARNciABIARLcg0AIAAgAiAFajYCBEGApcAAQYClwAAoAgAiA0EPakF4cSIBQXhqNgIAQfikwABB+KTAACgCACAFaiICIAMgAWtqQQhqIgA2AgAgAUF8aiAAQQFyNgIAIAIgA2pBKDYCBEGcpcAAQYCAgAE2AgAMAQtBoKXAAEGgpcAAKAIAIgAgAyAAIANJGzYCACADIAVqIQFBjKXAACEAAkADQCABIAAoAgBHBEAgACgCCCIADQEMAgsLIABBDGooAgANACAAIAM2AgAgACAAKAIEIAVqNgIEIAMgBkEDcjYCBCADIAZqIQQgASADayAGayEGAkACQCABQYClwAAoAgBHBEBB/KTAACgCACABRg0BIAFBBGooAgAiAEEDcUEBRgRAIAEgAEF4cSIAEEwgACAGaiEGIAAgAWohAQsgASABKAIEQX5xNgIEIAQgBkEBcjYCBCAEIAZqIAY2AgAgBkGAAk8EQCAEQgA3AhAgBAJ/QQAgBkEIdiIARQ0AGkEfIAZB////B0sNABogBkEGIABnIgBrQR9xdkEBcSAAQQF0a0E+agsiBTYCHCAFQQJ0QfSjwABqIQECQAJAAkACQEHoocAAKAIAIgJBASAFQR9xdCIAcQRAIAEoAgAiAkEEaigCAEF4cSAGRw0BIAIhBQwCC0HoocAAIAAgAnI2AgAgASAENgIAIAQgATYCGAwDCyAGQQBBGSAFQQF2a0EfcSAFQR9GG3QhAQNAIAIgAUEddkEEcWpBEGoiACgCACIFRQ0CIAFBAXQhASAFIgJBBGooAgBBeHEgBkcNAAsLIAUoAggiACAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgADYCCAwFCyAAIAQ2AgAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAMLIAZBA3YiAkEDdEHsocAAaiEAAn9B5KHAACgCACIBQQEgAnQiAnEEQCAAKAIIDAELQeShwAAgASACcjYCACAACyEFIAAgBDYCCCAFIAQ2AgwgBCAANgIMIAQgBTYCCAwCC0GApcAAIAQ2AgBB+KTAAEH4pMAAKAIAIAZqIgA2AgAgBCAAQQFyNgIEDAELQfykwAAgBDYCAEH0pMAAQfSkwAAoAgAgBmoiADYCACAEIABBAXI2AgQgACAEaiAANgIACwwFC0GMpcAAIQADQAJAIAAoAgAiAiAETQRAIAIgACgCBGoiAiAESw0BCyAAKAIIIQAMAQsLQYClwAAgAzYCAEH4pMAAIAVBWGoiADYCACADIABBAXI2AgQgACADakEoNgIEQZylwABBgICAATYCACAEIAJBYGpBeHFBeGoiACAAIARBEGpJGyIBQRs2AgRBjKXAACkCACEJIAFBEGpBlKXAACkCADcCACABIAk3AghBkKXAACAFNgIAQYylwAAgAzYCAEGUpcAAIAFBCGo2AgBBmKXAAEEANgIAIAFBHGohAANAIABBBzYCACACIABBBGoiAEsNAAsgASAERg0AIAEgASgCBEF+cTYCBCAEIAEgBGsiBUEBcjYCBCABIAU2AgAgBUGAAk8EQCAEQgA3AhAgBEEcagJ/QQAgBUEIdiICRQ0AGkEfIAVB////B0sNABogBUEGIAJnIgBrQR9xdkEBcSAAQQF0a0E+agsiADYCACAAQQJ0QfSjwABqIQMCQAJAAkACQEHoocAAKAIAIgFBASAAQR9xdCICcQRAIAMoAgAiAkEEaigCAEF4cSAFRw0BIAIhAAwCC0HoocAAIAEgAnI2AgAgAyAENgIAIARBGGogAzYCAAwDCyAFQQBBGSAAQQF2a0EfcSAAQR9GG3QhAQNAIAIgAUEddkEEcWpBEGoiAygCACIARQ0CIAFBAXQhASAAIQIgAEEEaigCAEF4cSAFRw0ACwsgACgCCCICIAQ2AgwgACAENgIIIARBGGpBADYCACAEIAA2AgwgBCACNgIIDAMLIAMgBDYCACAEQRhqIAI2AgALIAQgBDYCDCAEIAQ2AggMAQsgBUEDdiICQQN0QeyhwABqIQACf0HkocAAKAIAIgFBASACdCICcQRAIAAoAggMAQtB5KHAACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCABNgIIC0EAIQVB+KTAACgCACIAIAZNDQIMBAsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQRRqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQfSkwAAoAgAiAARAIABBA3YiAkEDdEHsocAAaiEAQfykwAAoAgAhBwJ/QeShwAAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HkocAAIAEgAnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQfykwAAgBDYCAEH0pMAAIAU2AgAMAQsgAyAFIAZqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLDAELIAUPCyADQQhqDwtB+KTAACAAIAZrIgI2AgBBgKXAAEGApcAAKAIAIgEgBmoiADYCACAAIAJBAXI2AgQgASAGQQNyNgIEIAFBCGoL8REBFH8gACgCACELIAAoAgwhBCAAKAIIIQUgACgCBCEDIwBBQGoiAkEYaiIGQgA3AwAgAkEgaiIHQgA3AwAgAkE4aiIIQgA3AwAgAkEwaiIJQgA3AwAgAkEoaiIKQgA3AwAgAkEIaiIMIAEpAAg3AwAgAkEQaiINIAEpABA3AwAgBiABKAAYIgY2AgAgByABKAAgIgc2AgAgAiABKQAANwMAIAIgASgAHCIONgIcIAIgASgAJCIPNgIkIAogASgAKCIKNgIAIAIgASgALCIQNgIsIAkgASgAMCIJNgIAIAIgASgANCIRNgI0IAggASgAOCIINgIAIAIgASgAPCISNgI8IAAgDSgCACINIAcgCSACKAIAIhMgDyARIAIoAgQiFCACKAIUIhUgESAPIBUgFCAJIAcgDSADIBMgCyAEIANBf3NxIAMgBXFyampB+Miqu31qQQd3aiIBaiAEIBRqIAUgAUF/c3EgASADcXJqQdbunsZ+akEMdyABaiIEIAMgAigCDCILaiABIAQgBSAMKAIAIgxqIAMgBEF/c3EgASAEcXJqQdvhgaECakERd2oiAkF/c3EgAiAEcXJqQe6d9418akEWdyACaiIBQX9zcSABIAJxcmpBr5/wq39qQQd3IAFqIgNqIAQgFWogAiADQX9zcSABIANxcmpBqoyfvARqQQx3IANqIgQgASAOaiADIAQgAiAGaiABIARBf3NxIAMgBHFyakGTjMHBempBEXdqIgFBf3NxIAEgBHFyakGBqppqakEWdyABaiICQX9zcSABIAJxcmpB2LGCzAZqQQd3IAJqIgNqIAQgD2ogASADQX9zcSACIANxcmpBr++T2nhqQQx3IANqIgQgAiAQaiADIAQgASAKaiACIARBf3NxIAMgBHFyakGxt31qQRF3aiIBQX9zcSABIARxcmpBvq/zynhqQRZ3IAFqIgJBf3NxIAEgAnFyakGiosDcBmpBB3cgAmoiA2ogAiASaiADIAEgCGogAiADIAQgEWogASADQX9zcSACIANxcmpBk+PhbGpBDHdqIgFBf3MiBHEgASADcXJqQY6H5bN6akERdyABaiICQX9zIgVxIAEgAnFyakGhkNDNBGpBFncgAmoiAyABcSACIARxcmpB4sr4sH9qQQV3IANqIgRqIAMgE2ogAiAQaiABIAZqIAIgBHEgAyAFcXJqQcDmgoJ8akEJdyAEaiIBIANxIAQgA0F/c3FyakHRtPmyAmpBDncgAWoiAiAEcSABIARBf3NxcmpBqo/bzX5qQRR3IAJqIgMgAXEgAiABQX9zcXJqQd2gvLF9akEFdyADaiIEaiADIA1qIAIgEmogASAKaiACIARxIAMgAkF/c3FyakHTqJASakEJdyAEaiIBIANxIAQgA0F/c3FyakGBzYfFfWpBDncgAWoiAiAEcSABIARBf3NxcmpByPfPvn5qQRR3IAJqIgMgAXEgAiABQX9zcXJqQeabh48CakEFdyADaiIEaiADIAdqIAIgC2ogASAIaiACIARxIAMgAkF/c3FyakHWj9yZfGpBCXcgBGoiASADcSAEIANBf3NxcmpBh5vUpn9qQQ53IAFqIgIgBHEgASAEQX9zcXJqQe2p6KoEakEUdyACaiIDIAFxIAIgAUF/c3FyakGF0o/PempBBXcgA2oiBGogAyAJaiACIA5qIAEgDGogAiAEcSADIAJBf3NxcmpB+Me+Z2pBCXcgBGoiASADcSAEIANBf3NxcmpB2YW8uwZqQQ53IAFqIgMgBHEgASAEQX9zcXJqQYqZqel4akEUdyADaiIEIANzIgUgAXNqQcLyaGpBBHcgBGoiAmogAyAQaiABIAdqIAIgBXNqQYHtx7t4akELdyACaiIBIAIgBHNzakGiwvXsBmpBEHcgAWoiAyABcyAEIAhqIAEgAnMgA3NqQYzwlG9qQRd3IANqIgJzakHE1PulempBBHcgAmoiBGogAyAOaiABIA1qIAIgA3MgBHNqQamf+94EakELdyAEaiIBIAIgBHNzakHglu21f2pBEHcgAWoiAyABcyACIApqIAEgBHMgA3NqQfD4/vV7akEXdyADaiICc2pBxv3txAJqQQR3IAJqIgRqIAMgC2ogASATaiACIANzIARzakH6z4TVfmpBC3cgBGoiASACIARzc2pBheG8p31qQRB3IAFqIgMgAXMgAiAGaiABIARzIANzakGFuqAkakEXdyADaiICc2pBuaDTzn1qQQR3IAJqIgRqIAIgDGogASAJaiACIANzIARzakHls+62fmpBC3cgBGoiASAEcyADIBJqIAIgBHMgAXNqQfj5if0BakEQdyABaiICc2pB5ayxpXxqQRd3IAJqIgMgAUF/c3IgAnNqQcTEpKF/akEGdyADaiIEaiADIBVqIAIgCGogASAOaiAEIAJBf3NyIANzakGX/6uZBGpBCncgBGoiASADQX9zciAEc2pBp8fQ3HpqQQ93IAFqIgIgBEF/c3IgAXNqQbnAzmRqQRV3IAJqIgMgAUF/c3IgAnNqQcOz7aoGakEGdyADaiIEaiADIBRqIAIgCmogASALaiAEIAJBf3NyIANzakGSmbP4eGpBCncgBGoiASADQX9zciAEc2pB/ei/f2pBD3cgAWoiAiAEQX9zciABc2pB0buRrHhqQRV3IAJqIgMgAUF/c3IgAnNqQc/8of0GakEGdyADaiIEaiADIBFqIAIgBmogASASaiAEIAJBf3NyIANzakHgzbNxakEKdyAEaiIBIANBf3NyIARzakGUhoWYempBD3cgAWoiAiAEQX9zciABc2pBoaOg8ARqQRV3IAJqIgMgAUF/c3IgAnNqQYL9zbp/akEGdyADaiIEIAAoAgBqNgIAIAAgASAQaiAEIAJBf3NyIANzakG15Ovpe2pBCncgBGoiASAAKAIMajYCDCAAIAIgDGogASADQX9zciAEc2pBu6Xf1gJqQQ93IAFqIgIgACgCCGo2AgggACACIAAoAgRqIAMgD2ogAiAEQX9zciABc2pBkaeb3H5qQRV3ajYCBAvcDwEFfyAAIAEtAAAiAzoAECAAIAEtAAEiAjoAESAAIAEtAAIiBDoAEiAAIAEtAAMiBToAEyAAIAEtAAQiBjoAFCAAIAMgAC0AAHM6ACAgACACIAAtAAFzOgAhIAAgBCAALQACczoAIiAAIAUgAC0AA3M6ACMgACAGIAAt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BCARIAEgA0F/c3EgAyAEcXIgAmpqQQd3IgVBf3NxIAMgBXFyIAFqakELdyIBIAVyIBIgBCABIAVxIgQgAyABQX9zcXJqakETdyICcSAEcmogFGpBmfOJ1AVqQQN3IgMgByABIAUgAyABIAJycSABIAJxcmogDWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAJIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogDGpBmfOJ1AVqQQN3IgMgDyABIAQgAyABIAJycSABIAJxcmogFWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciARIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogC2pBmfOJ1AVqQQN3IgMgCiABIAYgBCADIAEgAnJxIAEgAnFyampBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAIIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogE2pBmfOJ1AVqQQN3IgMgEiACIBAgASAOIAQgAyABIAJycSABIAJxcmpqQZnzidQFakEFdyIEIAIgA3JxIAIgA3FyampBmfOJ1AVqQQl3IgUgAyAEcnEgAyAEcXJqakGZ84nUBWpBDXciAyAFcyICIARzaiAUakGh1+f2BmpBA3ciASAJIAMgASAHIAQgASACc2pqQaHX5/YGakEJdyICcyAFIA1qIAEgA3MgAnNqQaHX5/YGakELdyIEc2pqQaHX5/YGakEPdyIDIARzIgUgAnNqIAtqQaHX5/YGakEDdyIBIAggAyABIAogAiABIAVzampBodfn9gZqQQl3IgJzIAQgBmogASADcyACc2pBodfn9gZqQQt3IgRzampBodfn9gZqQQ93IgMgBHMiBSACc2ogDGpBodfn9gZqQQN3IgEgESADIAEgDyACIAEgBXNqakGh1+f2BmpBCXciAnMgBCAVaiABIANzIAJzakGh1+f2BmpBC3ciBHNqakGh1+f2BmpBD3ciAyAEcyIFIAJzaiATakGh1+f2BmpBA3ciASAAKAIAajYCACAAIBAgAiABIAVzampBodfn9gZqQQl3IgIgACgCDGo2Agwg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IgVFDQULIAIgBDYCFCACIAU2AhALIAIoAhAhBSACQThqIgZCADcDACACQTBqIgdCADcDACACQShqIghCADcDACACQSBqIglCADcDACACQRhqIgpCADcDACACQgA3AxAgAkHqAGpCADcBACACQfIAakEAOwEAIAJBEDYCYCACQQA7AWQgAkEANgFmIAJBiAFqIAJB8ABqKAIANgIAIAJBgAFqIAJB6ABqKQMANwMAIAJB2ABqIgsgAkGEAWopAgA3AwAgAiACKQNgNwN4IAIgAikCfDcDUCACQcgAaiIMIAspAwA3AwAgAiACKQNQNwNAIANBOGogDCkDADcAACADQTBqIAIpA0A3AAAgA0EoaiAGKQMANwAAIANBIGogBykDADcAACADQRhqIAgpAwA3AAAgA0EQaiAJKQMANwAAIANBCGogCikDADcAACADIAIpAxA3AAAgAUEANgIAIAAgBDYCBCAAIAU2AgAgAkGQAWokAA8LQbCawABBFyACQRBqQaCXwABBsJfAABB5AAtBEEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyAEQQFBtKXAACgCACIAQQIgABsRAAAAC9gIAQV/IABBeGoiASAAQXxqKAIAIgNBeHEiAGohAgJAAkACQAJAIANBAXENACADQQNxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUH8pMAAKAIARgRAIAIoAgRBA3FBA0cNAUH0pMAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgAPCyABIAMQTAsCQCACQQRqIgQoAgAiA0ECcQRAIAQgA0F+cTYCACABIABBAXI2AgQgACABaiAANgIADAELAkAgAkGApcAAKAIARwRAQfykwAAoAgAgAkYNASACIANBeHEiAhBMIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQfykwAAoAgBHDQJB9KTAACAANgIADwtBgKXAACABNgIAQfikwABB+KTAACgCACAAaiIANgIAIAEgAEEBcjYCBEH8pMAAKAIAIAFGBEBB9KTAAEEANgIAQfykwABBADYCAAtBnKXAACgCACICIABPDQJBgKXAACgCACIARQ0CAkBB+KTAACgCACIDQSlJDQBBjKXAACEBA0AgASgCACIEIABNBEAgBCABKAIE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KQMwNwNoIAJBIGogAkGMAWopAgA3AwAgAkEYaiACQYQBaikCADcDACACQRBqIAJB/ABqKQIANwMAIAJBCGogAkH0AGopAgA3AwAgAkEoaiACQZQBaikCADcDACACIAIpAmw3AwAgASACEB8gAUIANwMIIAFCADcDACABQQA2AlAgAUHQmMAAKQMANwMQIAFBGGpB2JjAACkDADcDACABQSBqQeCYwAApAwA3AwAgAUEoakHomMAAKQMANwMAIAFBMGpB8JjAACkDADcDACABQThqQfiYwAApAwA3AwAgAUFAa0GAmcAAKQMANwMAIAFByABqQYiZwAApAwA3AwACQAJAQTBBARChASIDBEAgAkIwNwJsIAIgAzYCaCACQegAaiACQTAQXgJAIAIoAmwiBCACKAJwIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAmghBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCbCACIAQ2AmgLIAIoAmghBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFB0JjAACkDADcDACABQQhqQdiYwAApAwA3AwAgAUEQakHgmMAAKQMANwMAIAFBGGpB6JjAACkDADcDACABQSBqQfCYwAApAwA3AwAgAUEoakH4mMAAKQMANwMAIAFBMGpBgJnAACkDADcDACABQThqQYiZwAApAwA3AwAgACADNgIEIAAgBDYCACACQaABaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC78GAQR/IAAgAWohAgJAAkACQAJAAkAgAEEEaigCACIDQQFxDQAgA0EDcUUNASAAKAIAIgMgAWohASAAIANrIgBB/KTAACgCAEYEQCACKAIEQQNxQQNHDQFB9KTAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADwsgACADEEwLAkAgAkEEaigCACIDQQJxBEAgAkEEaiADQX5xNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAMAQsCQCACQYClwAAoAgBHBEBB/KTAACgCACACRg0BIAIgA0F4cSICEEwgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABB/KTAACgCAEcNAkH0pMAAIAE2AgAPC0GApcAAIAA2AgBB+KTAAEH4pMAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABB/KTAACgCAEcNAkH0pMAAQQA2AgBB/KTAAEEANgIADwtB/KTAACAANgIAQfSkwABB9KTAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyABQYACSQ0DIABCADcCECAAQRxqAn9BACABQQh2IgNFDQAaQR8gAUH///8HSw0AGiABQQYgA2ciAmtBH3F2QQFxIAJBAXRrQT5qCyICNgIAIAJBAnRB9KPAAGohAwJAAkBB6KHAACgCACIEQQEgAkEfcXQiBXEEQCADKAIAIgNBBGooAgBBeHEgAUcNASADIQIMAgtB6KHAACAEIAVyNgIAIAMgADYCAAwECyABQQBBGSACQQF2a0EfcSACQR9GG3QhBANAIAMgBEEddkEEcWpBEGoiBSgCACICRQ0DIARBAXQhBCACIQMgAkEEaigCAEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBGGpBADYCACAAIAI2AgwgACABNgIICw8LIAUgADYCAAsgAEEYaiADNgIAIAAgADYCDCAAIAA2AggPCyABQQN2IgJBA3RB7KHAAGohAQJ/QeShwAAoAgAiA0EBIAJ0IgJxBEAgASgCCAwBC0HkocAAIAIgA3I2AgAgAQshAiABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggL1AYBBH8jAEHQAWsiAiQAIAJBygBqQgA3AQAgAkHSAGpBADsBACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkHkAGpCADcCACACQewAakIANwIAIAJB9ABqQgA3AgAgAkH8AGpBADoAACACQf0AakEANgAAIAJBgQFqQQA7AAAgAkGDAWpBADoAACACQQA7AUQgAkEANgFGIAJBwAA2AkAgAkGIAWogAkFAa0HEABCLARogAkE4aiACQcQBaikCADcDACACQTBqIAJBvAFqKQIANwMAIAJBKGogAkG0AWopAgA3AwAgAkEgaiACQawBaikCADcDACACQRhqIAJBpAFqKQIANwMAIAJBEGogAkGcAWopAgA3AwAgAkEIaiACQZQBaikCADcDACACIAIpAowBNwMAIAEgAhARIAFCADcDCCABQgA3AwAgAUEANgJQIAFBkJnAACkDADcDECABQRhqQZiZwAApAwA3AwAgAUEgakGgmcAAKQMANwMAIAFBKGpBqJnAACkDADcDACABQTBqQbCZwAApAwA3AwAgAUE4akG4mcAAKQMANwMAIAFBQGtBwJnAACkDADcDACABQcgAakHImcAAKQMANwMAAkACQEHAAEEBEKEBIgMEQCACQsAANwKMASACIAM2AogBIAJBiAFqIAJBwAAQXgJAIAIoAowBIgQgAigCkAEiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCiAEhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCjAEgAiAENgKIAQsgAigCiAEhBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFBkJnAACkDADcDACABQQhqQZiZwAApAwA3AwAgAUEQakGgmcAAKQMANwMAIAFBGGpBqJnAACkDADcDACABQSBqQbCZwAApAwA3AwAgAUEoakG4mcAAKQMANwMAIAFBMGpBwJnAACkDADcDACABQThqQciZwAApAwA3AwAgACADNgIEIAAgBDYCACACQdABaiQADwtBwABBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBgEKfyMAQTBrIgIkACACQSRqQYCHwAA2AgAgAkEDOgAoIAJCgICAgIAENwMIIAIgADYCICACQQA2AhggAkEANgIQAn8CQAJAAkAgASgCCCIDBEAgASgCACEFIAEoAgQiCCABQQxqKAIAIgYgBiAISxsiBkUNASABQRRqKAIAIQcgASgCECEJIAAgBSgCACAFKAIEQYyHwAAoAgARAwANAyAFQQhqIQECQAJAA0AgAiADQQRqKAIANgIMIAIgA0Ecai0AADoAKCACIANBCGooAgA2AgggA0EYaigCACEAQQAhBAJAAkACQCADQRRqKAIAQQFrDgIAAgELIAAgB08NAyAAQQN0IAlqIgooAgRBA0cNASAKKAIAKAIAIQALQQEhBAsgAiAANgIUIAIgBDYCECADQRBqKAIAIQBBACEEAkACQAJAIANBDGooAgBBAWsOAgACAQsgACAHTw0EIABBA3QgCWoiCigCBEEDRw0BIAooAgAoAgAh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IQEgACgCGCEAA0AgBkF/aiIGRQRAQQAPCyAAIAcgASgCEBEBAEUNAAsLIAULtwUBBH8jAEGQAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJBADsBNCACQQA2ATYgAkEoNgIwIAJBgAFqIAJB0ABqKQMANwMAIAJB+ABqIAJByABqKQMANwMAIAJB8ABqIAJBQGspAwA3AwAgAkHoAGogAkE4aikDADcDACACQYgBaiACQdgAaigCADYCACACIAIpAzA3A2AgAkEgaiACQfwAaikCADcDACACQRhqIAJB9ABqKQIANwMAIAJBEGogAkHsAGopAgA3AwAgAkEoaiACQYQBaikCADcDACACIAIpAmQ3AwggASACQQhqEE0gAUIANwMAIAFBADYCMCABQdCXwAApAwA3AwggAUEQakHYl8AAKQMANwMAIAFBGGpB4JfAACkDADcDACABQSBqQeiXwAApAwA3AwAgAUEoakHwl8AAKQMANwMAAkACQEEoQQEQoQEiAwRAIAJCKDcCZCACIAM2AmAgAkHgAGogAkEIakEoEF4CQCACKAJkIgQgAigCaCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AmQgAiAENgJgCyACKAJgIQQgAUIANwMAIAFBADYCMCABQQhqIgFB0JfAACkDADcDACABQQhqQdiXwAApAwA3AwAgAUEQakHgl8AAKQMANwMAIAFBGGpB6JfAACkDADcDACABQSBqQfCXwAApAwA3AwAgACADNgIEIAAgBDYCACACQZABaiQADwtBKEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8YEAQR/IwBBoAFrIgIkACACQTpqQgA3AQAgAkHCAGpBADsBACACQcQAakIANwIAIAJBzABqQgA3AgAgAkHUAGpCADcCACACQdwAakIANwIAIAJBADsBNCACQQA2ATYgAkEwNgIwIAJBkAFqIAJB2ABqKQMANwMAIAJBiAFqIAJB0ABqKQMANwMAIAJBgAFqIAJByABqKQMANwMAIAJB+ABqIAJBQGspAwA3AwAgAkHwAGogAkE4aikDADcDACACQZgBaiACQeAAaigCADYCACACIAIpAzA3A2ggAkEgaiACQYwBaikCADcDACACQRhqIAJBhAFqKQIANwMAIAJBEGogAkH8AGopAgA3AwAgAkEIaiACQfQAaikCADcDACACQShqIAJBlAFqKQIANwMAIAIgAikCbDcDACABIAIQYyABQQBByAEQkQEiBUEANgLIAQJAAkBBMEEBEKEBIgEEQCACQjA3AmwgAiABNgJoIAJB6ABqIAJBMBBeAkAgAigCbCIDIAIoAnAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCaCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJsIAIgAzYCaAsgAigCaCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJBoAFqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALxgQBBH8jAEGgAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkEAOwE0IAJBADYBNiACQTA2AjAgAkGQAWogAkHYAGopAwA3AwAgAkGIAWogAkHQAGopAwA3AwAgAkGAAWogAkHIAGopAwA3AwAgAkH4AGogAkFAaykDADcDACACQfAAaiACQThqKQMANwMAIAJBmAFqIAJB4ABqKAIANgIAIAIgAikDMDcDaCACQSBqIAJBjAFqKQIANwMAIAJBGGogAkGEAWopAgA3AwAgAkEQaiACQfwAaikCADcDACACQQhqIAJB9ABqKQIANwMAIAJBKGogAkGUAWopAgA3AwAgAiACKQJsNwMAIAEgAhBkIAFBAEHIARCRASIFQQA2AsgBAkACQEEwQQEQoQEiAQRAIAJCMDcCbCACIAE2AmggAkHoAGogAkEwEF4CQCACKAJsIgMgAigCcCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJoIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AmwgAiADNgJoCyACKAJoIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkGgAWokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAu8BAEEfyMAQaADayICJAAgAkHyAmpCADcBACACQfoCakEAOwEAIAJB/AJqQgA3AgAgAkGEA2pCADcCACACQYwDakIANwIAIAJBlANqQgA3AgAgAkEAOwHsAiACQQA2Ae4CIAJBMDYC6AIgAkHYAGogAkGQA2opAwA3AwAgAkHQAGogAkGIA2opAwA3AwAgAkHIAGogAkGAA2opAwA3AwAgAkFAayACQfgCaikDADcDACACQThqIAJB8AJqKQMANwMAIAJB4ABqIAJBmANqKAIANgIAIAIgAikD6AI3AzAgAkEgaiACQdQAaikCADcDACACQRhqIAJBzABqKQIANwMAIAJBEGogAkHEAGopAgA3AwAgAkEIaiACQTxqKQIANwMAIAJBKGogAkHcAGopAgA3AwAgAiACKQI0NwMAIAJBMGogAUG4AhCLARogAkEwaiACEGMCQAJAQTBBARChASIDBEAgAkIwNwI0IAIgAzYCMCACQTBqIAJBMBBeAkAgAigCNCIEIAIoAjgiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCMCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgI0IAIgBDYCMAsgAigCMCEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALvAQBBH8jAEGgA2siAiQAIAJB8gJqQgA3AQAgAkH6AmpBADsBACACQfwCakIANwIAIAJBhANqQgA3AgAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB7AIgAkEANgHuAiACQTA2AugCIAJB2ABqIAJBkANqKQMANwMAIAJB0ABqIAJBiANqKQMANwMAIAJByABqIAJBgANqKQMANwMAIAJBQGsgAkH4AmopAwA3AwAgAkE4aiACQfACaikDADcDACACQeAAaiACQZgDaigCADYCACACIAIpA+gCNwMwIAJBIGogAkHUAGopAgA3AwAgAkEYaiACQcwAaikCADcDACACQRBqIAJBxABqKQIANwMAIAJBCGogAkE8aikCADcDACACQShqIAJB3ABqKQIANwMAIAIgAikCNDcDACACQTBqIAFBuAIQiwEaIAJBMGogAhBkAkACQEEwQQEQoQEiAwRAIAJCMDcCNCACIAM2AjAgAkEwaiACQTAQXgJAIAIoAjQiBCACKAI4IgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAjAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCNCACIAQ2AjALIAIoAjAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC7wEAQR/IwBBwAJrIgIkACACQZICakIANwEAIAJBmgJqQQA7AQAgAkGcAmpCADcCACACQaQCakIANwIAIAJBrAJqQgA3AgAgAkG0AmpCADcCACACQQA7AYwCIAJBADYBjgIgAkEwNgKIAiACQdgAaiACQbACaikDADcDACACQdAAaiACQagCaikDADcDACACQcgAaiACQaACaikDADcDACACQUBrIAJBmAJqKQMANwMAIAJBOGogAkGQAmopAwA3AwAgAkHgAGogAkG4AmooAgA2AgAgAiACKQOIAjcDMCACQSBqIAJB1ABqKQIANwMAIAJBGGogAkHMAGopAgA3AwAgAkEQaiACQcQAaikCADcDACACQQhqIAJBPGopAgA3AwAgAkEoaiACQdwAaikCADcDACACIAIpAjQ3AwAgAkEwaiABQdgBEIsBGiACQTBqIAIQHwJAAkBBMEEBEKEBIgMEQCACQjA3AjQgAiADNgIwIAJBMGogAkEwEF4CQCACKAI0IgQgAigCOCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIwIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjQgAiAENgIwCyACKAIwIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAmokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGs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AkHwAGokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvMBAEEfyMAQdABayICJAAgAkHKAGpCADcBACACQdIAakEAOwEAIAJB1ABqQgA3AgAgAkHcAGpCADcCACACQeQAakIANwIAIAJB7ABqQgA3AgAgAkH0AGpCADcCACACQfwAakEAOgAAIAJB/QBqQQA2AAAgAkGBAWpBADsAACACQYMBakEAOgAAIAJBADsBRCACQQA2AUYgAkHAADYCQCACQYgBaiACQUBrQcQAEIsBGiACQThqIAJBxAFqKQIANwMAIAJBMGogAkG8AWopAgA3AwAgAkEoaiACQbQBaikCADcDACACQSBqIAJBrAFqKQIANwMAIAJBGGogAkGkAWopAgA3AwAgAkEQaiACQZwBaikCADcDACACQQhqIAJBlAFqKQIANwMAIAIgAikCjAE3AwAgASACEFsgAUEAQcgBEJEBIgVBADYCyAECQAJAQcAAQQEQoQEiAQRAIAJCwAA3AowBIAIgATYCiAEgAkGIAWogAkHAABBeAkAgAigCjAEiAyACKAKQASIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAKIASEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgKMASACIAM2AogBCyACKAKIASEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB0AFqJAAPC0HAAEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC8wEAQR/IwBB0AFrIgIkACACQcoAakIANwEAIAJB0gBqQQA7AQAgAkHUAGpCADcCACACQdwAakIANwIAIAJB5ABqQgA3AgAgAkHsAGpCADcCACACQfQAakIANwIAIAJB/ABqQQA6AAAgAkH9AGpBADYAACACQYEBakEAOwAAIAJBgwFqQQA6AAAgAkEAOwFEIAJBADYBRiACQcAANgJAIAJBiAFqIAJBQGtBxAAQiwEaIAJBOGogAkHEAWopAgA3AwAgAkEwaiACQbwBaikCADcDACACQShqIAJBtAFqKQIANwMAIAJBIGogAkGsAWopAgA3AwAgAkEYaiACQaQBaikCADcDACACQRBqIAJBnAFqKQIANwMAIAJBCGogAkGUAWopAgA3AwAgAiACKQKMATcDACABIAIQXCABQQBByAEQkQEiBUEANgLIAQJAAkBBwABBARChASIBBEAgAkLAADcCjAEgAiABNgKIASACQYgBaiACQcAAEF4CQCACKAKMASIDIAIoApABIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAogBIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AowBIAIgAzYCiAELIAIoAogBIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHQAWokAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQWwJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQXAJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEHgAmsiAiQAIAJBogJqQgA3AQAgAkGqAmpBADsBACACQawCakIANwIAIAJBtAJqQgA3AgAgAkG8AmpCADcCACACQcQCakIANwIAIAJBzAJqQgA3AgAgAkHUAmpBADoAACACQdUCakEANgAAIAJB2QJqQQA7AAAgAkHbAmpBADoAACACQQA7AZwCIAJBADYBngIgAkHAADYCmAIgAkFAayACQZgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3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AABzOgAAIAVBAWoiBUHIAEcNAAsgABAOIAZByABJDQJByAAhBSACQcgAaiECIAhByABqIQgMAAsACyACIARqIgYgBEkNAiAGQcgASw0DIAAgBGpBzAFqIAEgAhCLARogACgCyAEgAmohBwwBCyAAQcwBaiABIARqIAcQiwEaCyAAIAc2AsgBIANBQGskAA8LIAQgBkHAm8AAEH4ACyAGQcgAQcCbwAAQfQALIARByABB0JvAABB+AAsgBCACQeCbwAAQfQALIANBNGpBBjYCACADQSRqQQI2AgAgA0IDNwIUIANBuJ7AADYCECADQQY2AiwgAyADQQxqNgI4IANB3J7AADYCPCADIANBKGo2AiAgAyADQTxqNgIwIAMgA0E4ajYCKCADQRBqQeCewAAQkAEAC5sEAQd/IwBBQGoiAyQAAkACQAJAAkACQAJAAkBB6AAgACgCyAEiBGsiBiACTQRAIAQEQCAEQekATw0GIAAgBGpBzAFqIAEgBhCLARogAiAGayECIAEgBmohAQNAIAAgBWoiBCAELQAAIARBzAFqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDgsgAiACQegAcCIHayEEIAIgB0kNBiAEQegASQ0BIAFB6ABqIQggASECIAQhBkHoACEFA0AgAyAFNgIMIAVB6ABHDQggBkGYf2ohBkEAIQUDQCAAIAVqIgkgCS0AACACIAVqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDiAGQegASQ0CQegAIQUgAkHoAGohAiAIQegAaiEIDAALAAsgAiAEaiIGIARJDQIgBkHoAEsNAyAAIARqQcwBaiABIAIQiwEaIAAoAsgBIAJqIQcMAQsgAEHMAWogASAEaiAHEIsBGgsgACAHNgLIASADQUBrJAAPCyAEIAZBwJvAABB+AAsgBkHoAEHAm8AAEH0ACyAEQegAQdCbwAAQfgALIAQgAkHgm8AAEH0ACyADQTRqQQY2AgAgA0EkakECNgIAIANCAzcCFCADQbiewAA2AhAgA0EGNgIsIAMgA0EMajYCOCADQdiewAA2AjwgAyADQShqNgIgIAMgA0E8ajYCMCADIANBOGo2AiggA0EQakHgnsAAEJABAAvkAwEEfyMAQcABayICJAAgAkGiAWpCADcBACACQaoBakEAOwEAIAJBrAFqQgA3AgAgAkG0AWpCADcCACACQQA7AZwBIAJBADYBngEgAkEgNgKYASACQUBrIAJBsAFqKQMANwMAIAJBOGogAkGoAWopAwA3AwAgAkEwaiACQaABaikDADcDACACQcgAaiACQbgBaigCADYCACACIAIpA5gBNwMoIAJBGGogAkE8aikCADcDACACQRBqIAJBNGopAgA3AwAgAkEgaiACQcQAaikCADcDACACIAIpAiw3AwggAkEoaiABQfAAEIsBGiACQShqIAJBCGoQOwJAAkBBIEEBEKEBIgMEQCACQiA3AiwgAiADNgIoIAJBKGogAkEIakEgEF4CQCACKAIsIgQgAigCMCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIoIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiwgAiAENgIoCyACKAIoIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAWokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBAEFfyMAQYABayICJAAgAkHyAGpCADcBACACQfoAakEAOwEAIAJBADsBbCACQQA2AW4gAkEQNgJoIAJBGGogAkHwAGoiBCkDADcDACACQSBqIAJB+ABqKAIANgIAIAJBCGoiBSACQRxqKQIANwMAIAIgAikDaDcDECACIAIpAhQ3AwAgAkEQaiABQdQAEIsBGgJAAkACQCACKAIQIgNBEEkEQCACQRBqQQRyIgYgA2pBECADayIDIAMQkQEaIAJBADYCECACQSRqIgMgBhALIAQgAkHcAGopAgA3AwAgAiACQdQAaikCADcDaCADIAJB6ABqEAsgBSACQSxqKQIANwMAIAIgAikCJDcDAEEQQQEQoQEiA0UNASACQhA3AhQgAiADNgIQIAJBEGogAkEQEF4CQCACKAIUIgQgAigCGCIDRgRAIAQhAwwBCyAEIANJDQMgBEUNACACKAIQIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0FCyACIAM2AhQgAiAENgIQCyACKAIQIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGAAWokAA8LQbCawABBFyACQegAakGgl8AAQbCXwAAQeQALQRBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqEFogAUIANwMAIAFBADYCHCABQfiXwAApAwA3AwggAUEQakGAmMAAKQMANwMAIAFBGGpBiJjAACgCADYCAAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUIANwMAIAFBADYCHCABQQhqIgFB+JfAACkDADcDACABQQhqQYCYwAApAwA3AwAgAUEQakGImMAAKAIANgIAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqECAgAUEANgIcIAFCADcDACABQRhqQYiYwAAoAgA2AgAgAUEQakGAmMAAKQMANwMAIAFB+JfAACkDADcDCAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUEANgIcIAFCADcDACABQQhqIgFBEGpBiJjAACgCADYCACABQQhqQYCYwAApAwA3AwAgAUH4l8AAKQMANwMAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvlAwEEfyMAQfAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQTRqQgA3AgAgAkE8akIANwIAIAJBADsBJCACQQA2ASYgAkEgNgIgIAJB4ABqIAJBOGopAwA3AwAgAkHYAGogAkEwaikDADcDACACQdAAaiACQShqKQMANwMAIAJB6ABqIAJBQGsoAgA2AgAgAiACKQMgNwNIIAJBEGogAkHcAGopAgA3AwAgAkEIaiACQdQAaikCADcDACACQRhqIAJB5ABqKQIANwMAIAIgAikCTDcDACABIAIQZiABQQBByAEQkQEiBUEANgLIAQJAAkBBIEEBEKEBIgEEQCACQiA3AkwgAiABNgJIIAJByABqIAJBIBBeAkAgAigCTCIDIAIoAlAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCSCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJMIAIgAzYCSAsgAigCSCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB8ABqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAAL5QMBBH8jAEHwAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBPGpCADcCACACQQA7ASQgAkEANgEmIAJBIDYCICACQeAAaiACQThqKQMANwMAIAJB2ABqIAJBMGopAwA3AwAgAkHQAGogAkEoaikDADcDACACQegAaiACQUBrKAIANgIAIAIgAikDIDcDSCACQRBqIAJB3ABqKQIANwMAIAJBCGogAkHUAGopAgA3AwAgAkEYaiACQeQAaikCADcDACACIAIpAkw3AwAgASACEGcgAUEAQcgBEJEBIgVBADYCyAECQAJAQSBBARChASIBBEAgAkIgNwJMIAIgATYCSCACQcgAaiACQSAQXgJAIAIoAkwiAyACKAJQIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkghBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCTCACIAM2AkgLIAIoAkghAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQfAAaiQADwtBIEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9wDAQR/IwBBoANrIgIkACACQYIDakIANwEAIAJBigNqQQA7AQAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB/AIgAkEANgH+AiACQSA2AvgCIAJBOGogAkGQA2opAwA3AwAgAkEwaiACQYgDaikDADcDACACQShqIAJBgANqKQMANwMAIAJBQGsgAkGYA2ooAgA2AgAgAiACKQP4AjcDICACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAJBGGogAkE8aikCADcDACACIAIpAiQ3AwAgAkEgaiABQdgCEIsBGiACQSBqIAIQZgJAAkBBIEEBEKEBIgMEQCACQiA3AiQgAiADNgIgIAJBIGogAkEgEF4CQCACKAIkIgQgAigCKCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiQgAiAENgIgCyACKAIgIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvcAwEEfyMAQaADayICJAAgAkGCA2pCADcBACACQYoDakEAOwEAIAJBjANqQgA3AgAgAkGUA2pCADcCACACQQA7AfwCIAJBADYB/gIgAkEgNgL4AiACQThqIAJBkANqKQMANwMAIAJBMGogAkGIA2opAwA3AwAgAkEoaiACQYADaikDADcDACACQUBrIAJBmANqKAIANgIAIAIgAikD+AI3AyAgAkEQaiACQTRqKQIANwMAIAJBCGogAkEsaikCADcDACACQRhqIAJBPGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHYAhCLARogAkEgaiACEGcCQAJAQSBBARChASIDBEAgAkIgNwIkIAIgAzYCICACQSBqIAJBIBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAAL0wMBBH8jAEHgAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBHDYCICACQTxqQQA2AgAgAkEAOwEkIAJBADYBJiACQdgAaiACQThqKQMANwMAIAJB0ABqIAJBMGopAwA3AwAgAkHIAGogAkEoaikDADcDACACIAIpAyA3A0AgAkEYaiACQdwAaigCADYCACACQRBqIAJB1ABqKQIANwMAIAJBCGogAkHMAGopAgA3AwAgAiACKQJENwMAIAEgAhBoIAFBAEHIARCRASIFQQA2AsgBAkACQEEcQQEQoQEiAQRAIAJCHDcCRCACIAE2AkAgAkFAayACQRwQXgJAIAIoAkQiAyACKAJIIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkAhBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCRCACIAM2AkALIAIoAkAhAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQeAAaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9MDAQR/IwBB4ABrIgIkACACQSpqQgA3AQAgAkEyakEAOwEAIAJBNGpCADcCACACQRw2AiAgAkE8akEANgIAIAJBADsBJCACQQA2ASYgAkHYAGogAkE4aikDADcDACACQdAAaiACQTBqKQMANwMAIAJByABqIAJBKGopAwA3AwAgAiACKQMgNwNAIAJBGGogAkHcAGooAgA2AgAgAkEQaiACQdQAaikCADcDACACQQhqIAJBzABqKQIANwMAIAIgAikCRDcDACABIAIQaSABQQBByAEQkQEiBUEANgLIAQJAAkBBHEEBEKEBIgEEQCACQhw3AkQgAiABNgJAIAJBQGsgAkEcEF4CQCACKAJEIgMgAigCSCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJAIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AkQgAiADNgJACyACKAJAIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHgAGokAA8LQRxBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAvkAwIJfwF+IwBBoAFrIgIkACACQUBrIAFBBGoQciABKAIAIQggAkH4AGoiAyABQTxqKQAANwMAIAJB8ABqIgQgAUE0aikAADcDACACQegAaiIFIAFBLGopAAA3AwAgAkHgAGoiBiABQSRqKQAANwMAIAJB2ABqIgcgAUEcaikAADcDACACIAEpABQ3A1AgAkGQAWogAUHEAGoQciACQQhqIgkgBykDADcDACACQRBqIgcgBikDADcDACACQRhqIgYgBSkDADcDACACQSBqIgUgBCkDADcDACACQShqIgQgAykDADcDACACQTBqIgMgAikDkAEiCzcDACACQThqIgogAkGYAWopAwA3AwAgAiALNwOAASACIAIpA1A3AwBB1ABBBBChASIBRQRAQdQAQQRBtKXAACgCACIAQQIgABsRAAAACyABIAg2AgAgASACKQNANwIEIAEgAikDADcCFCABQQxqIAJByABqKQMANwIAIAFBHGogCSkDADcCACABQSRqIAcpAwA3AgAgAUEsaiAGKQMANwIAIAFBNGogBSkDADcCACABQTxqIAQpAwA3AgAgAUHEAGogAykDADcCACABQcwAaiAKKQMANwIAIABB9I/AADYCBCAAIAE2AgAgAkGgAWokAAvLAwEEfyMAQaADayICJAAgAkGKA2pCADcBACACQZIDakEAOwEAIAJBlANqQgA3AgAgAkEcNgKAAyACQZwDakEANgIAIAJBADsBhAMgAkEANgGGAyACQThqIAJBmANqKQMANwMAIAJBMGogAkGQA2opAwA3AwAgAkEoaiACQYgDaikDADcDACACIAIpA4ADNwMgIAJBGGogAkE8aigCADYCACACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAIgAikCJDcDACACQSBqIAFB4AIQiwEaIAJBIGogAhBpAkACQEEcQQEQoQEiAwRAIAJCHDcCJCACIAM2AiAgAkEgaiACQRwQXgJAIAIoAiQiBCACKAIoIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAiAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCJCACIAQ2AiALIAIoAiAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8sDAQR/IwBBoANrIgIkACACQYoDakIANwEAIAJBkgNqQQA7AQAgAkGUA2pCADcCACACQRw2AoADIAJBnANqQQA2AgAgAkEAOwGEAyACQQA2AYYDIAJBOGogAkGYA2opAwA3AwAgAkEwaiACQZADaikDADcDACACQShqIAJBiANqKQMANwMAIAIgAikDgAM3AyAgAkEYaiACQTxqKAIANgIAIAJBEGogAkE0aikCADcDACACQQhqIAJBLGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHgAhCLARogAkEgaiACEGgCQAJAQRxBARChASIDBEAgAkIcNwIkIAIgAzYCICACQSBqIAJBHBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EcQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALywMBBH8jAEGwAWsiAiQAIAJBmgFqQgA3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HCIEayIFIAJNBEAgAEEIaiEHIAQEQCAEQcEATw0GIAQgAEEgaiIEaiABIAUQiwEaIAcgBBAHIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAcgBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQSBqIAEgAhCLARogACgCHCACaiEFDAELIABBIGogASAIaiAFEIsBGgsgACAFNgIcIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQALtAMBBn8jAEFAaiIDJAAgACAAKQMAIAKtfDcDAAJAAkACQAJAAkACQEHAACAAKAIIIgRrIgUgAk0EQCAAQcwAaiEHIAQEQCAEQcEATw0GIAQgAEEMaiIEaiABIAUQiwEaIAcgBBAKIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAogBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQQxqIAEgAhCLARogACgCCCACaiEFDAELIABBDGogASAIaiAFEIsBGgsgACAFNgIIIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQAL0QMCBX8CfiAAQdQAaiECIABBEGohAyAAQQhqKQMAIQYgACkDACEHAkACQCAAKAJQIgFBgAFGBEAgAyACQQEQDEEAIQEgAEEA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AXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACAAIAAoAgRBAXI2AgQgASACEBQMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgAEEEaigCACIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIABBBGogBCABQQFxckECcjYCACAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBAUCyAAQQhqIQMLIAMLiwMCBn8BfiMAQfAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaikDADcDACACQeAAaiIFIAFBIGopAwA3AwAgAkHoAGoiBiABQShqKQMANwMAIAIgASkDCDcDSCABKQMAIQggAkEIaiABQTRqEGUgASgCMCEHQfgAQQgQoQEiAUUEQEH4AEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAINwMAIAEgAikDSDcDCCABIAc2AjAgASACKQMINwI0IAFBEGogAykDADcDACABQRhqIAQpAwA3AwAgAUEgaiAFKQMANwMAIAFBKGogBikDADcDACABQTxqIAJBEGopAwA3AgAgAUHEAGogAkEYaikDADcCACABQcwAaiACQSBqKQMANwIAIAFB1ABqIAJBKGopAwA3AgAgAUHcAGogAkEwaikDADcCACABQeQAaiACQThqKQMANwIAIAFB7ABqIAJBQGspAwA3AgAgAEHgjMAANgIEIAAgATYCACACQfAAaiQAC4YDAQR/IwBBkAFrIgIkACACQYIBakIANwEAIAJBigFqQQA7AQAgAkEAOwF8IAJBADYBfiACQRA2AnggAkEgaiACQYABaikDADcDACACQShqIAJBiAFqKAIANgIAIAJBEGogAkEkaikCADcDACACIAIpA3g3AxggAiACKQIcNwMIIAJBGGogAUHgABCLARogAkEYaiACQQhqEF0CQAJAQRBBARChASIDBEAgAkIQNwIcIAIgAzYCGCACQRhqIAJBCGpBEBBeAkAgAigCHCIEIAIoAiAiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCGCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIcIAIgBDYCGAsgAigCGCEEIAEQ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QT8gBmsQkQEaQcAAIAAoAjBrQQdNBEAgBCADEAYgACgCMCICQcEATw0CIABBNGpBACACEJEBGgsgAEHsAGogB0IDhjcCACAEIAMQBiAAQQA2AjAgASAAKAIINgAAIAEgAEEMaigCADYABCABIABBEGooAgA2AAggASAAQRRqKAIANgAMIAEgAEEYaigCADYAECABIABBHGooAgA2ABQgASAAQSBqKAIANgAYIAEgAEEkaigCADYAHCABIABBKGooAgA2ACAgASAAQSxqKAIANgAkDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAvwAgIGfwF+IwBBEGsiBCQAIABBDGohBSAAQcwAaiEDIAApAwAhCAJAAkAgACgCCCICQcAARgRAIAMgBRAKQQAhAiAAQQA2AggMAQsgAkE/Sw0BCyAAQQhqIgYgAmpBBGpBgAE6AAAgACAAKAIIIgdBAWoiAjYCCAJAIAJBwQBJBEAgAiAGakEEakEAQT8gB2sQkQEaQcAAIAAoAghrQQdNBEAgAyAFEAogACgCCCICQcEATw0CIABBDGpBACACEJEBGgsgAEHEAGogCEIDhjcCACADIAUQCiAAQQA2AgggBEEIaiICIABB3ABqNgIEIAIgAzYCACAEKAIMIAQoAggiAGtBAnYiA0EEIANBBEkbIgIEQEEAIQMDQCABIAAoAgA2AAAgAEEEaiEAIAFBBGohASADQQFqIgMgAkkNAAsLIARBEGokAA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAAL1AIBAX8gABBUIAEgACgCTCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAAgASAAQdAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAQgASAAQdQAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAggASAAQdgAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAwgASAAQdwAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABAgASAAQeAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABQgASAAQeQAaigCACIAQRh0IABBCHRBgID8B3FyIABBCHZBgP4DcSAAQRh2cnI2ABgL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQeCQwAA2AgQgACABNgIAIAJB4ABqJAAL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQYSRwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQYSNwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQbCNwAA2AgQgACABNgIAIAJB4ABqJAAL3QICBX8BfiAAQQxqIQIgAEHMAGohAyAAKQMAIQYCQAJAIAAoAggiAUHAAEYEQCADIAJBARAEQQAhASAAQQA2AggMAQsgAUE/Sw0BCyAAQQhqIgQgAWpBBGpBgAE6AAAgACAAKAIIIgVBAWoiATYCCAJAIAFBwQBJBEAgASAEakEEakEAQT8gBWsQkQEaQcAAIAAoAghrQQdNBEAgAyACQQEQBCAAKAIIIgFBwQBPDQIgAEEMakEAIAEQkQEaCyAAQcQAaiAGQiiGQoCAgICAgMD/AIMgBkI4hoQgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcCACADIAJBARAEIABBADYCCA8LIAFBwABBgJrAABB+AAsgAUHAAEGQmsAAEH0ACyABQcAAQaCawAAQfAALvgICBX8BfiMAQTBrIgQkAEEnIQICQCAAQpDOAFQEQCAAIQcMAQsDQCAEQQlqIAJqIgNBfGogACAAQpDOAIAiB0LwsX9+fKciBUH//wNxQeQAbiIGQQF0QdqIwABqLwAAOwAAIANBfmogBkGcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAACACQXxqIQIgAEL/wdcvViAHIQANAAsLIAenIgNB4wBKBEAgAkF+aiICIARBCWpqIAenIgVB//8DcUHkAG4iA0Gcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAAAsCQCADQQpOBEAgAkF+aiICIARBCWpqIANBAXRB2ojAAGovAAA7AAAMAQsgAkF/aiICIARBCWpqIANBMGo6AAALIAFByKDAAEEAIARBCWogAmpBJyACaxAYIARBMGokAAu/AgEDfyMAQRBrIgIkAAJAIAAoAgAiAAJ/AkAgAUGAAU8EQCACQQA2AgwgAUGAEEkNASABQYCABEkEQCACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAMLIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyAAKAIIIgMgAEEEaigCAEYEfyAAQQEQaiAAKAIIBSADCyAAKAIAaiABOgAAIAAgACgCCEEBajYCCAwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgsiARBqIABBCGoiAygCACIEIAAoAgBqIAJBDGogARCLARogAyABIARqNgIACyACQRBqJABBAAvLAgEIfyMAQYABayIBQShqIgJCADcDACABQSBqIgNCADcDACABQRhqIgRCADcDACABQRBqIgVCADcDACABQQhqIgZCADcDACABQgA3AwAgAUHaAGpCADcBACABQeIAakEAOwEAIAFBEDYCUCABQQA7AVQgAUEANgFWIAFB+ABqIAFB4ABqKAIANgIAIAFB8ABqIAFB2ABqKQMANwMAIAFByABqIgcgAUH0AGopAgA3AwAgASABKQNQNwNoIAEgASkCbDcDQCABQThqIgggBykDADcDACABIAEpA0A3AzAgAEHMAGogCCkDADcAACAAQcQAaiABKQMwNwAAIABBPGogAikDADcAACAAQTRqIAMpAwA3AAAgAEEsaiAEKQMANwAAIABBJGogBSkDADcAACAAQRxqIAYpAwA3AAAgACABKQMANwAUIABBADYCAAuxAgEDfyMAQYABayIEJAAgACgCACEAAkACQAJ/AkAgASgCACIDQRBxRQRAIAAoAgAhAiADQSBxDQEgAq0gARBVDAILIAAoAgAhAkEAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEF/aiEAIAJBBHYiAg0ACyAAQYABaiICQYEBTw0CIAFB2IvAAEECIAAgBGpBgAFqQQAgAGsQGAwBC0EAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPDQIgAUHYi8AAQQIgACAEakGAAWpBACAAaxAYCyAEQYABaiQADwsgAkGAAUHIi8AAEH4ACyACQYABQciLwAAQfgALrAICA38CfiAAIAApAwAiBiACrUIDhnwiBzcDACAAQQhqIgMgAykDACAHIAZUrXw3AwACQAJAQYABIAAoAlAiA2siBCACTQRAIABBEGoiBSADBEAgA0GBAU8NAiADIABB1ABqIgNqIAEgBBCLARogAEEANgJQIAUgA0EBEAwgAiAEayECIAEgBGohAQsgASACQQd2EAwgAkH/AHEiA0GBAU8NAiAAQdQAaiABIAJBgH9xaiADEIsBGiAAIAM2AlAPCwJAIAIgA2oiBCADTwRAIARBgAFLDQEgACADakHUAGogASACEIsBGiAAIAAoAlAgAmo2AlAPCyADIARB0JnAABB+AAsgBEGAAUHQmcAAEH0ACyADQYABQeCZwAAQfgALIANBgAFB8JnAABB9AAu8AgIFfwF+IABBIGohAyAAQQhqIQQgACkDACEHAkACQCAAKAIcIgJBwABGBEAgBCADEAdBACECIABBADYCHAwBCyACQT9LDQELIABBHGoiBSACakEEakGAAToAACAAIAAoAhwiBkEBaiICNgIcAkAgAkHBAEkEQCACIAVqQQRqQQBBPyAGaxCRARpBwAAgACgCHGtBB00EQCAEIAMQByAAKAIcIgJBwQBPDQIgAEEgakEAIAIQkQEaCyAAQdgAaiAHQgOGNwIAIAQgAxAHIABBADYCHCABIAAoAgg2AAAgASAAQQxqKAIANgAEIAEgAEEQaigCADYACCABIABBFGooAgA2AAwgASAAQRhqKAIANgAQDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAu1AgEDfyMAQRBrIgQkACAAKALIASICQccATQRAIAAgAmpBzAFqQQY6AAAgAkEBaiIDQcgARwRAIAAgA2pBzAFqQQBBxwAgAmsQkQEaC0EAIQIgAEEANgLIASAAQZMCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkHIAEcNAAsgABAOIAEgACkAADcAACABQThqIABBOGopAAA3AAAgAUEwaiAAQTBqKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGknsAAEHkAC7UCAQN/IwBBEGsiBCQAIAAoAsgBIgJBxwBNBEAgACACakHMAWpBAToAACACQQFqIgNByABHBEAgACADakHMAWpBAEHHACACaxCRARoLQQAhAiAAQQA2AsgBIABBkwJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQcgARw0ACyAAEA4gASAAKQAANwAAIAFBOGogAEE4aikAADcAACABQTBqIABBMGopAAA3AAAgAUEoaiAAQShqKQAANwAAIAFBIGogAEEgaikAADcAACABQRhqIABBGGopAAA3AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQeSdwAAQeQALswICBX8BfiAAQQxqIQMgAEHMAGohBCAAKQMAIQcCQAJAIAAoAggiAkHAAEYEQCAEIAMQDUEAIQIgAEEANgIIDAELIAJBP0sNAQsgAEEIaiIFIAJqQQRqQYABOgAAIAAgACgCCCIGQQFqIgI2AggCQCACQcEASQRAIAIgBWpBBGpBAEE/IAZrEJEBGkHAACAAKAIIa0EHTQRAIAQgAxANIAAoAggiAkHBAE8NAiAAQQxqQQAgAhCRARoLIABBxABqIAdCA4Y3AgAgBCADEA0gAEEANgIIIAEgACgCTDYAACABIABB0ABqKAIANgAEIAEgAEHUAGooAgA2AAggASAAQdgAaigCADYADA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAALhgIBBH8CQCAAQQRqKAIAIgYgAEEIaigCACIFayACTwRAIAAoAgAhBAwBCwJAAn8gAiAFaiIDIAVPBEBBACAGQQF0IgUgAyAFIANLGyIDQQggA0EISxsiA0EASA0BGgJAIAAoAgBBACAGGyIERQRAIANBARChASIEDQQMAQsgAyAGRg0DIAZFBEAgA0EBEKEBIgRFDQEMBAsgBCAGQQEgAxCaASIEDQMLQQEMAQtBAAsiBARAIAMgBEG0pcAAKAIAIgBBAiAAGxEAAAALEJsBAAsgACAENgIAIABBBGogAzYCACAAQQhqKAIAIQULIAQgBWogASACEIsBGiAAQQhqIAIgBWo2AgALjAIBA38gACAAKQMAIAKtQgOGfDcDAAJAAkBBwAAgACgCCCIDayIEIAJNBEAgAEHMAGoiBSADBEAgA0HBAE8NAiADIABBDGoiA2ogASAEEIsBGiAAQQA2AgggBSADQQEQBCACIARrIQIgASAEaiEBCyABIAJBBnYQBCACQT9xIgNBwQBPDQIgAEEMaiABIAJBQHFqIAMQiwEaIAAgAzYCCA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQQxqIAEgAhCLARogACAAKAIIIAJqNgIIDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEG8jMAANgIEIAAgATYCACACQdAAaiQAC4gCAQN/IAAgACkDACACrXw3AwACQAJAQcAAIAAoAhwiA2siBCACTQRAIABBCGoiBSADBEAgA0HBAE8NAiADIABBIGoiA2ogASAEEIsBGiAAQQA2AhwgBSADQQEQCCACIARrIQIgASAEaiEBCyABIAJBBnYQCCACQT9xIgNBwQBPDQIgAEEgaiABIAJBQHFqIAMQiwEaIAAgAzYCHA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQSBqIAEgAhCLARogACAAKAIcIAJqNgIcDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEGokcAANgIEIAAgATYCACACQdAAaiQAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBBjoAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGUnsAAEHkAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBAToAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHUncAAEHkAC/MBAQR/IwBBkAFrIgIkACACQQA2AgAgAkEEciEFA0AgAyAFaiABIANqLQAAOgAAIAIgAigCAEEBaiIENgIAIANBAWoiA0HAAEcNAAsgBEE/TQRAIARBwAAQfwALIAJByABqIAJBxAAQiwEaIABBOGogAkGEAWopAgA3AAAgAEEwaiACQfwAaikCADcAACAAQShqIAJB9ABqKQIANwAAIABBIGogAkHsAGopAgA3AAAgAEEYaiACQeQAaikCADcAACAAQRBqIAJB3ABqKQIANwAAIABBCGogAkHUAGopAgA3AAAgACACKQJMNwAAIAJBkAFqJAAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGHAU0EQCAAIAJqQcwBakEBOgAAIAJBAWoiA0GIAUcEQCAAIANqQcwBakEAQYcBIAJrEJEBGgtBACECIABBADYCyAEgAEHTAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBiAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHEncAAEHkAC/UBAQN/IwBBEGsiBCQAIAAoAsgBIgJBhwFNBEAgACACakHMAWpBBjoAACACQQFqIgNBiAFHBEAgACADakHMAWpBAEGHASACaxCRARoLQQAhAiAAQQA2AsgBIABB0wJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQYgBRw0ACyAAEA4gASAAKQAANwAAIAFBGGogAEEYaikAADcAACABQRBqIABBEGopAAA3AAAgAUEIaiAAQQhqKQAANwAAIARBEGokAA8LQbCawABBFyAEQQhqQciawABBhJ7AABB5AAv1AQEDfyMAQRBrIgQkACAAKALIASICQY8BTQRAIAAgAmpBzAFqQQE6AAAgAkEBaiIDQZABRwRAIAAgA2pBzAFqQQBBjwEgAmsQkQEaC0EAIQIgAEEANgLIASAAQdsCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkGQAUcNAAsgABAOIAEgACkAADcAACABQRhqIABBGGooAAA2AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQdiawAAQeQAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGPAU0EQCAAIAJqQcwBakEGOgAAIAJBAWoiA0GQAUcEQCAAIANqQcwBakEAQY8BIAJrEJEBGgtBACECIABBADYCyAEgAEHbAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBkAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKAAANgAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEH0ncAAEHkAC8MBAQJ/AkACQCAAQQRqKAIAIgMgACgCCCICayABSQRAIAEgAmoiASACSQ0BIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQECQCAAKAIAQQAgAxsiAUUEQCACQQEQoQEhAQwBCyACIANGDQAgA0UEQCACQQEQoQEhAQwBCyABIANBASACEJoBIQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxCbAQALIAJBAUG0pcAAKAIAIgBBAiAAGxEAAAALhQEBBH8jAEGgAWsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQcgARw0A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JAAgAkGIAWogAUHIARCLARogAiABQcwBahBuIAEoAsgBIQNB2AJBCBChASIBRQRAQdgCQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBiAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkGIARCLARogAEGsj8AANgIEIAAgATYCACACQdACaiQAC34BAX8jAEFAaiIFJAAgBSABNgIMIAUgADYCCCAFIAM2AhQgBSACNgIQIAVBLGpBAjYCACAFQTxqQQQ2AgAgBUICNwIcIAVB8IvAADYCGCAFQQE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJABAAuVAQAgAEIANwMIIABCADcDACAAQQA2AlAgAEGQmcAAKQMANwMQIABBGGpBmJnAACkDADcDACAAQSBqQaCZwAApAwA3AwAgAEEoakGomcAAKQMANwMAIABBMGpBsJnAACkDADcDACAAQThqQbiZwAApAwA3AwAgAEFAa0HAmcAAKQMANwMAIABByABqQciZwAApAwA3AwALlQEAIABCADcDCCAAQgA3AwAgAEEANgJQIABB0JjAACkDADcDECAAQRhqQdiYwAApAwA3AwAgAEEgakHgmMAAKQMANwMAIABBKGpB6JjAACkDADcDACAAQTBqQfCYwAApAwA3AwAgAEE4akH4mMAAKQMANwMAIABBQGtBgJnAACkDADcDACAAQcgAakGImcAAKQMANwMAC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEFNgIAIANCAjcCDCADQYiIwAA2AgggA0EFNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCQAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQU2AgAgA0ICNwIMIANBpIrAADYCCCADQQU2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJABAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBBTYCACADQgI3AgwgA0HcisAANgIIIANBBTYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkAEAC3ABAX8jAEEwayICJAAgAiABNgIEIAIgADYCACACQRxqQQI2AgAgAkEsakEFNgIAIAJCAjcCDCACQcyRwAA2AgggAkEFNgIkIAIgAkEgajYCGCACIAJBBGo2AiggAiACNgIgIAJBCGpB3JHAABCQAQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEBYgAkEgaiQAC30BAn9BASEAQeChwABB4KHAACgCAEEBajYCAAJAAkBBqKXAACgCAEEBRwRAQailwABCgYCAgBA3AwAMAQtBrKXAAEGspcAAKAIAQQFqIgA2AgAgAEECSw0BC0GwpcAAKAIAIgFBf0wNAEGwpcAAIAE2AgAgAEEBSw0AAAsAC2ICAX8BfiMAQRBrIgIkAAJAIAEEQCABKAIADQEgAUF/NgIAIAJBCGogASgCBCABQQhqKAIAKAIQEQAAIAIpAwghAyABQQA2AgAgACADNwIAIAJBEGokAA8LEJ0BAAsQngEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSwECfwJAIAAEQCAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgABAQIAEgAigCABEEACACKAIEBEAgARAQCw8LEJ0BAAsQngEAC0gAAkAgAARAIAAoAgANASAAQX82AgAgACgCBCABIAIgAEEIaigCACgCDBECACACBEAgARAQCyAAQQA2AgAPCxCdAQALEJ4BAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQEADQEaCyACRQRAQQAPCyAAKAIYIAIgAyAAQRxqKAIAKAIMEQMACwtdACAAQgA3AwAgAEEANgIwIABB0JfAACkDADcDCCAAQRBqQdiXwAApAwA3AwAgAEEYakHgl8AAKQMANwMAIABBIGpB6JfAACkDADcDACAAQShqQfCXwAApAwA3AwALSAEBfyMAQSBrIgMkACADQRRqQQA2AgAgA0HIoMAANgIQIANCATcCBCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQkAEAC1AAIABBADYCCCAAQgA3AwAgAEGsmMAAKQIANwJMIABB1ABqQbSYwAApAgA3AgAgAEHcAGpBvJjAACkCADcCACAAQeQAakHEmMAAKQIANwIAC1AAIABBADYCCCAAQgA3AwAgAEGMmMAAKQIANwJMIABB1ABqQZSYwAApAgA3AgAgAEHcAGpBnJjAACkCADcCACAAQeQAakGkmMAAKQIANwIACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQEgA0EBaiEDIAJBf2oiAg0ACwsgAAs1AQJ/IAAoAgAiACACEGogAEEIaiIDKAIAIgQgACgCAGogASACEIsBGiADIAIgBGo2AgBBAAsrAAJAIABBfEsNACAARQRAQQQPCyAAIABBfUlBAnQQoQEiAEUNACAADwsACz0AIABCADcDACAAQQA2AhwgAEH4l8AAKQMANwMIIABBEGpBgJjAACkDADcDACAAQRhqQYiYwAAoAgA2AgALPQAgAEEANgIcIABCADcDACAAQRhqQYiYwAAoAgA2AgAgAEEQakGAmMAAKQMANwMAIABB+JfAACkDADcDCAtMAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkGYiMAANgIEIAJByKDAADYCACACKAIIRQRAQZ2gwABBK0HIoMAAEIgBAAsQgQEACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkF/aiICDQALCyAACy4AIABBADYCCCAAQgA3AwAgAEHUAGpByJfAACkCADcCACAAQcCXwAApAgA3AkwLIAACQCABQXxLDQAgACABQQQgAhCaASIARQ0AIAAPCwALHAAgASgCGEH/h8AAQQggAUEcaigCACgCDBEDAAscACABKAIYQYKMwABBBSABQRxqKAIAKAIMEQMACxQAIAAoAgAgASAAKAIEKAIMEQEACxAAIAEgACgCACAAKAIEEBILEgAgAEEAQcgBEJEBQQA2AsgBCwsAIAEEQCAAEBALCwwAIAAgASACIAMQFwsSAEHEhsAAQRFB2IbAABCIAQALDgAgACgCABoDQAwACwALDQBB76DAAEEbEKABAAsOAEGKocAAQc8AEKABAAsLACAANQIAIAEQVQsJACAAIAEQAQALGQACfyABQQlPBEAgASAAEEYMAQsgABAJCwsNAEKtqduM/5imovgACwQAQRALBABBKAsEAEEUCwUAQcAACwQA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AAAvaG9tZS9sdWNhY2Fzb25hdG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmxvY2stYnVmZmVyLTAuOS4wL3NyYy9saWIucnMvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzAGgNEABYAAAASAAAAAEAAABoDRAAWAAAAE8AAAABAAAAaA0QAFgAAABWAAAAAQAAAGgNEABYAAAAZgAAAAEAAABoDRAAWAAAAG0AAAABAAAAaA0QAFgAAAB0AAAAAQAAAGgNEABYAAAAewAAAAEAAACQAAAA5A8QAC0AAAAREBAADAAAAFAPEAABAAAAYAAAAIgAAABoAAAASAAAAHAPEAB0AAAAEAAAAAkAAAAvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvbWFjcm9zL21vZC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVYEBAAFwAAALQBAAAeAAAAc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ2LjAgKDA0NDg4YWZlMyAyMDIwLTA4LTI0KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNjggKGEwNGUxODk3MSk="); +let wasm; + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let WASM_VECTOR_LEN = 0; + +let cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** +* @param {string} algorithm +* @returns {DenoHash} +*/ +export function create_hash(algorithm) { + var ptr0 = passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ret = wasm.create_hash(ptr0, len0); + return DenoHash.__wrap(ret); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +/** +* @param {DenoHash} hash +* @param {Uint8Array} data +*/ +export function update_hash(hash, data) { + _assertClass(hash, DenoHash); + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.update_hash(hash.ptr, ptr0, len0); +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} + +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +/** +* @param {DenoHash} hash +* @returns {Uint8Array} +*/ +export function digest_hash(hash) { + try { + const retptr = wasm.__wbindgen_export_2.value - 16; + wasm.__wbindgen_export_2.value = retptr; + _assertClass(hash, DenoHash); + wasm.digest_hash(retptr, hash.ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally { + wasm.__wbindgen_export_2.value += 16; + } +} + +/** +*/ +export class DenoHash { + + static __wrap(ptr) { + const obj = Object.create(DenoHash.prototype); + obj.ptr = ptr; + + return obj; + } + + free() { + const ptr = this.ptr; + this.ptr = 0; + + wasm.__wbg_denohash_free(ptr); + } +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +async function init(input) { + if (typeof input === 'undefined') { + input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); + }; + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + const { instance, module } = await load(await input, imports); + + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + + return wasm; +} + +export default init; + diff --git a/bundler/tests/.cache/deno/a457995125d5e3a9f63d6a2d2d90b8b371e74529.ts b/bundler/tests/.cache/deno/a457995125d5e3a9f63d6a2d2d90b8b371e74529.ts new file mode 100644 index 00000000000..f446b2da498 --- /dev/null +++ b/bundler/tests/.cache/deno/a457995125d5e3a9f63d6a2d2d90b8b371e74529.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/modifyPath.js + + +import _curry3 from './internal/_curry3.js'; +import _isArray from './internal/_isArray.js'; +import _isObject from './internal/_isObject.js'; +import _has from './internal/_has.js'; +import _assoc from './internal/_assoc.js'; +import _modify from './internal/_modify.js'; + + +/** + * Creates a shallow clone of the passed object by applying an `fn` function + * to the value at the given path. + * + * The function will not be invoked, and the object will not change + * if its corresponding path does not exist in the object. + * All non-primitive properties are copied to the new object by reference. + * + * @func + * @memberOf R + * @category Object + * @sig [Idx] -> (v -> v) -> {k: v} -> {k: v} + * @param {Array} path The path to be modified. + * @param {Function} fn The function to apply to the path. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * const person = {name: 'James', address: { zipCode: '90216' }}; + * R.modifyPath(['address', 'zipCode'], R.reverse, person); //=> {name: 'James', address: { zipCode: '61209' }} + * + * // Can handle arrays too + * const person = {name: 'James', addresses: [{ zipCode: '90216' }]}; + * R.modifyPath(['addresses', 0, 'zipCode'], R.reverse, person); //=> {name: 'James', addresses: [{ zipCode: '61209' }]} + */ +var modifyPath = _curry3(function modifyPath(path, fn, object) { + if ((!_isObject(object) && !_isArray(object)) || path.length === 0) { + return object; + } + + var idx = path[0]; + if (!_has(idx, object)) { + return object; + } + + if (path.length === 1) { + return _modify(idx, fn, object); + } + + var val = modifyPath(Array.prototype.slice.call(path, 1), fn, object[idx]); + if (val === object[idx]) { + return object; + } + return _assoc(idx, val, object); + +}); +export default modifyPath; diff --git a/bundler/tests/.cache/deno/a45d1700c6aa4cf8381b39afe41d8b0ba349cd81.ts b/bundler/tests/.cache/deno/a45d1700c6aa4cf8381b39afe41d8b0ba349cd81.ts new file mode 100644 index 00000000000..4ea8c3ed838 --- /dev/null +++ b/bundler/tests/.cache/deno/a45d1700c6aa4cf8381b39afe41d8b0ba349cd81.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/constants.ts + + +export * as HttpMethod from "./_http_method.ts"; +export * as Header from "./_header.ts"; +export * as MIME from "./_mime.ts"; diff --git a/bundler/tests/.cache/deno/a47ee1ee9a119786322a592d6c4e1fc0ca7d115e.ts b/bundler/tests/.cache/deno/a47ee1ee9a119786322a592d6c4e1fc0ca7d115e.ts new file mode 100644 index 00000000000..6a19653b90b --- /dev/null +++ b/bundler/tests/.cache/deno/a47ee1ee9a119786322a592d6c4e1fc0ca7d115e.ts @@ -0,0 +1,161 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/negotiation/encoding.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface EncodingSpecificty extends Specificity { + encoding?: string; +} + +const simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +function parseEncoding(str: string, i: number): EncodingSpecificty | undefined { + const match = simpleEncodingRegExp.exec(str); + if (!match) { + return undefined; + } + + const encoding = match[1]; + let q = 1; + if (match[2]) { + const params = match[2].split(";"); + for (const param of params) { + const p = param.trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + + return { encoding, q, i }; +} + +function specify( + encoding: string, + spec: EncodingSpecificty, + i = -1, +): Specificity | undefined { + if (!spec.encoding) { + return; + } + let s = 0; + if (spec.encoding.toLocaleLowerCase() === encoding.toLocaleLowerCase()) { + s = 1; + } else if (spec.encoding !== "*") { + return; + } + + return { + i, + o: spec.i, + q: spec.q, + s, + }; +} + +function parseAcceptEncoding(accept: string): EncodingSpecificty[] { + const accepts = accept.split(","); + const parsedAccepts: EncodingSpecificty[] = []; + let hasIdentity = false; + let minQuality = 1; + + for (let i = 0; i < accepts.length; i++) { + const encoding = parseEncoding(accepts[i].trim(), i); + + if (encoding) { + parsedAccepts.push(encoding); + hasIdentity = hasIdentity || !!specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + + if (!hasIdentity) { + parsedAccepts.push({ + encoding: "identity", + q: minQuality, + i: accepts.length - 1, + }); + } + + return parsedAccepts; +} + +function getEncodingPriority( + encoding: string, + accepted: Specificity[], + index: number, +): Specificity { + let priority: Specificity = { o: -1, q: 0, s: 0, i: 0 }; + + for (const s of accepted) { + const spec = specify(encoding, s, index); + + if ( + spec && + (priority.s! - spec.s! || priority.q - spec.q || + priority.o! - spec.o!) < + 0 + ) { + priority = spec; + } + } + + return priority; +} + +/** Given an `Accept-Encoding` string, parse out the encoding returning a + * negotiated encoding based on the `provided` encodings otherwise just a + * prioritized array of encodings. */ +export function preferredEncodings( + accept: string, + provided?: string[], +): string[] { + const accepts = parseAcceptEncoding(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.encoding!); + } + + const priorities = provided.map((type, index) => + getEncodingPriority(type, accepts, index) + ); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/a4aaf231df4b43ed999e7cbb5db5b23c5d80d693.ts b/bundler/tests/.cache/deno/a4aaf231df4b43ed999e7cbb5db5b23c5d80d693.ts new file mode 100644 index 00000000000..d01fc9390e0 --- /dev/null +++ b/bundler/tests/.cache/deno/a4aaf231df4b43ed999e7cbb5db5b23c5d80d693.ts @@ -0,0 +1,162 @@ +// Loaded from https://deno.land/std@0.74.0/bytes/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from a. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + */ +export function findIndex(source: Uint8Array, pat: Uint8Array): number { + const s = pat[0]; + for (let i = 0; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from a. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + */ +export function findLastIndex(source: Uint8Array, pat: Uint8Array): number { + const e = pat[pat.length - 1]; + for (let i = source.length - 1; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param source first array to check equality + * @param match second array to check equality + */ +export function equal(source: Uint8Array, match: Uint8Array): boolean { + if (source.length !== match.length) return false; + for (let i = 0; i < match.length; i++) { + if (source[i] !== match[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source srouce array + * @param prefix prefix array to check in source + */ +export function hasPrefix(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function hasSuffix(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new Error("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copyBytes(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copyBytes(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate two binary arrays and return new one. + * @param origin origin array to concatenate + * @param b array to concatenate with origin + */ +export function concat(origin: Uint8Array, b: Uint8Array): Uint8Array { + const output = new Uint8Array(origin.length + b.length); + output.set(origin, 0); + output.set(b, origin.length); + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return findIndex(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copyBytes(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/a516a0933927c8bb50491290e8ad871b598bc25e.ts b/bundler/tests/.cache/deno/a516a0933927c8bb50491290e8ad871b598bc25e.ts new file mode 100644 index 00000000000..337aa14ba07 --- /dev/null +++ b/bundler/tests/.cache/deno/a516a0933927c8bb50491290e8ad871b598bc25e.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/index.js + + +// Top level file is just a mixin of submodules & constants +import { deflate, Deflate } from "./lib/deflate.js"; +import { inflate, Inflate } from "./lib/inflate.js"; +import constants from "./lib/zlib/constants.js"; + +export { + deflate, + Deflate, + inflate, + Inflate, + constants +}; diff --git a/bundler/tests/.cache/deno/a5a09d3edec940e550a53cc2fc6b79419f52cf2c.ts b/bundler/tests/.cache/deno/a5a09d3edec940e550a53cc2fc6b79419f52cf2c.ts new file mode 100644 index 00000000000..11db1469116 --- /dev/null +++ b/bundler/tests/.cache/deno/a5a09d3edec940e550a53cc2fc6b79419f52cf2c.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std@0.85.0/hash/_wasm/hash.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import init, { + source, + create_hash as createHash, + update_hash as updateHash, + digest_hash as digestHash, + DenoHash, +} from "./wasm.js"; + +import * as hex from "../../encoding/hex.ts"; +import * as base64 from "../../encoding/base64.ts"; +import type { Hasher, Message, OutputFormat } from "../hasher.ts"; + +await init(source); + +const TYPE_ERROR_MSG = "hash: `data` is invalid type"; + +export class Hash implements Hasher { + #hash: DenoHash; + #digested: boolean; + + constructor(algorithm: string) { + this.#hash = createHash(algorithm); + this.#digested = false; + } + + /** + * Update internal state + * @param data data to update + */ + update(data: Message): this { + let msg: Uint8Array; + + if (typeof data === "string") { + msg = new TextEncoder().encode(data as string); + } else if (typeof data === "object") { + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + msg = new Uint8Array(data); + } else { + throw new Error(TYPE_ERROR_MSG); + } + } else { + throw new Error(TYPE_ERROR_MSG); + } + + updateHash(this.#hash, msg); + + return this; + } + + /** Returns final hash */ + digest(): ArrayBuffer { + if (this.#digested) throw new Error("hash: already digested"); + + this.#digested = true; + return digestHash(this.#hash); + } + + /** + * Returns hash as a string of given format + * @param format format of output string (hex or base64). Default is hex + */ + toString(format: OutputFormat = "hex"): string { + const finalized = new Uint8Array(this.digest()); + + switch (format) { + case "hex": + return hex.encodeToString(finalized); + case "base64": + return base64.encode(finalized); + default: + throw new Error("hash: invalid format"); + } + } +} diff --git a/bundler/tests/.cache/deno/a5a49c36734c6483c1dafe3da4ed02d08eb9d760.ts b/bundler/tests/.cache/deno/a5a49c36734c6483c1dafe3da4ed02d08eb9d760.ts new file mode 100644 index 00000000000..8d4fa8bc2e2 --- /dev/null +++ b/bundler/tests/.cache/deno/a5a49c36734c6483c1dafe3da4ed02d08eb9d760.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.81.0/encoding/utf8.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/a5d7fba44d172af771e356390597c38a03950209.ts b/bundler/tests/.cache/deno/a5d7fba44d172af771e356390597c38a03950209.ts new file mode 100644 index 00000000000..37100e3d18c --- /dev/null +++ b/bundler/tests/.cache/deno/a5d7fba44d172af771e356390597c38a03950209.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.84.0/path/separator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/a65c80d8365ad68f50488cadf6649efc0f59f839.ts b/bundler/tests/.cache/deno/a65c80d8365ad68f50488cadf6649efc0f59f839.ts new file mode 100644 index 00000000000..a16ddb1cdb1 --- /dev/null +++ b/bundler/tests/.cache/deno/a65c80d8365ad68f50488cadf6649efc0f59f839.ts @@ -0,0 +1,190 @@ +// Loaded from https://deno.land/std@0.77.0/fs/walk.ts + + +// Documentation and interface for walk were adapted from Go +// https://golang.org/pkg/path/filepath/#Walk +// Copyright 2009 The Go Authors. All rights reserved. BSD license. +import { assert } from "../_util/assert.ts"; +import { basename, join, normalize } from "../path/mod.ts"; + +export function _createWalkEntrySync(path: string): WalkEntry { + path = normalize(path); + const name = basename(path); + const info = Deno.statSync(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +export async function _createWalkEntry(path: string): Promise { + path = normalize(path); + const name = basename(path); + const info = await Deno.stat(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +export interface WalkOptions { + maxDepth?: number; + includeFiles?: boolean; + includeDirs?: boolean; + followSymlinks?: boolean; + exts?: string[]; + match?: RegExp[]; + skip?: RegExp[]; +} + +function include( + path: string, + exts?: string[], + match?: RegExp[], + skip?: RegExp[], +): boolean { + if (exts && !exts.some((ext): boolean => path.endsWith(ext))) { + return false; + } + if (match && !match.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + if (skip && skip.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + return true; +} + +export interface WalkEntry extends Deno.DirEntry { + path: string; +} + +/** Walks the file tree rooted at root, yielding each file or directory in the + * tree filtered according to the given options. The files are walked in lexical + * order, which makes the output deterministic but means that for very large + * directories walk() can be inefficient. + * + * Options: + * - maxDepth?: number = Infinity; + * - includeFiles?: boolean = true; + * - includeDirs?: boolean = true; + * - followSymlinks?: boolean = false; + * - exts?: string[]; + * - match?: RegExp[]; + * - skip?: RegExp[]; + * + * + * for await (const entry of walk(".")) { + * console.log(entry.path); + * assert(entry.isFile); + * } + */ +export async function* walk( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): AsyncIterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield await _createWalkEntry(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for await (const entry of Deno.readDir(root)) { + if (entry.isSymlink) { + if (followSymlinks) { + // TODO(ry) Re-enable followSymlinks. + throw new Error("unimplemented"); + } else { + continue; + } + } + + assert(entry.name != null); + const path = join(root, entry.name); + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walk(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} + +/** Same as walk() but uses synchronous ops */ +export function* walkSync( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): IterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield _createWalkEntrySync(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for (const entry of Deno.readDirSync(root)) { + if (entry.isSymlink) { + if (followSymlinks) { + throw new Error("unimplemented"); + } else { + continue; + } + } + + assert(entry.name != null); + const path = join(root, entry.name); + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walkSync(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} diff --git a/bundler/tests/.cache/deno/a67b1c64514bea54c6365ab7db8939627efb005f.ts b/bundler/tests/.cache/deno/a67b1c64514bea54c6365ab7db8939627efb005f.ts new file mode 100644 index 00000000000..09e3281fdf3 --- /dev/null +++ b/bundler/tests/.cache/deno/a67b1c64514bea54c6365ab7db8939627efb005f.ts @@ -0,0 +1,102 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIP.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const ipv4Maybe = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/; + +/** + * @ignore + */ +const ipv6Block = /^[0-9A-F]{1,4}$/i; + +export const isIP = (str: string, ipVersion?: string | number): boolean => { + assertString(str); + const version = ipVersion ? String(ipVersion) : ''; + + if (!version) { + return isIP(str, 4) || isIP(str, 6); + } else if (version === '4') { + if (!ipv4Maybe.test(str)) { + return false; + } + + const arr = str.split('.') as unknown; + const parts = (arr as number[]).sort((a, b) => a - b); + return (parts[3] <= 255) as boolean; + } else if (version === '6') { + let addressAndZone = [str]; + // ipv6 addresses could have scoped architecture + // according to https://tools.ietf.org/html/rfc4007#section-11 + if (str.includes('%')) { + addressAndZone = str.split('%'); + + if (addressAndZone.length !== 2) { + // it must be just two parts + return false; + } + + if (!addressAndZone[0].includes(':')) { + // the first part must be the address + return false; + } + + if (addressAndZone[1] === '') { + // the second part must not be empty + return false; + } + } + + const blocks = addressAndZone[0].split(':'); + let foundOmissionBlock = false; // marker to indicate :: + + // At least some OS accept the last 32 bits of an IPv6 address + // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says + // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses, + // and '::a.b.c.d' is deprecated, but also valid. + const foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4); + const expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8; + + if (blocks.length > expectedNumberOfBlocks) { + return false; + } + // initial or final :: + if (str === '::') { + return true; + } else if (str.substr(0, 2) === '::') { + blocks.shift(); + blocks.shift(); + foundOmissionBlock = true; + } else if (str.substr(str.length - 2) === '::') { + blocks.pop(); + blocks.pop(); + foundOmissionBlock = true; + } + + for (let i = 0; i < blocks.length; ++i) { + // test for a :: which can not be at the string start/end + // since those cases have been handled above + if (blocks[i] === '' && i > 0 && i < blocks.length - 1) { + if (foundOmissionBlock) { + return false; // multiple :: in address + } + foundOmissionBlock = true; + } else if (foundIPv4TransitionBlock && i === blocks.length - 1) { + // it has been checked before that the last + // block is a valid IPv4 address + } else if (!ipv6Block.test(blocks[i])) { + return false; + } + } + + if (foundOmissionBlock) { + return blocks.length >= 1; + } + return blocks.length === expectedNumberOfBlocks; + } + return false; +}; diff --git a/bundler/tests/.cache/deno/a716684acab1eb2fdd7e36b899e9e6a0361a075e.ts b/bundler/tests/.cache/deno/a716684acab1eb2fdd7e36b899e9e6a0361a075e.ts new file mode 100644 index 00000000000..f620f75bcab --- /dev/null +++ b/bundler/tests/.cache/deno/a716684acab1eb2fdd7e36b899e9e6a0361a075e.ts @@ -0,0 +1,128 @@ +// Loaded from https://deno.land/x/oak/negotiation/charset.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface CharsetSpecificity extends Specificity { + charset: string; +} + +const SIMPLE_CHARSET_REGEXP = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +function parseCharset(str: string, i: number): CharsetSpecificity | undefined { + const match = SIMPLE_CHARSET_REGEXP.exec(str); + if (!match) { + return; + } + + const [, charset] = match; + let q = 1; + if (match[2]) { + const params = match[2].split(";"); + for (const param of params) { + const [key, value] = param.trim().split("="); + if (key === "q") { + q = parseFloat(value); + break; + } + } + } + + return { charset, q, i }; +} + +function parseAcceptCharset(accept: string): CharsetSpecificity[] { + const accepts = accept.split(","); + const result: CharsetSpecificity[] = []; + + for (let i = 0; i < accepts.length; i++) { + const charset = parseCharset(accepts[i].trim(), i); + if (charset) { + result.push(charset); + } + } + return result; +} + +function specify( + charset: string, + spec: CharsetSpecificity, + i: number, +): Specificity | undefined { + let s = 0; + if (spec.charset.toLowerCase() === charset.toLocaleLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return; + } + + return { i, o: spec.i, q: spec.q, s }; +} + +function getCharsetPriority( + charset: string, + accepted: CharsetSpecificity[], + index: number, +): Specificity { + let priority: Specificity = { i: -1, o: -1, q: 0, s: 0 }; + for (const accepts of accepted) { + const spec = specify(charset, accepts, index); + if ( + spec && + ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q || + (priority.o ?? 0) - (spec.o ?? 0)) < 0 + ) { + priority = spec; + } + } + return priority; +} + +export function preferredCharsets(accept = "*", provided?: string[]): string[] { + const accepts = parseAcceptCharset(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.charset); + } + + const priorities = provided + .map((type, index) => getCharsetPriority(type, accepts, index)); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/a719960671d4134f36546c84e88a5c128ada63aa.ts b/bundler/tests/.cache/deno/a719960671d4134f36546c84e88a5c128ada63aa.ts new file mode 100644 index 00000000000..e1cacaf7201 --- /dev/null +++ b/bundler/tests/.cache/deno/a719960671d4134f36546c84e88a5c128ada63aa.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/KnownTypeNamesRule.js + + +import didYouMean from '../../jsutils/didYouMean.js'; +import suggestionList from '../../jsutils/suggestionList.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { isTypeDefinitionNode, isTypeSystemDefinitionNode, isTypeSystemExtensionNode } from '../../language/predicates.js'; +import { specifiedScalarTypes } from '../../type/scalars.js'; + +/** + * Known type names + * + * A GraphQL document is only valid if referenced types (specifically + * variable definitions and fragment conditions) are defined by the type schema. + */ +export function KnownTypeNamesRule(context) { + const schema = context.getSchema(); + const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null); + const definedTypes = Object.create(null); + + for (const def of context.getDocument().definitions) { + if (isTypeDefinitionNode(def)) { + definedTypes[def.name.value] = true; + } + } + + const typeNames = Object.keys(existingTypesMap).concat(Object.keys(definedTypes)); + return { + NamedType(node, _1, parent, _2, ancestors) { + const typeName = node.name.value; + + if (!existingTypesMap[typeName] && !definedTypes[typeName]) { + const definitionNode = ancestors[2] ?? parent; + const isSDL = definitionNode != null && isSDLNode(definitionNode); + + if (isSDL && isSpecifiedScalarName(typeName)) { + return; + } + + const suggestedTypes = suggestionList(typeName, isSDL ? specifiedScalarsNames.concat(typeNames) : typeNames); + context.reportError(new GraphQLError(`Unknown type "${typeName}".` + didYouMean(suggestedTypes), node)); + } + } + + }; +} +const specifiedScalarsNames = specifiedScalarTypes.map(type => type.name); + +function isSpecifiedScalarName(typeName) { + return specifiedScalarsNames.indexOf(typeName) !== -1; +} + +function isSDLNode(value) { + return !Array.isArray(value) && (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/a739e3441df81d7e6ddbd74c904691517977a6fe.ts b/bundler/tests/.cache/deno/a739e3441df81d7e6ddbd74c904691517977a6fe.ts new file mode 100644 index 00000000000..9087810c3cf --- /dev/null +++ b/bundler/tests/.cache/deno/a739e3441df81d7e6ddbd74c904691517977a6fe.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std/async/delay.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/a777851f3834ac4a4f81b2acdb778752ec3f928a.ts b/bundler/tests/.cache/deno/a777851f3834ac4a4f81b2acdb778752ec3f928a.ts new file mode 100644 index 00000000000..12a137cf7fc --- /dev/null +++ b/bundler/tests/.cache/deno/a777851f3834ac4a4f81b2acdb778752ec3f928a.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/collectBy.js + + +import _curry2 from './internal/_curry2.js'; +import _reduce from './internal/_reduce.js'; + +/** + * Splits a list into sub-lists, based on the result of calling a key-returning function on each element, + * and grouping the results according to values returned. + * + * @func + * @memberOf R + * @category List + * @typedefn Idx = String | Int | Symbol + * @sig Idx a => (b -> a) -> [b] -> [[b]] + * @param {Function} fn Function :: a -> Idx + * @param {Array} list The array to group + * @return {Array} + * An array of arrays where each sub-array contains items for which + * the String-returning function has returned the same value. + * @see R.groupBy, R.partition + * @example + * R.collectBy(R.prop('type'), [ + * {type: 'breakfast', item: '☕️'}, + * {type: 'lunch', item: '🌯'}, + * {type: 'dinner', item: '🍝'}, + * {type: 'breakfast', item: '🥐'}, + * {type: 'lunch', item: '🍕'} + * ]); + * + * // [ [ {type: 'breakfast', item: '☕️'}, + * // {type: 'breakfast', item: '🥐'} ], + * // [ {type: 'lunch', item: '🌯'}, + * // {type: 'lunch', item: '🍕'} ], + * // [ {type: 'dinner', item: '🍝'} ] ] + */ +var collectBy = _curry2(function collectBy(fn, list) { + var group = _reduce(function(o, x) { + var tag = fn(x); + if (o[tag] === undefined) { o[tag] = []; } + o[tag].push(x); + return o; + }, {}, list); + var newList = []; + for (var tag in group) { newList.push(group[tag]); } + return newList; +}); +export default collectBy; diff --git a/bundler/tests/.cache/deno/a78fea5845db336f77ced80b6b48eae199ebbc8d.ts b/bundler/tests/.cache/deno/a78fea5845db336f77ced80b6b48eae199ebbc8d.ts new file mode 100644 index 00000000000..9e2ea2bbf04 --- /dev/null +++ b/bundler/tests/.cache/deno/a78fea5845db336f77ced80b6b48eae199ebbc8d.ts @@ -0,0 +1,228 @@ +// Loaded from https://deno.land/x/args@1.0.7/utils.ts + + +import { + Ok, + Err, + ParseError, + ArgvItem, +} from "./types.ts"; + +/** + * Create an `Ok` + * @template Value Type of value to carry + * @param value Value to carry + * @returns An `Ok` object that carries `value` + */ +export const ok = (value: Value): Ok => ({ + tag: true, + value, +}); + +/** + * Create an `Err` + * @template Error Type of error to carry + * @param error Error to carry + * @returns An `Err` object that carries `error` + */ +export const err = (error: Error): Err => ({ + tag: false, + error, +}); + +/** + * Create an object of single property + * @template Key Type of property key + * @template Value Type of property value + * @param key Property key + * @param value Property value + * @returns An object of one key-value pair + */ +export const record = < + Key extends string | number | symbol, + Value, +>( + key: Key, + value: Value, +) => ({ [key]: value }) as Record; + +/** + * Determine flag prefix + * @param name Flag name + * @returns `"-"` for single character name, or `"--"` for otherwise + */ +export const flagPrefix = (name: string): "-" | "--" => + name.length === 1 ? "-" : "--"; + +/** + * Convert a flag name to a flag argument + * @param name Flag name + * @returns Flag argument + */ +export function flag(name: string | readonly string[]) { + switch (typeof name) { + case "string": + return flagPrefix(name) + name; + case "object": + return "-" + name.join(""); + } +} + +/** + * Convert a list of raw arguments to an iterator of classified arguments + * @param args Raw arguments + * @returns Iterator of classified arguments + */ +export function* iterateArguments(args: readonly string[]) { + let fn = (raw: string, index: number): ArgvItem[] => { + if (raw === "--") { + fn = (raw, index) => ([{ type: "value", index, raw }]); + return []; + } + + if (raw.startsWith("--")) { + return [{ + type: "single-flag", + name: raw.slice("--".length), + index, + raw, + }]; + } + + if (raw.startsWith("-") && isNaN(raw as any)) { + return [{ + type: "multi-flag", + name: [...raw.slice("-".length)], + index, + raw, + }]; + } + + return [{ + type: "value", + index, + raw, + }]; + }; + + for (let i = 0; i !== args.length; ++i) { + yield* fn(args[i], i); + } +} + +/** + * Divide a list into two, one where `fn` returns `true`, other where `fn` returns `false` + * @template X0 Type of item + * @template X1 Type of item where `fn` returns `true` + * @param xs List + * @param fn Predicate + * @returns A tuple of two sub-lists + */ +export function partition( + xs: Iterable, + fn: (x: X0) => x is X1, +): [X1[], X0[]] { + const left: X1[] = []; + const right: X0[] = []; + for (const x of xs) { + (fn(x) ? left : right).push(x); + } + return [left, right]; +} + +type ArgvFlag = ArgvItem.SingleFlag | ArgvItem.MultiFlag; + +/** + * Create a predicate to filter flags of certain names from a list of classified arguments + * @param names Chosen flags' names + * @returns Filter predicate + */ +const flagPredicate = (names: readonly string[]) => + (item: ArgvItem): item is ArgvFlag => { + switch (item.type) { + case "single-flag": + return names.includes(item.name); + case "multi-flag": + return item.name.some((flag) => names.includes(flag)); + case "value": + return false; + } + }; + +/** + * Divide a list of classified arguments into two: one for flags with certain names, other for the rest + * @param args List of classified arguments + * @param names Chosen flags' names + * @returns A tuple of two sub-lists + */ +export const partitionFlags = ( + args: Iterable, + names: readonly string[], +) => partition(args, flagPredicate(names)); + +/** + * Filter a list of classified arguments for flags with certain names + * @param args List of classified arguments + * @param names Chosen flags' names + * @returns A list of flags with chosen names + */ +export const findFlags = ( + args: readonly ArgvItem[], + names: readonly string[], +) => args.filter(flagPredicate(names)); + +/** + * Convert a multi-line string into an iterator of lines + * @param text Multi-line string + * @returns Lines of `text` + */ +export function* lines(text: string) { + for (const line of text.split("\n")) { + yield line; + } +} + +/** + * Convert a multi-line string into an iterator of lines, + * with each line being prefixed + * @param text Multi-line string + * @param indent Prefix to each line + * @returns Prefixed lines of `text` + */ +export function* makeIndent(text: string, indent: string) { + for (const line of lines(text)) { + yield indent + line; + } +} + +/** + * Convert a multi-line string into an iterator of lines, + * with each line being prefixed + * @param text Multi-line string + * @param size Size of prefix + * @returns Prefixed lines of `text` + */ +export const makeIndentN = (text: string, size: number) => + makeIndent(text, " ".repeat(size)); + +/** + * `Map`-like class where `.get(key)` always result in defined value + * @template Key Type of key + * @template Value Type of value + */ +export abstract class InitMap extends Map { + /** + * This method is called by `this.get` when key of `key` does not exist in `this` yet. + * Result of this function will then be assigned as value to key of `key` + * @param key Key that does not exist in `this` yet + * @returns Intended value to key of `key` + */ + protected abstract init(key: Key): Value; + + public get(key: Key): Value { + if (super.has(key)) return super.get(key)!; + const value = this.init(key); + super.set(key, value); + return value; + } +} diff --git a/bundler/tests/.cache/deno/a7bec4aba036f0df48acd2f84301cd14dce3e5a4.ts b/bundler/tests/.cache/deno/a7bec4aba036f0df48acd2f84301cd14dce3e5a4.ts new file mode 100644 index 00000000000..faae64cd6e9 --- /dev/null +++ b/bundler/tests/.cache/deno/a7bec4aba036f0df48acd2f84301cd14dce3e5a4.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/zip.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Creates a new list out of the two supplied by pairing up equally-positioned + * items from both lists. The returned list is truncated to the length of the + * shorter of the two input lists. + * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`. + * @example + * + * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]] + */ +var zip = _curry2(function zip(a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = [a[idx], b[idx]]; + idx += 1; + } + return rv; +}); +export default zip; diff --git a/bundler/tests/.cache/deno/a7e75abeb0935a7e603b3aee76c69dbf5ea3aba1.ts b/bundler/tests/.cache/deno/a7e75abeb0935a7e603b3aee76c69dbf5ea3aba1.ts new file mode 100644 index 00000000000..84a28a400f0 --- /dev/null +++ b/bundler/tests/.cache/deno/a7e75abeb0935a7e603b3aee76c69dbf5ea3aba1.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xdropLast.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XDropLast(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); +} +XDropLast.prototype['@@transducer/init'] = _xfBase.init; +XDropLast.prototype['@@transducer/result'] = function(result) { + this.acc = null; + return this.xf['@@transducer/result'](result); +}; +XDropLast.prototype['@@transducer/step'] = function(result, input) { + if (this.full) { + result = this.xf['@@transducer/step'](result, this.acc[this.pos]); + } + this.store(input); + return result; +}; +XDropLast.prototype.store = function(input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } +}; + +var _xdropLast = _curry2(function _xdropLast(n, xf) { return new XDropLast(n, xf); }); +export default _xdropLast; diff --git a/bundler/tests/.cache/deno/a7f325f1045f10db067945514a4ae60517e3ce32.ts b/bundler/tests/.cache/deno/a7f325f1045f10db067945514a4ae60517e3ce32.ts new file mode 100644 index 00000000000..f9395589ea4 --- /dev/null +++ b/bundler/tests/.cache/deno/a7f325f1045f10db067945514a4ae60517e3ce32.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/takeWhile.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xtakeWhile from './internal/_xtakeWhile.js'; +import slice from './slice.js'; + + +/** + * Returns a new list containing the first `n` elements of a given list, + * passing each value to the supplied predicate function, and terminating when + * the predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * Dispatches to the `takeWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.dropWhile, R.transduce, R.addIndex + * @example + * + * const isNotFour = x => x !== 4; + * + * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] + * + * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram' + */ +var takeWhile = _curry2(_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) { + var idx = 0; + var len = xs.length; + while (idx < len && fn(xs[idx])) { + idx += 1; + } + return slice(0, idx, xs); +})); +export default takeWhile; diff --git a/bundler/tests/.cache/deno/a867251db68a6e8929f60c1cf45bd96109ab62b6.ts b/bundler/tests/.cache/deno/a867251db68a6e8929f60c1cf45bd96109ab62b6.ts new file mode 100644 index 00000000000..82a6a634ba2 --- /dev/null +++ b/bundler/tests/.cache/deno/a867251db68a6e8929f60c1cf45bd96109ab62b6.ts @@ -0,0 +1,94 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/runtime/adl.ts + + +import type * as AST from "./sys/adlast.ts"; +import type * as utils from "./utils.ts"; + +export type ScopedName = AST.ScopedName; +export type ScopedDecl = AST.ScopedDecl; +export type ATypeRef<_T> = {value: AST.TypeRef}; +export type ATypeExpr<_T> = {value : AST.TypeExpr}; + +/** + * A function to obtain details on a declared type. + */ +export interface DeclResolver { + (decl : AST.ScopedName): AST.ScopedDecl; +}; + +export function declResolver(...astMaps : ({[key:string] : AST.ScopedDecl})[]) { + const astMap : {[key:string] : AST.ScopedDecl} = {}; + for (let map of astMaps) { + for (let scopedName in map) { + astMap[scopedName] = map[scopedName]; + } + } + + function resolver(scopedName : AST.ScopedName) : AST.ScopedDecl { + const scopedNameStr = scopedName.moduleName + "." + scopedName.name; + const result = astMap[scopedNameStr]; + if (result === undefined) { + throw new Error("Unable to resolve ADL type " + scopedNameStr); + } + return result; + } + + return resolver; +} + +type Unknown = {} | null; +type Json = {} | null; + +/* Type expressions for primitive types */ + +function texprPrimitive(ptype: string): ATypeExpr { + return { + value: { + typeRef: { kind: "primitive", value: ptype }, + parameters: [] + } + }; +}; + +function texprPrimitive1(ptype: string, etype: ATypeExpr): ATypeExpr { + return { + value: { + typeRef: { kind: "primitive", value: ptype }, + parameters: [etype.value] + } + }; +}; + +export function texprVoid() : ATypeExpr {return texprPrimitive("Void");} +export function texprBool() : ATypeExpr {return texprPrimitive("Bool");} +export function texprInt8() : ATypeExpr {return texprPrimitive("Int8");} +export function texprInt16() : ATypeExpr {return texprPrimitive("Int16");} +export function texprInt32() : ATypeExpr {return texprPrimitive("Int32");} +export function texprInt64() : ATypeExpr {return texprPrimitive("Int64");} +export function texprWord8() : ATypeExpr {return texprPrimitive("Word8");} +export function texprWord16() : ATypeExpr {return texprPrimitive("Word16");} +export function texprWord32() : ATypeExpr {return texprPrimitive("Word32");} +export function texprWord64() : ATypeExpr {return texprPrimitive("Word64");} +export function texprFloat() : ATypeExpr {return texprPrimitive("Float");} +export function texprDouble() : ATypeExpr {return texprPrimitive("Double");} +export function texprJson() : ATypeExpr {return texprPrimitive("Json");} +export function texprByteVector() : ATypeExpr {return texprPrimitive("ByteVector");} +export function texprString() : ATypeExpr {return texprPrimitive("String");} + +export function texprVector(etype: ATypeExpr) : ATypeExpr { + return texprPrimitive1("Vector", etype); +} + +export function texprStringMap(etype: ATypeExpr) : ATypeExpr<{[key:string]:T}> { + return texprPrimitive1("StringMap", etype); +} + +export function texprNullable(etype: ATypeExpr) : ATypeExpr { + return texprPrimitive1("Nullable", etype); +} +// "Flavoured" nominal typing. +// https://spin.atomicobject.com/2018/01/15/typescript-flexible-nominal-typing/ +export type Flavored0 = utils.Flavored0; +export type Flavored1 = utils.Flavored1; +export type Flavored2 = utils.Flavored2; +export type Flavored3 = utils.Flavored3; diff --git a/bundler/tests/.cache/deno/a87b83630681d76c8e78522f238e3fcce049fb9e.ts b/bundler/tests/.cache/deno/a87b83630681d76c8e78522f238e3fcce049fb9e.ts new file mode 100644 index 00000000000..65992277153 --- /dev/null +++ b/bundler/tests/.cache/deno/a87b83630681d76c8e78522f238e3fcce049fb9e.ts @@ -0,0 +1,310 @@ +// Loaded from https://deno.land/std/fs/copy.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType, isSubdir } from "./_util.ts"; +import { assert } from "../_util/assert.ts"; +import { isWindows } from "../_util/os.ts"; + +export interface CopyOptions { + /** + * overwrite existing file or directory. Default is `false` + */ + overwrite?: boolean; + /** + * When `true`, will set last modification and access times to the ones of the + * original source files. + * When `false`, timestamp behavior is OS-dependent. + * Default is `false`. + */ + preserveTimestamps?: boolean; +} + +interface InternalCopyOptions extends CopyOptions { + /** + * default is `false` + */ + isFolder?: boolean; +} + +async function ensureValidCopy( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + let destStat: Deno.FileInfo; + + try { + destStat = await Deno.lstat(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (options.isFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +function ensureValidCopySync( + src: string, + dest: string, + options: InternalCopyOptions, +): Deno.FileInfo | undefined { + let destStat: Deno.FileInfo; + try { + destStat = Deno.lstatSync(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + + if (options.isFolder && !destStat.isDirectory) { + throw new Error( + `Cannot overwrite non-directory '${dest}' with directory '${src}'.`, + ); + } + if (!options.overwrite) { + throw new Error(`'${dest}' already exists.`); + } + + return destStat; +} + +/* copy file to dest */ +async function copyFile( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + await Deno.copyFile(src, dest); + if (options.preserveTimestamps) { + const statInfo = await Deno.stat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy file to dest synchronously */ +function copyFileSync( + src: string, + dest: string, + options: InternalCopyOptions, +): void { + ensureValidCopySync(src, dest, options); + Deno.copyFileSync(src, dest); + if (options.preserveTimestamps) { + const statInfo = Deno.statSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest */ +async function copySymLink( + src: string, + dest: string, + options: InternalCopyOptions, +): Promise { + await ensureValidCopy(src, dest, options); + const originSrcFilePath = await Deno.readLink(src); + const type = getFileInfoType(await Deno.lstat(src)); + if (isWindows) { + await Deno.symlink(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + await Deno.symlink(originSrcFilePath, dest); + } + if (options.preserveTimestamps) { + const statInfo = await Deno.lstat(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy symlink to dest synchronously */ +function copySymlinkSync( + src: string, + dest: string, + options: InternalCopyOptions, +): void { + ensureValidCopySync(src, dest, options); + const originSrcFilePath = Deno.readLinkSync(src); + const type = getFileInfoType(Deno.lstatSync(src)); + if (isWindows) { + Deno.symlinkSync(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file", + }); + } else { + Deno.symlinkSync(originSrcFilePath, dest); + } + + if (options.preserveTimestamps) { + const statInfo = Deno.lstatSync(src); + assert(statInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(statInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} + +/* copy folder from src to dest. */ +async function copyDir( + src: string, + dest: string, + options: CopyOptions, +): Promise { + const destStat = await ensureValidCopy(src, dest, { + ...options, + isFolder: true, + }); + + if (!destStat) { + await ensureDir(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = await Deno.stat(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + await Deno.utime(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for await (const entry of Deno.readDir(src)) { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + await copySymLink(srcPath, destPath, options); + } else if (entry.isDirectory) { + await copyDir(srcPath, destPath, options); + } else if (entry.isFile) { + await copyFile(srcPath, destPath, options); + } + } +} + +/* copy folder from src to dest synchronously */ +function copyDirSync(src: string, dest: string, options: CopyOptions): void { + const destStat = ensureValidCopySync(src, dest, { + ...options, + isFolder: true, + }); + + if (!destStat) { + ensureDirSync(dest); + } + + if (options.preserveTimestamps) { + const srcStatInfo = Deno.statSync(src); + assert(srcStatInfo.atime instanceof Date, `statInfo.atime is unavailable`); + assert(srcStatInfo.mtime instanceof Date, `statInfo.mtime is unavailable`); + Deno.utimeSync(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + + for (const entry of Deno.readDirSync(src)) { + assert(entry.name != null, "file.name must be set"); + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, path.basename(srcPath as string)); + if (entry.isSymlink) { + copySymlinkSync(srcPath, destPath, options); + } else if (entry.isDirectory) { + copyDirSync(srcPath, destPath, options); + } else if (entry.isFile) { + copyFileSync(srcPath, destPath, options); + } + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export async function copy( + src: string, + dest: string, + options: CopyOptions = {}, +): Promise { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = await Deno.lstat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + await copySymLink(src, dest, options); + } else if (srcStat.isDirectory) { + await copyDir(src, dest, options); + } else if (srcStat.isFile) { + await copyFile(src, dest, options); + } +} + +/** + * Copy a file or directory. The directory can have contents. Like `cp -r`. + * Requires the `--allow-read` and `--allow-write` flag. + * @param src the file/directory path. + * Note that if `src` is a directory it will copy everything inside + * of this directory, not the entire directory itself + * @param dest the destination path. Note that if `src` is a file, `dest` cannot + * be a directory + * @param options + */ +export function copySync( + src: string, + dest: string, + options: CopyOptions = {}, +): void { + src = path.resolve(src); + dest = path.resolve(dest); + + if (src === dest) { + throw new Error("Source and destination cannot be the same."); + } + + const srcStat = Deno.lstatSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot copy '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (srcStat.isSymlink) { + copySymlinkSync(src, dest, options); + } else if (srcStat.isDirectory) { + copyDirSync(src, dest, options); + } else if (srcStat.isFile) { + copyFileSync(src, dest, options); + } +} diff --git a/bundler/tests/.cache/deno/a8c5b416bfde22b257d6f022e6c4cf5d851d7b66.ts b/bundler/tests/.cache/deno/a8c5b416bfde22b257d6f022e6c4cf5d851d7b66.ts new file mode 100644 index 00000000000..a663e320636 --- /dev/null +++ b/bundler/tests/.cache/deno/a8c5b416bfde22b257d6f022e6c4cf5d851d7b66.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_concat.js + + +/** + * Private `concat` function to merge two array-like objects. + * + * @private + * @param {Array|Arguments} [set1=[]] An array-like object. + * @param {Array|Arguments} [set2=[]] An array-like object. + * @return {Array} A new, merged array. + * @example + * + * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + */ +export default function _concat(set1, set2) { + set1 = set1 || []; + set2 = set2 || []; + var idx; + var len1 = set1.length; + var len2 = set2.length; + var result = []; + + idx = 0; + while (idx < len1) { + result[result.length] = set1[idx]; + idx += 1; + } + idx = 0; + while (idx < len2) { + result[result.length] = set2[idx]; + idx += 1; + } + return result; +} diff --git a/bundler/tests/.cache/deno/a8cbff1a9e1020dacbcd6a03ae67dc7e6a73d859.ts b/bundler/tests/.cache/deno/a8cbff1a9e1020dacbcd6a03ae67dc7e6a73d859.ts new file mode 100644 index 00000000000..db00e72cac6 --- /dev/null +++ b/bundler/tests/.cache/deno/a8cbff1a9e1020dacbcd6a03ae67dc7e6a73d859.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/forEach.js + + +import _checkForMethod from './internal/_checkForMethod.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Iterate over an input `list`, calling a provided function `fn` for each + * element in the list. + * + * `fn` receives one argument: *(value)*. + * + * Note: `R.forEach` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.forEach` method. For more + * details on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description + * + * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns + * the original array. In some libraries this function is named `each`. + * + * Dispatches to the `forEach` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> *) -> [a] -> [a] + * @param {Function} fn The function to invoke. Receives one argument, `value`. + * @param {Array} list The list to iterate over. + * @return {Array} The original list. + * @see R.addIndex + * @example + * + * const printXPlusFive = x => console.log(x + 5); + * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] + * // logs 6 + * // logs 7 + * // logs 8 + * @symb R.forEach(f, [a, b, c]) = [a, b, c] + */ +var forEach = _curry2(_checkForMethod('forEach', function forEach(fn, list) { + var len = list.length; + var idx = 0; + while (idx < len) { + fn(list[idx]); + idx += 1; + } + return list; +})); +export default forEach; diff --git a/bundler/tests/.cache/deno/a8da6671c3e8a1636834854f1846665dc4bbb483.ts b/bundler/tests/.cache/deno/a8da6671c3e8a1636834854f1846665dc4bbb483.ts new file mode 100644 index 00000000000..e094d26ec38 --- /dev/null +++ b/bundler/tests/.cache/deno/a8da6671c3e8a1636834854f1846665dc4bbb483.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/path.js + + +import _curry2 from './internal/_curry2.js'; +import paths from './paths.js'; + +/** + * Retrieve the value at a given path. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig [Idx] -> {a} -> a | Undefined + * @param {Array} path The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path`. + * @see R.prop, R.nth + * @example + * + * R.path(['a', 'b'], {a: {b: 2}}); //=> 2 + * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined + * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1 + * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2 + */ + +var path = _curry2(function path(pathAr, obj) { + return paths([pathAr], obj)[0]; +}); +export default path; diff --git a/bundler/tests/.cache/deno/a907c635cd12c220e483739546c4f04a82cbfb00.ts b/bundler/tests/.cache/deno/a907c635cd12c220e483739546c4f04a82cbfb00.ts new file mode 100644 index 00000000000..80ad5d8ea24 --- /dev/null +++ b/bundler/tests/.cache/deno/a907c635cd12c220e483739546c4f04a82cbfb00.ts @@ -0,0 +1,383 @@ +// Loaded from https://deno.land/std@0.74.0/http/_io.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { assert } from "../_util/assert.ts"; +import { encoder } from "../encoding/utf8.ts"; +import { Response, ServerRequest } from "./server.ts"; +import { STATUS_TEXT } from "./http_status.ts"; + +export function emptyReader(): Deno.Reader { + return { + read(_: Uint8Array): Promise { + return Promise.resolve(null); + }, + }; +} + +export function bodyReader(contentLength: number, r: BufReader): Deno.Reader { + let totalRead = 0; + let finished = false; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + let result: number | null; + const remaining = contentLength - totalRead; + if (remaining >= buf.byteLength) { + result = await r.read(buf); + } else { + const readBuf = buf.subarray(0, remaining); + result = await r.read(readBuf); + } + if (result !== null) { + totalRead += result; + } + finished = totalRead === contentLength; + return result; + } + return { read }; +} + +export function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO: handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Error("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +function isProhibidedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} + +/** Read trailer headers from reader and append values to headers. "trailer" + * field will be deleted. */ +export async function readTrailers( + headers: Headers, + r: BufReader, +): Promise { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMIMEHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibidedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +export async function writeChunkedBody( + w: Deno.Writer, + r: Deno.Reader, +): Promise { + const writer = BufWriter.create(w); + for await (const chunk of Deno.iter(r)) { + if (chunk.byteLength <= 0) continue; + const start = encoder.encode(`${chunk.byteLength.toString(16)}\r\n`); + const end = encoder.encode("\r\n"); + await writer.write(start); + await writer.write(chunk); + await writer.write(end); + } + + const endChunk = encoder.encode("0\r\n\r\n"); + await writer.write(endChunk); +} + +/** Write trailer headers to writer. It should mostly should be called after + * `writeResponse()`. */ +export async function writeTrailers( + w: Deno.Writer, + headers: Headers, + trailers: Headers, +): Promise { + const trailer = headers.get("trailer"); + if (trailer === null) { + throw new TypeError("Missing trailer header."); + } + const transferEncoding = headers.get("transfer-encoding"); + if (transferEncoding === null || !transferEncoding.match(/^chunked/)) { + throw new TypeError( + `Trailers are only allowed for "transfer-encoding: chunked", got "transfer-encoding: ${transferEncoding}".`, + ); + } + const writer = BufWriter.create(w); + const trailerNames = trailer.split(",").map((s) => s.trim().toLowerCase()); + const prohibitedTrailers = trailerNames.filter((k) => + isProhibidedForTrailer(k) + ); + if (prohibitedTrailers.length > 0) { + throw new TypeError( + `Prohibited trailer names: ${Deno.inspect(prohibitedTrailers)}.`, + ); + } + const undeclared = [...trailers.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new TypeError(`Undeclared trailers: ${Deno.inspect(undeclared)}.`); + } + for (const [key, value] of trailers) { + await writer.write(encoder.encode(`${key}: ${value}\r\n`)); + } + await writer.write(encoder.encode("\r\n")); + await writer.flush(); +} + +export async function writeResponse( + w: Deno.Writer, + r: Response, +): Promise { + const protoMajor = 1; + const protoMinor = 1; + const statusCode = r.status || 200; + const statusText = STATUS_TEXT.get(statusCode); + const writer = BufWriter.create(w); + if (!statusText) { + throw new Deno.errors.InvalidData("Bad status code"); + } + if (!r.body) { + r.body = new Uint8Array(); + } + if (typeof r.body === "string") { + r.body = encoder.encode(r.body); + } + + let out = `HTTP/${protoMajor}.${protoMinor} ${statusCode} ${statusText}\r\n`; + + const headers = r.headers ?? new Headers(); + + if (r.body && !headers.get("content-length")) { + if (r.body instanceof Uint8Array) { + out += `content-length: ${r.body.byteLength}\r\n`; + } else if (!headers.get("transfer-encoding")) { + out += "transfer-encoding: chunked\r\n"; + } + } + + for (const [key, value] of headers) { + out += `${key}: ${value}\r\n`; + } + + out += `\r\n`; + + const header = encoder.encode(out); + const n = await writer.write(header); + assert(n === header.byteLength); + + if (r.body instanceof Uint8Array) { + const n = await writer.write(r.body); + assert(n === r.body.byteLength); + } else if (headers.has("content-length")) { + const contentLength = headers.get("content-length"); + assert(contentLength != null); + const bodyLength = parseInt(contentLength); + const n = await Deno.copy(r.body, writer); + assert(n === bodyLength); + } else { + await writeChunkedBody(writer, r.body); + } + if (r.trailers) { + const t = await r.trailers(); + await writeTrailers(writer, headers, t); + } + await writer.flush(); +} + +/** + * ParseHTTPVersion parses a HTTP version string. + * "HTTP/1.0" returns (1, 0). + * Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792 + */ +export function parseHTTPVersion(vers: string): [number, number] { + switch (vers) { + case "HTTP/1.1": + return [1, 1]; + + case "HTTP/1.0": + return [1, 0]; + + default: { + const Big = 1000000; // arbitrary upper bound + + if (!vers.startsWith("HTTP/")) { + break; + } + + const dot = vers.indexOf("."); + if (dot < 0) { + break; + } + + const majorStr = vers.substring(vers.indexOf("/") + 1, dot); + const major = Number(majorStr); + if (!Number.isInteger(major) || major < 0 || major > Big) { + break; + } + + const minorStr = vers.substring(dot + 1); + const minor = Number(minorStr); + if (!Number.isInteger(minor) || minor < 0 || minor > Big) { + break; + } + + return [major, minor]; + } + } + + throw new Error(`malformed HTTP version ${vers}`); +} + +export async function readRequest( + conn: Deno.Conn, + bufr: BufReader, +): Promise { + const tp = new TextProtoReader(bufr); + const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 + if (firstLine === null) return null; + const headers = await tp.readMIMEHeader(); + if (headers === null) throw new Deno.errors.UnexpectedEof(); + + const req = new ServerRequest(); + req.conn = conn; + req.r = bufr; + [req.method, req.url, req.proto] = firstLine.split(" ", 3); + [req.protoMinor, req.protoMajor] = parseHTTPVersion(req.proto); + req.headers = headers; + fixLength(req); + return req; +} + +function fixLength(req: ServerRequest): void { + const contentLength = req.headers.get("Content-Length"); + if (contentLength) { + const arrClen = contentLength.split(","); + if (arrClen.length > 1) { + const distinct = [...new Set(arrClen.map((e): string => e.trim()))]; + if (distinct.length > 1) { + throw Error("cannot contain multiple Content-Length headers"); + } else { + req.headers.set("Content-Length", distinct[0]); + } + } + const c = req.headers.get("Content-Length"); + if (req.method === "HEAD" && c && c !== "0") { + throw Error("http: method cannot contain a Content-Length"); + } + if (c && req.headers.has("transfer-encoding")) { + // A sender MUST NOT send a Content-Length header field in any message + // that contains a Transfer-Encoding header field. + // rfc: https://tools.ietf.org/html/rfc7230#section-3.3.2 + throw new Error( + "http: Transfer-Encoding and Content-Length cannot be send together", + ); + } + } +} diff --git a/bundler/tests/.cache/deno/a97001f12d71e4c4e8a98064fe31d77d1770b26e.ts b/bundler/tests/.cache/deno/a97001f12d71e4c4e8a98064fe31d77d1770b26e.ts new file mode 100644 index 00000000000..c90ebe4f81f --- /dev/null +++ b/bundler/tests/.cache/deno/a97001f12d71e4c4e8a98064fe31d77d1770b26e.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/insert.js + + +import { writeFile } from '../storage.ts'; +import { v1 } from "https://deno.land/std/uuid/mod.ts"; + +export default async (filename ,data) => { + if(Array.isArray(data)) { + data.forEach(async o => { + o._id = o._id || v1.generate(); + await writeFile(filename, o); + }); + } else { + data._id = data._id || v1.generate(); + await writeFile(filename, data) + } + return data; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/a9e49d9b9195ef9857dca11572c83f19fd547936.ts b/bundler/tests/.cache/deno/a9e49d9b9195ef9857dca11572c83f19fd547936.ts new file mode 100644 index 00000000000..c2cc1d66a5d --- /dev/null +++ b/bundler/tests/.cache/deno/a9e49d9b9195ef9857dca11572c83f19fd547936.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/oak/deps.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +// This file contains the external dependencies that oak depends upon + +// `std` dependencies + +export { + copy as copyBytes, + equals, +} from "https://deno.land/std@0.84.0/bytes/mod.ts"; +export { Sha1 } from "https://deno.land/std@0.84.0/hash/sha1.ts"; +export { HmacSha256 } from "https://deno.land/std@0.84.0/hash/sha256.ts"; +export { serve, serveTLS } from "https://deno.land/std@0.84.0/http/server.ts"; +export { + Status, + STATUS_TEXT, +} from "https://deno.land/std@0.84.0/http/http_status.ts"; +export { BufReader, BufWriter } from "https://deno.land/std@0.84.0/io/bufio.ts"; +export { + basename, + extname, + isAbsolute, + join, + normalize, + parse, + sep, +} from "https://deno.land/std@0.84.0/path/mod.ts"; +export { assert } from "https://deno.land/std@0.84.0/testing/asserts.ts"; +export { + acceptable, + acceptWebSocket, +} from "https://deno.land/std@0.84.0/ws/mod.ts"; +export type { WebSocket } from "https://deno.land/std@0.84.0/ws/mod.ts"; + +// 3rd party dependencies + +export { + contentType, + extension, + lookup, +} from "https://deno.land/x/media_types@v2.7.1/mod.ts"; +export { + compile, + parse as pathParse, + pathToRegexp, +} from "https://deno.land/x/path_to_regexp@v6.2.0/index.ts"; +export type { + Key, + ParseOptions, + TokensToRegexpOptions, +} from "https://deno.land/x/path_to_regexp@v6.2.0/index.ts"; diff --git a/bundler/tests/.cache/deno/aa0d8306130c99ee1880043fd6cc5ade300d9e39.ts b/bundler/tests/.cache/deno/aa0d8306130c99ee1880043fd6cc5ade300d9e39.ts new file mode 100644 index 00000000000..3c9f1cf5037 --- /dev/null +++ b/bundler/tests/.cache/deno/aa0d8306130c99ee1880043fd6cc5ade300d9e39.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/whereEq.js + + +import _curry2 from './internal/_curry2.js'; +import equals from './equals.js'; +import map from './map.js'; +import where from './where.js'; + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec, false otherwise. An object satisfies the spec if, for each of the + * spec's own properties, accessing that property of the object gives the same + * value (in [`R.equals`](#equals) terms) as accessing that property of the + * spec. + * + * `whereEq` is a specialization of [`where`](#where). + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @sig {String: *} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.propEq, R.where + * @example + * + * // pred :: Object -> Boolean + * const pred = R.whereEq({a: 1, b: 2}); + * + * pred({a: 1}); //=> false + * pred({a: 1, b: 2}); //=> true + * pred({a: 1, b: 2, c: 3}); //=> true + * pred({a: 1, b: 1}); //=> false + */ +var whereEq = _curry2(function whereEq(spec, testObj) { + return where(map(equals, spec), testObj); +}); +export default whereEq; diff --git a/bundler/tests/.cache/deno/aa243672612ff73045bf20156419b1c7b0a1b7a8.ts b/bundler/tests/.cache/deno/aa243672612ff73045bf20156419b1c7b0a1b7a8.ts new file mode 100644 index 00000000000..702ee0163f2 --- /dev/null +++ b/bundler/tests/.cache/deno/aa243672612ff73045bf20156419b1c7b0a1b7a8.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/valuesIn.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Returns a list of all the properties, including prototype properties, of the + * supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own and prototype properties. + * @see R.values, R.keysIn + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.valuesIn(f); //=> ['X', 'Y'] + */ +var valuesIn = _curry1(function valuesIn(obj) { + var prop; + var vs = []; + for (prop in obj) { + vs[vs.length] = obj[prop]; + } + return vs; +}); +export default valuesIn; diff --git a/bundler/tests/.cache/deno/aa587c23dd78b12d7bf25fe5c9f81f201c37ea4b.ts b/bundler/tests/.cache/deno/aa587c23dd78b12d7bf25fe5c9f81f201c37ea4b.ts new file mode 100644 index 00000000000..76601088a80 --- /dev/null +++ b/bundler/tests/.cache/deno/aa587c23dd78b12d7bf25fe5c9f81f201c37ea4b.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/std@0.74.0/hash/_wasm/hash.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import init, { + source, + create_hash as createHash, + update_hash as updateHash, + digest_hash as digestHash, + DenoHash, +} from "./wasm.js"; + +import * as hex from "../../encoding/hex.ts"; +import * as base64 from "../../encoding/base64.ts"; +import type { Hasher, Message, OutputFormat } from "../hasher.ts"; + +await init(source); + +const TYPE_ERROR_MSG = "hash: `data` is invalid type"; + +export class Hash implements Hasher { + #hash: DenoHash; + #digested: boolean; + + constructor(algorithm: string) { + this.#hash = createHash(algorithm); + this.#digested = false; + } + + /** + * Update internal state + * @param data data to update + */ + update(data: Message): this { + let msg: Uint8Array; + + if (typeof data === "string") { + msg = new TextEncoder().encode(data as string); + } else if (typeof data === "object") { + if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) { + msg = new Uint8Array(data); + } else { + throw new Error(TYPE_ERROR_MSG); + } + } else { + throw new Error(TYPE_ERROR_MSG); + } + + updateHash(this.#hash, msg); + + return this; + } + + /** Returns final hash */ + digest(): ArrayBuffer { + if (this.#digested) throw new Error("hash: already digested"); + + this.#digested = true; + return digestHash(this.#hash); + } + + /** + * Returns hash as a string of given format + * @param format format of output string (hex or base64). Default is hex + */ + toString(format: OutputFormat = "hex"): string { + const finalized = new Uint8Array(this.digest()); + + switch (format) { + case "hex": + return hex.encodeToString(finalized); + case "base64": + return base64.encode(finalized); + default: + throw new Error("hash: invalid format"); + } + } +} diff --git a/bundler/tests/.cache/deno/aa6bad27291c3da2998cc6c05254e4925b125609.ts b/bundler/tests/.cache/deno/aa6bad27291c3da2998cc6c05254e4925b125609.ts new file mode 100644 index 00000000000..81588fe3da4 --- /dev/null +++ b/bundler/tests/.cache/deno/aa6bad27291c3da2998cc6c05254e4925b125609.ts @@ -0,0 +1,112 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/FieldsOnCorrectTypeRule.js + + +import arrayFrom from '../../polyfills/arrayFrom.js'; +import didYouMean from '../../jsutils/didYouMean.js'; +import suggestionList from '../../jsutils/suggestionList.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { isObjectType, isInterfaceType, isAbstractType } from '../../type/definition.js'; + +/** + * Fields on correct type + * + * A GraphQL document is only valid if all fields selected are defined by the + * parent type, or are an allowed meta field such as __typename. + */ +export function FieldsOnCorrectTypeRule(context) { + return { + Field(node) { + const type = context.getParentType(); + + if (type) { + const fieldDef = context.getFieldDef(); + + if (!fieldDef) { + // This field doesn't exist, lets look for suggestions. + const schema = context.getSchema(); + const fieldName = node.name.value; // First determine if there are any suggested types to condition on. + + let suggestion = didYouMean('to use an inline fragment on', getSuggestedTypeNames(schema, type, fieldName)); // If there are no suggested types, then perhaps this was a typo? + + if (suggestion === '') { + suggestion = didYouMean(getSuggestedFieldNames(type, fieldName)); + } // Report an error, including helpful suggestions. + + + context.reportError(new GraphQLError(`Cannot query field "${fieldName}" on type "${type.name}".` + suggestion, node)); + } + } + } + + }; +} +/** + * Go through all of the implementations of type, as well as the interfaces that + * they implement. If any of those types include the provided field, suggest them, + * sorted by how often the type is referenced. + */ + +function getSuggestedTypeNames(schema, type, fieldName) { + if (!isAbstractType(type)) { + // Must be an Object type, which does not have possible fields. + return []; + } + + const suggestedTypes = new Set(); + const usageCount = Object.create(null); + + for (const possibleType of schema.getPossibleTypes(type)) { + if (!possibleType.getFields()[fieldName]) { + continue; + } // This object type defines this field. + + + suggestedTypes.add(possibleType); + usageCount[possibleType.name] = 1; + + for (const possibleInterface of possibleType.getInterfaces()) { + if (!possibleInterface.getFields()[fieldName]) { + continue; + } // This interface type defines this field. + + + suggestedTypes.add(possibleInterface); + usageCount[possibleInterface.name] = (usageCount[possibleInterface.name] ?? 0) + 1; + } + } + + return arrayFrom(suggestedTypes).sort((typeA, typeB) => { + // Suggest both interface and object types based on how common they are. + const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name]; + + if (usageCountDiff !== 0) { + return usageCountDiff; + } // Suggest super types first followed by subtypes + + + if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) { + return -1; + } + + if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) { + return 1; + } + + return typeA.name.localeCompare(typeB.name); + }).map(x => x.name); +} +/** + * For the field name provided, determine if there are any similar field names + * that may be the result of a typo. + */ + + +function getSuggestedFieldNames(type, fieldName) { + if (isObjectType(type) || isInterfaceType(type)) { + const possibleFieldNames = Object.keys(type.getFields()); + return suggestionList(fieldName, possibleFieldNames); + } // Otherwise, must be a Union type, which does not define fields. + + + return []; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/aab811f3d3ff29b5d650759606c1f0209392bd63.ts b/bundler/tests/.cache/deno/aab811f3d3ff29b5d650759606c1f0209392bd63.ts new file mode 100644 index 00000000000..02824bc49fa --- /dev/null +++ b/bundler/tests/.cache/deno/aab811f3d3ff29b5d650759606c1f0209392bd63.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/eme_oaep.ts + + +import { createHash } from "./../hash.ts"; +import { mgf1 } from "./primitives.ts"; +import { concat, xor, random_bytes } from "./../helper.ts"; + +/** + * https://tools.ietf.org/html/rfc3447#page-10 + * + * @param label + * @param m + * @param k + * @param algorithm + */ +export function eme_oaep_encode( + label: Uint8Array, + m: Uint8Array, + k: number, + algorithm: "sha1" | "sha256", +): Uint8Array { + const labelHash = new Uint8Array( + createHash(algorithm).update(label).digest(), + ); + + const ps = new Uint8Array(k - labelHash.length * 2 - 2 - m.length); + const db = concat(labelHash, ps, [0x01], m); + const seed = random_bytes(labelHash.length); + const dbMask = mgf1(seed, k - labelHash.length - 1, algorithm); + const maskedDb = xor(db, dbMask); + const seedMask = mgf1(maskedDb, labelHash.length, algorithm); + const maskedSeed = xor(seed, seedMask); + + return concat([0x00], maskedSeed, maskedDb); +} + +export function eme_oaep_decode( + label: Uint8Array, + c: Uint8Array, + k: number, + algorithm: "sha1" | "sha256", +): Uint8Array { + const labelHash = new Uint8Array( + createHash(algorithm).update(label).digest(), + ); + const maskedSeed = c.slice(1, 1 + labelHash.length); + const maskedDb = c.slice(1 + labelHash.length); + const seedMask = mgf1(maskedDb, labelHash.length, algorithm); + const seed = xor(maskedSeed, seedMask); + const dbMask = mgf1(seed, k - labelHash.length - 1, algorithm); + const db = xor(maskedDb, dbMask); + + let ptr = labelHash.length; + while (ptr < db.length && db[ptr] === 0) ptr++; + + return db.slice(ptr + 1); +} diff --git a/bundler/tests/.cache/deno/ab2579d8a3026571b5bacb92e31dcd7f2cfb38e5.ts b/bundler/tests/.cache/deno/ab2579d8a3026571b5bacb92e31dcd7f2cfb38e5.ts new file mode 100644 index 00000000000..0af841d35c0 --- /dev/null +++ b/bundler/tests/.cache/deno/ab2579d8a3026571b5bacb92e31dcd7f2cfb38e5.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/nil.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +function resolveYamlNull(data: string): boolean { + const max = data.length; + + return ( + (max === 1 && data === "~") || + (max === 4 && (data === "null" || data === "Null" || data === "NULL")) + ); +} + +function constructYamlNull(): null { + return null; +} + +function isNull(object: unknown): object is null { + return object === null; +} + +export const nil = new Type("tag:yaml.org,2002:null", { + construct: constructYamlNull, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isNull, + represent: { + canonical(): string { + return "~"; + }, + lowercase(): string { + return "null"; + }, + uppercase(): string { + return "NULL"; + }, + camelcase(): string { + return "Null"; + }, + }, + resolve: resolveYamlNull, +}); diff --git a/bundler/tests/.cache/deno/abee4bd5d97fe00b434fd4fac14c6fc4a42f8da8.ts b/bundler/tests/.cache/deno/abee4bd5d97fe00b434fd4fac14c6fc4a42f8da8.ts new file mode 100644 index 00000000000..9fcd3e75e1a --- /dev/null +++ b/bundler/tests/.cache/deno/abee4bd5d97fe00b434fd4fac14c6fc4a42f8da8.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/http/http_status.ts + + +export * from "https://deno.land/std@0.81.0/http/http_status.ts"; diff --git a/bundler/tests/.cache/deno/ac2b751ad023e6ef3ede6e8506946a9f3ab9cd3c.ts b/bundler/tests/.cache/deno/ac2b751ad023e6ef3ede6e8506946a9f3ab9cd3c.ts new file mode 100644 index 00000000000..38b1262c2f6 --- /dev/null +++ b/bundler/tests/.cache/deno/ac2b751ad023e6ef3ede6e8506946a9f3ab9cd3c.ts @@ -0,0 +1,59 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueFieldDefinitionNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { isObjectType, isInterfaceType, isInputObjectType } from '../../type/definition.js'; + +/** + * Unique field definition names + * + * A GraphQL complex type is only valid if all its fields are uniquely named. + */ +export function UniqueFieldDefinitionNamesRule(context) { + const schema = context.getSchema(); + const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); + const knownFieldNames = Object.create(null); + return { + InputObjectTypeDefinition: checkFieldUniqueness, + InputObjectTypeExtension: checkFieldUniqueness, + InterfaceTypeDefinition: checkFieldUniqueness, + InterfaceTypeExtension: checkFieldUniqueness, + ObjectTypeDefinition: checkFieldUniqueness, + ObjectTypeExtension: checkFieldUniqueness + }; + + function checkFieldUniqueness(node) { + const typeName = node.name.value; + + if (!knownFieldNames[typeName]) { + knownFieldNames[typeName] = Object.create(null); + } + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + + const fieldNodes = node.fields ?? []; + const fieldNames = knownFieldNames[typeName]; + + for (const fieldDef of fieldNodes) { + const fieldName = fieldDef.name.value; + + if (hasField(existingTypeMap[typeName], fieldName)) { + context.reportError(new GraphQLError(`Field "${typeName}.${fieldName}" already exists in the schema. It cannot also be defined in this type extension.`, fieldDef.name)); + } else if (fieldNames[fieldName]) { + context.reportError(new GraphQLError(`Field "${typeName}.${fieldName}" can only be defined once.`, [fieldNames[fieldName], fieldDef.name])); + } else { + fieldNames[fieldName] = fieldDef.name; + } + } + + return false; + } +} + +function hasField(type, fieldName) { + if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) { + return type.getFields()[fieldName]; + } + + return false; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ac61afa8a2946ca929f48f053138ff8277857f27.ts b/bundler/tests/.cache/deno/ac61afa8a2946ca929f48f053138ff8277857f27.ts new file mode 100644 index 00000000000..fbe6375cb98 --- /dev/null +++ b/bundler/tests/.cache/deno/ac61afa8a2946ca929f48f053138ff8277857f27.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/multiply.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Multiplies two numbers. Equivalent to `a * b` but curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a * b`. + * @see R.divide + * @example + * + * const double = R.multiply(2); + * const triple = R.multiply(3); + * double(3); //=> 6 + * triple(4); //=> 12 + * R.multiply(2, 5); //=> 10 + */ +var multiply = _curry2(function multiply(a, b) { return a * b; }); +export default multiply; diff --git a/bundler/tests/.cache/deno/acf72f9492fd78ae10c035f645ad94afaad3049e.ts b/bundler/tests/.cache/deno/acf72f9492fd78ae10c035f645ad94afaad3049e.ts new file mode 100644 index 00000000000..66e8d0fc135 --- /dev/null +++ b/bundler/tests/.cache/deno/acf72f9492fd78ae10c035f645ad94afaad3049e.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/insertAll.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Inserts the sub-list into the list, at the specified `index`. _Note that this is not + * destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig Number -> [a] -> [a] -> [a] + * @param {Number} index The position to insert the sub-list + * @param {Array} elts The sub-list to insert into the Array + * @param {Array} list The list to insert the sub-list into + * @return {Array} A new Array with `elts` inserted starting at `index`. + * @example + * + * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4] + */ +var insertAll = _curry3(function insertAll(idx, elts, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + return [].concat( + Array.prototype.slice.call(list, 0, idx), + elts, + Array.prototype.slice.call(list, idx) + ); +}); +export default insertAll; diff --git a/bundler/tests/.cache/deno/ad08212d5162c9627e3b045ba6127cac017b6afc.ts b/bundler/tests/.cache/deno/ad08212d5162c9627e3b045ba6127cac017b6afc.ts new file mode 100644 index 00000000000..568c13abad5 --- /dev/null +++ b/bundler/tests/.cache/deno/ad08212d5162c9627e3b045ba6127cac017b6afc.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/findLastIndex.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xfindLastIndex from './internal/_xfindLastIndex.js'; + + +/** + * Returns the index of the last element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1 + * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 + */ +var findLastIndex = _curry2(_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return idx; + } + idx -= 1; + } + return -1; +})); +export default findLastIndex; diff --git a/bundler/tests/.cache/deno/ad28bb2a8fb12464b92bb5bc2fbb8deb5fad5e8f.ts b/bundler/tests/.cache/deno/ad28bb2a8fb12464b92bb5bc2fbb8deb5fad5e8f.ts new file mode 100644 index 00000000000..460863973f3 --- /dev/null +++ b/bundler/tests/.cache/deno/ad28bb2a8fb12464b92bb5bc2fbb8deb5fad5e8f.ts @@ -0,0 +1,163 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/alpha.ts + + +export const alpha = { + 'en-US': /^[A-Z]+$/i, + 'bg-BG': /^[А-Я]+$/i, + 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[A-ZÆØÅ]+$/i, + 'de-DE': /^[A-ZÄÖÜß]+$/i, + 'el-GR': /^[Α-ώ]+$/i, + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'nb-NO': /^[A-ZÆØÅ]+$/i, + 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[A-ZÆØÅ]+$/i, + 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[А-ЯЁ]+$/i, + 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[A-ZÅÄÖ]+$/i, + 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i, + 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[א-ת]+$/, + fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i, +}; + +export const alphanumeric = { + 'en-US': /^[0-9A-Z]+$/i, + 'bg-BG': /^[0-9А-Я]+$/i, + 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[0-9A-ZÆØÅ]+$/i, + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, + 'el-GR': /^[0-9Α-ω]+$/i, + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'nb-NO': /^[0-9A-ZÆØÅ]+$/i, + 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[0-9A-ZÆØÅ]+$/i, + 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[0-9А-ЯЁ]+$/i, + 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i, + 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i, + 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[0-9א-ת]+$/, + fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i, +}; + +export const decimal = { + 'en-US': '.', + ar: '٫', + fa: '٫', +}; + +export const englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; + +for (let locale, i = 0; i < englishLocales.length; i++) { + locale = `en-${englishLocales[i]}`; + + (alpha as any)[locale] = alpha['en-US']; + (alphanumeric as any)[locale] = alphanumeric['en-US']; + (decimal as any)[locale] = decimal['en-US']; +} + +// Source: http://www.localeplanet.com/java/ +export const arabicLocales = [ + 'AE', + 'BH', + 'DZ', + 'EG', + 'IQ', + 'JO', + 'KW', + 'LB', + 'LY', + 'MA', + 'QM', + 'QA', + 'SA', + 'SD', + 'SY', + 'TN', + 'YE', +]; + +for (let locale, i = 0; i < arabicLocales.length; i++) { + locale = `ar-${arabicLocales[i]}`; + (alpha as any)[locale] = alpha.ar; + (alphanumeric as any)[locale] = alphanumeric.ar; + (decimal as any)[locale] = decimal.ar; +} + +export const farsiLocales = ['IR', 'AF']; + +for (let locale, i = 0; i < farsiLocales.length; i++) { + locale = `fa-${farsiLocales[i]}`; + (alpha as any)[locale] = alpha.fa; + (alphanumeric as any)[locale] = alphanumeric.fa; + (decimal as any)[locale] = decimal.fa; +} + +// Source: https://en.wikipedia.org/wiki/Decimal_mark +export const dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY']; +export const commaDecimal = [ + 'bg-BG', + 'cs-CZ', + 'da-DK', + 'de-DE', + 'el-GR', + 'en-ZM', + 'es-ES', + 'fr-FR', + 'it-IT', + 'ku-IQ', + 'hu-HU', + 'nb-NO', + 'nn-NO', + 'nl-NL', + 'pl-PL', + 'pt-PT', + 'ru-RU', + 'sl-SI', + 'sr-RS@latin', + 'sr-RS', + 'sv-SE', + 'tr-TR', + 'uk-UA', + 'vi-VN', +]; + +for (let i = 0; i < dotDecimal.length; i++) { + (decimal as any)[dotDecimal[i]] = decimal['en-US']; +} + +for (let i = 0; i < commaDecimal.length; i++) { + (decimal as any)[commaDecimal[i]] = ','; +} + +(alpha as any)['pt-BR'] = alpha['pt-PT']; +(alphanumeric as any)['pt-BR'] = alphanumeric['pt-PT']; +(decimal as any)['pt-BR'] = (decimal as any)['pt-PT']; + +// see validatorjs/validator.js/#862 +(alpha as any)['pl-Pl'] = alpha['pl-PL']; +(alphanumeric as any)['pl-Pl'] = alphanumeric['pl-PL']; +(decimal as any)['pl-Pl'] = (decimal as any)['pl-PL']; diff --git a/bundler/tests/.cache/deno/adc8dcfb18c36709ac2ee7dbd5a740dea496568f.ts b/bundler/tests/.cache/deno/adc8dcfb18c36709ac2ee7dbd5a740dea496568f.ts new file mode 100644 index 00000000000..bb07887c554 --- /dev/null +++ b/bundler/tests/.cache/deno/adc8dcfb18c36709ac2ee7dbd5a740dea496568f.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/over.js + + +import _curry3 from './internal/_curry3.js'; + +// `Identity` is a functor that holds a single value, where `map` simply +// transforms the held value with the provided function. +var Identity = function(x) { + return {value: x, map: function(f) { return Identity(f(x)); }}; +}; + + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the result of applying the given function to + * the focused value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> (a -> a) -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.view, R.set, R.lens, R.lensIndex, R.lensProp, R.lensPath + * @example + * + * const headLens = R.lensIndex(0); + * + * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz'] + */ +var over = _curry3(function over(lens, f, x) { + // The value returned by the getter function is first transformed with `f`, + // then set as the value of an `Identity`. This is then mapped over with the + // setter function of the lens. + return lens(function(y) { return Identity(f(y)); })(x).value; +}); +export default over; diff --git a/bundler/tests/.cache/deno/ae108499452c609eae73c7ed3bc8a4d6ce54df63.ts b/bundler/tests/.cache/deno/ae108499452c609eae73c7ed3bc8a4d6ce54df63.ts new file mode 100644 index 00000000000..25df55d6297 --- /dev/null +++ b/bundler/tests/.cache/deno/ae108499452c609eae73c7ed3bc8a4d6ce54df63.ts @@ -0,0 +1,262 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/index.js + + +export { default as F } from './F.js'; +export { default as T } from './T.js'; +export { default as __ } from './__.js'; +export { default as add } from './add.js'; +export { default as addIndex } from './addIndex.js'; +export { default as adjust } from './adjust.js'; +export { default as all } from './all.js'; +export { default as allPass } from './allPass.js'; +export { default as always } from './always.js'; +export { default as and } from './and.js'; +export { default as any } from './any.js'; +export { default as anyPass } from './anyPass.js'; +export { default as ap } from './ap.js'; +export { default as aperture } from './aperture.js'; +export { default as append } from './append.js'; +export { default as apply } from './apply.js'; +export { default as applySpec } from './applySpec.js'; +export { default as applyTo } from './applyTo.js'; +export { default as ascend } from './ascend.js'; +export { default as assoc } from './assoc.js'; +export { default as assocPath } from './assocPath.js'; +export { default as binary } from './binary.js'; +export { default as bind } from './bind.js'; +export { default as both } from './both.js'; +export { default as call } from './call.js'; +export { default as chain } from './chain.js'; +export { default as clamp } from './clamp.js'; +export { default as clone } from './clone.js'; +export { default as collectBy } from './collectBy.js'; +export { default as comparator } from './comparator.js'; +export { default as complement } from './complement.js'; +export { default as compose } from './compose.js'; +export { default as composeWith } from './composeWith.js'; +export { default as concat } from './concat.js'; +export { default as cond } from './cond.js'; +export { default as construct } from './construct.js'; +export { default as constructN } from './constructN.js'; +export { default as converge } from './converge.js'; +export { default as countBy } from './countBy.js'; +export { default as curry } from './curry.js'; +export { default as curryN } from './curryN.js'; +export { default as dec } from './dec.js'; +export { default as defaultTo } from './defaultTo.js'; +export { default as descend } from './descend.js'; +export { default as difference } from './difference.js'; +export { default as differenceWith } from './differenceWith.js'; +export { default as dissoc } from './dissoc.js'; +export { default as dissocPath } from './dissocPath.js'; +export { default as divide } from './divide.js'; +export { default as drop } from './drop.js'; +export { default as dropLast } from './dropLast.js'; +export { default as dropLastWhile } from './dropLastWhile.js'; +export { default as dropRepeats } from './dropRepeats.js'; +export { default as dropRepeatsWith } from './dropRepeatsWith.js'; +export { default as dropWhile } from './dropWhile.js'; +export { default as either } from './either.js'; +export { default as empty } from './empty.js'; +export { default as endsWith } from './endsWith.js'; +export { default as eqBy } from './eqBy.js'; +export { default as eqProps } from './eqProps.js'; +export { default as equals } from './equals.js'; +export { default as evolve } from './evolve.js'; +export { default as filter } from './filter.js'; +export { default as find } from './find.js'; +export { default as findIndex } from './findIndex.js'; +export { default as findLast } from './findLast.js'; +export { default as findLastIndex } from './findLastIndex.js'; +export { default as flatten } from './flatten.js'; +export { default as flip } from './flip.js'; +export { default as forEach } from './forEach.js'; +export { default as forEachObjIndexed } from './forEachObjIndexed.js'; +export { default as fromPairs } from './fromPairs.js'; +export { default as groupBy } from './groupBy.js'; +export { default as groupWith } from './groupWith.js'; +export { default as gt } from './gt.js'; +export { default as gte } from './gte.js'; +export { default as has } from './has.js'; +export { default as hasIn } from './hasIn.js'; +export { default as hasPath } from './hasPath.js'; +export { default as head } from './head.js'; +export { default as identical } from './identical.js'; +export { default as identity } from './identity.js'; +export { default as ifElse } from './ifElse.js'; +export { default as inc } from './inc.js'; +export { default as includes } from './includes.js'; +export { default as indexBy } from './indexBy.js'; +export { default as indexOf } from './indexOf.js'; +export { default as init } from './init.js'; +export { default as innerJoin } from './innerJoin.js'; +export { default as insert } from './insert.js'; +export { default as insertAll } from './insertAll.js'; +export { default as intersection } from './intersection.js'; +export { default as intersperse } from './intersperse.js'; +export { default as into } from './into.js'; +export { default as invert } from './invert.js'; +export { default as invertObj } from './invertObj.js'; +export { default as invoker } from './invoker.js'; +export { default as is } from './is.js'; +export { default as isEmpty } from './isEmpty.js'; +export { default as isNil } from './isNil.js'; +export { default as join } from './join.js'; +export { default as juxt } from './juxt.js'; +export { default as keys } from './keys.js'; +export { default as keysIn } from './keysIn.js'; +export { default as last } from './last.js'; +export { default as lastIndexOf } from './lastIndexOf.js'; +export { default as length } from './length.js'; +export { default as lens } from './lens.js'; +export { default as lensIndex } from './lensIndex.js'; +export { default as lensPath } from './lensPath.js'; +export { default as lensProp } from './lensProp.js'; +export { default as lift } from './lift.js'; +export { default as liftN } from './liftN.js'; +export { default as lt } from './lt.js'; +export { default as lte } from './lte.js'; +export { default as map } from './map.js'; +export { default as mapAccum } from './mapAccum.js'; +export { default as mapAccumRight } from './mapAccumRight.js'; +export { default as mapObjIndexed } from './mapObjIndexed.js'; +export { default as match } from './match.js'; +export { default as mathMod } from './mathMod.js'; +export { default as max } from './max.js'; +export { default as maxBy } from './maxBy.js'; +export { default as mean } from './mean.js'; +export { default as median } from './median.js'; +export { default as memoizeWith } from './memoizeWith.js'; +export { default as mergeAll } from './mergeAll.js'; +export { default as mergeDeepLeft } from './mergeDeepLeft.js'; +export { default as mergeDeepRight } from './mergeDeepRight.js'; +export { default as mergeDeepWith } from './mergeDeepWith.js'; +export { default as mergeDeepWithKey } from './mergeDeepWithKey.js'; +export { default as mergeLeft } from './mergeLeft.js'; +export { default as mergeRight } from './mergeRight.js'; +export { default as mergeWith } from './mergeWith.js'; +export { default as mergeWithKey } from './mergeWithKey.js'; +export { default as min } from './min.js'; +export { default as minBy } from './minBy.js'; +export { default as modify } from './modify.js'; +export { default as modifyPath } from './modifyPath.js'; +export { default as modulo } from './modulo.js'; +export { default as move } from './move.js'; +export { default as multiply } from './multiply.js'; +export { default as nAry } from './nAry.js'; +export { default as partialObject } from './partialObject.js'; +export { default as negate } from './negate.js'; +export { default as none } from './none.js'; +export { default as not } from './not.js'; +export { default as nth } from './nth.js'; +export { default as nthArg } from './nthArg.js'; +export { default as o } from './o.js'; +export { default as objOf } from './objOf.js'; +export { default as of } from './of.js'; +export { default as omit } from './omit.js'; +export { default as on } from './on.js'; +export { default as once } from './once.js'; +export { default as or } from './or.js'; +export { default as otherwise } from './otherwise.js'; +export { default as over } from './over.js'; +export { default as pair } from './pair.js'; +export { default as partial } from './partial.js'; +export { default as partialRight } from './partialRight.js'; +export { default as partition } from './partition.js'; +export { default as path } from './path.js'; +export { default as paths } from './paths.js'; +export { default as pathEq } from './pathEq.js'; +export { default as pathOr } from './pathOr.js'; +export { default as pathSatisfies } from './pathSatisfies.js'; +export { default as pick } from './pick.js'; +export { default as pickAll } from './pickAll.js'; +export { default as pickBy } from './pickBy.js'; +export { default as pipe } from './pipe.js'; +export { default as pipeWith } from './pipeWith.js'; +export { default as pluck } from './pluck.js'; +export { default as prepend } from './prepend.js'; +export { default as product } from './product.js'; +export { default as project } from './project.js'; +export { default as promap } from './promap.js'; +export { default as prop } from './prop.js'; +export { default as propEq } from './propEq.js'; +export { default as propIs } from './propIs.js'; +export { default as propOr } from './propOr.js'; +export { default as propSatisfies } from './propSatisfies.js'; +export { default as props } from './props.js'; +export { default as range } from './range.js'; +export { default as reduce } from './reduce.js'; +export { default as reduceBy } from './reduceBy.js'; +export { default as reduceRight } from './reduceRight.js'; +export { default as reduceWhile } from './reduceWhile.js'; +export { default as reduced } from './reduced.js'; +export { default as reject } from './reject.js'; +export { default as remove } from './remove.js'; +export { default as repeat } from './repeat.js'; +export { default as replace } from './replace.js'; +export { default as reverse } from './reverse.js'; +export { default as scan } from './scan.js'; +export { default as sequence } from './sequence.js'; +export { default as set } from './set.js'; +export { default as slice } from './slice.js'; +export { default as sort } from './sort.js'; +export { default as sortBy } from './sortBy.js'; +export { default as sortWith } from './sortWith.js'; +export { default as split } from './split.js'; +export { default as splitAt } from './splitAt.js'; +export { default as splitEvery } from './splitEvery.js'; +export { default as splitWhen } from './splitWhen.js'; +export { default as splitWhenever } from './splitWhenever.js'; +export { default as startsWith } from './startsWith.js'; +export { default as subtract } from './subtract.js'; +export { default as sum } from './sum.js'; +export { default as symmetricDifference } from './symmetricDifference.js'; +export { default as symmetricDifferenceWith } from './symmetricDifferenceWith.js'; +export { default as tail } from './tail.js'; +export { default as take } from './take.js'; +export { default as takeLast } from './takeLast.js'; +export { default as takeLastWhile } from './takeLastWhile.js'; +export { default as takeWhile } from './takeWhile.js'; +export { default as tap } from './tap.js'; +export { default as test } from './test.js'; +export { default as andThen } from './andThen.js'; +export { default as times } from './times.js'; +export { default as toLower } from './toLower.js'; +export { default as toPairs } from './toPairs.js'; +export { default as toPairsIn } from './toPairsIn.js'; +export { default as toString } from './toString.js'; +export { default as toUpper } from './toUpper.js'; +export { default as transduce } from './transduce.js'; +export { default as transpose } from './transpose.js'; +export { default as traverse } from './traverse.js'; +export { default as trim } from './trim.js'; +export { default as tryCatch } from './tryCatch.js'; +export { default as type } from './type.js'; +export { default as unapply } from './unapply.js'; +export { default as unary } from './unary.js'; +export { default as uncurryN } from './uncurryN.js'; +export { default as unfold } from './unfold.js'; +export { default as union } from './union.js'; +export { default as unionWith } from './unionWith.js'; +export { default as uniq } from './uniq.js'; +export { default as uniqBy } from './uniqBy.js'; +export { default as uniqWith } from './uniqWith.js'; +export { default as unless } from './unless.js'; +export { default as unnest } from './unnest.js'; +export { default as until } from './until.js'; +export { default as update } from './update.js'; +export { default as useWith } from './useWith.js'; +export { default as values } from './values.js'; +export { default as valuesIn } from './valuesIn.js'; +export { default as view } from './view.js'; +export { default as when } from './when.js'; +export { default as where } from './where.js'; +export { default as whereAny } from './whereAny.js'; +export { default as whereEq } from './whereEq.js'; +export { default as without } from './without.js'; +export { default as xor } from './xor.js'; +export { default as xprod } from './xprod.js'; +export { default as zip } from './zip.js'; +export { default as zipObj } from './zipObj.js'; +export { default as zipWith } from './zipWith.js'; +export { default as thunkify } from './thunkify.js'; diff --git a/bundler/tests/.cache/deno/ae31a2918532132a6449050c765bf43a792a6a0c.ts b/bundler/tests/.cache/deno/ae31a2918532132a6449050c765bf43a792a6a0c.ts new file mode 100644 index 00000000000..6746b0b457f --- /dev/null +++ b/bundler/tests/.cache/deno/ae31a2918532132a6449050c765bf43a792a6a0c.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.85.0/fmt/colors.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors +// on npm. +// +// ``` +// import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; +// console.log(bgBlue(red(bold("Hello world!")))); +// ``` +// +// This module supports `NO_COLOR` environmental variable disabling any coloring +// if `NO_COLOR` is set. +// +// This module is browser compatible. + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/aeca0449dae8ea36b1d9ea82a6597d181a32bbea.ts b/bundler/tests/.cache/deno/aeca0449dae8ea36b1d9ea82a6597d181a32bbea.ts new file mode 100644 index 00000000000..e9a23250d96 --- /dev/null +++ b/bundler/tests/.cache/deno/aeca0449dae8ea36b1d9ea82a6597d181a32bbea.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/jpegts@1.1/lib/image.ts + + +import type { Pixel } from "./pixel.ts"; + +export class Image { + // @ts-ignore + width: number; + // @ts-ignore + height: number; + // @ts-ignore + data: Uint8Array; + getPixel(x: number, y: number): Pixel { + const index = x + (y * this.width); + const rntVal: Pixel = { + r: this.data[index * 4], + g: this.data[index * 4 + 1], + b: this.data[index * 4 + 2], + a: this.data[index * 4 + 3], + }; + return rntVal; + } + setPixel(x: number, y: number, pix: Pixel) { + const index = x + (y * this.width); + this.data[index * 4] = pix.r; + this.data[index * 4 + 1] = pix.g; + this.data[index * 4 + 2] = pix.b; + this.data[index * 4 + 3] = pix.a; + } +} diff --git a/bundler/tests/.cache/deno/aef18b720e0ba0e8a0407a06aa49d9cd7a97799a.ts b/bundler/tests/.cache/deno/aef18b720e0ba0e8a0407a06aa49d9cd7a97799a.ts new file mode 100644 index 00000000000..5b7d36b4359 --- /dev/null +++ b/bundler/tests/.cache/deno/aef18b720e0ba0e8a0407a06aa49d9cd7a97799a.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/error.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Mark } from "./mark.ts"; + +export class YAMLError extends Error { + constructor( + message = "(unknown reason)", + protected mark: Mark | string = "", + ) { + super(`${message} ${mark}`); + this.name = this.constructor.name; + } + + public toString(_compact: boolean): string { + return `${this.name}: ${this.message} ${this.mark}`; + } +} diff --git a/bundler/tests/.cache/deno/aef5db3b2ec0d66b8c68e671895d9f30a1607fe3.ts b/bundler/tests/.cache/deno/aef5db3b2ec0d66b8c68e671895d9f30a1607fe3.ts new file mode 100644 index 00000000000..2c9f61ff3e8 --- /dev/null +++ b/bundler/tests/.cache/deno/aef5db3b2ec0d66b8c68e671895d9f30a1607fe3.ts @@ -0,0 +1,6 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isNumber.js + + +export default function _isNumber(x) { + return Object.prototype.toString.call(x) === '[object Number]'; +} diff --git a/bundler/tests/.cache/deno/aefcee4ff8555a18e9fcf191f19cdf865871b8db.ts b/bundler/tests/.cache/deno/aefcee4ff8555a18e9fcf191f19cdf865871b8db.ts new file mode 100644 index 00000000000..8ad05dacd4e --- /dev/null +++ b/bundler/tests/.cache/deno/aefcee4ff8555a18e9fcf191f19cdf865871b8db.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dissoc.js + + +import _curry2 from './internal/_curry2.js'; +import dissocPath from './dissocPath.js'; + +/** + * Returns a new object that does not contain a `prop` property. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Object + * @sig String -> {k: v} -> {k: v} + * @param {String} prop The name of the property to dissociate + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original but without the specified property + * @see R.assoc, R.omit + * @example + * + * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} + */ +var dissoc = _curry2(function dissoc(prop, obj) { return dissocPath([prop], obj); }); +export default dissoc; diff --git a/bundler/tests/.cache/deno/af2841d4c20e73058dc5af777f3bdecd2dcd3aa4.ts b/bundler/tests/.cache/deno/af2841d4c20e73058dc5af777f3bdecd2dcd3aa4.ts new file mode 100644 index 00000000000..f2f912e49dc --- /dev/null +++ b/bundler/tests/.cache/deno/af2841d4c20e73058dc5af777f3bdecd2dcd3aa4.ts @@ -0,0 +1,445 @@ +// Loaded from https://deno.land/std@0.73.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +export function format(pathObject: FormatInputPathObject): string { + /* eslint-disable max-len */ + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} diff --git a/bundler/tests/.cache/deno/af75a4ca6fef72670fb344d6a0b5e5cbef7949a3.ts b/bundler/tests/.cache/deno/af75a4ca6fef72670fb344d6a0b5e5cbef7949a3.ts new file mode 100644 index 00000000000..67cd155afe5 --- /dev/null +++ b/bundler/tests/.cache/deno/af75a4ca6fef72670fb344d6a0b5e5cbef7949a3.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/client.ts + + +import { assert } from "../deps.ts"; +import { Database } from "./database.ts"; +import { WireProtocol } from "./protocol/mod.ts"; +import { ConnectOptions, Document, ListDatabaseInfo } from "./types.ts"; +import { parse } from "./utils/uri.ts"; + +export class MongoClient { + #protocol?: WireProtocol; + #conn?: Deno.Conn; + + async connect(options: ConnectOptions | string) { + let hostname = "127.0.0.1", + port = 27017; + if (typeof options === "string") { + const opt = parse(options); + hostname = opt.servers[0].host; + port = opt.servers[0].port; + } + + const conn = await Deno.connect({ + hostname, + port, + }); + this.#conn = conn; + this.#protocol = new WireProtocol(conn); + + await this.#protocol.connect(); + } + + async listDatabases(options?: { + filter?: Document; + nameOnly?: boolean; + authorizedCollections?: boolean; + comment?: Document; + }): Promise { + assert(this.#protocol); + if (!options) { + options = {}; + } + const { databases } = await this.#protocol.commandSingle("admin", { + listDatabases: 1, + ...options, + }); + return databases; + } + + database(name: string): Database { + assert(this.#protocol); + return new Database(this.#protocol, name); + } + + close() { + if (this.#conn) { + Deno.close(this.#conn.rid); + this.#conn = undefined; + this.#protocol = undefined; + } + } +} diff --git a/bundler/tests/.cache/deno/afa11413d04e197cf530446beaf8dde8b9587375.ts b/bundler/tests/.cache/deno/afa11413d04e197cf530446beaf8dde8b9587375.ts new file mode 100644 index 00000000000..20028fe8a2d --- /dev/null +++ b/bundler/tests/.cache/deno/afa11413d04e197cf530446beaf8dde8b9587375.ts @@ -0,0 +1,142 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/data-types.ts + + +import type { ModelSchema } from "./model.ts"; + +/** Field Types. */ +export type FieldTypeString = + | "bigInteger" + | "integer" + | "decimal" + | "float" + | "uuid" + | "boolean" + | "binary" + | "enu" + | "string" + | "text" + | "date" + | "datetime" + | "time" + | "timestamp" + | "json" + | "jsonb"; + +export type FieldTypes = + | "BIG_INTEGER" + | "INTEGER" + | "DECIMAL" + | "FLOAT" + | "UUID" + | "BOOLEAN" + | "BINARY" + | "ENUM" + | "STRING" + | "TEXT" + | "DATE" + | "DATETIME" + | "TIME" + | "TIMESTAMP" + | "JSON" + | "JSONB"; + +export type Fields = + & { + [key in FieldTypes]: FieldTypeString; + } + & { + decimal: (precision: number, scale?: number) => { + type: FieldTypeString; + precision: number; + scale?: number; + }; + string: (length: number) => { type: FieldTypeString; length: number }; + enum: ( + values: (number | string)[], + ) => { type: FieldTypeString; values: (number | string)[] }; + }; + +export type FieldProps = { + type?: FieldTypeString; + as?: string; + primaryKey?: boolean; + unique?: boolean; + autoIncrement?: boolean; + length?: number; + allowNull?: boolean; + precision?: number; + scale?: number; + values?: (number | string)[]; + relationship?: Relationship; +}; + +export type FieldType = FieldTypeString | FieldProps; + +export type FieldAlias = { [k: string]: string }; +export type FieldValue = number | string | boolean | Date | null; +export type FieldOptions = { + name: string; + type: FieldType; + defaultValue: FieldValue | (() => FieldValue); +}; + +export type Values = { [key: string]: FieldValue }; + +/** Relationship Types. */ +export type Relationship = { + kind: "single" | "multiple"; + model: ModelSchema; +}; + +export type RelationshipType = { + type: FieldTypeString; + relationship: Relationship; +}; + +/** Available fields data types. */ +export const DATA_TYPES: Fields = { + INTEGER: "integer", + BIG_INTEGER: "bigInteger", + DECIMAL: "decimal", + FLOAT: "float", + UUID: "uuid", + + BOOLEAN: "boolean", + BINARY: "binary", + + ENUM: "enu", + STRING: "string", + TEXT: "text", + + DATE: "date", + DATETIME: "datetime", + TIME: "time", + TIMESTAMP: "timestamp", + + JSON: "json", + JSONB: "jsonb", + + decimal(precision: number, scale?: number) { + return { + type: this.DECIMAL, + precision, + scale, + }; + }, + + string(length: number) { + return { + type: this.STRING, + length, + }; + }, + + enum(values: (number | string)[]) { + return { + type: this.ENUM, + values, + }; + }, +}; + +export const DataTypes = DATA_TYPES; diff --git a/bundler/tests/.cache/deno/afac710df581a532b1b7923486b7649d579f8c2e.ts b/bundler/tests/.cache/deno/afac710df581a532b1b7923486b7649d579f8c2e.ts new file mode 100644 index 00000000000..936cd599333 --- /dev/null +++ b/bundler/tests/.cache/deno/afac710df581a532b1b7923486b7649d579f8c2e.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/introspectionFromSchema.js + + +import invariant from '../jsutils/invariant.js'; +import isPromise from '../jsutils/isPromise.js'; +import { parse } from '../language/parser.js'; +import { execute } from '../execution/execute.js'; +import { getIntrospectionQuery } from './getIntrospectionQuery.js'; +/** + * Build an IntrospectionQuery from a GraphQLSchema + * + * IntrospectionQuery is useful for utilities that care about type and field + * relationships, but do not need to traverse through those relationships. + * + * This is the inverse of buildClientSchema. The primary use case is outside + * of the server context, for instance when doing schema comparisons. + */ + +export function introspectionFromSchema(schema, options) { + const optionsWithDefaults = { + directiveIsRepeatable: true, + schemaDescription: true, + ...options + }; + const document = parse(getIntrospectionQuery(optionsWithDefaults)); + const result = execute({ + schema, + document + }); + invariant(!isPromise(result) && !result.errors && result.data); + return result.data; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/afcc6eaa764ef6a22fec790bcb37a88c1112d02a.ts b/bundler/tests/.cache/deno/afcc6eaa764ef6a22fec790bcb37a88c1112d02a.ts new file mode 100644 index 00000000000..fc10d361254 --- /dev/null +++ b/bundler/tests/.cache/deno/afcc6eaa764ef6a22fec790bcb37a88c1112d02a.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/invariant.js + + +export default function invariant(condition, message) { + const booleanCondition = Boolean(condition); + /* istanbul ignore else (see transformation done in './resources/inlineInvariant.js') */ + + if (!booleanCondition) { + throw new Error(message != null ? message : 'Unexpected invariant triggered.'); + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/b01d10bd522162964c35a761ffd2f2e54df8eccf.ts b/bundler/tests/.cache/deno/b01d10bd522162964c35a761ffd2f2e54df8eccf.ts new file mode 100644 index 00000000000..dadfb2341da --- /dev/null +++ b/bundler/tests/.cache/deno/b01d10bd522162964c35a761ffd2f2e54df8eccf.ts @@ -0,0 +1,54 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/pipeWith.js + + +import _arity from './internal/_arity.js'; +import _curry2 from './internal/_curry2.js'; +import head from './head.js'; +import _reduce from './internal/_reduce.js'; +import tail from './tail.js'; +import identity from './identity.js'; + + +/** + * Performs left-to-right function composition using transforming function. The first function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of pipeWith is not automatically curried. Transforming function is not used on the + * first argument. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Function + * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z) + * @param {Function} transformer The transforming function + * @param {Array} functions The functions to pipe + * @return {Function} + * @see R.composeWith, R.pipe + * @example + * + * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res)); + * const f = pipeWhileNotNil([Math.pow, R.negate, R.inc]) + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, g(...args))) + */ +var pipeWith = _curry2(function pipeWith(xf, list) { + if (list.length <= 0) { + return identity; + } + + var headList = head(list); + var tailList = tail(list); + + return _arity(headList.length, function() { + return _reduce( + function(result, f) { + return xf.call(this, f, result); + }, + headList.apply(this, arguments), + tailList + ); + }); +}); +export default pipeWith; diff --git a/bundler/tests/.cache/deno/b05d13b0775b642a83cd8da22d68d4d68a4965ca.ts b/bundler/tests/.cache/deno/b05d13b0775b642a83cd8da22d68d4d68a4965ca.ts new file mode 100644 index 00000000000..618fc7ea1d9 --- /dev/null +++ b/bundler/tests/.cache/deno/b05d13b0775b642a83cd8da22d68d4d68a4965ca.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reduce.js + + +import _curry3 from './internal/_curry3.js'; +import _reduce from './internal/_reduce.js'; + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It may use + * [`R.reduced`](#reduced) to shortcut the iteration. + * + * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function + * is *(value, acc)*. + * + * Note: `R.reduce` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduce` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description + * + * Dispatches to the `reduce` method of the third argument, if present. When + * doing so, it is up to the user to handle the [`R.reduced`](#reduced) + * shortcuting, as this is not implemented by `reduce`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> a + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduced, R.addIndex, R.reduceRight + * @example + * + * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 + * // - -10 + * // / \ / \ + * // - 4 -6 4 + * // / \ / \ + * // - 3 ==> -3 3 + * // / \ / \ + * // - 2 -1 2 + * // / \ / \ + * // 0 1 0 1 + * + * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d) + */ +var reduce = _curry3(_reduce); +export default reduce; diff --git a/bundler/tests/.cache/deno/b0ccc81704aae29e48347e035f3deefeb7de22e7.ts b/bundler/tests/.cache/deno/b0ccc81704aae29e48347e035f3deefeb7de22e7.ts new file mode 100644 index 00000000000..37019e7f34e --- /dev/null +++ b/bundler/tests/.cache/deno/b0ccc81704aae29e48347e035f3deefeb7de22e7.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/ifElse.js + + +import _curry3 from './internal/_curry3.js'; +import curryN from './curryN.js'; + + +/** + * Creates a function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *) + * @param {Function} condition A predicate function + * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value. + * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value. + * @return {Function} A new function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * @see R.unless, R.when, R.cond + * @example + * + * const incCount = R.ifElse( + * R.has('count'), + * R.over(R.lensProp('count'), R.inc), + * R.assoc('count', 1) + * ); + * incCount({ count: 1 }); //=> { count: 2 } + * incCount({}); //=> { count: 1 } + */ +var ifElse = _curry3(function ifElse(condition, onTrue, onFalse) { + return curryN(Math.max(condition.length, onTrue.length, onFalse.length), + function _ifElse() { + return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments); + } + ); +}); +export default ifElse; diff --git a/bundler/tests/.cache/deno/b12a6cda523d22548f22cf8337cbf3c80af0f658.ts b/bundler/tests/.cache/deno/b12a6cda523d22548f22cf8337cbf3c80af0f658.ts new file mode 100644 index 00000000000..787da592b2e --- /dev/null +++ b/bundler/tests/.cache/deno/b12a6cda523d22548f22cf8337cbf3c80af0f658.ts @@ -0,0 +1,52 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/index.js + + +// Produce the GraphQL query recommended for a full schema introspection. +// Accepts optional IntrospectionOptions. +export { getIntrospectionQuery } from './getIntrospectionQuery.js'; +// Gets the target Operation from a Document. +export { getOperationAST } from './getOperationAST.js'; // Gets the Type for the target Operation AST. + +export { getOperationRootType } from './getOperationRootType.js'; // Convert a GraphQLSchema to an IntrospectionQuery. + +export { introspectionFromSchema } from './introspectionFromSchema.js'; // Build a GraphQLSchema from an introspection result. + +export { buildClientSchema } from './buildClientSchema.js'; // Build a GraphQLSchema from GraphQL Schema language. + +export { buildASTSchema, buildSchema } from './buildASTSchema.js'; +// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST. +export { extendSchema // @deprecated: Get the description from a schema AST node and supports legacy +// syntax for specifying descriptions - will be removed in v16. +, getDescription } from './extendSchema.js'; // Sort a GraphQLSchema. + +export { lexicographicSortSchema } from './lexicographicSortSchema.js'; // Print a GraphQLSchema to GraphQL Schema language. + +export { printSchema, printType, printIntrospectionSchema } from './printSchema.js'; // Create a GraphQLType from a GraphQL language AST. + +export { typeFromAST } from './typeFromAST.js'; // Create a JavaScript value from a GraphQL language AST with a type. + +export { valueFromAST } from './valueFromAST.js'; // Create a JavaScript value from a GraphQL language AST without a type. + +export { valueFromASTUntyped } from './valueFromASTUntyped.js'; // Create a GraphQL language AST from a JavaScript value. + +export { astFromValue } from './astFromValue.js'; // A helper to use within recursive-descent visitors which need to be aware of +// the GraphQL type system. + +export { TypeInfo, visitWithTypeInfo } from './TypeInfo.js'; // Coerces a JavaScript value to a GraphQL type, or produces errors. + +export { coerceInputValue } from './coerceInputValue.js'; // Concatenates multiple AST together. + +export { concatAST } from './concatAST.js'; // Separates an AST into an AST per Operation. + +export { separateOperations } from './separateOperations.js'; // Strips characters that are not significant to the validity or execution +// of a GraphQL document. + +export { stripIgnoredCharacters } from './stripIgnoredCharacters.js'; // Comparators for types + +export { isEqualType, isTypeSubTypeOf, doTypesOverlap } from './typeComparators.js'; // Asserts that a string is a valid GraphQL name + +export { assertValidName, isValidNameError } from './assertValidName.js'; // Compares two GraphQLSchemas and detects breaking changes. + +export { BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges } from './findBreakingChanges.js'; +// Report all deprecated usage within a GraphQL document. +export { findDeprecatedUsages } from './findDeprecatedUsages.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/b142aa2060fb12d396785890a64e6b3b3d7b7994.ts b/bundler/tests/.cache/deno/b142aa2060fb12d396785890a64e6b3b3d7b7994.ts new file mode 100644 index 00000000000..b3da5795627 --- /dev/null +++ b/bundler/tests/.cache/deno/b142aa2060fb12d396785890a64e6b3b3d7b7994.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/removeOne.js + + +import { matches } from '../../deps.ts'; +import { ReadFileStream, WriteFileStream } from '../storage.ts'; + +export default async (filename, query) => { + const readStream = new ReadFileStream(filename); + const writeStream = new WriteFileStream(filename); + let removed = []; + query = query || {}; + return new Promise((resolve, reject) => { + readStream.on('document', obj => { + if (matches(query, obj) && removed.length == 0) + removed.push(obj) + else if (obj._id !== removed[0]?._id) + writeStream.emit("write", obj) + }) + readStream.on("end", () => { + writeStream.emit("end"); + }) + writeStream.on("close", () => { + return resolve(removed[0] || null) + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/b15f356f842ef09da42d267398da87b4f0019166.ts b/bundler/tests/.cache/deno/b15f356f842ef09da42d267398da87b4f0019166.ts new file mode 100644 index 00000000000..c7710b1febd --- /dev/null +++ b/bundler/tests/.cache/deno/b15f356f842ef09da42d267398da87b4f0019166.ts @@ -0,0 +1,60 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/concat.js + + +import _curry2 from './internal/_curry2.js'; +import _isArray from './internal/_isArray.js'; +import _isFunction from './internal/_isFunction.js'; +import _isString from './internal/_isString.js'; +import toString from './toString.js'; + + +/** + * Returns the result of concatenating the given lists or strings. + * + * Note: `R.concat` expects both arguments to be of the same type, + * unlike the native `Array.prototype.concat` method. It will throw + * an error if you `concat` an Array with a non-Array value. + * + * Dispatches to the `concat` method of the first argument, if present. + * Can also concatenate two members of a [fantasy-land + * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] -> [a] + * @sig String -> String -> String + * @param {Array|String} firstList The first list + * @param {Array|String} secondList The second list + * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of + * `secondList`. + * + * @example + * + * R.concat('ABC', 'DEF'); // 'ABCDEF' + * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + * R.concat([], []); //=> [] + */ +var concat = _curry2(function concat(a, b) { + if (_isArray(a)) { + if (_isArray(b)) { + return a.concat(b); + } + throw new TypeError(toString(b) + ' is not an array'); + } + if (_isString(a)) { + if (_isString(b)) { + return a + b; + } + throw new TypeError(toString(b) + ' is not a string'); + } + if (a != null && _isFunction(a['fantasy-land/concat'])) { + return a['fantasy-land/concat'](b); + } + if (a != null && _isFunction(a.concat)) { + return a.concat(b); + } + throw new TypeError(toString(a) + ' does not have a method named "concat" or "fantasy-land/concat"'); +}); +export default concat; diff --git a/bundler/tests/.cache/deno/b1612551ea837f2d0dc8cfbbfd6b4177dc401a0d.ts b/bundler/tests/.cache/deno/b1612551ea837f2d0dc8cfbbfd6b4177dc401a0d.ts new file mode 100644 index 00000000000..b9121650658 --- /dev/null +++ b/bundler/tests/.cache/deno/b1612551ea837f2d0dc8cfbbfd6b4177dc401a0d.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/typeFromAST.js + + +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import { Kind } from '../language/kinds.js'; +import { GraphQLList, GraphQLNonNull } from '../type/definition.js'; +/** + * Given a Schema and an AST node describing a type, return a GraphQLType + * definition which applies to that type. For example, if provided the parsed + * AST node for `[User]`, a GraphQLList instance will be returned, containing + * the type called "User" found in the schema. If a type called "User" is not + * found in the schema, then undefined will be returned. + */ + +/* eslint-disable no-redeclare */ + +export function typeFromAST(schema, typeNode) { + /* eslint-enable no-redeclare */ + let innerType; + + if (typeNode.kind === Kind.LIST_TYPE) { + innerType = typeFromAST(schema, typeNode.type); + return innerType && GraphQLList(innerType); + } + + if (typeNode.kind === Kind.NON_NULL_TYPE) { + innerType = typeFromAST(schema, typeNode.type); + return innerType && GraphQLNonNull(innerType); + } + + if (typeNode.kind === Kind.NAMED_TYPE) { + return schema.getType(typeNode.name.value); + } // Not reachable. All possible type nodes have been considered. + + + invariant(false, 'Unexpected type node: ' + inspect(typeNode)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/b1b129f07d03ecfec2509af9441d6588b8ced0d6.ts b/bundler/tests/.cache/deno/b1b129f07d03ecfec2509af9441d6588b8ced0d6.ts new file mode 100644 index 00000000000..4ae691c41bf --- /dev/null +++ b/bundler/tests/.cache/deno/b1b129f07d03ecfec2509af9441d6588b8ced0d6.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.73.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/b25e0e29d6dae5035ab13911c3f6c4496af88160.ts b/bundler/tests/.cache/deno/b25e0e29d6dae5035ab13911c3f6c4496af88160.ts new file mode 100644 index 00000000000..1e7ede048fd --- /dev/null +++ b/bundler/tests/.cache/deno/b25e0e29d6dae5035ab13911c3f6c4496af88160.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isLatLong.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; + +/** + * @ignore + */ +const long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; + +/** + * @ignore + */ +const latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i; + +/** + * @ignore + */ +const longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i; + +type LatLongOptions = { + checkDMS?: boolean; +}; + +/** + * @ignore + */ +const defaultLatLongOptions = { + checkDMS: false, +}; + +export const isLatLong = (str: string, options?: LatLongOptions) => { + assertString(str); + options = { + ...defaultLatLongOptions, + ...options, + }; + + if (!str.includes(',')) return false; + const pair = str.split(','); + if ( + (pair[0].startsWith('(') && !pair[1].endsWith(')')) || + (pair[1].endsWith(')') && !pair[0].startsWith('(')) + ) + return false; + + if (options.checkDMS) { + return latDMS.test(pair[0]) && longDMS.test(pair[1]); + } + return lat.test(pair[0]) && long.test(pair[1]); +}; diff --git a/bundler/tests/.cache/deno/b2ddd7b200c85801f31e4a4798295a16f324ec34.ts b/bundler/tests/.cache/deno/b2ddd7b200c85801f31e4a4798295a16f324ec34.ts new file mode 100644 index 00000000000..fe86c94aad7 --- /dev/null +++ b/bundler/tests/.cache/deno/b2ddd7b200c85801f31e4a4798295a16f324ec34.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/difference.js + + +import _curry2 from './internal/_curry2.js'; +import _Set from './internal/_Set.js'; + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Objects and Arrays are compared in terms of + * value equality, not reference equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without + * @example + * + * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] + * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] + * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] + */ +var difference = _curry2(function difference(first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + var secondLen = second.length; + var toFilterOut = new _Set(); + + for (var i = 0; i < secondLen; i += 1) { + toFilterOut.add(second[i]); + } + + while (idx < firstLen) { + if (toFilterOut.add(first[idx])) { + out[out.length] = first[idx]; + } + idx += 1; + } + return out; +}); +export default difference; diff --git a/bundler/tests/.cache/deno/b2edd56e998026f10cd5fb77f1eb02f0410709ca.ts b/bundler/tests/.cache/deno/b2edd56e998026f10cd5fb77f1eb02f0410709ca.ts new file mode 100644 index 00000000000..486e09e838f --- /dev/null +++ b/bundler/tests/.cache/deno/b2edd56e998026f10cd5fb77f1eb02f0410709ca.ts @@ -0,0 +1,278 @@ +// Loaded from https://deno.land/std/fs/expand_glob.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { + GlobOptions, + globToRegExp, + isAbsolute, + isGlob, + joinGlobs, + normalize, + SEP_PATTERN, +} from "../path/mod.ts"; +import { + _createWalkEntry, + _createWalkEntrySync, + walk, + WalkEntry, + walkSync, +} from "./walk.ts"; +import { assert } from "../_util/assert.ts"; +import { isWindows } from "../_util/os.ts"; + +export interface ExpandGlobOptions extends Omit { + root?: string; + exclude?: string[]; + includeDirs?: boolean; +} + +interface SplitPath { + segments: string[]; + isAbsolute: boolean; + hasTrailingSep: boolean; + // Defined for any absolute Windows path. + winRoot?: string; +} + +function split(path: string): SplitPath { + const s = SEP_PATTERN.source; + const segments = path + .replace(new RegExp(`^${s}|${s}$`, "g"), "") + .split(SEP_PATTERN); + const isAbsolute_ = isAbsolute(path); + return { + segments, + isAbsolute: isAbsolute_, + hasTrailingSep: !!path.match(new RegExp(`${s}$`)), + winRoot: isWindows && isAbsolute_ ? segments.shift() : undefined, + }; +} + +function throwUnlessNotFound(error: Error): void { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } +} + +function comparePath(a: WalkEntry, b: WalkEntry): number { + if (a.path < b.path) return -1; + if (a.path > b.path) return 1; + return 0; +} + +/** Expand the glob string from the specified `root` directory and yield each + * result as a `WalkEntry` object. + * + * See [`globToRegExp()`](../path/glob.ts#globToRegExp) for details on supported + * syntax. + * + * Example: + * + * for await (const file of expandGlob("**\/*.ts")) { + * console.log(file); + * } + */ +export async function* expandGlob( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): AsyncIterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = await _createWalkEntry(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + async function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): AsyncIterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield await _createWalkEntry(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walk(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walk(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for await (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} + +/** Synchronous version of `expandGlob()`. + * + * Example: + * + * for (const file of expandGlobSync("**\/*.ts")) { + * console.log(file); + * } + */ +export function* expandGlobSync( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): IterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = _createWalkEntrySync(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): IterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield _createWalkEntrySync(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walkSync(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walkSync(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} diff --git a/bundler/tests/.cache/deno/b2f626579e4f8c26431d13e8da8579fd9228acae.ts b/bundler/tests/.cache/deno/b2f626579e4f8c26431d13e8da8579fd9228acae.ts new file mode 100644 index 00000000000..1c71de915bf --- /dev/null +++ b/bundler/tests/.cache/deno/b2f626579e4f8c26431d13e8da8579fd9228acae.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reduceWhile.js + + +import _curryN from './internal/_curryN.js'; +import _reduce from './internal/_reduce.js'; +import _reduced from './internal/_reduced.js'; + + +/** + * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating + * through the list, successively calling the iterator function. `reduceWhile` + * also takes a predicate that is evaluated before each step. If the predicate + * returns `false`, it "short-circuits" the iteration and returns the current + * value of the accumulator. + * + * @func + * @memberOf R + * @since v0.22.0 + * @category List + * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} pred The predicate. It is passed the accumulator and the + * current element. + * @param {Function} fn The iterator function. Receives two values, the + * accumulator and the current element. + * @param {*} a The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced + * @example + * + * const isOdd = (acc, x) => x % 2 === 1; + * const xs = [1, 3, 5, 60, 777, 800]; + * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 + * + * const ys = [2, 4, 6] + * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111 + */ +var reduceWhile = _curryN(4, [], function _reduceWhile(pred, fn, a, list) { + return _reduce(function(acc, x) { + return pred(acc, x) ? fn(acc, x) : _reduced(acc); + }, a, list); +}); +export default reduceWhile; diff --git a/bundler/tests/.cache/deno/b329d145946b1ddddb0e84874f5dbc86072d3a95.ts b/bundler/tests/.cache/deno/b329d145946b1ddddb0e84874f5dbc86072d3a95.ts new file mode 100644 index 00000000000..81ed00ff544 --- /dev/null +++ b/bundler/tests/.cache/deno/b329d145946b1ddddb0e84874f5dbc86072d3a95.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isCreditCard.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14})$/; + +export const isCreditCard = (str: string) => { + assertString(str); + + const sanitized = str.replace(/[- ]+/g, ''); + + if (!creditCard.test(sanitized)) { + return false; + } + + let sum = 0; + let digit; + let tmpNum; + let shouldDouble; + + for (let i = sanitized.length - 1; i >= 0; i--) { + digit = sanitized.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + if (shouldDouble) { + tmpNum *= 2; + if (tmpNum >= 10) { + sum += (tmpNum % 10) + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + shouldDouble = !shouldDouble; + } + return !!(sum % 10 === 0 ? sanitized : false); +}; diff --git a/bundler/tests/.cache/deno/b347172b9485f4da7366eae189c05440e8d9ec39.ts b/bundler/tests/.cache/deno/b347172b9485f4da7366eae189c05440e8d9ec39.ts new file mode 100644 index 00000000000..dde4f033967 --- /dev/null +++ b/bundler/tests/.cache/deno/b347172b9485f4da7366eae189c05440e8d9ec39.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/helpers/multilineRegex.ts + + +/** + * Build RegExp object from an array + * of multiple/multi-line regexp parts + * + * @param {string[]} parts + * @param {string} flags + * @return {object} - RegExp object + */ +export const multilineRegexp = (parts: string[], flags = '') => { + const regexpAsStringLiteral = parts.join(''); + + return new RegExp(regexpAsStringLiteral, flags); +}; diff --git a/bundler/tests/.cache/deno/b38ddce03727e795106fb99f058ae11d42efa21a.ts b/bundler/tests/.cache/deno/b38ddce03727e795106fb99f058ae11d42efa21a.ts new file mode 100644 index 00000000000..40eba3f33ba --- /dev/null +++ b/bundler/tests/.cache/deno/b38ddce03727e795106fb99f058ae11d42efa21a.ts @@ -0,0 +1,194 @@ +// Loaded from https://deno.land/x/oak/send.ts + + +/*! + * Adapted from koa-send at https://github.com/koajs/send and which is licensed + * with the MIT license. + */ + +import type { Context } from "./context.ts"; +import { createHttpError } from "./httpError.ts"; +import { basename, extname, parse, sep } from "./deps.ts"; +import { decodeComponent, resolvePath } from "./util.ts"; + +export interface SendOptions { + /** Try to serve the brotli version of a file automatically when brotli is + * supported by a client and if the requested file with `.br` extension + * exists. (defaults to `true`) */ + brotli?: boolean; + + /** Try to match extensions from passed array to search for file when no + * extension is sufficed in URL. First found is served. (defaults to + * `undefined`) */ + extensions?: string[]; + + /** If `true`, format the path to serve static file servers and not require a + * trailing slash for directories, so that you can do both `/directory` and + * `/directory/`. (defaults to `true`) */ + format?: boolean; + + /** Try to serve the gzipped version of a file automatically when gzip is + * supported by a client and if the requested file with `.gz` extension + * exists. (defaults to `true`). */ + gzip?: boolean; + + /** Allow transfer of hidden files. (defaults to `false`) */ + hidden?: boolean; + + /** Tell the browser the resource is immutable and can be cached + * indefinitely. (defaults to `false`) */ + immutable?: boolean; + + /** Name of the index file to serve automatically when visiting the root + * location. (defaults to none) */ + index?: string; + + /** Browser cache max-age in milliseconds. (defaults to `0`) */ + maxage?: number; + + /** Root directory to restrict file access. */ + root: string; +} + +function isHidden(path: string) { + const pathArr = path.split("/"); + for (const segment of pathArr) { + if (segment[0] === "." && segment !== "." && segment !== "..") { + return true; + } + return false; + } +} + +async function exists(path: string): Promise { + try { + return (await Deno.stat(path)).isFile; + } catch { + return false; + } +} + +/** Asynchronously fulfill a response with a file from the local file + * system. + * + * Requires Deno read permission for the `root` directory. */ +export async function send( + // deno-lint-ignore no-explicit-any + { request, response }: Context, + path: string, + options: SendOptions = { root: "" }, +): Promise { + const { + brotli = true, + extensions, + format = true, + gzip = true, + hidden = false, + immutable = false, + index, + maxage = 0, + root, + } = options; + const trailingSlash = path[path.length - 1] === "/"; + path = decodeComponent(path.substr(parse(path).root.length)); + if (index && trailingSlash) { + path += index; + } + + if (!hidden && isHidden(path)) { + throw createHttpError(403); + } + + path = resolvePath(root, path); + + let encodingExt = ""; + if ( + brotli && + request.acceptsEncodings("br", "identity") === "br" && + (await exists(`${path}.br`)) + ) { + path = `${path}.br`; + response.headers.set("Content-Encoding", "br"); + response.headers.delete("Content-Length"); + encodingExt = ".br"; + } else if ( + gzip && + request.acceptsEncodings("gzip", "identity") === "gzip" && + (await exists(`${path}.gz`)) + ) { + path = `${path}.gz`; + response.headers.set("Content-Encoding", "gzip"); + response.headers.delete("Content-Length"); + encodingExt = ".gz"; + } + + if (extensions && !/\.[^/]*$/.exec(path)) { + for (let ext of extensions) { + if (!/^\./.exec(ext)) { + ext = `.${ext}`; + } + if (await exists(`${path}${ext}`)) { + path += ext; + break; + } + } + } + + let stats: Deno.FileInfo; + try { + stats = await Deno.stat(path); + + if (stats.isDirectory) { + if (format && index) { + path += `/${index}`; + stats = await Deno.stat(path); + } else { + return; + } + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + throw createHttpError(404, err.message); + } + throw createHttpError(500, err.message); + } + + let mtime: number | null = null; + if (response.headers.has("Last-Modified")) { + mtime = new Date(response.headers.get("Last-Modified")!).getTime(); + } else if (stats.mtime) { + // Round down to second because it's the precision of the UTC string. + mtime = stats.mtime.getTime(); + mtime -= mtime % 1000; + response.headers.set("Last-Modified", new Date(mtime).toUTCString()); + } + + if (!response.headers.has("Cache-Control")) { + const directives = [`max-age=${(maxage / 1000) | 0}`]; + if (immutable) { + directives.push("immutable"); + } + response.headers.set("Cache-Control", directives.join(",")); + } + if (!response.type) { + response.type = encodingExt !== "" + ? extname(basename(path, encodingExt)) + : extname(path); + } + + if (request.headers.has("If-Modified-Since") && mtime) { + const ifModifiedSince = new Date(request.headers.get("If-Modified-Since")!); + if (ifModifiedSince.getTime() >= mtime) { + response.status = 304; + return path; + } + } + + response.headers.set("Content-Length", String(stats.size)); + + const file = await Deno.open(path, { read: true }); + response.addResource(file.rid); + response.body = file; + + return path; +} diff --git a/bundler/tests/.cache/deno/b39958f85653b276abfec51177db58a3996e2193.ts b/bundler/tests/.cache/deno/b39958f85653b276abfec51177db58a3996e2193.ts new file mode 100644 index 00000000000..ea093a90b70 --- /dev/null +++ b/bundler/tests/.cache/deno/b39958f85653b276abfec51177db58a3996e2193.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/merge.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +function resolveYamlMerge(data: string): boolean { + return data === "<<" || data === null; +} + +export const merge = new Type("tag:yaml.org,2002:merge", { + kind: "scalar", + resolve: resolveYamlMerge, +}); diff --git a/bundler/tests/.cache/deno/b409234992ea48dc58a0f8f30f6b08c0c535071f.ts b/bundler/tests/.cache/deno/b409234992ea48dc58a0f8f30f6b08c0c535071f.ts new file mode 100644 index 00000000000..75835148b2c --- /dev/null +++ b/bundler/tests/.cache/deno/b409234992ea48dc58a0f8f30f6b08c0c535071f.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/path/mod.ts + + +export * from "https://deno.land/std@0.81.0/path/mod.ts"; diff --git a/bundler/tests/.cache/deno/b41d1bbd146ad945291e6c1f7d583994e1e44285.ts b/bundler/tests/.cache/deno/b41d1bbd146ad945291e6c1f7d583994e1e44285.ts new file mode 100644 index 00000000000..0d13ad92106 --- /dev/null +++ b/bundler/tests/.cache/deno/b41d1bbd146ad945291e6c1f7d583994e1e44285.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/gte.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns `true` if the first argument is greater than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.lte + * @example + * + * R.gte(2, 1); //=> true + * R.gte(2, 2); //=> true + * R.gte(2, 3); //=> false + * R.gte('a', 'z'); //=> false + * R.gte('z', 'a'); //=> true + */ +var gte = _curry2(function gte(a, b) { return a >= b; }); +export default gte; diff --git a/bundler/tests/.cache/deno/b420d2435521a43a909d5d8a46776526091ca5c0.ts b/bundler/tests/.cache/deno/b420d2435521a43a909d5d8a46776526091ca5c0.ts new file mode 100644 index 00000000000..3eab5e6ada3 --- /dev/null +++ b/bundler/tests/.cache/deno/b420d2435521a43a909d5d8a46776526091ca5c0.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/partialRight.js + + +import _concat from './internal/_concat.js'; +import _createPartialApplicator from './internal/_createPartialApplicator.js'; +import flip from './flip.js'; + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided to `g` followed by the arguments provided initially. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partial + * @example + * + * const greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']); + * + * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b) + */ +var partialRight = _createPartialApplicator(flip(_concat)); +export default partialRight; diff --git a/bundler/tests/.cache/deno/b459e810bea30149bf1280057af32aa9b050d027.ts b/bundler/tests/.cache/deno/b459e810bea30149bf1280057af32aa9b050d027.ts new file mode 100644 index 00000000000..6f8783c1ff6 --- /dev/null +++ b/bundler/tests/.cache/deno/b459e810bea30149bf1280057af32aa9b050d027.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.85.0/async/deferred.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/b48a58c2984bd7d27ea15c473e55e801450fc9cc.ts b/bundler/tests/.cache/deno/b48a58c2984bd7d27ea15c473e55e801450fc9cc.ts new file mode 100644 index 00000000000..0ff60094b41 --- /dev/null +++ b/bundler/tests/.cache/deno/b48a58c2984bd7d27ea15c473e55e801450fc9cc.ts @@ -0,0 +1,144 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/dumper/dumper_state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Schema, SchemaDefinition } from "../schema.ts"; +import { State } from "../state.ts"; +import type { StyleVariant, Type } from "../type.ts"; +import type { Any, ArrayObject } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +function compileStyleMap( + schema: Schema, + map?: ArrayObject | null, +): ArrayObject { + if (typeof map === "undefined" || map === null) return {}; + + let type: Type; + const result: ArrayObject = {}; + const keys = Object.keys(map); + let tag: string, style: StyleVariant; + for (let index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]) as StyleVariant; + if (tag.slice(0, 2) === "!!") { + tag = `tag:yaml.org,2002:${tag.slice(2)}`; + } + type = schema.compiledTypeMap.fallback[tag]; + + if ( + type && + typeof type.styleAliases !== "undefined" && + _hasOwnProperty.call(type.styleAliases, style) + ) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +export interface DumperStateOptions { + /** indentation width to use (in spaces). */ + indent?: number; + /** when true, will not add an indentation level to array elements */ + noArrayIndent?: boolean; + /** + * do not throw on invalid types (like function in the safe schema) + * and skip pairs and single values with such types. + */ + skipInvalid?: boolean; + /** + * specifies level of nesting, when to switch from + * block to flow style for collections. -1 means block style everywhere + */ + flowLevel?: number; + /** Each tag may have own set of styles. - "tag" => "style" map. */ + styles?: ArrayObject | null; + /** specifies a schema to use. */ + schema?: SchemaDefinition; + /** + * If true, sort keys when dumping YAML in ascending, ASCII character order. + * If a function, use the function to sort the keys. (default: false) + * If a function is specified, the function must return a negative value + * if first argument is less than second argument, zero if they're equal + * and a positive value otherwise. + */ + sortKeys?: boolean | ((a: string, b: string) => number); + /** set max line width. (default: 80) */ + lineWidth?: number; + /** + * if true, don't convert duplicate objects + * into references (default: false) + */ + noRefs?: boolean; + /** + * if true don't try to be compatible with older yaml versions. + * Currently: don't quote "yes", "no" and so on, + * as required for YAML 1.1 (default: false) + */ + noCompatMode?: boolean; + /** + * if true flow sequences will be condensed, omitting the + * space between `key: value` or `a, b`. Eg. `'[a,b]'` or `{a:{b:c}}`. + * Can be useful when using yaml for pretty URL query params + * as spaces are %-encoded. (default: false). + */ + condenseFlow?: boolean; +} + +export class DumperState extends State { + public indent: number; + public noArrayIndent: boolean; + public skipInvalid: boolean; + public flowLevel: number; + public sortKeys: boolean | ((a: Any, b: Any) => number); + public lineWidth: number; + public noRefs: boolean; + public noCompatMode: boolean; + public condenseFlow: boolean; + public implicitTypes: Type[]; + public explicitTypes: Type[]; + public tag: string | null = null; + public result = ""; + public duplicates: Any[] = []; + public usedDuplicates: Any[] = []; // changed from null to [] + public styleMap: ArrayObject; + public dump: Any; + + constructor({ + schema, + indent = 2, + noArrayIndent = false, + skipInvalid = false, + flowLevel = -1, + styles = null, + sortKeys = false, + lineWidth = 80, + noRefs = false, + noCompatMode = false, + condenseFlow = false, + }: DumperStateOptions) { + super(schema); + this.indent = Math.max(1, indent); + this.noArrayIndent = noArrayIndent; + this.skipInvalid = skipInvalid; + this.flowLevel = flowLevel; + this.styleMap = compileStyleMap(this.schema as Schema, styles); + this.sortKeys = sortKeys; + this.lineWidth = lineWidth; + this.noRefs = noRefs; + this.noCompatMode = noCompatMode; + this.condenseFlow = condenseFlow; + + this.implicitTypes = (this.schema as Schema).compiledImplicit; + this.explicitTypes = (this.schema as Schema).compiledExplicit; + } +} diff --git a/bundler/tests/.cache/deno/b54d712edc81e1bfd44eef3805a506fc835e7a6e.ts b/bundler/tests/.cache/deno/b54d712edc81e1bfd44eef3805a506fc835e7a6e.ts new file mode 100644 index 00000000000..a865163d94f --- /dev/null +++ b/bundler/tests/.cache/deno/b54d712edc81e1bfd44eef3805a506fc835e7a6e.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xtap.js + + +import _curry2 from './_curry2.js'; +import _xfBase from './_xfBase.js'; + + +function XTap(f, xf) { + this.xf = xf; + this.f = f; +} +XTap.prototype['@@transducer/init'] = _xfBase.init; +XTap.prototype['@@transducer/result'] = _xfBase.result; +XTap.prototype['@@transducer/step'] = function(result, input) { + this.f(input); + return this.xf['@@transducer/step'](result, input); +}; + +var _xtap = _curry2(function _xtap(f, xf) { return new XTap(f, xf); }); +export default _xtap; diff --git a/bundler/tests/.cache/deno/b5700b6cbaee4263179b938d27c9c14d8f5afa80.ts b/bundler/tests/.cache/deno/b5700b6cbaee4263179b938d27c9c14d8f5afa80.ts new file mode 100644 index 00000000000..b772f211315 --- /dev/null +++ b/bundler/tests/.cache/deno/b5700b6cbaee4263179b938d27c9c14d8f5afa80.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/bson/mod.ts + + +// @deno-types='./bson.d.ts' +export * from "https://cdn.skypack.dev/bson"; diff --git a/bundler/tests/.cache/deno/b5d24f382c4dd36762101122d065bedced2d6232.ts b/bundler/tests/.cache/deno/b5d24f382c4dd36762101122d065bedced2d6232.ts new file mode 100644 index 00000000000..534ac749743 --- /dev/null +++ b/bundler/tests/.cache/deno/b5d24f382c4dd36762101122d065bedced2d6232.ts @@ -0,0 +1,146 @@ +// Loaded from https://deno.land/x/oak/negotiation/language.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface LanaguageSpecificity extends Specificity { + prefix: string; + suffix?: string; + full: string; +} + +const SIMPLE_LANGUAGE_REGEXP = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + +function parseLanguage( + str: string, + i: number, +): LanaguageSpecificity | undefined { + const match = SIMPLE_LANGUAGE_REGEXP.exec(str); + if (!match) { + return undefined; + } + + const [, prefix, suffix] = match; + const full = suffix ? `${prefix}-${suffix}` : prefix; + + let q = 1; + if (match[3]) { + const params = match[3].split(";"); + for (const param of params) { + const [key, value] = param.trim().split("="); + if (key === "q") { + q = parseFloat(value); + break; + } + } + } + + return { prefix, suffix, full, q, i }; +} + +function parseAcceptLanguage(accept: string): LanaguageSpecificity[] { + const accepts = accept.split(","); + const result: LanaguageSpecificity[] = []; + + for (let i = 0; i < accepts.length; i++) { + const language = parseLanguage(accepts[i].trim(), i); + if (language) { + result.push(language); + } + } + return result; +} + +function specify( + language: string, + spec: LanaguageSpecificity, + i: number, +): Specificity | undefined { + const p = parseLanguage(language, i); + if (!p) { + return undefined; + } + let s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.prefix.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return; + } + + return { i, o: spec.i, q: spec.q, s }; +} + +function getLanguagePriority( + language: string, + accepted: LanaguageSpecificity[], + index: number, +): Specificity { + let priority: Specificity = { i: -1, o: -1, q: 0, s: 0 }; + for (const accepts of accepted) { + const spec = specify(language, accepts, index); + if ( + spec && + ((priority.s ?? 0) - (spec.s ?? 0) || priority.q - spec.q || + (priority.o ?? 0) - (spec.o ?? 0)) < 0 + ) { + priority = spec; + } + } + return priority; +} + +export function preferredLanguages( + accept = "*", + provided?: string[], +): string[] { + const accepts = parseAcceptLanguage(accept); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map((spec) => spec.full); + } + + const priorities = provided + .map((type, index) => getLanguagePriority(type, accepts, index)); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/b5fe091944617d00cc0ce57aadba74a1052fdf2a.ts b/bundler/tests/.cache/deno/b5fe091944617d00cc0ce57aadba74a1052fdf2a.ts new file mode 100644 index 00000000000..c38d6db6ef2 --- /dev/null +++ b/bundler/tests/.cache/deno/b5fe091944617d00cc0ce57aadba74a1052fdf2a.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/xor.js + + +import _curry2 from './internal/_curry2.js'; + +/** + * Exclusive disjunction logical operation. + * Returns `true` if one of the arguments is truthy and the other is falsy. + * Otherwise, it returns `false`. + * + * @func + * @memberOf R + * @since v0.27.1 + * @category Logic + * @sig a -> b -> Boolean + * @param {Any} a + * @param {Any} b + * @return {Boolean} true if one of the arguments is truthy and the other is falsy + * @see R.or, R.and + * @example + * + * R.xor(true, true); //=> false + * R.xor(true, false); //=> true + * R.xor(false, true); //=> true + * R.xor(false, false); //=> false + */ +var xor = _curry2(function xor(a, b) { + return Boolean(!a ^ !b); +}); +export default xor; diff --git a/bundler/tests/.cache/deno/b654fe628f534340c69d172782bfff51335db83e.ts b/bundler/tests/.cache/deno/b654fe628f534340c69d172782bfff51335db83e.ts new file mode 100644 index 00000000000..56c678c777b --- /dev/null +++ b/bundler/tests/.cache/deno/b654fe628f534340c69d172782bfff51335db83e.ts @@ -0,0 +1,9 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/printPathArray.js + + +/** + * Build a string describing the path. + */ +export default function printPathArray(path) { + return path.map(key => typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key).join(''); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/b675826af19f90236204fd06eaaae434211b517b.ts b/bundler/tests/.cache/deno/b675826af19f90236204fd06eaaae434211b517b.ts new file mode 100644 index 00000000000..d24ee0fa1b1 --- /dev/null +++ b/bundler/tests/.cache/deno/b675826af19f90236204fd06eaaae434211b517b.ts @@ -0,0 +1,122 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isPassportNumber.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +type CountryCode = + | 'AM' + | 'AR' + | 'AT' + | 'AU' + | 'BE' + | 'BG' + | 'CA' + | 'CH' + | 'CN' + | 'CY' + | 'CZ' + | 'DE' + | 'DK' + | 'DZ' + | 'EE' + | 'ES' + | 'FI' + | 'FR' + | 'GB' + | 'GR' + | 'HR' + | 'HU' + | 'IE' + | 'IN' + | 'IS' + | 'IT' + | 'JP' + | 'KR' + | 'LT' + | 'LU' + | 'LV' + | 'MT' + | 'NL' + | 'PO' + | 'PT' + | 'RO' + | 'SE' + | 'SL' + | 'SK' + | 'TR' + | 'UA' + | 'US'; + +/** + * Reference: + * https://en.wikipedia.org/ -- Wikipedia + * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number + * https://countrycode.org/ -- Country Codes + */ +/** + * @ignore + */ +const passportRegexByCountryCode = { + AM: /^[A-Z]{2}\d{7}$/, // ARMENIA + AR: /^[A-Z]{3}\d{6}$/, // ARGENTINA + AT: /^[A-Z]\d{7}$/, // AUSTRIA + AU: /^[A-Z]\d{7}$/, // AUSTRALIA + BE: /^[A-Z]{2}\d{6}$/, // BELGIUM + BG: /^\d{9}$/, // BULGARIA + CA: /^[A-Z]{2}\d{6}$/, // CANADA + CH: /^[A-Z]\d{7}$/, // SWITZERLAND + CN: /^[GE]\d{8}$/, // CHINA [G=Ordinary, E=Electronic] followed by 8-digits + CY: /^[A-Z](\d{6}|\d{8})$/, // CYPRUS + CZ: /^\d{8}$/, // CZECH REPUBLIC + DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/, // GERMANY + DK: /^\d{9}$/, // DENMARK + DZ: /^\d{9}$/, // ALGERIA + EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/, // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits + ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/, // SPAIN + FI: /^[A-Z]{2}\d{7}$/, // FINLAND + FR: /^\d{2}[A-Z]{2}\d{5}$/, // FRANCE + GB: /^\d{9}$/, // UNITED KINGDOM + GR: /^[A-Z]{2}\d{7}$/, // GREECE + HR: /^\d{9}$/, // CROATIA + HU: /^[A-Z]{2}(\d{6}|\d{7})$/, // HUNGARY + IE: /^[A-Z0-9]{2}\d{7}$/, // IRELAND + IN: /^[A-Z]{1}-?\d{7}$/, // INDIA + IS: /^(A)\d{7}$/, // ICELAND + IT: /^[A-Z0-9]{2}\d{7}$/, // ITALY + JP: /^[A-Z]{2}\d{7}$/, // JAPAN + KR: /^[MS]\d{8}$/, // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports] + LT: /^[A-Z0-9]{8}$/, // LITHUANIA + LU: /^[A-Z0-9]{8}$/, // LUXEMBURG + LV: /^[A-Z0-9]{2}\d{7}$/, // LATVIA + MT: /^\d{7}$/, // MALTA + NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/, // NETHERLANDS + PO: /^[A-Z]{2}\d{7}$/, // POLAND + PT: /^[A-Z]\d{6}$/, // PORTUGAL + RO: /^\d{8,9}$/, // ROMANIA + SE: /^\d{8}$/, // SWEDEN + SL: /^(P)[A-Z]\d{7}$/, // SLOVANIA + SK: /^[0-9A-Z]\d{7}$/, // SLOVAKIA + TR: /^[A-Z]\d{8}$/, // TURKEY + UA: /^[A-Z]{2}\d{6}$/, // UKRAINE + US: /^\d{9}$/, // UNITED STATES +}; + +/** + * Check if str is a valid passport number + * relative to provided ISO Country Code. + * + * @param {string} str + * @param {string} countryCode + * @return {boolean} + */ +export const isPassportNumber = (str: string, countryCode: CountryCode) => { + assertString(str); + /** Remove All Whitespaces, Convert to UPPERCASE */ + const normalizedStr = str.replace(/\s/g, '').toUpperCase(); + + return ( + countryCode.toUpperCase() in passportRegexByCountryCode && + passportRegexByCountryCode[countryCode].test(normalizedStr) + ); +}; diff --git a/bundler/tests/.cache/deno/b6a584c0573e2e222005eef044716416cb824de0.ts b/bundler/tests/.cache/deno/b6a584c0573e2e222005eef044716416cb824de0.ts new file mode 100644 index 00000000000..143c5214227 --- /dev/null +++ b/bundler/tests/.cache/deno/b6a584c0573e2e222005eef044716416cb824de0.ts @@ -0,0 +1,231 @@ +// Loaded from https://deno.land/std@0.84.0/testing/_diff.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +interface FarthestPoint { + y: number; + id: number; +} + +export enum DiffType { + removed = "removed", + common = "common", + added = "added", +} + +export interface DiffResult { + type: DiffType; + value: T; +} + +const REMOVED = 1; +const COMMON = 2; +const ADDED = 3; + +function createCommon(A: T[], B: T[], reverse?: boolean): T[] { + const common = []; + if (A.length === 0 || B.length === 0) return []; + for (let i = 0; i < Math.min(A.length, B.length); i += 1) { + if ( + A[reverse ? A.length - i - 1 : i] === B[reverse ? B.length - i - 1 : i] + ) { + common.push(A[reverse ? A.length - i - 1 : i]); + } else { + return common; + } + } + return common; +} + +/** + * Renders the differences between the actual and expected values + * @param A Actual value + * @param B Expected value + */ +export function diff(A: T[], B: T[]): Array> { + const prefixCommon = createCommon(A, B); + const suffixCommon = createCommon( + A.slice(prefixCommon.length), + B.slice(prefixCommon.length), + true, + ).reverse(); + A = suffixCommon.length + ? A.slice(prefixCommon.length, -suffixCommon.length) + : A.slice(prefixCommon.length); + B = suffixCommon.length + ? B.slice(prefixCommon.length, -suffixCommon.length) + : B.slice(prefixCommon.length); + const swapped = B.length > A.length; + [A, B] = swapped ? [B, A] : [A, B]; + const M = A.length; + const N = B.length; + if (!M && !N && !suffixCommon.length && !prefixCommon.length) return []; + if (!N) { + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...A.map( + (a): DiffResult => ({ + type: swapped ? DiffType.added : DiffType.removed, + value: a, + }), + ), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; + } + const offset = N; + const delta = M - N; + const size = M + N + 1; + const fp = new Array(size).fill({ y: -1 }); + /** + * INFO: + * This buffer is used to save memory and improve performance. + * The first half is used to save route and last half is used to save diff + * type. + * This is because, when I kept new uint8array area to save type,performance + * worsened. + */ + const routes = new Uint32Array((M * N + size + 1) * 2); + const diffTypesPtrOffset = routes.length / 2; + let ptr = 0; + let p = -1; + + function backTrace( + A: T[], + B: T[], + current: FarthestPoint, + swapped: boolean, + ): Array<{ + type: DiffType; + value: T; + }> { + const M = A.length; + const N = B.length; + const result = []; + let a = M - 1; + let b = N - 1; + let j = routes[current.id]; + let type = routes[current.id + diffTypesPtrOffset]; + while (true) { + if (!j && !type) break; + const prev = j; + if (type === REMOVED) { + result.unshift({ + type: swapped ? DiffType.removed : DiffType.added, + value: B[b], + }); + b -= 1; + } else if (type === ADDED) { + result.unshift({ + type: swapped ? DiffType.added : DiffType.removed, + value: A[a], + }); + a -= 1; + } else { + result.unshift({ type: DiffType.common, value: A[a] }); + a -= 1; + b -= 1; + } + j = routes[prev]; + type = routes[prev + diffTypesPtrOffset]; + } + return result; + } + + function createFP( + slide: FarthestPoint, + down: FarthestPoint, + k: number, + M: number, + ): FarthestPoint { + if (slide && slide.y === -1 && down && down.y === -1) { + return { y: 0, id: 0 }; + } + if ( + (down && down.y === -1) || + k === M || + (slide && slide.y) > (down && down.y) + 1 + ) { + const prev = slide.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = ADDED; + return { y: slide.y, id: ptr }; + } else { + const prev = down.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = REMOVED; + return { y: down.y + 1, id: ptr }; + } + } + + function snake( + k: number, + slide: FarthestPoint, + down: FarthestPoint, + _offset: number, + A: T[], + B: T[], + ): FarthestPoint { + const M = A.length; + const N = B.length; + if (k < -N || M < k) return { y: -1, id: -1 }; + const fp = createFP(slide, down, k, M); + while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) { + const prev = fp.id; + ptr++; + fp.id = ptr; + fp.y += 1; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = COMMON; + } + return fp; + } + + while (fp[delta + offset].y < N) { + p = p + 1; + for (let k = -p; k < delta; ++k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + for (let k = delta + p; k > delta; --k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + fp[delta + offset] = snake( + delta, + fp[delta - 1 + offset], + fp[delta + 1 + offset], + offset, + A, + B, + ); + } + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...backTrace(A, B, fp[delta + offset], swapped), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; +} diff --git a/bundler/tests/.cache/deno/b6d2fa7f6a53835ad5226679a241ddffe11402c4.ts b/bundler/tests/.cache/deno/b6d2fa7f6a53835ad5226679a241ddffe11402c4.ts new file mode 100644 index 00000000000..871798e2419 --- /dev/null +++ b/bundler/tests/.cache/deno/b6d2fa7f6a53835ad5226679a241ddffe11402c4.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/whereAny.js + + +import _curry2 from './internal/_curry2.js'; +import _has from './internal/_has.js'; + + +/** + * Takes a spec object and a test object; each of the spec's own properties must be a predicate function. + * Each predicate is applied to the value of the corresponding property of the + * test object. `whereAny` returns true if at least one of the predicates return true, + * false otherwise. + * + * `whereAny` is well suited to declaratively expressing constraints for other + * functions such as [`filter`](#filter) and [`find`](#find). + * + * @func + * @memberOf R + * @category Object + * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.propSatisfies, R.where + * @example + * + * // pred :: Object -> Boolean + * const pred = R.whereAny({ + * a: R.equals('foo'), + * b: R.complement(R.equals('xxx')), + * x: R.gt(R.__, 10), + * y: R.lt(R.__, 20) + * }); + * + * pred({a: 'foo', b: 'xxx', x: 8, y: 34}); //=> true + * pred({a: 'xxx', b: 'xxx', x: 9, y: 21}); //=> false + * pred({a: 'bar', b: 'xxx', x: 10, y: 20}); //=> false + * pred({a: 'foo', b: 'bar', x: 10, y: 20}); //=> true + * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> true + */ +var whereAny = _curry2(function whereAny(spec, testObj) { + for (var prop in spec) { + if (_has(prop, spec) && spec[prop](testObj[prop])) { + return true; + } + } + return false; +}); +export default whereAny; diff --git a/bundler/tests/.cache/deno/b708aa3e2303989a26006e521225c92b5b1305ce.ts b/bundler/tests/.cache/deno/b708aa3e2303989a26006e521225c92b5b1305ce.ts new file mode 100644 index 00000000000..4f7f9a79883 --- /dev/null +++ b/bundler/tests/.cache/deno/b708aa3e2303989a26006e521225c92b5b1305ce.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isArray.js + + +/** + * Tests whether or not an object is an array. + * + * @private + * @param {*} val The object to test. + * @return {Boolean} `true` if `val` is an array, `false` otherwise. + * @example + * + * _isArray([]); //=> true + * _isArray(null); //=> false + * _isArray({}); //=> false + */ +export default Array.isArray || function _isArray(val) { + return (val != null && + val.length >= 0 && + Object.prototype.toString.call(val) === '[object Array]'); +}; diff --git a/bundler/tests/.cache/deno/b7535c9ba13b33d06335169fd4ab52afdfb2f48c.ts b/bundler/tests/.cache/deno/b7535c9ba13b33d06335169fd4ab52afdfb2f48c.ts new file mode 100644 index 00000000000..baaf3cbcef8 --- /dev/null +++ b/bundler/tests/.cache/deno/b7535c9ba13b33d06335169fd4ab52afdfb2f48c.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/collection/commands/update.ts + + +import { Bson } from "../../../deps.ts"; +import { Document, UpdateOptions } from "../../types.ts"; +import { WireProtocol } from "../../protocol/mod.ts"; + +interface UpdateResponse { + ok: number; + nModified: number; + n: number; + upserted?: { + index: number; + _id: Bson.ObjectID; + }[]; +} + +export async function update( + protocol: WireProtocol, + dbName: string, + collectionName: string, + query: Document, + doc: Document, + options?: UpdateOptions, +) { + const { n, nModified, upserted } = await protocol.commandSingle< + UpdateResponse + >(dbName, { + update: collectionName, + updates: [ + { + q: query, + u: doc, + upsert: options?.upsert ?? false, + multi: options?.multi ?? true, + collation: options?.collation, + arrayFilters: options?.arrayFilters, + hint: options?.hint, + }, + ], + writeConcern: options?.writeConcern, + ordered: options?.ordered ?? true, + bypassDocumentValidation: options?.bypassDocumentValidation, + comment: options?.comment, + }); + + return { + upsertedIds: upserted?.map((id) => id._id), + upsertedCount: upserted?.length ?? 0, + modifiedCount: nModified, + matchedCount: n, + }; +} diff --git a/bundler/tests/.cache/deno/b76fb10b423ffc0a8e5fbd4eb2e126631d26f397.ts b/bundler/tests/.cache/deno/b76fb10b423ffc0a8e5fbd4eb2e126631d26f397.ts new file mode 100644 index 00000000000..07964fdba72 --- /dev/null +++ b/bundler/tests/.cache/deno/b76fb10b423ffc0a8e5fbd4eb2e126631d26f397.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xdropLastWhile.js + + +import _curry2 from './_curry2.js'; +import _reduce from './_reduce.js'; +import _xfBase from './_xfBase.js'; + + +function XDropLastWhile(fn, xf) { + this.f = fn; + this.retained = []; + this.xf = xf; +} +XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init; +XDropLastWhile.prototype['@@transducer/result'] = function(result) { + this.retained = null; + return this.xf['@@transducer/result'](result); +}; +XDropLastWhile.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) + ? this.retain(result, input) + : this.flush(result, input); +}; +XDropLastWhile.prototype.flush = function(result, input) { + result = _reduce( + this.xf['@@transducer/step'], + result, + this.retained + ); + this.retained = []; + return this.xf['@@transducer/step'](result, input); +}; +XDropLastWhile.prototype.retain = function(result, input) { + this.retained.push(input); + return result; +}; + +var _xdropLastWhile = _curry2(function _xdropLastWhile(fn, xf) { return new XDropLastWhile(fn, xf); }); +export default _xdropLastWhile; diff --git a/bundler/tests/.cache/deno/b786d34f39415771516f7cbe2d830da7239576d2.ts b/bundler/tests/.cache/deno/b786d34f39415771516f7cbe2d830da7239576d2.ts new file mode 100644 index 00000000000..a7e39ebe7b8 --- /dev/null +++ b/bundler/tests/.cache/deno/b786d34f39415771516f7cbe2d830da7239576d2.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_toISOString.js + + +/** + * Polyfill from . + */ +var pad = function pad(n) { return (n < 10 ? '0' : '') + n; }; + +var _toISOString = typeof Date.prototype.toISOString === 'function' ? + function _toISOString(d) { + return d.toISOString(); + } : + function _toISOString(d) { + return ( + d.getUTCFullYear() + '-' + + pad(d.getUTCMonth() + 1) + '-' + + pad(d.getUTCDate()) + 'T' + + pad(d.getUTCHours()) + ':' + + pad(d.getUTCMinutes()) + ':' + + pad(d.getUTCSeconds()) + '.' + + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z' + ); + }; + +export default _toISOString; diff --git a/bundler/tests/.cache/deno/b79730d47cf622bae941db3e5b1b0508d990c167.ts b/bundler/tests/.cache/deno/b79730d47cf622bae941db3e5b1b0508d990c167.ts new file mode 100644 index 00000000000..1bade3cacb0 --- /dev/null +++ b/bundler/tests/.cache/deno/b79730d47cf622bae941db3e5b1b0508d990c167.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_pipe.js + + +export default function _pipe(f, g) { + return function() { + return g.call(this, f.apply(this, arguments)); + }; +} diff --git a/bundler/tests/.cache/deno/b7c928288561e7455d7c7b6a7d6826dad516aaf8.ts b/bundler/tests/.cache/deno/b7c928288561e7455d7c7b6a7d6826dad516aaf8.ts new file mode 100644 index 00000000000..f0ffc0feafd --- /dev/null +++ b/bundler/tests/.cache/deno/b7c928288561e7455d7c7b6a7d6826dad516aaf8.ts @@ -0,0 +1,85 @@ +// Loaded from https://deno.land/x/oak/mediaTyper.ts + + +/*! + * Adapted directly from media-typer at https://github.com/jshttp/media-typer/ + * which is licensed as follows: + * + * media-typer + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +const SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; +const TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; +const TYPE_REGEXP = + /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + +class MediaType { + constructor( + /** The type of the media type. */ + public type: string, + /** The subtype of the media type. */ + public subtype: string, + /** The optional suffix of the media type. */ + public suffix?: string, + ) {} +} + +/** Given a media type object, return a media type string. + * + * format({ + * type: "text", + * subtype: "html" + * }); // returns "text/html" + */ +export function format(obj: MediaType): string { + const { subtype, suffix, type } = obj; + + if (!TYPE_NAME_REGEXP.test(type)) { + throw new TypeError("Invalid type."); + } + if (!SUBTYPE_NAME_REGEXP.test(subtype)) { + throw new TypeError("Invalid subtype."); + } + + let str = `${type}/${subtype}`; + + if (suffix) { + if (!TYPE_NAME_REGEXP.test(suffix)) { + throw new TypeError("Invalid suffix."); + } + + str += `+${suffix}`; + } + + return str; +} + +/** Given a media type string, return a media type object. + * + * parse("application/json-patch+json"); + * // returns { + * // type: "application", + * // subtype: "json-patch", + * // suffix: "json" + * // } + */ +export function parse(str: string): MediaType { + const match = TYPE_REGEXP.exec(str.toLowerCase()); + + if (!match) { + throw new TypeError("Invalid media type."); + } + + let [, type, subtype] = match; + let suffix: string | undefined; + + const idx = subtype.lastIndexOf("+"); + if (idx !== -1) { + suffix = subtype.substr(idx + 1); + subtype = subtype.substr(0, idx); + } + + return new MediaType(type, subtype, suffix); +} diff --git a/bundler/tests/.cache/deno/b7f288bbab9b0c486e6a0b3c8ea960e61dc2685e.ts b/bundler/tests/.cache/deno/b7f288bbab9b0c486e6a0b3c8ea960e61dc2685e.ts new file mode 100644 index 00000000000..2bd30b4c513 --- /dev/null +++ b/bundler/tests/.cache/deno/b7f288bbab9b0c486e6a0b3c8ea960e61dc2685e.ts @@ -0,0 +1,157 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/rsa/import_key.ts + + +import { encode } from "./../../src/utility/encode.ts"; +import type { JSONWebKey, RSAKeyParams } from "./common.ts"; +import { get_key_size, base64_to_binary } from "../helper.ts"; +import { ber_decode, ber_simple } from "./basic_encoding_rule.ts"; +import { os2ip } from "./primitives.ts"; + +type RSAImportKeyFormat = "auto" | "jwk" | "pem"; +type RSAPublicKeyFormat = [[string, null], [[bigint, bigint]]]; +type RSACertKeyFormat = [ + [number, string, null, null, null, RSAPublicKeyFormat], +]; + +/** + * Automatically detect the key format + * + * @param key + */ +function detect_format(key: string | JSONWebKey): RSAImportKeyFormat { + if (typeof key === "object") { + if (key.kty === "RSA") return "jwk"; + } else if (typeof key === "string") { + if (key.substr(0, "-----".length) === "-----") return "pem"; + } + + throw new TypeError("Unsupported key format"); +} + +/** + * Import from JSON Web Key + * https://tools.ietf.org/html/rfc7517 + * + * @param key PEM encoded key format + */ +function rsa_import_jwk(key: JSONWebKey): RSAKeyParams { + if (typeof key !== "object") throw new TypeError("Invalid JWK format"); + if (!key.n) throw new TypeError("RSA key requires n"); + + const n = os2ip(encode.base64url(key.n)); + + return { + e: key.e ? os2ip(encode.base64url(key.e)) : undefined, + n: os2ip(encode.base64url(key.n)), + d: key.d ? os2ip(encode.base64url(key.d)) : undefined, + p: key.p ? os2ip(encode.base64url(key.p)) : undefined, + q: key.q ? os2ip(encode.base64url(key.q)) : undefined, + dp: key.dp ? os2ip(encode.base64url(key.dp)) : undefined, + dq: key.dq ? os2ip(encode.base64url(key.dq)) : undefined, + qi: key.qi ? os2ip(encode.base64url(key.qi)) : undefined, + length: get_key_size(n), + }; +} + +/** + * + * https://tools.ietf.org/html/rfc5280#section-4.1 + * + * @param key + */ +function rsa_import_pem_cert(key: string): RSAKeyParams { + const trimmedKey = key.substr(27, key.length - 53); + const parseKey = ber_simple( + ber_decode(base64_to_binary(trimmedKey)), + ) as RSACertKeyFormat; + + return { + length: get_key_size(parseKey[0][5][1][0][0]), + n: parseKey[0][5][1][0][0], + e: parseKey[0][5][1][0][1], + }; +} + +/** + * Import private key from Privacy-Enhanced Mail (PEM) format + * https://tools.ietf.org/html/rfc5208 + * + * @param key PEM encoded key format + */ +function rsa_import_pem_private(key: string): RSAKeyParams { + const trimmedKey = key.substr(31, key.length - 61); + const parseKey = ber_simple( + ber_decode(base64_to_binary(trimmedKey)), + ) as bigint[]; + + return { + n: parseKey[1], + d: parseKey[3], + e: parseKey[2], + p: parseKey[4], + q: parseKey[5], + dp: parseKey[6], + dq: parseKey[7], + qi: parseKey[8], + length: get_key_size(parseKey[1]), + }; +} + +/** + * Import public key from Privacy-Enhanced Mail (PEM) format + * https://tools.ietf.org/html/rfc5208 + * + * @param key PEM encoded key format + */ +function rsa_import_pem_public(key: string): RSAKeyParams { + const trimmedKey = key.substr(26, key.length - 51); + const parseKey = ber_simple( + ber_decode(base64_to_binary(trimmedKey)), + ) as RSAPublicKeyFormat; + + return { + length: get_key_size(parseKey[1][0][0]), + n: parseKey[1][0][0], + e: parseKey[1][0][1], + }; +} + +/** + * Import key from Privacy-Enhanced Mail (PEM) format + * https://tools.ietf.org/html/rfc5208 + * + * @param key PEM encoded key format + */ +function rsa_import_pem(key: string): RSAKeyParams { + if (typeof key !== "string") throw new TypeError("PEM key must be string"); + + const maps: [string, (key: string) => RSAKeyParams][] = [ + ["-----BEGIN RSA PRIVATE KEY-----", rsa_import_pem_private], + ["-----BEGIN PUBLIC KEY-----", rsa_import_pem_public], + ["-----BEGIN CERTIFICATE-----", rsa_import_pem_cert], + ]; + + for (const [prefix, func] of maps) { + if (key.indexOf(prefix) === 0) return func(key); + } + + throw new TypeError("Unsupported key format"); +} + +/** + * Import other RSA key format to our RSA key format + * + * @param key + * @param format + */ +export function rsa_import_key( + key: string | JSONWebKey, + format: RSAImportKeyFormat, +): RSAKeyParams { + const finalFormat = format === "auto" ? detect_format(key) : format; + + if (finalFormat === "jwk") return rsa_import_jwk(key as JSONWebKey); + if (finalFormat === "pem") return rsa_import_pem(key as string); + + throw new TypeError("Unsupported key format"); +} diff --git a/bundler/tests/.cache/deno/b7fba0ec9aeddbf762691643b51aab6e01fc60e0.ts b/bundler/tests/.cache/deno/b7fba0ec9aeddbf762691643b51aab6e01fc60e0.ts new file mode 100644 index 00000000000..625c63cf059 --- /dev/null +++ b/bundler/tests/.cache/deno/b7fba0ec9aeddbf762691643b51aab6e01fc60e0.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unary.js + + +import _curry1 from './internal/_curry1.js'; +import nAry from './nAry.js'; + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 1 parameter. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (a -> b -> c -> ... -> z) -> (a -> z) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 1. + * @see R.binary, R.nAry + * @example + * + * const takesTwoArgs = function(a, b) { + * return [a, b]; + * }; + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * const takesOneArg = R.unary(takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only 1 argument is passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.unary(f)(a, b, c) = f(a) + */ +var unary = _curry1(function unary(fn) { + return nAry(1, fn); +}); +export default unary; diff --git a/bundler/tests/.cache/deno/b89cb7875e5a21b59d5170a6acebc13d422a83ac.ts b/bundler/tests/.cache/deno/b89cb7875e5a21b59d5170a6acebc13d422a83ac.ts new file mode 100644 index 00000000000..83acc3309b8 --- /dev/null +++ b/bundler/tests/.cache/deno/b89cb7875e5a21b59d5170a6acebc13d422a83ac.ts @@ -0,0 +1,151 @@ +// Loaded from https://deno.land/x/mysql/src/client.ts + + +import { Connection, ConnectionState, ExecuteResult } from "./connection.ts"; +import { ConnectionPool, PoolConnection } from "./pool.ts"; +import { log } from "./logger.ts"; + +/** + * Client Config + */ +export interface ClientConfig { + /** Database hostname */ + hostname?: string; + /** Database UNIX domain socket path. When used, `hostname` and `port` are ignored. */ + socketPath?: string; + /** Database username */ + username?: string; + /** Database password */ + password?: string; + /** Database port */ + port?: number; + /** Database name */ + db?: string; + /** Whether to display packet debugging information */ + debug?: boolean; + /** Connection read timeout (default: 30 seconds) */ + timeout?: number; + /** Connection pool size (default: 1) */ + poolSize?: number; + /** Connection pool idle timeout in microseconds (default: 4 hours) */ + idleTimeout?: number; + /** charset */ + charset?: string; +} + +/** Transaction processor */ +export interface TransactionProcessor { + (connection: Connection): Promise; +} + +/** + * MySQL client + */ +export class Client { + config: ClientConfig = {}; + private _pool?: ConnectionPool; + + private async createConnection(): Promise { + let connection = new PoolConnection(this.config); + await connection.connect(); + return connection; + } + + /** get pool info */ + get pool() { + return this._pool?.info; + } + + /** + * connect to database + * @param config config for client + * @returns Clinet instance + */ + async connect(config: ClientConfig): Promise { + this.config = { + hostname: "127.0.0.1", + username: "root", + port: 3306, + poolSize: 1, + timeout: 30 * 1000, + idleTimeout: 4 * 3600 * 1000, + ...config, + }; + Object.freeze(this.config); + this._pool = new ConnectionPool( + this.config.poolSize || 10, + this.createConnection.bind(this), + ); + return this; + } + + /** + * excute query sql + * @param sql query sql string + * @param params query params + */ + async query(sql: string, params?: any[]): Promise { + return await this.useConnection(async (connection) => { + return await connection.query(sql, params); + }); + } + + /** + * excute sql + * @param sql sql string + * @param params query params + */ + async execute(sql: string, params?: any[]): Promise { + return await this.useConnection(async (connection) => { + return await connection.execute(sql, params); + }); + } + + async useConnection(fn: (conn: Connection) => Promise) { + if (!this._pool) { + throw new Error("Unconnected"); + } + const connection = await this._pool.pop(); + try { + return await fn(connection); + } finally { + if (connection.state == ConnectionState.CLOSED) { + connection.removeFromPool(); + } else { + connection.returnToPool(); + } + } + } + + /** + * Execute a transaction process, and the transaction successfully + * returns the return value of the transaction process + * @param processor transation processor + */ + async transaction(processor: TransactionProcessor): Promise { + return await this.useConnection(async (connection) => { + try { + await connection.execute("BEGIN"); + const result = await processor(connection); + await connection.execute("COMMIT"); + return result; + } catch (error) { + if (connection.state == ConnectionState.CONNECTED) { + log.info(`ROLLBACK: ${error.message}`); + await connection.execute("ROLLBACK"); + } + throw error; + } + }); + } + + /** + * close connection + */ + async close() { + if (this._pool) { + this._pool.close(); + this._pool = undefined; + } + } +} diff --git a/bundler/tests/.cache/deno/b8b7f34467fdf7fc6ae2fd4621a194b88066c1d8.ts b/bundler/tests/.cache/deno/b8b7f34467fdf7fc6ae2fd4621a194b88066c1d8.ts new file mode 100644 index 00000000000..a220a4f2d94 --- /dev/null +++ b/bundler/tests/.cache/deno/b8b7f34467fdf7fc6ae2fd4621a194b88066c1d8.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/mysql/src/auth.ts + + +import { createHash, encode, SupportedAlgorithm } from "../deps.ts"; +import { xor } from "./util.ts"; + +function hash(algorithm: SupportedAlgorithm, data: Uint8Array): Uint8Array { + return new Uint8Array(createHash(algorithm).update(data).digest()); +} + +function mysqlNativePassword(password: string, seed: Uint8Array): Uint8Array { + const pwd1 = hash("sha1", encode(password)); + const pwd2 = hash("sha1", pwd1); + + let seedAndPwd2 = new Uint8Array(seed.length + pwd2.length); + seedAndPwd2.set(seed); + seedAndPwd2.set(pwd2, seed.length); + seedAndPwd2 = hash("sha1", seedAndPwd2); + + return xor(seedAndPwd2, pwd1); +} + +function cachingSha2Password(password: string, seed: Uint8Array): Uint8Array { + const stage1 = hash("sha256", encode(password)); + const stage2 = hash("sha256", stage1); + const stage3 = hash("sha256", Uint8Array.from([...stage2, ...seed])); + return xor(stage1, stage3); +} + +export default function auth( + authPluginName: string, + password: string, + seed: Uint8Array, +) { + switch (authPluginName) { + case "mysql_native_password": + return mysqlNativePassword(password, seed); + + case "caching_sha2_password": + return cachingSha2Password(password, seed); + default: + throw new Error("Not supported"); + } +} diff --git a/bundler/tests/.cache/deno/b9826eb439990f095330b27e4d1e482e027286a6.ts b/bundler/tests/.cache/deno/b9826eb439990f095330b27e4d1e482e027286a6.ts new file mode 100644 index 00000000000..50c01e55d94 --- /dev/null +++ b/bundler/tests/.cache/deno/b9826eb439990f095330b27e4d1e482e027286a6.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/invert.js + + +import _curry1 from './internal/_curry1.js'; +import _has from './internal/_has.js'; +import keys from './keys.js'; + + +/** + * Same as [`R.invertObj`](#invertObj), however this accounts for objects with + * duplicate values by putting the values into an array. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: [ s, ... ]} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object with keys in an array. + * @see R.invertObj + * @example + * + * const raceResultsByFirstName = { + * first: 'alice', + * second: 'jake', + * third: 'alice', + * }; + * R.invert(raceResultsByFirstName); + * //=> { 'alice': ['first', 'third'], 'jake':['second'] } + */ +var invert = _curry1(function invert(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + var val = obj[key]; + var list = _has(val, out) ? out[val] : (out[val] = []); + list[list.length] = key; + idx += 1; + } + return out; +}); +export default invert; diff --git a/bundler/tests/.cache/deno/ba20bb778aa21c2e0c11377a881e264e52df3bb4.ts b/bundler/tests/.cache/deno/ba20bb778aa21c2e0c11377a881e264e52df3bb4.ts new file mode 100644 index 00000000000..ea5715ea1b3 --- /dev/null +++ b/bundler/tests/.cache/deno/ba20bb778aa21c2e0c11377a881e264e52df3bb4.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.85.0/fs/_util.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; + +/** + * Test whether or not `dest` is a sub-directory of `src` + * @param src src file path + * @param dest dest file path + * @param sep path separator + */ +export function isSubdir( + src: string, + dest: string, + sep: string = path.sep, +): boolean { + if (src === dest) { + return false; + } + const srcArray = src.split(sep); + const destArray = dest.split(sep); + return srcArray.every((current, i) => destArray[i] === current); +} + +export type PathType = "file" | "dir" | "symlink"; + +/** + * Get a human readable file type string. + * + * @param fileInfo A FileInfo describes a file and is returned by `stat`, + * `lstat` + */ +export function getFileInfoType(fileInfo: Deno.FileInfo): PathType | undefined { + return fileInfo.isFile + ? "file" + : fileInfo.isDirectory + ? "dir" + : fileInfo.isSymlink + ? "symlink" + : undefined; +} diff --git a/bundler/tests/.cache/deno/ba2f2436bf8e4f3a19617fef400c6f27d1717586.ts b/bundler/tests/.cache/deno/ba2f2436bf8e4f3a19617fef400c6f27d1717586.ts new file mode 100644 index 00000000000..ee2d9c4bd7a --- /dev/null +++ b/bundler/tests/.cache/deno/ba2f2436bf8e4f3a19617fef400c6f27d1717586.ts @@ -0,0 +1,66 @@ +// Loaded from https://deno.land/std/fs/move.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { exists, existsSync } from "./exists.ts"; +import { isSubdir } from "./_util.ts"; + +interface MoveOptions { + overwrite?: boolean; +} + +/** Moves a file or directory */ +export async function move( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): Promise { + const srcStat = await Deno.stat(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (await exists(dest)) { + await Deno.remove(dest, { recursive: true }); + } + } else { + if (await exists(dest)) { + throw new Error("dest already exists."); + } + } + + await Deno.rename(src, dest); + + return; +} + +/** Moves a file or directory synchronously */ +export function moveSync( + src: string, + dest: string, + { overwrite = false }: MoveOptions = {}, +): void { + const srcStat = Deno.statSync(src); + + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error( + `Cannot move '${src}' to a subdirectory of itself, '${dest}'.`, + ); + } + + if (overwrite) { + if (existsSync(dest)) { + Deno.removeSync(dest, { recursive: true }); + } + } else { + if (existsSync(dest)) { + throw new Error("dest already exists."); + } + } + + Deno.renameSync(src, dest); +} diff --git a/bundler/tests/.cache/deno/ba63fd022ea28b5ddb53c05710432e9cde5ad3f8.ts b/bundler/tests/.cache/deno/ba63fd022ea28b5ddb53c05710432e9cde5ad3f8.ts new file mode 100644 index 00000000000..7ffaa16edb4 --- /dev/null +++ b/bundler/tests/.cache/deno/ba63fd022ea28b5ddb53c05710432e9cde5ad3f8.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/ba99f91525b888faf4fd5be47ee962e60d54ee9f.ts b/bundler/tests/.cache/deno/ba99f91525b888faf4fd5be47ee962e60d54ee9f.ts new file mode 100644 index 00000000000..9217a1f4f05 --- /dev/null +++ b/bundler/tests/.cache/deno/ba99f91525b888faf4fd5be47ee962e60d54ee9f.ts @@ -0,0 +1,162 @@ +// Loaded from https://deno.land/std@0.73.0/bytes/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from a. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + */ +export function findIndex(source: Uint8Array, pat: Uint8Array): number { + const s = pat[0]; + for (let i = 0; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from a. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + */ +export function findLastIndex(source: Uint8Array, pat: Uint8Array): number { + const e = pat[pat.length - 1]; + for (let i = source.length - 1; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param source first array to check equality + * @param match second array to check equality + */ +export function equal(source: Uint8Array, match: Uint8Array): boolean { + if (source.length !== match.length) return false; + for (let i = 0; i < match.length; i++) { + if (source[i] !== match[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source srouce array + * @param prefix prefix array to check in source + */ +export function hasPrefix(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function hasSuffix(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new Error("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copyBytes(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copyBytes(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate two binary arrays and return new one. + * @param origin origin array to concatenate + * @param b array to concatenate with origin + */ +export function concat(origin: Uint8Array, b: Uint8Array): Uint8Array { + const output = new Uint8Array(origin.length + b.length); + output.set(origin, 0); + output.set(b, origin.length); + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return findIndex(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copyBytes(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/babb61cb0e87796bc9d4e3209ae47044374d7054.ts b/bundler/tests/.cache/deno/babb61cb0e87796bc9d4e3209ae47044374d7054.ts new file mode 100644 index 00000000000..f674c519dc5 --- /dev/null +++ b/bundler/tests/.cache/deno/babb61cb0e87796bc9d4e3209ae47044374d7054.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_dispatchable.js + + +import _isArray from './_isArray.js'; +import _isTransformer from './_isTransformer.js'; + + +/** + * Returns a function that dispatches with different strategies based on the + * object in list position (last argument). If it is an array, executes [fn]. + * Otherwise, if it has a function with one of the given method names, it will + * execute that function (functor case). Otherwise, if it is a transformer, + * uses transducer created by [transducerCreator] to return a new transformer + * (transducer case). + * Otherwise, it will default to executing [fn]. + * + * @private + * @param {Array} methodNames properties to check for a custom implementation + * @param {Function} transducerCreator transducer factory if object is transformer + * @param {Function} fn default ramda implementation + * @return {Function} A function that dispatches on object in list position + */ +export default function _dispatchable(methodNames, transducerCreator, fn) { + return function() { + if (arguments.length === 0) { + return fn(); + } + var obj = arguments[arguments.length - 1]; + if (!_isArray(obj)) { + var idx = 0; + while (idx < methodNames.length) { + if (typeof obj[methodNames[idx]] === 'function') { + return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1)); + } + idx += 1; + } + if (_isTransformer(obj)) { + var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1)); + return transducer(obj); + } + } + return fn.apply(this, arguments); + }; +} diff --git a/bundler/tests/.cache/deno/baf9f1beac9067e787041e0d18537f73dd1e5b5e.ts b/bundler/tests/.cache/deno/baf9f1beac9067e787041e0d18537f73dd1e5b5e.ts new file mode 100644 index 00000000000..27038388714 --- /dev/null +++ b/bundler/tests/.cache/deno/baf9f1beac9067e787041e0d18537f73dd1e5b5e.ts @@ -0,0 +1,56 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/take.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xtake from './internal/_xtake.js'; +import slice from './slice.js'; + + +/** + * Returns the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `take` method). + * + * Dispatches to the `take` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} + * @see R.drop + * @example + * + * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(3, 'ramda'); //=> 'ram' + * + * const personnel = [ + * 'Dave Brubeck', + * 'Paul Desmond', + * 'Eugene Wright', + * 'Joe Morello', + * 'Gerry Mulligan', + * 'Bob Bates', + * 'Joe Dodge', + * 'Ron Crotty' + * ]; + * + * const takeFive = R.take(5); + * takeFive(personnel); + * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan'] + * @symb R.take(-1, [a, b]) = [a, b] + * @symb R.take(0, [a, b]) = [] + * @symb R.take(1, [a, b]) = [a] + * @symb R.take(2, [a, b]) = [a, b] + */ +var take = _curry2(_dispatchable(['take'], _xtake, function take(n, xs) { + return slice(0, n < 0 ? Infinity : n, xs); +})); +export default take; diff --git a/bundler/tests/.cache/deno/bb6867af5d41b661e35987b3b1cbe5d7c968b500.ts b/bundler/tests/.cache/deno/bb6867af5d41b661e35987b3b1cbe5d7c968b500.ts new file mode 100644 index 00000000000..097f8f0439d --- /dev/null +++ b/bundler/tests/.cache/deno/bb6867af5d41b661e35987b3b1cbe5d7c968b500.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/toObjMap.js + + +import objectEntries from '../polyfills/objectEntries.js'; +export default function toObjMap(obj) { + /* eslint-enable no-redeclare */ + if (Object.getPrototypeOf(obj) === null) { + return obj; + } + + const map = Object.create(null); + + for (const [key, value] of objectEntries(obj)) { + map[key] = value; + } + + return map; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/bbb05c5b835d07cac75f0883a39c9743152e5cfd.ts b/bundler/tests/.cache/deno/bbb05c5b835d07cac75f0883a39c9743152e5cfd.ts new file mode 100644 index 00000000000..edc9db453fa --- /dev/null +++ b/bundler/tests/.cache/deno/bbb05c5b835d07cac75f0883a39c9743152e5cfd.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/x/case@v2.1.0/lowerCase.ts + + +/** + * via: https://github.com/blakeembrey/lower-case + */ + +import { LanguageSpecific } from "./types.ts"; + +/** + * Special language-specific overrides. + * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt + */ +const LANGUAGES: LanguageSpecific = { + tr: { + regexp: /\u0130|\u0049|\u0049\u0307/g, + map: { + İ: "\u0069", + I: "\u0131", + İ: "\u0069", + }, + }, + az: { + regexp: /[\u0130]/g, + map: { + İ: "\u0069", + I: "\u0131", + İ: "\u0069", + }, + }, + lt: { + regexp: /[\u0049\u004A\u012E\u00CC\u00CD\u0128]/g, + map: { + I: "\u0069\u0307", + J: "\u006A\u0307", + Į: "\u012F\u0307", + Ì: "\u0069\u0307\u0300", + Í: "\u0069\u0307\u0301", + Ĩ: "\u0069\u0307\u0303", + }, + }, +}; + +/** + * Lowercase a string. + * + * @param {String} str + * @return {String} + */ +export default function (str: string, locale?: string): string { + str = str == null ? "" : String(str); + + if (!locale) { + return str.toLowerCase(); + } + + const lang = LANGUAGES[locale]; + + if (lang) { + str = str.replace(lang.regexp, (m: string): string => lang.map[m]); + } + + return str.toLowerCase(); +} diff --git a/bundler/tests/.cache/deno/bbeaa516044c946762cb7d9cd267f17e372477a7.ts b/bundler/tests/.cache/deno/bbeaa516044c946762cb7d9cd267f17e372477a7.ts new file mode 100644 index 00000000000..835e978e825 --- /dev/null +++ b/bundler/tests/.cache/deno/bbeaa516044c946762cb7d9cd267f17e372477a7.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/splitWhen.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Takes a list and a predicate and returns a pair of lists with the following properties: + * + * - the result of concatenating the two output lists is equivalent to the input list; + * - none of the elements of the first output list satisfies the predicate; and + * - if the second output list is non-empty, its first element satisfies the predicate. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [[a], [a]] + * @param {Function} pred The predicate that determines where the array is split. + * @param {Array} list The array to be split. + * @return {Array} + * @example + * + * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] + */ +var splitWhen = _curry2(function splitWhen(pred, list) { + var idx = 0; + var len = list.length; + var prefix = []; + + while (idx < len && !pred(list[idx])) { + prefix.push(list[idx]); + idx += 1; + } + + return [prefix, Array.prototype.slice.call(list, idx)]; +}); +export default splitWhen; diff --git a/bundler/tests/.cache/deno/bc2137b462f10687e55924368c59d731a42fc5ed.ts b/bundler/tests/.cache/deno/bc2137b462f10687e55924368c59d731a42fc5ed.ts new file mode 100644 index 00000000000..8fb16b90a9d --- /dev/null +++ b/bundler/tests/.cache/deno/bc2137b462f10687e55924368c59d731a42fc5ed.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/keyMap.js + + +/** + * Creates a keyed JS object from an array, given a function to produce the keys + * for each value in the array. + * + * This provides a convenient lookup for the array items if the key function + * produces unique results. + * + * const phoneBook = [ + * { name: 'Jon', num: '555-1234' }, + * { name: 'Jenny', num: '867-5309' } + * ] + * + * // { Jon: { name: 'Jon', num: '555-1234' }, + * // Jenny: { name: 'Jenny', num: '867-5309' } } + * const entriesByName = keyMap( + * phoneBook, + * entry => entry.name + * ) + * + * // { name: 'Jenny', num: '857-6309' } + * const jennyEntry = entriesByName['Jenny'] + * + */ +export default function keyMap(list, keyFn) { + return list.reduce((map, item) => { + map[keyFn(item)] = item; + return map; + }, Object.create(null)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/bc2a46e068dbf4e6aab4080efb335923e28821cc.ts b/bundler/tests/.cache/deno/bc2a46e068dbf4e6aab4080efb335923e28821cc.ts new file mode 100644 index 00000000000..919784beed8 --- /dev/null +++ b/bundler/tests/.cache/deno/bc2a46e068dbf4e6aab4080efb335923e28821cc.ts @@ -0,0 +1,96 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/protocol.ts + + +import { assert, BufReader, Deferred, deferred } from "../../deps.ts"; +import { MongoError, MongoErrorInfo } from "../error.ts"; +import { Document } from "../types.ts"; +import { handshake } from "./handshake.ts"; +import { parseHeader } from "./header.ts"; +import { deserializeMessage, Message, serializeMessage } from "./message.ts"; + +type Socket = Deno.Reader & Deno.Writer; + +let nextRequestId = 0; + +export class WireProtocol { + #socket: Socket; + #pending = false; + #pendingOps: Map> = new Map(); + #reader: BufReader; + + #connectionId: number = 0; + + constructor(socket: Socket) { + this.#socket = socket; + this.#reader = new BufReader(this.#socket); + } + + async connect() { + const { connectionId } = await handshake(this); + this.#connectionId = connectionId; + } + + async commandSingle(db: string, body: Document): Promise { + const [doc] = await this.command(db, body); + const maybeError = doc as MongoErrorInfo; + if (maybeError.ok === 0) { + throw new MongoError(maybeError); + } + return doc as T; + } + + async command(db: string, body: Document): Promise { + const requestId = nextRequestId++; + const chunks = serializeMessage({ + requestId, + responseTo: 0, + sections: [ + { + document: { + ...body, + $db: db, + }, + }, + ], + }); + + for (const chunk of chunks) { + await Deno.writeAll(this.#socket, chunk); + } + + this.#pendingOps.set(requestId, deferred()); + this.receive(); + const message = await this.#pendingOps.get(requestId); + + let documents: T[] = []; + + message?.sections.forEach((section) => { + if ("document" in section) { + documents.push(section.document as T); + } else { + documents = documents.concat(section.documents as T[]); + } + }); + + return documents; + } + + private async receive() { + if (this.#pending) return; + this.#pending = true; + while (this.#pendingOps.size > 0) { + const headerBuffer = await this.#reader.readFull(new Uint8Array(16)); + assert(headerBuffer); + const header = parseHeader(headerBuffer!); + const bodyBuffer = await this.#reader.readFull( + new Uint8Array(header.messageLength - 16), + ); + assert(bodyBuffer); + const reply = deserializeMessage(header, bodyBuffer!); + const pendingMessage = this.#pendingOps.get(header.responseTo); + this.#pendingOps.delete(header.responseTo); + pendingMessage?.resolve(reply); + } + this.#pending = false; + } +} diff --git a/bundler/tests/.cache/deno/bc3120b7bfc5fe89efe08f45ccbcfc4c43d19422.ts b/bundler/tests/.cache/deno/bc3120b7bfc5fe89efe08f45ccbcfc4c43d19422.ts new file mode 100644 index 00000000000..de87653f0a7 --- /dev/null +++ b/bundler/tests/.cache/deno/bc3120b7bfc5fe89efe08f45ccbcfc4c43d19422.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.84.0/path/common.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/bc60eabdeb55ac9437e7e9ffd585e41cc9e22cf2.ts b/bundler/tests/.cache/deno/bc60eabdeb55ac9437e7e9ffd585e41cc9e22cf2.ts new file mode 100644 index 00000000000..4a3577c0244 --- /dev/null +++ b/bundler/tests/.cache/deno/bc60eabdeb55ac9437e7e9ffd585e41cc9e22cf2.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/model-pivot.ts + + +import { Model, ModelSchema } from "./model.ts"; + +export type PivotModelSchema = typeof PivotModel; + +export class PivotModel extends Model { + static _pivotsModels: { [modelName: string]: ModelSchema } = {}; + static _pivotsFields: { [modelName: string]: string } = {}; +} diff --git a/bundler/tests/.cache/deno/bc84e9245a74ba5977c1cf3f13c82a055fb0810f.ts b/bundler/tests/.cache/deno/bc84e9245a74ba5977c1cf3f13c82a055fb0810f.ts new file mode 100644 index 00000000000..12d11e61352 --- /dev/null +++ b/bundler/tests/.cache/deno/bc84e9245a74ba5977c1cf3f13c82a055fb0810f.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueOperationTypesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique operation types + * + * A GraphQL document is only valid if it has only one type per operation. + */ +export function UniqueOperationTypesRule(context) { + const schema = context.getSchema(); + const definedOperationTypes = Object.create(null); + const existingOperationTypes = schema ? { + query: schema.getQueryType(), + mutation: schema.getMutationType(), + subscription: schema.getSubscriptionType() + } : {}; + return { + SchemaDefinition: checkOperationTypes, + SchemaExtension: checkOperationTypes + }; + + function checkOperationTypes(node) { + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + const operationTypesNodes = node.operationTypes ?? []; + + for (const operationType of operationTypesNodes) { + const operation = operationType.operation; + const alreadyDefinedOperationType = definedOperationTypes[operation]; + + if (existingOperationTypes[operation]) { + context.reportError(new GraphQLError(`Type for ${operation} already defined in the schema. It cannot be redefined.`, operationType)); + } else if (alreadyDefinedOperationType) { + context.reportError(new GraphQLError(`There can be only one ${operation} type in schema.`, [alreadyDefinedOperationType, operationType])); + } else { + definedOperationTypes[operation] = operationType; + } + } + + return false; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/bcad9def703f3f8ca75d0c9f9dd5aee5ee9f54da.ts b/bundler/tests/.cache/deno/bcad9def703f3f8ca75d0c9f9dd5aee5ee9f54da.ts new file mode 100644 index 00000000000..394412a1402 --- /dev/null +++ b/bundler/tests/.cache/deno/bcad9def703f3f8ca75d0c9f9dd5aee5ee9f54da.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { SchemaDefinition } from "./schema.ts"; +import { DEFAULT_SCHEMA } from "./schema/mod.ts"; + +export abstract class State { + constructor(public schema: SchemaDefinition = DEFAULT_SCHEMA) {} +} diff --git a/bundler/tests/.cache/deno/bcccd34eee4136df7d2d2b9eaa3904a8da44371a.ts b/bundler/tests/.cache/deno/bcccd34eee4136df7d2d2b9eaa3904a8da44371a.ts new file mode 100644 index 00000000000..877a66899da --- /dev/null +++ b/bundler/tests/.cache/deno/bcccd34eee4136df7d2d2b9eaa3904a8da44371a.ts @@ -0,0 +1,73 @@ +// Loaded from https://deno.land/std@0.77.0/fs/ensure_symlink.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { exists, existsSync } from "./exists.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export async function ensureSymlink(src: string, dest: string): Promise { + const srcStatInfo = await Deno.lstat(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (await exists(dest)) { + const destStatInfo = await Deno.lstat(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + await ensureDir(path.dirname(dest)); + + if (Deno.build.os === "windows") { + await Deno.symlink(src, dest, { + type: srcFilePathType === "dir" ? "dir" : "file", + }); + } else { + await Deno.symlink(src, dest); + } +} + +/** + * Ensures that the link exists. + * If the directory structure does not exist, it is created. + * + * @param src the source file path + * @param dest the destination link path + */ +export function ensureSymlinkSync(src: string, dest: string): void { + const srcStatInfo = Deno.lstatSync(src); + const srcFilePathType = getFileInfoType(srcStatInfo); + + if (existsSync(dest)) { + const destStatInfo = Deno.lstatSync(dest); + const destFilePathType = getFileInfoType(destStatInfo); + if (destFilePathType !== "symlink") { + throw new Error( + `Ensure path exists, expected 'symlink', got '${destFilePathType}'`, + ); + } + return; + } + + ensureDirSync(path.dirname(dest)); + if (Deno.build.os === "windows") { + Deno.symlinkSync(src, dest, { + type: srcFilePathType === "dir" ? "dir" : "file", + }); + } else { + Deno.symlinkSync(src, dest); + } +} diff --git a/bundler/tests/.cache/deno/bcd0b5ee8ca721faa0cff7d88c03c20988982306.ts b/bundler/tests/.cache/deno/bcd0b5ee8ca721faa0cff7d88c03c20988982306.ts new file mode 100644 index 00000000000..6087ddfea14 --- /dev/null +++ b/bundler/tests/.cache/deno/bcd0b5ee8ca721faa0cff7d88c03c20988982306.ts @@ -0,0 +1,373 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/multipart.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import { BufReader, ReadLineResult } from "./buf_reader.ts"; +import { getFilename } from "./content_disposition.ts"; +import { equal, extension } from "./deps.ts"; +import { readHeaders, toParamRegExp, unquote } from "./headers.ts"; +import { httpErrors } from "./httpError.ts"; +import { getRandomFilename, skipLWSPChar, stripEol } from "./util.ts"; + +const decoder = new TextDecoder(); +const encoder = new TextEncoder(); + +const BOUNDARY_PARAM_REGEX = toParamRegExp("boundary", "i"); +const DEFAULT_BUFFER_SIZE = 1048576; // 1mb +const DEFAULT_MAX_FILE_SIZE = 10485760; // 10mb +const DEFAULT_MAX_SIZE = 0; // all files written to disc +const NAME_PARAM_REGEX = toParamRegExp("name", "i"); + +export interface FormDataBody { + /** A record of form parts where the key was the `name` of the part and the + * value was the value of the part. This record does not include any files + * that were part of the form data. + * + * *Note*: Duplicate names are not included in this record, if there are + * duplicates, the last value will be the value that is set here. If there + * is a possibility of duplicate values, use the `.stream()` method to + * iterate over the values. */ + fields: Record; + + /** An array of any files that were part of the form data. */ + files?: FormDataFile[]; +} + +/** A representation of a file that has been read from a form data body. */ +export type FormDataFile = { + /** When the file has not been written out to disc, the contents of the file + * as a `Uint8Array`. */ + content?: Uint8Array; + + /** The content type og the form data file. */ + contentType: string; + + /** When the file has been written out to disc, the full path to the file. */ + filename?: string; + + /** The `name` that was assigned to the form data file. */ + name: string; + + /** The `filename` that was provided in the form data file. */ + originalName: string; +}; + +export interface FormDataReadOptions { + /** The size of the buffer to read from the request body at a single time. + * This defaults to 1mb. */ + bufferSize?: number; + + /** The maximum file size that can be handled. This defaults to 10MB when + * not specified. This is to try to avoid DOS attacks where someone would + * continue to try to send a "file" continuously until a host limit was + * reached crashing the server or the host. */ + maxFileSize?: number; + + /** The maximum size of a file to hold in memory, and not write to disk. This + * defaults to `0`, so that all multipart form files are written to disk. + * When set to a positive integer, if the form data file is smaller, it will + * be retained in memory and available in the `.content` property of the + * `FormDataFile` object. If the file exceeds the `maxSize` it will be + * written to disk and the `filename` file will contain the full path to the + * output file. */ + maxSize?: number; + + /** When writing form data files to disk, the output path. This will default + * to a temporary path generated by `Deno.makeTempDir()`. */ + outPath?: string; + + /** When a form data file is written to disk, it will be generated with a + * random filename and have an extension based off the content type for the + * file. `prefix` can be specified though to prepend to the file name. */ + prefix?: string; +} + +interface PartsOptions { + body: BufReader; + final: Uint8Array; + maxFileSize: number; + maxSize: number; + outPath?: string; + part: Uint8Array; + prefix?: string; +} + +function append(a: Uint8Array, b: Uint8Array): Uint8Array { + const ab = new Uint8Array(a.length + b.length); + ab.set(a, 0); + ab.set(b, a.length); + return ab; +} + +function isEqual(a: Uint8Array, b: Uint8Array): boolean { + return equal(skipLWSPChar(a), b); +} + +async function readToStartOrEnd( + body: BufReader, + start: Uint8Array, + end: Uint8Array, +): Promise { + let lineResult: ReadLineResult | null; + while ((lineResult = await body.readLine())) { + if (isEqual(lineResult.bytes, start)) { + return true; + } + if (isEqual(lineResult.bytes, end)) { + return false; + } + } + throw new httpErrors.BadRequest( + "Unable to find multi-part boundary.", + ); +} + +/** Yield up individual parts by reading the body and parsing out the ford + * data values. */ +async function* parts( + { body, final, part, maxFileSize, maxSize, outPath, prefix }: PartsOptions, +): AsyncIterableIterator<[string, string | FormDataFile]> { + async function getFile(contentType: string): Promise<[string, Deno.File]> { + const ext = extension(contentType); + if (!ext) { + throw new httpErrors.BadRequest(`Invalid media type for part: ${ext}`); + } + if (!outPath) { + outPath = await Deno.makeTempDir(); + } + const filename = `${outPath}/${getRandomFilename(prefix, ext)}`; + const file = await Deno.open(filename, { write: true, createNew: true }); + return [filename, file]; + } + + while (true) { + const headers = await readHeaders(body); + const contentType = headers["content-type"]; + const contentDisposition = headers["content-disposition"]; + if (!contentDisposition) { + throw new httpErrors.BadRequest( + "Form data part missing content-disposition header", + ); + } + if (!contentDisposition.match(/^form-data;/i)) { + throw new httpErrors.BadRequest( + `Unexpected content-disposition header: "${contentDisposition}"`, + ); + } + const matches = NAME_PARAM_REGEX.exec(contentDisposition); + if (!matches) { + throw new httpErrors.BadRequest( + `Unable to determine name of form body part`, + ); + } + let [, name] = matches; + name = unquote(name); + if (contentType) { + const originalName = getFilename(contentDisposition); + let byteLength = 0; + let file: Deno.File | undefined; + let filename: string | undefined; + let buf: Uint8Array | undefined; + if (maxSize) { + buf = new Uint8Array(); + } else { + const result = await getFile(contentType); + filename = result[0]; + file = result[1]; + } + while (true) { + const readResult = await body.readLine(false); + if (!readResult) { + throw new httpErrors.BadRequest("Unexpected EOF reached"); + } + let { bytes } = readResult; + const strippedBytes = stripEol(bytes); + if (isEqual(strippedBytes, part) || isEqual(strippedBytes, final)) { + if (file) { + file.close(); + } + yield [ + name, + { + content: buf, + contentType, + name, + filename, + originalName, + } as FormDataFile, + ]; + if (isEqual(strippedBytes, final)) { + return; + } + break; + } + byteLength += bytes.byteLength; + if (byteLength > maxFileSize) { + if (file) { + file.close(); + } + throw new httpErrors.RequestEntityTooLarge( + `File size exceeds limit of ${maxFileSize} bytes.`, + ); + } + if (buf) { + if (byteLength > maxSize) { + const result = await getFile(contentType); + filename = result[0]; + file = result[1]; + await Deno.writeAll(file, buf); + buf = undefined; + } else { + buf = append(buf, bytes); + } + } + if (file) { + await Deno.writeAll(file, bytes); + } + } + } else { + const lines: string[] = []; + while (true) { + const readResult = await body.readLine(); + if (!readResult) { + throw new httpErrors.BadRequest("Unexpected EOF reached"); + } + const { bytes } = readResult; + if (isEqual(bytes, part) || isEqual(bytes, final)) { + yield [name, lines.join("\n")]; + if (isEqual(bytes, final)) { + return; + } + break; + } + lines.push(decoder.decode(bytes)); + } + } + } +} + +/** A class which provides an interface to access the fields of a + * `multipart/form-data` body. */ +export class FormDataReader { + #body: Deno.Reader; + #boundaryFinal: Uint8Array; + #boundaryPart: Uint8Array; + #reading = false; + + constructor(contentType: string, body: Deno.Reader) { + const matches = contentType.match(BOUNDARY_PARAM_REGEX); + if (!matches) { + throw new httpErrors.BadRequest( + `Content type "${contentType}" does not contain a valid boundary.`, + ); + } + let [, boundary] = matches; + boundary = unquote(boundary); + this.#boundaryPart = encoder.encode(`--${boundary}`); + this.#boundaryFinal = encoder.encode(`--${boundary}--`); + this.#body = body; + } + + /** Reads the multipart body of the response and resolves with an object which + * contains fields and files that were part of the response. + * + * *Note*: this method handles multiple files with the same `name` attribute + * in the request, but by design it does not handle multiple fields that share + * the same `name`. If you expect the request body to contain multiple form + * data fields with the same name, it is better to use the `.stream()` method + * which will iterate over each form data field individually. */ + async read(options: FormDataReadOptions = {}): Promise { + if (this.#reading) { + throw new Error("Body is already being read."); + } + this.#reading = true; + const { + outPath, + maxFileSize = DEFAULT_MAX_FILE_SIZE, + maxSize = DEFAULT_MAX_SIZE, + bufferSize = DEFAULT_BUFFER_SIZE, + } = options; + const body = new BufReader(this.#body, bufferSize); + const result: FormDataBody = { fields: {} }; + if ( + !(await readToStartOrEnd(body, this.#boundaryPart, this.#boundaryFinal)) + ) { + return result; + } + try { + for await ( + const part of parts({ + body, + part: this.#boundaryPart, + final: this.#boundaryFinal, + maxFileSize, + maxSize, + outPath, + }) + ) { + const [key, value] = part; + if (typeof value === "string") { + result.fields[key] = value; + } else { + if (!result.files) { + result.files = []; + } + result.files.push(value); + } + } + } catch (err) { + if (err instanceof Deno.errors.PermissionDenied) { + console.error(err.stack ? err.stack : `${err.name}: ${err.message}`); + } else { + throw err; + } + } + return result; + } + + /** Returns an iterator which will asynchronously yield each part of the form + * data. The yielded value is a tuple, where the first element is the name + * of the part and the second element is a `string` or a `FormDataFile` + * object. */ + async *stream( + options: FormDataReadOptions = {}, + ): AsyncIterableIterator<[string, string | FormDataFile]> { + if (this.#reading) { + throw new Error("Body is already being read."); + } + this.#reading = true; + const { + outPath, + maxFileSize = DEFAULT_MAX_FILE_SIZE, + maxSize = DEFAULT_MAX_SIZE, + bufferSize = 32000, + } = options; + const body = new BufReader(this.#body, bufferSize); + if ( + !(await readToStartOrEnd(body, this.#boundaryPart, this.#boundaryFinal)) + ) { + return; + } + try { + for await ( + const part of parts({ + body, + part: this.#boundaryPart, + final: this.#boundaryFinal, + maxFileSize, + maxSize, + outPath, + }) + ) { + yield part; + } + } catch (err) { + if (err instanceof Deno.errors.PermissionDenied) { + console.error(err.stack ? err.stack : `${err.name}: ${err.message}`); + } else { + throw err; + } + } + } +} diff --git a/bundler/tests/.cache/deno/bd292ad393bc391f9f3f669e7fff1f44413893f1.ts b/bundler/tests/.cache/deno/bd292ad393bc391f9f3f669e7fff1f44413893f1.ts new file mode 100644 index 00000000000..afbdfa6a4a7 --- /dev/null +++ b/bundler/tests/.cache/deno/bd292ad393bc391f9f3f669e7fff1f44413893f1.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isBase64.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const notBase64 = /[^A-Z0-9+\/=]/i; + +/** + * @ignore + */ +const urlSafeBase64 = /^[A-Z0-9_\-]+$/i; + +type Base64Options = { + urlSafe?: boolean; +}; + +/** + * @ignore + */ +const defaultBase64Options: Base64Options = { + urlSafe: false, +}; + +export const isBase64 = (str: string, options?: Base64Options) => { + assertString(str); + options = { + ...defaultBase64Options, + ...options, + }; + + const len = str.length; + + if (options.urlSafe) { + return urlSafeBase64.test(str); + } + + if (!len || len % 4 !== 0 || notBase64.test(str)) { + return false; + } + + const firstPaddingChar = str.indexOf('='); + return ( + firstPaddingChar === -1 || + firstPaddingChar === len - 1 || + (firstPaddingChar === len - 2 && str[len - 1] === '=') + ); +}; diff --git a/bundler/tests/.cache/deno/bd705585e60808ac127b186551171080b840de50.ts b/bundler/tests/.cache/deno/bd705585e60808ac127b186551171080b840de50.ts new file mode 100644 index 00000000000..e78b8cd6d2e --- /dev/null +++ b/bundler/tests/.cache/deno/bd705585e60808ac127b186551171080b840de50.ts @@ -0,0 +1,1004 @@ +// Loaded from https://deno.land/std@0.84.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_DOT, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + _format, + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +/** + * Normalizes a `path` + * @param path to normalize + */ +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +/** + * Verifies whether path is absolute + * @param path to verify + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\localhost\\home\\foo"); // new URL("file://localhost/home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match( + /^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/, + )!; + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} diff --git a/bundler/tests/.cache/deno/bd830a87819dfc99b8f58a0d4d30efadf5f1fa5b.ts b/bundler/tests/.cache/deno/bd830a87819dfc99b8f58a0d4d30efadf5f1fa5b.ts new file mode 100644 index 00000000000..9bc126ff7d9 --- /dev/null +++ b/bundler/tests/.cache/deno/bd830a87819dfc99b8f58a0d4d30efadf5f1fa5b.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std/_util/os.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +export const osType = (() => { + if (globalThis.Deno != null) { + return Deno.build.os; + } + + // deno-lint-ignore no-explicit-any + const navigator = (globalThis as any).navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + + return "linux"; +})(); + +export const isWindows = osType === "windows"; diff --git a/bundler/tests/.cache/deno/bdc90f905b76f3949ac2d764328c049546d036ea.ts b/bundler/tests/.cache/deno/bdc90f905b76f3949ac2d764328c049546d036ea.ts new file mode 100644 index 00000000000..3b499318c7c --- /dev/null +++ b/bundler/tests/.cache/deno/bdc90f905b76f3949ac2d764328c049546d036ea.ts @@ -0,0 +1,270 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/scalars.js + + +import isFinite from '../polyfills/isFinite.js'; +import isInteger from '../polyfills/isInteger.js'; +import inspect from '../jsutils/inspect.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import { Kind } from '../language/kinds.js'; +import { print } from '../language/printer.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { GraphQLScalarType } from './definition.js'; // As per the GraphQL Spec, Integers are only treated as valid when a valid +// 32-bit signed integer, providing the broadest support across platforms. +// +// n.b. JavaScript's integers are safe between -(2^53 - 1) and 2^53 - 1 because +// they are internally represented as IEEE 754 doubles. + +const MAX_INT = 2147483647; +const MIN_INT = -2147483648; + +function serializeInt(outputValue) { + const coercedValue = serializeObject(outputValue); + + if (typeof coercedValue === 'boolean') { + return coercedValue ? 1 : 0; + } + + let num = coercedValue; + + if (typeof coercedValue === 'string' && coercedValue !== '') { + num = Number(coercedValue); + } + + if (!isInteger(num)) { + throw new GraphQLError(`Int cannot represent non-integer value: ${inspect(coercedValue)}`); + } + + if (num > MAX_INT || num < MIN_INT) { + throw new GraphQLError('Int cannot represent non 32-bit signed integer value: ' + inspect(coercedValue)); + } + + return num; +} + +function coerceInt(inputValue) { + if (!isInteger(inputValue)) { + throw new GraphQLError(`Int cannot represent non-integer value: ${inspect(inputValue)}`); + } + + if (inputValue > MAX_INT || inputValue < MIN_INT) { + throw new GraphQLError(`Int cannot represent non 32-bit signed integer value: ${inputValue}`); + } + + return inputValue; +} + +export const GraphQLInt = new GraphQLScalarType({ + name: 'Int', + description: 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.', + serialize: serializeInt, + parseValue: coerceInt, + + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.INT) { + throw new GraphQLError(`Int cannot represent non-integer value: ${print(valueNode)}`, valueNode); + } + + const num = parseInt(valueNode.value, 10); + + if (num > MAX_INT || num < MIN_INT) { + throw new GraphQLError(`Int cannot represent non 32-bit signed integer value: ${valueNode.value}`, valueNode); + } + + return num; + } + +}); + +function serializeFloat(outputValue) { + const coercedValue = serializeObject(outputValue); + + if (typeof coercedValue === 'boolean') { + return coercedValue ? 1 : 0; + } + + let num = coercedValue; + + if (typeof coercedValue === 'string' && coercedValue !== '') { + num = Number(coercedValue); + } + + if (!isFinite(num)) { + throw new GraphQLError(`Float cannot represent non numeric value: ${inspect(coercedValue)}`); + } + + return num; +} + +function coerceFloat(inputValue) { + if (!isFinite(inputValue)) { + throw new GraphQLError(`Float cannot represent non numeric value: ${inspect(inputValue)}`); + } + + return inputValue; +} + +export const GraphQLFloat = new GraphQLScalarType({ + name: 'Float', + description: 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).', + serialize: serializeFloat, + parseValue: coerceFloat, + + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) { + throw new GraphQLError(`Float cannot represent non numeric value: ${print(valueNode)}`, valueNode); + } + + return parseFloat(valueNode.value); + } + +}); // Support serializing objects with custom valueOf() or toJSON() functions - +// a common way to represent a complex value which can be represented as +// a string (ex: MongoDB id objects). + +function serializeObject(outputValue) { + if (isObjectLike(outputValue)) { + if (typeof outputValue.valueOf === 'function') { + const valueOfResult = outputValue.valueOf(); + + if (!isObjectLike(valueOfResult)) { + return valueOfResult; + } + } + + if (typeof outputValue.toJSON === 'function') { + // $FlowFixMe(>=0.90.0) + return outputValue.toJSON(); + } + } + + return outputValue; +} + +function serializeString(outputValue) { + const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not + // attempt to coerce object, function, symbol, or other types as strings. + + if (typeof coercedValue === 'string') { + return coercedValue; + } + + if (typeof coercedValue === 'boolean') { + return coercedValue ? 'true' : 'false'; + } + + if (isFinite(coercedValue)) { + return coercedValue.toString(); + } + + throw new GraphQLError(`String cannot represent value: ${inspect(outputValue)}`); +} + +function coerceString(inputValue) { + if (typeof inputValue !== 'string') { + throw new GraphQLError(`String cannot represent a non string value: ${inspect(inputValue)}`); + } + + return inputValue; +} + +export const GraphQLString = new GraphQLScalarType({ + name: 'String', + description: 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.', + serialize: serializeString, + parseValue: coerceString, + + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.STRING) { + throw new GraphQLError(`String cannot represent a non string value: ${print(valueNode)}`, valueNode); + } + + return valueNode.value; + } + +}); + +function serializeBoolean(outputValue) { + const coercedValue = serializeObject(outputValue); + + if (typeof coercedValue === 'boolean') { + return coercedValue; + } + + if (isFinite(coercedValue)) { + return coercedValue !== 0; + } + + throw new GraphQLError(`Boolean cannot represent a non boolean value: ${inspect(coercedValue)}`); +} + +function coerceBoolean(inputValue) { + if (typeof inputValue !== 'boolean') { + throw new GraphQLError(`Boolean cannot represent a non boolean value: ${inspect(inputValue)}`); + } + + return inputValue; +} + +export const GraphQLBoolean = new GraphQLScalarType({ + name: 'Boolean', + description: 'The `Boolean` scalar type represents `true` or `false`.', + serialize: serializeBoolean, + parseValue: coerceBoolean, + + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.BOOLEAN) { + throw new GraphQLError(`Boolean cannot represent a non boolean value: ${print(valueNode)}`, valueNode); + } + + return valueNode.value; + } + +}); + +function serializeID(outputValue) { + const coercedValue = serializeObject(outputValue); + + if (typeof coercedValue === 'string') { + return coercedValue; + } + + if (isInteger(coercedValue)) { + return String(coercedValue); + } + + throw new GraphQLError(`ID cannot represent value: ${inspect(outputValue)}`); +} + +function coerceID(inputValue) { + if (typeof inputValue === 'string') { + return inputValue; + } + + if (isInteger(inputValue)) { + return inputValue.toString(); + } + + throw new GraphQLError(`ID cannot represent value: ${inspect(inputValue)}`); +} + +export const GraphQLID = new GraphQLScalarType({ + name: 'ID', + description: 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.', + serialize: serializeID, + parseValue: coerceID, + + parseLiteral(valueNode) { + if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) { + throw new GraphQLError('ID cannot represent a non-string and non-integer value: ' + print(valueNode), valueNode); + } + + return valueNode.value; + } + +}); +export const specifiedScalarTypes = Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]); +export function isSpecifiedScalarType(type) { + return specifiedScalarTypes.some(({ + name + }) => type.name === name); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/bdd9c5f714d6acdba0026c02e4d960987639bc2d.ts b/bundler/tests/.cache/deno/bdd9c5f714d6acdba0026c02e4d960987639bc2d.ts new file mode 100644 index 00000000000..d6264b00558 --- /dev/null +++ b/bundler/tests/.cache/deno/bdd9c5f714d6acdba0026c02e4d960987639bc2d.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/std/fs/ensure_dir.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureDir(dir: string): Promise { + try { + const fileInfo = await Deno.lstat(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + await Deno.mkdir(dir, { recursive: true }); + return; + } + throw err; + } +} + +/** + * Ensures that the directory exists. + * If the directory structure does not exist, it is created. Like mkdir -p. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureDirSync(dir: string): void { + try { + const fileInfo = Deno.lstatSync(dir); + if (!fileInfo.isDirectory) { + throw new Error( + `Ensure path exists, expected 'dir', got '${ + getFileInfoType(fileInfo) + }'`, + ); + } + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + // if dir not exists. then create it. + Deno.mkdirSync(dir, { recursive: true }); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/be159932d1768f7fbd218488f0c9850b5362f41f.ts b/bundler/tests/.cache/deno/be159932d1768f7fbd218488f0c9850b5362f41f.ts new file mode 100644 index 00000000000..214f097d966 --- /dev/null +++ b/bundler/tests/.cache/deno/be159932d1768f7fbd218488f0c9850b5362f41f.ts @@ -0,0 +1,1225 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/pako/lib/zlib/trees.js + + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +/* eslint-disable space-unary-ops */ + +import * as utils from "../utils/common.js"; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +//var Z_FILTERED = 1; +//var Z_HUFFMAN_ONLY = 2; +//var Z_RLE = 3; +var Z_FIXED = 4; +//var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +var Z_BINARY = 0; +var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + +/*============================================================================*/ + + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + +// From zutil.h + +var STORED_BLOCK = 0; +var STATIC_TREES = 1; +var DYN_TREES = 2; +/* The three kinds of block type */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +/* The minimum and maximum match lengths */ + +// From deflate.h +/* =========================================================================== + * Internal compression state. + */ + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ + +var LITERALS = 256; +/* number of literal bytes 0..255 */ + +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ + +var D_CODES = 30; +/* number of distance codes */ + +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ + +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ + +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var Buf_size = 16; +/* size of bit buffer in bi_buf */ + + +/* =========================================================================== + * Constants + */ + +var MAX_BL_BITS = 7; +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +var END_BLOCK = 256; +/* end of block literal code */ + +var REP_3_6 = 16; +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +var REPZ_3_10 = 17; +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +var REPZ_11_138 = 18; +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +/* eslint-disable comma-spacing,array-bracket-spacing */ +var extra_lbits = /* extra bits for each length code */ + [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]; + +var extra_dbits = /* extra bits for each distance code */ + [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]; + +var extra_blbits = /* extra bits for each bit length code */ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; + +var bl_order = + [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; +/* eslint-enable comma-spacing,array-bracket-spacing */ + +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +// We pre-fill arrays with 0 to avoid uninitialized gaps + +var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ + +// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 +var static_ltree = new Array((L_CODES + 2) * 2); +zero(static_ltree); +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +var static_dtree = new Array(D_CODES * 2); +zero(static_dtree); +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +var _dist_code = new Array(DIST_CODE_LEN); +zero(_dist_code); +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); +zero(_length_code); +/* length code for each normalized match length (0 == MIN_MATCH) */ + +var base_length = new Array(LENGTH_CODES); +zero(base_length); +/* First normalized length for each code (0 = MIN_MATCH) */ + +var base_dist = new Array(D_CODES); +zero(base_dist); +/* First normalized distance for each code (0 = distance of 1) */ + + +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ + + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; +} + + +var static_l_desc; +var static_d_desc; +var static_bl_desc; + + +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ +} + + + +function d_code(dist) { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; +} + + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +function put_short(s, w) { +// put_byte(s, (uch)((w) & 0xff)); +// put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; +} + + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +function send_bits(s, value, length) { + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; + } else { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; + } +} + + +function send_code(s, c, tree) { + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); +} + + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +function bi_reverse(code, len) { + var res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +} + + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +function bi_flush(s) { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; + } +} + + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +function gen_bitlen(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var max_code = desc.max_code; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var extra = desc.stat_desc.extra_bits; + var base = desc.stat_desc.extra_base; + var max_length = desc.stat_desc.max_length; + var h; /* heap index */ + var n, m; /* iterate over the tree elements */ + var bits; /* bit length */ + var xbits; /* extra bits */ + var f; /* frequency */ + var overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) { + s.bl_count[bits] = 0; + } + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ + + for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) { continue; } /* not a leaf node */ + + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } + + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; + } + n--; + } + } +} + + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +function gen_codes(tree, max_code, bl_count) +// ct_data *tree; /* the tree to decorate */ +// int max_code; /* largest code with non zero frequency */ +// ushf *bl_count; /* number of codes at each bit length */ +{ + var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ + var code = 0; /* running code value */ + var bits; /* bit index */ + var n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; + } + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) { + bl_count[bits] = 0; + } + + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES + 1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); + + //static_init_done = true; +} + + +/* =========================================================================== + * Initialize a new block. + */ +function init_block(s) { + var n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; +} + + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +function bi_windup(s) +{ + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; +} + +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +function copy_block(s, buf, len, header) +//DeflateState *s; +//charf *buf; /* the input data */ +//unsigned len; /* its length */ +//int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ + + if (header) { + put_short(s, len); + put_short(s, ~len); + } +// while (len--) { +// put_byte(s, *buf++); +// } + utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); + s.pending += len; +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +function smaller(tree, n, m, depth) { + var _n2 = n * 2; + var _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); +} + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +function pqdownheap(s, tree, k) +// deflate_state *s; +// ct_data *tree; /* the tree to restore */ +// int k; /* node to move down */ +{ + var v = s.heap[k]; + var j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } + + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; +} + + +// inlined manually +// var SMALLEST = 1; + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +function compress_block(s, ltree, dtree) +// deflate_state *s; +// const ct_data *ltree; /* literal tree */ +// const ct_data *dtree; /* distance tree */ +{ + var dist; /* distance of matched string */ + var lc; /* match length or unmatched char (if dist == 0) */ + var lx = 0; /* running index in l_buf */ + var code; /* the code to send */ + var extra; /* number of extra bits to send */ + + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; + + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); + + } while (lx < s.last_lit); + } + + send_code(s, END_BLOCK, ltree); +} + + +/* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ +function build_tree(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var elems = desc.stat_desc.elems; + var n, m; /* iterate over heap elements */ + var max_code = -1; /* largest code with non zero frequency */ + var node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; + + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; + + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; + } + /* node is 0 or 1 so it does not have extra bits */ + } + desc.max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ + + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ + + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; + + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); + + } while (s.heap_len >= 2); + + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); +} + + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +function scan_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; + + } else if (curlen !== 0) { + + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; + + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; + + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } + + count = 0; + prevlen = curlen; + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +function send_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); + + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); + + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +function build_bl_tree(s) { + var max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; + } + } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); + + return max_blindex; +} + + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +function send_all_trees(s, lcodes, dcodes, blcodes) +// deflate_state *s; +// int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + var rank; /* index in bl_order */ + + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); + } + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +function detect_data_type(s) { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + var black_mask = 0xf3ffc07f; + var n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; + } + } + + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + } + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + + +var static_init_done = false; + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +function _tr_init(s) +{ + + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } + + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + + s.bi_buf = 0; + s.bi_valid = 0; + + /* Initialize the first block of the first file: */ + init_block(s); +} + + +/* =========================================================================== + * Send a stored block + */ +function _tr_stored_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ +} + + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +function _tr_align(s) { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +} + + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +function _tr_flush_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block, or NULL if too old */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + var max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { + + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN) { + s.strm.data_type = detect_data_type(s); + } + + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; + + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); + + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } + + } else { + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ + + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + + } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { + + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); + + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +function _tr_tally(s, dist, lc) +// deflate_state *s; +// unsigned dist; /* distance of matched string */ +// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + //var out_length, in_length, dcode; + + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; + + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; + + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + } + +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility + +//#ifdef TRUNCATE_BLOCK +// /* Try to guess if it is profitable to stop the current block here */ +// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { +// /* Compute an upper bound for the compressed length */ +// out_length = s.last_lit*8; +// in_length = s.strstart - s.block_start; +// +// for (dcode = 0; dcode < D_CODES; dcode++) { +// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); +// } +// out_length >>>= 3; +// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", +// // s->last_lit, in_length, out_length, +// // 100L - out_length*100L/in_length)); +// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { +// return true; +// } +// } +//#endif + + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +export { + _tr_init, + _tr_stored_block, + _tr_flush_block, + _tr_tally, + _tr_align +}; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/be3b0879dbb8217929fad6d58ce816aef5dc99f0.ts b/bundler/tests/.cache/deno/be3b0879dbb8217929fad6d58ce816aef5dc99f0.ts new file mode 100644 index 00000000000..27c1fb6307d --- /dev/null +++ b/bundler/tests/.cache/deno/be3b0879dbb8217929fad6d58ce816aef5dc99f0.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/indexOf.js + + +import _curry2 from './internal/_curry2.js'; +import _indexOf from './internal/_indexOf.js'; +import _isArray from './internal/_isArray.js'; + + +/** + * Returns the position of the first occurrence of an item in an array, or -1 + * if the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.lastIndexOf + * @example + * + * R.indexOf(3, [1,2,3,4]); //=> 2 + * R.indexOf(10, [1,2,3,4]); //=> -1 + */ +var indexOf = _curry2(function indexOf(target, xs) { + return typeof xs.indexOf === 'function' && !_isArray(xs) ? + xs.indexOf(target) : + _indexOf(xs, target, 0); +}); +export default indexOf; diff --git a/bundler/tests/.cache/deno/be71fc1ab3e65011528b5293819348b409ed66dd.ts b/bundler/tests/.cache/deno/be71fc1ab3e65011528b5293819348b409ed66dd.ts new file mode 100644 index 00000000000..426c250b87d --- /dev/null +++ b/bundler/tests/.cache/deno/be71fc1ab3e65011528b5293819348b409ed66dd.ts @@ -0,0 +1,146 @@ +// Loaded from https://deno.land/std@0.52.0/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +const hextable = new TextEncoder().encode("0123456789abcdef"); + +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])) + ); +} + +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value and a success flag. +function fromHexChar(byte: number): [number, boolean] { + switch (true) { + case 48 <= byte && byte <= 57: // '0' <= byte && byte <= '9' + return [byte - 48, true]; + case 97 <= byte && byte <= 102: // 'a' <= byte && byte <= 'f' + return [byte - 97 + 10, true]; + case 65 <= byte && byte <= 70: // 'A' <= byte && byte <= 'F' + return [byte - 65 + 10, true]; + } + return [0, false]; +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes of `dst`. + * As a convenience, it returns the number of bytes written to `dst` + * but this value is always `encodedLen(src.length)`. + * Encode implements hexadecimal encoding. + * @param dst + * @param src + */ +export function encode(dst: Uint8Array, src: Uint8Array): number { + const srcLength = encodedLen(src.length); + if (dst.length !== srcLength) { + throw new Error("Out of index."); + } + for (let i = 0; i < src.length; i++) { + const v = src[i]; + dst[i * 2] = hextable[v >> 4]; + dst[i * 2 + 1] = hextable[v & 0x0f]; + } + return srcLength; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + const dest = new Uint8Array(encodedLen(src.length)); + encode(dest, src); + return new TextDecoder().decode(dest); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * returning the actual number of bytes written to `dst`. + * Decode expects that `src` contains only hexadecimal characters and that `src` + * has even length. + * If the input is malformed, Decode returns the number of bytes decoded before + * the error. + * @param dst + * @param src + */ +export function decode( + dst: Uint8Array, + src: Uint8Array +): [number, Error | void] { + let i = 0; + for (; i < Math.floor(src.length / 2); i++) { + const [a, aOK] = fromHexChar(src[i * 2]); + if (!aOK) { + return [i, errInvalidByte(src[i * 2])]; + } + const [b, bOK] = fromHexChar(src[i * 2 + 1]); + if (!bOK) { + return [i, errInvalidByte(src[i * 2 + 1])]; + } + + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + const [, ok] = fromHexChar(src[i * 2]); + if (!ok) { + return [i, errInvalidByte(src[i * 2])]; + } + return [i, errLength()]; + } + + return [i, undefined]; +} + +/** + * DecodedLen returns the length of a decoding of `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return Math.floor(x / 2); +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throws an error. + * @param s the `string` need to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + const src = new TextEncoder().encode(s); + // We can use the source slice itself as the destination + // because the decode loop increments by one and then the 'seen' byte is not + // used anymore. + const [n, err] = decode(src, src); + + if (err) { + throw err; + } + + return src.slice(0, n); +} diff --git a/bundler/tests/.cache/deno/be8334e79454fb246421227d887e97533a0c72e5.ts b/bundler/tests/.cache/deno/be8334e79454fb246421227d887e97533a0c72e5.ts new file mode 100644 index 00000000000..83bd6643f1a --- /dev/null +++ b/bundler/tests/.cache/deno/be8334e79454fb246421227d887e97533a0c72e5.ts @@ -0,0 +1,259 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/server_sent_event.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import type { Application } from "./application.ts"; +import { assert, BufWriter } from "./deps.ts"; +import type { ServerRequest } from "./types.d.ts"; + +const encoder = new TextEncoder(); + +export interface ServerSentEventInit extends EventInit { + /** An optional `id` which will be sent with the event and exposed in the + * client `EventSource`. */ + id?: number; + + /** The replacer is passed to `JSON.stringify` when converting the `data` + * property to a JSON string. */ + replacer?: + | (string | number)[] + // deno-lint-ignore no-explicit-any + | ((this: any, key: string, value: any) => any); + + /** Space is passed to `JSON.stringify` when converting the `data` property + * to a JSON string. */ + space?: string | number; +} + +export interface ServerSentEventTargetOptions { + /** Additional headers to send to the client during startup. These headers + * will overwrite any of the default headers if the key is duplicated. */ + headers?: Headers; +} + +class CloseEvent extends Event { + constructor(eventInit: EventInit) { + super("close", eventInit); + } +} + +/** An event which contains information which will be sent to the remote + * connection and be made available in an `EventSource` as an event. */ +export class ServerSentEvent extends Event { + #data: string; + #id?: number; + #type: string; + + constructor( + type: string, + // deno-lint-ignore no-explicit-any + data: any, + { replacer, space, ...eventInit }: ServerSentEventInit = {}, + ) { + super(type, eventInit); + this.#type = type; + try { + this.#data = typeof data === "string" + ? data + : JSON.stringify(data, replacer as (string | number)[], space); + } catch (e) { + assert(e instanceof Error); + throw new TypeError( + `data could not be coerced into a serialized string.\n ${e.message}`, + ); + } + const { id } = eventInit; + this.#id = id; + } + + /** The data associated with the event, which will be sent to the client and + * be made available in the `EventSource`. */ + get data(): string { + return this.#data; + } + + /** The optional ID associated with the event that will be sent to the client + * and be made available in the `EventSource`. */ + get id(): number | undefined { + return this.#id; + } + + toString(): string { + const data = `data: ${this.#data.split("\n").join("\ndata: ")}\n`; + return `${this.#type === "__message" ? "" : `event: ${this.#type}\n`}${ + this.#id ? `id: ${String(this.#id)}\n` : "" + }${data}\n`; + } +} + +const response = `HTTP/1.1 200 OK\n`; + +const responseHeaders = new Headers( + [ + ["Connection", "Keep-Alive"], + ["Content-Type", "text/event-stream"], + ["Cache-Control", "no-cache"], + ["Keep-Alive", `timeout=${Number.MAX_SAFE_INTEGER}`], + ], +); + +export class ServerSentEventTarget extends EventTarget { + #app: Application; + #closed = false; + #prev = Promise.resolve(); + #ready: Promise | true; + #serverRequest: ServerRequest; + #writer: BufWriter; + + #send = async (payload: string, prev: Promise): Promise => { + if (this.#closed) { + return; + } + if (this.#ready !== true) { + await this.#ready; + this.#ready = true; + } + try { + await prev; + await this.#writer.write(encoder.encode(payload)); + await this.#writer.flush(); + } catch (error) { + this.dispatchEvent(new CloseEvent({ cancelable: false })); + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + } + }; + + #setup = async (overrideHeaders?: Headers): Promise => { + const headers = new Headers(responseHeaders); + if (overrideHeaders) { + for (const [key, value] of overrideHeaders) { + headers.set(key, value); + } + } + let payload = response; + for (const [key, value] of headers) { + payload += `${key}: ${value}\n`; + } + payload += `\n`; + try { + await this.#writer.write(encoder.encode(payload)); + await this.#writer.flush(); + } catch (error) { + this.dispatchEvent(new CloseEvent({ cancelable: false })); + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + throw error; + } + }; + + /** Is set to `true` if events cannot be sent to the remote connection. + * Otherwise it is set to `false`. + * + * *Note*: This flag is lazily set, and might not reflect a closed state until + * another event, comment or message is attempted to be processed. */ + get closed(): boolean { + return this.#closed; + } + + constructor( + app: Application, + serverRequest: ServerRequest, + { headers }: ServerSentEventTargetOptions = {}, + ) { + super(); + this.#app = app; + this.#serverRequest = serverRequest; + this.#writer = this.#serverRequest.w; + this.addEventListener("close", () => { + this.#closed = true; + try { + this.#serverRequest.conn.close(); + } catch (error) { + if (!(error instanceof Deno.errors.BadResource)) { + const errorEvent = new ErrorEvent("error", { error }); + this.dispatchEvent(errorEvent); + this.#app.dispatchEvent(errorEvent); + } + } + }); + this.#ready = this.#setup(headers); + } + + /** Stop sending events to the remote connection and close the connection. */ + async close(): Promise { + if (this.#ready !== true) { + await this.#ready; + } + await this.#prev; + this.dispatchEvent(new CloseEvent({ cancelable: false })); + } + + /** Send a comment to the remote connection. Comments are not exposed to the + * client `EventSource` but are used for diagnostics and helping ensure a + * connection is kept alive. + * + * ```ts + * import { Application } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * const sse = ctx.getSSETarget(); + * sse.dispatchComment("this is a comment"); + * }); + * + * await app.listen(); + * ``` + */ + dispatchComment(comment: string): boolean { + this.#prev = this.#send( + `: ${comment.split("\n").join("\n: ")}\n\n`, + this.#prev, + ); + return true; + } + + /** Dispatch a message to the client. This message will contain `data: ` only + * and be available on the client `EventSource` on the `onmessage` or an event + * listener of type `"message"`. */ + // deno-lint-ignore no-explicit-any + dispatchMessage(data: any): boolean { + const event = new ServerSentEvent("__message", data); + return this.dispatchEvent(event); + } + + /** Dispatch a server sent event to the client. The event `type` will be + * sent as `event: ` to the client which will be raised as a `MessageEvent` + * on the `EventSource` in the client. + * + * Any local event handlers will be dispatched to first, and if the event + * is cancelled, it will not be sent to the client. + * + * ```ts + * import { Application, ServerSentEvent } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * + * app.use((ctx) => { + * const sse = ctx.getSSETarget(); + * const evt = new ServerSentEvent("ping", "hello"); + * sse.dispatchEvent(evt); + * }); + * + * await app.listen(); + * ``` + */ + dispatchEvent(event: ServerSentEvent): boolean; + dispatchEvent(event: CloseEvent | ErrorEvent): boolean; + dispatchEvent(event: ServerSentEvent | CloseEvent | ErrorEvent): boolean { + let dispatched = super.dispatchEvent(event); + if (dispatched && event instanceof ServerSentEvent) { + this.#prev = this.#send(String(event), this.#prev); + } + return dispatched; + } +} diff --git a/bundler/tests/.cache/deno/be9d6583508483a1faa9fbe4a0b21da60f6679da.ts b/bundler/tests/.cache/deno/be9d6583508483a1faa9fbe4a0b21da60f6679da.ts new file mode 100644 index 00000000000..2b6d87f5695 --- /dev/null +++ b/bundler/tests/.cache/deno/be9d6583508483a1faa9fbe4a0b21da60f6679da.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/toUpper.js + + +import invoker from './invoker.js'; + + +/** + * The upper case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to upper case. + * @return {String} The upper case version of `str`. + * @see R.toLower + * @example + * + * R.toUpper('abc'); //=> 'ABC' + */ +var toUpper = invoker(0, 'toUpperCase'); +export default toUpper; diff --git a/bundler/tests/.cache/deno/beb55af4dc5102f1c15cf9251165b5886e6d55d3.ts b/bundler/tests/.cache/deno/beb55af4dc5102f1c15cf9251165b5886e6d55d3.ts new file mode 100644 index 00000000000..d4e51ab6703 --- /dev/null +++ b/bundler/tests/.cache/deno/beb55af4dc5102f1c15cf9251165b5886e6d55d3.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reduced.js + + +import _curry1 from './internal/_curry1.js'; +import _reduced from './internal/_reduced.js'; + +/** + * Returns a value wrapped to indicate that it is the final value of the reduce + * and transduce functions. The returned value should be considered a black + * box: the internal structure is not guaranteed to be stable. + * + * Note: this optimization is only available to the below functions: + * - [`reduce`](#reduce) + * - [`reduceWhile`](#reduceWhile) + * - [`transduce`](#transduce) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category List + * @sig a -> * + * @param {*} x The final value of the reduce. + * @return {*} The wrapped value. + * @see R.reduce, R.reduceWhile, R.transduce + * @example + * + * R.reduce( + * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), + * [], + * [1, 2, 3, 4, 5]) // [1, 2, 3] + */ +var reduced = _curry1(_reduced); +export default reduced; diff --git a/bundler/tests/.cache/deno/beb6cbc6e8a4f063a14998239969c408ed878fe0.ts b/bundler/tests/.cache/deno/beb6cbc6e8a4f063a14998239969c408ed878fe0.ts new file mode 100644 index 00000000000..c542a8fb2bb --- /dev/null +++ b/bundler/tests/.cache/deno/beb6cbc6e8a4f063a14998239969c408ed878fe0.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/mysql/src/packets/parsers/err.ts + + +import type { BufferReader } from "../../buffer.ts"; +import type { Connection } from "../../connection.ts"; +import ServerCapabilities from "../../constant/capabilities.ts"; + +/** @ignore */ +export interface ErrorPacket { + code: number; + sqlStateMarker?: number; + sqlState?: number; + message: string; +} + +/** @ignore */ +export function parseError( + reader: BufferReader, + conn: Connection, +): ErrorPacket { + const code = reader.readUint16(); + const packet: ErrorPacket = { + code, + message: "", + }; + if (conn.capabilities & ServerCapabilities.CLIENT_PROTOCOL_41) { + packet.sqlStateMarker = reader.readUint8(); + packet.sqlState = reader.readUints(5); + } + packet.message = reader.readNullTerminatedString(); + return packet; +} diff --git a/bundler/tests/.cache/deno/bf3c2a7ec4005e4a5f70f4c3c97bce9208d7ff03.ts b/bundler/tests/.cache/deno/bf3c2a7ec4005e4a5f70f4c3c97bce9208d7ff03.ts new file mode 100644 index 00000000000..421e166153b --- /dev/null +++ b/bundler/tests/.cache/deno/bf3c2a7ec4005e4a5f70f4c3c97bce9208d7ff03.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std@0.81.0/async/mux_async_iterator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // deno-lint-ignore no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/bfa516c4b18c3dea64a583cb739a8dcf05e8dc0f.ts b/bundler/tests/.cache/deno/bfa516c4b18c3dea64a583cb739a8dcf05e8dc0f.ts new file mode 100644 index 00000000000..4d394d958bd --- /dev/null +++ b/bundler/tests/.cache/deno/bfa516c4b18c3dea64a583cb739a8dcf05e8dc0f.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/bfc728960b621688ce2f4614e845571538a2eb25.ts b/bundler/tests/.cache/deno/bfc728960b621688ce2f4614e845571538a2eb25.ts new file mode 100644 index 00000000000..23ae30f865d --- /dev/null +++ b/bundler/tests/.cache/deno/bfc728960b621688ce2f4614e845571538a2eb25.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/helper.ts + + +export function str2bytes(str: string): Uint8Array { + const encoder = new TextEncoder(); + return encoder.encode(str); +} + +export function hex(bytes: Uint8Array): string { + let output = ""; + for (const b of bytes) output += b.toString(16).padStart(2, "0"); + return output; +} + +export function xor(a: Uint8Array, b: Uint8Array) { + const c = new Uint8Array(a.length); + for (let i = 0; i < c.length; i++) { + c[i] = a[i] ^ b[i % b.length]; + } + return c; +} + +export function concat(...arg: (Uint8Array | number[])[]) { + const length = arg.reduce((a, b) => a + b.length, 0); + const c = new Uint8Array(length); + let ptr = 0; + for (let i = 0; i < arg.length; i++) { + c.set(arg[i], ptr); + ptr += arg[i].length; + } + + return c; +} + +export function bignum_to_byte(n: bigint): number[] { + const bytes = []; + while (n > 0) { + bytes.push(Number(n & 255n)); + n = n >> 8n; + } + + bytes.reverse(); + return bytes; +} + +export function random_bytes(length: number): Uint8Array { + const n = new Uint8Array(length); + for (let i = 0; i < length; i++) n[i] = ((Math.random() * 254) | 0) + 1; + return n; +} + +export function get_key_size(n: bigint): number { + const size_list = [64n, 128n, 256n, 512n, 1024n]; + + for (const size of size_list) { + if (n < (1n << size * 8n)) return Number(size); + } + + return 2048; +} + +export function base64_to_binary(b: string): Uint8Array { + let binaryString = window.atob(b); + let len = binaryString.length; + let bytes = new Uint8Array(len); + + for (var i = 0; i < len; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + + return bytes; +} diff --git a/bundler/tests/.cache/deno/bfd3e30b262e3e7302d3dcba244808baacaed9ce.ts b/bundler/tests/.cache/deno/bfd3e30b262e3e7302d3dcba244808baacaed9ce.ts new file mode 100644 index 00000000000..27d2b9a15b7 --- /dev/null +++ b/bundler/tests/.cache/deno/bfd3e30b262e3e7302d3dcba244808baacaed9ce.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.79.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/c019e8f5fa8ec9f1f6e9fac399f8d6e612fcbfe3.ts b/bundler/tests/.cache/deno/c019e8f5fa8ec9f1f6e9fac399f8d6e612fcbfe3.ts new file mode 100644 index 00000000000..adbe0f10c93 --- /dev/null +++ b/bundler/tests/.cache/deno/c019e8f5fa8ec9f1f6e9fac399f8d6e612fcbfe3.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std@0.77.0/path/separator.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/c039b9a77e6b1dc6bf8e5a8822784f093ca0a21e.ts b/bundler/tests/.cache/deno/c039b9a77e6b1dc6bf8e5a8822784f093ca0a21e.ts new file mode 100644 index 00000000000..f64c9bc5b22 --- /dev/null +++ b/bundler/tests/.cache/deno/c039b9a77e6b1dc6bf8e5a8822784f093ca0a21e.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case@v2.1.0/pascalCase.ts + + +import camelCase from "./camelCase.ts"; +import upperFirstCase from "./upperFirstCase.ts"; + +export default function pascalCase( + value: string, + locale?: string, + mergeNumbers?: boolean, +): string { + return upperFirstCase(camelCase(value, locale, mergeNumbers), locale); +} diff --git a/bundler/tests/.cache/deno/c0528b15f7de0ab87ac7b5115f9588f0b4f1bdfd.ts b/bundler/tests/.cache/deno/c0528b15f7de0ab87ac7b5115f9588f0b4f1bdfd.ts new file mode 100644 index 00000000000..ba6a8a44c4e --- /dev/null +++ b/bundler/tests/.cache/deno/c0528b15f7de0ab87ac7b5115f9588f0b4f1bdfd.ts @@ -0,0 +1,153 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/message.ts + + +import { MessageHeader, OpCode, serializeHeader } from "./header.ts"; +import { Document } from "../types.ts"; +import { deserializeBson, serializeBson } from "../utils/bson.ts"; + +type MessageFlags = number; + +const encoder = new TextEncoder(); +const decoder = new TextDecoder(); + +interface Section0 { + document: Document; +} + +interface Section1 { + identifier: string; + documents: Document[]; +} + +export type Section = Section0 | Section1; + +export interface Message { + responseTo: number; + flags?: MessageFlags; + sections: Section[]; + checksum?: number; + requestId: number; +} + +function serializeSections( + sections: Section[], +): { length: number; sections: Uint8Array[] } { + let totalLen = 0; + const buffers = sections.map((section) => { + if ("document" in section) { + const document = serializeBson(section.document); + const section0 = new Uint8Array(1 + document.byteLength); + new DataView(section0.buffer).setUint8(0, 0); + section0.set(document, 1); + totalLen += section0.byteLength; + return section0; + } else { + const identifier = encoder.encode(section.identifier + "\0"); + let documentsLength = 0; + let docs = section.documents.map((doc) => { + const document = serializeBson(doc); + documentsLength += document.byteLength; + return document; + }); + const section1 = new Uint8Array( + 1 + 4 + identifier.byteLength + documentsLength, + ); + const view = new DataView(section1.buffer); + + view.setUint8(0, 1); + view.setUint32(1, section1.byteLength - 1, true); + let pos = 4; + + for (const doc of docs) { + section1.set(doc, pos); + pos += doc.byteLength; + } + + totalLen += section1.byteLength; + return section1; + } + }); + + return { length: totalLen, sections: buffers }; +} + +export function serializeMessage(message: Message): Uint8Array[] { + const { length, sections } = serializeSections(message.sections); + const buffer = new Uint8Array(4 + length); + + const view = new DataView(buffer.buffer); + view.setInt32(0, message.flags ?? 0, true); + + let pos = 4; + sections.forEach((section) => { + buffer.set(section, pos); + pos += section.byteLength; + }); + + const header = serializeHeader({ + messageLength: 16 + buffer.byteLength, + responseTo: message.responseTo, + requestId: message.requestId, + opCode: OpCode.MSG, + }); + + return [header, buffer]; +} + +export function deserializeMessage( + header: MessageHeader, + buffer: Uint8Array, +): Message { + const view = new DataView(buffer.buffer); + + const flags = view.getInt32(0); + const sections: Section[] = []; + + let pos = 4; + while (pos < view.byteLength) { + const kind = view.getInt8(pos); + pos++; + if (kind === 0) { + const docLen = view.getInt32(pos, true); + const document = deserializeBson( + new Uint8Array(view.buffer.slice(pos, pos + docLen)), + ); + pos += docLen; + sections.push({ document }); + } else if (kind === 1) { + console.log("kind1"); + const len = view.getInt32(pos, true); + const sectionBody = new Uint8Array( + view.buffer.slice(pos + 4, pos + len - 4), + ); + const identifierEndPos = sectionBody.findIndex((byte) => byte === 0); + const identifier = decoder.decode(buffer.slice(0, identifierEndPos)); + const docsBuffer = sectionBody.slice(identifierEndPos + 1); + const documents = parseDocuments(docsBuffer); + pos += len; + sections.push({ identifier, documents }); + } else { + throw new Error("Invalid section kind: " + kind); + } + } + + return { + responseTo: header.responseTo, + requestId: header.requestId, + flags, + sections, + }; +} + +function parseDocuments(buffer: Uint8Array): Document[] { + let pos = 0; + const docs = []; + const view = new DataView(buffer); + while (pos < buffer.byteLength) { + const docLen = view.getInt32(pos, true); + const doc = deserializeBson(buffer.slice(pos, pos + docLen)); + docs.push(doc); + pos += docLen; + } + return docs; +} diff --git a/bundler/tests/.cache/deno/c056969db90d847542e4b5eeddf4ada0b5516643.ts b/bundler/tests/.cache/deno/c056969db90d847542e4b5eeddf4ada0b5516643.ts new file mode 100644 index 00000000000..db13ef0b094 --- /dev/null +++ b/bundler/tests/.cache/deno/c056969db90d847542e4b5eeddf4ada0b5516643.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isSvg.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const htmlCommentRegex = //g; + +/** + * @ignore + */ +const entityRegex = /\s*/gim; + +/** + * @ignore + */ +const svgRegex = /^\s*(?:<\?xml[^>]*>\s*)?(?:]*\s*(?:\[?(?:\s*]*>\s*)*\]?)*[^>]*>\s*)?(?:]*>[^]*<\/svg>|]*\/\s*>)\s*$/i; + +/** + * @example + * ```ts + * import {segno} from 'https://deno.land/x/segno/mod.ts'; + * + * segno.isSvg(' "> ]> + &Smile;'); // true + * segno.isSvg('this string ends with an svg '); // false + * ``` + */ +export const isSvg = (str: string) => { + assertString(str); + + return svgRegex.test( + str.replace(entityRegex, '').replace(htmlCommentRegex, '') + ); +}; diff --git a/bundler/tests/.cache/deno/c078dfefe17fcc0e0db64d8e80e839a885b108be.ts b/bundler/tests/.cache/deno/c078dfefe17fcc0e0db64d8e80e839a885b108be.ts new file mode 100644 index 00000000000..f0f65192474 --- /dev/null +++ b/bundler/tests/.cache/deno/c078dfefe17fcc0e0db64d8e80e839a885b108be.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/case/mod.ts + + +export { default as camelCase } from "./camelCase.ts"; +export { default as constantCase } from "./constantCase.ts"; +export { default as dotCase } from "./dotCase.ts"; +export { default as headerCase } from "./headerCase.ts"; +export { default as lowerCase } from "./lowerCase.ts"; +export { default as lowerFirstCase } from "./lowerFirstCase.ts"; +export { default as normalCase } from "./normalCase.ts"; +export { default as paramCase } from "./paramCase.ts"; +export { default as pascalCase } from "./pascalCase.ts"; +export { default as pathCase } from "./pathCase.ts"; +export { default as sentenceCase } from "./sentenceCase.ts"; +export { default as snakeCase } from "./snakeCase.ts"; +export { default as swapCase } from "./swapCase.ts"; +export { default as titleCase } from "./titleCase.ts"; +export { default as upperCase } from "./upperCase.ts"; +export { default as upperFirstCase } from "./upperFirstCase.ts"; diff --git a/bundler/tests/.cache/deno/c09715257bce4b5f1ac2a32ed67a6643af215831.ts b/bundler/tests/.cache/deno/c09715257bce4b5f1ac2a32ed67a6643af215831.ts new file mode 100644 index 00000000000..89113e07013 --- /dev/null +++ b/bundler/tests/.cache/deno/c09715257bce4b5f1ac2a32ed67a6643af215831.ts @@ -0,0 +1,170 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/sys/types.ts + + +/* @generated from adl module sys.types */ + +import type * as ADL from "./../runtime/adl.ts"; + +export interface Pair { + v1: T1; + v2: T2; +} + +export function makePair( + input: { + v1: T1, + v2: T2, + } +): Pair { + return { + v1: input.v1, + v2: input.v2, + }; +} + +const Pair_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"struct_","value":{"typeParams":["T1","T2"],"fields":[{"annotations":[],"serializedName":"v1","default":{"kind":"nothing"},"name":"v1","typeExpr":{"typeRef":{"kind":"typeParam","value":"T1"},"parameters":[]}},{"annotations":[],"serializedName":"v2","default":{"kind":"nothing"},"name":"v2","typeExpr":{"typeRef":{"kind":"typeParam","value":"T2"},"parameters":[]}}]}},"name":"Pair","version":{"kind":"nothing"}}}; + +export const snPair: ADL.ScopedName = {moduleName:"sys.types", name:"Pair"}; + +export function texprPair(texprT1 : ADL.ATypeExpr, texprT2 : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Pair"}}, parameters : [texprT1.value, texprT2.value]}}; +} + +export interface Either_Left { + kind: 'left'; + value: T1; +} +export interface Either_Right<_T1, T2> { + kind: 'right'; + value: T2; +} + +export type Either = Either_Left | Either_Right; + +export interface EitherOpts { + left: T1; + right: T2; +} + +export function makeEither>(kind: K, value: EitherOpts[K]) { return {kind, value}; } + +const Either_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"union_","value":{"typeParams":["T1","T2"],"fields":[{"annotations":[],"serializedName":"left","default":{"kind":"nothing"},"name":"left","typeExpr":{"typeRef":{"kind":"typeParam","value":"T1"},"parameters":[]}},{"annotations":[],"serializedName":"right","default":{"kind":"nothing"},"name":"right","typeExpr":{"typeRef":{"kind":"typeParam","value":"T2"},"parameters":[]}}]}},"name":"Either","version":{"kind":"nothing"}}}; + +export const snEither: ADL.ScopedName = {moduleName:"sys.types", name:"Either"}; + +export function texprEither(texprT1 : ADL.ATypeExpr, texprT2 : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Either"}}, parameters : [texprT1.value, texprT2.value]}}; +} + +export interface Maybe_Nothing<_T> { + kind: 'nothing'; +} +export interface Maybe_Just { + kind: 'just'; + value: T; +} + +export type Maybe = Maybe_Nothing | Maybe_Just; + +export interface MaybeOpts { + nothing: null; + just: T; +} + +export function makeMaybe>(kind: K, value: MaybeOpts[K]) { return {kind, value}; } + +const Maybe_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"union_","value":{"typeParams":["T"],"fields":[{"annotations":[],"serializedName":"nothing","default":{"kind":"nothing"},"name":"nothing","typeExpr":{"typeRef":{"kind":"primitive","value":"Void"},"parameters":[]}},{"annotations":[],"serializedName":"just","default":{"kind":"nothing"},"name":"just","typeExpr":{"typeRef":{"kind":"typeParam","value":"T"},"parameters":[]}}]}},"name":"Maybe","version":{"kind":"nothing"}}}; + +export const snMaybe: ADL.ScopedName = {moduleName:"sys.types", name:"Maybe"}; + +export function texprMaybe(texprT : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Maybe"}}, parameters : [texprT.value]}}; +} + +export interface Error_Value { + kind: 'value'; + value: T; +} +export interface Error_Error<_T> { + kind: 'error'; + value: string; +} + +export type Error = Error_Value | Error_Error; + +export interface ErrorOpts { + value: T; + error: string; +} + +export function makeError>(kind: K, value: ErrorOpts[K]) { return {kind, value}; } + +const Error_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"union_","value":{"typeParams":["T"],"fields":[{"annotations":[],"serializedName":"value","default":{"kind":"nothing"},"name":"value","typeExpr":{"typeRef":{"kind":"typeParam","value":"T"},"parameters":[]}},{"annotations":[],"serializedName":"error","default":{"kind":"nothing"},"name":"error","typeExpr":{"typeRef":{"kind":"primitive","value":"String"},"parameters":[]}}]}},"name":"Error","version":{"kind":"nothing"}}}; + +export const snError: ADL.ScopedName = {moduleName:"sys.types", name:"Error"}; + +export function texprError(texprT : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Error"}}, parameters : [texprT.value]}}; +} + +export interface MapEntry { + key: K; + value: V; +} + +export function makeMapEntry( + input: { + key: K, + value: V, + } +): MapEntry { + return { + key: input.key, + value: input.value, + }; +} + +const MapEntry_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"struct_","value":{"typeParams":["K","V"],"fields":[{"annotations":[],"serializedName":"k","default":{"kind":"nothing"},"name":"key","typeExpr":{"typeRef":{"kind":"typeParam","value":"K"},"parameters":[]}},{"annotations":[],"serializedName":"v","default":{"kind":"nothing"},"name":"value","typeExpr":{"typeRef":{"kind":"typeParam","value":"V"},"parameters":[]}}]}},"name":"MapEntry","version":{"kind":"nothing"}}}; + +export const snMapEntry: ADL.ScopedName = {moduleName:"sys.types", name:"MapEntry"}; + +export function texprMapEntry(texprK : ADL.ATypeExpr, texprV : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "MapEntry"}}, parameters : [texprK.value, texprV.value]}}; +} + +export type Map = Pair[]; + +const Map_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":["K","V"],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"Vector"},"parameters":[{"typeRef":{"kind":"reference","value":{"moduleName":"sys.types","name":"Pair"}},"parameters":[{"typeRef":{"kind":"typeParam","value":"K"},"parameters":[]},{"typeRef":{"kind":"typeParam","value":"V"},"parameters":[]}]}]}}},"name":"Map","version":{"kind":"nothing"}}}; + +export const snMap: ADL.ScopedName = {moduleName:"sys.types", name:"Map"}; + +export function texprMap(texprK : ADL.ATypeExpr, texprV : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Map"}}, parameters : [texprK.value, texprV.value]}}; +} + +export type Set = T[]; + +const Set_AST : ADL.ScopedDecl = + {"moduleName":"sys.types","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":["T"],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"Vector"},"parameters":[{"typeRef":{"kind":"typeParam","value":"T"},"parameters":[]}]}}},"name":"Set","version":{"kind":"nothing"}}}; + +export const snSet: ADL.ScopedName = {moduleName:"sys.types", name:"Set"}; + +export function texprSet(texprT : ADL.ATypeExpr): ADL.ATypeExpr> { + return {value : {typeRef : {kind: "reference", value : {moduleName : "sys.types",name : "Set"}}, parameters : [texprT.value]}}; +} + +export const _AST_MAP: { [key: string]: ADL.ScopedDecl } = { + "sys.types.Pair" : Pair_AST, + "sys.types.Either" : Either_AST, + "sys.types.Maybe" : Maybe_AST, + "sys.types.Error" : Error_AST, + "sys.types.MapEntry" : MapEntry_AST, + "sys.types.Map" : Map_AST, + "sys.types.Set" : Set_AST +}; diff --git a/bundler/tests/.cache/deno/c0c370d38bd92a781f4511fb5c9f00dfbbcc58f0.ts b/bundler/tests/.cache/deno/c0c370d38bd92a781f4511fb5c9f00dfbbcc58f0.ts new file mode 100644 index 00000000000..ac89231deb9 --- /dev/null +++ b/bundler/tests/.cache/deno/c0c370d38bd92a781f4511fb5c9f00dfbbcc58f0.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.84.0/flags/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/c0ce03471a94cad5d90a747f54576f5ac9b873df.ts b/bundler/tests/.cache/deno/c0ce03471a94cad5d90a747f54576f5ac9b873df.ts new file mode 100644 index 00000000000..6dfd7408cbf --- /dev/null +++ b/bundler/tests/.cache/deno/c0ce03471a94cad5d90a747f54576f5ac9b873df.ts @@ -0,0 +1,280 @@ +// Loaded from https://deno.land/std@0.77.0/fs/expand_glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { + GlobOptions, + globToRegExp, + isAbsolute, + isGlob, + joinGlobs, + normalize, + SEP_PATTERN, +} from "../path/mod.ts"; +import { + _createWalkEntry, + _createWalkEntrySync, + walk, + WalkEntry, + walkSync, +} from "./walk.ts"; +import { assert } from "../_util/assert.ts"; + +const isWindows = Deno.build.os == "windows"; + +export interface ExpandGlobOptions extends Omit { + root?: string; + exclude?: string[]; + includeDirs?: boolean; +} + +interface SplitPath { + segments: string[]; + isAbsolute: boolean; + hasTrailingSep: boolean; + // Defined for any absolute Windows path. + winRoot?: string; +} + +// TODO: Maybe make this public somewhere. +function split(path: string): SplitPath { + const s = SEP_PATTERN.source; + const segments = path + .replace(new RegExp(`^${s}|${s}$`, "g"), "") + .split(SEP_PATTERN); + const isAbsolute_ = isAbsolute(path); + return { + segments, + isAbsolute: isAbsolute_, + hasTrailingSep: !!path.match(new RegExp(`${s}$`)), + winRoot: isWindows && isAbsolute_ ? segments.shift() : undefined, + }; +} + +function throwUnlessNotFound(error: Error): void { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } +} + +function comparePath(a: WalkEntry, b: WalkEntry): number { + if (a.path < b.path) return -1; + if (a.path > b.path) return 1; + return 0; +} + +/** Expand the glob string from the specified `root` directory and yield each + * result as a `WalkEntry` object. + * + * See [`globToRegExp()`](../path/glob.ts#globToRegExp) for details on supported + * syntax. + * + * Example: + * + * for await (const file of expandGlob("**\/*.ts")) { + * console.log(file); + * } + */ +export async function* expandGlob( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): AsyncIterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = await _createWalkEntry(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + async function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): AsyncIterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield await _createWalkEntry(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walk(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walk(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for await (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} + +/** Synchronous version of `expandGlob()`. + * + * Example: + * + * for (const file of expandGlobSync("**\/*.ts")) { + * console.log(file); + * } + */ +export function* expandGlobSync( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): IterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = _createWalkEntrySync(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): IterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield _createWalkEntrySync(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walkSync(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walkSync(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} diff --git a/bundler/tests/.cache/deno/c10fe05df59983639d2fba76188e16798e5a90ae.ts b/bundler/tests/.cache/deno/c10fe05df59983639d2fba76188e16798e5a90ae.ts new file mode 100644 index 00000000000..3a06dac4533 --- /dev/null +++ b/bundler/tests/.cache/deno/c10fe05df59983639d2fba76188e16798e5a90ae.ts @@ -0,0 +1,81 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/connectors/postgres-connector.ts + + +import { PostgresClient } from "../../deps.ts"; +import type { Connector, ConnectorOptions } from "./connector.ts"; +import { SQLTranslator } from "../translators/sql-translator.ts"; +import type { QueryDescription } from "../query-builder.ts"; +import type { Values } from "../data-types.ts"; + +export interface PostgresOptions extends ConnectorOptions { + database: string; + host: string; + username: string; + password: string; + port?: number; +} + +export class PostgresConnector implements Connector { + _client: PostgresClient; + _options: PostgresOptions; + _translator: SQLTranslator; + _connected = false; + + /** Create a PostgreSQL connection. */ + constructor(options: PostgresOptions) { + this._options = options; + this._client = new PostgresClient({ + hostname: options.host, + user: options.username, + password: options.password, + database: options.database, + port: options.port ?? 5432, + }); + this._translator = new SQLTranslator("postgres"); + } + + async _makeConnection() { + if (this._connected) { + return; + } + + await this._client.connect(); + this._connected = true; + } + + async ping() { + await this._makeConnection(); + + try { + const [{ result }] = ( + await this._client.query("SELECT 1 + 1 as result") + ).rowsOfObjects(); + return result === 2; + } catch (error) { + return false; + } + } + + async query(queryDescription: QueryDescription): Promise { + await this._makeConnection(); + + const query = this._translator.translateToQuery(queryDescription); + const response = await this._client.query(query); + const results = response.rowsOfObjects() as Values[]; + + if (queryDescription.type === "insert") { + return results.length === 1 ? results[0] : results; + } + + return results; + } + + async close() { + if (!this._connected) { + return; + } + + await this._client.end(); + this._connected = false; + } +} diff --git a/bundler/tests/.cache/deno/c14c897c247cc99ff37cf3deb00f9584b76bb808.ts b/bundler/tests/.cache/deno/c14c897c247cc99ff37cf3deb00f9584b76bb808.ts new file mode 100644 index 00000000000..6a9819db8b9 --- /dev/null +++ b/bundler/tests/.cache/deno/c14c897c247cc99ff37cf3deb00f9584b76bb808.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.81.0/_util/has_own_property.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * Determines whether an object has a property with the specified name. + * Avoid calling prototype builtin `hasOwnProperty` for two reasons: + * + * 1. `hasOwnProperty` is defined on the object as something else: + * + * const options = { + * ending: 'utf8', + * hasOwnProperty: 'foo' + * }; + * options.hasOwnProperty('ending') // throws a TypeError + * + * 2. The object doesn't inherit from `Object.prototype`: + * + * const options = Object.create(null); + * options.ending = 'utf8'; + * options.hasOwnProperty('ending'); // throws a TypeError + * + * @param obj A Object. + * @param v A property name. + * @see https://eslint.org/docs/rules/no-prototype-builtins + */ +export function hasOwnProperty(obj: T, v: PropertyKey): boolean { + if (obj == null) { + return false; + } + return Object.prototype.hasOwnProperty.call(obj, v); +} diff --git a/bundler/tests/.cache/deno/c22b5f7aac3f5c747b6671c9b83c20623b5e9804.ts b/bundler/tests/.cache/deno/c22b5f7aac3f5c747b6671c9b83c20623b5e9804.ts new file mode 100644 index 00000000000..dba6a99d225 --- /dev/null +++ b/bundler/tests/.cache/deno/c22b5f7aac3f5c747b6671c9b83c20623b5e9804.ts @@ -0,0 +1,107 @@ +// Loaded from https://deno.land/x/sqlite@v2.3.1/build/vfs.js + + +import { getStr } from "../src/wasm.ts"; + +// Closure to return an environment that links +// the current wasm context +export default function env(inst) { + // Map file rids to file names, since + // some of Deno's os methods use files-names + // instead of resource ids. + const files = new Map(); + + // Exported environment + const env = { + // Print a string pointer to console + js_print: (str_ptr) => { + const text = getStr(inst.exports, str_ptr); + console.log(text[text.length - 1] === "\n" ? text.slice(0, -1) : text); + }, + // Open the file at path, mode = 0 is open RW, mode = 1 is open TEMP + js_open: (path_ptr, mode) => { + let path; + switch (mode) { + case 0: + path = getStr(inst.exports, path_ptr); + break; + case 1: + path = Deno.makeTempFileSync({ prefix: "deno_sqlite" }); + break; + } + let rid = + Deno.openSync(path, { read: true, write: true, create: true }).rid; + files.set(rid, path); + return rid; + }, + // Close a file + js_close: (rid) => { + Deno.close(rid); + files.delete(rid); + }, + // Delete file at path + js_delete: (path_ptr) => { + let path = getStr(inst.exports, path_ptr); + Deno.removeSync(path); + }, + // Read from a file to a buffer in the module + js_read: (rid, buffer_ptr, offset, amount) => { + const buffer = new Uint8Array( + inst.exports.memory.buffer, + buffer_ptr, + amount, + ); + Deno.seekSync(rid, offset, Deno.SeekMode.Start); + return Deno.readSync(rid, buffer); + }, + // Write to a file from a buffer in the module + js_write: (rid, buffer_ptr, offset, amount) => { + const buffer = new Uint8Array( + inst.exports.memory.buffer, + buffer_ptr, + amount, + ); + Deno.seekSync(rid, offset, Deno.SeekMode.Start); + return Deno.writeSync(rid, buffer); + }, + // Truncate the given file + js_truncate: (rid, size) => { + Deno.truncateSync(files.get(rid), size); + }, + // Retrieve the size of the given file + js_size: (rid) => { + return Deno.statSync(files.get(rid)).size; + }, + // Return current time in ms since UNIX epoch + js_time: () => { + return Date.now(); + }, + // Determine if a path exists + js_exists: (path_ptr) => { + const path = getStr(inst.exports, path_ptr); + try { + Deno.statSync(path); + } catch (e) { + if (e instanceof Deno.errors.NotFound) { + return 0; + } + } + return 1; + }, + // Determine if a path is accessible i.e. if it has read/write permissions + // TODO(dyedgreen): Properly determine if there are read permissions + js_access: (path_ptr) => { + const path = getStr(inst.exports, path_ptr); + try { + Deno.statSync(path); + } catch (e) { + if (e instanceof Deno.errors.PermissionDenied) { + return 0; + } + } + return 1; + }, + }; + + return { env }; +} diff --git a/bundler/tests/.cache/deno/c2302aee2f4be0793fef68ba297edfe23ac4b272.ts b/bundler/tests/.cache/deno/c2302aee2f4be0793fef68ba297edfe23ac4b272.ts new file mode 100644 index 00000000000..5ad288b5fb3 --- /dev/null +++ b/bundler/tests/.cache/deno/c2302aee2f4be0793fef68ba297edfe23ac4b272.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/LoneAnonymousOperationRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; + +/** + * Lone anonymous operation + * + * A GraphQL document is only valid if when it contains an anonymous operation + * (the query short-hand) that it contains only that one operation definition. + */ +export function LoneAnonymousOperationRule(context) { + let operationCount = 0; + return { + Document(node) { + operationCount = node.definitions.filter(definition => definition.kind === Kind.OPERATION_DEFINITION).length; + }, + + OperationDefinition(node) { + if (!node.name && operationCount > 1) { + context.reportError(new GraphQLError('This anonymous operation must be the only defined operation.', node)); + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/c243d23aecc4d9f5798b7604b10ff3a5879cf0ab.ts b/bundler/tests/.cache/deno/c243d23aecc4d9f5798b7604b10ff3a5879cf0ab.ts new file mode 100644 index 00000000000..ab193196def --- /dev/null +++ b/bundler/tests/.cache/deno/c243d23aecc4d9f5798b7604b10ff3a5879cf0ab.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/mod.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export { binary } from "./binary.ts"; +export { bool } from "./bool.ts"; +export { float } from "./float.ts"; +export { int } from "./int.ts"; +export { map } from "./map.ts"; +export { merge } from "./merge.ts"; +export { nil } from "./nil.ts"; +export { omap } from "./omap.ts"; +export { pairs } from "./pairs.ts"; +export { seq } from "./seq.ts"; +export { set } from "./set.ts"; +export { str } from "./str.ts"; +export { timestamp } from "./timestamp.ts"; diff --git a/bundler/tests/.cache/deno/c2897f055a87c27545600578ff624f3a597d0bbe.ts b/bundler/tests/.cache/deno/c2897f055a87c27545600578ff624f3a597d0bbe.ts new file mode 100644 index 00000000000..bfb8619d15a --- /dev/null +++ b/bundler/tests/.cache/deno/c2897f055a87c27545600578ff624f3a597d0bbe.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.84.0/fmt/colors.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors +// on npm. +// +// ``` +// import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; +// console.log(bgBlue(red(bold("Hello world!")))); +// ``` +// +// This module supports `NO_COLOR` environmental variable disabling any coloring +// if `NO_COLOR` is set. +// +// This module is browser compatible. + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/c29ca8bdf0e04d5f285d44d868b422fcf28dd8bc.ts b/bundler/tests/.cache/deno/c29ca8bdf0e04d5f285d44d868b422fcf28dd8bc.ts new file mode 100644 index 00000000000..89561e4eed4 --- /dev/null +++ b/bundler/tests/.cache/deno/c29ca8bdf0e04d5f285d44d868b422fcf28dd8bc.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/clamp.js + + +import _curry3 from './internal/_curry3.js'; + +/** + * Restricts a number to be within a range. + * + * Also works for other ordered types such as Strings and Dates. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Relation + * @sig Ord a => a -> a -> a -> a + * @param {Number} minimum The lower limit of the clamp (inclusive) + * @param {Number} maximum The upper limit of the clamp (inclusive) + * @param {Number} value Value to be clamped + * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise + * @example + * + * R.clamp(1, 10, -5) // => 1 + * R.clamp(1, 10, 15) // => 10 + * R.clamp(1, 10, 4) // => 4 + */ +var clamp = _curry3(function clamp(min, max, value) { + if (min > max) { + throw new Error('min must not be greater than max in clamp(min, max, value)'); + } + return value < min + ? min + : value > max + ? max + : value; +}); +export default clamp; diff --git a/bundler/tests/.cache/deno/c29e9778b67063ad104296ceb03655620d0798f7.ts b/bundler/tests/.cache/deno/c29e9778b67063ad104296ceb03655620d0798f7.ts new file mode 100644 index 00000000000..2deecd117ef --- /dev/null +++ b/bundler/tests/.cache/deno/c29e9778b67063ad104296ceb03655620d0798f7.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/range.js + + +import _curry2 from './internal/_curry2.js'; +import _isNumber from './internal/_isNumber.js'; + + +/** + * Returns a list of numbers from `from` (inclusive) to `to` (exclusive). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> Number -> [Number] + * @param {Number} from The first number in the list. + * @param {Number} to One more than the last number in the list. + * @return {Array} The list of numbers in the set `[a, b)`. + * @example + * + * R.range(1, 5); //=> [1, 2, 3, 4] + * R.range(50, 53); //=> [50, 51, 52] + */ +var range = _curry2(function range(from, to) { + if (!(_isNumber(from) && _isNumber(to))) { + throw new TypeError('Both arguments to range must be numbers'); + } + var result = []; + var n = from; + while (n < to) { + result.push(n); + n += 1; + } + return result; +}); +export default range; diff --git a/bundler/tests/.cache/deno/c2aa2ea224ab15081a36313c8ffcf8b43d2bbe47.ts b/bundler/tests/.cache/deno/c2aa2ea224ab15081a36313c8ffcf8b43d2bbe47.ts new file mode 100644 index 00000000000..a57ffd70014 --- /dev/null +++ b/bundler/tests/.cache/deno/c2aa2ea224ab15081a36313c8ffcf8b43d2bbe47.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lastIndexOf.js + + +import _curry2 from './internal/_curry2.js'; +import _isArray from './internal/_isArray.js'; +import equals from './equals.js'; + + +/** + * Returns the position of the last occurrence of an item in an array, or -1 if + * the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.indexOf + * @example + * + * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 + * R.lastIndexOf(10, [1,2,3,4]); //=> -1 + */ +var lastIndexOf = _curry2(function lastIndexOf(target, xs) { + if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) { + return xs.lastIndexOf(target); + } else { + var idx = xs.length - 1; + while (idx >= 0) { + if (equals(xs[idx], target)) { + return idx; + } + idx -= 1; + } + return -1; + } +}); +export default lastIndexOf; diff --git a/bundler/tests/.cache/deno/c2ca017d610e882401452cd03ed1afd2826dba92.ts b/bundler/tests/.cache/deno/c2ca017d610e882401452cd03ed1afd2826dba92.ts new file mode 100644 index 00000000000..55b2abd5b15 --- /dev/null +++ b/bundler/tests/.cache/deno/c2ca017d610e882401452cd03ed1afd2826dba92.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/schema/failsafe.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { map, seq, str } from "../type/mod.ts"; + +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 +export const failsafe = new Schema({ + explicit: [str, seq, map], +}); diff --git a/bundler/tests/.cache/deno/c3c606b9343c0c7fb21fc911c8188c8ab6a8450f.ts b/bundler/tests/.cache/deno/c3c606b9343c0c7fb21fc911c8188c8ab6a8450f.ts new file mode 100644 index 00000000000..602eb0a51e8 --- /dev/null +++ b/bundler/tests/.cache/deno/c3c606b9343c0c7fb21fc911c8188c8ab6a8450f.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/deps.ts + + +import * as flags from "https://deno.land/std@0.77.0/flags/mod.ts"; +import * as path from "https://deno.land/std@0.77.0/path/mod.ts"; +import * as log from "https://deno.land/std@0.77.0/log/mod.ts"; +import * as fs from "https://deno.land/std@0.77.0/fs/mod.ts"; +import * as hash from "https://deno.land/std@0.77.0/hash/mod.ts"; +import * as semver from "https://deno.land/x/semver@v1.0.0/mod.ts"; + +export { + flags, + path, + log, + fs, + hash, + semver, +}; diff --git a/bundler/tests/.cache/deno/c4739ed0dfdba3a3ef0253d4341f848d2b9d1fee.ts b/bundler/tests/.cache/deno/c4739ed0dfdba3a3ef0253d4341f848d2b9d1fee.ts new file mode 100644 index 00000000000..fffdf347d64 --- /dev/null +++ b/bundler/tests/.cache/deno/c4739ed0dfdba3a3ef0253d4341f848d2b9d1fee.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std/_util/assert.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/c5160638be20ce382e11e3b363c25e3c192e2711.ts b/bundler/tests/.cache/deno/c5160638be20ce382e11e3b363c25e3c192e2711.ts new file mode 100644 index 00000000000..33ebe2a7f8a --- /dev/null +++ b/bundler/tests/.cache/deno/c5160638be20ce382e11e3b363c25e3c192e2711.ts @@ -0,0 +1,226 @@ +// Loaded from https://deno.land/std@0.77.0/testing/_diff.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +interface FarthestPoint { + y: number; + id: number; +} + +export enum DiffType { + removed = "removed", + common = "common", + added = "added", +} + +export interface DiffResult { + type: DiffType; + value: T; +} + +const REMOVED = 1; +const COMMON = 2; +const ADDED = 3; + +function createCommon(A: T[], B: T[], reverse?: boolean): T[] { + const common = []; + if (A.length === 0 || B.length === 0) return []; + for (let i = 0; i < Math.min(A.length, B.length); i += 1) { + if ( + A[reverse ? A.length - i - 1 : i] === B[reverse ? B.length - i - 1 : i] + ) { + common.push(A[reverse ? A.length - i - 1 : i]); + } else { + return common; + } + } + return common; +} + +export function diff(A: T[], B: T[]): Array> { + const prefixCommon = createCommon(A, B); + const suffixCommon = createCommon( + A.slice(prefixCommon.length), + B.slice(prefixCommon.length), + true, + ).reverse(); + A = suffixCommon.length + ? A.slice(prefixCommon.length, -suffixCommon.length) + : A.slice(prefixCommon.length); + B = suffixCommon.length + ? B.slice(prefixCommon.length, -suffixCommon.length) + : B.slice(prefixCommon.length); + const swapped = B.length > A.length; + [A, B] = swapped ? [B, A] : [A, B]; + const M = A.length; + const N = B.length; + if (!M && !N && !suffixCommon.length && !prefixCommon.length) return []; + if (!N) { + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...A.map( + (a): DiffResult => ({ + type: swapped ? DiffType.added : DiffType.removed, + value: a, + }), + ), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; + } + const offset = N; + const delta = M - N; + const size = M + N + 1; + const fp = new Array(size).fill({ y: -1 }); + /** + * INFO: + * This buffer is used to save memory and improve performance. + * The first half is used to save route and last half is used to save diff + * type. + * This is because, when I kept new uint8array area to save type,performance + * worsened. + */ + const routes = new Uint32Array((M * N + size + 1) * 2); + const diffTypesPtrOffset = routes.length / 2; + let ptr = 0; + let p = -1; + + function backTrace( + A: T[], + B: T[], + current: FarthestPoint, + swapped: boolean, + ): Array<{ + type: DiffType; + value: T; + }> { + const M = A.length; + const N = B.length; + const result = []; + let a = M - 1; + let b = N - 1; + let j = routes[current.id]; + let type = routes[current.id + diffTypesPtrOffset]; + while (true) { + if (!j && !type) break; + const prev = j; + if (type === REMOVED) { + result.unshift({ + type: swapped ? DiffType.removed : DiffType.added, + value: B[b], + }); + b -= 1; + } else if (type === ADDED) { + result.unshift({ + type: swapped ? DiffType.added : DiffType.removed, + value: A[a], + }); + a -= 1; + } else { + result.unshift({ type: DiffType.common, value: A[a] }); + a -= 1; + b -= 1; + } + j = routes[prev]; + type = routes[prev + diffTypesPtrOffset]; + } + return result; + } + + function createFP( + slide: FarthestPoint, + down: FarthestPoint, + k: number, + M: number, + ): FarthestPoint { + if (slide && slide.y === -1 && down && down.y === -1) { + return { y: 0, id: 0 }; + } + if ( + (down && down.y === -1) || + k === M || + (slide && slide.y) > (down && down.y) + 1 + ) { + const prev = slide.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = ADDED; + return { y: slide.y, id: ptr }; + } else { + const prev = down.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = REMOVED; + return { y: down.y + 1, id: ptr }; + } + } + + function snake( + k: number, + slide: FarthestPoint, + down: FarthestPoint, + _offset: number, + A: T[], + B: T[], + ): FarthestPoint { + const M = A.length; + const N = B.length; + if (k < -N || M < k) return { y: -1, id: -1 }; + const fp = createFP(slide, down, k, M); + while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) { + const prev = fp.id; + ptr++; + fp.id = ptr; + fp.y += 1; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = COMMON; + } + return fp; + } + + while (fp[delta + offset].y < N) { + p = p + 1; + for (let k = -p; k < delta; ++k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + for (let k = delta + p; k > delta; --k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + fp[delta + offset] = snake( + delta, + fp[delta - 1 + offset], + fp[delta + 1 + offset], + offset, + A, + B, + ); + } + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...backTrace(A, B, fp[delta + offset], swapped), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; +} diff --git a/bundler/tests/.cache/deno/c523b0da484f98437113f77e4c725032c98cf6fb.ts b/bundler/tests/.cache/deno/c523b0da484f98437113f77e4c725032c98cf6fb.ts new file mode 100644 index 00000000000..75754d8f708 --- /dev/null +++ b/bundler/tests/.cache/deno/c523b0da484f98437113f77e4c725032c98cf6fb.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/juxt.js + + +import _curry1 from './internal/_curry1.js'; +import converge from './converge.js'; + + +/** + * juxt applies a list of functions to a list of values. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Function + * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n]) + * @param {Array} fns An array of functions + * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters. + * @see R.applySpec + * @example + * + * const getRange = R.juxt([Math.min, Math.max]); + * getRange(3, 4, 9, -3); //=> [-3, 9] + * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)] + */ +var juxt = _curry1(function juxt(fns) { + return converge(function() { return Array.prototype.slice.call(arguments, 0); }, fns); +}); +export default juxt; diff --git a/bundler/tests/.cache/deno/c56c554ad54951f2e2edce9f63603257451e7673.ts b/bundler/tests/.cache/deno/c56c554ad54951f2e2edce9f63603257451e7673.ts new file mode 100644 index 00000000000..697882ad71d --- /dev/null +++ b/bundler/tests/.cache/deno/c56c554ad54951f2e2edce9f63603257451e7673.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std/path/common.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/c5a6eef65797e61b302a185f91d1792d86c3e97e.ts b/bundler/tests/.cache/deno/c5a6eef65797e61b302a185f91d1792d86c3e97e.ts new file mode 100644 index 00000000000..1ec90576f17 --- /dev/null +++ b/bundler/tests/.cache/deno/c5a6eef65797e61b302a185f91d1792d86c3e97e.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueTypeNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique type names + * + * A GraphQL document is only valid if all defined types have unique names. + */ +export function UniqueTypeNamesRule(context) { + const knownTypeNames = Object.create(null); + const schema = context.getSchema(); + return { + ScalarTypeDefinition: checkTypeName, + ObjectTypeDefinition: checkTypeName, + InterfaceTypeDefinition: checkTypeName, + UnionTypeDefinition: checkTypeName, + EnumTypeDefinition: checkTypeName, + InputObjectTypeDefinition: checkTypeName + }; + + function checkTypeName(node) { + const typeName = node.name.value; + + if (schema?.getType(typeName)) { + context.reportError(new GraphQLError(`Type "${typeName}" already exists in the schema. It cannot also be defined in this type definition.`, node.name)); + return; + } + + if (knownTypeNames[typeName]) { + context.reportError(new GraphQLError(`There can be only one type named "${typeName}".`, [knownTypeNames[typeName], node.name])); + } else { + knownTypeNames[typeName] = node.name; + } + + return false; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/c5efacd3b01ae2bec96353858bc543e6a6055224.ts b/bundler/tests/.cache/deno/c5efacd3b01ae2bec96353858bc543e6a6055224.ts new file mode 100644 index 00000000000..1676ca3c2b0 --- /dev/null +++ b/bundler/tests/.cache/deno/c5efacd3b01ae2bec96353858bc543e6a6055224.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/none.js + + +import _complement from './internal/_complement.js'; +import _curry2 from './internal/_curry2.js'; +import all from './all.js'; + + +/** + * Returns `true` if no elements of the list match the predicate, `false` + * otherwise. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise. + * @see R.all, R.any + * @example + * + * const isEven = n => n % 2 === 0; + * const isOdd = n => n % 2 === 1; + * + * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true + * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false + */ +var none = _curry2(function none(fn, input) { + return all(_complement(fn), input); +}); +export default none; diff --git a/bundler/tests/.cache/deno/c658df173df2a224ae3f7239f17771261507be83.ts b/bundler/tests/.cache/deno/c658df173df2a224ae3f7239f17771261507be83.ts new file mode 100644 index 00000000000..bd04b8dbbe2 --- /dev/null +++ b/bundler/tests/.cache/deno/c658df173df2a224ae3f7239f17771261507be83.ts @@ -0,0 +1,445 @@ +// Loaded from https://deno.land/std@0.67.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + assertPath, + normalizeString, + isPosixPathSeparator, + _format, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +export function format(pathObject: FormatInputPathObject): string { + /* eslint-disable max-len */ + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} diff --git a/bundler/tests/.cache/deno/c66e79a62dda0af277aa98d552d9cdde889000a0.ts b/bundler/tests/.cache/deno/c66e79a62dda0af277aa98d552d9cdde889000a0.ts new file mode 100644 index 00000000000..9bb31a84207 --- /dev/null +++ b/bundler/tests/.cache/deno/c66e79a62dda0af277aa98d552d9cdde889000a0.ts @@ -0,0 +1,466 @@ +// Loaded from https://deno.land/std@0.77.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** resolves `pathSegments` into an absolute path. */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** Notmalize the `path`, resolving `'..'` and `'.'` segments. */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** Join all given a sequence of `paths`,then normalizes the resulting path. */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** Return the relative path from `from` to `to` based on current working directory. */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** Return the directory name of a `path`. */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** Return the last portion of a `path`. Trailing directory separators are ignored. */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** Return the extention of the `path`. */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** Generate a path from `FormatInputPathObject` object. */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** Return a `ParsedPath` object of the `path`. */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/c690ca445ae96ec0cd3f3b45436c134f70c6aa6a.ts b/bundler/tests/.cache/deno/c690ca445ae96ec0cd3f3b45436c134f70c6aa6a.ts new file mode 100644 index 00000000000..4cc9ad95c4a --- /dev/null +++ b/bundler/tests/.cache/deno/c690ca445ae96ec0cd3f3b45436c134f70c6aa6a.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/base64/base64url.ts + + +import { init } from "./base.ts"; + +const lookup: string[] = []; +const revLookup: number[] = []; +const code: string = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; + +for (let i: number = 0, l = code.length; i < l; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; +} + +export const { byteLength, toUint8Array, fromUint8Array } = init( + lookup, + revLookup, + true, +); diff --git a/bundler/tests/.cache/deno/c6b66edb91ebd6db54ce6aa59b21f51319c5c7fa.ts b/bundler/tests/.cache/deno/c6b66edb91ebd6db54ce6aa59b21f51319c5c7fa.ts new file mode 100644 index 00000000000..66fc2a986ef --- /dev/null +++ b/bundler/tests/.cache/deno/c6b66edb91ebd6db54ce6aa59b21f51319c5c7fa.ts @@ -0,0 +1,256 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/printer.js + + +import { visit } from './visitor.js'; +import { printBlockString } from './blockString.js'; +/** + * Converts an AST into a string, using one set of reasonable + * formatting rules. + */ + +export function print(ast) { + return visit(ast, { + leave: printDocASTReducer + }); +} // TODO: provide better type coverage in future + +const printDocASTReducer = { + Name: node => node.value, + Variable: node => '$' + node.name, + // Document + Document: node => join(node.definitions, '\n\n') + '\n', + + OperationDefinition(node) { + const op = node.operation; + const name = node.name; + const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')'); + const directives = join(node.directives, ' '); + const selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use + // the query short form. + + return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' '); + }, + + VariableDefinition: ({ + variable, + type, + defaultValue, + directives + }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')), + SelectionSet: ({ + selections + }) => block(selections), + Field: ({ + alias, + name, + arguments: args, + directives, + selectionSet + }) => join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' '), + Argument: ({ + name, + value + }) => name + ': ' + value, + // Fragments + FragmentSpread: ({ + name, + directives + }) => '...' + name + wrap(' ', join(directives, ' ')), + InlineFragment: ({ + typeCondition, + directives, + selectionSet + }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '), + FragmentDefinition: ({ + name, + typeCondition, + variableDefinitions, + directives, + selectionSet + }) => // Note: fragment variable definitions are experimental and may be changed + // or removed in the future. + `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` + `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` + selectionSet, + // Value + IntValue: ({ + value + }) => value, + FloatValue: ({ + value + }) => value, + StringValue: ({ + value, + block: isBlockString + }, key) => isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value), + BooleanValue: ({ + value + }) => value ? 'true' : 'false', + NullValue: () => 'null', + EnumValue: ({ + value + }) => value, + ListValue: ({ + values + }) => '[' + join(values, ', ') + ']', + ObjectValue: ({ + fields + }) => '{' + join(fields, ', ') + '}', + ObjectField: ({ + name, + value + }) => name + ': ' + value, + // Directive + Directive: ({ + name, + arguments: args + }) => '@' + name + wrap('(', join(args, ', '), ')'), + // Type + NamedType: ({ + name + }) => name, + ListType: ({ + type + }) => '[' + type + ']', + NonNullType: ({ + type + }) => type + '!', + // Type System Definitions + SchemaDefinition: addDescription(({ + directives, + operationTypes + }) => join(['schema', join(directives, ' '), block(operationTypes)], ' ')), + OperationTypeDefinition: ({ + operation, + type + }) => operation + ': ' + type, + ScalarTypeDefinition: addDescription(({ + name, + directives + }) => join(['scalar', name, join(directives, ' ')], ' ')), + ObjectTypeDefinition: addDescription(({ + name, + interfaces, + directives, + fields + }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ')), + FieldDefinition: addDescription(({ + name, + arguments: args, + type, + directives + }) => name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '))), + InputValueDefinition: addDescription(({ + name, + type, + defaultValue, + directives + }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ')), + InterfaceTypeDefinition: addDescription(({ + name, + interfaces, + directives, + fields + }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ')), + UnionTypeDefinition: addDescription(({ + name, + directives, + types + }) => join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ')), + EnumTypeDefinition: addDescription(({ + name, + directives, + values + }) => join(['enum', name, join(directives, ' '), block(values)], ' ')), + EnumValueDefinition: addDescription(({ + name, + directives + }) => join([name, join(directives, ' ')], ' ')), + InputObjectTypeDefinition: addDescription(({ + name, + directives, + fields + }) => join(['input', name, join(directives, ' '), block(fields)], ' ')), + DirectiveDefinition: addDescription(({ + name, + arguments: args, + repeatable, + locations + }) => 'directive @' + name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ')), + SchemaExtension: ({ + directives, + operationTypes + }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '), + ScalarTypeExtension: ({ + name, + directives + }) => join(['extend scalar', name, join(directives, ' ')], ' '), + ObjectTypeExtension: ({ + name, + interfaces, + directives, + fields + }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + InterfaceTypeExtension: ({ + name, + interfaces, + directives, + fields + }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '), + UnionTypeExtension: ({ + name, + directives, + types + }) => join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' '), + EnumTypeExtension: ({ + name, + directives, + values + }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '), + InputObjectTypeExtension: ({ + name, + directives, + fields + }) => join(['extend input', name, join(directives, ' '), block(fields)], ' ') +}; + +function addDescription(cb) { + return node => join([node.description, cb(node)], '\n'); +} +/** + * Given maybeArray, print an empty string if it is null or empty, otherwise + * print all items together separated by separator if provided + */ + + +function join(maybeArray, separator = '') { + return maybeArray?.filter(x => x).join(separator) ?? ''; +} +/** + * Given array, print each item on its own line, wrapped in an + * indented "{ }" block. + */ + + +function block(array) { + return array && array.length !== 0 ? '{\n' + indent(join(array, '\n')) + '\n}' : ''; +} +/** + * If maybeString is not null or empty, then wrap with start and end, otherwise + * print an empty string. + */ + + +function wrap(start, maybeString, end = '') { + return maybeString ? start + maybeString + end : ''; +} + +function indent(maybeString) { + return maybeString && ' ' + maybeString.replace(/\n/g, '\n '); +} + +function isMultiline(string) { + return string.indexOf('\n') !== -1; +} + +function hasMultilineItems(maybeArray) { + return maybeArray && maybeArray.some(isMultiline); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/c70c2c5563cc9193ee224d296df7f47443319d4c.ts b/bundler/tests/.cache/deno/c70c2c5563cc9193ee224d296df7f47443319d4c.ts new file mode 100644 index 00000000000..e1c33fd12dd --- /dev/null +++ b/bundler/tests/.cache/deno/c70c2c5563cc9193ee224d296df7f47443319d4c.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/handshake.ts + + +import { WireProtocol } from "./protocol.ts"; + +export const driverMetadata = { + driver: { + name: "Deno Mongo", + version: "v0.0.1", + }, + os: { + type: Deno.build.os, + name: Deno.build.os, + architecture: Deno.build.arch, + }, +}; + +interface HandshakeResponse { + ismaster: string; + maxBsonObjectSize: number; + maxMessageSizeBytes: number; + maxWriteBatchSize: number; + localTime: Date; + logicalSessionTimeoutMinutes: number; + connectionId: number; + minWireVersion: number; + maxWireVersion: number; + readOnly: boolean; + ok: number; +} + +export async function handshake( + protocol: WireProtocol, +): Promise { + const reply = await protocol.commandSingle("admin", { + isMaster: true, + client: driverMetadata, + }); + return reply; +} diff --git a/bundler/tests/.cache/deno/c71df4d383788df8395a01a44b7d68ceef33a84b.ts b/bundler/tests/.cache/deno/c71df4d383788df8395a01a44b7d68ceef33a84b.ts new file mode 100644 index 00000000000..9c30c01723e --- /dev/null +++ b/bundler/tests/.cache/deno/c71df4d383788df8395a01a44b7d68ceef33a84b.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unfold.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Builds a list from a seed value. Accepts an iterator function, which returns + * either false to stop iteration or an array of length 2 containing the value + * to add to the resulting list and the seed to be used in the next call to the + * iterator function. + * + * The iterator function receives one argument: *(seed)*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a -> [b]) -> * -> [b] + * @param {Function} fn The iterator function. receives one argument, `seed`, and returns + * either false to quit iteration or an array of length two to proceed. The element + * at index 0 of this array will be added to the resulting array, and the element + * at index 1 will be passed to the next call to `fn`. + * @param {*} seed The seed value. + * @return {Array} The final list. + * @example + * + * const f = n => n > 50 ? false : [-n, n + 10]; + * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50] + * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...] + */ +var unfold = _curry2(function unfold(fn, seed) { + var pair = fn(seed); + var result = []; + while (pair && pair.length) { + result[result.length] = pair[0]; + pair = fn(pair[1]); + } + return result; +}); +export default unfold; diff --git a/bundler/tests/.cache/deno/c74c40a9e71a01d2a563831bc6582bcb9203c543.ts b/bundler/tests/.cache/deno/c74c40a9e71a01d2a563831bc6582bcb9203c543.ts new file mode 100644 index 00000000000..548a485015e --- /dev/null +++ b/bundler/tests/.cache/deno/c74c40a9e71a01d2a563831bc6582bcb9203c543.ts @@ -0,0 +1,322 @@ +// Loaded from https://deno.land/std@0.73.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +export function getColorEnabled(): boolean { + return enabled; +} + +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +export function black(str: string): string { + return run(str, code([30], 39)); +} + +export function red(str: string): string { + return run(str, code([31], 39)); +} + +export function green(str: string): string { + return run(str, code([32], 39)); +} + +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +export function white(str: string): string { + return run(str, code([37], 39)); +} + +export function gray(str: string): string { + return brightBlack(str); +} + +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/c76ca21f9dfe95b39bd838a0ef3cb4d5492970ee.ts b/bundler/tests/.cache/deno/c76ca21f9dfe95b39bd838a0ef3cb4d5492970ee.ts new file mode 100644 index 00000000000..4b7b6add9b6 --- /dev/null +++ b/bundler/tests/.cache/deno/c76ca21f9dfe95b39bd838a0ef3cb4d5492970ee.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueOperationNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique operation names + * + * A GraphQL document is only valid if all defined operations have unique names. + */ +export function UniqueOperationNamesRule(context) { + const knownOperationNames = Object.create(null); + return { + OperationDefinition(node) { + const operationName = node.name; + + if (operationName) { + if (knownOperationNames[operationName.value]) { + context.reportError(new GraphQLError(`There can be only one operation named "${operationName.value}".`, [knownOperationNames[operationName.value], operationName])); + } else { + knownOperationNames[operationName.value] = operationName; + } + } + + return false; + }, + + FragmentDefinition: () => false + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/c7838e1b8c6125262a0b8fde9af47c141631d52e.ts b/bundler/tests/.cache/deno/c7838e1b8c6125262a0b8fde9af47c141631d52e.ts new file mode 100644 index 00000000000..bc57f9b4aaf --- /dev/null +++ b/bundler/tests/.cache/deno/c7838e1b8c6125262a0b8fde9af47c141631d52e.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/o.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * `o` is a curried composition function that returns a unary function. + * Like [`compose`](#compose), `o` performs right-to-left function composition. + * Unlike [`compose`](#compose), the rightmost function passed to `o` will be + * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is + * limited to accepting only 2 unary functions. The name o was chosen because + * of its similarity to the mathematical composition operator ∘. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (b -> c) -> (a -> b) -> a -> c + * @param {Function} f + * @param {Function} g + * @return {Function} + * @see R.compose, R.pipe + * @example + * + * const classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + name.last + * const yellGreeting = R.o(R.toUpper, classyGreeting); + * yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.o(R.multiply(10), R.add(10))(-4) //=> 60 + * + * @symb R.o(f, g, x) = f(g(x)) + */ +var o = _curry3(function o(f, g, x) { + return f(g(x)); +}); +export default o; diff --git a/bundler/tests/.cache/deno/c78d3084a2ef9400c44051b01f4c1749775180a2.ts b/bundler/tests/.cache/deno/c78d3084a2ef9400c44051b01f4c1749775180a2.ts new file mode 100644 index 00000000000..eaa7f9377b7 --- /dev/null +++ b/bundler/tests/.cache/deno/c78d3084a2ef9400c44051b01f4c1749775180a2.ts @@ -0,0 +1,173 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_Set.js + + +import _includes from './_includes.js'; + + +function _Set() { + /* globals Set */ + this._nativeSet = typeof Set === 'function' ? new Set() : null; + this._items = {}; +} + +// until we figure out why jsdoc chokes on this +// @param item The item to add to the Set +// @returns {boolean} true if the item did not exist prior, otherwise false +// +_Set.prototype.add = function(item) { + return !hasOrAdd(item, true, this); +}; + +// +// @param item The item to check for existence in the Set +// @returns {boolean} true if the item exists in the Set, otherwise false +// +_Set.prototype.has = function(item) { + return hasOrAdd(item, false, this); +}; + +// +// Combines the logic for checking whether an item is a member of the set and +// for adding a new item to the set. +// +// @param item The item to check or add to the Set instance. +// @param shouldAdd If true, the item will be added to the set if it doesn't +// already exist. +// @param set The set instance to check or add to. +// @return {boolean} true if the item already existed, otherwise false. +// +function hasOrAdd(item, shouldAdd, set) { + var type = typeof item; + var prevSize, newSize; + switch (type) { + case 'string': + case 'number': + // distinguish between +0 and -0 + if (item === 0 && 1 / item === -Infinity) { + if (set._items['-0']) { + return true; + } else { + if (shouldAdd) { + set._items['-0'] = true; + } + return false; + } + } + // these types can all utilise the native Set + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = {}; + set._items[type][item] = true; + } + return false; + } else if (item in set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type][item] = true; + } + return false; + } + } + + case 'boolean': + // set._items['boolean'] holds a two element array + // representing [ falseExists, trueExists ] + if (type in set._items) { + var bIdx = item ? 1 : 0; + if (set._items[type][bIdx]) { + return true; + } else { + if (shouldAdd) { + set._items[type][bIdx] = true; + } + return false; + } + } else { + if (shouldAdd) { + set._items[type] = item ? [false, true] : [true, false]; + } + return false; + } + + case 'function': + // compare functions for reference equality + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + if (!_includes(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + + case 'undefined': + if (set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type] = true; + } + return false; + } + + case 'object': + if (item === null) { + if (!set._items['null']) { + if (shouldAdd) { + set._items['null'] = true; + } + return false; + } + return true; + } + /* falls through */ + default: + // reduce the search size of heterogeneous sets by creating buckets + // for each type. + type = Object.prototype.toString.call(item); + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + // scan through all previously applied items + if (!_includes(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } +} + +// A simple Set type that honours R.equals semantics +export default _Set; diff --git a/bundler/tests/.cache/deno/c7a7732d167335b1c63600e2f4a2952d1d6e896f.ts b/bundler/tests/.cache/deno/c7a7732d167335b1c63600e2f4a2952d1d6e896f.ts new file mode 100644 index 00000000000..ffd6340ed99 --- /dev/null +++ b/bundler/tests/.cache/deno/c7a7732d167335b1c63600e2f4a2952d1d6e896f.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema/json.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { bool, float, int, nil } from "../type/mod.ts"; +import { failsafe } from "./failsafe.ts"; + +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +export const json = new Schema({ + implicit: [nil, bool, int, float], + include: [failsafe], +}); diff --git a/bundler/tests/.cache/deno/c7d91a1d53256cebf2c84f83d8194e2a482ea896.ts b/bundler/tests/.cache/deno/c7d91a1d53256cebf2c84f83d8194e2a482ea896.ts new file mode 100644 index 00000000000..51ff6b38540 --- /dev/null +++ b/bundler/tests/.cache/deno/c7d91a1d53256cebf2c84f83d8194e2a482ea896.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/prepend.js + + +import _concat from './internal/_concat.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a new list with the given element at the front, followed by the + * contents of the list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The item to add to the head of the output list. + * @param {Array} list The array to add to the tail of the output list. + * @return {Array} A new array. + * @see R.append + * @example + * + * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] + */ +var prepend = _curry2(function prepend(el, list) { + return _concat([el], list); +}); +export default prepend; diff --git a/bundler/tests/.cache/deno/c84bf8333e90db1b47f57bd57d21243e0272cf50.ts b/bundler/tests/.cache/deno/c84bf8333e90db1b47f57bd57d21243e0272cf50.ts new file mode 100644 index 00000000000..216dfc9ba63 --- /dev/null +++ b/bundler/tests/.cache/deno/c84bf8333e90db1b47f57bd57d21243e0272cf50.ts @@ -0,0 +1,43 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/lens.js + + +import _curry2 from './internal/_curry2.js'; +import map from './map.js'; + + +/** + * Returns a lens for the given getter and setter functions. The getter "gets" + * the value of the focus; the setter "sets" the value of the focus. The setter + * should not mutate the data structure. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig (s -> a) -> ((a, s) -> s) -> Lens s a + * @param {Function} getter + * @param {Function} setter + * @return {Lens} + * @see R.view, R.set, R.over, R.lensIndex, R.lensProp + * @example + * + * const xLens = R.lens(R.prop('x'), R.assoc('x')); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +var lens = _curry2(function lens(getter, setter) { + return function(toFunctorFn) { + return function(target) { + return map( + function(focus) { + return setter(focus, target); + }, + toFunctorFn(getter(target)) + ); + }; + }; +}); +export default lens; diff --git a/bundler/tests/.cache/deno/c870059092be4b5fbad851363384611d318b8eb4.ts b/bundler/tests/.cache/deno/c870059092be4b5fbad851363384611d318b8eb4.ts new file mode 100644 index 00000000000..3d84522888f --- /dev/null +++ b/bundler/tests/.cache/deno/c870059092be4b5fbad851363384611d318b8eb4.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case@v2.1.0/titleCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function titleCase(value: string, locale?: string): string { + return normalCase(value, locale).replace(/^.| ./g, function ( + m: string, + ): string { + return upperCase(m, locale); + }); +} diff --git a/bundler/tests/.cache/deno/c89e70748d5935241dc952409e3c1ff1f791c954.ts b/bundler/tests/.cache/deno/c89e70748d5935241dc952409e3c1ff1f791c954.ts new file mode 100644 index 00000000000..1ebeeaff704 --- /dev/null +++ b/bundler/tests/.cache/deno/c89e70748d5935241dc952409e3c1ff1f791c954.ts @@ -0,0 +1,507 @@ +// Loaded from https://deno.land/std@0.81.0/path/posix.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; + +import { + _format, + assertPath, + isPosixPathSeparator, + normalizeString, +} from "./_util.ts"; + +export const sep = "/"; +export const delimiter = ":"; + +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ +export function resolve(...pathSegments: string[]): string { + let resolvedPath = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + let path: string; + + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeString( + resolvedPath, + !resolvedAbsolute, + "/", + isPosixPathSeparator, + ); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertPath(path); + + if (path.length === 0) return "."; + + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = + path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} + +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ +export function isAbsolute(path: string): boolean { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + let joined: string | undefined; + for (let i = 0, len = paths.length; i < len; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} + +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} + +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ +export function toNamespacedPath(path: string): string { + // Non-op on posix systems + return path; +} + +/** + * Return the directory name of a `path`. + * @param path to determine name for + */ +export function dirname(path: string): string { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} + +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +/** + * Return the extension of the `path`. + * @param path with extension + */ +export function extname(path: string): string { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ +export function format(pathObject: FormatInputPathObject): string { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("/", pathObject); +} + +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start: number; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + + return ret; +} + +/** + * Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "/home/foo" + * @param url of a file URL + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent( + url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); +} + +/** + * Converts a path string to a file URL. + * + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * @param path to convert to file URL + */ +export function toFileUrl(path: string): URL { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} diff --git a/bundler/tests/.cache/deno/c8f609065e1433082a58fbf574ea48c62937f7f8.ts b/bundler/tests/.cache/deno/c8f609065e1433082a58fbf574ea48c62937f7f8.ts new file mode 100644 index 00000000000..d261cb89e0b --- /dev/null +++ b/bundler/tests/.cache/deno/c8f609065e1433082a58fbf574ea48c62937f7f8.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeDeepWith.js + + +import _curry3 from './internal/_curry3.js'; +import mergeDeepWithKey from './mergeDeepWithKey.js'; + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to associated values using the + * resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig ((a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepWith(R.concat, + * { a: true, c: { values: [10, 20] }}, + * { b: true, c: { values: [15, 35] }}); + * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} + */ +var mergeDeepWith = _curry3(function mergeDeepWith(fn, lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return fn(lVal, rVal); + }, lObj, rObj); +}); +export default mergeDeepWith; diff --git a/bundler/tests/.cache/deno/c90899c5ecf9b52e9a64ffe2ebe754e51f098603.ts b/bundler/tests/.cache/deno/c90899c5ecf9b52e9a64ffe2ebe754e51f098603.ts new file mode 100644 index 00000000000..227e0bb9550 --- /dev/null +++ b/bundler/tests/.cache/deno/c90899c5ecf9b52e9a64ffe2ebe754e51f098603.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/eqProps.js + + +import _curry3 from './internal/_curry3.js'; +import equals from './equals.js'; + + +/** + * Reports whether two objects have the same value, in [`R.equals`](#equals) + * terms, for the specified property. Useful as a curried predicate. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig k -> {k: v} -> {k: v} -> Boolean + * @param {String} prop The name of the property to compare + * @param {Object} obj1 + * @param {Object} obj2 + * @return {Boolean} + * + * @example + * + * const o1 = { a: 1, b: 2, c: 3, d: 4 }; + * const o2 = { a: 10, b: 20, c: 3, d: 40 }; + * R.eqProps('a', o1, o2); //=> false + * R.eqProps('c', o1, o2); //=> true + */ +var eqProps = _curry3(function eqProps(prop, obj1, obj2) { + return equals(obj1[prop], obj2[prop]); +}); +export default eqProps; diff --git a/bundler/tests/.cache/deno/c923cefabdb9c9a61ae5a8f9cf6381213c1145a0.ts b/bundler/tests/.cache/deno/c923cefabdb9c9a61ae5a8f9cf6381213c1145a0.ts new file mode 100644 index 00000000000..87a1f066669 --- /dev/null +++ b/bundler/tests/.cache/deno/c923cefabdb9c9a61ae5a8f9cf6381213c1145a0.ts @@ -0,0 +1,59 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/asyncQueue.ts + + + +export type Action = ( ()=>Promise ); + +// based on https://medium.com/@karenmarkosyan/how-to-manage-promises-into-dynamic-queue-with-vanilla-javascript-9d0d1f8d4df5 +export class AsyncQueue { + inProgress : number = 0; + concurrency: number; + + queue: { + action: Action, + resolve: (t:any)=>void, + reject: (err:any)=>void + }[] = []; + + constructor(concurrency: number) { + this.concurrency = concurrency; + } + + /// Schedule an action for start later. Immediately returns a Promise but actual + /// work of the original action->promise starts later + async schedule(t: Action) : Promise { + return new Promise((resolve,reject)=>{ + this.queue.push({ + action: t, + resolve, + reject + }); + this.startQueuedItem(); + }); + } + + /// Start an action from the front of the queue. + private startQueuedItem() : void { + if(this.inProgress >= this.concurrency) { + return; + } + const item = this.queue.shift(); + if(item === undefined) { + // is empty + return; + } + + this.inProgress += 1; + item.action() + .then( (val:any)=>{ + item.resolve(val); + }) + .catch( err => { + item.reject(err); + }) + .finally(()=>{ + this.inProgress -= 1; + this.startQueuedItem(); + }); + } +}; diff --git a/bundler/tests/.cache/deno/c963534787c8f203c77e0d04f568635833e067c3.ts b/bundler/tests/.cache/deno/c963534787c8f203c77e0d04f568635833e067c3.ts new file mode 100644 index 00000000000..dd0478c7e4f --- /dev/null +++ b/bundler/tests/.cache/deno/c963534787c8f203c77e0d04f568635833e067c3.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/arrayFrom.js + + +import { SYMBOL_ITERATOR } from './symbols.js'; + +/* eslint-disable no-redeclare */ +// $FlowFixMe +const arrayFrom = Array.from || function (obj, mapFn, thisArg) { + if (obj == null) { + throw new TypeError('Array.from requires an array-like object - not null or undefined'); + } // Is Iterable? + + + const iteratorMethod = obj[SYMBOL_ITERATOR]; + + if (typeof iteratorMethod === 'function') { + const iterator = iteratorMethod.call(obj); + const result = []; + let step; + + for (let i = 0; !(step = iterator.next()).done; ++i) { + result.push(mapFn.call(thisArg, step.value, i)); // Infinite Iterators could cause forEach to run forever. + // After a very large number of iterations, produce an error. + + /* istanbul ignore if */ + + if (i > 9999999) { + throw new TypeError('Near-infinite iteration.'); + } + } + + return result; + } // Is Array like? + + + const length = obj.length; + + if (typeof length === 'number' && length >= 0 && length % 1 === 0) { + const result = []; + + for (let i = 0; i < length; ++i) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + result.push(mapFn.call(thisArg, obj[i], i)); + } + } + + return result; + } + + return []; +}; + +export default arrayFrom; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/c9a547b1075f830fa033112c246ded4c8d51b01d.ts b/bundler/tests/.cache/deno/c9a547b1075f830fa033112c246ded4c8d51b01d.ts new file mode 100644 index 00000000000..53857e169f3 --- /dev/null +++ b/bundler/tests/.cache/deno/c9a547b1075f830fa033112c246ded4c8d51b01d.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/std@0.86.0/io/readers.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/0452f9460f50f0f0aba18df43dc2b31906fb66cc/src/io/io.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +import { encode } from "../encoding/utf8.ts"; + +/** Reader utility for strings */ +export class StringReader extends Deno.Buffer { + constructor(s: string) { + super(encode(s).buffer); + } +} + +/** Reader utility for combining multiple readers */ +export class MultiReader implements Deno.Reader { + private readonly readers: Deno.Reader[]; + private currentIndex = 0; + + constructor(...readers: Deno.Reader[]) { + this.readers = readers; + } + + async read(p: Uint8Array): Promise { + const r = this.readers[this.currentIndex]; + if (!r) return null; + const result = await r.read(p); + if (result === null) { + this.currentIndex++; + return 0; + } + return result; + } +} + +/** + * A `LimitedReader` reads from `reader` but limits the amount of data returned to just `limit` bytes. + * Each call to `read` updates `limit` to reflect the new amount remaining. + * `read` returns `null` when `limit` <= `0` or + * when the underlying `reader` returns `null`. + */ +export class LimitedReader implements Deno.Reader { + constructor(public reader: Deno.Reader, public limit: number) {} + + async read(p: Uint8Array): Promise { + if (this.limit <= 0) { + return null; + } + + if (p.length > this.limit) { + p = p.subarray(0, this.limit); + } + const n = await this.reader.read(p); + if (n == null) { + return null; + } + + this.limit -= n; + return n; + } +} diff --git a/bundler/tests/.cache/deno/c9c2d371ac6abbe0b7853f5e8928297fa977247b.ts b/bundler/tests/.cache/deno/c9c2d371ac6abbe0b7853f5e8928297fa977247b.ts new file mode 100644 index 00000000000..c85aec90d7b --- /dev/null +++ b/bundler/tests/.cache/deno/c9c2d371ac6abbe0b7853f5e8928297fa977247b.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std@0.81.0/async/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/c9e3a6b2946feeee82d0c7367ef1967c478ddfa3.ts b/bundler/tests/.cache/deno/c9e3a6b2946feeee82d0c7367ef1967c478ddfa3.ts new file mode 100644 index 00000000000..8c743720e5f --- /dev/null +++ b/bundler/tests/.cache/deno/c9e3a6b2946feeee82d0c7367ef1967c478ddfa3.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/str.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +export const str = new Type("tag:yaml.org,2002:str", { + construct(data): string { + return data !== null ? data : ""; + }, + kind: "scalar", +}); diff --git a/bundler/tests/.cache/deno/ca0db62b4ef38511465a571c2906b0d8054c9287.ts b/bundler/tests/.cache/deno/ca0db62b4ef38511465a571c2906b0d8054c9287.ts new file mode 100644 index 00000000000..7bab2874f33 --- /dev/null +++ b/bundler/tests/.cache/deno/ca0db62b4ef38511465a571c2906b0d8054c9287.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/otherwise.js + + +import _curry2 from './internal/_curry2.js'; +import _assertPromise from './internal/_assertPromise.js'; + + +/** + * Returns the result of applying the onFailure function to the value inside + * a failed promise. This is useful for handling rejected promises + * inside function compositions. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Function + * @sig (e -> b) -> (Promise e a) -> (Promise e b) + * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b) + * @param {Function} onFailure The function to apply. Can return a value or a promise of a value. + * @param {Promise} p + * @return {Promise} The result of calling `p.then(null, onFailure)` + * @see R.andThen + * @example + * + * const failedFetch = id => Promise.reject('bad ID'); + * const useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' }); + * + * //recoverFromFailure :: String -> Promise ({ firstName, lastName }) + * const recoverFromFailure = R.pipe( + * failedFetch, + * R.otherwise(useDefault), + * R.andThen(R.pick(['firstName', 'lastName'])), + * ); + * recoverFromFailure(12345).then(console.log); + */ +var otherwise = _curry2(function otherwise(f, p) { + _assertPromise('otherwise', p); + + return p.then(null, f); +}); +export default otherwise; diff --git a/bundler/tests/.cache/deno/ca9220de99ceee497dfde4dbea20265f6d5e69e6.ts b/bundler/tests/.cache/deno/ca9220de99ceee497dfde4dbea20265f6d5e69e6.ts new file mode 100644 index 00000000000..32a23c62519 --- /dev/null +++ b/bundler/tests/.cache/deno/ca9220de99ceee497dfde4dbea20265f6d5e69e6.ts @@ -0,0 +1,180 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/subscription/subscribe.js + + +import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols.js'; +import inspect from '../jsutils/inspect.js'; +import { addPath, pathToArray } from '../jsutils/Path.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { locatedError } from '../error/locatedError.js'; +import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef, resolveFieldValueOrError } from '../execution/execute.js'; +import { getOperationRootType } from '../utilities/getOperationRootType.js'; +import mapAsyncIterator from './mapAsyncIterator.js'; +export function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) { + /* eslint-enable no-redeclare */ + // Extract arguments from object args if provided. + return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({ + schema: argsOrSchema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + subscribeFieldResolver + }); +} +/** + * This function checks if the error is a GraphQLError. If it is, report it as + * an ExecutionResult, containing only errors and no data. Otherwise treat the + * error as a system-class error and re-throw it. + */ + +function reportGraphQLError(error) { + if (error instanceof GraphQLError) { + return { + errors: [error] + }; + } + + throw error; +} + +function subscribeImpl(args) { + const { + schema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + subscribeFieldResolver + } = args; + const sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal + // GraphQL `execute` function, with `payload` as the rootValue. + // This implements the "MapSourceToResponseEvent" algorithm described in + // the GraphQL specification. The `execute` function provides the + // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the + // "ExecuteQuery" algorithm, for which `execute` is also used. + + const mapSourceToResponse = payload => execute({ + schema, + document, + rootValue: payload, + contextValue, + variableValues, + operationName, + fieldResolver + }); // Resolve the Source Stream, then map every source value to a + // ExecutionResult value as described above. + + + return sourcePromise.then(resultOrStream => // Note: Flow can't refine isAsyncIterable, so explicit casts are used. + isAsyncIterable(resultOrStream) ? mapAsyncIterator(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream); +} +/** + * Implements the "CreateSourceEventStream" algorithm described in the + * GraphQL specification, resolving the subscription source event stream. + * + * Returns a Promise which resolves to either an AsyncIterable (if successful) + * or an ExecutionResult (error). The promise will be rejected if the schema or + * other arguments to this function are invalid, or if the resolved event stream + * is not an async iterable. + * + * If the client-provided arguments to this function do not result in a + * compliant subscription, a GraphQL Response (ExecutionResult) with + * descriptive errors and no data will be returned. + * + * If the the source stream could not be created due to faulty subscription + * resolver logic or underlying systems, the promise will resolve to a single + * ExecutionResult containing `errors` and no `data`. + * + * If the operation succeeded, the promise resolves to the AsyncIterable for the + * event stream returned by the resolver. + * + * A Source Event Stream represents a sequence of events, each of which triggers + * a GraphQL execution for that event. + * + * This may be useful when hosting the stateful subscription service in a + * different process or machine than the stateless GraphQL execution engine, + * or otherwise separating these two steps. For more on this, see the + * "Supporting Subscriptions at Scale" information in the GraphQL specification. + */ + + +export function createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) { + // If arguments are missing or incorrectly typed, this is an internal + // developer mistake which should throw an early error. + assertValidExecutionArguments(schema, document, variableValues); + + try { + // If a valid context cannot be created due to incorrect arguments, + // this will throw an error. + const exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed. + + if (Array.isArray(exeContext)) { + return Promise.resolve({ + errors: exeContext + }); + } + + const type = getOperationRootType(schema, exeContext.operation); + const fields = collectFields(exeContext, type, exeContext.operation.selectionSet, Object.create(null), Object.create(null)); + const responseNames = Object.keys(fields); + const responseName = responseNames[0]; + const fieldNodes = fields[responseName]; + const fieldNode = fieldNodes[0]; + const fieldName = fieldNode.name.value; + const fieldDef = getFieldDef(schema, type, fieldName); + + if (!fieldDef) { + throw new GraphQLError(`The subscription field "${fieldName}" is not defined.`, fieldNodes); + } // Call the `subscribe()` resolver or the default resolver to produce an + // AsyncIterable yielding raw payloads. + + + const resolveFn = fieldDef.subscribe ?? exeContext.fieldResolver; + const path = addPath(undefined, responseName); + const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the "ResolveFieldEventStream" + // algorithm from GraphQL specification. It differs from + // "ResolveFieldValue" due to providing a different `resolveFn`. + + const result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, rootValue, info); // Coerce to Promise for easier error handling and consistent return type. + + return Promise.resolve(result).then(eventStream => { + // If eventStream is an Error, rethrow a located error. + if (eventStream instanceof Error) { + return { + errors: [locatedError(eventStream, fieldNodes, pathToArray(path))] + }; + } // Assert field returned an event stream, otherwise yield an error. + + + if (isAsyncIterable(eventStream)) { + // Note: isAsyncIterable above ensures this will be correct. + return eventStream; + } + + throw new Error('Subscription field must return Async Iterable. ' + `Received: ${inspect(eventStream)}.`); + }); + } catch (error) { + // As with reportGraphQLError above, if the error is a GraphQLError, report + // it as an ExecutionResult; otherwise treat it as a system-class error and + // re-throw it. + return error instanceof GraphQLError ? Promise.resolve({ + errors: [error] + }) : Promise.reject(error); + } +} +/** + * Returns true if the provided object implements the AsyncIterator protocol via + * either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method. + */ + +function isAsyncIterable(maybeAsyncIterable) { + if (maybeAsyncIterable == null || typeof maybeAsyncIterable !== 'object') { + return false; + } + + return typeof maybeAsyncIterable[SYMBOL_ASYNC_ITERATOR] === 'function'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/caa1378d2b64eb4f998d5dd70f98cca279fc3306.ts b/bundler/tests/.cache/deno/caa1378d2b64eb4f998d5dd70f98cca279fc3306.ts new file mode 100644 index 00000000000..8f33b57ddbb --- /dev/null +++ b/bundler/tests/.cache/deno/caa1378d2b64eb4f998d5dd70f98cca279fc3306.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/isEmpty.js + + +import _curry1 from './internal/_curry1.js'; +import empty from './empty.js'; +import equals from './equals.js'; + + +/** + * Returns `true` if the given value is its type's empty value; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> Boolean + * @param {*} x + * @return {Boolean} + * @see R.empty + * @example + * + * R.isEmpty([1, 2, 3]); //=> false + * R.isEmpty([]); //=> true + * R.isEmpty(''); //=> true + * R.isEmpty(null); //=> false + * R.isEmpty({}); //=> true + * R.isEmpty({length: 0}); //=> false + * R.isEmpty(Uint8Array.from('')); //=> true + */ +var isEmpty = _curry1(function isEmpty(x) { + return x != null && equals(x, empty(x)); +}); +export default isEmpty; diff --git a/bundler/tests/.cache/deno/caa27c2de3a7c563aabff926fafb3a9cdc9307ed.ts b/bundler/tests/.cache/deno/caa27c2de3a7c563aabff926fafb3a9cdc9307ed.ts new file mode 100644 index 00000000000..6ce5486819a --- /dev/null +++ b/bundler/tests/.cache/deno/caa27c2de3a7c563aabff926fafb3a9cdc9307ed.ts @@ -0,0 +1,935 @@ +// Loaded from https://deno.land/std@0.67.0/path/win32.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject, ParsedPath } from "./_interface.ts"; +import { + CHAR_DOT, + CHAR_BACKWARD_SLASH, + CHAR_COLON, + CHAR_QUESTION_MARK, +} from "./_constants.ts"; + +import { + assertPath, + isPathSeparator, + isWindowsDeviceRoot, + normalizeString, + _format, +} from "./_util.ts"; +import { assert } from "../_util/assert.ts"; + +export const sep = "\\"; +export const delimiter = ";"; + +export function resolve(...pathSegments: string[]): string { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path: string; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if ( + path === undefined || + path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\` + ) { + path = `${resolvedDevice}\\`; + } + } + + assertPath(path); + + const len = path.length; + + // Skip empty entries + if (len === 0) continue; + + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + + if ( + device.length > 0 && + resolvedDevice.length > 0 && + device.toLowerCase() !== resolvedDevice.toLowerCase() + ) { + // This path points to another device so it is not applicable + continue; + } + + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + resolvedTail = normalizeString( + resolvedTail, + !resolvedAbsolute, + "\\", + isPathSeparator, + ); + + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} + +export function normalize(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device: string | undefined; + let isAbsolute = false; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + + let tail: string; + if (rootEnd < len) { + tail = normalizeString( + path.slice(rootEnd), + !isAbsolute, + "\\", + isPathSeparator, + ); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} + +export function isAbsolute(path: string): boolean { + assertPath(path); + const len = path.length; + if (len === 0) return false; + + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} + +export function join(...paths: string[]): string { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + + let joined: string | undefined; + let firstPart: string | null = null; + for (let i = 0; i < pathsCount; ++i) { + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + + if (joined === undefined) return "."; + + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for (; slashCount < joined.length; ++slashCount) { + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + + return normalize(joined); +} + +// It will solve the relative path from `from` to `to`, for instance: +// from = 'C:\\orandea\\test\\aaa' +// to = 'C:\\orandea\\impl\\bbb' +// The output of the function should be: '..\\..\\impl\\bbb' +export function relative(from: string, to: string): string { + assertPath(from); + assertPath(to); + + if (from === to) return ""; + + const fromOrig = resolve(from); + const toOrig = resolve(to); + + if (fromOrig === toOrig) return ""; + + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + + if (from === to) return ""; + + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for (; fromStart < fromEnd; ++fromStart) { + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; fromEnd - 1 > fromStart; --fromEnd) { + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for (; toStart < toEnd; ++toStart) { + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for (; toEnd - 1 > toStart; --toEnd) { + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} + +export function toNamespacedPath(path: string): string { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + + const resolvedPath = resolve(path); + + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + + if ( + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH + ) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + + return path; +} + +export function dirname(path: string): string { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = offset = 1; + + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} + +export function basename(path: string, ext = ""): string { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + + assertPath(path); + + let start = 0; + let end = -1; + let matchedSlash = true; + let i: number; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ""; + return path.slice(start, end); + } +} + +export function extname(path: string): string { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + + if ( + path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0)) + ) { + start = startPart = 2; + } + + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + return ""; + } + return path.slice(startDot, end); +} + +export function format(pathObject: FormatInputPathObject): string { + /* eslint-disable max-len */ + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError( + `The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`, + ); + } + return _format("\\", pathObject); +} + +export function parse(path: string): ParsedPath { + assertPath(path); + + const ret: ParsedPath = { root: "", dir: "", base: "", ext: "", name: "" }; + + const len = path.length; + if (len === 0) return ret; + + let rootEnd = 0; + let code = path.charCodeAt(0); + + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for (; j < len; ++j) { + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for (; j < len; ++j) { + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if ( + startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) + ) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + + return ret; +} + +/** Converts a file URL to a path string. + * + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + */ +export function fromFileUrl(url: string | URL): string { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent( + url.pathname + .replace(/^\/*([A-Za-z]:)(\/|$)/, "$1/") + .replace(/\//g, "\\") + .replace(/%(?![0-9A-Fa-f]{2})/g, "%25"), + ); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} diff --git a/bundler/tests/.cache/deno/caca037df0cc7e83b5d889b1cba0df7fc387931a.ts b/bundler/tests/.cache/deno/caca037df0cc7e83b5d889b1cba0df7fc387931a.ts new file mode 100644 index 00000000000..bd870198f64 --- /dev/null +++ b/bundler/tests/.cache/deno/caca037df0cc7e83b5d889b1cba0df7fc387931a.ts @@ -0,0 +1,231 @@ +// Loaded from https://deno.land/std/testing/_diff.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +interface FarthestPoint { + y: number; + id: number; +} + +export enum DiffType { + removed = "removed", + common = "common", + added = "added", +} + +export interface DiffResult { + type: DiffType; + value: T; +} + +const REMOVED = 1; +const COMMON = 2; +const ADDED = 3; + +function createCommon(A: T[], B: T[], reverse?: boolean): T[] { + const common = []; + if (A.length === 0 || B.length === 0) return []; + for (let i = 0; i < Math.min(A.length, B.length); i += 1) { + if ( + A[reverse ? A.length - i - 1 : i] === B[reverse ? B.length - i - 1 : i] + ) { + common.push(A[reverse ? A.length - i - 1 : i]); + } else { + return common; + } + } + return common; +} + +/** + * Renders the differences between the actual and expected values + * @param A Actual value + * @param B Expected value + */ +export function diff(A: T[], B: T[]): Array> { + const prefixCommon = createCommon(A, B); + const suffixCommon = createCommon( + A.slice(prefixCommon.length), + B.slice(prefixCommon.length), + true, + ).reverse(); + A = suffixCommon.length + ? A.slice(prefixCommon.length, -suffixCommon.length) + : A.slice(prefixCommon.length); + B = suffixCommon.length + ? B.slice(prefixCommon.length, -suffixCommon.length) + : B.slice(prefixCommon.length); + const swapped = B.length > A.length; + [A, B] = swapped ? [B, A] : [A, B]; + const M = A.length; + const N = B.length; + if (!M && !N && !suffixCommon.length && !prefixCommon.length) return []; + if (!N) { + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...A.map( + (a): DiffResult => ({ + type: swapped ? DiffType.added : DiffType.removed, + value: a, + }), + ), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; + } + const offset = N; + const delta = M - N; + const size = M + N + 1; + const fp = new Array(size).fill({ y: -1 }); + /** + * INFO: + * This buffer is used to save memory and improve performance. + * The first half is used to save route and last half is used to save diff + * type. + * This is because, when I kept new uint8array area to save type,performance + * worsened. + */ + const routes = new Uint32Array((M * N + size + 1) * 2); + const diffTypesPtrOffset = routes.length / 2; + let ptr = 0; + let p = -1; + + function backTrace( + A: T[], + B: T[], + current: FarthestPoint, + swapped: boolean, + ): Array<{ + type: DiffType; + value: T; + }> { + const M = A.length; + const N = B.length; + const result = []; + let a = M - 1; + let b = N - 1; + let j = routes[current.id]; + let type = routes[current.id + diffTypesPtrOffset]; + while (true) { + if (!j && !type) break; + const prev = j; + if (type === REMOVED) { + result.unshift({ + type: swapped ? DiffType.removed : DiffType.added, + value: B[b], + }); + b -= 1; + } else if (type === ADDED) { + result.unshift({ + type: swapped ? DiffType.added : DiffType.removed, + value: A[a], + }); + a -= 1; + } else { + result.unshift({ type: DiffType.common, value: A[a] }); + a -= 1; + b -= 1; + } + j = routes[prev]; + type = routes[prev + diffTypesPtrOffset]; + } + return result; + } + + function createFP( + slide: FarthestPoint, + down: FarthestPoint, + k: number, + M: number, + ): FarthestPoint { + if (slide && slide.y === -1 && down && down.y === -1) { + return { y: 0, id: 0 }; + } + if ( + (down && down.y === -1) || + k === M || + (slide && slide.y) > (down && down.y) + 1 + ) { + const prev = slide.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = ADDED; + return { y: slide.y, id: ptr }; + } else { + const prev = down.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = REMOVED; + return { y: down.y + 1, id: ptr }; + } + } + + function snake( + k: number, + slide: FarthestPoint, + down: FarthestPoint, + _offset: number, + A: T[], + B: T[], + ): FarthestPoint { + const M = A.length; + const N = B.length; + if (k < -N || M < k) return { y: -1, id: -1 }; + const fp = createFP(slide, down, k, M); + while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) { + const prev = fp.id; + ptr++; + fp.id = ptr; + fp.y += 1; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = COMMON; + } + return fp; + } + + while (fp[delta + offset].y < N) { + p = p + 1; + for (let k = -p; k < delta; ++k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + for (let k = delta + p; k > delta; --k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B, + ); + } + fp[delta + offset] = snake( + delta, + fp[delta - 1 + offset], + fp[delta + 1 + offset], + offset, + A, + B, + ); + } + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ...backTrace(A, B, fp[delta + offset], swapped), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }), + ), + ]; +} diff --git a/bundler/tests/.cache/deno/cb0b631884b87a1f42892b9d007f666c4fadf1ec.ts b/bundler/tests/.cache/deno/cb0b631884b87a1f42892b9d007f666c4fadf1ec.ts new file mode 100644 index 00000000000..5b1cf632c38 --- /dev/null +++ b/bundler/tests/.cache/deno/cb0b631884b87a1f42892b9d007f666c4fadf1ec.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/always.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Returns a function that always returns the given value. Note that for + * non-primitives the value returned is a reference to the original value. + * + * This function is known as `const`, `constant`, or `K` (for K combinator) in + * other languages and libraries. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> (* -> a) + * @param {*} val The value to wrap in a function + * @return {Function} A Function :: * -> val. + * @example + * + * const t = R.always('Tee'); + * t(); //=> 'Tee' + */ +var always = _curry1(function always(val) { + return function() { + return val; + }; +}); +export default always; diff --git a/bundler/tests/.cache/deno/cb468298855589bb9ac923c33459943a7596c8ec.ts b/bundler/tests/.cache/deno/cb468298855589bb9ac923c33459943a7596c8ec.ts new file mode 100644 index 00000000000..03597411a4c --- /dev/null +++ b/bundler/tests/.cache/deno/cb468298855589bb9ac923c33459943a7596c8ec.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.84.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/cb4c357e1f3c29d25626790c9fe35e2596813eca.ts b/bundler/tests/.cache/deno/cb4c357e1f3c29d25626790c9fe35e2596813eca.ts new file mode 100644 index 00000000000..b237b0243ec --- /dev/null +++ b/bundler/tests/.cache/deno/cb4c357e1f3c29d25626790c9fe35e2596813eca.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/_http_method.ts + + +export const Get = "GET", + Head = "HEAD", + Post = "POST", + Put = "PUT", + Patch = "PATCH", + Delete = "DELETE", + Connect = "CONNECT", + Options = "OPTIONS", + Trace = "TRACE"; diff --git a/bundler/tests/.cache/deno/cb8b4797e98f9bfb7d53b8a7086ea02ea511df95.ts b/bundler/tests/.cache/deno/cb8b4797e98f9bfb7d53b8a7086ea02ea511df95.ts new file mode 100644 index 00000000000..41779fa6306 --- /dev/null +++ b/bundler/tests/.cache/deno/cb8b4797e98f9bfb7d53b8a7086ea02ea511df95.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/add.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Adds two values. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a + * @param {Number} b + * @return {Number} + * @see R.subtract + * @example + * + * R.add(2, 3); //=> 5 + * R.add(7)(10); //=> 17 + */ +var add = _curry2(function add(a, b) { + return Number(a) + Number(b); +}); +export default add; diff --git a/bundler/tests/.cache/deno/cba5a538dcd7ca54b8108b80ebdcc7bdb61a462d.ts b/bundler/tests/.cache/deno/cba5a538dcd7ca54b8108b80ebdcc7bdb61a462d.ts new file mode 100644 index 00000000000..400b188893e --- /dev/null +++ b/bundler/tests/.cache/deno/cba5a538dcd7ca54b8108b80ebdcc7bdb61a462d.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/std/encoding/base64url.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import * as base64 from "./base64.ts"; + +/* + * Some variants allow or require omitting the padding '=' signs: + * https://en.wikipedia.org/wiki/Base64#URL_applications + * @param base64url + */ +export function addPaddingToBase64url(base64url: string): string { + if (base64url.length % 4 === 2) return base64url + "=="; + if (base64url.length % 4 === 3) return base64url + "="; + if (base64url.length % 4 === 1) { + throw new TypeError("Illegal base64url string!"); + } + return base64url; +} + +function convertBase64urlToBase64(b64url: string): string { + return addPaddingToBase64url(b64url).replace(/\-/g, "+").replace(/_/g, "/"); +} + +function convertBase64ToBase64url(b64: string): string { + return b64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +} + +/** + * Encodes a given Uint8Array into a base64url representation + * @param uint8 + */ +export function encode(uint8: Uint8Array): string { + return convertBase64ToBase64url(base64.encode(uint8)); +} + +/** + * Converts given base64url encoded data back to original + * @param b64url + */ +export function decode(b64url: string): Uint8Array { + return base64.decode(convertBase64urlToBase64(b64url)); +} diff --git a/bundler/tests/.cache/deno/cbb5445f66f90a6bb17ea85d14684d0ba9a7b119.ts b/bundler/tests/.cache/deno/cbb5445f66f90a6bb17ea85d14684d0ba9a7b119.ts new file mode 100644 index 00000000000..2cc1f57e9a6 --- /dev/null +++ b/bundler/tests/.cache/deno/cbb5445f66f90a6bb17ea85d14684d0ba9a7b119.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/sodium/dist/browsers/sodium.js + + +const __denoroot={},__document={};!function(A,g,I){function e(A){"use strict";var g;void 0===(g=A)&&(g={});var e=g;"object"!=typeof e.sodium&&("object"==typeof global?e=global:"object"==typeof window&&(e=window)),"object"==typeof e.sodium&&"number"==typeof e.sodium.totalMemory&&(g.TOTAL_MEMORY=e.sodium.totalMemory);var B=g;return g.ready=new Promise((function(A,g){(r=B).onAbort=g,r.print=function(A){},r.printErr=function(A){},r.onRuntimeInitialized=function(){try{r._crypto_secretbox_keybytes(),A()}catch(A){g(A)}},r.useBackupModule=function(){var A,g=void 0!==(g={})?g:{},e={};for(A in g)g.hasOwnProperty(A)&&(e[A]=g[A]);var r=[],a=!1,t=!1,n=!1,i=!1;a="object"==typeof window,t="function"==typeof importScripts,n="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,i=!a&&!n&&!t;var C,Q,o,c,E="";function s(A){return g.locateFile?g.locateFile(A,E):E+A}n?(E=t?require("path").dirname(E)+"/":__dirname+"/",C=function(A,g){var I=UA(A);return I?g?I:I.toString():(o||(o=require("fs")),c||(c=require("path")),A=c.normalize(A),o.readFileSync(A,g?null:"utf8"))},Q=function(A){var g=C(A,!0);return g.buffer||(g=new Uint8Array(g)),D(g.buffer),g},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),r=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=g),process.on("unhandledRejection",tA),g.inspect=function(){return"[Emscripten Module object]"}):i?("undefined"!=typeof read&&(C=function(A){var g=UA(A);return g?YA(g):read(A)}),Q=function(A){var g;return(g=UA(A))?g:"function"==typeof readbuffer?new Uint8Array(readbuffer(A)):(D("object"==typeof(g=read(A,"binary"))),g)},"undefined"!=typeof scriptArgs?r=scriptArgs:void 0!==arguments&&(r=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(a||t)&&(t?E=self.location.href:I.currentScript&&(E=I.currentScript.src),E=0!==E.indexOf("blob:")?E.substr(0,E.lastIndexOf("/")+1):"",C=function(A){try{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.send(null),g.responseText}catch(g){var I=UA(A);if(I)return YA(I);throw g}},t&&(Q=function(A){try{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}catch(g){var I=UA(A);if(I)return I;throw g}})),g.print;var y,h=g.printErr||void 0;for(A in e)e.hasOwnProperty(A)&&(g[A]=e[A]);e=null,g.arguments&&(r=g.arguments),g.thisProgram&&g.thisProgram,g.quit&&g.quit,g.wasmBinary&&(y=g.wasmBinary),g.noExitRuntime&&g.noExitRuntime;var f,_={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial),this.grow=function(A){return RA(A)}},Table:function(A){var g=new Array(A.initial);return g.grow=function(A){g.push(null)},g.set=function(A,I){g[A]=I},g.get=function(A){return g[A]},g},Module:function(A){},Instance:function(A,g){this.exports=function(A,g,I){for(var e=new Uint8Array(g.buffer),B=new Uint8Array(123),r=25;r>=0;--r)B[48+r]=52+r,B[65+r]=r,B[97+r]=26+r;function a(A,g,I){for(var e,r,a=0,t=g,n=I.length,i=g+(3*n>>2)-("="==I[n-2])-("="==I[n-1]);a>4,t>2),t>2]=i[0|D]|i[D+1|0]<<8|i[D+2|0]<<16|i[D+3|0]<<24,n[iA+4>>2]=Z,16!=(0|(eA=eA+1|0)););for(D=W($,A,64),n[(g=D)+88>>2]=1595750129,n[g+92>>2]=-1521486534,v=i[(g=A)+88|0]|i[g+89|0]<<8|i[g+90|0]<<16|i[g+91|0]<<24,iA=i[g+92|0]|i[g+93|0]<<8|i[g+94|0]<<16|i[g+95|0]<<24,h=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24,Z=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24,CA=i[g+80|0]|i[g+81|0]<<8|i[g+82|0]<<16|i[g+83|0]<<24,oA=i[g+84|0]|i[g+85|0]<<8|i[g+86|0]<<16|i[g+87|0]<<24,BA=n[D+4>>2],$=D,g=(c=n[D+36>>2])+n[D+132>>2]|0,(nA=(s=n[D+32>>2])+(eA=n[D+128>>2])|0)>>>0>>0&&(g=g+1|0),g=g+BA|0,nA=g=(eA=nA+n[D>>2]|0)>>>0>>0?g+1|0:g,eA=MI((BA=eA)^(i[(eA=A)+64|0]|i[eA+65|0]<<8|i[eA+66|0]<<16|i[eA+67|0]<<24)^-1377402159,g^(i[eA+68|0]|i[eA+69|0]<<8|i[eA+70|0]<<16|i[eA+71|0]<<24)^1359893119,32),u=g=w,g=g+1779033703|0,(eA=(y=eA)+-205731576|0)>>>0<4089235720&&(g=g+1|0),E=s^(M=eA),s=g,E=MI(E,c^g,24),eA=n[(c=D)+136>>2],g=nA+(f=w)|0,(nA=E+BA|0)>>>0>>0&&(g=g+1|0),nA=eA+nA|0,g=(I=n[c+140>>2])+g|0,T=MI((b=nA)^y,(K=b>>>0>>0?g+1|0:g)^u,16),nA=g=w,n[$+96>>2]=T,n[$+100>>2]=g,g=s+g|0,(BA=M+T|0)>>>0>>0&&(g=g+1|0),y=BA,n[D+64>>2]=y,n[$+68>>2]=g,m=g,BA=MI(E^y,f^g,63),u=g=w,n[D+32>>2]=BA,n[D+36>>2]=g,c=n[D+12>>2],k=h,g=(EA=n[D+148>>2])+(h=n[D+44>>2])|0,(f=(s=n[D+144>>2])+(E=n[D+40>>2])|0)>>>0>>0&&(g=g+1|0),g=g+c|0,c=Z,Z=g=(M=f+n[D+8>>2]|0)>>>0>>0?g+1|0:g,f=c=MI(k^M^725511199,c^g^-1694144372,32),aA=g=w,g=g+-1150833019|0,(c=c+-2067093701|0)>>>0<2227873595&&(g=g+1|0),k=E^c,E=g,h=MI(k,h^g,24),g=Z+(_=w)|0,(Z=h+M|0)>>>0>>0&&(g=g+1|0),Z=(M=n[D+152>>2])+Z|0,g=n[D+156>>2]+g|0,AA=MI((H=Z)^f,(P=H>>>0>>0?g+1|0:g)^aA,16),f=g=w,n[$+104>>2]=AA,n[$+108>>2]=g,g=E+g|0,(Z=c+AA|0)>>>0>>0&&(g=g+1|0),l=Z,n[D+72>>2]=l,n[$+76>>2]=g,x=g,M=MI(h^l,_^g,63),c=w,Z=n[D+20>>2],k=CA,g=(cA=n[D+164>>2])+(CA=n[D+52>>2])|0,(E=(L=n[D+160>>2])+(h=n[D+48>>2])|0)>>>0>>0&&(g=g+1|0),g=g+Z|0,F=MI(k^(Y=$=E+n[D+16>>2]|0)^-79577749,(Z=Y>>>0>>0?g+1|0:g)^oA^528734635,32),oA=g=w,g=g+1013904242|0,($=F+-23791573|0)>>>0<4271175723&&(g=g+1|0),k=h^(E=$),h=g,CA=$=MI(k,CA^g,24),aA=g=w,_=oA,g=g+Z|0,(Z=Y+$|0)>>>0<$>>>0&&(g=g+1|0),g=g+(d=e=n[D+172>>2])|0,X=MI((J=$=(oA=n[D+168>>2])+Z|0)^F,(N=J>>>0>>0?g+1|0:g)^_,16),g=h+(j=w)|0,($=E+X|0)>>>0>>0&&(g=g+1|0),k=g,E=MI((Y=$)^CA,g^aA,63),h=w,CA=n[D+28>>2],d=v,g=(B=n[D+180>>2])+(F=n[D+60>>2])|0,(aA=($=n[D+176>>2])+(v=n[D+56>>2])|0)>>>0>>0&&(g=g+1|0),g=g+CA|0,g=(Z=aA+n[D+24>>2]|0)>>>0>>0?g+1|0:g,aA=Z,_=g,R=MI(d^Z^327033209,g^iA^1541459225,32),iA=g=w,g=g+-1521486534|0,(Z=R+1595750129|0)>>>0<1595750129&&(g=g+1|0),CA=Z,v=Z=MI(v^Z,g^F,24),d=CA,G=g,U=iA,CA=n[D+188>>2],g=_+(F=w)|0,(Z=v+aA|0)>>>0>>0&&(g=g+1|0),aA=Z,g=g+(S=CA)|0,V=Z=(iA=n[D+184>>2])+Z|0,aA=MI(Z^R,(_=U)^(U=Z>>>0>>0?g+1|0:g),16),S=v,g=(v=w)+G|0,(_=(Z=aA)+d|0)>>>0>>0&&(g=g+1|0),R=_,Z=g,_=MI(S^_,g^F,63),F=w,g=c+K|0,(K=b+M|0)>>>0>>0&&(g=g+1|0),g=g+(d=sA=n[D+196>>2])|0,aA=MI((G=aA)^(d=aA=(fA=n[D+192>>2])+K|0),(b=v)^(v=d>>>0>>0?g+1|0:g),32),K=D,b=g=w,S=M,g=k+g|0,(M=Y+(G=aA)|0)>>>0>>0&&(g=g+1|0),k=c,c=g,q=MI(S^M,k^g,24),aA=D,Y=n[D+200>>2],S=G,g=v+(G=w)|0,(k=d+q|0)>>>0>>0&&(g=g+1|0),v=Y+k|0,g=(yA=n[aA+204>>2])+g|0,hA=v,IA=MI(S^v,(k=b)^(b=v>>>0>>0?g+1|0:g),16),k=g=w,n[K+120>>2]=IA,n[K+124>>2]=g,g=c+g|0,(c=M+IA|0)>>>0>>0&&(g=g+1|0),v=c,n[D+80>>2]=c,n[aA+84>>2]=g,c^=q,q=g,d=MI(c,G^g,63),G=w,aA=h,g=h+P|0,(E=H+(c=E)|0)>>>0>>0&&(g=g+1|0),h=E,g=g+(K=t=n[D+212>>2])|0,nA=MI((S=T)^(T=E=(M=n[D+208>>2])+E|0),(E=E>>>0>>0?g+1|0:g)^nA,32),H=c,g=(c=w)+Z|0,(h=(Z=nA)+R|0)>>>0>>0&&(g=g+1|0),H=Z=MI(H^h,g^aA,24),P=g,C=n[D+220>>2],z=nA,g=(aA=w)+E|0,(nA=T+H|0)>>>0>>0&&(g=g+1|0),g=g+(S=C)|0,c=MI(z^(R=Z=(K=n[D+216>>2])+nA|0),(T=R>>>0>>0?g+1|0:g)^c,16),g=(g=P)+(P=w)|0,(nA=c+h|0)>>>0>>0&&(g=g+1|0),h=g,E=MI((S=nA)^H,g^aA,63),H=w,Z=_,z=F,g=F+N|0,(_=_+J|0)>>>0>>0&&(g=g+1|0),F=_,g=g+(O=aA=n[D+228>>2])|0,O=_=(nA=n[D+224>>2])+_|0,AA=MI(_^AA,(N=f)^(f=_>>>0>>0?g+1|0:g),32),F=Z,g=m+(_=w)|0,(Z=y+AA|0)>>>0>>0&&(g=g+1|0),m=Z=MI(F^(y=Z),g^z,24),J=g,N=_,rA=n[D+236>>2],g=(F=w)+f|0,(f=m+O|0)>>>0>>0&&(g=g+1|0),g=g+(gA=rA)|0,z=Z=(_=n[D+232>>2])+f|0,f=MI(Z^AA,(O=N)^(N=Z>>>0>>0?g+1|0:g),16),g=(g=J)+(J=w)|0,(y=y+f|0)>>>0>>0&&(g=g+1|0),AA=y,y=g,F=MI(AA^m,g^F,63),m=w,gA=u,g=u+U|0,(u=(O=BA)+V|0)>>>0>>0&&(g=g+1|0),g=g+(r=n[D+244>>2])|0,U=j,j=g=(BA=(Z=n[D+240>>2])+u|0)>>>0>>0?g+1|0:g,X=MI((u=BA)^X,U^g,32),U=y,y=c,g=x+(BA=w)|0,(c=l+X|0)>>>0>>0&&(g=g+1|0),l=g,O=MI(c^O,g^gA,24),V=g=w,x=BA,g=g+j|0,(j=u+(gA=O)|0)>>>0>>0&&(g=g+1|0),g=g+(QA=o=n[D+252>>2])|0,g=(u=(BA=n[D+248>>2])+j|0)>>>0>>0?g+1|0:g,j=u,O=x,x=g,QA=MI(u^X,O^g,16),X=gA,g=l+(O=w)|0,(u=c+QA|0)>>>0>>0&&(g=g+1|0),gA=u,c=g,X=MI(X^u,g^V,63),V=g=w,u=g,tA=y,g=b+r|0,(l=(y=Z)+hA|0)>>>0>>0&&(g=g+1|0),g=g+u|0,u=y=l+X|0,y=MI(tA^y,(b=P)^(P=y>>>0>>0?g+1|0:g),32),l=D,g=(g=U)+(U=w)|0,(AA=y+AA|0)>>>0>>0&&(g=g+1|0),b=AA,AA=g,tA=V=MI(X^b,V^g,24),_A=g=w,X=g,hA=y,g=P+t|0,(y=u+M|0)>>>0>>0&&(g=g+1|0),u=y,g=g+X|0,Q=y=y+V|0,hA=MI(hA^y,(P=U)^(U=y>>>0>>0?g+1|0:g),16),g=AA+(X=w)|0,(y=b+hA|0)>>>0>>0&&(g=g+1|0),b=y,AA=g,u=MI(y^tA,g^_A,63),P=g=w,n[l+32>>2]=u,n[l+36>>2]=g,V=c,tA=f,g=cA+(l=G)|0,(c=L+(y=d)|0)>>>0>>0&&(g=g+1|0),g=g+T|0,f=c=c+R|0,c=MI(tA^c,(d=c>>>0>>0?g+1|0:g)^J,32),T=y,g=(y=w)+V|0,(L=c+gA|0)>>>0>>0&&(g=g+1|0),R=l,l=g,R=J=MI(T^(G=L),R^g,24),T=g=w,L=g,V=c,g=d+sA|0,(c=f+fA|0)>>>0>>0&&(g=g+1|0),f=c,g=g+L|0,d=c=c+J|0,V=MI(V^c,(L=c>>>0>>0?g+1|0:g)^y,16),y=R,g=l+(J=w)|0,(c=G+V|0)>>>0>>0&&(g=g+1|0),R=c,f=T,T=g,f=MI(y^c,f^g,63),c=w,y=E,g=(l=H)+yA|0,(Y=E+Y|0)>>>0>>0&&(g=g+1|0),g=g+N|0,G=MI((H=E=Y+z|0)^QA,(E=E>>>0>>0?g+1|0:g)^O,32),N=y,g=q+(y=w)|0,(Y=v+G|0)>>>0>>0&&(g=g+1|0),v=l,l=g,q=N=MI(N^Y,v^g,24),z=g=w,v=g,O=G,g=E+o|0,(G=(E=BA)+H|0)>>>0>>0&&(g=g+1|0),g=g+v|0,g=(E=G+N|0)>>>0>>0?g+1|0:g,G=E,H=g,cA=MI(O^E,g^y,16),v=q,g=l+(N=w)|0,(E=Y+cA|0)>>>0>>0&&(g=g+1|0),q=E,y=g,l=MI(v^E,g^z,63),Y=w,z=m,g=m+rA|0,(F=(v=F)+(E=_)|0)>>>0>>0&&(g=g+1|0),g=g+x|0,x=E=F+j|0,E=MI(E^IA,(F=E>>>0>>0?g+1|0:g)^k,32),m=v,g=(g=h)+(h=w)|0,(v=E+S|0)>>>0>>0&&(g=g+1|0),k=v,S=j=MI(m^v,g^z,24),z=v=w,m=g,O=E,g=F+B|0,(F=(E=$)+x|0)>>>0>>0&&(g=g+1|0),g=g+v|0,x=E=F+j|0,F=MI(O^E,(j=E>>>0>>0?g+1|0:g)^h,16),v=S,g=(g=m)+(m=w)|0,(h=(E=F)+k|0)>>>0>>0&&(g=g+1|0),S=h,h=g,k=MI(v^S,g^z,63),E=w,v=D,z=f,O=c,IA=F,gA=f,g=U+I|0,(F=(f=eA)+Q|0)>>>0>>0&&(g=g+1|0),g=g+c|0,c=MI(IA^(gA=f=gA+F|0),(f=f>>>0>>0?g+1|0:g)^m,32),g=(IA=w)+y|0,(F=c+q|0)>>>0>>0&&(g=g+1|0),y=F,F=g,z=MI(y^z,g^O,24),m=g=w,U=g,g=f+aA|0,(q=(f=nA)+gA|0)>>>0>>0&&(g=g+1|0),g=g+U|0,U=f=q+z|0,QA=MI(c^f,IA^(q=f>>>0>>0?g+1|0:g),16),f=g=w,n[v+120>>2]=QA,n[v+124>>2]=g,v=z,g=g+F|0,(c=y+QA|0)>>>0>>0&&(g=g+1|0),z=c,y=g,F=MI(v^c,g^m,63),v=w,m=l,O=Y,g=Y+L|0,(c=l+d|0)>>>0>>0&&(g=g+1|0),l=c,g=g+(IA=yA=n[D+132>>2])|0,g=(c=(gA=n[D+128>>2])+c|0)>>>0>>0?g+1|0:g,l=c,Y=g,c=MI(c^hA,g^X,32),L=m,g=(g=h)+(h=w)|0,(m=c+S|0)>>>0>>0&&(g=g+1|0),X=S=MI(L^(d=m),g^O,24),IA=m=w,L=g,tA=c,g=Y+EA|0,(c=s+l|0)>>>0>>0&&(g=g+1|0),l=c,g=g+m|0,S=c=c+S|0,c=MI(tA^c,(O=c>>>0>>0?g+1|0:g)^h,16),g=(l=w)+L|0,(Y=c+d|0)>>>0>>0&&(g=g+1|0),L=Y,h=Y^X,X=g,h=MI(h,g^IA,63),Y=w,m=E,IA=V,d=k,g=H+C|0,(k=G+K|0)>>>0>>0&&(g=g+1|0),g=g+E|0,V=k=(V=d)+(G=k)|0,J=MI(IA^k,(E=k>>>0>>0?g+1|0:g)^J,32),H=d,g=AA+(k=w)|0,(d=b+J|0)>>>0>>0&&(g=g+1|0),AA=m=MI(H^d,g^m,24),IA=G=w,H=g,tA=J,b=m,g=E+CA|0,(m=(E=iA)+V|0)>>>0>>0&&(g=g+1|0),g=g+G|0,J=E=b+m|0,k=MI(tA^E,(b=E>>>0>>0?g+1|0:g)^k,16),m=AA,g=(AA=w)+H|0,(d=(E=k)+d|0)>>>0>>0&&(g=g+1|0),H=d,E=g,d=MI(m^d,g^IA,63),G=w,V=P,g=P+e|0,(P=(m=u)+(u=oA)|0)>>>0>>0&&(g=g+1|0),g=g+j|0,P=g=(u=P+x|0)>>>0>>0?g+1|0:g,IA=MI(u^cA,g^N,32),x=H,N=E,H=c,g=T+(c=w)|0,(E=R+IA|0)>>>0>>0&&(g=g+1|0),T=R=MI(E^m,g^V,24),cA=V=w,m=g,j=c,g=P+V|0,(P=u+R|0)>>>0>>0&&(g=g+1|0),g=g+(tA=hA=n[D+156>>2])|0,g=(u=(c=n[D+152>>2])+P|0)>>>0

>>0?g+1|0:g,P=u,R=j,j=g,u=MI(u^IA,R^g,16),V=T,g=(R=w)+m|0,(m=(m=E)+(E=u)|0)>>>0>>0&&(g=g+1|0),T=m,E=g,V=MI(V^m,g^cA,63),IA=g=w,m=g,tA=H,g=q+C|0,(H=U+K|0)>>>0>>0&&(g=g+1|0),U=H,g=g+m|0,m=H=H+V|0,l=MI(tA^H,(U=H>>>0>>0?g+1|0:g)^l,32),H=D,g=(g=N)+(N=w)|0,(q=l+x|0)>>>0>>0&&(g=g+1|0),x=q,q=g,cA=IA=MI(V^x,IA^g,24),tA=g=w,V=g,_A=l,g=U+sA|0,(l=m+fA|0)>>>0>>0&&(g=g+1|0),m=l,g=g+V|0,fA=l=l+IA|0,sA=MI(_A^l,(U=N)^(N=l>>>0>>0?g+1|0:g),16),g=q+(U=w)|0,(l=x+sA|0)>>>0>>0&&(g=g+1|0),x=l,q=g,l=MI(l^cA,g^tA,63),m=g=w,n[H+32>>2]=l,n[H+36>>2]=g,H=F,V=v,IA=E,g=v+aA|0,(F=(E=nA)+F|0)>>>0>>0&&(g=g+1|0),g=g+O|0,g=(E=F+S|0)>>>0>>0?g+1|0:g,S=E,F=g,E=MI(E^k,g^AA,32),O=H,g=(k=w)+IA|0,(H=E+T|0)>>>0>>0&&(g=g+1|0),v=H,H=g,O=AA=MI(O^v,g^V,24),IA=g=w,T=g,V=E,g=F+yA|0,(E=S+gA|0)>>>0>>0&&(g=g+1|0),F=E,g=g+T|0,cA=E=E+AA|0,V=MI(V^E,(T=E>>>0>>0?g+1|0:g)^k,16),g=H+(S=w)|0,(E=v+V|0)>>>0>>0&&(g=g+1|0),AA=E,E^=O,O=g,F=MI(E,g^IA,63),E=w,H=u,g=e+(v=Y)|0,(u=(k=h)+(h=oA)|0)>>>0>>0&&(g=g+1|0),g=g+b|0,u=h=u+J|0,h=MI(H^h,(Y=h>>>0>>0?g+1|0:g)^R,32),g=(g=y)+(y=w)|0,(H=h+z|0)>>>0>>0&&(g=g+1|0),R=J=MI((b=k)^(k=H),g^v,24),b=v=w,H=g,z=h,g=Y+EA|0,(h=s+u|0)>>>0>>0&&(g=g+1|0),u=h,g=g+v|0,IA=h=h+J|0,Y=MI(z^h,(J=h>>>0>>0?g+1|0:g)^y,16),v=R,g=(R=w)+H|0,(y=(h=Y)+k|0)>>>0>>0&&(g=g+1|0),H=y,u=g,k=MI(v^y,g^b,63),h=w,g=o+(v=G)|0,(G=(y=d)+(d=BA)|0)>>>0>>0&&(g=g+1|0),d=G+P|0,g=g+j|0,G=f,f=g=d>>>0

>>0?g+1|0:g,j=MI(d^QA,G^g,32),b=y,g=X+(y=w)|0,(G=L+j|0)>>>0>>0&&(g=g+1|0),P=v,v=g,b=L=MI(b^G,P^g,24),z=g=w,P=g,g=f+rA|0,(f=_+d|0)>>>0>>0&&(g=g+1|0),d=f,g=g+P|0,L=f=f+L|0,gA=MI(P=f^j,(j=f>>>0>>0?g+1|0:g)^y,16),d=b,g=v+(P=w)|0,(y=G+gA|0)>>>0>>0&&(g=g+1|0),b=y,f=g,v=MI(d^y,g^z,63),y=w,d=D,G=F,z=E,g=N+t|0,(N=(F=M)+fA|0)>>>0>>0&&(g=g+1|0),g=g+E|0,g=(F=(X=G)+N|0)>>>0>>0?g+1|0:g,N=F,F=g,E=MI(N^gA,g^P,32),P=G,g=(gA=w)+u|0,(G=E+H|0)>>>0>>0&&(g=g+1|0),u=G,G=g,z=MI(P^u,g^z,24),H=g=w,P=g,g=F+r|0,(N=(F=Z)+N|0)>>>0>>0&&(g=g+1|0),g=g+P|0,yA=F=N+z|0,QA=MI(E^F,gA^(N=F>>>0>>0?g+1|0:g),16),F=g=w,n[d+120>>2]=QA,n[d+124>>2]=g,d=z,g=g+G|0,(E=u+QA|0)>>>0>>0&&(g=g+1|0),z=E,u=g,d=MI(d^E,g^H,63),G=w,H=k,P=h,E=k,g=T+hA|0,(k=c+cA|0)>>>0>>0&&(g=g+1|0),g=g+h|0,T=E=E+k|0,E=MI(E^sA,(h=E>>>0>>0?g+1|0:g)^U,32),U=H,g=(g=f)+(f=w)|0,(H=E+b|0)>>>0>>0&&(g=g+1|0),gA=U=MI(U^(k=H),g^P,24),X=H=w,P=g,tA=E,g=h+B|0,(h=(E=$)+T|0)>>>0>>0&&(g=g+1|0),g=g+H|0,U=E=h+U|0,E=MI(tA^E,(b=E>>>0>>0?g+1|0:g)^f,16),g=(f=w)+P|0,(k=E+k|0)>>>0>>0&&(g=g+1|0),T=k,h=k^gA,gA=g,h=MI(h,g^X,63),k=w,H=v,P=y,X=v,g=J+CA|0,(J=(v=iA)+IA|0)>>>0>>0&&(g=g+1|0),g=g+y|0,X=v=X+J|0,J=MI(v^V,(y=v>>>0>>0?g+1|0:g)^S,32),S=H,g=q+(v=w)|0,(H=x+J|0)>>>0>>0&&(g=g+1|0),S=q=MI(S^H,g^P,24),V=P=w,x=g,IA=J,g=y+I|0,(J=(y=eA)+X|0)>>>0>>0&&(g=g+1|0),g=g+P|0,g=(y=J+q|0)>>>0>>0?g+1|0:g,J=y,q=g,v=MI(IA^y,g^v,16),P=S,g=(S=w)+x|0,(H=(y=v)+H|0)>>>0>>0&&(g=g+1|0),x=H,y=g,H=MI(P^H,g^V,63),P=w,X=l,V=m,tA=Y,g=m+j|0,(l=l+L|0)>>>0>>0&&(g=g+1|0),Y=l,g=g+(IA=sA=n[D+204>>2])|0,g=(l=(fA=n[D+200>>2])+l|0)>>>0>>0?g+1|0:g,Y=l,m=g,IA=MI(tA^l,g^R,32),L=y,y=E,g=O+(E=w)|0,(l=AA+IA|0)>>>0>>0&&(g=g+1|0),X=AA=MI(l^X,g^V,24),V=O=w,j=l,R=g,g=m+O|0,(m=Y+AA|0)>>>0>>0&&(g=g+1|0),g=g+(tA=cA=n[D+164>>2])|0,AA=Y=(l=n[D+160>>2])+m|0,Y=MI(Y^IA,(O=Y>>>0>>0?g+1|0:g)^E,16),g=(g=R)+(R=w)|0,(m=(E=Y)+j|0)>>>0>>0&&(g=g+1|0),j=m,E=g,X=MI(m^X,g^V,63),V=g=w,m=g,IA=y,g=N+CA|0,(N=(y=iA)+yA|0)>>>0>>0&&(g=g+1|0),g=g+m|0,g=(y=N+X|0)>>>0>>0?g+1|0:g,N=y,m=f,f=g,y=MI(IA^y,m^g,32),m=D,g=(g=L)+(L=w)|0,(IA=y+x|0)>>>0>>0&&(g=g+1|0),tA=yA=MI(X^(x=IA),g^V,24),_A=X=w,V=x,IA=g,x=y,g=f+sA|0,(y=N+fA|0)>>>0>>0&&(g=g+1|0),f=y,g=g+X|0,yA=y=y+yA|0,x=MI(x^y,(N=y>>>0>>0?g+1|0:g)^L,16),g=(X=w)+IA|0,(f=(y=x)+V|0)>>>0>>0&&(g=g+1|0),V=f,y=g,f=MI(f^tA,g^_A,63),L=g=w,n[m+32>>2]=f,n[m+36>>2]=g,m=d,IA=G,tA=v,g=G+hA|0,(v=c+d|0)>>>0>>0&&(g=g+1|0),g=g+b|0,g=(c=v+U|0)>>>0>>0?g+1|0:g,U=c,v=g,c=MI(tA^c,g^S,32),g=(g=E)+(E=w)|0,(G=c+j|0)>>>0>>0&&(g=g+1|0),b=j=MI((d=G)^m,g^IA,24),S=G=w,m=g,tA=c,g=v+I|0,(v=(c=eA)+U|0)>>>0>>0&&(g=g+1|0),g=g+G|0,IA=c=v+j|0,v=MI(tA^c,(G=c>>>0>>0?g+1|0:g)^E,16),g=(g=m)+(m=w)|0,(E=(c=v)+d|0)>>>0>>0&&(g=g+1|0),j=E,U=g,d=MI(E^b,g^S,63),c=w,b=h,S=k,g=k+rA|0,(E=h+_|0)>>>0>>0&&(g=g+1|0),g=g+q|0,h=E=E+J|0,E=MI(E^Y,(_=E>>>0>>0?g+1|0:g)^R,32),g=(g=u)+(u=w)|0,(k=E+z|0)>>>0>>0&&(g=g+1|0),Y=k,k=g,b=R=MI(Y^b,g^S,24),q=g=w,J=g,S=E,g=_+aA|0,(E=h+nA|0)>>>0>>0&&(g=g+1|0),h=E,g=g+J|0,hA=E=E+R|0,rA=MI(S^E,(J=E>>>0>>0?g+1|0:g)^u,16),g=k+(R=w)|0,(E=Y+rA|0)>>>0>>0&&(g=g+1|0),k=E,u=g,_=MI(E^b,g^q,63),E=w,g=C+(Y=P)|0,(P=(h=H)+(H=K)|0)>>>0>>0&&(g=g+1|0),g=g+O|0,q=H=P+AA|0,b=MI(H^QA,(b=F)^(F=H>>>0>>0?g+1|0:g),32),S=h,g=gA+(h=w)|0,(H=b+T|0)>>>0>>0&&(g=g+1|0),T=Y,Y=g,S=T=MI(S^H,T^g,24),z=g=w,P=g,O=b,g=F+r|0,(b=(F=Z)+q|0)>>>0>>0&&(g=g+1|0),g=g+P|0,P=F=b+T|0,AA=MI(O^F,(b=F>>>0>>0?g+1|0:g)^h,16),g=Y+(q=w)|0,(h=H+AA|0)>>>0>>0&&(g=g+1|0),H=h,T=g,F=MI(h^S,g^z,63),h=w,Y=D,S=d,z=c,g=N+EA|0,(N=s+yA|0)>>>0>>0&&(g=g+1|0),g=g+c|0,c=MI((O=d=N+d|0)^AA,(d=d>>>0>>0?g+1|0:g)^q,32),g=(gA=w)+u|0,(k=c+k|0)>>>0>>0&&(g=g+1|0),N=g,AA=MI((u=k)^S,g^z,24),q=g=w,k=g,g=d+B|0,(S=(d=$)+O|0)>>>0>>0&&(g=g+1|0),g=g+k|0,g=(d=S+AA|0)>>>0>>0?g+1|0:g,S=d,z=g,QA=MI(c^d,gA^g,16),k=g=w,n[Y+120>>2]=QA,n[Y+124>>2]=g,g=g+N|0,(c=u+QA|0)>>>0>>0&&(g=g+1|0),N=c,u=g,Y=MI(c^AA,g^q,63),d=w,q=E,c=_,g=G+e|0,(G=(_=oA)+IA|0)>>>0<_>>>0&&(g=g+1|0),g=g+E|0,AA=_=(O=c)+G|0,x=MI(_^x,(E=_>>>0>>0?g+1|0:g)^X,32),G=c,g=T+(c=w)|0,(_=H+x|0)>>>0>>0&&(g=g+1|0),O=q=MI(G^_,g^q,24),gA=G=w,H=g,X=x,g=E+t|0,(x=(E=M)+AA|0)>>>0>>0&&(g=g+1|0),g=g+G|0,q=E=x+q|0,c=MI(X^E,(T=E>>>0>>0?g+1|0:g)^c,16),g=(x=w)+H|0,(_=c+_|0)>>>0>>0&&(g=g+1|0),AA=_,E=_^O,O=g,G=MI(E,g^gA,63),H=w,gA=h,X=v,_=F,g=J+cA|0,(F=(E=l)+hA|0)>>>0>>0&&(g=g+1|0),g=g+h|0,v=E=(v=_)+F|0,E=MI(X^E,(h=m)^(m=E>>>0>>0?g+1|0:g),32),h=_,g=(g=y)+(y=w)|0,(_=E+V|0)>>>0>>0&&(g=g+1|0),J=h=MI(h^_,g^gA,24),gA=F=w,X=g,tA=E,g=m+F|0,(E=h+v|0)>>>0>>0&&(g=g+1|0),h=E,g=g+(IA=hA=n[D+132>>2])|0,V=E=(F=n[D+128>>2])+E|0,h=MI(tA^E,(IA=E>>>0>>0?g+1|0:g)^y,16),v=J,g=(J=w)+X|0,(y=(E=h)+_|0)>>>0>>0&&(g=g+1|0),E=g,v=MI(v^y,g^gA,63),m=w,gA=L,g=L+o|0,(L=(_=f)+(f=BA)|0)>>>0>>0&&(g=g+1|0),g=g+b|0,L=g=(f=P+L|0)>>>0

>>0?g+1|0:g,P=MI(f^rA,g^R,32),R=y,b=E,y=c,g=U+(c=w)|0,(E=P+j|0)>>>0>>0&&(g=g+1|0),X=U=MI(E^_,g^gA,24),rA=gA=w,_=E,j=g,_A=P,g=L+gA|0,(E=f+U|0)>>>0>>0&&(g=g+1|0),f=E,g=g+(tA=yA=n[D+196>>2])|0,U=E=(P=n[D+192>>2])+E|0,E=MI(_A^E,(gA=E>>>0>>0?g+1|0:g)^c,16),L=X,g=(g=j)+(j=w)|0,(f=(c=E)+_|0)>>>0>>0&&(g=g+1|0),X=f,c=g,rA=MI(L^f,g^rA,63),tA=g=w,f=g,L=y,g=z+sA|0,(y=S+fA|0)>>>0>>0&&(g=g+1|0),_=y,g=g+f|0,g=(y=y+rA|0)>>>0<_>>>0?g+1|0:g,_=y,f=x,x=g,y=MI(L^y,f^g,32),f=D,g=(L=w)+b|0,(b=y+R|0)>>>0>>0&&(g=g+1|0),R=b,rA=z=MI(rA^b,g^tA,24),sA=b=w,S=g,tA=y,g=x+hA|0,(y=_+F|0)>>>0<_>>>0&&(g=g+1|0),_=y,g=g+b|0,fA=y=y+z|0,x=MI(tA^y,(b=y>>>0<_>>>0?g+1|0:g)^L,16),g=(g=S)+(S=w)|0,(_=(y=x)+R|0)>>>0>>0&&(g=g+1|0),R=_,y=g,_=MI(_^rA,g^sA,63),L=g=w,n[f+32>>2]=_,n[f+36>>2]=g,z=d,rA=c,tA=h,g=d+e|0,(h=(f=Y)+(c=oA)|0)>>>0>>0&&(g=g+1|0),g=g+T|0,T=c=h+q|0,c=MI(tA^c,(h=c>>>0>>0?g+1|0:g)^J,32),J=f,g=(f=w)+rA|0,(d=c+X|0)>>>0>>0&&(g=g+1|0),Y=d,X=z=MI(J^d,g^z,24),rA=d=w,J=Y,q=g,Y=c,g=h+CA|0,(h=(c=iA)+T|0)>>>0>>0&&(g=g+1|0),g=g+d|0,T=c=h+z|0,Y=MI(Y^c,(z=c>>>0>>0?g+1|0:g)^f,16),g=(g=q)+(q=w)|0,(h=(c=Y)+J|0)>>>0>>0&&(g=g+1|0),J=h,f=g,d=MI(h^X,g^rA,63),c=w,X=H,rA=E,g=H+EA|0,(G=(h=G)+(E=s)|0)>>>0>>0&&(g=g+1|0),g=g+IA|0,G=E=G+V|0,E=MI(rA^E,(H=E>>>0>>0?g+1|0:g)^j,32),j=h,g=(h=w)+u|0,(N=E+N|0)>>>0>>0&&(g=g+1|0),u=N,N=g,V=X=MI(j^u,g^X,24),rA=g=w,j=g,IA=E,g=H+cA|0,(E=l+G|0)>>>0>>0&&(g=g+1|0),l=E,g=g+j|0,sA=E=E+X|0,IA=MI(IA^E,(H=E>>>0>>0?g+1|0:g)^h,16),g=N+(j=w)|0,(E=u+IA|0)>>>0>>0&&(g=g+1|0),G=E,u=g,l=MI(E^V,g^rA,63),E=w,N=m,g=m+t|0,(m=(h=v)+(v=M)|0)>>>0>>0&&(g=g+1|0),g=g+gA|0,gA=v=m+U|0,U=MI(v^QA,(m=k)^(k=v>>>0>>0?g+1|0:g),32),X=h,g=O+(h=w)|0,(v=U+AA|0)>>>0>>0&&(g=g+1|0),m=g,O=AA=MI(X^v,g^N,24),X=g=w,N=g,V=U,g=k+o|0,(U=(k=BA)+gA|0)>>>0>>0&&(g=g+1|0),g=g+N|0,N=k=U+AA|0,V=MI(V^k,(U=k>>>0>>0?g+1|0:g)^h,16),g=m+(AA=w)|0,(h=v+V|0)>>>0>>0&&(g=g+1|0),m=h,h^=O,O=g,k=MI(h,g^X,63),h=w,v=D,gA=d,X=c,rA=V,V=d,g=b+r|0,(b=(d=Z)+fA|0)>>>0>>0&&(g=g+1|0),g=g+c|0,c=MI(rA^(V=d=V+b|0),(d=d>>>0>>0?g+1|0:g)^AA,32),g=(rA=w)+u|0,(G=c+G|0)>>>0>>0&&(g=g+1|0),b=g,X=MI(G^gA,g^X,24),AA=g=w,u=g,g=d+I|0,(gA=(d=eA)+V|0)>>>0>>0&&(g=g+1|0),g=g+u|0,fA=d=gA+X|0,QA=MI(c^d,rA^(gA=d>>>0>>0?g+1|0:g),16),u=g=w,n[v+120>>2]=QA,n[v+124>>2]=g,g=g+b|0,(c=G+QA|0)>>>0>>0&&(g=g+1|0),b=c,v=AA,AA=g,v=MI(c^X,v^g,63),d=w,G=E,X=x,c=l,g=z+C|0,(l=K+T|0)>>>0>>0&&(g=g+1|0),x=l,g=g+E|0,T=l=(V=c)+l|0,x=MI(X^l,(E=l>>>0>>0?g+1|0:g)^S,32),S=c,g=O+(c=w)|0,(l=m+x|0)>>>0>>0&&(g=g+1|0),m=G,G=g,z=S=MI(S^l,m^g,24),O=g=w,m=g,X=x,g=E+aA|0,(x=(E=nA)+T|0)>>>0>>0&&(g=g+1|0),g=g+m|0,m=E=x+S|0,E=MI(X^E,(x=E>>>0>>0?g+1|0:g)^c,16),g=G+(T=w)|0,(c=E+l|0)>>>0>>0&&(g=g+1|0),S=c,c^=z,z=g,l=MI(c,g^O,63),G=w,O=k,X=h,V=Y,g=H+B|0,(Y=(c=$)+sA|0)>>>0>>0&&(g=g+1|0),g=g+h|0,h=c=Y+k|0,c=MI(V^c,(Y=c>>>0>>0?g+1|0:g)^q,32),g=(g=y)+(y=w)|0,(H=c+R|0)>>>0>>0&&(g=g+1|0),O=q=MI((k=H)^O,g^X,24),X=H=w,R=g,V=c,g=Y+yA|0,(c=h+P|0)>>>0>>0&&(g=g+1|0),h=c,g=g+H|0,H=c=c+q|0,h=MI(V^c,(q=c>>>0>>0?g+1|0:g)^y,16),Y=O,g=(g=R)+(R=w)|0,(y=(c=h)+k|0)>>>0>>0&&(g=g+1|0),O=y,c=g,Y=MI(Y^y,g^X,63),k=w,X=_,V=L,tA=IA,g=U+L|0,(y=_+N|0)>>>0>>0&&(g=g+1|0),_=y,g=g+(rA=sA=n[D+156>>2])|0,g=(y=(IA=n[D+152>>2])+y|0)>>>0<_>>>0?g+1|0:g,_=y,L=g,y=MI(tA^y,g^j,32),N=c,g=(c=w)+f|0,(J=y+J|0)>>>0>>0&&(g=g+1|0),X=U=MI((f=J)^X,g^V,24),rA=V=w,J=g,_A=y,g=L+V|0,(y=_+U|0)>>>0<_>>>0&&(g=g+1|0),_=y,g=g+(tA=cA=n[D+236>>2])|0,L=y=(j=n[D+232>>2])+y|0,c=MI(_A^y,(U=y>>>0<_>>>0?g+1|0:g)^c,16),y=X,g=(g=J)+(J=w)|0,(f=c+f|0)>>>0>>0&&(g=g+1|0),X=f,V=g,rA=MI(y^f,g^rA,63),tA=g=w,y=g,f=E,g=gA+EA|0,(E=s+fA|0)>>>0>>0&&(g=g+1|0),g=g+y|0,gA=s=E+rA|0,s=MI(f^s,(y=s>>>0>>0?g+1|0:g)^T,32),E=D,g=(f=w)+N|0,(N=s+O|0)>>>0>>0&&(g=g+1|0),rA=O=MI(rA^(_=N),g^tA,24),EA=N=w,T=g,tA=s,g=y+aA|0,(y=(s=nA)+gA|0)>>>0>>0&&(g=g+1|0),g=g+N|0,N=s=y+O|0,f=MI(tA^s,(O=s>>>0>>0?g+1|0:g)^f,16),g=(g=T)+(T=w)|0,(y=(s=f)+_|0)>>>0>>0&&(g=g+1|0),gA=y,s=y^rA,rA=g,y=MI(s,g^EA,63),_=g=w,n[E+32>>2]=y,n[E+36>>2]=g,tA=h,g=B+(E=d)|0,(v=(s=v)+(h=$)|0)>>>0>>0&&(g=g+1|0),g=g+x|0,m=MI(tA^(x=h=v+m|0),(h=h>>>0>>0?g+1|0:g)^R,32),d=s,g=V+(s=w)|0,(v=m+X|0)>>>0>>0&&(g=g+1|0),R=E,E=g,X=R=MI(d^v,R^g,24),EA=g=w,d=g,V=m,g=h+t|0,(m=(h=M)+x|0)>>>0>>0&&(g=g+1|0),g=g+d|0,fA=h=m+R|0,V=MI(V^h,(m=h>>>0>>0?g+1|0:g)^s,16),g=E+(x=w)|0,(s=v+V|0)>>>0>>0&&(g=g+1|0),R=s,E=s^X,X=g,v=MI(E,g^EA,63),d=w,tA=c,g=hA+(E=G)|0,(c=F+(s=l)|0)>>>0>>0&&(g=g+1|0),g=g+q|0,h=g=(c=c+H|0)>>>0>>0?g+1|0:g,G=MI(tA^c,g^J,32),H=s,g=AA+(s=w)|0,(l=G+b|0)>>>0>>0&&(g=g+1|0),b=E,E=g,J=H=MI(H^l,b^g,24),b=g=w,F=g,g=h+C|0,(h=c+K|0)>>>0>>0&&(g=g+1|0),g=g+F|0,EA=c=h+H|0,AA=MI(H=c^G,(G=c>>>0>>0?g+1|0:g)^s,16),g=E+(H=w)|0,(s=l+AA|0)>>>0>>0&&(g=g+1|0),F=s,E=g,K=MI(s^J,g^b,63),s=w,g=yA+(h=k)|0,(l=P+(c=Y)|0)>>>0

>>0&&(g=g+1|0),g=g+U|0,P=l=l+L|0,k=MI(l^QA,(k=u)^(u=l>>>0>>0?g+1|0:g),32),Y=c,g=z+(c=w)|0,(l=k+S|0)>>>0>>0&&(g=g+1|0),b=h,h=g,J=L=MI(Y^l,b^g,24),U=g=w,Y=g,b=k,g=u+sA|0,(u=P+IA|0)>>>0>>0&&(g=g+1|0),k=u,g=g+Y|0,g=(u=u+L|0)>>>0>>0?g+1|0:g,k=u,P=g,q=MI(b^u,g^c,16),g=h+(Y=w)|0,(c=l+q|0)>>>0>>0&&(g=g+1|0),L=c,h=g,u=MI(c^J,g^U,63),c=w,l=D,J=v,U=d,b=E,g=d+O|0,(E=v+N|0)>>>0>>0&&(g=g+1|0),v=E,g=g+(S=n[D+164>>2])|0,N=E=E+n[D+160>>2]|0,E=MI(E^q,(d=Y)^(Y=E>>>0>>0?g+1|0:g),32),g=(g=b)+(b=w)|0,(v=E+F|0)>>>0>>0&&(g=g+1|0),d=g,U=MI(v^J,g^U,24),J=g=w,F=g,g=Y+cA|0,(Y=N+j|0)>>>0>>0&&(g=g+1|0),N=Y,g=g+F|0,IA=Y=Y+U|0,z=MI(E^Y,b^(N=Y>>>0>>0?g+1|0:g),16),F=g=w,n[l+120>>2]=z,n[l+124>>2]=g,g=g+d|0,(E=v+z|0)>>>0>>0&&(g=g+1|0),v=E,d=g,l=MI(E^U,g^J,63),Y=w,J=s,b=f,E=K,g=m+CA|0,(K=(f=iA)+fA|0)>>>0>>0&&(g=g+1|0),g=g+s|0,s=MI(b^(j=f=(S=E)+K|0),(f=f>>>0>>0?g+1|0:g)^T,32),m=E,g=(E=w)+h|0,(K=s+L|0)>>>0>>0&&(g=g+1|0),U=L=MI(m^(h=K),g^J,24),b=K=w,m=g,S=s,g=f+e|0,(f=(s=oA)+j|0)>>>0>>0&&(g=g+1|0),g=g+K|0,L=s=f+L|0,s=MI(S^s,(J=s>>>0>>0?g+1|0:g)^E,16),g=(g=m)+(m=w)|0,(h=(E=s)+h|0)>>>0>>0&&(g=g+1|0),j=h,E=g,h=MI(h^U,g^b,63),f=w,K=u,U=c,b=u,g=G+o|0,(G=(u=BA)+EA|0)>>>0>>0&&(g=g+1|0),g=g+c|0,q=u=b+G|0,b=MI(u^V,(c=u>>>0>>0?g+1|0:g)^x,32),S=K,g=rA+(u=w)|0,(K=b+gA|0)>>>0>>0&&(g=g+1|0),G=g,T=U=MI(S^K,g^U,24),S=g=w,x=g,V=U,g=c+r|0,(U=(c=Z)+q|0)>>>0>>0&&(g=g+1|0),g=g+x|0,x=c=V+U|0,O=MI(c^b,(U=c>>>0>>0?g+1|0:g)^u,16),g=G+(b=w)|0,(c=K+O|0)>>>0>>0&&(g=g+1|0),G=c,c=g,u=MI(G^T,g^S,63),K=w,T=_,g=_+I|0,(_=(q=y)+(y=eA)|0)>>>0>>0&&(g=g+1|0),g=g+P|0,_=g=(y=_+k|0)>>>0>>0?g+1|0:g,S=MI(y^AA,g^H,32),k=c,g=X+(c=w)|0,(H=R+S|0)>>>0>>0&&(g=g+1|0),P=g,T=R=MI(H^q,g^T,24),gA=g=w,g=g+_|0,(_=y+R|0)>>>0>>0&&(g=g+1|0),g=g+(q=n[D+204>>2])|0,R=y=_+n[D+200>>2]|0,AA=MI(y^S,(q=y>>>0<_>>>0?g+1|0:g)^c,16),y=T,g=P+(T=w)|0,(c=H+AA|0)>>>0>>0&&(g=g+1|0),_=c,H=g,P=MI(y^c,g^gA,63),S=g=w,c=g,X=s,g=N+aA|0,(y=(s=nA)+IA|0)>>>0>>0&&(g=g+1|0),g=g+c|0,N=s=y+P|0,s=MI(X^s,(y=s>>>0>>0?g+1|0:g)^m,32),c=D,g=(g=k)+(k=w)|0,(m=s+G|0)>>>0>>0&&(g=g+1|0),G=m,m=g,X=S=MI(P^G,S^g,24),V=g=w,P=g,gA=s,g=y+e|0,(y=(s=oA)+N|0)>>>0>>0&&(g=g+1|0),g=g+P|0,P=s=y+S|0,gA=MI(gA^s,(S=k)^(k=s>>>0>>0?g+1|0:g),16),g=m+(N=w)|0,(s=G+gA|0)>>>0>>0&&(g=g+1|0),G=s,m=g,s=MI(s^X,g^V,63),y=g=w,n[c+32>>2]=s,n[c+36>>2]=g,S=Y,g=Y+I|0,(Y=(c=l)+(l=eA)|0)>>>0>>0&&(g=g+1|0),g=g+J|0,L=MI((J=l=Y+L|0)^O,(l=l>>>0>>0?g+1|0:g)^b,32),b=c,g=H+(c=w)|0,(Y=_+L|0)>>>0<_>>>0&&(g=g+1|0),_=Y,Y=g,S=b=MI(b^_,g^S,24),X=g=w,H=g,O=L,g=l+o|0,(L=(l=BA)+J|0)>>>0>>0&&(g=g+1|0),g=g+H|0,V=l=L+b|0,O=MI(O^l,(H=l>>>0>>0?g+1|0:g)^c,16),g=Y+(L=w)|0,(c=_+O|0)>>>0<_>>>0&&(g=g+1|0),Y=c,J=g,_=MI(c^S,g^X,63),l=w,b=f,g=f+r|0,(f=(c=h)+(h=Z)|0)>>>0>>0&&(g=g+1|0),g=g+U|0,f=g=(h=f+x|0)>>>0>>0?g+1|0:g,T=MI(h^AA,g^T,32),S=c,g=d+(x=w)|0,(c=v+T|0)>>>0>>0&&(g=g+1|0),v=c,d=g,U=c=MI(S^c,g^b,24),b=g=w,S=T,g=f+g|0,(c=c+h|0)>>>0>>0&&(g=g+1|0),h=c,g=g+(AA=n[D+236>>2])|0,T=c=c+n[D+232>>2]|0,X=MI(S^c,(f=x)^(x=c>>>0>>0?g+1|0:g),16),f=U,g=d+(U=w)|0,(c=v+X|0)>>>0>>0&&(g=g+1|0),v=c,h=g,f=MI(f^c,g^b,63),c=w,d=u,S=E,g=q+(b=K)|0,(E=u+R|0)>>>0>>0&&(g=g+1|0),u=E,g=g+(AA=n[D+164>>2])|0,R=E=E+n[D+160>>2]|0,E=MI(E^z,(u=E>>>0>>0?g+1|0:g)^F,32),q=d,g=(K=w)+S|0,(d=E+j|0)>>>0>>0&&(g=g+1|0),F=d,d=g,q=b=MI(q^F,g^b,24),S=g=w,j=g,z=E,g=u+t|0,(u=(E=M)+R|0)>>>0>>0&&(g=g+1|0),g=g+j|0,IA=E=u+b|0,z=MI(z^E,(j=E>>>0>>0?g+1|0:g)^K,16),g=d+(R=w)|0,(E=F+z|0)>>>0>>0&&(g=g+1|0),d=E,E=g,u=MI(d^q,g^S,63),K=w,F=D,b=_,q=l,S=h,rA=z,g=l+k|0,(h=_+P|0)>>>0

>>0&&(g=g+1|0),_=h,g=g+(AA=n[D+132>>2])|0,z=h=h+n[D+128>>2]|0,h=MI(rA^h,(_=h>>>0<_>>>0?g+1|0:g)^R,32),P=b,g=(b=w)+S|0,(k=h+v|0)>>>0>>0&&(g=g+1|0),l=k,k=g,R=MI(P^l,g^q,24),v=g=w,P=g,g=_+CA|0,(q=(_=iA)+z|0)>>>0<_>>>0&&(g=g+1|0),g=g+P|0,rA=_=q+R|0,AA=MI(h^_,b^(P=_>>>0>>0?g+1|0:g),16),h=g=w,n[F+120>>2]=AA,n[F+124>>2]=g,g=g+k|0,(_=l+AA|0)>>>0>>0&&(g=g+1|0),k=_,l=v,v=g,_=MI(_^R,l^g,63),l=w,F=f,R=c,b=E,S=f,g=H+B|0,(f=(E=$)+V|0)>>>0>>0&&(g=g+1|0),g=g+c|0,q=E=S+f|0,E=MI(E^gA,(f=E>>>0>>0?g+1|0:g)^N,32),S=F,g=(F=w)+b|0,(d=(c=E)+d|0)>>>0>>0&&(g=g+1|0),H=g,N=c=MI(S^d,g^R,24),R=g=w,z=E,g=f+g|0,(E=c+q|0)>>>0>>0&&(g=g+1|0),g=g+(S=n[D+156>>2])|0,b=c=E+n[D+152>>2]|0,z=MI(z^c,(q=c>>>0>>0?g+1|0:g)^F,16),g=H+(F=w)|0,(c=d+z|0)>>>0>>0&&(g=g+1|0),d=c,H=g,E=MI(c^N,g^R,63),f=w,g=x+(N=K)|0,(u=T+(c=u)|0)>>>0>>0&&(g=g+1|0),K=u,g=g+(R=n[D+204>>2])|0,K=g=(u=u+n[D+200>>2]|0)>>>0>>0?g+1|0:g,R=MI(u^O,g^L,32),S=c,g=m+(x=w)|0,(c=G+R|0)>>>0>>0&&(g=g+1|0),G=c,m=g,L=c=MI(S^c,g^N,24),N=g=w,T=R,g=K+g|0,(c=c+u|0)>>>0>>0&&(g=g+1|0),u=c,g=g+(S=n[D+148>>2])|0,R=c=c+n[D+144>>2]|0,O=MI(T^c,(S=x)^(x=c>>>0>>0?g+1|0:g),16),u=L,g=m+(L=w)|0,(c=G+O|0)>>>0>>0&&(g=g+1|0),G=g,u=MI(u^c,g^N,63),K=w,m=s,N=y,g=y+j|0,(y=s+IA|0)>>>0>>0&&(g=g+1|0),g=g+(T=n[D+196>>2])|0,T=s=y+n[D+192>>2]|0,U=MI(s^X,(y=s>>>0>>0?g+1|0:g)^U,32),S=m,g=J+(m=w)|0,(s=Y+U|0)>>>0>>0&&(g=g+1|0),Y=s,N=s=MI(S^s,g^N,24),j=g,X=n[D+220>>2],S=U,g=(J=w)+y|0,(y=s+T|0)>>>0>>0&&(g=g+1|0),g=g+(gA=X)|0,T=s=(U=n[D+216>>2])+y|0,y=MI(S^s,(V=m)^(m=s>>>0>>0?g+1|0:g),16),S=N,g=(N=w)+j|0,(Y=(s=y)+Y|0)>>>0>>0&&(g=g+1|0),s=J,J=g,j=s=MI(S^Y,s^g,63),S=g=w,g=P+g|0,(P=s+rA|0)>>>0>>0&&(g=g+1|0),g=g+(V=n[D+236>>2])|0,V=s=P+n[D+232>>2]|0,gA=MI(s^z,(gA=F)^(F=s>>>0

>>0?g+1|0:g),32),g=G+(P=w)|0,(s=c+gA|0)>>>0>>0&&(g=g+1|0),G=s,c=s^j,j=g,s=MI(c,g^S,24),c=D,S=s,z=g=w,g=F+g|0,(F=s+V|0)>>>0>>0&&(g=g+1|0),g=g+X|0,X=s=F+U|0,gA=MI(s^gA,(F=P)^(P=s>>>0>>0?g+1|0:g),16),g=j+(U=w)|0,(s=G+gA|0)>>>0>>0&&(g=g+1|0),G=s,j=g,s=MI(s^S,g^z,63),F=g=w,n[c+32>>2]=s,n[c+36>>2]=g,S=l,g=l+CA|0,(l=(c=_)+(_=iA)|0)>>>0<_>>>0&&(g=g+1|0),g=g+q|0,b=MI((q=_=l+b|0)^O,(_=_>>>0>>0?g+1|0:g)^L,32),L=c,g=J+(c=w)|0,(l=Y+b|0)>>>0>>0&&(g=g+1|0),Y=g,z=J=MI(L^l,g^S,24),O=g=w,L=g,S=J,g=_+r|0,(J=(_=Z)+q|0)>>>0<_>>>0&&(g=g+1|0),g=g+L|0,V=_=S+J|0,S=MI(_^b,(L=_>>>0>>0?g+1|0:g)^c,16),g=Y+(J=w)|0,(c=l+S|0)>>>0>>0&&(g=g+1|0),b=c,q=g,_=MI(c^z,g^O,63),c=w,Y=f,z=y,g=f+aA|0,(y=(l=E)+(E=nA)|0)>>>0>>0&&(g=g+1|0),g=g+x|0,g=(E=y+R|0)>>>0>>0?g+1|0:g,R=E,E=g,x=MI(z^R,g^N,32),g=v+(y=w)|0,(f=k+x|0)>>>0>>0&&(g=g+1|0),k=f^l,l=g,N=k=MI(k,g^Y,24),O=g=w,Y=g,v=k,g=E+I|0,(k=(E=eA)+R|0)>>>0>>0&&(g=g+1|0),g=g+Y|0,g=(E=v+k|0)>>>0>>0?g+1|0:g,k=E,v=g,z=MI(E^x,g^y,16),g=l+(x=w)|0,(E=f+z|0)>>>0>>0&&(g=g+1|0),l=E,Y=g,y=MI(E^N,g^O,63),E=w,g=m+(N=K)|0,(u=T+(f=u)|0)>>>0>>0&&(g=g+1|0),K=u,g=g+(R=n[D+156>>2])|0,K=g=(u=u+n[D+152>>2]|0)>>>0>>0?g+1|0:g,R=MI(u^AA,g^h,32),m=f,g=H+(f=w)|0,(h=d+R|0)>>>0>>0&&(g=g+1|0),d=h,H=g,m=h=MI(m^h,g^N,24),N=g=w,g=K+g|0,(h=h+u|0)>>>0>>0&&(g=g+1|0),u=h,g=g+(AA=n[D+204>>2])|0,IA=h=h+n[D+200>>2]|0,T=MI(T=h^R,(R=h>>>0>>0?g+1|0:g)^f,16),g=H+(K=w)|0,(h=d+T|0)>>>0>>0&&(g=g+1|0),d=h,H=g,h=MI(h^m,g^N,63),u=w,f=D,m=_,N=c,O=_,g=P+e|0,(P=(_=oA)+X|0)>>>0<_>>>0&&(g=g+1|0),g=g+c|0,P=MI((c=_=O+P|0)^T,(_=K)^(K=c>>>0

>>0?g+1|0:g),32),g=Y+(T=w)|0,(_=l+P|0)>>>0>>0&&(g=g+1|0),l=g,N=MI(_^m,g^N,24),g=K+(Y=w)|0,(K=c+N|0)>>>0>>0&&(g=g+1|0),c=(c=K)+(K=n[D+128>>2])|0,g=n[D+132>>2]+g|0,X=c,AA=MI(P^c,T^(m=c>>>0>>0?g+1|0:g),16),K=g=w,n[f+120>>2]=AA,n[f+124>>2]=g,g=l+g|0,(c=_+AA|0)>>>0<_>>>0&&(g=g+1|0),P=c,c^=N,N=g,f=MI(c,g^Y,63),_=w,l=E,c=y,g=L+o|0,(Y=(y=BA)+V|0)>>>0>>0&&(g=g+1|0),g=g+E|0,T=y=(T=c)+Y|0,L=MI(y^gA,(E=y>>>0>>0?g+1|0:g)^U,32),U=c,g=H+(y=w)|0,(c=d+L|0)>>>0>>0&&(g=g+1|0),Y=c,d=l,l=g,d=c=MI(U^c,d^g,24),H=g=w,V=L,g=E+g|0,(E=c+T|0)>>>0>>0&&(g=g+1|0),g=g+(O=n[D+164>>2])|0,L=c=E+n[D+160>>2]|0,E=MI(V^c,(U=c>>>0>>0?g+1|0:g)^y,16),T=d,g=l+(y=w)|0,(c=E+Y|0)>>>0>>0&&(g=g+1|0),d=c,l=H,H=g,l=MI(T^c,l^g,63),Y=w,T=u,g=u+v|0,(h=k+(c=h)|0)>>>0>>0&&(g=g+1|0),u=h,g=g+(O=n[D+196>>2])|0,J=MI((V=S)^(S=h=h+n[D+192>>2]|0),(h=h>>>0>>0?g+1|0:g)^J,32),v=c,g=j+(c=w)|0,(u=G+J|0)>>>0>>0&&(g=g+1|0),k=g,j=G=MI(v^u,g^T,24),T=g=w,v=g,V=G,g=h+B|0,(G=(h=$)+S|0)>>>0>>0&&(g=g+1|0),g=g+v|0,v=h=V+G|0,O=MI(h^J,(G=h>>>0>>0?g+1|0:g)^c,16),g=k+(J=w)|0,(c=u+O|0)>>>0>>0&&(g=g+1|0),k=c,c=g,h=MI(k^j,g^T,63),u=w,j=s,T=F,g=F+R|0,(F=s+IA|0)>>>0>>0&&(g=g+1|0),g=g+(S=n[D+148>>2])|0,S=MI((V=z)^(z=s=F+n[D+144>>2]|0),(s=s>>>0>>0?g+1|0:g)^x,32),F=c,g=q+(c=w)|0,(x=b+S|0)>>>0>>0&&(g=g+1|0),b=x^j,j=g,q=b=MI(b,g^T,24),T=g=w,R=g,V=b,g=s+t|0,(b=(s=M)+z|0)>>>0>>0&&(g=g+1|0),g=g+R|0,R=s=V+b|0,gA=MI(s^S,(b=s>>>0>>0?g+1|0:g)^c,16),c=q,g=j+(q=w)|0,(s=x+gA|0)>>>0>>0&&(g=g+1|0),x=s,j=g,T=MI(c^s,g^T,63),S=g=w,s=g,V=E,g=m+B|0,(E=(c=$)+X|0)>>>0>>0&&(g=g+1|0),g=g+s|0,z=c=E+T|0,s=MI(V^c,(E=c>>>0>>0?g+1|0:g)^y,32),c=D,g=(y=w)+F|0,(k=s+k|0)>>>0>>0&&(g=g+1|0),F=k,k=g,S=T=MI(T^F,S^g,24),V=g=w,m=g,X=s,g=E+o|0,(E=(s=BA)+z|0)>>>0>>0&&(g=g+1|0),g=g+m|0,EA=s=E+T|0,X=MI(X^s,(m=s>>>0>>0?g+1|0:g)^y,16),E=S,g=k+(T=w)|0,(s=F+X|0)>>>0>>0&&(g=g+1|0),S=s,z=g,y=MI(E^s,g^V,63),F=g=w,n[c+32>>2]=y,n[c+36>>2]=g,g=r+(c=_)|0,(f=(s=f)+(E=Z)|0)>>>0>>0&&(g=g+1|0),g=g+U|0,f=g=(E=f+L|0)>>>0>>0?g+1|0:g,J=MI(E^O,g^J,32),U=s,g=j+(_=w)|0,(s=x+J|0)>>>0>>0&&(g=g+1|0),k=s,x=c,c=g,x=s=MI(U^s,x^g,24),L=g=w,g=f+g|0,(s=E+s|0)>>>0>>0&&(g=g+1|0),g=g+(U=n[D+204>>2])|0,O=s=(E=s)+n[D+200>>2]|0,IA=MI(f=s^J,(J=s>>>0>>0?g+1|0:g)^_,16),E=x,g=c+(x=w)|0,(s=k+IA|0)>>>0>>0&&(g=g+1|0),j=s,c=L,L=g,f=MI(E^s,c^g,63),s=w,g=G+(E=Y)|0,(_=v+(c=l)|0)>>>0>>0&&(g=g+1|0),l=_,g=g+(k=n[D+220>>2])|0,l=g=(_=_+n[D+216>>2]|0)>>>0>>0?g+1|0:g,U=MI(_^gA,g^q,32),v=c,g=N+(Y=w)|0,(c=U+P|0)>>>0

>>0&&(g=g+1|0),k=c,G=E,E=g,v=c=MI(v^c,G^g,24),G=g=w,g=l+g|0,(c=c+_|0)>>>0<_>>>0&&(g=g+1|0),_=c,g=g+(N=n[D+156>>2])|0,gA=c=c+n[D+152>>2]|0,rA=MI(c^U,(P=c>>>0<_>>>0?g+1|0:g)^Y,16),g=E+(N=w)|0,(c=k+rA|0)>>>0>>0&&(g=g+1|0),l=c,Y=g,c=MI(c^v,g^G,63),_=w,k=u,g=u+b|0,(h=R+(E=h)|0)>>>0>>0&&(g=g+1|0),u=h,g=g+(v=n[D+132>>2])|0,u=g=(h=h+n[D+128>>2]|0)>>>0>>0?g+1|0:g,U=MI(h^AA,g^K,32),G=E,g=H+(K=w)|0,(E=d+U|0)>>>0>>0&&(g=g+1|0),v=E,d=k,k=g,d=E=MI(G^E,d^g,24),G=g=w,g=u+g|0,(E=E+h|0)>>>0>>0&&(g=g+1|0),h=E,g=g+(R=n[D+196>>2])|0,H=E=E+n[D+192>>2]|0,R=MI(u=E^U,(U=E>>>0>>0?g+1|0:g)^K,16),g=k+(K=w)|0,(E=v+R|0)>>>0>>0&&(g=g+1|0),k=E,v=g,u=MI(E^d,g^G,63),E=w,h=D,d=f,G=s,b=f,g=m+aA|0,(m=(f=nA)+EA|0)>>>0>>0&&(g=g+1|0),g=g+s|0,b=MI((s=f=b+m|0)^R,(f=K)^(K=s>>>0>>0?g+1|0:g),32),g=Y+(AA=w)|0,(f=l+b|0)>>>0>>0&&(g=g+1|0),l=f,Y=g,q=MI(f^d,g^G,24),d=D,f=n[D+144>>2],g=K+(G=w)|0,(K=s+q|0)>>>0>>0&&(g=g+1|0),K=(s=f)+K|0,g=(m=n[d+148>>2])+g|0,V=MI(d=b^(R=K),AA^(b=R>>>0>>0?g+1|0:g),16),K=g=w,n[h+120>>2]=V,n[h+124>>2]=g,d=q,g=Y+g|0,(s=l+V|0)>>>0>>0&&(g=g+1|0),q=s,h=g,l=MI(d^s,g^G,63),Y=w,s=c,d=_,g=_+J|0,(_=c+O|0)>>>0>>0&&(g=g+1|0),g=g+(G=n[D+236>>2])|0,G=MI((J=c=_+n[D+232>>2]|0)^X,(c=c>>>0<_>>>0?g+1|0:g)^T,32),T=s,g=v+(s=w)|0,(_=G+k|0)>>>0>>0&&(g=g+1|0),k=g,T=d=MI(T^_,g^d,24),O=g=w,v=g,X=G,G=d,g=c+CA|0,(d=(c=iA)+J|0)>>>0>>0&&(g=g+1|0),g=g+v|0,G=c=G+d|0,c=MI(X^c,(J=c>>>0>>0?g+1|0:g)^s,16),v=T,g=k+(T=w)|0,(s=c+_|0)>>>0<_>>>0&&(g=g+1|0),AA=s,k=O,O=g,_=MI(v^s,k^g,63),k=w,v=E,s=u,g=P+I|0,(d=(u=eA)+gA|0)>>>0>>0&&(g=g+1|0),g=g+E|0,X=MI((E=u=(X=s)+d|0)^IA,(u=E>>>0>>0?g+1|0:g)^x,32),x=s,g=z+(d=w)|0,(s=S+X|0)>>>0>>0&&(g=g+1|0),P=s,x=s=MI(x^s,g^v,24),S=g,z=g=n[D+164>>2],gA=g,g=u+(v=w)|0,(s=E+s|0)>>>0>>0&&(g=g+1|0),g=g+gA|0,gA=s=(EA=n[D+160>>2])+(E=s)|0,u=MI(u=s^X,(X=s>>>0>>0?g+1|0:g)^d,16),d=x,g=(x=w)+S|0,(E=(s=u)+P|0)>>>0>>0&&(g=g+1|0),s=g,v=MI(d^E,g^v,63),d=w,S=F,g=F+t|0,(F=(P=y)+(y=M)|0)>>>0>>0&&(g=g+1|0),g=g+U|0,N=MI((U=y=F+H|0)^rA,(y=y>>>0>>0?g+1|0:g)^N,32),g=L+(F=w)|0,(H=N+j|0)>>>0>>0&&(g=g+1|0),L=H^P,P=g,IA=j=MI(L,g^S,24),rA=g=w,L=g,S=N,g=y+e|0,(N=(y=oA)+U|0)>>>0>>0&&(g=g+1|0),g=g+L|0,L=y=N+j|0,S=MI(S^y,(U=F)^(F=y>>>0>>0?g+1|0:g),16),g=P+(N=w)|0,(y=H+S|0)>>>0>>0&&(g=g+1|0),H=g,IA=MI(y^IA,g^rA,63),rA=g=w,P=g,U=c,g=b+t|0,(M=M+R|0)>>>0>>0&&(g=g+1|0),g=g+P|0,P=M=(c=M)+IA|0,M=MI(U^M,(j=M>>>0>>0?g+1|0:g)^T,32),g=(U=w)+s|0,(c=(s=M)+E|0)>>>0>>0&&(g=g+1|0),E=c,R=g,s=MI(IA^c,rA^g,24),c=D,b=s,T=g=w,IA=M,g=j+g|0,(M=s+P|0)>>>0

>>0&&(g=g+1|0),g=g+m|0,rA=M=(s=M)+f|0,IA=MI(IA^M,(m=M>>>0>>0?g+1|0:g)^U,16),g=R+(P=w)|0,(M=E+IA|0)>>>0>>0&&(g=g+1|0),j=M,E=g,M=MI(M^b,g^T,63),f=g=w,n[c+32>>2]=M,n[c+36>>2]=g,b=u,g=J+(c=Y)|0,(u=G+(s=l)|0)>>>0>>0&&(g=g+1|0),l=u,g=g+(U=n[D+196>>2])|0,x=MI(b^(J=u=u+n[D+192>>2]|0),(u=u>>>0>>0?g+1|0:g)^x,32),Y=s,g=H+(l=w)|0,(s=y+x|0)>>>0>>0&&(g=g+1|0),y=s,H=c,c=g,Y=s=MI(Y^s,H^g,24),G=g=w,g=u+g|0,(u=s+J|0)>>>0>>0&&(g=g+1|0),g=g+z|0,T=s=u+EA|0,z=MI(s^x,(H=s>>>0>>0?g+1|0:g)^l,16),g=c+(x=w)|0,(s=y+z|0)>>>0>>0&&(g=g+1|0),J=s,y=g,u=MI(s^Y,g^G,63),s=w,l=_,g=CA+(Y=k)|0,(_=(c=iA)+_|0)>>>0>>0&&(g=g+1|0),g=g+X|0,G=c=_+gA|0,c=MI(c^S,(_=c>>>0>>0?g+1|0:g)^N,32),b=l,g=(g=h)+(h=w)|0,(k=c+q|0)>>>0>>0&&(g=g+1|0),l=k,k=Y,Y=g,U=N=MI(b^l,k^g,24),R=g=w,k=g,b=c,g=_+B|0,(_=(c=$)+G|0)>>>0>>0&&(g=g+1|0),g=g+k|0,k=c=_+N|0,S=MI(b^c,(G=c>>>0<_>>>0?g+1|0:g)^h,16),g=Y+(N=w)|0,(c=l+S|0)>>>0>>0&&(g=g+1|0),Y=c,h=g,c=MI(c^U,g^R,63),_=w,U=d,g=d+I|0,(d=(l=v)+(v=eA)|0)>>>0>>0&&(g=g+1|0),g=g+F|0,R=v=d+L|0,L=MI(v^V,(d=K)^(K=v>>>0>>0?g+1|0:g),32),d=l,g=O+(l=w)|0,(F=L+AA|0)>>>0>>0&&(g=g+1|0),v=g,b=U=MI(d^F,g^U,24),AA=g=w,d=g,q=L,g=K+e|0,(L=(K=oA)+R|0)>>>0>>0&&(g=g+1|0),g=g+d|0,gA=K=L+U|0,q=MI(q^K,(d=K>>>0>>0?g+1|0:g)^l,16),g=v+(L=w)|0,(K=F+q|0)>>>0>>0&&(g=g+1|0),U=g,K=MI((v=K)^b,g^AA,63),l=w,F=D,R=u,b=s,X=u,g=m+o|0,(m=(u=BA)+rA|0)>>>0>>0&&(g=g+1|0),g=g+s|0,m=g=(u=X+m|0)>>>0>>0?g+1|0:g,s=MI(u^q,g^L,32),g=(q=w)+h|0,(Y=s+Y|0)>>>0>>0&&(g=g+1|0),AA=Y,Y=g,R=MI(AA^R,g^b,24),g=m+(L=w)|0,(h=u+R|0)>>>0>>0&&(g=g+1|0),h=(u=n[D+216>>2])+h|0,g=n[D+220>>2]+g|0,X=h,h=MI(s^h,q^(m=h>>>0>>0?g+1|0:g),16),u=g=w,n[F+120>>2]=h,n[F+124>>2]=g,b=R,g=g+Y|0,(F=(s=h)+AA|0)>>>0>>0&&(g=g+1|0),R=F,s=L,L=g,s=MI(b^F,s^g,63),F=w,Y=c,b=_,g=_+H|0,(_=c+T|0)>>>0>>0&&(g=g+1|0),g=g+(q=n[D+204>>2])|0,P=MI((q=c=_+n[D+200>>2]|0)^IA,(c=c>>>0<_>>>0?g+1|0:g)^P,32),H=Y,g=U+(_=w)|0,(Y=v+P|0)>>>0>>0&&(g=g+1|0),v=g,b=U=MI(H^Y,g^b,24),T=g=w,H=g,O=P,g=c+r|0,(P=(c=Z)+q|0)>>>0>>0&&(g=g+1|0),g=g+H|0,V=c=P+U|0,AA=MI(O^c,(H=c>>>0

>>0?g+1|0:g)^_,16),g=v+(P=w)|0,(c=Y+AA|0)>>>0>>0&&(g=g+1|0),v=c,c=g,_=MI(v^b,g^T,63),Y=w,b=l,q=E,T=g=n[D+156>>2],E=g,g=l+G|0,(K=k+(U=K)|0)>>>0>>0&&(g=g+1|0),g=g+E|0,E=MI((O=z)^(z=K=(IA=n[D+152>>2])+(l=K)|0),(K=K>>>0>>0?g+1|0:g)^x,32),g=(l=w)+q|0,(G=E+j|0)>>>0>>0&&(g=g+1|0),k=G,G=g,U=j=MI(k^U,g^b,24),b=g=w,x=g,q=E,g=K+aA|0,(K=(E=nA)+z|0)>>>0>>0&&(g=g+1|0),g=g+x|0,x=E=K+j|0,O=MI(q^E,(j=E>>>0>>0?g+1|0:g)^l,16),q=U,g=G+(U=w)|0,(E=k+O|0)>>>0>>0&&(g=g+1|0),l=E,k=g,E=MI(q^E,g^b,63),K=w,b=f,q=y,z=S,g=f+d|0,(f=(G=M)+gA|0)>>>0>>0&&(g=g+1|0),g=g+(y=n[D+236>>2])|0,S=M=f+n[D+232>>2]|0,y=MI(z^M,(f=M>>>0>>0?g+1|0:g)^N,32),M=G,g=(d=w)+q|0,(G=y+J|0)>>>0>>0&&(g=g+1|0),N=M=MI(M^G,g^b,24),b=g,z=n[D+132>>2],rA=y,g=(J=w)+f|0,(f=M+S|0)>>>0>>0&&(g=g+1|0),g=g+(gA=z)|0,q=M=(y=n[D+128>>2])+f|0,f=MI(rA^M,(S=d)^(d=M>>>0>>0?g+1|0:g),16),M=N,g=(N=w)+b|0,(G=f+G|0)>>>0>>0&&(g=g+1|0),b=J,J=g,b=M=MI(M^G,b^g,63),S=g=w,gA=AA,g=m+g|0,(m=M+X|0)>>>0>>0&&(g=g+1|0),g=g+z|0,AA=M=y+m|0,z=MI(gA^M,(y=M>>>0>>0?g+1|0:g)^P,32),M=D,g=k+(m=w)|0,(k=l+z|0)>>>0>>0&&(g=g+1|0),l=k,k=g,S=b=MI(l^b,g^S,24),X=g=w,P=g,gA=b,g=y+I|0,(b=(y=eA)+AA|0)>>>0>>0&&(g=g+1|0),g=g+P|0,P=y=gA+b|0,gA=MI(y^z,(gA=m)^(m=y>>>0>>0?g+1|0:g),16),AA=S,g=k+(b=w)|0,(y=l+gA|0)>>>0>>0&&(g=g+1|0),S=y,z=g,y=MI(AA^y,g^X,63),l=g=w,n[M+32>>2]=y,n[M+36>>2]=g,M=s,k=F,g=F+H|0,(F=s+V|0)>>>0>>0&&(g=g+1|0),g=g+(AA=n[D+148>>2])|0,U=MI((AA=s=F+n[D+144>>2]|0)^O,(s=s>>>0>>0?g+1|0:g)^U,32),H=M,g=J+(F=w)|0,(M=G+U|0)>>>0>>0&&(g=g+1|0),G=M,M=k,k=g,M=MI(H^G,M^g,24),J=g=w,g=s+g|0,(s=(H=M)+AA|0)>>>0>>0&&(g=g+1|0),g=g+T|0,X=M=s+IA|0,T=MI(T=M^U,(U=M>>>0>>0?g+1|0:g)^F,16),s=H,g=k+(H=w)|0,(M=G+T|0)>>>0>>0&&(g=g+1|0),k=J,J=g,F=MI(s^(G=M),k^g,63),k=w,M=_,V=f,g=j+(s=Y)|0,(f=_+x|0)>>>0>>0&&(g=g+1|0),g=g+(AA=n[D+164>>2])|0,x=MI(V^(j=f=(_=f)+n[D+160>>2]|0),(f=f>>>0<_>>>0?g+1|0:g)^N,32),Y=M,g=L+(M=w)|0,(_=x+R|0)>>>0>>0&&(g=g+1|0),N=s,s=g,N=L=MI(Y^_,N^g,24),R=g=w,Y=g,O=x,g=f+e|0,(x=(f=oA)+j|0)>>>0>>0&&(g=g+1|0),g=g+Y|0,V=f=x+L|0,O=MI(O^f,(Y=f>>>0>>0?g+1|0:g)^M,16),g=s+(x=w)|0,(M=_+O|0)>>>0<_>>>0&&(g=g+1|0),L=g,M=MI((_=M)^N,g^R,63),f=w,N=E,j=K,g=K+B|0,(E=(s=$)+E|0)>>>0>>0&&(g=g+1|0),g=g+d|0,d=s=E+q|0,s=MI(s^h,(E=s>>>0>>0?g+1|0:g)^u,32),g=(g=c)+(c=w)|0,(u=s+v|0)>>>0>>0&&(g=g+1|0),h=u,u=g,N=v=MI(h^N,g^j,24),j=g=w,K=g,R=s,g=E+CA|0,(E=(s=iA)+d|0)>>>0>>0&&(g=g+1|0),g=g+K|0,v=s=E+v|0,R=MI(R^s,(d=s>>>0>>0?g+1|0:g)^c,16),c=N,g=u+(K=w)|0,(s=h+R|0)>>>0>>0&&(g=g+1|0),N=s,E=g,h=MI(c^s,g^j,63),s=w,j=k,g=k+m|0,(F=P+(u=F)|0)>>>0

>>0&&(g=g+1|0),k=F,g=g+(q=n[(c=D)+196>>2])|0,g=(F=F+n[c+192>>2]|0)>>>0>>0?g+1|0:g,k=K,K=g,P=MI(F^R,k^g,32),m=u,g=L+(R=w)|0,(u=_+P|0)>>>0<_>>>0&&(g=g+1|0),k=g,L=MI(m^(_=u),g^j,24),g=K+(m=w)|0,(u=F+L|0)>>>0>>0&&(g=g+1|0),u=(K=n[D+200>>2])+u|0,g=n[D+204>>2]+g|0,IA=u,AA=MI(P^u,R^(F=u>>>0>>0?g+1|0:g),16),u=g=w,n[c+120>>2]=AA,n[c+124>>2]=g,g=g+k|0,(c=_+AA|0)>>>0<_>>>0&&(g=g+1|0),k=c,_=m,m=g,c=MI(c^L,_^g,63),K=w,P=f,L=E,g=f+U|0,(f=(_=M)+X|0)>>>0<_>>>0&&(g=g+1|0),g=g+(E=rA=n[D+212>>2])|0,R=M=(j=n[D+208>>2])+f|0,E=MI(M^gA,(f=M>>>0>>0?g+1|0:g)^b,32),b=_,g=(_=w)+L|0,(L=E+N|0)>>>0>>0&&(g=g+1|0),M=P,P=g,N=M=MI(b^L,M^g,24),U=g=w,b=E,g=f+g|0,(E=M+R|0)>>>0>>0&&(g=g+1|0),g=g+(q=n[D+220>>2])|0,gA=M=E+n[D+216>>2]|0,E=MI(b^M,(R=M>>>0>>0?g+1|0:g)^_,16),f=N,g=P+(N=w)|0,(M=E+L|0)>>>0>>0&&(g=g+1|0),P=M,L=g,f=MI(f^M,g^U,63),_=w,M=h,U=s,b=T,T=h,g=Y+aA|0,(Y=(h=nA)+V|0)>>>0>>0&&(g=g+1|0),g=g+s|0,T=h=T+Y|0,q=MI(b^h,(s=h>>>0>>0?g+1|0:g)^H,32),b=M,g=z+(h=w)|0,(M=S+q|0)>>>0>>0&&(g=g+1|0),H=g,U=M=MI(b^(Y=M),g^U,24),b=g=w,S=q,g=s+g|0,(s=M+T|0)>>>0>>0&&(g=g+1|0),g=g+(z=n[D+236>>2])|0,q=M=s+n[D+232>>2]|0,S=MI(S^M,(T=M>>>0>>0?g+1|0:g)^h,16),h=U,g=H+(U=w)|0,(M=Y+S|0)>>>0>>0&&(g=g+1|0),Y=g,M=MI(h^(s=M),g^b,63),h=w,b=l,g=l+r|0,(l=(H=y)+(y=Z)|0)>>>0>>0&&(g=g+1|0),g=g+d|0,x=MI((z=y=l+v|0)^O,(y=y>>>0>>0?g+1|0:g)^x,32),g=J+(l=w)|0,(v=G+x|0)>>>0>>0&&(g=g+1|0),d=g,J=H=MI(v^H,g^b,24),O=g=w,G=g,b=H,g=y+o|0,(H=(y=BA)+z|0)>>>0>>0&&(g=g+1|0),g=g+G|0,b=MI((z=y=b+H|0)^x,(y=y>>>0>>0?g+1|0:g)^l,16),g=d+(l=w)|0,(d=v+b|0)>>>0>>0&&(g=g+1|0),v=d,d=g,H=MI(v^J,g^O,63),x=g=w,G=g,J=E,g=F+r|0,(E=Z+IA|0)>>>0>>0&&(g=g+1|0),g=g+G|0,O=Z=E+H|0,J=MI(J^Z,(E=Z>>>0>>0?g+1|0:g)^N,32),g=Y+(F=w)|0,(Z=s+J|0)>>>0>>0&&(g=g+1|0),G=g,Z=MI(H^(Y=Z),x^g,24),s=D,x=g=w,g=E+g|0,(E=(H=Z)+O|0)>>>0>>0&&(g=g+1|0),g=g+rA|0,O=Z=E+j|0,N=MI(Z^J,(E=F)^(F=Z>>>0>>0?g+1|0:g),16),E=H,g=G+(H=w)|0,(Z=Y+N|0)>>>0>>0&&(g=g+1|0),G=g,Z=MI(E^(Y=Z),g^x,63),E=g=w,n[s+32>>2]=Z,n[s+36>>2]=g,s=c,g=(x=K)+R|0,(K=c+gA|0)>>>0>>0&&(g=g+1|0),g=g+(J=n[D+164>>2])|0,j=MI((R=c=K+n[D+160>>2]|0)^S,(c=c>>>0>>0?g+1|0:g)^U,32),S=s,g=d+(K=w)|0,(s=v+j|0)>>>0>>0&&(g=g+1|0),v=s,d=g,x=s=MI(S^s,g^x,24),J=g=w,g=c+g|0,(c=s+R|0)>>>0>>0&&(g=g+1|0),g=g+(S=n[D+196>>2])|0,S=s=c+n[D+192>>2]|0,j=MI(s^j,(U=K)^(K=s>>>0>>0?g+1|0:g),16),g=d+(gA=w)|0,(s=v+j|0)>>>0>>0&&(g=g+1|0),v=s,d=g,J=MI(s^x,g^J,63),s=w,x=_,g=_+T|0,(f=q+(c=f)|0)>>>0>>0&&(g=g+1|0),g=g+(U=n[D+204>>2])|0,U=MI((R=f=(_=f)+n[D+200>>2]|0)^b,(f=f>>>0<_>>>0?g+1|0:g)^l,32),b=c,g=m+(c=w)|0,(_=k+U|0)>>>0>>0&&(g=g+1|0),l=g,x=m=MI(b^_,g^x,24),b=g=w,k=g,g=f+o|0,(f=R+BA|0)>>>0>>0&&(g=g+1|0),g=g+k|0,U=MI((q=BA=f+m|0)^U,(f=q>>>0>>0?g+1|0:g)^c,16),g=l+(k=w)|0,(BA=_+U|0)>>>0<_>>>0&&(g=g+1|0),l=g,BA=MI((_=BA)^x,g^b,63),c=w,m=M,x=h,g=y+h|0,(h=M+z|0)>>>0>>0&&(g=g+1|0),g=g+(R=n[D+236>>2])|0,R=MI((b=M=h+n[D+232>>2]|0)^AA,(M=M>>>0>>0?g+1|0:g)^u,32),g=L+(h=w)|0,(y=P+R|0)>>>0

>>0&&(g=g+1|0),u=g,x=P=MI(y^m,g^x,24),T=g=w,m=g,g=M+B|0,(M=b+$|0)>>>0<$>>>0&&(g=g+1|0),g=g+m|0,L=MI((m=$=M+P|0)^R,(P=m>>>0>>0?g+1|0:g)^h,16),g=u+(R=w)|0,($=y+L|0)>>>0>>0&&(g=g+1|0),u=g,M=MI((y=$)^x,g^T,63),h=w,$=D,g=F+I|0,(F=O+eA|0)>>>0>>0&&(g=g+1|0),g=g+(x=s)|0,b=aA,aA=g=(eA=F+J|0)>>>0>>0?g+1|0:g,g=b+g|0,(F=eA+nA|0)>>>0>>0&&(g=g+1|0),nA=g,aA=MI(L^eA,R^aA,32),g=l+(x=w)|0,(eA=_+aA|0)>>>0<_>>>0&&(g=g+1|0),_=s,s=g,eA=MI((l=eA)^J,_^g,24),g=(L=w)+nA|0,(_=F+eA|0)>>>0>>0&&(g=g+1|0),n[$>>2]=_,n[$+4>>2]=g,nA=g,$=MI(_^aA,g^x,16),g=w,n[D+120>>2]=$,n[D+124>>2]=g,g=s+g|0,(s=l+$|0)>>>0<$>>>0&&(g=g+1|0),n[D+80>>2]=s,n[D+84>>2]=g,pA=D,uA=MI(s^eA,g^L,63),n[pA+40>>2]=uA,n[D+44>>2]=w,eA=D,s=c,g=c+K|0,(c=($=BA)+S|0)>>>0<$>>>0&&(g=g+1|0),g=g+(aA=n[D+132>>2])|0,c=g=(BA=c+n[D+128>>2]|0)>>>0>>0?g+1|0:g,aA=MI(BA^N,g^H,32),l=$,g=u+(K=w)|0,($=y+aA|0)>>>0>>0&&(g=g+1|0),y=$,$=g,s=MI(l^y,g^s,24),g=c+(u=w)|0,(c=s+BA|0)>>>0>>0&&(g=g+1|0),BA=(l=c)+(c=n[D+144>>2])|0,g=n[D+148>>2]+g|0,g=BA>>>0>>0?g+1|0:g,n[eA+8>>2]=BA,n[eA+12>>2]=g,eA=MI(BA^aA,g^K,16),g=w,n[D+96>>2]=eA,n[D+100>>2]=g,g=g+$|0,($=y+eA|0)>>>0>>0&&(g=g+1|0),n[D+88>>2]=$,n[D+92>>2]=g,pA=D,uA=MI(s^$,g^u,63),n[pA+48>>2]=uA,n[D+52>>2]=w,eA=D,g=h+f|0,(s=M+q|0)>>>0>>0&&(g=g+1|0),g=g+(BA=n[D+220>>2])|0,BA=g=($=s+n[D+216>>2]|0)>>>0>>0?g+1|0:g,g=g+CA|0,(s=$+iA|0)>>>0<$>>>0&&(g=g+1|0),c=s,iA=g,s=MI($^j,gA^BA,32),u=M,g=G+(M=w)|0,($=s+Y|0)>>>0>>0&&(g=g+1|0),BA=g,$=MI(u^(y=$),g^h,24),g=(h=w)+iA|0,(c=c+$|0)>>>0<$>>>0&&(g=g+1|0),n[eA+16>>2]=c,n[eA+20>>2]=g,eA=MI(s^c,g^M,16),g=w,n[D+104>>2]=eA,n[D+108>>2]=g,g=g+BA|0,(BA=y+eA|0)>>>0>>0&&(g=g+1|0),eA=BA,n[D+64>>2]=eA,n[D+68>>2]=g,pA=D,uA=MI($^eA,g^h,63),n[pA+56>>2]=uA,n[D+60>>2]=w,eA=D,iA=E,g=E+e|0,(BA=($=Z)+oA|0)>>>0<$>>>0&&(g=g+1|0),g=g+P|0,BA=g=(Z=m+BA|0)>>>0>>0?g+1|0:g,oA=MI(Z^U,g^k,32),c=$,g=d+(s=w)|0,($=v+oA|0)>>>0>>0&&(g=g+1|0),E=iA,iA=g,M=MI(c^$,E^g,24),g=BA+(c=w)|0,(BA=M+Z|0)>>>0>>0&&(g=g+1|0),Z=(E=BA)+(BA=n[D+152>>2])|0,g=n[D+156>>2]+g|0,g=Z>>>0>>0?g+1|0:g,n[eA+24>>2]=Z,n[eA+28>>2]=g,Z=MI(Z^oA,g^s,16),n[D+112>>2]=Z,g=w,n[D+116>>2]=g,g=g+iA|0,(iA=$+Z|0)>>>0<$>>>0&&(g=g+1|0),$=iA,n[D+72>>2]=$,n[eA+76>>2]=g,pA=D,uA=MI(M^$,g^c,63),n[pA+32>>2]=uA,n[D+36>>2]=w,g=A,eA=n[D+68>>2]^(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^nA,$=n[D+64>>2]^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^_,a[0|g]=$,a[g+1|0]=$>>>8,a[g+2|0]=$>>>16,a[g+3|0]=$>>>24,a[g+4|0]=eA,a[g+5|0]=eA>>>8,a[g+6|0]=eA>>>16,a[g+7|0]=eA>>>24,eA=1;g=($=eA<<3)+A|0,iA=$=D+$|0,Z=n[$>>2]^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),BA=n[($=$- -64|0)>>2],$=n[$+4>>2]^n[iA+4>>2]^(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24),iA=Z^BA,a[0|g]=iA,a[g+1|0]=iA>>>8,a[g+2|0]=iA>>>16,a[g+3|0]=iA>>>24,a[g+4|0]=$,a[g+5|0]=$>>>8,a[g+6|0]=$>>>16,a[g+7|0]=$>>>24,8!=(0|(eA=eA+1|0)););p=D+256|0}function v(A,g,I,e){var B=0,r=0,a=0,t=0,i=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0,H=0,S=0,U=0,M=0,N=0,P=0,x=0,R=0,J=0;for(function(A,g){for(var I=0,e=0,B=0,r=0,a=0;r=B=(e=I<<3)+A|0,a=KA(g+e|0),n[r>>2]=a,n[B+4>>2]=w,16!=(0|(I=I+1|0)););}(I,g),g=W(e,A,64),a=n[I>>2],i=n[I+4>>2],e=0;;){if(B=MI(d=n[(r=g)+32>>2],E=n[r+36>>2],14),Q=w,B=MI(d,E,18)^B,c=w^Q,t=a,a=MI(d,E,41)^B,B=(w^c)+i|0,B=(Q=t+a|0)>>>0>>0?B+1|0:B,a=Q,_=n[r+48>>2],a=(c=n[(i=34784+(R=e<<3)|0)>>2])+a|0,B=n[i+4>>2]+B|0,B=a>>>0>>0?B+1|0:B,a=(i=_^((b=n[r+40>>2])^_)&d)+a|0,B=(((y=n[r+52>>2])^(v=n[r+44>>2]))&E^y)+B|0,B=a>>>0>>0?B+1|0:B,Q=(i=a)+(a=n[r+56>>2])|0,B=n[r+60>>2]+B|0,B=Q>>>0>>0?B+1|0:B,i=Q+(c=n[r+24>>2])|0,a=B,B=B+n[r+28>>2]|0,p=B=(t=i)>>>0>>0?B+1|0:B,n[r+24>>2]=t,n[r+28>>2]=B,B=MI(s=n[r>>2],i=n[r+4>>2],28),c=w,B=MI(s,i,34)^B,h=w^c,c=Q+(MI(s,i,39)^B)|0,B=a+(w^h)|0,B=c>>>0>>0?B+1|0:B,Q=(C=c)+(c=s&((h=n[r+16>>2])|(a=n[r+8>>2]))|a&h)|0,B=(i&((o=n[r+20>>2])|(f=n[r+12>>2]))|o&f)+B|0,B=Q>>>0>>0?B+1|0:B,c=Q,Q=B,n[r+56>>2]=c,n[r+60>>2]=B,C=h,B=MI(t,p,14),h=w,u=MI(t,p,18)^B,m=w^h,B=((E^v)&p^v)+y|0,(_=(h=(d^b)&t^b)+_|0)>>>0>>0&&(B=B+1|0),h=_,_=MI(t,p,41)^u,B=(w^m)+B|0,B=(h=h+_|0)>>>0<_>>>0?B+1|0:B,h=(u=n[(y=m=(_=(1|e)<<3)+I|0)>>2])+h|0,B=n[y+4>>2]+B|0,B=h>>>0>>0?B+1|0:B,h=(y=n[(_=_+34784|0)>>2])+h|0,B=n[_+4>>2]+B|0,y=B=h>>>0>>0?B+1|0:B,B=B+o|0,(C=(o=h)+C|0)>>>0>>0&&(B=B+1|0),o=C,_=B,n[r+16>>2]=C,n[r+20>>2]=B,C=g,B=MI(c,Q,28),r=w,u=MI(c,Q,34)^B,l=w^r,B=((i|f)&Q|i&f)+y|0,(h=(r=(a|s)&c|a&s)+h|0)>>>0>>0&&(B=B+1|0),r=h,h=MI(c,Q,39)^u,B=(w^l)+B|0,B=(r=r+h|0)>>>0>>0?B+1|0:B,h=r,r=B,n[C+48>>2]=h,n[C+52>>2]=B,u=g,C=a,B=MI(o,_,14),a=w,y=MI(o,_,18)^B,l=w^a,B=((E^p)&_^E)+v|0,(b=(a=(t^d)&o^d)+b|0)>>>0>>0&&(B=B+1|0),y=MI(o,_,41)^y,B=(w^l)+B|0,B=(a=y+b|0)>>>0>>0?B+1|0:B,a=(v=n[(b=S=(y=(2|e)<<3)+I|0)>>2])+a|0,B=n[b+4>>2]+B|0,B=a>>>0>>0?B+1|0:B,a=(b=n[(y=y+34784|0)>>2])+a|0,B=n[y+4>>2]+B|0,y=f,f=B=a>>>0>>0?B+1|0:B,B=y+B|0,(y=a+C|0)>>>0>>0&&(B=B+1|0),C=y,y=B,n[u+8>>2]=C,n[u+12>>2]=B,B=MI(h,r,28),b=w,v=MI(h,r,34)^B,b^=w,B=((i|Q)&r|i&Q)+f|0,(f=(f=a)+(a=(c|s)&h|c&s)|0)>>>0>>0&&(B=B+1|0),a=f,f=MI(h,r,39)^v,B=(w^b)+B|0,B=(a=a+f|0)>>>0>>0?B+1|0:B,f=a,a=B,n[u+40>>2]=f,n[u+44>>2]=B,b=g,u=i,B=MI(C,y,14),i=w,v=MI(C,y,18)^B,l=w^i,B=(p^(_^p)&y)+E|0,(E=(i=t^(t^o)&C)+d|0)>>>0>>0&&(B=B+1|0),i=E,E=MI(C,y,41)^v,B=(w^l)+B|0,B=(i=i+E|0)>>>0>>0?B+1|0:B,i=(l=n[(v=d=(E=(3|e)<<3)+I|0)>>2])+i|0,B=n[v+4>>2]+B|0,B=i>>>0>>0?B+1|0:B,i=(v=n[(E=E+34784|0)>>2])+i|0,B=n[E+4>>2]+B|0,v=B=i>>>0>>0?B+1|0:B,B=B+u|0,(E=i+s|0)>>>0>>0&&(B=B+1|0),u=B,n[b>>2]=E,n[b+4>>2]=B,B=MI(f,a,28),s=w,l=MI(f,a,34)^B,s^=w,B=((r|Q)&a|r&Q)+v|0,(v=(D=i)+(i=(c|h)&f|c&h)|0)>>>0>>0&&(B=B+1|0),i=v,v=MI(f,a,39)^l,B=(w^s)+B|0,s=i=i+v|0,i=B=i>>>0>>0?B+1|0:B,n[b+32>>2]=s,n[b+36>>2]=B,v=Q,B=MI(E,u,14),Q=w,l=MI(E,u,18)^B,D=w^Q,B=p+(_^(y^_)&u)|0,(Q=t+(o^(C^o)&E)|0)>>>0>>0&&(B=B+1|0),t=MI(E,u,41)^l,B=(w^D)+B|0,B=(Q=t+Q|0)>>>0>>0?B+1|0:B,Q=(l=n[(p=P=(t=(4|e)<<3)+I|0)>>2])+Q|0,B=n[p+4>>2]+B|0,B=Q>>>0>>0?B+1|0:B,Q=(p=n[(t=t+34784|0)>>2])+Q|0,B=n[t+4>>2]+B|0,t=v,v=B=Q>>>0

>>0?B+1|0:B,B=t+B|0,(t=Q+c|0)>>>0>>0&&(B=B+1|0),p=B,n[b+56>>2]=t,n[b+60>>2]=B,B=MI(s,i,28),c=w,l=MI(s,i,34)^B,c^=w,B=((r|a)&i|r&a)+v|0,(v=(D=Q)+(Q=(h|f)&s|h&f)|0)>>>0>>0&&(B=B+1|0),Q=v,v=MI(s,i,39)^l,B=(w^c)+B|0,c=Q=Q+v|0,Q=B=Q>>>0>>0?B+1|0:B,n[b+24>>2]=c,n[b+28>>2]=B,v=g,l=r,B=MI(t,p,14),r=w,b=MI(t,p,18)^B,D=w^r,B=_+(y^(y^u)&p)|0,(r=o+(C^(C^E)&t)|0)>>>0>>0&&(B=B+1|0),o=MI(t,p,41)^b,B=(w^D)+B|0,B=(r=o+r|0)>>>0>>0?B+1|0:B,r=(D=n[(_=b=(o=(5|e)<<3)+I|0)>>2])+r|0,B=n[_+4>>2]+B|0,B=r>>>0>>0?B+1|0:B,r=(_=n[(o=o+34784|0)>>2])+r|0,B=n[o+4>>2]+B|0,o=l,l=B=r>>>0<_>>>0?B+1|0:B,B=o+B|0,(o=r+h|0)>>>0>>0&&(B=B+1|0),_=B,n[v+48>>2]=o,n[v+52>>2]=B,B=MI(c,Q,28),h=w,D=MI(c,Q,34)^B,h^=w,B=((a|i)&Q|a&i)+l|0,(l=(l=r)+(r=(s|f)&c|s&f)|0)>>>0>>0&&(B=B+1|0),r=l,l=MI(c,Q,39)^D,B=(w^h)+B|0,h=r=r+l|0,r=B=r>>>0>>0?B+1|0:B,n[v+16>>2]=h,n[v+20>>2]=B,l=a,B=MI(o,_,14),a=w,D=MI(o,_,18)^B,U=w^a,B=y+(u^(p^u)&_)|0,(a=C+(E^(t^E)&o)|0)>>>0>>0&&(B=B+1|0),C=MI(o,_,41)^D,B=(w^U)+B|0,B=(a=C+a|0)>>>0>>0?B+1|0:B,a=(D=n[(y=J=(C=(6|e)<<3)+I|0)>>2])+a|0,B=n[y+4>>2]+B|0,B=a>>>0>>0?B+1|0:B,a=(y=n[(C=C+34784|0)>>2])+a|0,B=n[C+4>>2]+B|0,C=l,l=B=a>>>0>>0?B+1|0:B,B=C+B|0,(C=a+f|0)>>>0>>0&&(B=B+1|0),y=B,n[v+40>>2]=C,n[v+44>>2]=B,B=MI(h,r,28),f=w,D=MI(h,r,34)^B,f^=w,B=((i|Q)&r|i&Q)+l|0,(l=(l=a)+(a=(c|s)&h|c&s)|0)>>>0>>0&&(B=B+1|0),a=l,l=MI(h,r,39)^D,B=(w^f)+B|0,f=a=a+l|0,a=B=a>>>0>>0?B+1|0:B,n[v+8>>2]=f,n[v+12>>2]=B,l=g,D=i,B=MI(C,y,14),i=w,v=MI(C,y,18)^B,U=w^i,B=u+(p^(_^p)&y)|0,(i=E+(t^(t^o)&C)|0)>>>0>>0&&(B=B+1|0),E=MI(C,y,41)^v,B=(w^U)+B|0,B=(i=E+i|0)>>>0>>0?B+1|0:B,i=(U=n[(u=v=(E=(7|e)<<3)+I|0)>>2])+i|0,B=n[u+4>>2]+B|0,B=i>>>0>>0?B+1|0:B,i=(u=n[(E=E+34784|0)>>2])+i|0,B=n[E+4>>2]+B|0,E=D,D=B=i>>>0>>0?B+1|0:B,B=E+B|0,(E=i+s|0)>>>0>>0&&(B=B+1|0),u=B,n[l+32>>2]=E,n[l+36>>2]=B,B=MI(f,a,28),s=w,U=MI(f,a,34)^B,s^=w,B=((r|Q)&a|r&Q)+D|0,(D=(D=i)+(i=(c|h)&f|c&h)|0)>>>0>>0&&(B=B+1|0),i=D,D=MI(f,a,39)^U,B=(w^s)+B|0,s=i=i+D|0,i=B=i>>>0>>0?B+1|0:B,n[l>>2]=s,n[l+4>>2]=B,D=Q,B=MI(E,u,14),Q=w,U=MI(E,u,18)^B,Y=w^Q,B=p+(_^(y^_)&u)|0,(Q=t+(o^(C^o)&E)|0)>>>0>>0&&(B=B+1|0),t=MI(E,u,41)^U,B=(w^Y)+B|0,B=(Q=t+Q|0)>>>0>>0?B+1|0:B,Q=(Y=n[(p=U=(t=(8|e)<<3)+I|0)>>2])+Q|0,B=n[p+4>>2]+B|0,B=Q>>>0>>0?B+1|0:B,Q=(p=n[(t=t+34784|0)>>2])+Q|0,B=n[t+4>>2]+B|0,t=D,D=B=Q>>>0

>>0?B+1|0:B,B=t+B|0,(t=Q+c|0)>>>0>>0&&(B=B+1|0),p=B,n[l+24>>2]=t,n[l+28>>2]=B,B=MI(s,i,28),c=w,Y=MI(s,i,34)^B,c^=w,B=((r|a)&i|r&a)+D|0,(D=(D=Q)+(Q=(h|f)&s|h&f)|0)>>>0>>0&&(B=B+1|0),Q=D,D=MI(s,i,39)^Y,B=(w^c)+B|0,c=Q=Q+D|0,Q=B=Q>>>0>>0?B+1|0:B,n[l+56>>2]=c,n[l+60>>2]=B,D=g,Y=r,B=MI(t,p,14),r=w,l=MI(t,p,18)^B,H=w^r,B=_+(y^(y^u)&p)|0,(r=o+(C^(C^E)&t)|0)>>>0>>0&&(B=B+1|0),o=MI(t,p,41)^l,B=(w^H)+B|0,B=(r=o+r|0)>>>0>>0?B+1|0:B,r=(H=n[(_=l=(o=(9|e)<<3)+I|0)>>2])+r|0,B=n[_+4>>2]+B|0,B=r>>>0>>0?B+1|0:B,r=(_=n[(o=o+34784|0)>>2])+r|0,B=n[o+4>>2]+B|0,o=Y,Y=B=r>>>0<_>>>0?B+1|0:B,B=o+B|0,(o=r+h|0)>>>0>>0&&(B=B+1|0),_=B,n[D+16>>2]=o,n[D+20>>2]=B,B=MI(c,Q,28),h=w,H=MI(c,Q,34)^B,h^=w,B=((a|i)&Q|a&i)+Y|0,(Y=(Y=r)+(r=(s|f)&c|s&f)|0)>>>0>>0&&(B=B+1|0),r=Y,Y=MI(c,Q,39)^H,B=(w^h)+B|0,h=r=r+Y|0,r=B=r>>>0>>0?B+1|0:B,n[D+48>>2]=h,n[D+52>>2]=B,H=a,B=MI(o,_,14),a=w,Y=MI(o,_,18)^B,F=w^a,B=y+(u^(p^u)&_)|0,(a=C+(E^(t^E)&o)|0)>>>0>>0&&(B=B+1|0),C=MI(o,_,41)^Y,B=(w^F)+B|0,B=(a=C+a|0)>>>0>>0?B+1|0:B,a=(F=n[(y=Y=(C=(10|e)<<3)+I|0)>>2])+a|0,B=n[y+4>>2]+B|0,B=a>>>0>>0?B+1|0:B,a=(y=n[(C=C+34784|0)>>2])+a|0,B=n[C+4>>2]+B|0,C=B=a>>>0>>0?B+1|0:B,B=B+H|0,(y=a+f|0)>>>0>>0&&(B=B+1|0),f=y,y=B,n[D+8>>2]=f,n[D+12>>2]=B,B=MI(h,r,28),H=w,F=MI(h,r,34)^B,H^=w,B=((i|Q)&r|i&Q)+C|0,(C=(C=a)+(a=(c|s)&h|c&s)|0)>>>0>>0&&(B=B+1|0),a=C,C=MI(h,r,39)^F,B=(w^H)+B|0,C=B=(a=a+C|0)>>>0>>0?B+1|0:B,n[D+40>>2]=a,n[D+44>>2]=B,H=g,F=i,B=MI(f,y,14),i=w,D=MI(f,y,18)^B,G=w^i,B=u+(p^(_^p)&y)|0,(i=E+(t^(t^o)&f)|0)>>>0>>0&&(B=B+1|0),E=MI(f,y,41)^D,B=(w^G)+B|0,B=(i=E+i|0)>>>0>>0?B+1|0:B,i=(G=n[(u=D=(E=(11|e)<<3)+I|0)>>2])+i|0,B=n[u+4>>2]+B|0,B=i>>>0>>0?B+1|0:B,i=(u=n[(E=E+34784|0)>>2])+i|0,B=n[E+4>>2]+B|0,E=B=i>>>0>>0?B+1|0:B,B=B+F|0,(u=i+s|0)>>>0>>0&&(B=B+1|0),s=u,u=B,n[H>>2]=s,n[H+4>>2]=B,B=MI(a,C,28),F=w,G=MI(a,C,34)^B,F^=w,B=((r|Q)&C|r&Q)+E|0,(E=(E=i)+(i=(c|h)&a|c&h)|0)>>>0>>0&&(B=B+1|0),i=E,E=MI(a,C,39)^G,B=(w^F)+B|0,E=B=(i=i+E|0)>>>0>>0?B+1|0:B,n[H+32>>2]=i,n[H+36>>2]=B,F=g,G=Q,B=MI(s,u,14),Q=w,H=MI(s,u,18)^B,M=w^Q,B=p+(_^(y^_)&u)|0,(Q=t+(o^(o^f)&s)|0)>>>0>>0&&(B=B+1|0),t=MI(s,u,41)^H,B=(w^M)+B|0,B=(Q=t+Q|0)>>>0>>0?B+1|0:B,Q=(M=n[(p=H=(t=(12|e)<<3)+I|0)>>2])+Q|0,B=n[p+4>>2]+B|0,B=Q>>>0>>0?B+1|0:B,Q=(p=n[(t=t+34784|0)>>2])+Q|0,B=n[t+4>>2]+B|0,t=G,G=B=Q>>>0

>>0?B+1|0:B,B=t+B|0,(t=Q+c|0)>>>0>>0&&(B=B+1|0),M=t,t=B,n[F+56>>2]=M,n[F+60>>2]=B,p=g,B=MI(i,E,28),c=w,F=MI(i,E,34)^B,c^=w,B=((r|C)&E|r&C)+G|0,(G=(G=Q)+(Q=(a|h)&i|a&h)|0)>>>0>>0&&(B=B+1|0),F=MI(i,E,39)^F,B=(w^c)+B|0,G=Q=F+G|0,c=B=Q>>>0>>0?B+1|0:B,n[p+24>>2]=Q,n[p+28>>2]=B,Q=g,p=h,F=r,B=MI(M,t,14),r=w,h=MI(M,t,18)^B,k=w^r,B=_+(y^(y^u)&t)|0,(r=o+(f^(s^f)&M)|0)>>>0>>0&&(B=B+1|0),h=MI(M,t,41)^h,B=(w^k)+B|0,B=(r=h+r|0)>>>0>>0?B+1|0:B,r=(k=n[(h=(o=(13|e)<<3)+I|0)>>2])+r|0,B=n[h+4>>2]+B|0,B=r>>>0>>0?B+1|0:B,r=(_=n[(o=o+34784|0)>>2])+r|0,B=n[o+4>>2]+B|0,_=B=r>>>0<_>>>0?B+1|0:B,B=B+F|0,(p=r+p|0)>>>0>>0&&(B=B+1|0),F=p,o=B,n[Q+48>>2]=p,n[Q+52>>2]=B,B=MI(G,c,28),p=w,k=MI(G,c,34)^B,p^=w,B=((C|E)&c|C&E)+_|0,(_=(_=r)+(r=(a|i)&G|a&i)|0)>>>0>>0&&(B=B+1|0),r=_,_=MI(G,c,39)^k,B=(w^p)+B|0,B=(r=r+_|0)>>>0<_>>>0?B+1|0:B,_=r,r=B,n[Q+16>>2]=_,n[Q+20>>2]=B,B=MI(F,o,14),p=w,k=MI(F,o,18)^B,p^=w,B=y+(u^(t^u)&o)|0,(y=f+(s^(s^M)&F)|0)>>>0>>0&&(B=B+1|0),f=y,y=MI(F,o,41)^k,B=(w^p)+B|0,B=(f=f+y|0)>>>0>>0?B+1|0:B,f=(N=n[(p=(y=(14|e)<<3)+I|0)>>2])+f|0,B=n[p+4>>2]+B|0,B=f>>>0>>0?B+1|0:B,f=(k=n[(y=y+34784|0)>>2])+f|0,B=n[y+4>>2]+B|0,B=f>>>0>>0?B+1|0:B,k=f,f=B,B=C+B|0,(C=a+k|0)>>>0>>0&&(B=B+1|0),y=C,a=B,n[Q+40>>2]=C,n[Q+44>>2]=B,B=MI(_,r,28),C=w,N=MI(_,r,34)^B,C^=w,B=((c|E)&r|c&E)+f|0,(k=(f=(i|G)&_|i&G)+k|0)>>>0>>0&&(B=B+1|0),f=k,k=MI(_,r,39)^N,B=(w^C)+B|0,B=(f=f+k|0)>>>0>>0?B+1|0:B,k=f,C=B,n[Q+8>>2]=f,n[Q+12>>2]=B,B=MI(y,a,14),f=w,N=MI(y,a,18)^B,f^=w,B=u+(t^(t^o)&a)|0,(t=s+(M^(F^M)&y)|0)>>>0>>0&&(B=B+1|0),s=MI(y,a,41)^N,B=(w^f)+B|0,B=(a=s+t|0)>>>0>>0?B+1|0:B,a=(o=n[(t=f=(s=(15|e)<<3)+I|0)>>2])+a|0,B=n[t+4>>2]+B|0,B=a>>>0>>0?B+1|0:B,a=(t=n[(s=s+34784|0)>>2])+a|0,B=n[s+4>>2]+B|0,s=a,B=E+(a=a>>>0>>0?B+1|0:B)|0,(t=i+s|0)>>>0>>0&&(B=B+1|0),n[Q+32>>2]=t,n[Q+36>>2]=B,B=MI(k,C,28),Q=w,i=MI(k,C,34)^B,t=w^Q,B=((r|c)&C|r&c)+a|0,(a=(r=(_|G)&k|_&G)+s|0)>>>0>>0&&(B=B+1|0),r=(r=a)+(a=MI(k,C,39)^i)|0,B=(w^t)+B|0,n[(Q=g)>>2]=r,n[Q+4>>2]=r>>>0>>0?B+1|0:B,64==(0|e)){for(;Q=I=(e=x<<3)+A|0,e=(r=n[(B=g+e|0)>>2])+n[Q>>2]|0,B=n[Q+4>>2]+n[B+4>>2]|0,n[Q>>2]=e,n[Q+4>>2]=e>>>0>>0?B+1|0:B,8!=(0|(x=x+1|0)););break}s=((e=e+16|0)<<3)+I|0,F=Q=n[p+4>>2],B=Q>>>6|0,Q=((63&Q)<<26|(G=n[p>>2])>>>6)^MI(G,Q,19),B^=w,Q=MI(G,F,61)^Q,B=(i=n[l+4>>2])+(w^B)|0,(r=(r=Q)+(Q=y=n[l>>2])|0)>>>0>>0&&(B=B+1|0),Q=(t=r)+(a=n[(r=I+R|0)>>2])|0,B=n[r+4>>2]+B|0,Q=(t=Q)>>>0>>0?B+1|0:B,a=r=n[m+4>>2],B=r>>>7|0,r=((127&r)<<25|(c=n[m>>2])>>>7)^MI(c,r,1),B^=w,C=t,t=MI(c,a,8)^r,B=(w^B)+Q|0,C=r=C+t|0,r=B=r>>>0>>0?B+1|0:B,n[s>>2]=C,n[s+4>>2]=B,B=n[(t=m)+76>>2]+a|0,(a=(Q=n[t+72>>2])+c|0)>>>0>>0&&(B=B+1|0),s=a,a=B,B=(Q=c=n[f+4>>2])>>>6|0,c=((63&Q)<<26|(_=n[f>>2])>>>6)^MI(_,Q,19),B^=w,o=s,s=MI(_,Q,61)^c,B=(w^B)+a|0,E=c=o+s|0,a=c>>>0>>0?B+1|0:B,c=o=n[m+12>>2],B=o>>>7|0,o=((127&o)<<25|(s=n[m+8>>2])>>>7)^MI(s,o,1),B^=w,u=E,E=MI(s,c,8)^o,B=(w^B)+a|0,B=(o=u+E|0)>>>0>>0?B+1|0:B,E=o,a=B,n[t+128>>2]=o,n[t+132>>2]=B,t=S,o=c,B=MI(C,r,19),u=w,c=B,B=r>>>6|0,r=MI(C,r,61)^c^((63&r)<<26|C>>>6),C=s,B=(c=n[D+4>>2])+(w^B^u)|0,(s=(s=r)+(r=u=n[D>>2])|0)>>>0>>0&&(B=B+1|0),B=B+o|0,m=r=C+s|0,r=r>>>0>>0?B+1|0:B,s=o=n[d+4>>2],B=o>>>7|0,o=((127&o)<<25|(C=n[d>>2])>>>7)^MI(C,o,1),B^=w,k=m,m=MI(C,s,8)^o,B=(w^B)+r|0,B=(o=k+m|0)>>>0>>0?B+1|0:B,m=o,r=B,n[t+128>>2]=o,n[t+132>>2]=B,B=n[(o=d)+76>>2]+s|0,(t=(s=n[o+72>>2])+C|0)>>>0>>0&&(B=B+1|0),s=t,t=B,B=MI(E,a,19),C=w,k=s,s=B,B=a>>>6|0,s=MI(E,a,61)^s^((63&a)<<26|E>>>6),B=(w^B^C)+t|0,E=a=k+s|0,a=a>>>0>>0?B+1|0:B,s=C=n[d+12>>2],B=C>>>7|0,C=((127&C)<<25|(t=n[d+8>>2])>>>7)^MI(t,C,1),B^=w,d=E,E=MI(t,s,8)^C,B=(w^B)+a|0,B=(C=d+E|0)>>>0>>0?B+1|0:B,E=C,a=B,n[o+128>>2]=C,n[o+132>>2]=B,o=P,C=s,B=MI(m,r,19),d=w,s=B,B=r>>>6|0,r=MI(m,r,61)^s^((63&r)<<26|m>>>6),k=t,B=(s=n[h+4>>2])+(w^B^d)|0,(t=(t=r)+(r=m=n[h>>2])|0)>>>0>>0&&(B=B+1|0),B=B+C|0,S=r=k+t|0,r=r>>>0>>0?B+1|0:B,B=(t=d=n[b+4>>2])>>>7|0,d=((127&t)<<25|(C=n[b>>2])>>>7)^MI(C,t,1),B^=w,k=S,S=MI(C,t,8)^d,B=(w^B)+r|0,r=B=(d=k+S|0)>>>0>>0?B+1|0:B,n[o+128>>2]=d,n[o+132>>2]=B,B=n[(o=b)+76>>2]+t|0,(C=(t=n[o+72>>2])+C|0)>>>0>>0&&(B=B+1|0),t=C,C=B,B=MI(E,a,19),S=w,k=t,t=B,B=a>>>6|0,t=MI(E,a,61)^t^((63&a)<<26|E>>>6),B=(w^B^S)+C|0,E=a=k+t|0,a=a>>>0>>0?B+1|0:B,B=(t=C=n[b+12>>2])>>>7|0,C=((127&t)<<25|(S=n[b+8>>2])>>>7)^MI(S,t,1),B^=w,b=E,E=MI(S,t,8)^C,B=(w^B)+a|0,b=C=b+E|0,a=B=C>>>0>>0?B+1|0:B,n[o+128>>2]=C,n[o+132>>2]=B,o=J,C=t,B=MI(d,r,19),P=w,t=B,B=r>>>6|0,t=MI(d,r,61)^t^((63&r)<<26|d>>>6),B=(w^B^P)+Q|0,B=(r=t+_|0)>>>0>>0?B+1|0:B,t=r,B=B+C|0,d=r=r+S|0,r=r>>>0>>0?B+1|0:B,B=(t=E=n[v+4>>2])>>>7|0,E=((127&t)<<25|(C=n[v>>2])>>>7)^MI(C,t,1),B^=w,k=d,d=MI(C,t,8)^E,B=(w^B)+r|0,r=B=(E=k+d|0)>>>0>>0?B+1|0:B,n[o+128>>2]=E,n[o+132>>2]=B,B=n[(o=v)+76>>2]+t|0,(C=(t=n[o+72>>2])+C|0)>>>0>>0&&(B=B+1|0),t=C,C=B,B=MI(b,a,19),d=w,k=t,t=B,B=a>>>6|0,t=MI(b,a,61)^t^((63&a)<<26|b>>>6),B=(w^B^d)+C|0,d=a=k+t|0,a=a>>>0>>0?B+1|0:B,B=(t=C=n[v+12>>2])>>>7|0,C=((127&t)<<25|(b=n[v+8>>2])>>>7)^MI(b,t,1),B^=w,v=d,d=MI(b,t,8)^C,B=(w^B)+a|0,B=(C=v+d|0)>>>0>>0?B+1|0:B,d=C,a=B,n[o+128>>2]=C,n[o+132>>2]=B,C=t,B=MI(E,r,19),v=w,t=B,B=r>>>6|0,r=(r=MI(E,r,61)^t^((63&r)<<26|E>>>6))+(t=n[(o=U)+72>>2])|0,B=n[o+76>>2]+(w^B^v)|0,B=r>>>0>>0?B+1|0:B,t=r,B=B+C|0,t=B=(r=r+b|0)>>>0>>0?B+1|0:B,B=MI(y,i,1),C=w,v=r,E=B,B=(r=i)>>>7|0,E=E^((127&r)<<25|y>>>7)^MI(y,r,8),B=(w^B^C)+t|0,C=r=v+E|0,r=B=r>>>0>>0?B+1|0:B,n[o+128>>2]=C,n[o+132>>2]=B,B=n[(t=l)+76>>2]+i|0,(o=(i=n[t+72>>2])+y|0)>>>0>>0&&(B=B+1|0),i=o,o=B,B=MI(d,a,19),E=w,y=i,i=B,B=a>>>6|0,i=MI(d,a,61)^i^((63&a)<<26|d>>>6),B=(w^B^E)+o|0,E=a=y+i|0,a=a>>>0>>0?B+1|0:B,B=(i=o=n[l+12>>2])>>>7|0,o=((127&i)<<25|(y=n[l+8>>2])>>>7)^MI(y,i,1),B^=w,l=E,E=MI(y,i,8)^o,B=(w^B)+a|0,B=(o=l+E|0)>>>0>>0?B+1|0:B,E=o,a=B,n[t+128>>2]=o,n[t+132>>2]=B,o=i,B=MI(C,r,19),d=w,i=B,B=r>>>6|0,r=(r=MI(C,r,61)^i^((63&r)<<26|C>>>6))+(i=n[(t=Y)+72>>2])|0,B=n[t+76>>2]+(w^B^d)|0,B=r>>>0>>0?B+1|0:B,i=r,B=B+o|0,i=B=(r=r+y|0)>>>0>>0?B+1|0:B,B=MI(u,c,1),o=w,y=r,C=B,B=(r=c)>>>7|0,C=C^((127&r)<<25|u>>>7)^MI(u,r,8),B=(w^B^o)+i|0,o=r=y+C|0,r=B=r>>>0>>0?B+1|0:B,n[t+128>>2]=o,n[t+132>>2]=B,B=n[(t=D)+76>>2]+c|0,(c=(i=n[t+72>>2])+u|0)>>>0>>0&&(B=B+1|0),i=c,c=B,B=MI(E,a,19),C=w,y=i,i=B,B=a>>>6|0,i=MI(E,a,61)^i^((63&a)<<26|E>>>6),B=(w^B^C)+c|0,C=a=y+i|0,a=a>>>0>>0?B+1|0:B,B=(i=c=n[D+12>>2])>>>7|0,c=((127&i)<<25|(E=n[D+8>>2])>>>7)^MI(E,i,1),B^=w,y=C,C=MI(E,i,8)^c,B=(w^B)+a|0,B=(c=y+C|0)>>>0>>0?B+1|0:B,C=c,a=B,n[t+128>>2]=C,n[t+132>>2]=B,t=i,B=MI(o,r,19),y=w,i=B,B=r>>>6|0,r=(r=MI(o,r,61)^i^((63&r)<<26|o>>>6))+(i=n[(c=H)+72>>2])|0,B=n[c+76>>2]+(w^B^y)|0,B=r>>>0>>0?B+1|0:B,i=r,B=B+t|0,i=B=(r=r+E|0)>>>0>>0?B+1|0:B,B=MI(m,s,1),t=w,E=r,o=B,B=(r=s)>>>7|0,o=o^((127&r)<<25|m>>>7)^MI(m,r,8),B=(w^B^t)+i|0,t=r=E+o|0,r=B=r>>>0>>0?B+1|0:B,n[c+128>>2]=t,n[c+132>>2]=B,B=n[(i=h)+76>>2]+s|0,(s=(c=n[i+72>>2])+m|0)>>>0>>0&&(B=B+1|0),c=s,s=B,B=MI(C,a,19),o=w,E=c,c=B,B=a>>>6|0,c=MI(C,a,61)^c^((63&a)<<26|C>>>6),B=(w^B^o)+s|0,o=a=E+c|0,a=a>>>0>>0?B+1|0:B,s=c=n[h+12>>2],B=c>>>7|0,c=((127&c)<<25|(h=n[h+8>>2])>>>7)^MI(h,c,1),B^=w,h=MI(h,s,8)^c,B=(w^B)+a|0,s=c=h+o|0,a=B=c>>>0>>0?B+1|0:B,n[i+128>>2]=c,n[i+132>>2]=B,B=n[(i=p)+76>>2]+F|0,(h=(c=n[i+72>>2])+G|0)>>>0>>0&&(B=B+1|0),c=h,h=B,B=MI(t,r,19),o=w,C=c,c=B,B=r>>>6|0,c=MI(t,r,61)^c^((63&r)<<26|t>>>6),B=(w^B^o)+h|0,c=B=(r=C+c|0)>>>0>>0?B+1|0:B,B=MI(_,Q,1),h=w,C=r,t=B,B=(r=Q)>>>7|0,r=C+(t=t^((127&r)<<25|_>>>7)^MI(_,r,8))|0,B=(w^B^h)+c|0,n[i+128>>2]=r,n[i+132>>2]=r>>>0>>0?B+1|0:B,B=n[(r=f)+76>>2]+Q|0,(i=(Q=n[r+72>>2])+_|0)>>>0>>0&&(B=B+1|0),Q=i,i=B,B=MI(s,a,19),c=w,t=B,B=a>>>6|0,a=MI(s,a,61)^t^((63&a)<<26|s>>>6),B=(w^B^c)+i|0,h=Q=a+Q|0,Q=Q>>>0>>0?B+1|0:B,B=(i=c=n[f+12>>2])>>>7|0,c=((127&i)<<25|(a=n[f+8>>2])>>>7)^MI(a,i,1),B^=w,c=(t=h)+(h=MI(a,i,8)^c)|0,B=(w^B)+Q|0,n[r+128>>2]=c,n[r+132>>2]=c>>>0>>0?B+1|0:B}}function d(A){var g,I,e,B,r,t,n,C,Q,o,c,E,s,y,h,f,_,p,u,l=0,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0,H=0,S=0,U=0,M=0,N=0,P=0,x=0,R=0,J=0,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0,BA=0,rA=0,aA=0,tA=0;y=qg(A),h=i[A+2|0]|i[A+3|0]<<8|i[A+4|0]<<16|i[A+5|0]<<24,f=qg(A+5|0),_=w,IA=i[A+7|0]|i[A+8|0]<<8|i[A+9|0]<<16|i[A+10|0]<<24,eA=i[A+10|0]|i[A+11|0]<<8|i[A+12|0]<<16|i[A+13|0]<<24,p=qg(A+13|0),BA=w,N=i[A+15|0]|i[A+16|0]<<8|i[A+17|0]<<16|i[A+18|0]<<24,Z=qg(A+18|0),P=w,Y=qg(A+21|0),k=i[A+23|0]|i[A+24|0]<<8|i[A+25|0]<<16|i[A+26|0]<<24,b=qg(A+26|0),v=w,gA=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,q=i[A+31|0]|i[A+32|0]<<8|i[A+33|0]<<16|i[A+34|0]<<24,O=qg(A+34|0),W=w,x=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,z=qg(A+39|0),J=w,G=qg(A+42|0),d=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,u=A,D=qg(A+47|0),l=kI(g=2097151&((3&(F=w))<<30|D>>>2),0,136657,0),D=w,(l=(v=2097151&((3&v)<<30|b>>>2))+l|0)>>>0>>0&&(D=D+1|0),b=(v=kI(I=(i[A+49|0]|i[A+50|0]<<8|i[A+51|0]<<16|i[A+52|0]<<24)>>>7&2097151,0,-997805,-1))+l|0,l=w+D|0,l=b>>>0>>0?l+1|0:l,D=kI(e=(i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)>>>4&2097151,0,654183,0),v=w+l|0,v=(b=D+b|0)>>>0>>0?v+1|0:v,l=b,D=qg(A+55|0),b=l+(D=kI(B=2097151&((1&(b=w))<<31|D>>>1),0,470296,0))|0,l=w+v|0,l=b>>>0>>0?l+1|0:l,v=kI(r=(i[A+57|0]|i[A+58|0]<<8|i[A+59|0]<<16|i[A+60|0]<<24)>>>6&2097151,0,666643,0),D=w+l|0,S=D=(b=v+b|0)>>>0>>0?D+1|0:D,v=D,m=d>>>5&2097151,D=2097151&G,d=kI(t=(i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)>>>3|0,0,-683901,-1)+D|0,l=w,G=d,U=l=d>>>0>>0?l+1|0:l,M=(l=d)- -1048576|0,L=d=U-((l>>>0<4293918720)+-1|0)|0,l=d>>21,C=m=(d=(2097151&d)<<11|M>>>21)+m|0,V=D=m>>>0>>0?l+1|0:l,l=kI(m,D,-683901,-1),D=w+v|0,j=F=l+b|0,H=F>>>0>>0?D+1|0:D,D=kI(g,0,-997805,-1),l=w,(D=(v=k>>>5&2097151)+D|0)>>>0>>0&&(l=l+1|0),F=(v=D)+(D=kI(I,0,654183,0))|0,v=w+l|0,v=F>>>0>>0?v+1|0:v,l=kI(e,0,470296,0),D=w+v|0,D=(F=l+F|0)>>>0>>0?D+1|0:D,v=kI(B,0,666643,0),l=w+D|0,v=(k=F=v+F|0)>>>0>>0?l+1|0:l,l=2097151&Y,F=kI(g,0,654183,0)+l|0,D=w,D=F>>>0>>0?D+1|0:D,d=(l=F)+(F=kI(I,0,470296,0))|0,l=w+D|0,l=d>>>0>>0?l+1|0:l,F=kI(e,0,666643,0),D=w+l|0,m=d=F+d|0,d=D=d>>>0>>0?D+1|0:D,$=(l=m)- -1048576|0,R=F=D-((l>>>0<4293918720)+-1|0)|0,v=(l=F>>>21|0)+v|0,Y=v=(k=F=(D=(2097151&F)<<11|$>>>21)+k|0)>>>0>>0?v+1|0:v,T=(l=k)- -1048576|0,E=b- -1048576|0,S=S-((b>>>0<4293918720)+-1|0)|0,D=(l=(v=K=v-((l>>>0<4293918720)+-1|0)|0)>>21)+H|0,S=(D=(K=(b=(2097151&v)<<11|T>>>21)+j|0)>>>0>>0?D+1|0:D)-(((b=K)>>>0<(l=-2097152&E)>>>0)+(F=S)|0)|0,rA=(l=b-l|0)-(D=-2097152&(s=l- -1048576|0))|0,aA=S-((l>>>0>>0)+(b=S-((l>>>0<4293918720)+-1|0)|0)|0)|0,D=kI(C,V,136657,0)+k|0,l=Y+w|0,l=D>>>0>>0?l+1|0:l,AA=(k=D)-(D=-2097152&T)|0,j=l-((k>>>0>>0)+v|0)|0,S=G-(l=-2097152&M)|0,H=U-((G>>>0>>0)+L|0)|0,l=kI(t,0,136657,0),D=w,(l=(v=2097151&((7&J)<<29|z>>>3))+l|0)>>>0>>0&&(D=D+1|0),k=(v=kI(r,0,-683901,-1))+l|0,l=w+D|0,G=k,k=k>>>0>>0?l+1|0:l,l=kI(B,0,-683901,-1),D=w,(l=(v=x>>>6&2097151)+l|0)>>>0>>0&&(D=D+1|0),Y=(v=l)+(l=kI(t,0,-997805,-1))|0,v=w+D|0,v=Y>>>0>>0?v+1|0:v,D=kI(r,0,136657,0),l=w+v|0,T=D=(M=l=(Y=D+Y|0)>>>0>>0?l+1|0:l)-(((l=Y)>>>0<4293918720)+-1|0)|0,l=(2097151&D)<<11|(z=l- -1048576|0)>>>21,D=(D>>21)+k|0,U=D=(G=l+G|0)>>>0>>0?D+1|0:D,K=(l=G)- -1048576|0,L=D=D-((l>>>0<4293918720)+-1|0)|0,l=(v=D>>21)+H|0,Q=k=(D=(2097151&D)<<11|K>>>21)+S|0,X=l=k>>>0>>0?l+1|0:l,D=kI(k,l,-683901,-1),l=w+j|0,tA=v=D+AA|0,x=v>>>0>>0?l+1|0:l,H=m,l=kI(g,0,470296,0),D=w,(l=(v=2097151&((7&P)<<29|Z>>>3))+l|0)>>>0>>0&&(D=D+1|0),v=l,l=kI(I,0,666643,0),D=w+D|0,S=v=v+l|0,v=v>>>0>>0?D+1|0:D,D=kI(g,0,666643,0),l=w,(D=(k=N>>>6&2097151)+D|0)>>>0>>0&&(l=l+1|0),m=D,P=k=(N=l)-(((l=D)>>>0<4293918720)+-1|0)|0,D=(D=k>>>21|0)+v|0,J=D=(k=(l=(2097151&k)<<11|(AA=l- -1048576|0)>>>21)+S|0)>>>0>>0?D+1|0:D,Z=D-(((l=k)>>>0<4293918720)+-1|0)|0,j=l- -1048576|0,n=G-(l=-2097152&K)|0,o=v=U-((G>>>0>>0)+L|0)|0,l=((S=Z)>>>21|0)+d|0,l=(H=(G=(2097151&S)<<11|j>>>21)+H|0)>>>0>>0?l+1|0:l,H=(d=kI(C,V,-997805,-1))+((G=H)-(D=-2097152&$)|0)|0,D=w+(l-((8191&R)+(G>>>0>>0)|0)|0)|0,D=H>>>0>>0?D+1|0:D,l=kI(Q,X,136657,0),D=w+D|0,D=(d=l+H|0)>>>0>>0?D+1|0:D,v=kI(n,v,-683901,-1),l=w+D|0,U=l=(d=v+d|0)>>>0>>0?l+1|0:l,K=(l=d)- -1048576|0,L=v=U-((l>>>0<4293918720)+-1|0)|0,D=(l=v>>21)+x|0,H=D=(G=(v=(2097151&v)<<11|K>>>21)+tA|0)>>>0>>0?D+1|0:D,R=(l=v=G)- -1048576|0,l=(l=(G=x=D-((l>>>0<4293918720)+-1|0)|0)>>21)+aA|0,rA=x=(D=(2097151&G)<<11|R>>>21)+rA|0,x=x>>>0>>0?l+1|0:l,aA=v-(l=-2097152&R)|0,tA=H-((v>>>0>>0)+G|0)|0,Z=d-(l=-2097152&K)|0,$=U-((d>>>0>>0)+L|0)|0,l=kI(C,V,654183,0),v=w+(J-((8191&S)+(k>>>0<(D=-2097152&j)>>>0)|0)|0)|0,v=(d=l+(k-D|0)|0)>>>0>>0?v+1|0:v,D=kI(Q,X,-997805,-1),l=w+v|0,l=(d=D+d|0)>>>0>>0?l+1|0:l,v=kI(n,o,136657,0),D=w+l|0,K=d=v+d|0,G=d>>>0>>0?D+1|0:D,R=Y-(l=-2097152&z)|0,J=M-((Y>>>0>>0)+T|0)|0,D=kI(e,0,-683901,-1),l=w,(D=(v=2097151&((1&W)<<31|O>>>1))+D|0)>>>0>>0&&(l=l+1|0),v=D,D=kI(B,0,136657,0),l=w+l|0,l=(v=v+D|0)>>>0>>0?l+1|0:l,d=(D=v)+(v=kI(t,0,654183,0))|0,D=w+l|0,D=d>>>0>>0?D+1|0:D,l=kI(r,0,-997805,-1),D=w+D|0,Y=v=l+d|0,d=v>>>0>>0?D+1|0:D,l=kI(I,0,-683901,-1),v=w,(l=(D=q>>>4&2097151)+l|0)>>>0>>0&&(v=v+1|0),k=(D=kI(e,0,136657,0))+l|0,l=w+v|0,l=k>>>0>>0?l+1|0:l,v=kI(B,0,-997805,-1),D=w+l|0,D=(k=v+k|0)>>>0>>0?D+1|0:D,v=kI(t,0,470296,0),l=w+D|0,l=(k=v+k|0)>>>0>>0?l+1|0:l,v=kI(r,0,654183,0),D=w+l|0,U=D=(k=v+k|0)>>>0>>0?D+1|0:D,T=(l=k)- -1048576|0,L=v=D-((l>>>0<4293918720)+-1|0)|0,l=(l=v>>21)+d|0,d=v=(D=(2097151&v)<<11|T>>>21)+Y|0,H=l=v>>>0>>0?l+1|0:l,S=(l=v)- -1048576|0,Y=v=H-((l>>>0<4293918720)+-1|0)|0,D=(l=v>>21)+J|0,c=M=(v=(2097151&v)<<11|S>>>21)+R|0,q=D=M>>>0>>0?D+1|0:D,l=kI(M,D,-683901,-1),v=w+G|0,J=D=l+K|0,G=D>>>0>>0?v+1|0:v,O=d-(l=-2097152&S)|0,W=Y=H-((d>>>0>>0)+Y|0)|0,v=(l=kI(C,V,470296,0))+(m-(D=-2097152&AA)|0)|0,D=w+(N-((2047&P)+(m>>>0>>0)|0)|0)|0,D=v>>>0>>0?D+1|0:D,l=kI(Q,X,654183,0),D=w+D|0,D=(v=l+v|0)>>>0>>0?D+1|0:D,d=(l=kI(n,o,-997805,-1))+v|0,v=w+D|0,v=d>>>0>>0?v+1|0:v,D=kI(M,q,136657,0),l=w+v|0,l=(d=D+d|0)>>>0>>0?l+1|0:l,v=kI(O,Y,-683901,-1),D=w+l|0,H=D=(d=v+d|0)>>>0>>0?D+1|0:D,P=(l=d)- -1048576|0,Y=v=D-((l>>>0<4293918720)+-1|0)|0,l=(l=v>>21)+G|0,G=l=(v=(D=(2097151&v)<<11|P>>>21)+J|0)>>>0>>0?l+1|0:l,S=(l=v)- -1048576|0,D=(l=(m=J=G-((l>>>0<4293918720)+-1|0)|0)>>21)+$|0,Z=N=(J=(2097151&m)<<11|S>>>21)+Z|0,J=N>>>0>>0?D+1|0:D,$=v-(l=-2097152&S)|0,z=G-((v>>>0>>0)+m|0)|0,K=d-(l=-2097152&P)|0,M=H-((d>>>0>>0)+Y|0)|0,D=kI(C,V,666643,0),l=w,(D=(v=2097151&((1&BA)<<31|p>>>1))+D|0)>>>0>>0&&(l=l+1|0),d=(v=kI(Q,X,470296,0))+D|0,D=w+l|0,D=d>>>0>>0?D+1|0:D,v=kI(n,o,654183,0),l=w+D|0,l=(d=v+d|0)>>>0>>0?l+1|0:l,D=kI(c,q,-997805,-1),v=w+l|0,v=(d=D+d|0)>>>0>>0?v+1|0:v,l=kI(O,W,136657,0),D=w+v|0,Y=d=l+d|0,m=d>>>0>>0?D+1|0:D,G=k-(l=-2097152&T)|0,k=U-((k>>>0>>0)+L|0)|0,l=kI(g,0,-683901,-1),D=w,(l=(v=gA>>>7&2097151)+l|0)>>>0>>0&&(D=D+1|0),d=(v=l)+(l=kI(I,0,136657,0))|0,v=w+D|0,v=d>>>0>>0?v+1|0:v,D=kI(e,0,-997805,-1),l=w+v|0,l=(d=D+d|0)>>>0>>0?l+1|0:l,v=kI(B,0,654183,0),D=w+l|0,D=(d=v+d|0)>>>0>>0?D+1|0:D,v=kI(t,0,666643,0),l=w+D|0,l=(d=v+d|0)>>>0>>0?l+1|0:l,v=kI(r,0,470296,0),D=w+l|0,l=D=(d=v+d|0)>>>0>>0?D+1|0:D,D=F>>21,d=(F=(2097151&F)<<11|E>>>21)+(v=d)|0,v=l+D|0,L=v=d>>>0>>0?v+1|0:v,U=(l=d)- -1048576|0,H=v=v-((l>>>0<4293918720)+-1|0)|0,l=(D=v>>21)+k|0,V=F=(v=(2097151&v)<<11|U>>>21)+G|0,R=l=F>>>0>>0?l+1|0:l,l=kI(F,l,-683901,-1),D=w+m|0,m=v=l+Y|0,F=v>>>0>>0?D+1|0:D,l=kI(Q,X,666643,0),v=w,(l=(D=eA>>>4&2097151)+l|0)>>>0>>0&&(v=v+1|0),k=(D=kI(n,o,470296,0))+l|0,l=w+v|0,l=k>>>0>>0?l+1|0:l,v=kI(c,q,654183,0),D=w+l|0,D=(k=v+k|0)>>>0>>0?D+1|0:D,l=kI(O,W,-997805,-1),D=w+D|0,D=(v=l+k|0)>>>0>>0?D+1|0:D,k=(l=v)+(v=kI(V,R,136657,0))|0,l=w+D|0,Y=l=k>>>0>>0?l+1|0:l,N=(l=k)- -1048576|0,G=v=Y-((l>>>0<4293918720)+-1|0)|0,l=(D=v>>21)+F|0,v=l=(F=m=(v=(2097151&v)<<11|N>>>21)+m|0)>>>0>>0?l+1|0:l,P=(l=F)- -1048576|0,l=(D=(m=S=v-((l>>>0<4293918720)+-1|0)|0)>>21)+M|0,AA=T=(S=(2097151&m)<<11|P>>>21)+K|0,S=T>>>0>>0?l+1|0:l,l=d-(D=-2097152&U)|0,d=L-((d>>>0>>0)+H|0)|0,H=l,l=(l=b>>21)+d|0,U=l=(d=b=H+(D=(2097151&b)<<11|s>>>21)|0)>>>0>>0?l+1|0:l,T=(l=d)- -1048576|0,L=b=U-((l>>>0<4293918720)+-1|0)|0,M=l=b>>21,l=kI(X=(2097151&b)<<11|T>>>21,l,-683901,-1),D=w+v|0,D=(b=l+F|0)>>>0>>0?D+1|0:D,j=(v=b)-(l=-2097152&P)|0,K=D-((v>>>0>>0)+m|0)|0,D=kI(X,M,136657,0)+k|0,l=Y+w|0,l=D>>>0>>0?l+1|0:l,gA=(v=D)-(D=-2097152&N)|0,N=l-((v>>>0>>0)+G|0)|0,l=kI(n,o,666643,0),D=w,(l=(v=IA>>>7&2097151)+l|0)>>>0>>0&&(D=D+1|0),b=(v=l)+(l=kI(c,q,470296,0))|0,v=w+D|0,v=b>>>0>>0?v+1|0:v,D=kI(O,W,654183,0),l=w+v|0,l=(b=D+b|0)>>>0>>0?l+1|0:l,D=kI(V,R,-997805,-1),l=w+l|0,G=v=D+b|0,v=v>>>0>>0?l+1|0:l,l=kI(c,q,666643,0),D=w,(l=(b=2097151&((3&_)<<30|f>>>2))+l|0)>>>0>>0&&(D=D+1|0),b=l,l=kI(O,W,470296,0),D=w+D|0,D=(b=b+l|0)>>>0>>0?D+1|0:D,F=(l=b)+(b=kI(V,R,654183,0))|0,l=w+D|0,m=l=F>>>0>>0?l+1|0:l,P=(l=b=F)- -1048576|0,l=(D=(k=F=m-((l>>>0<4293918720)+-1|0)|0)>>21)+v|0,Y=G=(F=(2097151&k)<<11|P>>>21)+G|0,v=l=G>>>0>>0?l+1|0:l,G=(l=G)- -1048576|0,l=(D=(F=H=v-((l>>>0<4293918720)+-1|0)|0)>>21)+N|0,IA=q=(H=(2097151&F)<<11|G>>>21)+gA|0,H=q>>>0>>0?l+1|0:l,l=kI(X,M,-997805,-1),v=w+v|0,v=(D=l+Y|0)>>>0>>0?v+1|0:v,eA=D-(l=-2097152&G)|0,BA=v-((D>>>0>>0)+F|0)|0,l=kI(X,M,654183,0)+b|0,D=m+w|0,D=l>>>0>>0?D+1|0:D,gA=(v=l)-(l=-2097152&P)|0,q=D-((v>>>0>>0)+k|0)|0,l=kI(O,W,666643,0),v=w,(l=(D=h>>>5&2097151)+l|0)>>>0>>0&&(v=v+1|0),b=(D=kI(V,R,470296,0))+l|0,l=w+v|0,k=b,v=b>>>0>>0?l+1|0:l,D=2097151&y,b=kI(V,R,666643,0)+D|0,l=w,F=b,G=b=(Y=l=b>>>0>>0?l+1|0:l)-(((l=b)>>>0<4293918720)+-1|0)|0,v=(D=b>>21)+v|0,m=v=(b=(l=(2097151&b)<<11|(N=l- -1048576|0)>>>21)+k|0)>>>0>>0?v+1|0:v,P=(l=b)- -1048576|0,k=v=v-((l>>>0<4293918720)+-1|0)|0,l=(D=v>>21)+q|0,v=l=(R=(v=(2097151&v)<<11|P>>>21)+gA|0)>>>0>>0?l+1|0:l,l=kI(X,M,470296,0)+b|0,D=m+w|0,k=(D=l>>>0>>0?D+1|0:D)-(((m=l)>>>0<(b=-2097152&P)>>>0)+k|0)|0,m=l=l-b|0,b=(D=kI(X,M,666643,0))+(F-(l=-2097152&N)|0)|0,l=w+(Y-((F>>>0>>0)+G|0)|0)|0,F=b,D=(D=(l=b>>>0>>0?l+1|0:l)>>21)+k|0,W=b=m+(l=(2097151&l)<<11|b>>>21)|0,v=(l=(D=b>>>0>>0?D+1|0:D)>>21)+v|0,k=b=(D=(2097151&D)<<11|b>>>21)+R|0,D=(v=(l=b)>>>0>>0?v+1|0:v)>>21,v=(2097151&v)<<11|l>>>21,l=D+BA|0,G=b=v+eA|0,v=(l=(D=b)>>>0>>0?l+1|0:l)>>21,l=(2097151&l)<<11|D>>>21,D=v+H|0,H=b=l+IA|0,l=(l=(D=(v=b)>>>0>>0?D+1|0:D)>>21)+K|0,R=v=(D=(2097151&D)<<11|v>>>21)+j|0,D=(D=(l=v>>>0>>0?l+1|0:l)>>21)+S|0,M=v=(l=(2097151&l)<<11|v>>>21)+AA|0,l=(D=v>>>0>>0?D+1|0:D)>>21,D=(2097151&D)<<11|v>>>21,v=l+z|0,N=b=D+$|0,D=(v=(l=b)>>>0>>0?v+1|0:v)>>21,v=(2097151&v)<<11|l>>>21,l=D+J|0,P=b=v+Z|0,v=(l=(D=b)>>>0>>0?l+1|0:l)>>21,l=(2097151&l)<<11|D>>>21,D=v+tA|0,J=b=l+aA|0,l=(l=(D=(v=b)>>>0>>0?D+1|0:D)>>21)+x|0,S=v=(D=(2097151&D)<<11|v>>>21)+rA|0,D=(l=v>>>0>>0?l+1|0:l)>>21,b=(2097151&l)<<11|v>>>21,l=d-(v=-2097152&T)|0,v=(U-((d>>>0>>0)+L|0)|0)+D|0,L=b=b+l|0,x=(2097151&(v=(D=b)>>>0>>0?v+1|0:v))<<11|D>>>21,Y=l=v>>21,D=2097151&F,v=kI(x,l,666643,0)+D|0,l=w,m=v,b=l=v>>>0>>0?l+1|0:l,a[0|u]=v,a[A+1|0]=(255&l)<<24|v>>>8,l=2097151&W,v=kI(x,Y,470296,0)+l|0,D=w,D=v>>>0>>0?D+1|0:D,F=v,d=(2097151&(v=b))<<11|m>>>21,v=(l=v>>21)+D|0,v=(U=F+d|0)>>>0>>0?v+1|0:v,d=U,a[A+4|0]=(2047&v)<<21|d>>>11,l=D=v,v=d,a[A+3|0]=(7&l)<<29|v>>>3,v=2097151&k,k=kI(x,Y,654183,0)+v|0,l=w,l=k>>>0>>0?l+1|0:l,v=k,k=(2097151&D)<<11|d>>>21,D=(D>>21)+l|0,D=(U=v+k|0)>>>0>>0?D+1|0:D,k=U,l=D,a[A+6|0]=(63&l)<<26|k>>>6,F=0,v=31&((65535&b)<<16|m>>>16),D=m=2097151&d,a[A+2|0]=v|D<<5,v=2097151&G,d=kI(x,Y,-997805,-1)+v|0,D=w,v=D=d>>>0>>0?D+1|0:D,v=(D=l>>21)+v|0,G=d=(l=(2097151&l)<<11|k>>>21)+d|0,v=d>>>0>>0?v+1|0:v,a[A+9|0]=(511&v)<<23|d>>>9,l=D=v,v=d,a[A+8|0]=(1&l)<<31|v>>>1,d=0,v=k&=2097151,a[A+5|0]=(524287&F)<<13|m>>>19|v<<2,v=2097151&H,F=kI(x,Y,136657,0)+v|0,l=w,l=(l=F>>>0>>0?l+1|0:l)+(v=D>>21)|0,m=F=(D=(2097151&D)<<11|G>>>21)+F|0,l=F>>>0>>0?l+1|0:l,D=F,a[A+12|0]=(4095&l)<<20|D>>>12,v=l,a[A+11|0]=(15&l)<<28|D>>>4,F=0,D=H=2097151&G,a[A+7|0]=(16383&d)<<18|k>>>14|D<<7,l=2097151&R,d=kI(x,Y,-683901,-1)+l|0,D=w,D=d>>>0>>0?D+1|0:D,D=(l=v>>21)+D|0,k=d=(v=(2097151&v)<<11|m>>>21)+d|0,l=D=d>>>0>>0?D+1|0:D,a[A+14|0]=(127&l)<<25|d>>>7,d=0,v=G=2097151&m,a[A+10|0]=(131071&F)<<15|H>>>17|v<<4,D=l>>21,v=(m=(l=(2097151&l)<<11|k>>>21)+(2097151&M)|0)>>>0>>0?D+1|0:D,a[A+17|0]=(1023&v)<<22|m>>>10,l=v,v=m,a[A+16|0]=(3&l)<<30|v>>>2,v=Y=2097151&k,a[A+13|0]=(1048575&d)<<12|G>>>20|v<<1,v=(2097151&l)<<11|m>>>21,l>>=21,l=(k=v+(2097151&N)|0)>>>0>>0?l+1|0:l,D=k,a[A+20|0]=(8191&l)<<19|D>>>13,a[A+19|0]=(31&l)<<27|D>>>5,D=G=2097151&m,a[A+15|0]=(32767&F)<<17|Y>>>15|D<<6,b=(2097151&l)<<11|k>>>21,l=D=l>>21,b=l=(Y=b+(2097151&P)|0)>>>0>>0?l+1|0:l,a[A+21|0]=Y,l=k,a[A+18|0]=(262143&d)<<14|G>>>18|l<<3,l=b,a[A+22|0]=(255&l)<<24|Y>>>8,v=l,l>>=21,v=(k=(F=(2097151&v)<<11|Y>>>21)+(2097151&J)|0)>>>0>>0?l+1|0:l,a[(D=A)+25|0]=(2047&v)<<21|k>>>11,l=v,v=k,a[D+24|0]=(7&l)<<29|v>>>3,v=D,F=(2097151&l)<<11|k>>>21,l>>=21,D=l=(d=m=F+(2097151&S)|0)>>>0>>0?l+1|0:l,a[v+27|0]=(63&l)<<26|d>>>6,F=0,l=m=2097151&k,a[v+23|0]=31&((65535&b)<<16|Y>>>16)|l<<5,D=(l=D)>>21,D=(b=(l=(2097151&l)<<11|d>>>21)+(2097151&L)|0)>>>0>>0?D+1|0:D,v=b,a[A+31|0]=(131071&D)<<15|v>>>17,l=D,a[A+30|0]=(511&l)<<23|v>>>9,a[A+29|0]=(1&l)<<31|v>>>1,D=0,d&=2097151,a[A+26|0]=(524287&F)<<13|m>>>19|d<<2,a[A+28|0]=(16383&D)<<18|d>>>14|v<<7}function b(A){var g,I=0,e=0,B=0,r=0,a=0,t=0,Q=0,o=0,E=0,s=0,y=0,h=0,f=0;p=g=p-16|0;A:{g:{I:{e:{B:{r:{a:{t:{n:{i:{C:{Q:{if((A|=0)>>>0<=244){if(3&(I=(r=n[8961])>>>(A=(a=A>>>0<11?16:A+11&-8)>>>3|0)|0)){A=(I=n[35892+(a=(e=A+(1&(-1^I))|0)<<3)>>2])+8|0,(0|(B=n[I+8>>2]))!=(0|(a=a+35884|0))?(n[B+12>>2]=a,n[a+8>>2]=B):(h=35844,f=Og(-2,e)&r,n[h>>2]=f),e<<=3,n[I+4>>2]=3|e,n[4+(I=I+e|0)>>2]=1|n[I+4>>2];break A}if(a>>>0<=(o=n[8963])>>>0)break Q;if(I){e=I=(A=(0-(A=(0-(e=2<>>12&16,e|=I=(A=A>>>I|0)>>>5&8,e|=I=(A=A>>>I|0)>>>2&4,I=n[35892+(B=(e=((e|=I=(A=A>>>I|0)>>>1&2)|(I=(A=A>>>I|0)>>>1&1))+(A>>>I|0)|0)<<3)>>2],(0|(A=n[I+8>>2]))!=(0|(B=B+35884|0))?(n[A+12>>2]=B,n[B+8>>2]=A):(r=Og(-2,e)&r,n[8961]=r),A=I+8|0,n[I+4>>2]=3|a,t=I+a|0,a=(e<<=3)-a|0,n[t+4>>2]=1|a,n[I+e>>2]=a,o&&(I=35884+((e=o>>>3|0)<<3)|0,B=n[8966],(e=1<>2]:(n[8961]=e|r,e=I),n[I+8>>2]=B,n[e+12>>2]=B,n[B+12>>2]=I,n[B+8>>2]=e),n[8966]=t,n[8963]=a;break A}if(!(s=n[8962]))break Q;for(e=I=(A=(s&0-s)-1|0)>>>12&16,e|=I=(A=A>>>I|0)>>>5&8,e|=I=(A=A>>>I|0)>>>2&4,I=n[36148+(((e|=I=(A=A>>>I|0)>>>1&2)|(I=(A=A>>>I|0)>>>1&1))+(A>>>I|0)<<2)>>2],t=(-8&n[I+4>>2])-a|0,e=I;(A=n[e+16>>2])||(A=n[e+20>>2]);)t=(e=(B=(-8&n[A+4>>2])-a|0)>>>0>>0)?B:t,I=e?A:I,e=A;if((y=I+a|0)>>>0<=I>>>0)break C;if(E=n[I+24>>2],(0|(B=n[I+12>>2]))!=(0|I)){A=n[I+8>>2],n[A+12>>2]=B,n[B+8>>2]=A;break g}if(!(A=n[(e=I+20|0)>>2])){if(!(A=n[I+16>>2]))break i;e=I+16|0}for(;Q=e,B=A,(A=n[(e=A+20|0)>>2])||(e=B+16|0,A=n[B+16>>2]););n[Q>>2]=0;break g}if(a=-1,!(A>>>0>4294967231)&&(a=-8&(I=A+11|0),o=n[8962])){t=0-a|0,r=0,(I=I>>>8|0)&&(r=31,a>>>0>16777215||(r=28+((A=((r=(I<<=e=I+1048320>>>16&8)<<(A=I+520192>>>16&4))<<(I=r+245760>>>16&2)>>>15|0)-(I|A|e)|0)<<1|a>>>A+21&1)|0));o:{c:{if(e=n[36148+(r<<2)>>2])for(A=0,I=a<<(31==(0|r)?0:25-(r>>>1|0)|0);;){if(!((Q=(-8&n[e+4>>2])-a|0)>>>0>=t>>>0||(B=e,t=Q))){t=0,A=e;break c}if(Q=n[e+20>>2],e=n[16+((I>>>29&4)+e|0)>>2],A=Q?(0|Q)==(0|e)?A:Q:A,I<<=1,!e)break}else A=0;if(!(A|B)){if(!(A=(0-(A=2<>>12&16,e|=I=(A=A>>>I|0)>>>5&8,e|=I=(A=A>>>I|0)>>>2&4,A=n[36148+(((e|=I=(A=A>>>I|0)>>>1&2)|(I=(A=A>>>I|0)>>>1&1))+(A>>>I|0)<<2)>>2]}if(!A)break o}for(;t=(I=(e=(-8&n[A+4>>2])-a|0)>>>0>>0)?e:t,B=I?A:B,A=(I=n[A+16>>2])||n[A+20>>2];);}if(!(!B|t>>>0>=n[8963]-a>>>0)){if((r=B+a|0)>>>0<=B>>>0)break C;if(E=n[B+24>>2],(0|B)!=(0|(I=n[B+12>>2]))){A=n[B+8>>2],n[A+12>>2]=I,n[I+8>>2]=A;break I}if(!(A=n[(e=B+20|0)>>2])){if(!(A=n[B+16>>2]))break n;e=B+16|0}for(;Q=e,I=A,(A=n[(e=A+20|0)>>2])||(e=I+16|0,A=n[I+16>>2]););n[Q>>2]=0;break I}}}if((I=n[8963])>>>0>=a>>>0){A=n[8966],(e=I-a|0)>>>0>=16?(n[8963]=e,B=A+a|0,n[8966]=B,n[B+4>>2]=1|e,n[A+I>>2]=e,n[A+4>>2]=3|a):(n[8966]=0,n[8963]=0,n[A+4>>2]=3|I,n[4+(I=A+I|0)>>2]=1|n[I+4>>2]),A=A+8|0;break A}if((B=n[8964])>>>0>a>>>0){I=B-a|0,n[8964]=I,e=(A=n[8967])+a|0,n[8967]=e,n[e+4>>2]=1|I,n[A+4>>2]=3|a,A=A+8|0;break A}if(A=0,e=t=a+47|0,n[9079]?I=n[9081]:(n[9082]=-1,n[9083]=-1,n[9080]=4096,n[9081]=4096,n[9079]=g+12&-16^1431655768,n[9084]=0,n[9072]=0,I=4096),(e=(r=e+I|0)&(Q=0-I|0))>>>0<=a>>>0)break A;if((I=n[9071])&&(E=(o=n[9069])+e|0)>>>0<=o>>>0|E>>>0>I>>>0)break A;if(4&i[36288])break r;Q:{o:{if(I=n[8967])for(A=36292;;){if((o=n[A>>2])+n[A+4>>2]>>>0>I>>>0&&o>>>0<=I>>>0)break o;if(!(A=n[A+8>>2]))break}if(-1==(0|(I=og(0))))break a;if(r=e,(B=(A=n[9080])+-1|0)&I&&(r=(e-I|0)+(I+B&0-A)|0),r>>>0<=a>>>0|r>>>0>2147483646)break a;if((A=n[9071])&&(Q=(B=n[9069])+r|0)>>>0<=B>>>0|Q>>>0>A>>>0)break a;if((0|I)!=(0|(A=og(r))))break Q;break B}if((r=Q&r-B)>>>0>2147483646)break a;if((0|(I=og(r)))==(n[A>>2]+n[A+4>>2]|0))break t;A=I}if(!(-1==(0|A)|a+48>>>0<=r>>>0)){if((I=(I=n[9081])+(t-r|0)&0-I)>>>0>2147483646){I=A;break B}if(-1!=(0|og(I))){r=I+r|0,I=A;break B}og(0-r|0);break a}if(I=A,-1!=(0|A))break B;break a}c()}B=0;break g}I=0;break I}if(-1!=(0|I))break B}n[9072]=4|n[9072]}if(e>>>0>2147483646)break e;if((I=og(e))>>>0>=(A=og(0))>>>0|-1==(0|I)|-1==(0|A))break e;if((r=A-I|0)>>>0<=a+40>>>0)break e}A=n[9069]+r|0,n[9069]=A,A>>>0>C[9070]&&(n[9070]=A);B:{r:{a:{if(e=n[8967]){for(A=36292;;){if(((B=n[A>>2])+(t=n[A+4>>2])|0)==(0|I))break a;if(!(A=n[A+8>>2]))break}break r}for(I>>>0>=(A=n[8965])>>>0&&A||(n[8965]=I),A=0,n[9074]=r,n[9073]=I,n[8969]=-1,n[8970]=n[9079],n[9076]=0;B=35884+(e=A<<3)|0,n[e+35892>>2]=B,n[e+35896>>2]=B,32!=(0|(A=A+1|0)););B=(A=r+-40|0)-(e=I+8&7?-8-I&7:0)|0,n[8964]=B,e=I+e|0,n[8967]=e,n[e+4>>2]=1|B,n[4+(A+I|0)>>2]=40,n[8968]=n[9083];break B}if(!(8&i[A+12|0]|I>>>0<=e>>>0|B>>>0>e>>>0)){n[A+4>>2]=r+t,I=(A=e+8&7?-8-e&7:0)+e|0,n[8967]=I,A=(B=n[8964]+r|0)-A|0,n[8964]=A,n[I+4>>2]=1|A,n[4+(e+B|0)>>2]=40,n[8968]=n[9083];break B}}I>>>0<(B=n[8965])>>>0&&(n[8965]=I,B=0),t=I+r|0,A=36292;r:{a:{t:{n:{i:{C:{for(;;){if((0|t)!=n[A>>2]){if(A=n[A+8>>2])continue;break C}break}if(!(8&i[A+12|0]))break i}for(A=36292;;){if((B=n[A>>2])>>>0<=e>>>0&&(t=B+n[A+4>>2]|0)>>>0>e>>>0)break n;A=n[A+8>>2]}}if(n[A>>2]=I,n[A+4>>2]=n[A+4>>2]+r,n[4+(E=(I+8&7?-8-I&7:0)+I|0)>>2]=3|a,A=((I=t+(t+8&7?-8-t&7:0)|0)-E|0)-a|0,Q=a+E|0,(0|I)==(0|e)){n[8967]=Q,A=n[8964]+A|0,n[8964]=A,n[Q+4>>2]=1|A;break a}if(n[8966]==(0|I)){n[8966]=Q,A=n[8963]+A|0,n[8963]=A,n[Q+4>>2]=1|A,n[A+Q>>2]=A;break a}if(1==(3&(e=n[I+4>>2]))){s=-8&e;i:if(e>>>0<=255){if(a=e>>>3|0,e=n[I+8>>2],(0|(B=n[I+12>>2]))==(0|e)){h=35844,f=n[8961]&Og(-2,a),n[h>>2]=f;break i}n[e+12>>2]=B,n[B+8>>2]=e}else{if(o=n[I+24>>2],(0|(r=n[I+12>>2]))==(0|I))if((a=n[(t=I+20|0)>>2])||(a=n[(t=I+16|0)>>2])){for(;e=t,(a=n[(t=(r=a)+20|0)>>2])||(t=r+16|0,a=n[r+16>>2]););n[e>>2]=0}else r=0;else e=n[I+8>>2],n[e+12>>2]=r,n[r+8>>2]=e;if(o){e=n[I+28>>2];C:{if(n[(B=36148+(e<<2)|0)>>2]==(0|I)){if(n[B>>2]=r,r)break C;h=35848,f=n[8962]&Og(-2,e),n[h>>2]=f;break i}if(n[o+(n[o+16>>2]==(0|I)?16:20)>>2]=r,!r)break i}n[r+24>>2]=o,(e=n[I+16>>2])&&(n[r+16>>2]=e,n[e+24>>2]=r),(e=n[I+20>>2])&&(n[r+20>>2]=e,n[e+24>>2]=r)}}I=I+s|0,A=A+s|0}if(n[I+4>>2]=-2&n[I+4>>2],n[Q+4>>2]=1|A,n[A+Q>>2]=A,A>>>0<=255){A=35884+((I=A>>>3|0)<<3)|0,(e=n[8961])&(I=1<>2]:(n[8961]=I|e,I=A),n[A+8>>2]=Q,n[I+12>>2]=Q,n[Q+12>>2]=A,n[Q+8>>2]=I;break a}if(I=0,(B=A>>>8|0)&&(I=31,A>>>0>16777215||(I=28+((I=((r=(B<<=a=B+1048320>>>16&8)<<(I=B+520192>>>16&4))<<(B=r+245760>>>16&2)>>>15|0)-(B|I|a)|0)<<1|A>>>I+21&1)|0)),n[(e=Q)+28>>2]=I,n[Q+16>>2]=0,n[Q+20>>2]=0,e=36148+(I<<2)|0,(B=n[8962])&(a=1<>>1|0)|0),I=n[e>>2];;){if(e=I,(-8&n[I+4>>2])==(0|A))break t;if(I=t>>>29|0,t<<=1,!(I=n[16+(B=(4&I)+e|0)>>2]))break}n[B+16>>2]=Q}else n[8962]=B|a,n[e>>2]=Q;n[Q+24>>2]=e,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break a}for(Q=(A=r+-40|0)-(B=I+8&7?-8-I&7:0)|0,n[8964]=Q,B=I+B|0,n[8967]=B,n[B+4>>2]=1|Q,n[4+(A+I|0)>>2]=40,n[8968]=n[9083],n[(B=(A=(t+(t+-39&7?39-t&7:0)|0)-47|0)>>>0>>0?e:A)+4>>2]=27,A=n[9076],n[B+16>>2]=n[9075],n[B+20>>2]=A,A=n[9074],n[B+8>>2]=n[9073],n[B+12>>2]=A,n[9075]=B+8,n[9074]=r,n[9073]=I,n[9076]=0,A=B+24|0;n[A+4>>2]=7,I=A+8|0,A=A+4|0,t>>>0>I>>>0;);if((0|e)==(0|B))break B;if(n[B+4>>2]=-2&n[B+4>>2],r=B-e|0,n[e+4>>2]=1|r,n[B>>2]=r,r>>>0<=255){A=35884+((I=r>>>3|0)<<3)|0,(B=n[8961])&(I=1<>2]:(n[8961]=I|B,I=A),n[A+8>>2]=e,n[I+12>>2]=e,n[e+12>>2]=A,n[e+8>>2]=I;break B}if(n[e+16>>2]=0,n[e+20>>2]=0,A=0,(B=r>>>8|0)&&(A=31,r>>>0>16777215||(A=28+((A=((Q=(B<<=t=B+1048320>>>16&8)<<(A=B+520192>>>16&4))<<(B=Q+245760>>>16&2)>>>15|0)-(B|A|t)|0)<<1|r>>>A+21&1)|0)),n[(I=e)+28>>2]=A,I=36148+(A<<2)|0,(B=n[8962])&(t=1<>>1|0)|0),I=n[I>>2];;){if(B=I,(0|r)==(-8&n[I+4>>2]))break r;if(I=A>>>29|0,A<<=1,!(I=n[16+(t=B+(4&I)|0)>>2]))break}n[t+16>>2]=e,n[e+24>>2]=B}else n[8962]=B|t,n[I>>2]=e,n[e+24>>2]=I;n[e+12>>2]=e,n[e+8>>2]=e;break B}A=n[e+8>>2],n[A+12>>2]=Q,n[e+8>>2]=Q,n[Q+24>>2]=0,n[Q+12>>2]=e,n[Q+8>>2]=A}A=E+8|0;break A}A=n[B+8>>2],n[A+12>>2]=e,n[B+8>>2]=e,n[e+24>>2]=0,n[e+12>>2]=B,n[e+8>>2]=A}if(!((A=n[8964])>>>0<=a>>>0)){I=A-a|0,n[8964]=I,e=(A=n[8967])+a|0,n[8967]=e,n[e+4>>2]=1|I,n[A+4>>2]=3|a,A=A+8|0;break A}}n[8960]=48,A=0;break A}I:if(E){A=n[B+28>>2];e:{if(n[(e=36148+(A<<2)|0)>>2]==(0|B)){if(n[e>>2]=I,I)break e;o=Og(-2,A)&o,n[8962]=o;break I}if(n[E+(n[E+16>>2]==(0|B)?16:20)>>2]=I,!I)break I}n[I+24>>2]=E,(A=n[B+16>>2])&&(n[I+16>>2]=A,n[A+24>>2]=I),(A=n[B+20>>2])&&(n[I+20>>2]=A,n[A+24>>2]=I)}I:if(t>>>0<=15)A=a+t|0,n[B+4>>2]=3|A,n[4+(A=A+B|0)>>2]=1|n[A+4>>2];else if(n[B+4>>2]=3|a,n[r+4>>2]=1|t,n[r+t>>2]=t,t>>>0<=255)A=35884+((I=t>>>3|0)<<3)|0,(e=n[8961])&(I=1<>2]:(n[8961]=I|e,I=A),n[A+8>>2]=r,n[I+12>>2]=r,n[r+12>>2]=A,n[r+8>>2]=I;else{A=0,(e=t>>>8|0)&&(A=31,t>>>0>16777215||(A=28+((A=((Q=(e<<=a=e+1048320>>>16&8)<<(A=e+520192>>>16&4))<<(e=Q+245760>>>16&2)>>>15|0)-(e|A|a)|0)<<1|t>>>A+21&1)|0)),n[(I=r)+28>>2]=A,n[r+16>>2]=0,n[r+20>>2]=0,I=36148+(A<<2)|0;e:{if((e=1<>>1|0)|0),a=n[I>>2];;){if((-8&n[(I=a)+4>>2])==(0|t))break e;if(e=A>>>29|0,A<<=1,!(a=n[16+(e=(4&e)+I|0)>>2]))break}n[e+16>>2]=r}else n[8962]=e|o,n[I>>2]=r;n[r+24>>2]=I,n[r+12>>2]=r,n[r+8>>2]=r;break I}A=n[I+8>>2],n[A+12>>2]=r,n[I+8>>2]=r,n[r+24>>2]=0,n[r+12>>2]=I,n[r+8>>2]=A}A=B+8|0;break A}g:if(E){A=n[I+28>>2];I:{if(n[(e=36148+(A<<2)|0)>>2]==(0|I)){if(n[e>>2]=B,B)break I;h=35848,f=Og(-2,A)&s,n[h>>2]=f;break g}if(n[E+(n[E+16>>2]==(0|I)?16:20)>>2]=B,!B)break g}n[B+24>>2]=E,(A=n[I+16>>2])&&(n[B+16>>2]=A,n[A+24>>2]=B),(A=n[I+20>>2])&&(n[B+20>>2]=A,n[A+24>>2]=B)}t>>>0<=15?(A=a+t|0,n[I+4>>2]=3|A,n[4+(A=A+I|0)>>2]=1|n[A+4>>2]):(n[I+4>>2]=3|a,n[y+4>>2]=1|t,n[t+y>>2]=t,o&&(A=35884+((e=o>>>3|0)<<3)|0,B=n[8966],(e=1<>2]:(n[8961]=e|r,e=A),n[A+8>>2]=B,n[e+12>>2]=B,n[B+12>>2]=A,n[B+8>>2]=e),n[8966]=y,n[8963]=t),A=I+8|0}return p=g+16|0,0|A}function k(A,g,I){var e,B,r,a,t,i,C,o,c,E,s,y,h,f,_,p,u,l,D,v,d,b,k,F,G,m,Y,H,S,U,M,N,P,x,R,J,K,L,T,q,X,V,W,O,j,Z,z,$,AA,gA,IA,eA,BA,rA,aA=0,tA=0,nA=0,iA=0,CA=0,QA=0,oA=0,cA=0,EA=0,sA=0,yA=0,hA=0,fA=0,_A=0,pA=0,uA=0,lA=0,wA=0,DA=0,vA=0,dA=0,bA=0,kA=0,FA=0,GA=0;oA=A,o=aA=bA=n[I+4>>2],c=aA>>31,K=aA=(pA=n[g+20>>2])<<1,aA=kI(o,c,aA,k=aA>>31),nA=w,tA=aA,e=aA=n[I>>2],B=aA>>31,E=aA=n[g+24>>2],CA=kI(e,B,aA,r=aA>>31),aA=w+nA|0,aA=(tA=tA+CA|0)>>>0>>0?aA+1|0:aA,nA=tA,F=tA=QA=n[I+8>>2],u=tA>>31,s=tA=n[g+16>>2],tA=nA+(CA=kI(QA,u,tA,a=tA>>31))|0,nA=w+aA|0,nA=tA>>>0>>0?nA+1|0:nA,L=aA=lA=n[I+12>>2],l=aA>>31,T=aA=(hA=n[g+12>>2])<<1,aA=(CA=kI(lA,l,aA,G=aA>>31))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=aA,Z=aA=uA=n[I+16>>2],d=aA>>31,y=aA=n[g+8>>2],CA=kI(uA,d,aA,t=aA>>31),aA=w+tA|0,aA=(nA=nA+CA|0)>>>0>>0?aA+1|0:aA,iA=nA,z=tA=sA=n[I+20>>2],m=tA>>31,q=tA=(cA=n[g+4>>2])<<1,nA=kI(sA,m,tA,Y=tA>>31),aA=w+aA|0,aA=(tA=iA+nA|0)>>>0>>0?aA+1|0:aA,nA=tA,$=tA=yA=n[I+24>>2],X=tA>>31,h=tA=n[g>>2],CA=kI(yA,X,tA,i=tA>>31),tA=w+aA|0,tA=(nA=nA+CA|0)>>>0>>0?tA+1|0:tA,wA=n[I+28>>2],D=aA=Q(wA,19),v=aA>>31,V=aA=(fA=n[g+36>>2])<<1,aA=(CA=kI(D,v,aA,H=aA>>31))+nA|0,nA=w+tA|0,nA=aA>>>0>>0?nA+1|0:nA,tA=aA,_A=n[I+32>>2],DA=aA=Q(_A,19),vA=aA>>31,f=aA=n[g+32>>2],CA=kI(DA,vA,aA,C=aA>>31),aA=w+nA|0,aA=(tA=tA+CA|0)>>>0>>0?aA+1|0:aA,nA=tA,AA=n[I+36>>2],_=I=Q(AA,19),p=I>>31,W=I=(g=n[g+28>>2])<<1,tA=kI(_,p,I,S=I>>31),aA=w+aA|0,EA=I=nA+tA|0,I=I>>>0>>0?aA+1|0:aA,aA=kI(s,a,o,c),tA=w,pA=kI(e,B,CA=pA,U=CA>>31),nA=w+tA|0,nA=(aA=pA+aA|0)>>>0>>0?nA+1|0:nA,pA=hA,hA=kI(QA,u,hA,M=hA>>31),tA=w+nA|0,tA=(aA=hA+aA|0)>>>0>>0?tA+1|0:tA,nA=(hA=kI(y,t,lA,l))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,tA=nA,hA=cA,nA=kI(uA,d,cA,N=cA>>31),aA=w+aA|0,aA=(tA=tA+nA|0)>>>0>>0?aA+1|0:aA,nA=kI(h,i,sA,m),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=tA,P=tA=Q(yA,19),tA=nA+(fA=kI(tA,b=tA>>31,cA=fA,x=cA>>31))|0,nA=w+aA|0,nA=tA>>>0>>0?nA+1|0:nA,aA=(fA=kI(f,C,D,v))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,fA=g,g=(nA=kI(DA,vA,g,R=g>>31))+aA|0,aA=w+tA|0,aA=g>>>0>>0?aA+1|0:aA,tA=kI(_,p,E,r),aA=w+aA|0,kA=g=tA+g|0,g=g>>>0>>0?aA+1|0:aA,aA=kI(o,c,T,G),nA=w,tA=(yA=kI(e,B,s,a))+aA|0,aA=w+nA|0,aA=tA>>>0>>0?aA+1|0:aA,yA=kI(y,t,QA,u),nA=w+aA|0,nA=(tA=yA+tA|0)>>>0>>0?nA+1|0:nA,aA=(yA=kI(lA,l,q,Y))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=(yA=kI(h,i,uA,d))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,iA=nA,O=tA=Q(sA,19),nA=kI(tA,J=tA>>31,V,H),aA=w+aA|0,aA=(tA=iA+nA|0)>>>0>>0?aA+1|0:aA,nA=kI(f,C,P,b),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,sA=kI(D,v,W,S),nA=w+aA|0,nA=(tA=sA+tA|0)>>>0>>0?nA+1|0:nA,aA=(sA=kI(DA,vA,E,r))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=(sA=kI(_,p,K,k))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,sA=nA,IA=aA,(tA=nA+33554432|0)>>>0<33554432&&(aA=aA+1|0),yA=tA,eA=aA,nA=kA,kA=(67108863&aA)<<6|tA>>>26,aA=(aA>>26)+g|0,aA=(nA=nA+kA|0)>>>0>>0?aA+1|0:aA,kA=nA,nA=aA,(g=kA+16777216|0)>>>0<16777216&&(nA=nA+1|0),BA=g,aA=I+(tA=nA>>25)|0,aA=(g=(nA=(33554431&nA)<<7|g>>>25)+EA|0)>>>0>>0?aA+1|0:aA,(g=(I=g)+33554432|0)>>>0<33554432&&(aA=aA+1|0),FA=g,g=aA,aA=-67108864&FA,n[oA+24>>2]=I-aA,EA=A,I=kI(o,c,q,Y),aA=w,tA=kI(e,B,y,t),nA=w+aA|0,nA=(I=tA+I|0)>>>0>>0?nA+1|0:nA,tA=kI(h,i,F,u),aA=w+nA|0,aA=(I=tA+I|0)>>>0>>0?aA+1|0:aA,nA=I,oA=I=Q(lA,19),tA=kI(I,lA=I>>31,V,H),aA=w+aA|0,aA=(I=nA+tA|0)>>>0>>0?aA+1|0:aA,tA=I,gA=I=Q(uA,19),I=tA+(nA=kI(f,C,I,j=I>>31))|0,tA=w+aA|0,tA=I>>>0>>0?tA+1|0:tA,nA=kI(W,S,O,J),aA=w+tA|0,aA=(I=nA+I|0)>>>0>>0?aA+1|0:aA,tA=kI(E,r,P,b),nA=w+aA|0,nA=(I=tA+I|0)>>>0>>0?nA+1|0:nA,tA=kI(D,v,K,k),aA=w+nA|0,aA=(I=tA+I|0)>>>0>>0?aA+1|0:aA,tA=kI(DA,vA,s,a),aA=w+aA|0,aA=(I=tA+I|0)>>>0>>0?aA+1|0:aA,nA=kI(_,p,T,G),tA=w+aA|0,iA=I=nA+I|0,I=I>>>0>>0?tA+1|0:tA,aA=kI(h,i,o,c),nA=w,tA=(uA=kI(e,B,hA,N))+aA|0,aA=w+nA|0,aA=tA>>>0>>0?aA+1|0:aA,nA=tA,uA=tA=Q(QA,19),tA=nA+(QA=kI(tA,dA=tA>>31,cA,x))|0,nA=w+aA|0,nA=tA>>>0>>0?nA+1|0:nA,QA=kI(f,C,oA,lA),aA=w+nA|0,aA=(tA=QA+tA|0)>>>0>>0?aA+1|0:aA,nA=kI(gA,j,fA,R),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=(QA=kI(E,r,O,J))+tA|0,tA=w+aA|0,tA=nA>>>0>>0?tA+1|0:tA,QA=kI(P,b,CA,U),aA=w+tA|0,aA=(nA=QA+nA|0)>>>0>>0?aA+1|0:aA,tA=(QA=kI(s,a,D,v))+nA|0,nA=w+aA|0,nA=tA>>>0>>0?nA+1|0:nA,QA=kI(DA,vA,pA,M),aA=w+nA|0,aA=(tA=QA+tA|0)>>>0>>0?aA+1|0:aA,nA=kI(_,p,y,t),aA=w+aA|0,GA=tA=nA+tA|0,QA=tA>>>0>>0?aA+1|0:aA,aA=kI(aA=Q(bA,19),aA>>31,V,H),tA=w,nA=kI(e,B,h,i),tA=w+tA|0,tA=(aA=nA+aA|0)>>>0>>0?tA+1|0:tA,nA=(bA=kI(f,C,uA,dA))+aA|0,aA=w+tA|0,tA=(oA=kI(oA,lA,W,S))+nA|0,nA=w+(nA>>>0>>0?aA+1|0:aA)|0,nA=tA>>>0>>0?nA+1|0:nA,oA=kI(E,r,gA,j),aA=w+nA|0,aA=(tA=oA+tA|0)>>>0>>0?aA+1|0:aA,nA=kI(K,k,O,J),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=(oA=kI(s,a,P,b))+tA|0,tA=w+aA|0,tA=nA>>>0>>0?tA+1|0:tA,oA=kI(D,v,T,G),aA=w+tA|0,aA=(nA=oA+nA|0)>>>0>>0?aA+1|0:aA,tA=(oA=kI(DA,vA,y,t))+nA|0,nA=w+aA|0,nA=tA>>>0>>0?nA+1|0:nA,oA=kI(_,p,q,Y),aA=w+nA|0,aA=(tA=oA+tA|0)>>>0>>0?aA+1|0:aA,oA=tA,bA=aA,(tA=tA+33554432|0)>>>0<33554432&&(aA=aA+1|0),lA=tA,uA=aA,dA=(67108863&aA)<<6|tA>>>26,tA=(nA=aA>>26)+QA|0,QA=aA=dA+GA|0,nA=iA,aA=aA>>>0>>0?tA+1|0:tA,(tA=QA+16777216|0)>>>0<16777216&&(aA=aA+1|0),rA=tA,iA=(33554431&aA)<<7|tA>>>25,aA=(aA>>25)+I|0,aA=(tA=nA+iA|0)>>>0>>0?aA+1|0:aA,(I=tA+33554432|0)>>>0<33554432&&(aA=aA+1|0),dA=I,I=aA,aA=-67108864&dA,n[EA+8>>2]=tA-aA,iA=A,aA=kI(E,r,o,c),nA=w,tA=(EA=kI(e,B,fA,R))+aA|0,aA=w+nA|0,aA=tA>>>0>>0?aA+1|0:aA,nA=kI(F,u,CA,U),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=kI(s,a,L,l),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,EA=kI(Z,d,pA,M),nA=w+aA|0,nA=(tA=EA+tA|0)>>>0>>0?nA+1|0:nA,aA=(EA=kI(y,t,z,m))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=(EA=kI(hA,N,$,X))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,tA=nA,nA=kI(h,i,EA=wA,GA=EA>>31),aA=w+aA|0,aA=(tA=tA+nA|0)>>>0>>0?aA+1|0:aA,nA=kI(DA,vA,cA,x),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,wA=kI(_,p,f,C),nA=w+aA|0,nA=(tA=wA+tA|0)>>>0>>0?nA+1|0:nA,aA=g>>26,g=(wA=(67108863&g)<<6|FA>>>26)+tA|0,tA=aA+nA|0,aA=tA=g>>>0>>0?tA+1|0:tA,(g=(nA=g)+16777216|0)>>>0<16777216&&(aA=aA+1|0),FA=g,g=aA,aA=-33554432&FA,n[iA+28>>2]=nA-aA,wA=A,aA=kI(y,t,o,c),tA=w,iA=kI(e,B,pA,M),nA=w+tA|0,nA=(aA=iA+aA|0)>>>0>>0?nA+1|0:nA,iA=kI(F,u,hA,N),tA=w+nA|0,tA=(aA=iA+aA|0)>>>0>>0?tA+1|0:tA,nA=(iA=kI(h,i,L,l))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,tA=nA,nA=kI(gA,j,cA,x),aA=w+aA|0,aA=(tA=tA+nA|0)>>>0>>0?aA+1|0:aA,nA=kI(f,C,O,J),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,iA=kI(P,b,fA,R),nA=w+aA|0,nA=(tA=iA+tA|0)>>>0>>0?nA+1|0:nA,aA=(iA=kI(E,r,D,v))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=(iA=kI(DA,vA,CA,U))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,tA=nA,nA=kI(_,p,s,a),aA=w+aA|0,iA=tA=tA+nA|0,aA=(aA=tA>>>0>>0?aA+1|0:aA)+(tA=I>>26)|0,nA=aA=(I=iA+(nA=(67108863&I)<<6|dA>>>26)|0)>>>0>>0?aA+1|0:aA,(I=(tA=I)+16777216|0)>>>0<16777216&&(nA=nA+1|0),DA=I,I=nA,aA=-33554432&DA,n[wA+12>>2]=tA-aA,aA=kI(o,c,W,S),nA=w,tA=(iA=kI(e,B,f,C))+aA|0,aA=w+nA|0,aA=tA>>>0>>0?aA+1|0:aA,nA=kI(E,r,F,u),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,iA=kI(L,l,K,k),nA=w+aA|0,nA=(tA=iA+tA|0)>>>0>>0?nA+1|0:nA,aA=(iA=kI(s,a,Z,d))+tA|0,tA=w+nA|0,tA=aA>>>0>>0?tA+1|0:tA,nA=(iA=kI(T,G,z,m))+aA|0,aA=w+tA|0,aA=nA>>>0>>0?aA+1|0:aA,tA=nA,nA=kI(y,t,$,X),aA=w+aA|0,aA=(tA=tA+nA|0)>>>0>>0?aA+1|0:aA,nA=kI(EA,GA,q,Y),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,_A=kI(h,i,iA=_A,vA=iA>>31),nA=w+aA|0,nA=(tA=_A+tA|0)>>>0<_A>>>0?nA+1|0:nA,aA=(_A=kI(_,p,V,H))+tA|0,tA=w+nA|0,tA=aA>>>0<_A>>>0?tA+1|0:tA,_A=aA,aA=(aA=g>>25)+tA|0,aA=(g=_A+(nA=(33554431&g)<<7|FA>>>25)|0)>>>0>>0?aA+1|0:aA,(g=(tA=g)+33554432|0)>>>0<33554432&&(aA=aA+1|0),_A=g,g=aA,aA=-67108864&_A,n[wA+32>>2]=tA-aA,nA=tA=sA-(aA=-67108864&yA)|0,aA=(aA=IA-((sA>>>0>>0)+eA|0)|0)+(tA=I>>25)|0,aA=(I=nA+(sA=(33554431&I)<<7|DA>>>25)|0)>>>0>>0?aA+1|0:aA,(tA=I+33554432|0)>>>0<33554432&&(aA=aA+1|0),nA=(kA-(-33554432&BA)|0)+((67108863&aA)<<6|tA>>>26)|0,n[A+20>>2]=nA,aA=-67108864&tA,n[A+16>>2]=I-aA,aA=kI(f,C,o,c),nA=w,tA=(cA=kI(e,B,cA,x))+aA|0,aA=w+nA|0,aA=tA>>>0>>0?aA+1|0:aA,nA=(cA=kI(F,u,fA,R))+tA|0,tA=w+aA|0,tA=nA>>>0>>0?tA+1|0:tA,aA=(cA=kI(E,r,L,l))+nA|0,nA=w+tA|0,tA=(CA=kI(Z,d,CA,U))+aA|0,aA=w+(aA>>>0>>0?nA+1|0:nA)|0,aA=tA>>>0>>0?aA+1|0:aA,nA=kI(s,a,z,m),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=kI(pA,M,$,X),aA=w+aA|0,aA=(tA=nA+tA|0)>>>0>>0?aA+1|0:aA,nA=(CA=kI(y,t,EA,GA))+tA|0,tA=w+aA|0,tA=nA>>>0>>0?tA+1|0:tA,aA=(CA=kI(iA,vA,hA,N))+nA|0,nA=w+tA|0,nA=aA>>>0>>0?nA+1|0:nA,tA=(CA=kI(h,i,AA,AA>>31))+aA|0,aA=w+nA|0,I=tA,aA=(aA=tA>>>0>>0?aA+1|0:aA)+(tA=g>>26)|0,aA=(g=I+(nA=(67108863&g)<<6|_A>>>26)|0)>>>0>>0?aA+1|0:aA,nA=I=g,(g=I+16777216|0)>>>0<16777216&&(aA=aA+1|0),g=-33554432&(tA=g),n[A+36>>2]=I-g,I=A,nA=QA-(-33554432&rA)|0,CA=oA-(g=-67108864&lA)|0,pA=bA-((oA>>>0>>0)+uA|0)|0,aA=kI((33554431&(g=aA))<<7|tA>>>25,aA>>=25,19,0),tA=w+pA|0,iA=I,aA=tA=(g=aA+CA|0)>>>0>>0?tA+1|0:tA,(I=g+33554432|0)>>>0<33554432&&(aA=aA+1|0),tA=((67108863&aA)<<6|(tA=I)>>>26)+nA|0,n[iA+4>>2]=tA,tA=A,A=-67108864&I,n[tA>>2]=g-A}function F(A,g,I){var e,B=0,r=0,a=0,t=0,i=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,u=0,l=0,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0,H=0,S=0,U=0,M=0,N=0,P=0,x=0,R=0,J=0,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0,BA=0;for(p=e=p-2048|0,TI(e+1024|0,g),hg(e+1024|0,A),TI(e,e+1024|0),hg(e,I),g=0;o=n[(t=(e+1024|0)+(96|(A=N<<7))|0)>>2],r=n[t+4>>2],i=d=MI((B=o)^(o=vg(o=n[(C=Q=A+(e+1024|0)|0)>>2],i=n[C+4>>2],a=n[(C=(e+1024|0)+(32|A)|0)>>2],c=n[C+4>>2])),(i=r)^(r=w),32),y=o,f=r,B=MI((d=vg(B=n[(r=o=(e+1024|0)+(64|A)|0)>>2],h=n[r+4>>2],d,r=w))^a,(B=c)^(c=w),24),a=MI(i^(S=vg(y,f,B,h=w)),(Y=w)^r,16),i=r=w,n[t>>2]=a,n[t+4>>2]=r,c=vg(d,c,a,r),_=r=w,n[o>>2]=c,n[o+4>>2]=r,d=MI(B^c,r^h,63),h=r=w,n[C>>2]=d,n[C+4>>2]=r,B=n[(r=m=(e+1024|0)+(104|A)|0)>>2],G=n[r+4>>2],b=n[(r=(e+1024|0)+(72|A)|0)>>2],s=n[r+4>>2],E=B,u=vg(u=n[(B=f=(e+1024|0)+(8|A)|0)>>2],D=n[B+4>>2],y=n[(B=v=(e+1024|0)+(40|A)|0)>>2],H=n[B+4>>2]),B=vg(b,s,x=MI(E^u,(B=G)^(G=w),32),D=w),j=vg(E=u,G,H=MI(b=B^y,(y=w)^H,24),u=w),B=vg(B,y,G=MI(j^x,(Z=w)^D,16),z=w),y=x=w,n[r>>2]=B,n[r+4>>2]=y,H=MI(B^H,y^u,63),u=w,R=n[(D=x=(e+1024|0)+(112|A)|0)>>2],U=n[D+4>>2],k=n[(D=(e+1024|0)+(80|A)|0)>>2],K=n[D+4>>2],P=MI((s=R)^(F=vg(F=n[(b=R=(e+1024|0)+(16|A)|0)>>2],l=n[b+4>>2],M=n[(E=b=(e+1024|0)+(48|A)|0)>>2],E=n[E+4>>2])),(l=U)^(U=w),32),E=MI(k=(s=vg(k,K,P,l=w))^M,E^(M=w),24),gA=MI(($=vg(F,k=U,E,U=w))^P,(AA=w)^l,16),U=MI(E^(K=vg(s,M,gA,IA=w)),(X=w)^U,63),E=w,P=n[(F=M=(e+1024|0)+(120|A)|0)>>2],l=n[F+4>>2],T=n[(s=F=(e+1024|0)+(88|A)|0)>>2],O=n[s+4>>2],J=MI((q=P)^(W=vg(V=n[(s=P=(e+1024|0)+(24|A)|0)>>2],J=n[s+4>>2],k=n[(A=(e+1024|0)+(56|A)|0)>>2],s=n[A+4>>2])),(V=l)^(l=w),32),s=MI(q=(T=vg(T,O,J,L=w))^k,s^(k=w),24),q=k,J=MI((k=vg(W,k=l,s,l=w))^J,(W=w)^L,16),l=MI(s^(T=vg(T,q,J,L=w)),(O=w)^l,63),s=w,q=K,V=X,K=MI(J^(S=vg(S,Y,H,u)),L^(Y=w),32),H=MI((J=vg(q,V,K,X=w))^H,(L=w)^u,24),u=vg(u=S,Y,H,S=w),Y=w,n[Q>>2]=u,n[Q+4>>2]=Y,Q=MI(u^K,X^Y,16),u=w,n[M>>2]=Q,n[M+4>>2]=u,Q=vg(J,L,Q,u),u=w,n[D>>2]=Q,n[D+4>>2]=u,eA=v,BA=MI(Q^H,u^S,63),n[eA>>2]=BA,n[v+4>>2]=w,v=MI((Q=vg(j,Z,U,E))^a,(u=i)^(i=w),32),a=MI((u=vg(T,O,v,H=w))^U,(D=w)^E,24),Q=vg(Q,E=i,a,i=w),E=U=w,n[f>>2]=Q,n[f+4>>2]=E,Q=MI(Q^v,E^H,16),f=w,n[t>>2]=Q,n[t+4>>2]=f,t=vg(u,D,Q,f),n[F>>2]=t,Q=w,n[F+4>>2]=Q,eA=b,BA=MI(a^t,Q^i,63),n[eA>>2]=BA,n[b+4>>2]=w,f=c,a=vg($,AA,l,s),_=vg(f,_,Q=MI(G^a,z^(c=w),32),i=w),a=vg(a,E=c,t=MI(_^l,(f=w)^s,24),c=w),v=w,n[R>>2]=a,n[R+4>>2]=v,a=MI(a^Q,i^v,16),Q=w,n[m>>2]=a,n[m+4>>2]=Q,a=vg(_,f,a,Q),n[o>>2]=a,i=o,o=w,n[i+4>>2]=o,eA=A,BA=MI(a^t,o^c,63),n[eA>>2]=BA,n[A+4>>2]=w,A=d,t=vg(k,W,d,h),d=vg(B,y,a=MI(gA^t,IA^(o=w),32),c=w),t=vg(t,i=o,A=MI(A^d,(B=w)^h,24),o=w),Q=w,n[P>>2]=t,n[P+4>>2]=Q,t=MI(a^t,c^Q,16),a=w,n[x>>2]=t,n[x+4>>2]=a,t=vg(d,B,t,a),n[r>>2]=t,B=r,r=w,n[B+4>>2]=r,eA=C,BA=MI(A^t,r^o,63),n[eA>>2]=BA,n[C+4>>2]=w,8!=(0|(N=N+1|0)););for(;C=n[(t=768+(A=(r=g<<4)+(e+1024|0)|0)|0)>>2],t=n[t+4>>2],B=C,C=n[A+256>>2],o=n[A+260>>2],c=MI(B^(a=vg(n[A>>2],n[A+4>>2],C,o)),(c=t)^(t=w),32),i=t,t=w,d=MI((B=C)^(C=vg(n[A+512>>2],n[A+516>>2],c,t)),(h=o)^(o=w),24),t=MI(c^(G=vg(a,i,d,B=w)),(y=w)^t,16),a=c=w,n[A+768>>2]=t,n[A+772>>2]=a,C=vg(C,o,t,a),c=o=w,n[A+512>>2]=C,n[A+516>>2]=o,o=MI(C^d,B^o,63),d=B=w,n[A+256>>2]=o,n[A+260>>2]=B,N=n[A+780>>2],f=n[A+520>>2],E=n[A+524>>2],h=n[A+776>>2],r=B=(e+1024|0)+(8|r)|0,Q=n[A+264>>2],i=n[A+268>>2],_=vg(n[r>>2],n[r+4>>2],Q,i),r=vg(f,E,h=MI(h^_,(r=N)^(N=w),32),m=w),H=vg(f=_,N,i=MI(E=r^Q,i^(Q=w),24),_=w),r=vg(r,Q,N=MI(H^h,(u=w)^m,16),x=w),Q=h=w,n[A+520>>2]=r,n[A+524>>2]=Q,i=MI(r^i,Q^_,63),_=w,h=n[A+900>>2],b=n[A+640>>2],s=n[A+644>>2],D=n[A+896>>2],m=n[A+384>>2],f=n[A+388>>2],D=MI(D^(v=vg(n[A+128>>2],n[A+132>>2],m,f)),(E=h)^(h=w),32),f=MI(E=(b=vg(b,s,D,R=w))^m,f^(m=w),24),E=b,b=MI((b=D)^(D=vg(v,s=h,f,h=w)),(s=R)^(R=w),16),h=MI(f^(E=vg(E,m,b,U=w)),(M=w)^h,63),m=w,f=n[A+908>>2],S=n[A+648>>2],Y=n[A+652>>2],l=n[A+904>>2],v=n[A+392>>2],F=n[A+396>>2],l=MI(l^(P=vg(n[A+136>>2],n[A+140>>2],v,F)),(s=f)^(f=w),32),k=F=MI(Y=(S=vg(S,Y,l,s=w))^v,F^(v=w),24),l=MI((F=vg(P,Y=f,F,f=w))^l,(P=w)^s,16),f=MI(k^(S=vg(S,v,l,s=w)),(Y=w)^f,63),v=w,k=E,K=M,E=MI(l^(G=vg(G,y,i,_)),s^(y=w),32),i=MI((l=vg(k,K,E,M=w))^i,(s=w)^_,24),_=vg(_=G,y,i,G=w),y=w,n[A>>2]=_,n[A+4>>2]=y,_=MI(_^E,M^y,16),y=w,n[A+904>>2]=_,n[A+908>>2]=y,_=vg(l,s,_,y),y=w,n[A+640>>2]=_,n[A+644>>2]=y,eA=A,BA=MI(i^_,y^G,63),n[eA+264>>2]=BA,n[A+268>>2]=w,y=h,_=MI((i=vg(H,u,h,m))^t,(h=a)^(a=w),32),t=MI(y^(G=vg(S,Y,_,h=w)),(E=m)^(m=w),24),a=vg(y=i,a,t,i=w),y=w,n[B>>2]=a,n[B+4>>2]=y,a=MI(a^_,h^y,16),B=w,n[A+768>>2]=a,n[A+772>>2]=B,a=vg(G,m,a,B),n[A+648>>2]=a,B=w,n[A+652>>2]=B,eA=A,BA=MI(a^t,B^i,63),n[eA+384>>2]=BA,n[A+388>>2]=w,i=C,h=c,C=vg(D,R,f,v),N=vg(i,h,c=MI(N^C,x^(a=w),32),B=w),C=vg(C,h=a,t=MI(N^f,(i=w)^v,24),a=w),_=w,n[A+128>>2]=C,n[A+132>>2]=_,C=MI(C^c,B^_,16),B=c=w,n[A+776>>2]=C,n[A+780>>2]=B,C=vg(N,i,C,B),n[A+512>>2]=C,c=w,n[A+516>>2]=c,eA=A,BA=MI(t^C,a^c,63),n[eA+392>>2]=BA,n[A+396>>2]=w,B=o,c=r,r=MI(b^(C=vg(F,P,o,d)),U^(o=w),32),t=MI(B^(c=vg(c,Q,r,a=w)),(i=d)^(d=w),24),C=vg(C,B=o,t,o=w),B=w,n[A+136>>2]=C,n[A+140>>2]=B,C=MI(r^C,a^B,16),r=w,n[A+896>>2]=C,n[A+900>>2]=r,C=vg(c,d,C,r),n[A+520>>2]=C,r=w,n[A+524>>2]=r,eA=A,BA=MI(t^C,r^o,63),n[eA+256>>2]=BA,n[A+260>>2]=w,8!=(0|(g=g+1|0)););TI(I,e),hg(I,e+1024|0),p=e+2048|0}function G(A,g,I){var e,B=0,r=0,a=0,t=0,i=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,u=0,l=0,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0,H=0,S=0,U=0,M=0,N=0,P=0,x=0,R=0,J=0,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0,BA=0;for(p=e=p-2048|0,TI(e+1024|0,g),hg(e+1024|0,A),TI(e,e+1024|0),g=0;o=n[(t=(e+1024|0)+(96|(A=N<<7))|0)>>2],r=n[t+4>>2],i=d=MI((B=o)^(o=vg(o=n[(C=Q=A+(e+1024|0)|0)>>2],i=n[C+4>>2],a=n[(C=(e+1024|0)+(32|A)|0)>>2],c=n[C+4>>2])),(i=r)^(r=w),32),y=o,f=r,B=MI((d=vg(B=n[(r=o=(e+1024|0)+(64|A)|0)>>2],h=n[r+4>>2],d,r=w))^a,(B=c)^(c=w),24),a=MI(i^(S=vg(y,f,B,h=w)),(Y=w)^r,16),i=r=w,n[t>>2]=a,n[t+4>>2]=r,c=vg(d,c,a,r),_=r=w,n[o>>2]=c,n[o+4>>2]=r,d=MI(B^c,r^h,63),h=r=w,n[C>>2]=d,n[C+4>>2]=r,B=n[(r=m=(e+1024|0)+(104|A)|0)>>2],G=n[r+4>>2],b=n[(r=(e+1024|0)+(72|A)|0)>>2],s=n[r+4>>2],E=B,u=vg(u=n[(B=f=(e+1024|0)+(8|A)|0)>>2],D=n[B+4>>2],y=n[(B=v=(e+1024|0)+(40|A)|0)>>2],H=n[B+4>>2]),B=vg(b,s,x=MI(E^u,(B=G)^(G=w),32),D=w),j=vg(E=u,G,H=MI(b=B^y,(y=w)^H,24),u=w),B=vg(B,y,G=MI(j^x,(Z=w)^D,16),z=w),y=x=w,n[r>>2]=B,n[r+4>>2]=y,H=MI(B^H,y^u,63),u=w,R=n[(D=x=(e+1024|0)+(112|A)|0)>>2],U=n[D+4>>2],k=n[(D=(e+1024|0)+(80|A)|0)>>2],K=n[D+4>>2],P=MI((s=R)^(F=vg(F=n[(b=R=(e+1024|0)+(16|A)|0)>>2],l=n[b+4>>2],M=n[(E=b=(e+1024|0)+(48|A)|0)>>2],E=n[E+4>>2])),(l=U)^(U=w),32),E=MI(k=(s=vg(k,K,P,l=w))^M,E^(M=w),24),gA=MI(($=vg(F,k=U,E,U=w))^P,(AA=w)^l,16),U=MI(E^(K=vg(s,M,gA,IA=w)),(X=w)^U,63),E=w,P=n[(F=M=(e+1024|0)+(120|A)|0)>>2],l=n[F+4>>2],T=n[(s=F=(e+1024|0)+(88|A)|0)>>2],O=n[s+4>>2],J=MI((q=P)^(W=vg(V=n[(s=P=(e+1024|0)+(24|A)|0)>>2],J=n[s+4>>2],k=n[(A=(e+1024|0)+(56|A)|0)>>2],s=n[A+4>>2])),(V=l)^(l=w),32),s=MI(q=(T=vg(T,O,J,L=w))^k,s^(k=w),24),q=k,J=MI((k=vg(W,k=l,s,l=w))^J,(W=w)^L,16),l=MI(s^(T=vg(T,q,J,L=w)),(O=w)^l,63),s=w,q=K,V=X,K=MI(J^(S=vg(S,Y,H,u)),L^(Y=w),32),H=MI((J=vg(q,V,K,X=w))^H,(L=w)^u,24),u=vg(u=S,Y,H,S=w),Y=w,n[Q>>2]=u,n[Q+4>>2]=Y,Q=MI(u^K,X^Y,16),u=w,n[M>>2]=Q,n[M+4>>2]=u,Q=vg(J,L,Q,u),u=w,n[D>>2]=Q,n[D+4>>2]=u,eA=v,BA=MI(Q^H,u^S,63),n[eA>>2]=BA,n[v+4>>2]=w,v=MI((Q=vg(j,Z,U,E))^a,(u=i)^(i=w),32),a=MI((u=vg(T,O,v,H=w))^U,(D=w)^E,24),Q=vg(Q,E=i,a,i=w),E=U=w,n[f>>2]=Q,n[f+4>>2]=E,Q=MI(Q^v,E^H,16),f=w,n[t>>2]=Q,n[t+4>>2]=f,t=vg(u,D,Q,f),n[F>>2]=t,Q=w,n[F+4>>2]=Q,eA=b,BA=MI(a^t,Q^i,63),n[eA>>2]=BA,n[b+4>>2]=w,f=c,a=vg($,AA,l,s),_=vg(f,_,Q=MI(G^a,z^(c=w),32),i=w),a=vg(a,E=c,t=MI(_^l,(f=w)^s,24),c=w),v=w,n[R>>2]=a,n[R+4>>2]=v,a=MI(a^Q,i^v,16),Q=w,n[m>>2]=a,n[m+4>>2]=Q,a=vg(_,f,a,Q),n[o>>2]=a,i=o,o=w,n[i+4>>2]=o,eA=A,BA=MI(a^t,o^c,63),n[eA>>2]=BA,n[A+4>>2]=w,A=d,t=vg(k,W,d,h),d=vg(B,y,a=MI(gA^t,IA^(o=w),32),c=w),t=vg(t,i=o,A=MI(A^d,(B=w)^h,24),o=w),Q=w,n[P>>2]=t,n[P+4>>2]=Q,t=MI(a^t,c^Q,16),a=w,n[x>>2]=t,n[x+4>>2]=a,t=vg(d,B,t,a),n[r>>2]=t,B=r,r=w,n[B+4>>2]=r,eA=C,BA=MI(A^t,r^o,63),n[eA>>2]=BA,n[C+4>>2]=w,8!=(0|(N=N+1|0)););for(;C=n[(t=768+(A=(r=g<<4)+(e+1024|0)|0)|0)>>2],t=n[t+4>>2],B=C,C=n[A+256>>2],o=n[A+260>>2],c=MI(B^(a=vg(n[A>>2],n[A+4>>2],C,o)),(c=t)^(t=w),32),i=t,t=w,d=MI((B=C)^(C=vg(n[A+512>>2],n[A+516>>2],c,t)),(h=o)^(o=w),24),t=MI(c^(G=vg(a,i,d,B=w)),(y=w)^t,16),a=c=w,n[A+768>>2]=t,n[A+772>>2]=a,C=vg(C,o,t,a),c=o=w,n[A+512>>2]=C,n[A+516>>2]=o,o=MI(C^d,B^o,63),d=B=w,n[A+256>>2]=o,n[A+260>>2]=B,N=n[A+780>>2],f=n[A+520>>2],E=n[A+524>>2],h=n[A+776>>2],r=B=(e+1024|0)+(8|r)|0,Q=n[A+264>>2],i=n[A+268>>2],_=vg(n[r>>2],n[r+4>>2],Q,i),r=vg(f,E,h=MI(h^_,(r=N)^(N=w),32),m=w),H=vg(f=_,N,i=MI(E=r^Q,i^(Q=w),24),_=w),r=vg(r,Q,N=MI(H^h,(u=w)^m,16),x=w),Q=h=w,n[A+520>>2]=r,n[A+524>>2]=Q,i=MI(r^i,Q^_,63),_=w,h=n[A+900>>2],b=n[A+640>>2],s=n[A+644>>2],D=n[A+896>>2],m=n[A+384>>2],f=n[A+388>>2],D=MI(D^(v=vg(n[A+128>>2],n[A+132>>2],m,f)),(E=h)^(h=w),32),f=MI(E=(b=vg(b,s,D,R=w))^m,f^(m=w),24),E=b,b=MI((b=D)^(D=vg(v,s=h,f,h=w)),(s=R)^(R=w),16),h=MI(f^(E=vg(E,m,b,U=w)),(M=w)^h,63),m=w,f=n[A+908>>2],S=n[A+648>>2],Y=n[A+652>>2],l=n[A+904>>2],v=n[A+392>>2],F=n[A+396>>2],l=MI(l^(P=vg(n[A+136>>2],n[A+140>>2],v,F)),(s=f)^(f=w),32),k=F=MI(Y=(S=vg(S,Y,l,s=w))^v,F^(v=w),24),l=MI((F=vg(P,Y=f,F,f=w))^l,(P=w)^s,16),f=MI(k^(S=vg(S,v,l,s=w)),(Y=w)^f,63),v=w,k=E,K=M,E=MI(l^(G=vg(G,y,i,_)),s^(y=w),32),i=MI((l=vg(k,K,E,M=w))^i,(s=w)^_,24),_=vg(_=G,y,i,G=w),y=w,n[A>>2]=_,n[A+4>>2]=y,_=MI(_^E,M^y,16),y=w,n[A+904>>2]=_,n[A+908>>2]=y,_=vg(l,s,_,y),y=w,n[A+640>>2]=_,n[A+644>>2]=y,eA=A,BA=MI(i^_,y^G,63),n[eA+264>>2]=BA,n[A+268>>2]=w,y=h,_=MI((i=vg(H,u,h,m))^t,(h=a)^(a=w),32),t=MI(y^(G=vg(S,Y,_,h=w)),(E=m)^(m=w),24),a=vg(y=i,a,t,i=w),y=w,n[B>>2]=a,n[B+4>>2]=y,a=MI(a^_,h^y,16),B=w,n[A+768>>2]=a,n[A+772>>2]=B,a=vg(G,m,a,B),n[A+648>>2]=a,B=w,n[A+652>>2]=B,eA=A,BA=MI(a^t,B^i,63),n[eA+384>>2]=BA,n[A+388>>2]=w,i=C,h=c,C=vg(D,R,f,v),N=vg(i,h,c=MI(N^C,x^(a=w),32),B=w),C=vg(C,h=a,t=MI(N^f,(i=w)^v,24),a=w),_=w,n[A+128>>2]=C,n[A+132>>2]=_,C=MI(C^c,B^_,16),B=c=w,n[A+776>>2]=C,n[A+780>>2]=B,C=vg(N,i,C,B),n[A+512>>2]=C,c=w,n[A+516>>2]=c,eA=A,BA=MI(t^C,a^c,63),n[eA+392>>2]=BA,n[A+396>>2]=w,B=o,c=r,r=MI(b^(C=vg(F,P,o,d)),U^(o=w),32),t=MI(B^(c=vg(c,Q,r,a=w)),(i=d)^(d=w),24),C=vg(C,B=o,t,o=w),B=w,n[A+136>>2]=C,n[A+140>>2]=B,C=MI(r^C,a^B,16),r=w,n[A+896>>2]=C,n[A+900>>2]=r,C=vg(c,d,C,r),n[A+520>>2]=C,r=w,n[A+524>>2]=r,eA=A,BA=MI(t^C,r^o,63),n[eA+256>>2]=BA,n[A+260>>2]=w,8!=(0|(g=g+1|0)););TI(I,e),hg(I,e+1024|0),p=e+2048|0}function m(A,g){var I,e,B,r,a,t,i,C,o,c,E,s,y,h,f,_,p,u,l,D,v,d,b,k,F,G,m,Y,H,S,U,M,N,P,x,R,J=0,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0,BA=0,rA=0;X=A,c=K=(J=n[g+12>>2])<<1,W=J,J=kI(K,r=K>>31,J,k=J>>31),L=w,K=J,a=J=BA=n[g+16>>2],t=J>>31,p=J=(j=n[g+8>>2])<<1,q=kI(a,t,J,y=J>>31),J=w+L|0,J=(K=K+q|0)>>>0>>0?J+1|0:J,L=K,h=K=(q=n[g+20>>2])<<1,f=K>>31,i=K=(Z=n[g+4>>2])<<1,T=kI(h,f,K,I=K>>31),K=w+J|0,K=(L=L+T|0)>>>0>>0?K+1|0:K,u=J=V=n[g+24>>2],E=J>>31,C=J=(IA=n[g>>2])<<1,T=kI(V,E,J,e=J>>31),J=w+K|0,J=(L=T+L|0)>>>0>>0?J+1|0:J,O=L,K=n[g+32>>2],_=L=Q(K,19),F=K,L=kI(L,s=L>>31,K,v=K>>31),J=w+J|0,J=(K=O+L|0)>>>0>>0?J+1|0:J,O=K,$=n[g+36>>2],o=K=Q($,38),B=K>>31,U=g=(L=n[g+28>>2])<<1,T=kI(K,B,g,G=g>>31),g=w+J|0,AA=K=O+T|0,z=K>>>0>>0?g+1|0:g,g=kI(i,I,a,t),J=w,K=kI(p,y,W,k),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,m=q,T=kI(q,d=q>>31,C,e),K=w+J|0,K=(g=T+g|0)>>>0>>0?K+1|0:K,T=kI(_,s,U,G),J=w+K|0,J=(g=T+g|0)>>>0>>0?J+1|0:J,K=kI(o,B,V,E),J=w+J|0,O=g=K+g|0,eA=g>>>0>>0?J+1|0:J,g=kI(i,I,c,r),K=w,J=(j=kI(T=j,l=T>>31,T,l))+g|0,g=w+K|0,g=J>>>0>>0?g+1|0:g,K=(j=kI(C,e,a,t))+J|0,J=w+g|0,J=K>>>0>>0?J+1|0:J,b=g=Q(L,38),j=L,g=(L=kI(g,D=g>>31,L,Y=L>>31))+K|0,K=w+J|0,K=g>>>0>>0?K+1|0:K,g=(J=g)+(L=kI(_,s,g=V<<1,g>>31))|0,J=w+K|0,J=g>>>0>>0?J+1|0:J,K=kI(o,B,h,f),J=w+J|0,H=g=K+g|0,P=J=g>>>0>>0?J+1|0:J,g=J,(J=H+33554432|0)>>>0<33554432&&(g=g+1|0),M=J,x=g,J=(J=g>>26)+eA|0,eA=g=(K=(67108863&g)<<6|M>>>26)+O|0,K=g>>>0>>0?J+1|0:J,(g=g+16777216|0)>>>0<16777216&&(K=K+1|0),R=g,J=(J=K>>25)+z|0,J=(g=(K=(33554431&K)<<7|g>>>25)+AA|0)>>>0>>0?J+1|0:J,K=g,g=J,(J=K+33554432|0)>>>0<33554432&&(g=g+1|0),O=J,L=g,g=-67108864&J,n[X+24>>2]=K-g,z=A,g=kI(C,e,T,l),J=w,Z=kI(i,I,X=Z,gA=X>>31),K=w+J|0,K=(g=Z+g|0)>>>0>>0?K+1|0:K,J=g,Z=g=Q(V,19),g=J+(V=kI(g,AA=g>>31,u,E))|0,J=w+K|0,J=g>>>0>>0?J+1|0:J,K=(V=kI(h,f,b,D))+g|0,g=w+J|0,g=K>>>0>>0?g+1|0:g,N=J=BA<<1,V=kI(_,s,J,S=J>>31),J=w+g|0,J=(K=V+K|0)>>>0>>0?J+1|0:J,g=K,K=kI(o,B,c,r),J=w+J|0,rA=g=g+K|0,V=g>>>0>>0?J+1|0:J,g=kI(h,f,Z,AA),J=w,X=kI(C,e,X,gA),K=w+J|0,K=(g=X+g|0)>>>0>>0?K+1|0:K,X=kI(a,t,b,D),J=w+K|0,J=(g=X+g|0)>>>0>>0?J+1|0:J,K=(X=kI(_,s,c,r))+g|0,g=w+J|0,g=K>>>0>>0?g+1|0:g,X=kI(o,B,T,l),J=w+g|0,gA=K=X+K|0,X=K>>>0>>0?J+1|0:J,g=kI(g=Q(q,38),g>>31,m,d),J=w,q=g,K=kI(g=IA,K=g>>31,g,K),J=w+J|0,J=(g=q+K|0)>>>0>>0?J+1|0:J,q=kI(Z,AA,N,S),K=w+J|0,K=(g=q+g|0)>>>0>>0?K+1|0:K,q=kI(c,r,b,D),J=w+K|0,J=(g=q+g|0)>>>0>>0?J+1|0:J,K=(q=kI(_,s,p,y))+g|0,g=w+J|0,g=K>>>0>>0?g+1|0:g,q=kI(i,I,o,B),J=w+g|0,Z=K=q+K|0,AA=J=K>>>0>>0?J+1|0:J,(g=K+33554432|0)>>>0<33554432&&(J=J+1|0),IA=g,BA=J,K=(g=J>>26)+X|0,X=J=(q=(67108863&J)<<6|IA>>>26)+gA|0,J=J>>>0>>0?K+1|0:K,(g=X+16777216|0)>>>0<16777216&&(J=J+1|0),gA=g,q=(33554431&J)<<7|g>>>25,J=(J>>25)+V|0,J=(K=q+rA|0)>>>0>>0?J+1|0:J,(K=(g=K)+33554432|0)>>>0<33554432&&(J=J+1|0),V=K,q=J,J=-67108864&K,n[z+8>>2]=g-J,g=kI(p,y,m,d),J=w,K=kI(a,t,c,r),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,K=kI(i,I,u,E),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,K=kI(C,e,j,Y),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,K=(rA=kI(o,B,F,v))+g|0,g=w+J|0,J=L>>26,L=(O=(67108863&L)<<6|O>>>26)+K|0,K=(g=K>>>0>>0?g+1|0:g)+J|0,J=K=L>>>0>>0?K+1|0:K,(K=(g=L)+16777216|0)>>>0<16777216&&(J=J+1|0),O=K,L=J,J=-33554432&K,n[z+28>>2]=g-J,g=kI(C,e,W,k),K=w,J=(T=kI(i,I,T,l))+g|0,g=w+K|0,g=J>>>0>>0?g+1|0:g,T=kI(u,E,b,D),K=w+g|0,K=(J=T+J|0)>>>0>>0?K+1|0:K,g=(T=kI(_,s,h,f))+J|0,J=w+K|0,J=g>>>0>>0?J+1|0:J,K=kI(o,B,a,t),J=w+J|0,J=(J=(g=K+g|0)>>>0>>0?J+1|0:J)+(K=q>>26)|0,K=g=(q=(67108863&q)<<6|V>>>26)+g|0,g=J=g>>>0>>0?J+1|0:J,(J=K+16777216|0)>>>0<16777216&&(g=g+1|0),V=J,q=g,g=-33554432&J,n[z+12>>2]=K-g,T=A,g=kI(u,E,p,y),J=w,K=kI(a,t,a,t),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,K=kI(c,r,h,f),J=w+J|0,J=(g=K+g|0)>>>0>>0?J+1|0:J,K=(W=kI(i,I,U,G))+g|0,g=w+J|0,g=K>>>0>>0?g+1|0:g,J=(W=kI(C,e,F,v))+K|0,K=w+g|0,K=J>>>0>>0?K+1|0:K,g=($=kI(o,B,W=$,z=W>>31))+J|0,J=w+K|0,J=g>>>0<$>>>0?J+1|0:J,K=g,J=(g=L>>25)+J|0,J=(K=K+(L=(33554431&L)<<7|O>>>25)|0)>>>0>>0?J+1|0:J,(K=(g=K)+33554432|0)>>>0<33554432&&(J=J+1|0),$=K,L=J,J=-67108864&K,n[T+32>>2]=g-J,J=q>>25,K=(q=(33554431&q)<<7|V>>>25)+(H-(g=-67108864&M)|0)|0,g=J+(P-((H>>>0>>0)+x|0)|0)|0,J=g=K>>>0>>0?g+1|0:g,(g=K+33554432|0)>>>0<33554432&&(J=J+1|0),q=((67108863&J)<<6|g>>>26)+(eA=eA-(-33554432&R)|0)|0,n[T+20>>2]=q,g&=-67108864,n[A+16>>2]=K-g,q=A,g=kI(c,r,u,E),K=w,J=(T=kI(m,d,N,S))+g|0,g=w+K|0,g=J>>>0>>0?g+1|0:g,K=(T=kI(p,y,j,Y))+J|0,J=w+g|0,J=K>>>0>>0?J+1|0:J,g=(T=kI(i,I,F,v))+K|0,K=w+J|0,K=g>>>0>>0?K+1|0:K,T=kI(C,e,W,z),J=w+K|0,K=g=T+g|0,J=(g=g>>>0>>0?J+1|0:J)+(J=L>>26)|0,J=(K=(L=(67108863&L)<<6|$>>>26)+K|0)>>>0>>0?J+1|0:J,L=K,V=K,g=J,(J=K+16777216|0)>>>0<16777216&&(g=g+1|0),K=-33554432&J,n[q+36>>2]=L-K,T=kI((33554431&g)<<7|J>>>25,g>>25,19,0),J=w+(AA-((Z>>>0<(K=-67108864&IA)>>>0)+BA|0)|0)|0,K=g=T+(Z-K|0)|0,g=g>>>0>>0?J+1|0:J,(J=K+33554432|0)>>>0<33554432&&(g=g+1|0),L=(X-(-33554432&gA)|0)+((67108863&g)<<6|J>>>26)|0,n[A+4>>2]=L,g=A,A=-67108864&J,n[g>>2]=K-A}function Y(A){var g=0,I=0,e=0,B=0,r=0,a=0,t=0,i=0,Q=0;A:if(A|=0){r=(e=A+-8|0)+(A=-8&(I=n[A+-4>>2]))|0;g:if(!(1&I)){if(!(3&I))break A;if((e=e-(I=n[e>>2])|0)>>>0>2])))return n[8963]=A,n[r+4>>2]=-2&I,n[e+4>>2]=1|A,void(n[A+e>>2]=A)}else{if(I>>>0<=255){if(B=n[e+8>>2],I=I>>>3|0,(0|(g=n[e+12>>2]))==(0|B)){i=35844,Q=n[8961]&Og(-2,I),n[i>>2]=Q;break g}n[B+12>>2]=g,n[g+8>>2]=B;break g}if(t=n[e+24>>2],(0|e)==(0|(I=n[e+12>>2])))if((g=n[(B=e+20|0)>>2])||(g=n[(B=e+16|0)>>2])){for(;a=B,(g=n[(B=(I=g)+20|0)>>2])||(B=I+16|0,g=n[I+16>>2]););n[a>>2]=0}else I=0;else g=n[e+8>>2],n[g+12>>2]=I,n[I+8>>2]=g;if(!t)break g;B=n[e+28>>2];I:{if(n[(g=36148+(B<<2)|0)>>2]==(0|e)){if(n[g>>2]=I,I)break I;i=35848,Q=n[8962]&Og(-2,B),n[i>>2]=Q;break g}if(n[t+(n[t+16>>2]==(0|e)?16:20)>>2]=I,!I)break g}if(n[I+24>>2]=t,(g=n[e+16>>2])&&(n[I+16>>2]=g,n[g+24>>2]=I),!(g=n[e+20>>2]))break g;n[I+20>>2]=g,n[g+24>>2]=I}}if(!(r>>>0<=e>>>0)&&1&(I=n[r+4>>2])){g:{if(!(2&I)){if(n[8967]==(0|r)){if(n[8967]=e,A=n[8964]+A|0,n[8964]=A,n[e+4>>2]=1|A,n[8966]!=(0|e))break A;return n[8963]=0,void(n[8966]=0)}if(n[8966]==(0|r))return n[8966]=e,A=n[8963]+A|0,n[8963]=A,n[e+4>>2]=1|A,void(n[A+e>>2]=A);A=(-8&I)+A|0;I:if(I>>>0<=255){if(I=I>>>3|0,(0|(g=n[r+8>>2]))==(0|(B=n[r+12>>2]))){i=35844,Q=n[8961]&Og(-2,I),n[i>>2]=Q;break I}n[g+12>>2]=B,n[B+8>>2]=g}else{if(t=n[r+24>>2],(0|r)==(0|(I=n[r+12>>2])))if((g=n[(B=r+20|0)>>2])||(g=n[(B=r+16|0)>>2])){for(;a=B,(g=n[(B=(I=g)+20|0)>>2])||(B=I+16|0,g=n[I+16>>2]););n[a>>2]=0}else I=0;else g=n[r+8>>2],n[g+12>>2]=I,n[I+8>>2]=g;if(t){B=n[r+28>>2];e:{if(n[(g=36148+(B<<2)|0)>>2]==(0|r)){if(n[g>>2]=I,I)break e;i=35848,Q=n[8962]&Og(-2,B),n[i>>2]=Q;break I}if(n[t+(n[t+16>>2]==(0|r)?16:20)>>2]=I,!I)break I}n[I+24>>2]=t,(g=n[r+16>>2])&&(n[I+16>>2]=g,n[g+24>>2]=I),(g=n[r+20>>2])&&(n[I+20>>2]=g,n[g+24>>2]=I)}}if(n[e+4>>2]=1|A,n[A+e>>2]=A,n[8966]!=(0|e))break g;return void(n[8963]=A)}n[r+4>>2]=-2&I,n[e+4>>2]=1|A,n[A+e>>2]=A}if(A>>>0<=255)return I=35884+((A=A>>>3|0)<<3)|0,(g=n[8961])&(A=1<>2]:(n[8961]=A|g,A=I),n[I+8>>2]=e,n[A+12>>2]=e,n[e+12>>2]=I,void(n[e+8>>2]=A);n[e+16>>2]=0,n[e+20>>2]=0,g=0,(B=A>>>8|0)&&(g=31,A>>>0>16777215||(g=(I=B)<<(B=B+1048320>>>16&8),g=28+((g=((g<<=t=g+520192>>>16&4)<<(a=g+245760>>>16&2)>>>15|0)-(a|B|t)|0)<<1|A>>>g+21&1)|0)),n[(r=e)+28>>2]=g,a=36148+(g<<2)|0;g:{I:{if((B=n[8962])&(I=1<>>1|0)|0),I=n[a>>2];;){if(g=I,(-8&n[I+4>>2])==(0|A))break I;if(I=B>>>29|0,B<<=1,!(I=n[16+(a=g+(4&I)|0)>>2]))break}n[a+16>>2]=e,n[e+24>>2]=g}else n[8962]=I|B,n[a>>2]=e,n[e+24>>2]=a;n[e+12>>2]=e,n[e+8>>2]=e;break g}A=n[g+8>>2],n[A+12>>2]=e,n[g+8>>2]=e,n[e+24>>2]=0,n[e+12>>2]=g,n[e+8>>2]=A}if(A=n[8969]+-1|0,n[8969]=A,!A){for(e=36300;e=(A=n[e>>2])+8|0,A;);n[8969]=-1}}}}function H(A,g){var I=0,e=0,B=0,r=0,a=0,t=0,i=0,C=0;r=A+g|0;A:{g:if(!(1&(I=n[A+4>>2]))){if(!(3&I))break A;if(g=(I=n[A>>2])+g|0,(0|(A=A-I|0))==n[8966]){if(3==(3&(I=n[r+4>>2])))return n[8963]=g,n[r+4>>2]=-2&I,n[A+4>>2]=1|g,void(n[r>>2]=g)}else{if(I>>>0<=255){if(B=I>>>3|0,I=n[A+8>>2],(0|(e=n[A+12>>2]))==(0|I)){i=35844,C=n[8961]&Og(-2,B),n[i>>2]=C;break g}n[I+12>>2]=e,n[e+8>>2]=I;break g}if(t=n[A+24>>2],(0|(I=n[A+12>>2]))==(0|A))if((B=n[(e=A+20|0)>>2])||(B=n[(e=A+16|0)>>2])){for(;a=e,(B=n[(e=(I=B)+20|0)>>2])||(e=I+16|0,B=n[I+16>>2]););n[a>>2]=0}else I=0;else e=n[A+8>>2],n[e+12>>2]=I,n[I+8>>2]=e;if(!t)break g;e=n[A+28>>2];I:{if(n[(B=36148+(e<<2)|0)>>2]==(0|A)){if(n[B>>2]=I,I)break I;i=35848,C=n[8962]&Og(-2,e),n[i>>2]=C;break g}if(n[t+(n[t+16>>2]==(0|A)?16:20)>>2]=I,!I)break g}if(n[I+24>>2]=t,(e=n[A+16>>2])&&(n[I+16>>2]=e,n[e+24>>2]=I),!(e=n[A+20>>2]))break g;n[I+20>>2]=e,n[e+24>>2]=I}}g:{if(!(2&(I=n[r+4>>2]))){if(n[8967]==(0|r)){if(n[8967]=A,g=n[8964]+g|0,n[8964]=g,n[A+4>>2]=1|g,n[8966]!=(0|A))break A;return n[8963]=0,void(n[8966]=0)}if(n[8966]==(0|r))return n[8966]=A,g=n[8963]+g|0,n[8963]=g,n[A+4>>2]=1|g,void(n[A+g>>2]=g);g=(-8&I)+g|0;I:if(I>>>0<=255){if(B=I>>>3|0,I=n[r+8>>2],(0|(e=n[r+12>>2]))==(0|I)){i=35844,C=n[8961]&Og(-2,B),n[i>>2]=C;break I}n[I+12>>2]=e,n[e+8>>2]=I}else{if(t=n[r+24>>2],(0|r)==(0|(I=n[r+12>>2])))if((B=n[(e=r+20|0)>>2])||(B=n[(e=r+16|0)>>2])){for(;a=e,(B=n[(e=(I=B)+20|0)>>2])||(e=I+16|0,B=n[I+16>>2]););n[a>>2]=0}else I=0;else e=n[r+8>>2],n[e+12>>2]=I,n[I+8>>2]=e;if(t){e=n[r+28>>2];e:{if(n[(B=36148+(e<<2)|0)>>2]==(0|r)){if(n[B>>2]=I,I)break e;i=35848,C=n[8962]&Og(-2,e),n[i>>2]=C;break I}if(n[t+(n[t+16>>2]==(0|r)?16:20)>>2]=I,!I)break I}n[I+24>>2]=t,(e=n[r+16>>2])&&(n[I+16>>2]=e,n[e+24>>2]=I),(e=n[r+20>>2])&&(n[I+20>>2]=e,n[e+24>>2]=I)}}if(n[A+4>>2]=1|g,n[A+g>>2]=g,n[8966]!=(0|A))break g;return void(n[8963]=g)}n[r+4>>2]=-2&I,n[A+4>>2]=1|g,n[A+g>>2]=g}if(g>>>0<=255)return g=35884+((I=g>>>3|0)<<3)|0,(e=n[8961])&(I=1<>2]:(n[8961]=I|e,I=g),n[g+8>>2]=A,n[I+12>>2]=A,n[A+12>>2]=g,void(n[A+8>>2]=I);n[A+16>>2]=0,n[A+20>>2]=0,I=0,(B=g>>>8|0)&&(I=31,g>>>0>16777215||(I=28+((I=((r=(B<<=a=B+1048320>>>16&8)<<(I=B+520192>>>16&4))<<(B=r+245760>>>16&2)>>>15|0)-(B|I|a)|0)<<1|g>>>I+21&1)|0)),n[(e=A)+28>>2]=I,B=36148+(I<<2)|0;g:{if((e=n[8962])&(a=1<>>1|0)|0),I=n[B>>2];;){if(B=I,(-8&n[I+4>>2])==(0|g))break g;if(I=e>>>29|0,e<<=1,!(I=n[16+(a=B+(4&I)|0)>>2]))break}n[a+16>>2]=A}else n[8962]=e|a,n[B>>2]=A;return n[A+24>>2]=B,n[A+12>>2]=A,void(n[A+8>>2]=A)}g=n[B+8>>2],n[g+12>>2]=A,n[B+8>>2]=A,n[A+24>>2]=0,n[A+12>>2]=B,n[A+8>>2]=g}}function S(A,g,I,e,B){var r,t,C,Q,o,c,E,s,y,h,f,_,u,l,w,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0,H=0,S=0,U=0,M=0,N=0,P=0,x=0,R=0,J=0,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0;for(p=r=p+-64|0,t=n[A+60>>2],C=n[A+56>>2],K=n[A+52>>2],L=n[A+48>>2],Q=n[A+44>>2],o=n[A+40>>2],c=n[A+36>>2],E=n[A+32>>2],s=n[A+28>>2],y=n[A+24>>2],h=n[A+20>>2],f=n[A+16>>2],_=n[A+12>>2],u=n[A+8>>2],l=n[A+4>>2],w=n[A>>2];;){if(!B&e>>>0>63|B>>>0>0)b=I;else{if(D=0,b=v=iA(r,0,64),e|B)for(;a[D+v|0]=i[g+D|0],!B&e>>>0>(D=D+1|0)>>>0|B>>>0>0;);g=b,X=I}for(T=20,m=w,Y=l,H=u,S=_,D=f,v=h,I=y,U=s,k=E,F=c,M=o,N=t,P=C,d=K,x=L,J=Q;G=D,m=LI((D=D+m|0)^x,16),x=LI(G^(k=m+k|0),12),G=k,k=LI((k=m)^(m=D+x|0),8),D=LI(x^(R=G+k|0),7),G=v,Y=LI((v=v+Y|0)^d,16),d=LI(G^(F=Y+F|0),12),G=F,F=LI((F=Y)^(Y=v+d|0),8),v=LI(d^(q=G+F|0),7),d=I,H=LI((I=I+H|0)^P,16),G=P=LI(d^(M=H+M|0),12),P=LI((d=H)^(H=I+P|0),8),I=LI(G^(M=P+M|0),7),d=U,S=LI((U=U+S|0)^N,16),J=d=LI(d^(N=S+J|0),12),G=N,N=LI((N=S)^(S=U+d|0),8),U=LI(J^(d=G+N|0),7),G=M,M=LI((m=v+m|0)^N,16),v=LI((x=G+M|0)^v,12),N=LI(M^(m=v+m|0),8),v=LI(v^(M=x+N|0),7),k=LI((Y=I+Y|0)^k,16),I=LI((d=k+d|0)^I,12),x=LI(k^(Y=I+Y|0),8),I=LI(I^(J=d+x|0),7),k=LI((H=U+H|0)^F,16),U=LI((F=k+R|0)^U,12),d=LI(k^(H=U+H|0),8),U=LI(U^(k=F+d|0),7),F=LI((S=D+S|0)^P,16),D=LI((R=F+q|0)^D,12),P=LI(F^(S=D+S|0),8),D=LI(D^(F=R+P|0),7),T=T+-2|0;);if(T=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,R=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,V=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,W=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,O=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,j=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,Z=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,z=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,$=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,AA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,gA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,IA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,eA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,G=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,II(b,m+w^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)),II(b+4|0,Y+l^T),II(b+8|0,H+u^R),II(b+12|0,S+_^q),II(b+16|0,D+f^V),II(b+20|0,v+h^W),II(b+24|0,I+y^O),II(b+28|0,U+s^j),II(b+32|0,k+E^Z),II(b+36|0,F+c^z),II(b+40|0,$^M+o),II(b+44|0,AA^J+Q),II(b+48|0,gA^x+L),II(b+52|0,IA^d+K),II(b+56|0,eA^P+C),II(b+60|0,G^N+t),K=((D=L+1|0)>>>0>>0)+K|0,!B&e>>>0<=64|B>>>0<0){if(!(!e|!B&e>>>0>63|B>>>0>0))for(v=0;a[v+X|0]=i[b+v|0],(0|e)!=(0|(v=v+1|0)););n[A+52>>2]=K,n[A+48>>2]=D,p=r- -64|0;break}g=g- -64|0,I=b- -64|0,B=B+-1|0,(e=e+-64|0)>>>0<4294967232&&(B=B+1|0),L=D}}function U(A,g,I,e){var B=0,r=0,a=0,t=0,C=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0,D=0,v=0,d=0,b=0,k=0,F=0,G=0,m=0,Y=0;if(r=n[A+36>>2],t=n[A+32>>2],c=n[A+28>>2],a=n[A+24>>2],o=n[A+20>>2],!e&I>>>0>=16|e>>>0>0)for(b=!i[A+80|0]<<24,y=n[A+4>>2],k=Q(y,5),u=n[A+8>>2],d=Q(u,5),D=n[A+12>>2],v=Q(D,5),B=n[A+16>>2],l=Q(B,5),F=B,h=n[A>>2];B=kI(C=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+a|0,0,D,0),a=w,s=kI(o=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+o|0,0,F,0),a=w+a|0,a=(B=s+B|0)>>>0>>0?a+1|0:a,c=(s=kI(f=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+c|0,0,u,0))+B|0,B=w+a|0,t=kI(_=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+t|0,0,y,0),B=w+(c>>>0>>0?B+1|0:B)|0,B=(a=t+c|0)>>>0>>0?B+1|0:B,r=kI(p=((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8|b)+r|0,0,h,0),B=w+B|0,G=a=r+a|0,c=a>>>0>>0?B+1|0:B,B=kI(C,0,u,0),a=w,t=kI(o,0,D,0),r=w+a|0,r=(B=t+B|0)>>>0>>0?r+1|0:r,t=kI(f,0,y,0),a=w+r|0,a=(B=t+B|0)>>>0>>0?a+1|0:a,r=(t=kI(_,0,h,0))+B|0,B=w+a|0,B=r>>>0>>0?B+1|0:B,a=r,r=kI(p,0,l,0),B=w+B|0,m=a=a+r|0,s=a>>>0>>0?B+1|0:B,B=kI(C,0,y,0),r=w,a=(t=kI(o,0,u,0))+B|0,B=w+r|0,B=a>>>0>>0?B+1|0:B,t=kI(f,0,h,0),r=w+B|0,r=(a=t+a|0)>>>0>>0?r+1|0:r,B=(t=kI(_,0,l,0))+a|0,a=w+r|0,a=B>>>0>>0?a+1|0:a,r=(t=kI(p,0,v,0))+B|0,B=w+a|0,Y=r,t=r>>>0>>0?B+1|0:B,B=kI(C,0,h,0),r=w,a=(E=kI(o,0,y,0))+B|0,B=w+r|0,B=a>>>0>>0?B+1|0:B,r=kI(f,0,l,0),B=w+B|0,B=(a=r+a|0)>>>0>>0?B+1|0:B,E=kI(_,0,v,0),r=w+B|0,r=(a=E+a|0)>>>0>>0?r+1|0:r,B=(E=kI(p,0,d,0))+a|0,a=w+r|0,a=B>>>0>>0?a+1|0:a,E=B,B=kI(C,0,l,0),C=w,r=(o=kI(o,0,h,0))+B|0,B=w+C|0,B=r>>>0>>0?B+1|0:B,C=kI(f,0,v,0),B=w+B|0,B=(r=C+r|0)>>>0>>0?B+1|0:B,C=kI(_,0,d,0),B=w+B|0,B=(r=C+r|0)>>>0>>0?B+1|0:B,C=(o=kI(p,0,k,0))+r|0,r=w+B|0,(r=(B=(67108863&(r=C>>>0>>0?r+1|0:r))<<6|(B=C)>>>26)+E|0)>>>0>>0&&(a=a+1|0),o=r,B=t,(r=(a=(67108863&a)<<6|r>>>26)+Y|0)>>>0>>0&&(B=B+1|0),t=r,r=s,(a=(B=(67108863&B)<<6|t>>>26)+m|0)>>>0>>0&&(r=r+1|0),B=a,a=c,(c=(r=(67108863&r)<<6|B>>>26)+G|0)>>>0>>0&&(a=a+1|0),a=(67108863&o)+((C=Q((67108863&a)<<6|(r=c)>>>26,5)+(67108863&C)|0)>>>26|0)|0,c=67108863&t,t=67108863&B,r&=67108863,o=67108863&C,g=g+16|0,B=e+-1|0,(I=I+-16|0)>>>0<4294967280&&(B=B+1|0),e=B,!B&I>>>0>15|B>>>0>0;);n[A+20>>2]=o,n[A+36>>2]=r,n[A+32>>2]=t,n[A+28>>2]=c,n[A+24>>2]=a}function M(A,g,I){var e,B,r,t,n=0,C=0,Q=0,o=0,c=0;return p=r=p-160|0,Wg(g,I,32,0),a[0|g]=248&i[0|g],a[g+31|0]=63&i[g+31|0]|64,CA(r,g),wg(A,r),C=i[(B=I)+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,n=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,Q=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,o=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,c=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,I=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,e=g,t=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[e+24|0]=g,a[e+25|0]=g>>>8,a[e+26|0]=g>>>16,a[e+27|0]=g>>>24,a[e+28|0]=t,a[e+29|0]=t>>>8,a[e+30|0]=t>>>16,a[e+31|0]=t>>>24,a[e+16|0]=Q,a[e+17|0]=Q>>>8,a[e+18|0]=Q>>>16,a[e+19|0]=Q>>>24,a[e+20|0]=o,a[e+21|0]=o>>>8,a[e+22|0]=o>>>16,a[e+23|0]=o>>>24,a[e+8|0]=C,a[e+9|0]=C>>>8,a[e+10|0]=C>>>16,a[e+11|0]=C>>>24,a[e+12|0]=n,a[e+13|0]=n>>>8,a[e+14|0]=n>>>16,a[e+15|0]=n>>>24,a[0|e]=c,a[e+1|0]=c>>>8,a[e+2|0]=c>>>16,a[e+3|0]=c>>>24,a[e+4|0]=I,a[e+5|0]=I>>>8,a[e+6|0]=I>>>16,a[e+7|0]=I>>>24,Q=i[(n=A)+8|0]|i[n+9|0]<<8|i[n+10|0]<<16|i[n+11|0]<<24,o=i[n+12|0]|i[n+13|0]<<8|i[n+14|0]<<16|i[n+15|0]<<24,c=i[n+16|0]|i[n+17|0]<<8|i[n+18|0]<<16|i[n+19|0]<<24,I=i[n+20|0]|i[n+21|0]<<8|i[n+22|0]<<16|i[n+23|0]<<24,g=i[0|n]|i[n+1|0]<<8|i[n+2|0]<<16|i[n+3|0]<<24,A=i[n+4|0]|i[n+5|0]<<8|i[n+6|0]<<16|i[n+7|0]<<24,C=i[n+28|0]|i[n+29|0]<<8|i[n+30|0]<<16|i[n+31|0]<<24,n=i[n+24|0]|i[n+25|0]<<8|i[n+26|0]<<16|i[n+27|0]<<24,a[e+56|0]=n,a[e+57|0]=n>>>8,a[e+58|0]=n>>>16,a[e+59|0]=n>>>24,a[e+60|0]=C,a[e+61|0]=C>>>8,a[e+62|0]=C>>>16,a[e+63|0]=C>>>24,a[e+48|0]=c,a[e+49|0]=c>>>8,a[e+50|0]=c>>>16,a[e+51|0]=c>>>24,a[e+52|0]=I,a[e+53|0]=I>>>8,a[e+54|0]=I>>>16,a[e+55|0]=I>>>24,a[e+40|0]=Q,a[e+41|0]=Q>>>8,a[e+42|0]=Q>>>16,a[e+43|0]=Q>>>24,a[e+44|0]=o,a[e+45|0]=o>>>8,a[e+46|0]=o>>>16,a[e+47|0]=o>>>24,a[e+32|0]=g,a[e+33|0]=g>>>8,a[e+34|0]=g>>>16,a[e+35|0]=g>>>24,a[e+36|0]=A,a[e+37|0]=A>>>8,a[e+38|0]=A>>>16,a[e+39|0]=A>>>24,p=r+160|0,0}function N(A,g){var I,e,B,r,a,t,i,C,Q,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0,D=0,v=0,d=0,b=0;l=c=n[(o=g)+4>>2],p=c>>31,D=c=n[o+8>>2],e=c>>31,_=c=n[o+12>>2],u=c>>31,v=c=n[o+16>>2],B=c>>31,f=c=n[o+20>>2],h=c>>31,d=c=n[o+24>>2],r=c>>31,a=c=n[o>>2],t=c>>31,s=A,y=c=kI(o=n[o+36>>2],o>>31,121666,0),o=w,(c=c+16777216|0)>>>0<16777216&&(o=o+1|0),I=c,c=o,i=y-(-33554432&I)|0,E=kI(o=n[g+32>>2],o>>31,121666,0),C=w,y=kI(g=n[g+28>>2],g>>31,121666,0),o=w,b=E,(g=y+16777216|0)>>>0<16777216&&(o=o+1|0),Q=g,E=g,g=(g=o>>25)+C|0,g=(o=b+(E=(33554431&o)<<7|E>>>25)|0)>>>0>>0?g+1|0:g,E=o,b=s,o=g,(g=E+33554432|0)>>>0<33554432&&(o=o+1|0),s=((67108863&o)<<6|g>>>26)+i|0,n[b+36>>2]=s,g&=-67108864,n[A+32>>2]=E-g,s=y-(-33554432&Q)|0,o=kI(d,r,121666,0),d=w,y=kI(f,h,121666,0),g=w,E=o,(o=y+16777216|0)>>>0<16777216&&(g=g+1|0),f=o,h=o,o=(o=g>>25)+d|0,o=(g=E+(h=(33554431&g)<<7|h>>>25)|0)>>>0>>0?o+1|0:o,(E=g+33554432|0)>>>0<33554432&&(o=o+1|0),s=s+((67108863&o)<<6|E>>>26)|0,n[A+28>>2]=s,o=-67108864&E,n[A+24>>2]=g-o,s=A,f=y-(-33554432&f)|0,g=kI(v,B,121666,0),v=w,y=kI(_,u,121666,0),o=w,E=g,(g=y+16777216|0)>>>0<16777216&&(o=o+1|0),_=g,u=(33554431&o)<<7|g>>>25,o=(o>>25)+v|0,h=s,g=o=(E=E+u|0)>>>0>>0?o+1|0:o,(o=E+33554432|0)>>>0<33554432&&(g=g+1|0),s=((67108863&g)<<6|o>>>26)+f|0,n[h+20>>2]=s,g=-67108864&o,n[A+16>>2]=E-g,s=A,_=y-(-33554432&_)|0,o=kI(D,e,121666,0),D=w,y=kI(l,p,121666,0),g=w,E=o,(o=y+16777216|0)>>>0<16777216&&(g=g+1|0),l=o,p=(33554431&g)<<7|o>>>25,g=(g>>25)+D|0,f=s,o=g=(E=E+p|0)>>>0

>>0?g+1|0:g,(g=E+33554432|0)>>>0<33554432&&(o=o+1|0),s=((67108863&o)<<6|g>>>26)+_|0,n[f+12>>2]=s,g&=-67108864,n[A+8>>2]=E-g,g=kI((33554431&c)<<7|I>>>25,c>>25,19,0),o=w,s=y-(-33554432&l)|0,c=kI(a,t,121666,0),o=w+o|0,o=(g=c+g|0)>>>0>>0?o+1|0:o,(c=g+33554432|0)>>>0<33554432&&(o=o+1|0),y=s+((67108863&o)<<6|c>>>26)|0,n[A+4>>2]=y,o=A,A=-67108864&c,n[o>>2]=g-A}function P(A,g,I){var e,B=0,r=0,t=0;p=e=p+-64|0;A:{if(!(!I|I>>>0>=65)){if(B=-1,!(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24|i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)){if(r=A,(B=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)>>>0>=129){if(EA(A,128),D(A,t=A+96|0),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,a[A+352|0]=B,a[A+353|0]=B>>>8,a[A+354|0]=B>>>16,a[A+355|0]=B>>>24,B>>>0>=129)break A;W(t,A+224|0,B),B=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24}EA(r,B),i[A+356|0]&&(a[A+88|0]=-1,a[A+89|0]=16777215,a[A+90|0]=65535,a[A+91|0]=255,a[A+92|0]=-1,a[A+93|0]=16777215,a[A+94|0]=65535,a[A+95|0]=255),a[A+80|0]=-1,a[A+81|0]=16777215,a[A+82|0]=65535,a[A+83|0]=255,a[A+84|0]=-1,a[A+85|0]=16777215,a[A+86|0]=65535,a[A+87|0]=255,iA((B=A+96|0)+(r=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,0,256-r|0),D(A,B),Fg(e,i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24),Fg(8|e,i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24),Fg(e+16|0,i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24),Fg(e+24|0,i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24),Fg(e+32|0,i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24),Fg(e+40|0,i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24),Fg(e+48|0,i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24),Fg(e+56|0,i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24),W(g,e,I),Gg(A,64),Gg(B,256),B=0}return p=e- -64|0,B}oI(),c()}E(1854,1886,306,1931),c()}function x(A,g){var I,e,B,r,a,t,C,Q,o,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0,D=0,v=0;I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,l=qg(g+4|0),c=w,p=qg(g+7|0),s=w,u=qg(g+10|0),E=w,e=qg(g+13|0),_=w,y=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,B=qg(g+20|0),D=w,r=qg(g+23|0),a=w,t=qg(g+26|0),C=w,Q=qg(g+29|0),g=E<<3|u>>>29,v=E=u<<3,(E=E+16777216|0)>>>0<16777216&&(g=g+1|0),u=E,E=g,s=g=s<<5|p>>>27,o=f=A,f=h=p<<5,c=g=c<<6|(p=l)>>>26,(g=16777216+(p<<=6)|0)>>>0<16777216&&(c=c+1|0),l=g,h=g,g=(g=c>>25)+s|0,g=(c=f+(h=(33554431&c)<<7|h>>>25)|0)>>>0>>0?g+1|0:g,(s=c+33554432|0)>>>0<33554432&&(g=g+1|0),f=(v-(-33554432&u)|0)+((67108863&g)<<6|s>>>26)|0,n[o+12>>2]=f,g=-67108864&s,n[A+8>>2]=c-g,g=0,(y=(s=y)+16777216|0)>>>0<16777216&&(g=1),f=y,y=g,v=s-(-33554432&f)|0,g=_<<2|(s=e)>>>30,_=s<<2,s=g,g=E>>25,E=(h=_)+(_=(33554431&E)<<7|u>>>25)|0,g=g+s|0,h=c=A,c=g=E>>>0<_>>>0?g+1|0:g,(g=E+33554432|0)>>>0<33554432&&(c=c+1|0),s=((67108863&c)<<6|g>>>26)+v|0,n[h+20>>2]=s,g&=-67108864,n[A+16>>2]=E-g,h=(c=B)<<7,g=(g=D<<7|c>>>25)+(c=y>>25)|0,g=(y=h+(s=(33554431&y)<<7|f>>>25)|0)>>>0>>0?g+1|0:g,y=c=y,(c=c+33554432|0)>>>0<33554432&&(g=g+1|0),s=c,c=g,g=-67108864&s,n[(E=A)+24>>2]=y-g,g=a<<5|(E=r)>>>27,D=E<<=5,(E=E+16777216|0)>>>0<16777216&&(g=g+1|0),_=E,E=g,c=(D-(-33554432&_)|0)+((67108863&c)<<6|s>>>26)|0,n[(y=A)+28>>2]=c,s=(c=t)<<4,c=g=C<<4|c>>>28,g=(g=E>>25)+c|0,g=(E=(f=s)+(s=(33554431&E)<<7|_>>>25)|0)>>>0>>0?g+1|0:g,E=c=E,(c=c+33554432|0)>>>0<33554432&&(g=g+1|0),s=c,c=g,g=-67108864&s,n[y+32>>2]=E-g,g=0,E=y=(y=Q)<<2&33554428,(y=y+16777216|0)>>>0<16777216&&(g=g+1|0),E=(E-(33554432&y)|0)+((67108863&c)<<6|s>>>26)|0,n[A+36>>2]=E,y=kI((33554431&g)<<7|y>>>25,g>>>25|0,19,0),g=w,g=(c=y+I|0)>>>0>>0?g+1|0:g,(E=c+33554432|0)>>>0<33554432&&(g=g+1|0),y=(p-(-33554432&l)|0)+((67108863&g)<<6|E>>>26)|0,n[A+4>>2]=y,g=A,A=-67108864&E,n[g>>2]=c-A}function R(A,g,I,e){var B,r=0,t=0;p=B=p-16|0,r=-31;A:{g:{I:{e:switch(e+-1|0){case 1:if(g>>>0<13)break g;e=i[35660]|i[35661]<<8|i[35662]<<16|i[35663]<<24,r=i[35656]|i[35657]<<8|i[35658]<<16|i[35659]<<24,a[0|A]=r,a[A+1|0]=r>>>8,a[A+2|0]=r>>>16,a[A+3|0]=r>>>24,a[A+4|0]=e,a[A+5|0]=e>>>8,a[A+6|0]=e>>>16,a[A+7|0]=e>>>24,e=i[35665]|i[35666]<<8|i[35667]<<16|i[35668]<<24,r=i[35661]|i[35662]<<8|i[35663]<<16|i[35664]<<24,a[A+5|0]=r,a[A+6|0]=r>>>8,a[A+7|0]=r>>>16,a[A+8|0]=r>>>24,a[A+9|0]=e,a[A+10|0]=e>>>8,a[A+11|0]=e>>>16,a[A+12|0]=e>>>24,t=-12,e=12;break I;case 0:break e;default:break A}if(g>>>0<12)break g;e=i[35673]|i[35674]<<8|i[35675]<<16|i[35676]<<24,r=i[35669]|i[35670]<<8|i[35671]<<16|i[35672]<<24,a[0|A]=r,a[A+1|0]=r>>>8,a[A+2|0]=r>>>16,a[A+3|0]=r>>>24,a[A+4|0]=e,a[A+5|0]=e>>>8,a[A+6|0]=e>>>16,a[A+7|0]=e>>>24,e=i[35677]|i[35678]<<8|i[35679]<<16|i[35680]<<24,a[A+8|0]=e,a[A+9|0]=e>>>8,a[A+10|0]=e>>>16,a[A+11|0]=e>>>24,t=-11,e=11}if(r=yA(I))break A;if($A(B+5|0,19),!((r=g+t|0)>>>0<=(g=MA(B+5|0))>>>0)&&(A=W(A+e|0,B+5|0,g+1|0),!((e=r-g|0)>>>0<4)&&(a[0|(A=A+g|0)]=4025636,a[A+1|0]=15725,a[A+2|0]=61,a[A+3|0]=0,$A(B+5|0,n[I+44>>2]),!((e=e+-3|0)>>>0<=(g=MA(B+5|0))>>>0)&&(A=W(A+3|0,B+5|0,g+1|0),!((e=e-g|0)>>>0<4)&&(a[0|(A=A+g|0)]=4027436,a[A+1|0]=15732,a[A+2|0]=61,a[A+3|0]=0,$A(B+5|0,n[I+40>>2]),!((e=e+-3|0)>>>0<=(g=MA(B+5|0))>>>0)&&(A=W(A+3|0,B+5|0,g+1|0),!((e=e-g|0)>>>0<4)&&(a[0|(A=A+g|0)]=4026412,a[A+1|0]=15728,a[A+2|0]=61,a[A+3|0]=0,$A(B+5|0,n[I+48>>2]),!((e=e+-3|0)>>>0<=(g=MA(B+5|0))>>>0)&&(A=W(A+3|0,B+5|0,g+1|0),!((e=e-g|0)>>>0<2)&&(a[0|(A=A+g|0)]=36,a[A+1|0]=0,$(A=A+1|0,g=e+-1|0,n[I+16>>2],n[I+20>>2],3)))))))))){if(r=-31,(e=(e=g)-(g=MA(A))|0)>>>0<2)break A;return a[0|(A=A+g|0)]=36,a[A+1|0]=0,A=$(A+1|0,e+-1|0,n[I>>2],n[I+4>>2],3),p=B+16|0,A?0:-31}}r=-31}return p=B+16|0,r}function J(A,g,I,e){var B,r=0;B=r=p,p=r=r-576&-64,n[r+188>>2]=0,II(r+188|0,g);A:if(g>>>0<=64){if((0|ug(r+192|0,0,0,g))<0)break A;if((0|SI(r+192|0,r+188|0,4,0))<0)break A;if((0|SI(r+192|0,I,e,0))<0)break A;zg(r+192|0,A,g)}else if(!((0|ug(r+192|0,0,0,64))<0||(0|SI(r+192|0,r+188|0,4,0))<0||(0|SI(r+192|0,I,e,0))<0||(0|zg(r+192|0,r+112|0,64))<0)){if(I=n[r+116>>2],e=n[r+112>>2],a[0|A]=e,a[A+1|0]=e>>>8,a[A+2|0]=e>>>16,a[A+3|0]=e>>>24,a[A+4|0]=I,a[A+5|0]=I>>>8,a[A+6|0]=I>>>16,a[A+7|0]=I>>>24,I=n[r+124>>2],e=n[r+120>>2],a[A+8|0]=e,a[A+9|0]=e>>>8,a[A+10|0]=e>>>16,a[A+11|0]=e>>>24,a[A+12|0]=I,a[A+13|0]=I>>>8,a[A+14|0]=I>>>16,a[A+15|0]=I>>>24,I=n[r+140>>2],e=n[r+136>>2],a[A+24|0]=e,a[A+25|0]=e>>>8,a[A+26|0]=e>>>16,a[A+27|0]=e>>>24,a[A+28|0]=I,a[A+29|0]=I>>>8,a[A+30|0]=I>>>16,a[A+31|0]=I>>>24,I=n[r+132>>2],e=n[r+128>>2],a[A+16|0]=e,a[A+17|0]=e>>>8,a[A+18|0]=e>>>16,a[A+19|0]=e>>>24,a[A+20|0]=I,a[A+21|0]=I>>>8,a[A+22|0]=I>>>16,a[A+23|0]=I>>>24,A=A+32|0,(g=g+-32|0)>>>0>=65)for(;;){if(W(r+48|0,r+112|0,64),(0|Jg(r+112|0,64,r+48|0,64,0,0,0))<0)break A;if(I=n[r+116>>2],e=n[r+112>>2],a[0|A]=e,a[A+1|0]=e>>>8,a[A+2|0]=e>>>16,a[A+3|0]=e>>>24,a[A+4|0]=I,a[A+5|0]=I>>>8,a[A+6|0]=I>>>16,a[A+7|0]=I>>>24,I=n[r+124>>2],e=n[r+120>>2],a[A+8|0]=e,a[A+9|0]=e>>>8,a[A+10|0]=e>>>16,a[A+11|0]=e>>>24,a[A+12|0]=I,a[A+13|0]=I>>>8,a[A+14|0]=I>>>16,a[A+15|0]=I>>>24,I=n[r+140>>2],e=n[r+136>>2],a[A+24|0]=e,a[A+25|0]=e>>>8,a[A+26|0]=e>>>16,a[A+27|0]=e>>>24,a[A+28|0]=I,a[A+29|0]=I>>>8,a[A+30|0]=I>>>16,a[A+31|0]=I>>>24,I=n[r+132>>2],e=n[r+128>>2],a[A+16|0]=e,a[A+17|0]=e>>>8,a[A+18|0]=e>>>16,a[A+19|0]=e>>>24,a[A+20|0]=I,a[A+21|0]=I>>>8,a[A+22|0]=I>>>16,a[A+23|0]=I>>>24,A=A+32|0,!((g=g+-32|0)>>>0>64))break}W(r+48|0,r+112|0,64),(0|Jg(r+112|0,g,r+48|0,64,0,0,0))<0||W(A,r+112|0,g)}Gg(r+192|0,384),p=B}function K(A,g,I){var e=0,B=0,r=0,a=0,t=0,n=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0;for(r=2036477234,o=857760878,c=1634760805,a=1797285236,Q=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,e=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,B=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,n=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,s=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,y=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,f=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,_=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,E=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,t=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,g=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24;C=Q,c=LI((h=I)^(I=Q+c|0),16),C=s=LI(C^(Q=c+s|0),12),s=LI((h=c)^(c=I+s|0),8),Q=LI(C^(p=s+Q|0),7),C=e,o=LI((I=e+o|0)^E,16),C=E=LI(C^(e=o+y|0),12),E=LI((h=o)^(o=I+E|0),8),I=LI(C^(y=E+e|0),7),C=B,e=LI((r=r+B|0)^t,16),C=t=LI(C^(B=e+f|0),12),h=LI(e^(t=r+t|0),8),r=LI(C^(e=h+B|0),7),a=LI((B=g)^(g=a+n|0),16),n=LI((B=a+_|0)^n,12),g=LI(a^(u=g+n|0),8),a=LI(n^(B=g+B|0),7),C=e,e=LI((e=g)^(g=I+c|0),16),I=LI((n=C+e|0)^I,12),g=LI(e^(c=g+I|0),8),e=LI(I^(f=n+g|0),7),C=B,B=LI((I=r+o|0)^s,16),r=LI((n=C+B|0)^r,12),I=LI(B^(o=I+r|0),8),B=LI(r^(_=n+I|0),7),n=LI((r=a+t|0)^E,16),a=LI((t=n+p|0)^a,12),E=LI(n^(r=r+a|0),8),n=LI(a^(s=t+E|0),7),t=LI((a=Q+u|0)^h,16),Q=LI((y=t+y|0)^Q,12),t=LI(t^(a=a+Q|0),8),Q=LI(Q^(y=y+t|0),7),10!=(0|(l=l+1|0)););II(A,c),II(A+4|0,o),II(A+8|0,r),II(A+12|0,a),II(A+16|0,I),II(A+20|0,E),II(A+24|0,t),II(A+28|0,g)}function L(A){var g,I=0,e=0;p=g=p-48|0,I=i[28+(A|=0)|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,n[g+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,n[g+28>>2]=I,I=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,n[g+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,n[g+20>>2]=I,I=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,n[g>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,n[g+4>>2]=I,I=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,n[g+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,n[g+12>>2]=I,I=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,n[g+32>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,n[g+36>>2]=I,r[n[8956]](g,g,40,0,A+32|0,0,A),I=n[g+28>>2],e=n[g+24>>2],a[A+24|0]=e,a[A+25|0]=e>>>8,a[A+26|0]=e>>>16,a[A+27|0]=e>>>24,a[A+28|0]=I,a[A+29|0]=I>>>8,a[A+30|0]=I>>>16,a[A+31|0]=I>>>24,I=n[g+20>>2],e=n[g+16>>2],a[A+16|0]=e,a[A+17|0]=e>>>8,a[A+18|0]=e>>>16,a[A+19|0]=e>>>24,a[A+20|0]=I,a[A+21|0]=I>>>8,a[A+22|0]=I>>>16,a[A+23|0]=I>>>24,I=n[g+12>>2],e=n[g+8>>2],a[A+8|0]=e,a[A+9|0]=e>>>8,a[A+10|0]=e>>>16,a[A+11|0]=e>>>24,a[A+12|0]=I,a[A+13|0]=I>>>8,a[A+14|0]=I>>>16,a[A+15|0]=I>>>24,I=n[g+4>>2],e=n[g>>2],a[0|A]=e,a[A+1|0]=e>>>8,a[A+2|0]=e>>>16,a[A+3|0]=e>>>24,a[A+4|0]=I,a[A+5|0]=I>>>8,a[A+6|0]=I>>>16,a[A+7|0]=I>>>24,I=n[g+36>>2],e=n[g+32>>2],a[A+36|0]=e,a[A+37|0]=e>>>8,a[A+38|0]=e>>>16,a[A+39|0]=e>>>24,a[A+40|0]=I,a[A+41|0]=I>>>8,a[A+42|0]=I>>>16,a[A+43|0]=I>>>24,aI(A),p=g+48|0}function T(A,g,I){var e=0,B=0,r=0,a=0,t=0,n=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0,l=0,w=0,D=0;for(B=2036477234,r=857760878,a=1634760805,t=1797285236,f=20,Q=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,h=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,_=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,s=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,o=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,c=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,E=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,C=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,e=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,g=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24;p=e,e=LI(a+n|0,7)^s,y=p^LI(e+a|0,9),u=LI(e+y|0,13)^n,s=LI(y+u|0,18),g=LI(r+Q|0,7)^g,c=LI(g+r|0,9)^c,Q=LI(g+c|0,13)^Q,w=LI(c+Q|0,18),E=LI(I+B|0,7)^E,n=LI(E+B|0,9)^h,l=LI(n+E|0,13)^I,D=LI(n+l|0,18),I=LI(t+o|0,7)^_,C=LI(I+t|0,9)^C,o=LI(I+C|0,13)^o,p=LI(C+o|0,18),Q=LI((a^=s)+I|0,7)^Q,h=LI(Q+a|0,9)^n,_=LI(Q+h|0,13)^I,a=LI(h+_|0,18)^a,I=LI((r^=w)+e|0,7)^l,C=LI(I+r|0,9)^C,s=LI(I+C|0,13)^e,r=LI(C+s|0,18)^r,o=LI((B^=D)+g|0,7)^o,e=LI(o+B|0,9)^y,g=LI(e+o|0,13)^g,B=LI(g+e|0,18)^B,n=LI((t^=p)+E|0,7)^u,c=LI(n+t|0,9)^c,E=LI(n+c|0,13)^E,t=LI(c+E|0,18)^t,y=f>>>0>2,f=f+-2|0,y;);return II(A,a),II(A+4|0,r),II(A+8|0,B),II(A+12|0,t),II(A+16|0,I),II(A+20|0,C),II(A+24|0,e),II(A+28|0,g),0}function q(A,g,I,e,B,r,t){var C,Q,o,c,E,s,y,h=0;return p=C=p-560|0,lI(C+352|0,t),Wg(C+288|0,r,32,0),V(C+352|0,C+320|0,32,0),V(C+352|0,I,e,B),jg(C+352|0,C+224|0),Q=i[(h=r)+32|0]|i[h+33|0]<<8|i[h+34|0]<<16|i[h+35|0]<<24,o=i[h+36|0]|i[h+37|0]<<8|i[h+38|0]<<16|i[h+39|0]<<24,c=i[h+40|0]|i[h+41|0]<<8|i[h+42|0]<<16|i[h+43|0]<<24,E=i[h+44|0]|i[h+45|0]<<8|i[h+46|0]<<16|i[h+47|0]<<24,s=i[h+48|0]|i[h+49|0]<<8|i[h+50|0]<<16|i[h+51|0]<<24,r=i[h+52|0]|i[h+53|0]<<8|i[h+54|0]<<16|i[h+55|0]<<24,y=i[h+60|0]|i[h+61|0]<<8|i[h+62|0]<<16|i[h+63|0]<<24,h=i[h+56|0]|i[h+57|0]<<8|i[h+58|0]<<16|i[h+59|0]<<24,a[A+56|0]=h,a[A+57|0]=h>>>8,a[A+58|0]=h>>>16,a[A+59|0]=h>>>24,a[A+60|0]=y,a[A+61|0]=y>>>8,a[A+62|0]=y>>>16,a[A+63|0]=y>>>24,a[A+48|0]=s,a[A+49|0]=s>>>8,a[A+50|0]=s>>>16,a[A+51|0]=s>>>24,a[A+52|0]=r,a[A+53|0]=r>>>8,a[A+54|0]=r>>>16,a[A+55|0]=r>>>24,a[A+40|0]=c,a[A+41|0]=c>>>8,a[A+42|0]=c>>>16,a[A+43|0]=c>>>24,a[A+44|0]=E,a[A+45|0]=E>>>8,a[A+46|0]=E>>>16,a[A+47|0]=E>>>24,a[0|(r=A+32|0)]=Q,a[r+1|0]=Q>>>8,a[r+2|0]=Q>>>16,a[r+3|0]=Q>>>24,a[r+4|0]=o,a[r+5|0]=o>>>8,a[r+6|0]=o>>>16,a[r+7|0]=o>>>24,d(C+224|0),CA(C,C+224|0),wg(A,C),lI(C+352|0,t),V(C+352|0,A,64,0),V(C+352|0,I,e,B),jg(C+352|0,C+160|0),d(C+160|0),a[C+288|0]=248&i[C+288|0],a[C+319|0]=63&i[C+319|0]|64,function(A,g,I,e){var B,r,t,n,C,Q,o,c,E,s,y,h,f,_,p,u,l,D,v,d,b,k,F,G,m,Y,H,S,U,M,N,P,x,R,J,K,L,T,q,X,V,W,O,j,Z,z,$,AA,gA,IA=0,eA=0,BA=0,rA=0,aA=0,tA=0,nA=0,iA=0,CA=0,QA=0,oA=0,cA=0,EA=0,sA=0,yA=0,hA=0,fA=0,_A=0,pA=0,uA=0,lA=0,wA=0,DA=0,vA=0,dA=0,bA=0,kA=0,FA=0,GA=0,mA=0,YA=0,HA=0,SA=0,UA=0,MA=0,NA=0,PA=0,xA=0,RA=0,JA=0,KA=0,LA=0,TA=0,qA=0,XA=0,VA=0,WA=0,OA=0,jA=0,ZA=0,zA=0;RA=qg(g),DA=i[g+2|0]|i[g+3|0]<<8|i[g+4|0]<<16|i[g+5|0]<<24,WA=qg(g+5|0),kA=w,hA=i[g+7|0]|i[g+8|0]<<8|i[g+9|0]<<16|i[g+10|0]<<24,fA=i[g+10|0]|i[g+11|0]<<8|i[g+12|0]<<16|i[g+13|0]<<24,mA=qg(g+13|0),yA=w,oA=i[g+15|0]|i[g+16|0]<<8|i[g+17|0]<<16|i[g+18|0]<<24,TA=qg(g+18|0),EA=w,FA=qg(g+21|0),nA=i[g+23|0]|i[g+24|0]<<8|i[g+25|0]<<16|i[g+26|0]<<24,CA=qg(g+26|0),rA=w,IA=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,MA=qg(I),vA=i[(g=I)+2|0]|i[g+3|0]<<8|i[g+4|0]<<16|i[g+5|0]<<24,qA=qg(g+5|0),QA=w,_A=i[g+7|0]|i[g+8|0]<<8|i[g+9|0]<<16|i[g+10|0]<<24,sA=i[g+10|0]|i[g+11|0]<<8|i[g+12|0]<<16|i[g+13|0]<<24,XA=qg(g+13|0),cA=w,aA=i[g+15|0]|i[g+16|0]<<8|i[g+17|0]<<16|i[g+18|0]<<24,VA=qg(g+18|0),BA=w,JA=qg(g+21|0),eA=i[g+23|0]|i[g+24|0]<<8|i[g+25|0]<<16|i[g+26|0]<<24,tA=qg(g+26|0),I=w,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,j=qg(e),Z=i[e+2|0]|i[e+3|0]<<8|i[e+4|0]<<16|i[e+5|0]<<24,z=qg(e+5|0),$=w,NA=i[e+7|0]|i[e+8|0]<<8|i[e+9|0]<<16|i[e+10|0]<<24,KA=i[e+10|0]|i[e+11|0]<<8|i[e+12|0]<<16|i[e+13|0]<<24,LA=qg(e+13|0),SA=w,YA=i[e+15|0]|i[e+16|0]<<8|i[e+17|0]<<16|i[e+18|0]<<24,OA=qg(e+18|0),HA=w,dA=qg(e+21|0),AA=A,g=kI(B=g>>>7|0,0,r=2097151&((3&rA)<<30|CA>>>2),0),iA=w,rA=g,g=kI(t=2097151&((3&I)<<30|tA>>>2),0,n=IA>>>7|0,0),IA=w+iA|0,IA=(I=rA+g|0)>>>0>>0?IA+1|0:IA,tA=I,g=kI(r,0,t,0),rA=w,eA=(I=kI(C=eA>>>5&2097151,0,n,0))+g|0,g=w+rA|0,g=eA>>>0>>0?g+1|0:g,I=eA,eA=kI(B,0,Q=nA>>>5&2097151,0),g=w+g|0,iA=rA=I+eA|0,wA=g=rA>>>0>>0?g+1|0:g,pA=(g=rA)- -1048576|0,uA=eA=wA-((g>>>0<4293918720)+-1|0)|0,g=(I=eA>>21)+IA|0,CA=g=(rA=(eA=(2097151&eA)<<11|pA>>>21)+tA|0)>>>0>>0?g+1|0:g,bA=(g=eA=rA)- -1048576|0,tA=nA=CA-((g>>>0<4293918720)+-1|0)|0,rA=(g=rA=kI(B,0,n,0))-(nA=-2097152&(PA=g- -1048576|0))|0,g=((UA=w)-((g>>>0>>0)+(IA=GA=UA-((g>>>0<4293918720)+-1|0)|0)|0)|0)+(I=tA>>21)|0,P=g=(Y=rA+((2097151&tA)<<11|bA>>>21)|0)>>>0>>0?g+1|0:g,nA=kI(Y,g,-683901,-1),rA=w,x=I=IA>>21,g=kI(S=(2097151&IA)<<11|PA>>>21,I,136657,0),I=w+rA|0,GA=IA=g+nA|0,nA=IA>>>0>>0?I+1|0:I,g=kI(o=2097151&((1&cA)<<31|XA>>>1),0,r,0),IA=w,rA=(I=kI(c=sA>>>4&2097151,0,n,0))+g|0,g=w+IA|0,I=(IA=rA)>>>0>>0?g+1|0:g,rA=(g=kI(E=aA>>>6&2097151,0,Q,0))+IA|0,IA=w+I|0,IA=rA>>>0>>0?IA+1|0:IA,I=rA,m=g=0,rA=(g=kI(s=2097151&JA,g,y=2097151&((7&EA)<<29|TA>>>3),0))+I|0,I=w+IA|0,I=rA>>>0>>0?I+1|0:I,IA=kI(h=2097151&((7&BA)<<29|VA>>>3),0,f=2097151&FA,0),g=w+I|0,g=(rA=IA+rA|0)>>>0>>0?g+1|0:g,IA=rA,I=g,g=kI(C,0,_=oA>>>6&2097151,0),I=w+I|0,I=(IA=g+IA|0)>>>0>>0?I+1|0:I,rA=(g=IA)+(IA=kI(t,0,p=2097151&((1&yA)<<31|mA>>>1),0))|0,g=w+I|0,g=rA>>>0>>0?g+1|0:g,IA=kI(B,0,u=fA>>>4&2097151,0),g=w+g|0,EA=rA=rA+IA|0,rA=rA>>>0>>0?g+1|0:g,g=kI(r,0,c,0),I=w,IA=g,g=kI(l=_A>>>7&2097151,0,n,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,BA=(g=IA)+(IA=kI(Q,0,o,0))|0,g=w+I|0,g=BA>>>0>>0?g+1|0:g,I=kI(E,0,f,0),g=w+g|0,g=(IA=I+BA|0)>>>0>>0?g+1|0:g,BA=(I=kI(s,m,_,0))+IA|0,IA=w+g|0,IA=BA>>>0>>0?IA+1|0:IA,g=kI(y,0,h,0),I=w+IA|0,I=(BA=g+BA|0)>>>0>>0?I+1|0:I,g=kI(C,0,p,0),I=w+I|0,I=(IA=g+BA|0)>>>0>>0?I+1|0:I,BA=(g=IA)+(IA=kI(t,0,u,0))|0,g=w+I|0,g=BA>>>0>>0?g+1|0:g,IA=kI(B,0,D=hA>>>7&2097151,0),g=w+g|0,sA=BA=BA+IA|0,aA=g=BA>>>0>>0?g+1|0:g,cA=(g=BA)- -1048576|0,BA=IA=aA-((g>>>0<4293918720)+-1|0)|0,g=(I=IA>>21)+rA|0,rA=g=(_A=(IA=(2097151&IA)<<11|cA>>>21)+EA|0)>>>0>>0?g+1|0:g,I=g+nA|0,(nA=(g=IA=_A)+GA|0)>>>0>>0&&(I=I+1|0),g=nA,nA=rA-((IA>>>0<4293918720)+-1|0)|0,oA=g-(IA=-2097152&(yA=IA- -1048576|0))|0,EA=I-((g>>>0>>0)+(rA=nA)|0)|0,U=eA-(I=-2097152&bA)|0,R=g=CA-((eA>>>0>>0)+tA|0)|0,IA=kI(S,x,-997805,-1),I=w+aA|0,I=(eA=IA+sA|0)>>>0>>0?I+1|0:I,IA=kI(Y,P,136657,0),I=w+I|0,I=(eA=IA+eA|0)>>>0>>0?I+1|0:I,IA=kI(U,g,-683901,-1),g=w+I|0,g=(eA=IA+eA|0)>>>0>>0?g+1|0:g,nA=(IA=eA)-(I=-2097152&cA)|0,aA=g-((IA>>>0>>0)+BA|0)|0,g=kI(r,0,l,0),I=w,IA=g,g=kI(v=2097151&((3&QA)<<30|qA>>>2),0,n,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,eA=(g=IA)+(IA=kI(Q,0,c,0))|0,g=w+I|0,g=eA>>>0>>0?g+1|0:g,IA=kI(o,0,f,0),I=w+g|0,I=(eA=IA+eA|0)>>>0>>0?I+1|0:I,IA=kI(E,0,y,0),g=w+I|0,g=(eA=IA+eA|0)>>>0>>0?g+1|0:g,I=kI(s,m,p,0),IA=w+g|0,IA=(eA=I+eA|0)>>>0>>0?IA+1|0:IA,g=kI(h,0,_,0),I=w+IA|0,I=(eA=g+eA|0)>>>0>>0?I+1|0:I,IA=kI(C,0,u,0),g=w+I|0,g=(eA=IA+eA|0)>>>0>>0?g+1|0:g,IA=kI(t,0,D,0),I=w+g|0,I=(eA=IA+eA|0)>>>0>>0?I+1|0:I,IA=kI(B,0,d=2097151&((3&kA)<<30|WA>>>2),0),g=w+I|0,BA=eA=IA+eA|0,eA=eA>>>0>>0?g+1|0:g,g=kI(r,0,v,0),I=w,tA=(IA=g)+(g=kI(b=vA>>>5&2097151,0,n,0))|0,IA=w+I|0,IA=tA>>>0>>0?IA+1|0:IA,g=kI(Q,0,l,0),I=w+IA|0,I=(tA=g+tA|0)>>>0>>0?I+1|0:I,IA=kI(c,0,f,0),g=w+I|0,g=(tA=IA+tA|0)>>>0>>0?g+1|0:g,IA=kI(o,0,y,0),I=w+g|0,I=(tA=IA+tA|0)>>>0>>0?I+1|0:I,IA=kI(E,0,_,0),g=w+I|0,g=(tA=IA+tA|0)>>>0>>0?g+1|0:g,I=kI(s,m,u,0),IA=w+g|0,IA=(tA=I+tA|0)>>>0>>0?IA+1|0:IA,g=kI(h,0,p,0),I=w+IA|0,I=(tA=g+tA|0)>>>0>>0?I+1|0:I,IA=kI(C,0,D,0),g=w+I|0,g=(tA=IA+tA|0)>>>0>>0?g+1|0:g,IA=kI(t,0,d,0),I=w+g|0,I=(tA=IA+tA|0)>>>0>>0?I+1|0:I,IA=kI(B,0,k=DA>>>5&2097151,0),g=w+I|0,_A=tA=IA+tA|0,qA=g=tA>>>0>>0?g+1|0:g,gA=(g=tA)- -1048576|0,XA=IA=qA-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+eA|0,sA=BA=(IA=(2097151&IA)<<11|gA>>>21)+BA|0,VA=I=BA>>>0>>0?I+1|0:I,WA=(g=BA)- -1048576|0,JA=IA=I-((g>>>0<4293918720)+-1|0)|0,g=(g=IA>>21)+aA|0,cA=IA=(I=(2097151&IA)<<11|WA>>>21)+nA|0,UA=g=IA>>>0>>0?g+1|0:g,mA=(g=IA)- -1048576|0,GA=IA=UA-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+EA|0,nA=eA=(IA=(2097151&IA)<<11|mA>>>21)+oA|0,bA=I=eA>>>0>>0?I+1|0:I,DA=IA=I-(((g=eA)>>>0<4293918720)+-1|0)|0,CA=(2097151&IA)<<11|(FA=g- -1048576|0)>>>21,BA=IA>>21,I=kI(r,0,E,0),g=w,IA=I,I=kI(n,0,o,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,eA=(I=kI(s,m,f,0))+IA|0,IA=w+g|0,IA=eA>>>0>>0?IA+1|0:IA,g=kI(Q,0,h,0),I=w+IA|0,I=(eA=g+eA|0)>>>0>>0?I+1|0:I,g=kI(C,0,y,0),I=w+I|0,I=(IA=g+eA|0)>>>0>>0?I+1|0:I,eA=(g=IA)+(IA=kI(t,0,_,0))|0,g=w+I|0,g=eA>>>0>>0?g+1|0:g,I=kI(B,0,p,0),g=w+g|0,g=(IA=I+eA|0)>>>0>>0?g+1|0:g,eA=IA,aA=IA+(I=kI(S,x,-683901,-1))|0,IA=w+g|0,IA=aA>>>0>>0?IA+1|0:IA,I=aA,aA=g,vA=(g=eA)- -1048576|0,aA=IA-((eA=aA=aA-((g>>>0<4293918720)+-1|0)|0)+((g=I)>>>0<(tA=-2097152&vA)>>>0)|0)|0,g=I=g-tA|0,I=rA>>21,rA=g+(IA=(2097151&rA)<<11|yA>>>21)|0,g=I+aA|0,g=rA>>>0>>0?g+1|0:g,IA=(I=rA)-(aA=-2097152&(QA=I- -1048576|0))|0,I=(g-((I>>>0>>0)+(rA=tA=g-((I>>>0<4293918720)+-1|0)|0)|0)|0)+BA|0,J=CA=IA+CA|0,K=I=CA>>>0>>0?I+1|0:I,tA=kI(CA,I,-683901,-1),aA=w,I=kI(Q,0,s,m),g=w,IA=I,I=kI(n,0,E,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,BA=(I=kI(r,0,h,0))+IA|0,IA=w+g|0,IA=BA>>>0>>0?IA+1|0:IA,g=kI(C,0,f,0),I=w+IA|0,I=(BA=g+BA|0)>>>0>>0?I+1|0:I,IA=kI(t,0,y,0),g=w+I|0,g=(BA=IA+BA|0)>>>0>>0?g+1|0:g,IA=kI(B,0,_,0),I=w+g|0,g=(g=I=(BA=IA+BA|0)>>>0>>0?I+1|0:I)+(I=eA>>21)|0,hA=BA=(g=(eA=BA+(IA=(2097151&eA)<<11|vA>>>21)|0)>>>0>>0?g+1|0:g)-(((I=eA)>>>0<4293918720)+-1|0)|0,IA=I-(eA=-2097152&(xA=I- -1048576|0))|0,I=(rA>>21)+(I=g-((I>>>0>>0)+BA|0)|0)|0,L=eA=(g=(2097151&rA)<<11|QA>>>21)+IA|0,T=I=eA>>>0>>0?I+1|0:I,I=kI(eA,I,136657,0),g=w+aA|0,TA=IA=I+tA|0,fA=IA>>>0>>0?g+1|0:g,g=kI(f,0,b,0),I=w,IA=g,g=kI(F=2097151&MA,0,Q,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,eA=(g=IA)+(IA=kI(y,0,v,0))|0,g=w+I|0,g=eA>>>0>>0?g+1|0:g,IA=kI(_,0,l,0),I=w+g|0,I=(eA=IA+eA|0)>>>0>>0?I+1|0:I,IA=kI(c,0,p,0),g=w+I|0,g=(eA=IA+eA|0)>>>0>>0?g+1|0:g,I=kI(o,0,u,0),IA=w+g|0,IA=(eA=I+eA|0)>>>0>>0?IA+1|0:IA,g=kI(E,0,D,0),I=w+IA|0,I=(eA=g+eA|0)>>>0>>0?I+1|0:I,IA=kI(s,m,k,0),g=w+I|0,g=(eA=IA+eA|0)>>>0>>0?g+1|0:g,IA=kI(h,0,d,0),I=w+g|0,I=(eA=IA+eA|0)>>>0>>0?I+1|0:I,IA=kI(C,0,G=2097151&RA,0),g=w+I|0,IA=(I=eA=IA+eA|0)>>>0>>0?g+1|0:g,(g=eA+(I=(i[e+23|0]|i[e+24|0]<<8|i[e+25|0]<<16|i[e+26|0]<<24)>>>5&2097151)|0)>>>0>>0&&(IA=IA+1|0),rA=g,eA=IA,I=kI(y,0,b,0),g=w,IA=I,I=kI(f,0,F,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,BA=(I=IA)+(IA=kI(_,0,v,0))|0,I=w+g|0,I=BA>>>0>>0?I+1|0:I,IA=kI(p,0,l,0),g=w+I|0,g=(BA=IA+BA|0)>>>0>>0?g+1|0:g,IA=kI(c,0,u,0),I=w+g|0,I=(BA=IA+BA|0)>>>0>>0?I+1|0:I,g=kI(o,0,D,0),IA=w+I|0,IA=(BA=g+BA|0)>>>0>>0?IA+1|0:IA,I=kI(E,0,d,0),g=w+IA|0,g=(BA=I+BA|0)>>>0>>0?g+1|0:g,IA=kI(s,m,G,0),I=w+g|0,I=(BA=IA+BA|0)>>>0>>0?I+1|0:I,IA=kI(h,0,k,0),g=w+I|0,g=(BA=IA+BA|0)>>>0>>0?g+1|0:g,aA=BA=(IA=2097151&dA)+BA|0,yA=I=BA>>>0>>0?g+1|0:g,kA=(g=BA)- -1048576|0,oA=IA=I-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+eA|0,QA=I=(BA=rA=(IA=(2097151&IA)<<11|kA>>>21)+rA|0)>>>0>>0?I+1|0:I,MA=iA-(g=-2097152&pA)|0,dA=wA-((iA>>>0>>0)+uA|0)|0,g=kI(r,0,C,0),I=w,IA=g,g=kI(n,0,s,m),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,eA=(g=IA)+(IA=kI(t,0,Q,0))|0,g=w+I|0,g=eA>>>0>>0?g+1|0:g,IA=kI(B,0,f,0),I=w+g|0,iA=eA=IA+eA|0,eA=eA>>>0>>0?I+1|0:I,g=kI(n,0,h,0),I=w,rA=(IA=g)+(g=kI(r,0,s,m))|0,IA=w+I|0,IA=rA>>>0>>0?IA+1|0:IA,I=kI(Q,0,C,0),g=w+IA|0,g=(rA=I+rA|0)>>>0>>0?g+1|0:g,IA=kI(t,0,f,0),I=w+g|0,I=(rA=IA+rA|0)>>>0>>0?I+1|0:I,IA=kI(B,0,y,0),g=w+I|0,tA=IA=(CA=g=(rA=IA+rA|0)>>>0>>0?g+1|0:g)-(((g=rA)>>>0<4293918720)+-1|0)|0,g=(2097151&IA)<<11|(wA=g- -1048576|0)>>>21,IA=(IA>>21)+eA|0,iA=IA=(eA=iA=g+iA|0)>>>0>>0?IA+1|0:IA,uA=(g=eA)- -1048576|0,g=(I=(IA=pA=IA-((g>>>0<4293918720)+-1|0)|0)>>21)+dA|0,q=g=(H=MA=(pA=(2097151&IA)<<11|uA>>>21)+MA|0)>>>0>>0?g+1|0:g,dA=kI(H,g,470296,0),pA=w,M=eA-(I=-2097152&uA)|0,PA=g=iA-((eA>>>0>>0)+IA|0)|0,IA=kI(U,R,666643,0),I=w+pA|0,I=(eA=IA+dA|0)>>>0>>0?I+1|0:I,IA=kI(M,g,654183,0),g=w+I|0,iA=eA=IA+eA|0,IA=eA>>>0>>0?g+1|0:g,g=rA-(I=-2097152&wA)|0,I=(hA>>21)+(rA=CA-((rA>>>0>>0)+tA|0)|0)|0,X=tA=(eA=(2097151&hA)<<11|xA>>>21)+g|0,RA=I=tA>>>0>>0?I+1|0:I,jA=BA- -1048576|0,eA=g=QA-((BA>>>0<4293918720)+-1|0)|0,I=kI(tA,I,-997805,-1),IA=w+IA|0,I=(IA=(rA=I+iA|0)>>>0>>0?IA+1|0:IA)+QA|0,dA=(BA=rA+BA|0)-(IA=-2097152&jA)|0,pA=(I=BA>>>0>>0?I+1|0:I)-((BA>>>0>>0)+g|0)|0,g=kI(M,PA,470296,0),I=w,IA=g,g=kI(H,q,666643,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,g=kI(tA,RA,654183,0),I=w+I|0,g=(I=(IA=g+IA|0)>>>0>>0?I+1|0:I)+yA|0,QA=(IA=IA+aA|0)-(I=-2097152&kA)|0,aA=(g=IA>>>0>>0?g+1|0:g)-((IA>>>0>>0)+oA|0)|0,I=kI(_,0,b,0),g=w,IA=I,I=kI(y,0,F,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,rA=(I=IA)+(IA=kI(p,0,v,0))|0,I=w+g|0,I=rA>>>0>>0?I+1|0:I,IA=kI(u,0,l,0),g=w+I|0,g=(rA=IA+rA|0)>>>0>>0?g+1|0:g,IA=kI(c,0,D,0),I=w+g|0,I=(rA=IA+rA|0)>>>0>>0?I+1|0:I,g=kI(o,0,d,0),IA=w+I|0,IA=(rA=g+rA|0)>>>0>>0?IA+1|0:IA,I=kI(E,0,k,0),g=w+IA|0,g=(rA=I+rA|0)>>>0>>0?g+1|0:g,IA=kI(h,0,G,0),I=w+g|0,g=I=(rA=IA+rA|0)>>>0>>0?I+1|0:I,(I=rA+(IA=2097151&((7&HA)<<29|OA>>>3))|0)>>>0>>0&&(g=g+1|0),BA=I,rA=g,g=kI(p,0,b,0),I=w,IA=g,g=kI(_,0,F,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,g=kI(u,0,v,0),I=w+I|0,I=(IA=g+IA|0)>>>0>>0?I+1|0:I,iA=(g=kI(D,0,l,0))+IA|0,IA=w+I|0,IA=iA>>>0>>0?IA+1|0:IA,I=kI(c,0,d,0),g=w+IA|0,g=(iA=I+iA|0)>>>0>>0?g+1|0:g,I=kI(o,0,k,0),g=w+g|0,g=(IA=I+iA|0)>>>0>>0?g+1|0:g,iA=(I=IA)+(IA=kI(E,0,G,0))|0,I=w+g|0,I=iA>>>0>>0?I+1|0:I,(g=(IA=YA>>>6&2097151)+iA|0)>>>0>>0&&(I=I+1|0),wA=g,CA=I,uA=g- -1048576|0,EA=IA=I-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+rA|0,tA=I=(BA=(IA=(2097151&IA)<<11|uA>>>21)+BA|0)>>>0>>0?I+1|0:I,hA=(g=BA)- -1048576|0,iA=IA=I-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+aA|0,yA=rA=(IA=(2097151&IA)<<11|hA>>>21)+QA|0,aA=I=rA>>>0>>0?I+1|0:I,oA=(g=rA)- -1048576|0,vA=IA=I-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+pA|0,I=(rA=(IA=(2097151&IA)<<11|oA>>>21)+dA|0)>>>0>>0?I+1|0:I,IA=rA,rA=I,g=I+fA|0,(QA=(I=IA)+TA|0)>>>0>>0&&(g=g+1|0),I=QA,QA=rA-((IA>>>0<4293918720)+-1|0)|0,zA=I-(IA=-2097152&(ZA=IA- -1048576|0))|0,lA=g-((I>>>0>>0)+(rA=QA)|0)|0,I=kI(L,T,-997805,-1),g=w+aA|0,xA=IA=I+yA|0,QA=IA>>>0>>0?g+1|0:g,I=kI(X,RA,470296,0),g=w,IA=I,I=kI(M,PA,666643,0),g=w+g|0,I=(g=(IA=IA+I|0)>>>0>>0?g+1|0:g)+tA|0,hA=(IA=IA+BA|0)-(g=-2097152&hA)|0,fA=(I=IA>>>0>>0?I+1|0:I)-((IA>>>0>>0)+iA|0)|0,g=kI(X,RA,666643,0),IA=w+CA|0,yA=I=g+wA|0,aA=I>>>0>>0?IA+1|0:IA,I=kI(u,0,b,0),g=w,IA=I,I=kI(p,0,F,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,BA=(I=IA)+(IA=kI(D,0,v,0))|0,I=w+g|0,I=BA>>>0>>0?I+1|0:I,IA=kI(d,0,l,0),g=w+I|0,g=(BA=IA+BA|0)>>>0>>0?g+1|0:g,IA=kI(c,0,k,0),I=w+g|0,I=(BA=IA+BA|0)>>>0>>0?I+1|0:I,g=kI(o,0,G,0),IA=w+I|0,g=(I=BA=g+BA|0)>>>0>>0?IA+1|0:IA,(I=(IA=2097151&((1&SA)<<31|LA>>>1))+I|0)>>>0>>0&&(g=g+1|0),iA=I,BA=g,g=kI(D,0,b,0),I=w,IA=g,g=kI(u,0,F,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,tA=(g=kI(d,0,v,0))+IA|0,IA=w+I|0,IA=tA>>>0>>0?IA+1|0:IA,I=kI(k,0,l,0),g=w+IA|0,g=(tA=I+tA|0)>>>0>>0?g+1|0:g,IA=kI(c,0,G,0),I=w+g|0,g=I=(tA=IA+tA|0)>>>0>>0?I+1|0:I,(I=tA+(IA=KA>>>4&2097151)|0)>>>0>>0&&(g=g+1|0),CA=I,kA=g,OA=(g=I)- -1048576|0,KA=IA=kA-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+BA|0,SA=I=(tA=iA=(IA=(2097151&IA)<<11|OA>>>21)+iA|0)>>>0>>0?I+1|0:I,TA=(g=tA)- -1048576|0,YA=IA=I-((g>>>0<4293918720)+-1|0)|0,g=(g=IA>>21)+aA|0,g=(IA=(I=(2097151&IA)<<11|TA>>>21)+yA|0)>>>0>>0?g+1|0:g,I=IA,HA=(IA=g)-((I>>>0<(g=-2097152&uA)>>>0)+EA|0)|0,MA=(g=iA=I-g|0)- -1048576|0,wA=I=HA-((g>>>0<4293918720)+-1|0)|0,g=(IA=I>>21)+fA|0,dA=BA=(I=(2097151&I)<<11|MA>>>21)+hA|0,uA=g=BA>>>0>>0?g+1|0:g,pA=(g=BA)- -1048576|0,hA=I=uA-((g>>>0<4293918720)+-1|0)|0,N=nA-(g=-2097152&FA)|0,LA=BA=bA-((nA>>>0>>0)+DA|0)|0,g=(2097151&I)<<11|pA>>>21,I=(I>>21)+QA|0,I=(aA=g+xA|0)>>>0>>0?I+1|0:I,nA=(IA=kI(J,K,136657,0))+(aA-(g=-2097152&oA)|0)|0,g=w+(I-((aA>>>0>>0)+vA|0)|0)|0,g=nA>>>0>>0?g+1|0:g,IA=kI(N,BA,-683901,-1),I=w+g|0,nA=BA=IA+nA|0,fA=I=BA>>>0>>0?I+1|0:I,FA=(g=BA)- -1048576|0,yA=I=I-((g>>>0<4293918720)+-1|0)|0,g=(IA=I>>21)+lA|0,aA=BA=(I=(2097151&I)<<11|FA>>>21)+zA|0,EA=I=(oA=g=BA>>>0>>0?g+1|0:g)-(((g=BA)>>>0<4293918720)+-1|0)|0,xA=(2097151&I)<<11|(bA=g- -1048576|0)>>>21,vA=I>>21,g=kI(Q,0,b,0),I=w,IA=g,g=kI(r,0,F,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,g=kI(f,0,v,0),I=w+I|0,I=(IA=g+IA|0)>>>0>>0?I+1|0:I,BA=(g=IA)+(IA=kI(y,0,l,0))|0,g=w+I|0,g=BA>>>0>>0?g+1|0:g,I=kI(c,0,_,0),g=w+g|0,g=(IA=I+BA|0)>>>0>>0?g+1|0:g,BA=(I=kI(o,0,p,0))+IA|0,IA=w+g|0,IA=BA>>>0>>0?IA+1|0:IA,g=kI(E,0,u,0),I=w+IA|0,I=(BA=g+BA|0)>>>0>>0?I+1|0:I,g=kI(s,m,d,0),I=w+I|0,I=(IA=g+BA|0)>>>0>>0?I+1|0:I,BA=(g=IA)+(IA=kI(h,0,D,0))|0,g=w+I|0,g=BA>>>0>>0?g+1|0:g,I=kI(C,0,k,0),g=w+g|0,g=(IA=I+BA|0)>>>0>>0?g+1|0:g,BA=(I=kI(t,0,G,0))+IA|0,IA=w+g|0,I=(g=BA)>>>0>>0?IA+1|0:IA,g=qg(e+26|0),(g=BA+(IA=2097151&((3&(IA=w))<<30|g>>>2))|0)>>>0>>0&&(I=I+1|0),DA=g,BA=I,g=kI(U,R,470296,0),I=w,IA=g,g=kI(Y,P,666643,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,lA=(g=IA)+(IA=kI(H,q,654183,0))|0,g=w+I|0,g=lA>>>0>>0?g+1|0:g,I=kI(M,PA,-997805,-1),IA=w+g|0,IA=(lA=I+lA|0)>>>0>>0?IA+1|0:IA,I=kI(X,RA,136657,0),g=w+IA|0,I=(g=(lA=I+lA|0)>>>0>>0?g+1|0:g)+BA|0,V=(g=DA)- -1048576|0,BA=QA=BA-((g>>>0<4293918720)+-1|0)|0,I=(I=(lA=(IA=lA)+DA|0)>>>0>>0?I+1|0:I)+(IA=eA>>21)|0,I=(eA=lA+(g=(2097151&eA)<<11|jA>>>21)|0)>>>0>>0?I+1|0:I,g=(DA=eA)-(eA=-2097152&V)|0,IA=kI(L,T,-683901,-1),I=(eA=I-((DA>>>0>>0)+BA|0)|0)+w|0,W=g- -1048576|0,QA=eA-((g>>>0<4293918720)+-1|0)|0,I=(I=(lA=g+IA|0)>>>0>>0?I+1|0:I)+(IA=rA>>21)|0,I=(QA=(I=(rA=lA+(g=(2097151&rA)<<11|ZA>>>21)|0)>>>0>>0?I+1|0:I)-((rA>>>0<(IA=-2097152&W)>>>0)+(eA=QA)|0)|0)+vA|0,(rA=(g=rA-IA|0)+xA|0)>>>0>>0&&(I=I+1|0),O=g- -1048576|0,QA=QA-((g>>>0<4293918720)+-1|0)|0,jA=(g=IA=rA)-(IA=-2097152&O)|0,ZA=I-((g>>>0>>0)+(rA=QA)|0)|0,zA=aA-(g=-2097152&bA)|0,lA=oA-((aA>>>0>>0)+EA|0)|0,xA=nA-(g=-2097152&FA)|0,FA=fA-((nA>>>0>>0)+yA|0)|0,I=kI(L,T,654183,0),g=w+uA|0,g=(IA=I+dA|0)>>>0>>0?g+1|0:g,nA=(I=kI(J,K,-997805,-1))+((aA=IA)-(IA=-2097152&pA)|0)|0,IA=w+(g-((aA>>>0>>0)+hA|0)|0)|0,g=kI(N,LA,136657,0),I=w+(nA>>>0>>0?IA+1|0:IA)|0,bA=aA=g+nA|0,nA=aA>>>0>>0?I+1|0:I,DA=cA-(g=-2097152&mA)|0,fA=UA-((cA>>>0>>0)+GA|0)|0,I=kI(Y,P,-997805,-1),g=w,IA=I,I=kI(S,x,654183,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,aA=(I=kI(U,R,136657,0))+IA|0,IA=w+g|0,IA=aA>>>0>>0?IA+1|0:IA,g=kI(H,q,-683901,-1),I=w+IA|0,I=(I=(aA=g+aA|0)>>>0>>0?I+1|0:I)+VA|0,I=(g=aA+sA|0)>>>0>>0?I+1|0:I,yA=(IA=g)-(g=-2097152&WA)|0,oA=I-((IA>>>0>>0)+JA|0)|0,I=kI(Y,P,654183,0),g=w,IA=I,I=kI(S,x,470296,0),g=w+g|0,g=(IA=IA+I|0)>>>0>>0?g+1|0:g,aA=(I=IA)+(IA=kI(U,R,-997805,-1))|0,I=w+g|0,I=qA+(aA>>>0>>0?I+1|0:I)|0,I=(g=aA+_A|0)>>>0<_A>>>0?I+1|0:I,aA=(IA=g)+(g=kI(H,q,136657,0))|0,IA=w+I|0,IA=aA>>>0>>0?IA+1|0:IA,I=kI(M,PA,-683901,-1),g=w+IA|0,g=(aA=I+aA|0)>>>0>>0?g+1|0:g,sA=(IA=aA)-(I=-2097152&gA)|0,cA=g-((IA>>>0>>0)+XA|0)|0,g=kI(r,0,b,0),I=w,IA=g,g=kI(n,0,F,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,aA=(g=kI(Q,0,v,0))+IA|0,IA=w+I|0,IA=aA>>>0>>0?IA+1|0:IA,I=kI(f,0,l,0),g=w+IA|0,g=(aA=I+aA|0)>>>0>>0?g+1|0:g,IA=kI(c,0,y,0),I=w+g|0,I=(aA=IA+aA|0)>>>0>>0?I+1|0:I,IA=kI(o,0,_,0),g=w+I|0,g=(aA=IA+aA|0)>>>0>>0?g+1|0:g,IA=kI(E,0,p,0),I=w+g|0,I=(aA=IA+aA|0)>>>0>>0?I+1|0:I,g=kI(s,m,D,0),IA=w+I|0,IA=(aA=g+aA|0)>>>0>>0?IA+1|0:IA,I=kI(h,0,u,0),g=w+IA|0,g=(aA=I+aA|0)>>>0>>0?g+1|0:g,IA=kI(C,0,d,0),I=w+g|0,I=(aA=IA+aA|0)>>>0>>0?I+1|0:I,IA=kI(B,0,G,0),g=w+I|0,g=(aA=IA+aA|0)>>>0>>0?g+1|0:g,IA=kI(t,0,k,0),I=w+g|0,IA=(g=aA=IA+aA|0)>>>0>>0?I+1|0:I,(g=(I=(i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24)>>>7|0)+g|0)>>>0>>0&&(IA=IA+1|0),I=BA>>21,BA=(e=(2097151&BA)<<11|V>>>21)+g|0,g=I+IA|0,aA=BA,vA=e=(EA=g=BA>>>0>>0?g+1|0:g)-(((g=BA)>>>0<4293918720)+-1|0)|0,I=(I=e>>21)+cA|0,BA=e=(g=(2097151&e)<<11|(uA=g- -1048576|0)>>>21)+sA|0,QA=I=e>>>0>>0?I+1|0:I,hA=(g=e)- -1048576|0,_A=e=I-((g>>>0<4293918720)+-1|0)|0,g=(I=e>>21)+oA|0,g=(IA=(e=(2097151&e)<<11|hA>>>21)+yA|0)>>>0>>0?g+1|0:g,e=IA,cA=IA=(sA=g)-(((g=IA)>>>0<4293918720)+-1|0)|0,I=(I=IA>>21)+fA|0,mA=IA=(g=(2097151&IA)<<11|(oA=g- -1048576|0)>>>21)+DA|0,GA=I=IA>>>0>>0?I+1|0:I,g=kI(IA,I,-683901,-1),IA=w+nA|0,yA=I=g+bA|0,nA=I>>>0>>0?IA+1|0:IA,dA=e-(g=-2097152&oA)|0,bA=cA=sA-((e>>>0>>0)+cA|0)|0,I=kI(L,T,470296,0)+iA|0,g=HA+w|0,g=I>>>0>>0?g+1|0:g,iA=(e=kI(J,K,654183,0))+((IA=I)-(I=-2097152&MA)|0)|0,I=w+(g-((IA>>>0>>0)+wA|0)|0)|0,I=iA>>>0>>0?I+1|0:I,g=kI(N,LA,-997805,-1),IA=w+I|0,IA=(e=g+iA|0)>>>0>>0?IA+1|0:IA,I=kI(mA,GA,136657,0),g=w+IA|0,g=(e=I+e|0)>>>0>>0?g+1|0:g,I=kI(dA,cA,-683901,-1),g=w+g|0,sA=g=(IA=e=I+e|0)>>>0>>0?g+1|0:g,fA=(g=IA)- -1048576|0,cA=e=sA-((g>>>0<4293918720)+-1|0)|0,g=(I=e>>21)+nA|0,g=(iA=(e=(2097151&e)<<11|fA>>>21)+yA|0)>>>0>>0?g+1|0:g,e=iA,iA=g,oA=(g=e)- -1048576|0,g=(I=(nA=yA=iA-((g>>>0<4293918720)+-1|0)|0)>>21)+FA|0,FA=wA=(yA=(2097151&nA)<<11|oA>>>21)+xA|0,yA=wA>>>0>>0?g+1|0:g,qA=e-(g=-2097152&oA)|0,XA=iA-((e>>>0>>0)+nA|0)|0,JA=IA-(g=-2097152&fA)|0,UA=sA-((IA>>>0>>0)+cA|0)|0,e=(g=kI(L,T,666643,0))+(tA-(I=-2097152&TA)|0)|0,I=w+(SA-((tA>>>0>>0)+YA|0)|0)|0,I=e>>>0>>0?I+1|0:I,IA=(g=e)+(e=kI(J,K,470296,0))|0,g=w+I|0,g=IA>>>0>>0?g+1|0:g,I=kI(N,LA,654183,0),g=w+g|0,cA=e=I+IA|0,e=e>>>0>>0?g+1|0:g,tA=BA-(g=-2097152&hA)|0,nA=QA-((BA>>>0>>0)+_A|0)|0,g=kI(Y,P,470296,0),I=w,IA=g,g=kI(S,x,666643,0),I=w+I|0,I=(IA=IA+g|0)>>>0>>0?I+1|0:I,BA=(g=IA)+(IA=kI(U,R,654183,0))|0,g=w+I|0,g=BA>>>0>>0?g+1|0:g,I=kI(H,q,-997805,-1),g=w+g|0,g=(IA=I+BA|0)>>>0>>0?g+1|0:g,BA=(I=IA)+(IA=kI(M,PA,136657,0))|0,I=w+g|0,I=BA>>>0>>0?I+1|0:I,g=kI(X,RA,-683901,-1),IA=w+I|0,I=(IA=(BA=g+BA|0)>>>0>>0?IA+1|0:IA)+EA|0,I=(g=BA+aA|0)>>>0>>0?I+1|0:I,BA=g,g=g-(IA=-2097152&uA)|0,BA=I-((BA>>>0>>0)+vA|0)|0,I=eA>>21,eA=(IA=(2097151&eA)<<11|W>>>21)+g|0,g=I+BA|0,iA=eA,_A=IA=(QA=g=eA>>>0>>0?g+1|0:g)-(((g=eA)>>>0<4293918720)+-1|0)|0,I=(I=IA>>21)+nA|0,pA=IA=(g=(2097151&IA)<<11|(HA=g- -1048576|0)>>>21)+tA|0,DA=I=IA>>>0>>0?I+1|0:I,I=kI(IA,I,-683901,-1),g=w+e|0,g=(IA=I+cA|0)>>>0>>0?g+1|0:g,I=kI(mA,GA,-997805,-1),g=w+g|0,g=(e=I+IA|0)>>>0>>0?g+1|0:g,I=kI(dA,bA,136657,0),IA=w+g|0,tA=e=I+e|0,BA=e>>>0>>0?IA+1|0:IA,g=kI(d,0,b,0),I=w,e=g,g=kI(D,0,F,0),I=w+I|0,I=(e=e+g|0)>>>0>>0?I+1|0:I,g=kI(k,0,v,0),I=w+I|0,I=(e=g+e|0)>>>0>>0?I+1|0:I,IA=(g=e)+(e=kI(G,0,l,0))|0,g=w+I|0,g=IA>>>0>>0?g+1|0:g,(I=(e=NA>>>7&2097151)+IA|0)>>>0>>0&&(g=g+1|0),aA=I,e=g,g=kI(k,0,b,0),I=w,eA=(IA=g)+(g=kI(d,0,F,0))|0,IA=w+I|0,IA=eA>>>0>>0?IA+1|0:IA,I=kI(G,0,v,0),g=w+IA|0,I=(IA=eA=I+eA|0)>>>0>>0?g+1|0:g,(g=eA+(IA=2097151&((3&$)<<30|z>>>2))|0)>>>0>>0&&(I=I+1|0),nA=g,eA=I,YA=g- -1048576|0,oA=I=I-((g>>>0<4293918720)+-1|0)|0,g=e+(IA=I>>>21|0)|0,sA=I=(EA=g=(aA=(I=(2097151&I)<<11|YA>>>21)+aA|0)>>>0>>0?g+1|0:g)-(((g=aA)>>>0<4293918720)+-1|0)|0,g=CA+((2097151&I)<<11|(wA=g- -1048576|0)>>>21)|0,I=kA+(I>>21)|0,I=g>>>0>>0?I+1|0:I,CA=(e=kI(J,K,666643,0))+((IA=g)-(g=-2097152&OA)|0)|0,g=w+(I-((IA>>>0>>0)+KA|0)|0)|0,g=CA>>>0>>0?g+1|0:g,I=kI(N,LA,470296,0),IA=w+g|0,IA=(e=I+CA|0)>>>0>>0?IA+1|0:IA,g=kI(pA,DA,136657,0),I=w+IA|0,I=(e=g+e|0)>>>0>>0?I+1|0:I,IA=(g=e)+(e=kI(mA,GA,654183,0))|0,g=w+I|0,g=IA>>>0>>0?g+1|0:g,e=kI(dA,bA,-997805,-1),I=w+g|0,uA=IA=e+IA|0,cA=I=IA>>>0>>0?I+1|0:I,hA=(g=IA)- -1048576|0,CA=e=I-((g>>>0<4293918720)+-1|0)|0,IA=(g=e>>21)+BA|0,BA=e=(I=(2097151&e)<<11|hA>>>21)+tA|0,e=IA=e>>>0>>0?IA+1|0:IA,fA=(g=BA)- -1048576|0,tA=IA=IA-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+UA|0,VA=vA=(IA=(2097151&IA)<<11|fA>>>21)+JA|0,vA=vA>>>0>>0?I+1|0:I,g=iA-(I=-2097152&HA)|0,IA=QA-((iA>>>0>>0)+_A|0)|0,IA=(I=rA>>21)+IA|0,QA=IA=(rA=(iA=g)+(g=(2097151&rA)<<11|O>>>21)|0)>>>0>>0?IA+1|0:IA,_A=IA=IA-(((g=rA)>>>0<4293918720)+-1|0)|0,SA=I=IA>>21,g=kI(NA=(2097151&IA)<<11|(HA=g- -1048576|0)>>>21,I,-683901,-1),I=w+e|0,I=(IA=g+BA|0)>>>0>>0?I+1|0:I,JA=IA-(g=-2097152&fA)|0,UA=I-((IA>>>0>>0)+tA|0)|0,g=kI(NA,SA,136657,0),IA=w+cA|0,IA=(I=g+uA|0)>>>0>>0?IA+1|0:IA,kA=I-(g=-2097152&hA)|0,KA=IA-((I>>>0>>0)+CA|0)|0,e=(I=kI(N,LA,666643,0))+(aA-(g=-2097152&wA)|0)|0,g=w+(EA-((aA>>>0>>0)+sA|0)|0)|0,g=e>>>0>>0?g+1|0:g,I=kI(pA,DA,-997805,-1),g=w+g|0,g=(e=I+e|0)>>>0>>0?g+1|0:g,IA=(I=e)+(e=kI(mA,GA,470296,0))|0,I=w+g|0,I=IA>>>0>>0?I+1|0:I,e=(g=kI(dA,bA,654183,0))+IA|0,IA=w+I|0,EA=e,tA=e>>>0>>0?IA+1|0:IA,BA=eA,g=kI(G,0,b,0),I=w,e=g,g=kI(k,0,F,0),I=w+I|0,g=I=(e=e+g|0)>>>0>>0?I+1|0:I,(I=(I=e)+(e=Z>>>5&2097151)|0)>>>0>>0&&(g=g+1|0),aA=I,e=g,I=2097151&j,IA=kI(G,0,F,0)+I|0,g=w,eA=IA,cA=IA=(sA=g=IA>>>0>>0?g+1|0:g)-(((g=IA)>>>0<4293918720)+-1|0)|0,g=(2097151&IA)<<11|(wA=g- -1048576|0)>>>21,IA=(IA>>>21|0)+e|0,CA=IA=(e=aA=g+aA|0)>>>0>>0?IA+1|0:IA,uA=(g=e)- -1048576|0,iA=IA=IA-((g>>>0<4293918720)+-1|0)|0,g=(I=IA>>>21|0)+BA|0,g=(aA=(IA=(2097151&IA)<<11|uA>>>21)+nA|0)>>>0>>0?g+1|0:g,aA=(I=kI(pA,DA,654183,0))+((BA=aA)-(IA=-2097152&YA)|0)|0,IA=w+(g-((16383&oA)+(BA>>>0>>0)|0)|0)|0,g=kI(mA,GA,666643,0),I=w+(aA>>>0>>0?IA+1|0:IA)|0,I=(BA=g+aA|0)>>>0>>0?I+1|0:I,IA=kI(dA,bA,470296,0),g=w+I|0,hA=BA=IA+BA|0,aA=IA=(nA=g=BA>>>0>>0?g+1|0:g)-(((g=BA)>>>0<4293918720)+-1|0)|0,I=(I=IA>>21)+tA|0,oA=IA=(g=(2097151&IA)<<11|(fA=g- -1048576|0)>>>21)+EA|0,BA=I=IA>>>0>>0?I+1|0:I;EA=(g=IA)- -1048576|0,g=(I=(IA=tA=I-((g>>>0<4293918720)+-1|0)|0)>>21)+KA|0,tA=(kA=YA=(tA=(2097151&IA)<<11|EA>>>21)+kA|0)>>>0>>0?g+1|0:g,I=kI(NA,SA,-997805,-1),g=w+BA|0,g=(oA=I+oA|0)>>>0>>0?g+1|0:g,KA=(BA=oA)-(I=-2097152&EA)|0,YA=g-((BA>>>0>>0)+IA|0)|0,g=kI(NA,SA,654183,0),IA=w+nA|0,IA=(I=g+hA|0)>>>0>>0?IA+1|0:IA,oA=I-(g=-2097152&fA)|0,EA=IA-((I>>>0>>0)+aA|0)|0,IA=(g=kI(pA,DA,470296,0))+(e-(I=-2097152&uA)|0)|0,I=w+(CA-((16383&iA)+(e>>>0>>0)|0)|0)|0,I=IA>>>0>>0?I+1|0:I,g=kI(dA,bA,666643,0),I=w+I|0,aA=e=g+IA|0,BA=e>>>0>>0?I+1|0:I,g=kI(pA,DA,666643,0),IA=w+(sA-((4095&cA)+(eA>>>0<(I=-2097152&wA)>>>0)|0)|0)|0,iA=IA=(e=g+(eA-I|0)|0)>>>0>>0?IA+1|0:IA,sA=(g=e)- -1048576|0,nA=IA=IA-((g>>>0<4293918720)+-1|0)|0,I=(g=IA>>21)+BA|0,cA=eA=(IA=(2097151&IA)<<11|sA>>>21)+aA|0,aA=I=eA>>>0>>0?I+1|0:I,BA=IA=I-(((g=eA)>>>0<4293918720)+-1|0)|0,I=(2097151&IA)<<11|(CA=g- -1048576|0)>>>21,IA=(IA>>21)+EA|0,EA=eA=I+oA|0,eA=eA>>>0>>0?IA+1|0:IA,g=kI(NA,SA,470296,0),I=w+aA|0,BA=(I=(IA=g+cA|0)>>>0>>0?I+1|0:I)-(((aA=IA)>>>0<(IA=-2097152&CA)>>>0)+BA|0)|0,cA=g=aA-IA|0,g=kI(NA,SA,666643,0),IA=w+(iA-((e>>>0<(I=-2097152&sA)>>>0)+nA|0)|0)|0,nA=aA=g+(e-I|0)|0,e=(2097151&(IA=aA>>>0>>0?IA+1|0:IA))<<11|(g=aA)>>>21,g=(I=IA>>21)+BA|0,BA=IA=cA+e|0,IA=(g=(I=IA)>>>0>>0?g+1|0:g)>>21,g=(2097151&g)<<11|I>>>21,I=IA+eA|0,aA=e=g+EA|0,g=(g=(I=e>>>0>>0?I+1|0:I)>>21)+YA|0,CA=e=(I=(2097151&I)<<11|e>>>21)+KA|0,I=(I=(g=e>>>0>>0?g+1|0:g)>>21)+tA|0,uA=e=(g=(2097151&g)<<11|e>>>21)+kA|0,IA=(g=(I=e>>>0>>0?I+1|0:I)>>21)+UA|0,hA=e=(I=(2097151&I)<<11|e>>>21)+JA|0,e=(2097151&(IA=(g=e)>>>0>>0?IA+1|0:IA))<<11|g>>>21,g=(I=IA>>21)+vA|0,fA=IA=e+VA|0,IA=(g=(I=IA)>>>0>>0?g+1|0:g)>>21,g=(2097151&g)<<11|I>>>21,I=IA+XA|0,oA=e=g+qA|0,g=(g=(I=e>>>0>>0?I+1|0:I)>>21)+yA|0,EA=e=(I=(2097151&I)<<11|e>>>21)+FA|0,I=(I=(g=e>>>0>>0?g+1|0:g)>>21)+lA|0,vA=e=(g=(2097151&g)<<11|e>>>21)+zA|0,IA=(g=(I=e>>>0>>0?I+1|0:I)>>21)+ZA|0,sA=e=(I=(2097151&I)<<11|e>>>21)+jA|0,g=e,I=(QA-((rA>>>0<(e=-2097152&HA)>>>0)+_A|0)|0)+(I=(IA=g>>>0>>0?IA+1|0:IA)>>21)|0,cA=IA=(IA=(2097151&IA)<<11|g>>>21)+(g=rA-e|0)|0,iA=g=(I=IA>>>0>>0?I+1|0:I)>>21,I=kI(_A=(2097151&I)<<11|IA>>>21,g,666643,0),IA=w,nA=I=I+(g=2097151&nA)|0,e=IA=I>>>0>>0?IA+1|0:IA,a[0|AA]=I,a[A+1|0]=(255&IA)<<24|I>>>8,g=2097151&BA,eA=kI(_A,iA,470296,0)+g|0,I=w,I=eA>>>0>>0?I+1|0:I,I=(g=e>>21)+I|0,I=(BA=rA=(IA=eA)+(eA=(2097151&e)<<11|nA>>>21)|0)>>>0>>0?I+1|0:I,IA=BA,a[A+4|0]=(2047&I)<<21|IA>>>11,g=I,a[A+3|0]=(7&g)<<29|IA>>>3,I=A,eA=2097151&aA,rA=kI(_A,iA,654183,0)+eA|0,IA=w,IA=rA>>>0>>0?IA+1|0:IA,eA=g,g=(g>>=21)+IA|0,aA=rA=(eA=(2097151&eA)<<11|BA>>>21)+rA|0,IA=g=rA>>>0>>0?g+1|0:g,a[I+6|0]=(63&g)<<26|rA>>>6,rA=0,g=tA=2097151&BA,a[I+2|0]=31&((65535&e)<<16|nA>>>16)|g<<5,eA=I,g=2097151&CA,e=kI(_A,iA,-997805,-1)+g|0,I=w,I=e>>>0>>0?I+1|0:I,I=(g=IA>>21)+I|0,nA=IA=(BA=e)+(e=(2097151&IA)<<11|aA>>>21)|0,I=IA>>>0>>0?I+1|0:I,a[eA+9|0]=(511&I)<<23|IA>>>9,e=I,g=I,I=IA,a[eA+8|0]=(1&g)<<31|I>>>1,BA=0,I=CA=2097151&aA,a[eA+5|0]=(524287&rA)<<13|tA>>>19|I<<2,I=2097151&uA,IA=kI(_A,iA,136657,0)+I|0,g=w,g=IA>>>0>>0?g+1|0:g,I=e>>21,rA=(e=(2097151&e)<<11|nA>>>21)+IA|0,IA=g+I|0,aA=rA,IA=rA>>>0>>0?IA+1|0:IA,a[eA+12|0]=(4095&IA)<<20|rA>>>12,I=IA,a[eA+11|0]=(15&I)<<28|rA>>>4,rA=0,e=tA=2097151&nA,a[eA+7|0]=(16383&BA)<<18|CA>>>14|e<<7,e=eA,IA=2097151&hA,eA=kI(_A,iA,-683901,-1)+IA|0,g=w,g=eA>>>0>>0?g+1|0:g,IA=eA,eA=(2097151&I)<<11|aA>>>21,I=(I>>21)+g|0,g=I=(BA=IA+eA|0)>>>0>>0?I+1|0:I,a[e+14|0]=(127&g)<<25|BA>>>7,eA=0,e=nA=2097151&aA,a[A+10|0]=(131071&rA)<<15|tA>>>17|e<<4,g>>=21,I=(aA=(IA=(2097151&I)<<11|BA>>>21)+(2097151&fA)|0)>>>0>>0?g+1|0:g,e=aA,a[A+17|0]=(1023&I)<<22|e>>>10,g=I,a[A+16|0]=(3&g)<<30|e>>>2,IA=0,e=iA=2097151&BA,a[A+13|0]=(1048575&eA)<<12|nA>>>20|e<<1,g>>=21,BA=eA=(I=(2097151&I)<<11|aA>>>21)+(2097151&oA)|0,g=eA>>>0>>0?g+1|0:g,e=eA,a[A+20|0]=(8191&g)<<19|e>>>13,I=g,a[A+19|0]=(31&g)<<27|e>>>5,e=nA=2097151&aA,a[A+15|0]=(32767&IA)<<17|iA>>>15|e<<6,IA=g>>=21,aA=iA=(e=(2097151&I)<<11|eA>>>21)+(2097151&EA)|0,a[(eA=A)+21|0]=aA,g=BA,a[eA+18|0]=(262143&rA)<<14|nA>>>18|g<<3,e=aA>>>0>>0?IA+1|0:IA,a[eA+22|0]=(255&e)<<24|aA>>>8,I=IA=(g=e)>>21,rA=BA=(g=(2097151&g)<<11|aA>>>21)+(2097151&vA)|0,I=BA>>>0>>0?I+1|0:I,IA=BA,a[eA+25|0]=(2047&I)<<21|IA>>>11,g=I,a[eA+24|0]=(7&g)<<29|IA>>>3,IA=eA,g>>=21,(eA=(I=(2097151&I)<<11|BA>>>21)+(2097151&sA)|0)>>>0>>0&&(g=g+1|0),I=g,a[IA+27|0]=(63&g)<<26|eA>>>6,IA=0,e=31&((65535&e)<<16|aA>>>16),g=aA=2097151&rA,a[A+23|0]=e|g<<5,rA=(2097151&I)<<11|eA>>>21,I>>=21,I=(nA=rA+(2097151&cA)|0)>>>0>>0?I+1|0:I,e=rA=nA,a[A+31|0]=(131071&I)<<15|e>>>17,g=I,a[A+30|0]=(511&g)<<23|e>>>9,a[A+29|0]=(1&g)<<31|e>>>1,I=0,eA&=2097151,a[A+26|0]=(524287&IA)<<13|aA>>>19|eA<<2,a[A+28|0]=(16383&I)<<18|eA>>>14|e<<7}(r,C+160|0,C+288|0,C+224|0),Gg(C+288|0,64),Gg(C+224|0,64),g&&(n[g>>2]=64,n[g+4>>2]=0),p=C+560|0,0}function X(A,g,I,e){var B;p=B=p-2272|0,hA(B+2016|0,g),hA(B+1760|0,e),xg(B+480|0,I),gI(B+320|0,I),Mg(B,B+320|0),gg(B+320|0,B,B+480|0),Mg(B+160|0,B+320|0),xg(g=B+640|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(g=B+800|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(g=B+960|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(g=B+1120|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(g=B+1280|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(g=B+1440|0,B+160|0),gg(B+320|0,B,g),Mg(B+160|0,B+320|0),xg(B+1600|0,B+160|0),WI(A),HI(A+40|0),HI(A+80|0),e=255;A:{for(;;){if(!(i[(I=e)+(B+2016|0)|0]|i[(B+1760|0)+I|0])){if(e=I+-1|0,I)continue;break A}break}if(!((0|I)<0))for(;Cg(B+320|0,A),(0|(I=a[(g=I)+(B+2016|0)|0]))>=1?(Mg(B+160|0,B+320|0),gg(B+320|0,B+160|0,(B+480|0)+Q((254&I)>>>1|0,160)|0)):(0|I)>-1||(Mg(B+160|0,B+320|0),Ig(B+320|0,B+160|0,(B+480|0)+Q((0-I&254)>>>1|0,160)|0)),(0|(I=a[g+(B+1760|0)|0]))>=1?(Mg(B+160|0,B+320|0),ag(B+320|0,B+160|0,Q((254&I)>>>1|0,120)+2272|0)):(0|I)>-1||(Mg(B+160|0,B+320|0),rg(B+320|0,B+160|0,Q((0-I&254)>>>1|0,120)+2272|0)),Kg(A,B+320|0),I=g+-1|0,(0|g)>0;);}p=B+2272|0}function V(A,g,I,e){var B,r=0,t=0,C=0,Q=0,o=0,c=0,E=0;if(p=B=p-704|0,I|e)if(o=(c=n[(r=A)+72>>2])+(C=(t=I)<<3)|0,t=(Q=n[r+76>>2])+(e<<3|t>>>29)|0,t=o>>>0>>0?t+1|0:t,n[r+72>>2]=o,n[r+76>>2]=t,r=n[r+64>>2],C=n[A+68>>2],(0|t)==(0|Q)&o>>>0>>0|t>>>0>>0&&((r=r+1|0)>>>0<1&&(C=C+1|0),n[(t=A)+64>>2]=r,n[t+68>>2]=C),(r=(E=e>>>29|0)+r|0)>>>0>>0&&(C=C+1|0),n[(t=A)+64>>2]=r,n[t+68>>2]=C,(0|e)==(0|(C=o=0-(128<(t=127&((7&Q)<<29|c>>>3))>>>0)|0))&(r=Q=128-t|0)>>>0<=I>>>0|C>>>0>>0){for(r=0,C=0;a[80+(A+(E=r+t|0)|0)|0]=i[g+r|0],(r=r+1|0)>>>0<1&&(C=C+1|0),(0|Q)!=(0|r)|(0|C)!=(0|o););if(v(A,A+80|0,B,C=B+640|0),g=g+Q|0,!(e=e-((I>>>0>>0)+o|0)|0)&(I=I-Q|0)>>>0>127|e>>>0>0)for(;v(A,g,B,C),g=g+128|0,t=e+-1|0,(I=I+-128|0)>>>0<4294967168&&(t=t+1|0),e=t,!t&I>>>0>127|t>>>0>0;);if(I|e)for(r=0,C=0;a[80+(A+r|0)|0]=i[g+r|0],(t=r+1|0)>>>0<1&&(C=C+1|0),(0|I)!=(0|(r=t))|(0|e)!=(0|C););Gg(B,704)}else for(r=I,Q=(I=!e&I>>>0>1|e>>>0>0)?r:1,e=I?e:0,r=0,C=0;a[80+(A+(c=r+t|0)|0)|0]=i[g+r|0],(I=r+1|0)>>>0<1&&(C=C+1|0),(0|Q)!=(0|(r=I))|(0|e)!=(0|C););return p=B+704|0,0}function W(A,g,I){var e,B=0,r=0;if(I>>>0>=512)return f(0|A,0|g,0|I),A;e=A+I|0;A:if(3&(A^g))if(e>>>0<4)I=A;else if((B=e+-4|0)>>>0>>0)I=A;else for(I=A;a[0|I]=i[0|g],a[I+1|0]=i[g+1|0],a[I+2|0]=i[g+2|0],a[I+3|0]=i[g+3|0],g=g+4|0,(I=I+4|0)>>>0<=B>>>0;);else{g:if((0|I)<1)I=A;else if(3&A)for(I=A;;){if(a[0|I]=i[0|g],g=g+1|0,(I=I+1|0)>>>0>=e>>>0)break g;if(!(3&I))break}else I=A;if(!((B=-4&e)>>>0<64||I>>>0>(r=B+-64|0)>>>0))for(;n[I>>2]=n[g>>2],n[I+4>>2]=n[g+4>>2],n[I+8>>2]=n[g+8>>2],n[I+12>>2]=n[g+12>>2],n[I+16>>2]=n[g+16>>2],n[I+20>>2]=n[g+20>>2],n[I+24>>2]=n[g+24>>2],n[I+28>>2]=n[g+28>>2],n[I+32>>2]=n[g+32>>2],n[I+36>>2]=n[g+36>>2],n[I+40>>2]=n[g+40>>2],n[I+44>>2]=n[g+44>>2],n[I+48>>2]=n[g+48>>2],n[I+52>>2]=n[g+52>>2],n[I+56>>2]=n[g+56>>2],n[I+60>>2]=n[g+60>>2],g=g- -64|0,(I=I- -64|0)>>>0<=r>>>0;);if(I>>>0>=B>>>0)break A;for(;n[I>>2]=n[g>>2],g=g+4|0,(I=I+4|0)>>>0>>0;);}if(I>>>0>>0)for(;a[0|I]=i[0|g],g=g+1|0,(0|e)!=(0|(I=I+1|0)););return A}function O(A,g,I,e,B,r,t,i){A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,t|=0,i|=0;var C,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0;p=C=p-16|0,n[C+12>>2]=0,NI(i);A:{if(e){f=4&i;g:{I:{e:{for(;;){Q=E;B:{r:{for(;;){if(y=a[I+Q|0],255!=(0|(c=f?ZA(y):zA(y))))break r;if(!B)break B;if(!hI(B,y))break e;if(!((Q=Q+1|0)>>>0>>0))break}A=E+1|0,n[C+12>>2]=A>>>0>>0?e:A;break I}if(h=(h<<6)+c|0,(c=o+6|0)>>>0<8)o=c;else{if(o=o+-2|0,s>>>0>=g>>>0){n[C+12>>2]=Q,n[8960]=68,Q=1;break g}a[A+s|0]=h>>>o,s=s+1|0}if((E=Q+1|0)>>>0>>0)continue}break}n[C+12>>2]=E;break I}n[C+12>>2]=Q}Q=0}if(!(o>>>0<=4)){A=-1;break A}}if(A=-1,!((-1<>2];;){I:{if(r>>>0>=g>>>0)n[8960]=68;else{if(61==(0|(t=a[A+r|0]))){B=B+-1|0;break I}if(e&&hI(e,t))break I;n[8960]=28}i=-1;break g}if(r=r+1|0,n[I>>2]=r,!B)break}return i}(I,e,C+12|0,B,o>>>1|0)))){A=0;g:if(B&&!((Q=n[C+12>>2])>>>0>=e>>>0)){I:{for(;;){if(!hI(B,a[I+Q|0]))break I;if((0|(Q=Q+1|0))==(0|e))break}n[C+12>>2]=e;break g}n[C+12>>2]=Q}_=s}}return g=n[C+12>>2],t?n[t>>2]=g+I:(0|g)!=(0|e)&&(n[8960]=28,A=-1),r&&(n[r>>2]=_),p=C+16|0,0|A}function j(A,g,I){var e,B,r,a=0;p=e=p-16|0,B=n[A+20>>2],n[A+20>>2]=0,r=n[A+4>>2],n[A+4>>2]=0,a=-26;A:{g:{I:switch(I+-1|0){case 1:if(a=-32,Ag(g,35621,9))break A;g=g+9|0;break g;case 0:break I;default:break A}if(a=-32,Ag(g,35631,8))break A;g=g+8|0}if(!Ag(g,35640,3)&&(g=UA(g+3|0,e+12|0))){if(a=-26,19!=n[e+12>>2])break A;if(!Ag(g,35644,3)&&(g=UA(g+3|0,e+12|0))&&(n[A+44>>2]=n[e+12>>2],!Ag(g,35648,3)&&(g=UA(g+3|0,e+12|0))&&(n[A+40>>2]=n[e+12>>2],!Ag(g,35652,3)&&(g=UA(g+3|0,e+12|0))&&(I=n[e+12>>2],n[A+48>>2]=I,n[A+52>>2]=I,36==(0|(I=i[0|g]))&&(n[e+12>>2]=B,g=36==(0|I)?g+1|0:g,!O(n[A+16>>2],B,g,MA(g),0,e+12|0,e+8|0,3)&&(n[A+20>>2]=n[e+12>>2],g=n[e+8>>2],36==(0|(I=i[0|g]))&&(n[e+12>>2]=r,g=36==(0|I)?g+1|0:g,!O(n[A>>2],r,g,MA(g),0,e+12|0,e+8|0,3)))))))){if(n[A+4>>2]=n[e+12>>2],g=n[e+8>>2],a=yA(A))break A;return p=e+16|0,i[0|g]?-32:0}}a=-32}return p=e+16|0,a}function Z(A,g){var I,e,B,r,t,i,C=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0;(C=E=n[A+60>>2])|(o=n[A+56>>2])&&(E=o,a[(y=o+A|0)- -64|0]=1,(o=o+1|0)>>>0<1&&(C=C+1|0),!C&o>>>0<=15|C>>>0<0&&iA(y+65|0,0,15-E|0),a[A+80|0]=1,U(A,A- -64|0,16,0)),i=n[A+52>>2],u=n[A+48>>2],h=n[A+44>>2],C=n[A+24>>2],E=n[A+28>>2]+(C>>>26|0)|0,c=n[A+32>>2]+(E>>>26|0)|0,_=(E=(p=(-67108864|(I=n[A+36>>2]+(c>>>26|0)|0))+((r=(e=67108863&c)+((B=(s=67108863&E)+((c=(C=(67108863&C)+((p=n[A+20>>2]+Q(I>>>26|0,5)|0)>>>26|0)|0)+((y=5+(o=67108863&p)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>31)&C|(f=c)&(c=67108863&(t=(p>>>31|0)-1|0)),f=g,C=0,(o=(y=o&E|c&y|_<<26)+n[A+40>>2]|0)>>>0>>0&&(C=1),II(f,o),o=0,(s=(f=h)+(_=(h=E&s|c&B)<<20|_>>>6)|0)>>>0<_>>>0&&(o=1),f=s,s=C,_=f+C|0,C=o,C=_>>>0>>0?C+1|0:C,II(y=g+4|0,_),o=0,(h=(s=u)+(c=(u=E&e|c&r)<<14|h>>>12)|0)>>>0>>0&&(o=1),s=h,h=C,c=s+C|0,C=o,C=c>>>0>>0?C+1|0:C,II(f=g+8|0,c),II(o=g+12|0,C=C+(E=(g=(p&t|E&I)<<8|u>>>18)+i|0)|0),Gg(A,88)}function z(A,g){var I;for(p=I=p-192|0,m(I+144|0,g),m(I+96|0,I+144|0),m(I+96|0,I+96|0),k(I+96|0,g,I+96|0),k(I+144|0,I+144|0,I+96|0),m(I+48|0,I+144|0),k(I+96|0,I+96|0,I+48|0),m(I+48|0,I+96|0),g=1;m(I+48|0,I+48|0),5!=(0|(g=g+1|0)););for(k(I+96|0,I+48|0,I+96|0),m(I+48|0,I+96|0),g=1;m(I+48|0,I+48|0),10!=(0|(g=g+1|0)););for(k(I+48|0,I+48|0,I+96|0),m(I,I+48|0),g=1;m(I,I),20!=(0|(g=g+1|0)););for(k(I+48|0,I,I+48|0),g=1;m(I+48|0,I+48|0),11!=(0|(g=g+1|0)););for(k(I+96|0,I+48|0,I+96|0),m(I+48|0,I+96|0),g=1;m(I+48|0,I+48|0),50!=(0|(g=g+1|0)););for(k(I+48|0,I+48|0,I+96|0),m(I,I+48|0),g=1;m(I,I),100!=(0|(g=g+1|0)););for(k(I+48|0,I,I+48|0),g=1;m(I+48|0,I+48|0),51!=(0|(g=g+1|0)););for(k(I+96|0,I+48|0,I+96|0),g=1;m(I+96|0,I+96|0),6!=(0|(g=g+1|0)););k(A,I+96|0,I+144|0),p=I+192|0}function $(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0;var r=0,t=0,n=0,C=0,o=0,s=0,y=0,h=0,f=0,_=0;NI(B|=0),t=(r=(e>>>0)/3|0)<<2,(r=Q(r,-3)+e|0)&&(t=2&B?(2|t)+(r>>>1|0)|0:t+4|0);A:{g:{h=t;I:{e:{if(t>>>0>>0){if(!(4&B)){if(n=0,!e)break I;B=0,r=0;break e}if(n=0,!e)break I;for(B=0,r=0;;){for(o=i[I+C|0]|o<<8,B=B+8|0;s=r,y=B,f=A+r|0,_=fg(o>>>(B=B+-6|0)&63),a[0|f]=_,r=r+1|0,B>>>0>5;);if((0|(C=C+1|0))==(0|e))break}if(n=r,!B)break I;f=A+r|0,_=fg(o<<12-y&63),a[0|f]=_,n=s+2|0;break I}oI(),c()}for(;;){for(o=i[I+C|0]|o<<8,B=B+8|0;s=r,y=B,f=A+r|0,_=_g(o>>>(B=B+-6|0)&63),a[0|f]=_,r=r+1|0,B>>>0>5;);if((0|(C=C+1|0))==(0|e))break}n=r,B&&(f=A+r|0,_=_g(o<<12-y&63),a[0|f]=_,n=s+2|0)}if(h>>>0>=(r=n)>>>0){if(t>>>0>r>>>0)break g;t=r;break A}E(35568,35587,230,35603),c()}iA(A+r|0,61,t-r|0)}return iA(A+t|0,0,((I=t+1|0)>>>0>>0?g:I)-t|0),0|A}function AA(A,g,I,e){var B=0,r=0,t=0,C=0,Q=0,o=0;A:{if((r=n[A+56>>2])|(B=n[A+60>>2])){if(o=A,Q=C=16-r|0,Q=(C=(0|e)==(0|(t=0-((16>>0)+B|0)|0))&C>>>0>I>>>0|t>>>0>e>>>0)?I:Q,C=t=C?e:t,t|Q){if(a[(A+r|0)- -64|0]=i[0|g],B=1,r=0,1!=(0|Q)|C)for(;t=B+n[A+56>>2]|0,a[(A+t|0)- -64|0]=i[g+B|0],(B=B+1|0)>>>0<1&&(r=r+1|0),(0|Q)!=(0|B)|(0|r)!=(0|C););B=n[A+60>>2],t=n[A+56>>2]}else t=r;if(r=B+C|0,(t=(B=Q)+t|0)>>>0>>0&&(r=r+1|0),B=t,n[o+56>>2]=B,n[o+60>>2]=r,!r&B>>>0<16|r>>>0<0)break A;U(A,A- -64|0,16,0),n[A+56>>2]=0,n[A+60>>2]=0,I=(r=I)-(B=Q)|0,e=e-((r>>>0>>0)+C|0)|0,g=g+B|0}if(!e&I>>>0>=16|e>>>0>0&&(U(A,g,r=-16&I,e),I&=15,e=0,g=g+r|0),I|e){for(B=0,r=0;o=B+n[A+56>>2]|0,a[(A+o|0)- -64|0]=i[g+B|0],(B=B+1|0)>>>0<1&&(r=r+1|0),(0|I)!=(0|B)|(0|e)!=(0|r););g=A,t=A,e=e+n[A+60>>2]|0,(A=I+n[A+56>>2]|0)>>>0>>0&&(e=e+1|0),n[t+56>>2]=A,n[g+60>>2]=e}}}function gA(A,g,I){var e,B=0;e=B=p,p=B=B-448&-64,!A|!g||(ug(B- -64|0,0,0,64),II(B+60|0,n[g+48>>2]),SI(B- -64|0,B+60|0,4,0),II(B+60|0,n[g+4>>2]),SI(B- -64|0,B+60|0,4,0),II(B+60|0,n[g+44>>2]),SI(B- -64|0,B+60|0,4,0),II(B+60|0,n[g+40>>2]),SI(B- -64|0,B+60|0,4,0),II(B+60|0,19),SI(B- -64|0,B+60|0,4,0),II(B+60|0,I),SI(B- -64|0,B+60|0,4,0),II(B+60|0,n[g+12>>2]),SI(B- -64|0,B+60|0,4,0),(I=n[g+8>>2])&&(SI(B- -64|0,I,n[g+12>>2],0),1&a[g+56|0]&&(Gg(n[g+8>>2],n[g+12>>2]),n[g+12>>2]=0)),II(B+60|0,n[g+20>>2]),SI(B- -64|0,B+60|0,4,0),(I=n[g+16>>2])&&SI(B- -64|0,I,n[g+20>>2],0),II(B+60|0,n[g+28>>2]),SI(B- -64|0,B+60|0,4,0),(I=n[g+24>>2])&&(SI(B- -64|0,I,n[g+28>>2],0),2&i[g+56|0]&&(Gg(n[g+24>>2],n[g+28>>2]),n[g+28>>2]=0)),II(B+60|0,n[g+36>>2]),SI(B- -64|0,B+60|0,4,0),(I=n[g+32>>2])&&SI(B- -64|0,I,n[g+36>>2],0),zg(B- -64|0,A,64)),p=e}function IA(A,g,I,e,B,r,t,C,Q,o){var E,s=0,y=0,h=0,f=0,_=0;p=E=p-352|0,I&&(n[I>>2]=0,n[I+4>>2]=0),e&&(a[0|e]=255),_=-1;A:{if(!(!t&r>>>0<17|t>>>0<0)){if(s=t+-1|0,(y=r+-17|0)>>>0<4294967279&&(s=s+1|0),h=y,y=s,!s&h>>>0>=4294967279|s>>>0>0)break A;KI(E+32|0,64,f=A+32|0,A),PI(E+96|0,E+32|0),Gg(E+32|0,64),FI(E+96|0,C,Q,o),FI(E+96|0,35712,0-Q&15,0),iA(E+32|0,0,64),a[E+32|0]=i[0|B],ig(E+32|0,E+32|0,64,0,f,1,A),C=i[E+32|0],a[E+32|0]=i[0|B],FI(E+96|0,E+32|0,64,0),FI(E+96|0,B=B+1|0,h,y),FI(E+96|0,35712,15&(s=r+-1|0),0),Fg(E+24|0,Q,o),FI(E+96|0,E+24|0,8,0),s=t,(r=r+47|0)>>>0<47&&(s=s+1|0),Fg(Q=E+24|0,r,s),FI(E+96|0,E+24|0,8,0),xI(E+96|0,E),Gg(E+96|0,256),tg(E,B+h|0,16)?Gg(E,16):(ig(g,B,h,y,f,2,A),Ng(A+36|0,E),Hg(f),(2&C||Dg(f,4))&&L(A),I&&(n[I>>2]=h,n[I+4>>2]=y),_=0,e&&(a[0|e]=C))}return p=E+352|0,_}oI(),c()}function eA(A,g,I){var e,B,r,a,t,i,C,Q,o,c,E,s,y=0,h=0,f=0,_=0,p=0,u=0,l=0,w=0,D=0;e=n[g+4>>2],B=n[A+4>>2],r=n[g+8>>2],h=n[A+8>>2],a=n[g+12>>2],f=n[A+12>>2],t=n[g+16>>2],_=n[A+16>>2],i=n[g+20>>2],p=n[A+20>>2],C=n[g+24>>2],u=n[A+24>>2],Q=n[g+28>>2],l=n[A+28>>2],o=n[g+32>>2],w=n[A+32>>2],c=n[g+36>>2],D=n[A+36>>2],s=(I=0-I|0)&((E=n[g>>2])^(y=n[A>>2])),n[A>>2]=s^y,y=D,D=I&(D^c),n[A+36>>2]=y^D,y=w,w=I&(w^o),n[A+32>>2]=y^w,y=l,l=I&(l^Q),n[A+28>>2]=y^l,y=u,u=I&(u^C),n[A+24>>2]=y^u,y=p,p=I&(p^i),n[A+20>>2]=y^p,y=_,_=I&(_^t),n[A+16>>2]=y^_,y=f,f=I&(f^a),n[A+12>>2]=y^f,y=h,h=I&(h^r),n[A+8>>2]=y^h,y=A,A=I&(e^B),n[y+4>>2]=A^B,n[g+36>>2]=D^c,n[g+32>>2]=w^o,n[g+28>>2]=l^Q,n[g+24>>2]=u^C,n[g+20>>2]=p^i,n[g+16>>2]=_^t,n[g+12>>2]=f^a,n[g+8>>2]=h^r,n[g+4>>2]=A^e,n[g>>2]=E^s}function BA(A,g){var I=0,e=0,B=0,r=0,a=0,t=0,o=0,c=0,E=0,s=0;A:if(A&&(2!=n[A+36>>2]||(e=n[g>>2],i[g+8|0]<2&&!e)?(function(A,g,I){var e,B=0,r=0,a=0;if(p=e=p-4096|0,VI(e+3072|0),VI(e+2048|0),!(!A|!g)&&(n[e+2048>>2]=n[g>>2],n[e+2052>>2]=0,n[e+2056>>2]=n[g+4>>2],n[e+2060>>2]=0,n[e+2064>>2]=i[g+8|0],n[e+2068>>2]=0,n[e+2072>>2]=n[A+16>>2],n[e+2076>>2]=0,n[e+2080>>2]=n[A+8>>2],n[e+2084>>2]=0,n[e+2088>>2]=n[A+36>>2],n[e+2092>>2]=0,n[A+20>>2]))for(g=0;(a=127&g)||(B=n[e+2100>>2],(r=n[e+2096>>2]+1|0)>>>0<1&&(B=B+1|0),n[e+2096>>2]=r,n[e+2100>>2]=B,VI(e),VI(e+1024|0),F(e+3072|0,e+2048|0,e),F(e+3072|0,e,e+1024|0)),a=n[4+(r=(e+1024|0)+(a<<3)|0)>>2],n[(B=(g<<3)+I|0)>>2]=n[r>>2],n[B+4>>2]=a,(g=g+1|0)>>>0>2];);p=e+4096|0}(A,g,E=n[A+4>>2]),e=n[g>>2],s=0):(E=n[A+4>>2],s=1),!((r=!((t=e)|(e=i[g+8|0]))<<1)>>>0>=(I=n[A+20>>2])>>>0)))for(B=n[A+24>>2],I=(e=(Q(B,n[g+4>>2])+r|0)+Q(I,e)|0)+((e>>>0)%(B>>>0)|0?-1:B+-1|0)|0;;){if(B=1==((e>>>0)%(B>>>0)|0)?e+-1|0:I,I=s?n[n[A>>2]+4>>2]+(B<<10)|0:(r<<3)+E|0,a=n[I+4>>2],o=n[I>>2],I=n[A+28>>2],n[g+12>>2]=r,I=(a>>>0)%(I>>>0)|0,a=n[g+4>>2],t=c=i[g+8|0]?I:a,t=(c=n[g>>2])?I:t,I=n[n[A>>2]+4>>2],a=((Q(t,n[A+24>>2])<<10)+I|0)+(wA(A,g,o,!0&(0|a)==(0|t))<<10)|0,o=I+(B<<10)|0,I=I+(e<<10)|0,c?F(o,a,I):G(o,a,I),(r=r+1|0)>>>0>=C[A+20>>2])break A;e=e+1|0,I=B+1|0,B=n[A+24>>2]}}function rA(A,g){var I;n[A>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),n[A+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,n[A+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,n[A+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,n[A+20>>2]=0,n[A+24>>2]=0,n[A+28>>2]=0,n[A+32>>2]=0,n[A+36>>2]=0,n[A+16>>2]=I>>>8&1048575,n[A+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,n[A+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,n[A+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[A+80|0]=0,n[A+56>>2]=0,n[A+60>>2]=0,n[A+52>>2]=g}function aA(A,g,I){var e=0;A:if((0|A)!=(0|g)){if((g-A|0)-I>>>0<=0-(I<<1)>>>0)return W(A,g,I);if(e=3&(A^g),A>>>0>>0){if(e)e=A;else{if(3&A)for(e=A;;){if(!I)break A;if(a[0|e]=i[0|g],g=g+1|0,I=I+-1|0,!(3&(e=e+1|0)))break}else e=A;if(!(I>>>0<=3))for(;n[e>>2]=n[g>>2],g=g+4|0,e=e+4|0,(I=I+-4|0)>>>0>3;);}if(I)for(;a[0|e]=i[0|g],e=e+1|0,g=g+1|0,I=I+-1|0;);}else{if(!e){if(A+I&3)for(;;){if(!I)break A;if(a[0|(e=(I=I+-1|0)+A|0)]=i[g+I|0],!(3&e))break}if(!(I>>>0<=3))for(;n[(I=I+-4|0)+A>>2]=n[g+I>>2],I>>>0>3;);}if(!I)break A;for(;a[(I=I+-1|0)+A|0]=i[g+I|0],I;);}}return A}function tA(A,g,I,e){var B=0,r=0,t=0,n=0,C=0,Q=0;A:if(I|e)for(Q=A+224|0,t=A+96|0,B=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24;;){if(n=96+(A+B|0)|0,C=r=256-B|0,!e&I>>>0<=r>>>0|e>>>0<0){W(n,g,I),g=I+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,a[A+352|0]=g,a[A+353|0]=g>>>8,a[A+354|0]=g>>>16,a[A+355|0]=g>>>24;break A}if(W(n,g,r),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)+r|0,a[A+352|0]=B,a[A+353|0]=B>>>8,a[A+354|0]=B>>>16,a[A+355|0]=B>>>24,EA(A,128),D(A,t),W(t,Q,128),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,a[A+352|0]=B,a[A+353|0]=B>>>8,a[A+354|0]=B>>>16,a[A+355|0]=B>>>24,g=g+r|0,!((I=(r=I)-C|0)|(e=e-(r>>>0>>0)|0)))break}return 0}function nA(A,g){var I,e=0;p=I=p-48|0,function(A,g){var I,e,B,r,a,t,i,C,o=0;e=n[g+28>>2],B=n[g+24>>2],r=n[g+20>>2],a=n[g+16>>2],t=n[g+12>>2],i=n[g+8>>2],C=n[g+4>>2],o=n[g>>2],I=n[g+36>>2],g=n[g+32>>2],o=Q(((e+(B+(r+(a+(t+(i+(C+(o+(Q(I,19)+16777216>>>25|0)>>26)>>25)>>26)>>25)>>26)>>25)>>26)>>25)+g>>26)+I>>25,19)+o|0,n[A>>2]=67108863&o,o=C+(o>>26)|0,n[A+4>>2]=33554431&o,o=i+(o>>25)|0,n[A+8>>2]=67108863&o,o=t+(o>>26)|0,n[A+12>>2]=33554431&o,o=a+(o>>25)|0,n[A+16>>2]=67108863&o,o=r+(o>>26)|0,n[A+20>>2]=33554431&o,o=B+(o>>25)|0,n[A+24>>2]=67108863&o,o=e+(o>>26)|0,n[A+28>>2]=33554431&o,g=g+(o>>25)|0,n[A+32>>2]=67108863&g,n[A+36>>2]=I+(g>>26)&33554431}(I,g),g=n[I>>2],a[0|A]=g,a[A+2|0]=g>>>16,a[A+1|0]=g>>>8,e=n[I+4>>2],a[A+5|0]=e>>>14,a[A+4|0]=e>>>6,a[A+3|0]=e<<2|g>>>24,g=n[I+8>>2],a[A+8|0]=g>>>13,a[A+7|0]=g>>>5,a[A+6|0]=g<<3|e>>>22,e=n[I+12>>2],a[A+11|0]=e>>>11,a[A+10|0]=e>>>3,a[A+9|0]=e<<5|g>>>21,g=n[I+16>>2],a[A+15|0]=g>>>18,a[A+14|0]=g>>>10,a[A+13|0]=g>>>2,a[A+12|0]=g<<6|e>>>19,g=n[I+20>>2],a[A+16|0]=g,a[A+18|0]=g>>>16,a[A+17|0]=g>>>8,e=n[I+24>>2],a[A+21|0]=e>>>15,a[A+20|0]=e>>>7,a[A+19|0]=e<<1|g>>>24,g=n[I+28>>2],a[A+24|0]=g>>>13,a[A+23|0]=g>>>5,a[A+22|0]=g<<3|e>>>23,e=n[I+32>>2],a[A+27|0]=e>>>12,a[A+26|0]=e>>>4,a[A+25|0]=e<<4|g>>>21,g=n[I+36>>2],a[A+31|0]=g>>>18,a[A+30|0]=g>>>10,a[A+29|0]=g>>>2,a[A+28|0]=g<<6|e>>>20,p=I+48|0}function iA(A,g,I){var e=0,B=0,r=0,t=0;if(I&&(a[(e=A+I|0)-1|0]=g,a[0|A]=g,!(I>>>0<3||(a[e+-2|0]=g,a[A+1|0]=g,a[e+-3|0]=g,a[A+2|0]=g,I>>>0<7||(a[e+-4|0]=g,a[A+3|0]=g,I>>>0<9||(B=(e=0-A&3)+A|0,g=Q(255&g,16843009),n[B>>2]=g,n[(e=(I=I-e&-4)+B|0)-4>>2]=g,I>>>0<9||(n[B+8>>2]=g,n[B+4>>2]=g,n[e+-8>>2]=g,n[e+-12>>2]=g,I>>>0<25||(n[B+24>>2]=g,n[B+20>>2]=g,n[B+16>>2]=g,n[B+12>>2]=g,n[e+-16>>2]=g,n[e+-20>>2]=g,n[e+-24>>2]=g,n[e+-28>>2]=g,(I=I-(t=4&B|24)|0)>>>0<32))))))))for(e=g,r=g,g=B+t|0;n[g+24>>2]=r,n[g+28>>2]=e,n[g+16>>2]=r,n[g+20>>2]=e,n[g+8>>2]=r,n[g+12>>2]=e,n[g>>2]=r,n[g+4>>2]=e,g=g+32|0,(I=I+-32|0)>>>0>31;);return A}function CA(A,g){var I,e=0,B=0,r=0,t=0;for(p=I=p-464|0;B=e<<1,t=i[g+e|0],a[B+(I+400|0)|0]=15&t,a[(I+400|0)+(1|B)|0]=t>>>4,32!=(0|(e=e+1|0)););for(e=0;g=((B=(g=e)+i[0|(e=(I+400|0)+r|0)]|0)<<24)- -134217728|0,a[0|e]=B-(g>>24&240),e=g>>28,63!=(0|(r=r+1|0)););for(a[I+463|0]=i[I+463|0]+e,cI(A),e=1;GI(I,e>>>1|0,a[(I+400|0)+e|0]),ag(I+240|0,A,I),Mg(A,I+240|0),g=e>>>0<62,e=e+2|0,g;);for(gI(I+240|0,A),Kg(I+120|0,I+240|0),Cg(I+240|0,I+120|0),Kg(I+120|0,I+240|0),Cg(I+240|0,I+120|0),Kg(I+120|0,I+240|0),Cg(I+240|0,I+120|0),Mg(A,I+240|0),e=0;GI(I,e>>>1|0,a[(I+400|0)+e|0]),ag(I+240|0,A,I),Mg(A,I+240|0),g=e>>>0<62,e=e+2|0,g;);p=I+464|0}function QA(A,g,I,e,B,r,t,C,Q,o){var E,s=0;if(p=E=p-336|0,I&&(n[I>>2]=0,n[I+4>>2]=0),!r&B>>>0<4294967279|r>>>0<0)return KI(E+16|0,64,s=A+32|0,A),PI(E+80|0,E+16|0),Gg(E+16|0,64),FI(E+80|0,t,C,Q),FI(E+80|0,35712,0-C&15,0),iA(E+16|0,0,64),a[E+16|0]=o,ig(E+16|0,E+16|0,64,0,s,1,A),FI(E+80|0,E+16|0,64,0),a[0|g]=i[E+16|0],ig(t=g+1|0,e,B,r,s,2,A),FI(E+80|0,t,B,r),FI(E+80|0,35712,15&B,0),Fg(E+8|0,C,Q),FI(E+80|0,E+8|0,8,0),Fg(E+8|0,B- -64|0,r-((B>>>0<4294967232)+-1|0)|0),FI(E+80|0,E+8|0,8,0),xI(E+80|0,g=B+t|0),Gg(E+80|0,256),Ng(A+36|0,g),Hg(s),(2&o||Dg(s,4))&&L(A),I&&((A=B+17|0)>>>0<17&&(r=r+1|0),n[I>>2]=A,n[I+4>>2]=r),p=E+336|0,0;oI(),c()}function oA(A,g,I,e,B,r,a){var t,i,C,Q,o=0;return p=t=p-352|0,T(t,r,a),!B&I-A>>>0>=e>>>0|0>B>>>0|I>>>0<=A>>>0&&!(!B&A-I>>>0>>0|0>>0&&A>>>0>I>>>0)||(I=aA(A,I,e)),n[t+56>>2]=0,n[t+60>>2]=0,n[t+48>>2]=0,n[t+52>>2]=0,n[t+40>>2]=0,n[t+44>>2]=0,n[t+32>>2]=0,n[t+36>>2]=0,(i=!((a=(o=!B&e>>>0>32|B>>>0>0)?32:e)|(o=o?0:B)))||W(t- -64|0,I,a),Q=r+16|0,r=o,(C=a+32|0)>>>0<32&&(r=r+1|0),EI(t+32|0,t+32|0,C,r,Q,t),PI(t+96|0,t+32|0),i||W(A,t- -64|0,a),Gg(t+32|0,64),!B&e>>>0>=33|B>>>0>0&&sI(A+a|0,r=I+a|0,(I=e)-a|0,B-(o+(I>>>0>>0)|0)|0,Q,t),Gg(t,32),FI(t+96|0,A,e,B),xI(t+96|0,g),Gg(t+96|0,256),p=t+352|0,0}function cA(A,g,I,e,B,a,t){var i,C,Q=0,o=0,c=0;p=i=p-96|0,T(i,a,t),C=a+16|0,r[n[8951]](i+32|0,32,0,C,i),a=-1;A:{if(!(0|r[n[8945]](I,g,e,B,i+32|0))){if(a=0,!A)break A;!B&A-g>>>0>=e>>>0|0>B>>>0|A>>>0<=g>>>0&&!(!B&g-A>>>0>>0|0>>0&&g>>>0>A>>>0)||(g=aA(A,g,e)),I=(a=!B&e>>>0>32|B>>>0>0)?32:e,t=a=a?0:B,I|a?(Q=I,c=W(i- -64|0,g,I),a=t,(o=I+32|0)>>>0<32&&(a=a+1|0),EI(i+32|0,i+32|0,o,a,C,i),W(A,c,Q)):(a=t,(Q=I+32|0)>>>0<32&&(a=a+1|0),EI(o=i+32|0,c=i+32|0,Q,a,C,i)),a=0,!B&e>>>0<33|B>>>0<0||sI((Q=A)+(A=I)|0,A+g|0,e-A|0,B-(t+(e>>>0>>0)|0)|0,C,i)}Gg(i,32)}return p=i+96|0,a}function EA(A,g){var I,e,B=0,r=0;r=I=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,(B=g+(e=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0>>0&&(r=r+1|0),a[A+64|0]=B,a[A+65|0]=B>>>8,a[A+66|0]=B>>>16,a[A+67|0]=B>>>24,a[A+68|0]=r,a[A+69|0]=r>>>8,a[A+70|0]=r>>>16,a[A+71|0]=r>>>24,g=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,(B=(r=(0|r)==(0|I)&B>>>0>>0|r>>>0>>0)+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0>>0&&(g=g+1|0),a[A+72|0]=B,a[A+73|0]=B>>>8,a[A+74|0]=B>>>16,a[A+75|0]=B>>>24,a[A+76|0]=g,a[A+77|0]=g>>>8,a[A+78|0]=g>>>16,a[A+79|0]=g>>>24}function sA(A,g){n[A>>2]=1634760805,n[A+4>>2]=857760878,n[A+8>>2]=2036477234,n[A+12>>2]=1797285236,n[A+16>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,n[A+20>>2]=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,n[A+24>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,n[A+28>>2]=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,n[A+32>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,n[A+36>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,n[A+40>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,n[A+44>>2]=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24}function yA(A){var g=0,I=0,e=0;if(!A)return-25;if(!n[A>>2])return-1;A:{g:{if(g=-2,!(C[A+4>>2]<16)&&(n[A+8>>2]||(g=-18,!n[A+12>>2]))){if(I=n[A+20>>2],!n[A+16>>2])break g;if(g=-6,!(I>>>0<8)&&(n[A+24>>2]||(g=-20,!n[A+28>>2]))&&(n[A+32>>2]||(g=-21,!n[A+36>>2]))){if(!(I=n[A+48>>2]))return-16;if(g=-17,!(I>>>0>16777215||(g=-14,(e=n[A+44>>2])>>>0<8||(g=-15,e>>>0>2097152||(g=-14,e>>>0>>0))))){if(!n[A+40>>2])return-12;if(A=n[A+52>>2])break A;g=-28}}}return g}return I?-19:-6}return A>>>0>16777215?-29:0}function hA(A,g){for(var I=0,e=0,B=0,r=0,t=0,n=0,C=0,Q=0,o=0,c=0;a[A+I|0]=i[(I>>>3|0)+g|0]>>>(7&I)&1,256!=(0|(I=I+1|0)););for(B=254;;){n=(r=n)+1|0;A:if(!(!i[0|(t=A+r|0)]|r>>>0>254))for(g=1,c=(B>>>0<5?B:5)+1|0,I=n;;){C=g;g:if(e=a[0|(g=A+I|0)])if((0|(o=(Q=a[0|t])+(e<<=C)|0))<=15)a[0|t]=o,a[0|g]=0;else{if((0|(g=Q-e|0))<-15)break A;for(a[0|t]=g;;){if(!i[0|(g=A+I|0)]){a[0|g]=1;break g}if(a[0|g]=0,256==(0|(I=I+1|0)))break}}if(I=r+(g=C+1|0)|0,(0|C)==(0|c))break}if(B=B+-1|0,256==(0|n))break}}function fA(A,g,I){var e,B,r,a,t,i,C,Q,o,c,E,s,y,h,f,_,p,u,l,w;E=n[g+4>>2],e=n[A+4>>2],s=n[g+8>>2],B=n[A+8>>2],y=n[g+12>>2],r=n[A+12>>2],h=n[g+16>>2],a=n[A+16>>2],f=n[g+20>>2],t=n[A+20>>2],_=n[g+24>>2],i=n[A+24>>2],p=n[g+28>>2],C=n[A+28>>2],u=n[g+32>>2],Q=n[A+32>>2],l=n[g+36>>2],o=n[A+36>>2],c=n[A>>2],w=n[g>>2]^c,g=0-I|0,n[A>>2]=c^w&g,n[A+36>>2]=g&(o^l)^o,n[A+32>>2]=g&(Q^u)^Q,n[A+28>>2]=g&(C^p)^C,n[A+24>>2]=g&(i^_)^i,n[A+20>>2]=g&(t^f)^t,n[A+16>>2]=g&(a^h)^a,n[A+12>>2]=g&(r^y)^r,n[A+8>>2]=g&(B^s)^B,n[A+4>>2]=g&(e^E)^e}function _A(A,g,I,e){var B,r,a,t,i=0;p=B=p+-64|0,iA(B+8|0,0,52),i=MA(A),n[B+20>>2]=i,n[B+36>>2]=i,n[B+4>>2]=i,r=b(i),n[B+32>>2]=r,a=b(i),n[B+16>>2]=a,t=b(i),n[B>>2]=t;A:if(!t|!r|!a||!(i=b(i)))Y(r),Y(a),Y(t),A=-22;else{if(A=j(B,A,e)){Y(n[B+32>>2]),Y(n[B+16>>2]),Y(n[B>>2]),Y(i);break A}A=0,g=kA(n[B+40>>2],n[B+44>>2],n[B+52>>2],g,I,n[B+16>>2],n[B+20>>2],i,n[B+4>>2],0,0,e),Y(n[B+32>>2]),Y(n[B+16>>2]),(g||tg(i,n[B>>2],n[B+4>>2]))&&(A=-35),Y(i),Y(n[B>>2])}return p=B- -64|0,A}function pA(A,g){var I,e,B=0;p=I=p-288|0,x(e=A+40|0,g),HI(B=A+80|0),m(I+240|0,e),k(I+192|0,I+240|0,2128),uA(I+240|0,I+240|0,B),lA(I+192|0,I+192|0,B),m(I+144|0,I+192|0),k(I+144|0,I+144|0,I+192|0),m(A,I+144|0),k(A,A,I+192|0),k(A,A,I+240|0),function(A,g){var I,e=0;for(p=I=p-144|0,m(I+96|0,g),m(I+48|0,I+96|0),m(I+48|0,I+48|0),k(I+48|0,g,I+48|0),k(I+96|0,I+96|0,I+48|0),m(I+96|0,I+96|0),k(I+96|0,I+48|0,I+96|0),m(I+48|0,I+96|0),e=1;m(I+48|0,I+48|0),5!=(0|(e=e+1|0)););for(k(I+96|0,I+48|0,I+96|0),m(I+48|0,I+96|0),e=1;m(I+48|0,I+48|0),10!=(0|(e=e+1|0)););for(k(I+48|0,I+48|0,I+96|0),m(I,I+48|0),e=1;m(I,I),20!=(0|(e=e+1|0)););for(k(I+48|0,I,I+48|0),e=1;m(I+48|0,I+48|0),11!=(0|(e=e+1|0)););for(k(I+96|0,I+48|0,I+96|0),m(I+48|0,I+96|0),e=1;m(I+48|0,I+48|0),50!=(0|(e=e+1|0)););for(k(I+48|0,I+48|0,I+96|0),m(I,I+48|0),e=1;m(I,I),100!=(0|(e=e+1|0)););for(k(I+48|0,I,I+48|0),e=1;m(I+48|0,I+48|0),51!=(0|(e=e+1|0)););k(I+96|0,I+48|0,I+96|0),m(I+96|0,I+96|0),m(I+96|0,I+96|0),k(A,I+96|0,g),p=I+144|0}(A,A),k(A,A,I+144|0),k(A,A,I+240|0),m(I+96|0,A),k(I+96|0,I+96|0,I+192|0),uA(I+48|0,I+96|0,I+240|0);A:{if(!AI(I+48|0)){if(lA(I,I+96|0,I+240|0),B=-1,!AI(I))break A;k(A,A,2176)}(0|eI(A))==(i[g+31|0]>>>7|0)&&NA(A,A),k(A+120|0,A,e),B=0}return p=I+288|0,B}function uA(A,g,I){var e,B,r,a,t,i,C,Q,o,c,E,s,y,h,f,_,p,u;e=n[I+4>>2],B=n[g+4>>2],r=n[I+8>>2],a=n[g+8>>2],t=n[I+12>>2],i=n[g+12>>2],C=n[I+16>>2],Q=n[g+16>>2],o=n[I+20>>2],c=n[g+20>>2],E=n[I+24>>2],s=n[g+24>>2],y=n[I+28>>2],h=n[g+28>>2],f=n[I+32>>2],_=n[g+32>>2],p=n[I+36>>2],u=n[g+36>>2],n[A>>2]=n[g>>2]-n[I>>2],n[A+36>>2]=u-p,n[A+32>>2]=_-f,n[A+28>>2]=h-y,n[A+24>>2]=s-E,n[A+20>>2]=c-o,n[A+16>>2]=Q-C,n[A+12>>2]=i-t,n[A+8>>2]=a-r,n[A+4>>2]=B-e}function lA(A,g,I){var e,B,r,a,t,i,C,Q,o,c,E,s,y,h,f,_,p,u;e=n[I+4>>2],B=n[g+4>>2],r=n[I+8>>2],a=n[g+8>>2],t=n[I+12>>2],i=n[g+12>>2],C=n[I+16>>2],Q=n[g+16>>2],o=n[I+20>>2],c=n[g+20>>2],E=n[I+24>>2],s=n[g+24>>2],y=n[I+28>>2],h=n[g+28>>2],f=n[I+32>>2],_=n[g+32>>2],p=n[I+36>>2],u=n[g+36>>2],n[A>>2]=n[I>>2]+n[g>>2],n[A+36>>2]=p+u,n[A+32>>2]=f+_,n[A+28>>2]=y+h,n[A+24>>2]=E+s,n[A+20>>2]=o+c,n[A+16>>2]=C+Q,n[A+12>>2]=t+i,n[A+8>>2]=r+a,n[A+4>>2]=e+B}function wA(A,g,I,e){var B=0,r=0;A:{g:{I:{e:{B:{if(!n[g>>2]){if(B=i[g+8|0],r=n[g+12>>2]+-1|0,!B)break e;if(B=Q(B,n[A+20>>2]),g=n[g+12>>2],!e)break B;r=(g+B|0)-1|0;break e}if(B=n[A+20>>2],A=n[A+24>>2],!e)break I;e=n[g+12>>2]+((-1^B)+A|0)|0;break g}r=B-!g|0}e=r,A=n[A+24>>2],r=0;break A}e=(A-B|0)-!n[g+12>>2]|0}r=0,3!=(0|(g=i[g+8|0]))&&(r=Q(B,g+1|0))}return B=r,g=0,(B=(r=e+-1|0)+B|0)>>>0>>0&&(g=1),kI(I,0,I,0),kI(e,0,w,0),function(A,g,I){var e=0,B=0,r=0,a=0,t=0,n=0,i=0,C=0,c=0;A:{g:{I:{e:{B:{r:{a:{t:{n:{if(B=g){if(!(e=I))break n;break t}return u=A-Q((A>>>0)/(I>>>0)|0,I)|0,l=0,void(w=0)}if(!A)break a;break r}if(!((a=e+-1|0)&e))break B;t=0-(a=(o(e)+33|0)-o(B)|0)|0;break I}return u=0,l=B,void(w=0)}if((e=32-o(B)|0)>>>0<31)break e;break g}if(u=A&a,l=0,1==(0|e))break A;return I=31&(A=e?31-o(e+-1^e)|0:32),void(w=32<=(63&A)>>>0?0:g>>>I|0)}a=e+1|0,t=63-e|0}if(e=g,r=31&(B=63&a),32<=B>>>0?(B=0,r=e>>>r|0):(B=e>>>r|0,r=((1<>>r),e=31&(t&=63),32<=t>>>0?(g=A<>>32-e|g<>>31)-(C=I&(n=e-((B=B<<1|r>>>31)+(t>>>0>>0)|0)>>31))|0,B=B-(i>>>0>>0)|0,g=g<<1|A>>>31,A=c|A<<1,c=1&n,a=a+-1|0;);return u=r,l=B,void(w=g<<1|A>>>31)}u=A,l=g,g=0}w=g}(B-(I=w)|0,g-(B>>>0>>0)|0,A),w=l,u}function DA(A,g,I,e,B){var r;if(p=r=p-192|0,!(!I|(g+-1&255)>>>0>=64))return t[r+130>>1]=257,a[r+129|0]=32,a[r+128|0]=g,nI(r+128|4),Fg(r+128|8,0,0),n[r+152>>2]=0,n[r+156>>2]=0,n[r+144>>2]=0,n[r+148>>2]=0,e?function(A,g){var I,e=0;e=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,a[A+32|0]=I,a[A+33|0]=I>>>8,a[A+34|0]=I>>>16,a[A+35|0]=I>>>24,a[A+36|0]=e,a[A+37|0]=e>>>8,a[A+38|0]=e>>>16,a[A+39|0]=e>>>24,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,a[A+40|0]=g,a[A+41|0]=g>>>8,a[A+42|0]=g>>>16,a[A+43|0]=g>>>24,a[A+44|0]=e,a[A+45|0]=e>>>8,a[A+46|0]=e>>>16,a[A+47|0]=e>>>24}(r+128|0,e):(n[r+168>>2]=0,n[r+172>>2]=0,n[r+160>>2]=0,n[r+164>>2]=0),B?function(A,g){var I,e=0;e=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,I=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,a[A+48|0]=I,a[A+49|0]=I>>>8,a[A+50|0]=I>>>16,a[A+51|0]=I>>>24,a[A+52|0]=e,a[A+53|0]=e>>>8,a[A+54|0]=e>>>16,a[A+55|0]=e>>>24,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,a[A+56|0]=g,a[A+57|0]=g>>>8,a[A+58|0]=g>>>16,a[A+59|0]=g>>>24,a[A+60|0]=e,a[A+61|0]=e>>>8,a[A+62|0]=e>>>16,a[A+63|0]=e>>>24}(r+128|0,B):(n[r+184>>2]=0,n[r+188>>2]=0,n[r+176>>2]=0,n[r+180>>2]=0),dA(A,r+128|0),iA(r+32|0,0,96),tA(g=A,A=W(r,I,32),128,0),Gg(A,128),void(p=A+192|0);oI(),c()}function vA(A){var g,I=0,e=0,B=0,r=0;for(a[11+(g=p-16|0)|0]=0,a[g+12|0]=0,a[g+13|0]=0,a[g+14|0]=0,n[g+8>>2]=0;;){for(B=i[A+e|0],I=0;a[0|(r=(g+8|0)+I|0)]=i[0|r]|B^i[(3232+(I<<5)|0)+e|0],7!=(0|(I=I+1|0)););if(31==(0|(e=e+1|0)))break}for(e=127&i[A+31|0],A=0,I=0;a[0|(B=(g+8|0)+I|0)]=i[0|B]|e^i[3263+(I<<5)|0],7!=(0|(I=I+1|0)););for(I=0;I=i[(g+8|0)+A|0]+-1|I,7!=(0|(A=A+1|0)););return I>>>8&1}function dA(A,g){var I=0,e=0,B=0,r=0,t=0;for(iA(W(A,1952,64)- -64|0,0,293);B=e=(I=r<<3)+A|0,I=g+I|0,t=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^(i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24),I=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^t,a[0|B]=I,a[B+1|0]=I>>>8,a[B+2|0]=I>>>16,a[B+3|0]=I>>>24,a[B+4|0]=e,a[B+5|0]=e>>>8,a[B+6|0]=e>>>16,a[B+7|0]=e>>>24,8!=(0|(r=r+1|0)););}function bA(A,g){var I,e=0,B=0,r=0,a=0;if(p=I=p-48|0,!((e=yA(A))||(e=-26,g+-1>>>0>1||(r=n[A+44>>2],e=n[A+48>>2],n[I>>2]=0,B=n[A+40>>2],n[I+28>>2]=e,n[I+12>>2]=-1,n[I+8>>2]=B,e=((B=r>>>0<(B=e<<3)>>>0?B:r)>>>0)/((r=e<<2)>>>0)|0,n[I+20>>2]=e,n[I+24>>2]=e<<2,n[I+16>>2]=Q(e,r),e=n[A+52>>2],n[I+36>>2]=g,n[I+32>>2]=e,e=function(A,g){var I,e=0;return p=I=p-80|0,e=-25,!A|!g||(e=b(n[A+20>>2]<<3),n[A+4>>2]=e,e?(e=function(A,g){var I,e=0,B=0;p=I=p-16|0,B=-22;A:if(!(!A|!g)&&1024==(((e=g<<10)>>>0)/(g>>>0)|0)&&(g=b(12),n[A>>2]=g,g)){n[g>>2]=0,n[g+4>>2]=0,g=function(A,g){if(4294967168>>0)A=48;else{if(!(g=function(A){var g=0,I=0,e=0,B=0,r=0,a=0;return 4294967168<=A>>>0?(n[8960]=48,0):(A=b(76+(e=A>>>0<11?16:A+11&-8)|0))?(g=A+-8|0,63&A?(B=(-8&(a=n[(r=A+-4|0)>>2]))-(I=(A=(A=(A+63&-64)-8|0)-g>>>0>15?A:A- -64|0)-g|0)|0,3&a?(n[A+4>>2]=B|1&n[A+4>>2]|2,n[4+(B=A+B|0)>>2]=1|n[B+4>>2],n[r>>2]=I|1&n[r>>2]|2,n[A+4>>2]=1|n[A+4>>2],H(g,I)):(g=n[g>>2],n[A+4>>2]=B,n[A>>2]=g+I)):A=g,3&(g=n[A+4>>2])&&((I=-8&g)>>>0<=e+16>>>0||(n[A+4>>2]=e|1&g|2,g=A+e|0,e=I-e|0,n[g+4>>2]=3|e,n[4+(I=A+I|0)>>2]=1|n[I+4>>2],H(g,e))),A+8|0):0}(g)))return 48;n[A>>2]=g,A=0}return A}(I+12|0,e),n[8960]=g;g:{if(g)n[I+12>>2]=0;else if(g=n[I+12>>2])break g;Y(n[A>>2]),n[A>>2]=0;break A}n[n[A>>2]>>2]=g,n[n[A>>2]+4>>2]=g,n[n[A>>2]+8>>2]=e,B=0}return p=I+16|0,B}(A,n[A+16>>2]))?kg(A,n[g+56>>2]):(gA(I,g,n[A+36>>2]),Gg(I- -64|0,8),function(A,g){var I,e=0,B=0,r=0;if(p=I=p-1024|0,n[g+28>>2])for(r=A+68|0,B=A- -64|0;II(B,0),II(r,e),J(I,1024,A,72),eg(n[n[g>>2]+4>>2]+(Q(n[g+24>>2],e)<<10)|0,I),II(B,1),J(I,1024,A,72),eg(1024+(n[n[g>>2]+4>>2]+(Q(n[g+24>>2],e)<<10)|0)|0,I),(e=e+1|0)>>>0>2];);Gg(I,1024),p=I+1024|0}(I,A),Gg(I,72),e=0):e=-22),p=I+80|0,e}(I,A))))){if(n[I+8>>2])for(;YA(I,a),(a=a+1|0)>>>0>2];);!function(A,g){var I,e=0,B=0;if(p=I=p-2048|0,!(!A|!g)){if(TI(I+1024|0,(n[n[g>>2]+4>>2]+(n[g+24>>2]<<10)|0)-1024|0),C[g+28>>2]>=2)for(e=1;B=n[g+24>>2],hg(I+1024|0,(n[n[g>>2]+4>>2]+(B+Q(e,B)<<10)|0)-1024|0),(e=e+1|0)>>>0>2];);!function(A,g){for(var I=0,e=0;Fg((I=e<<3)+A|0,n[(I=g+I|0)>>2],n[I+4>>2]),128!=(0|(e=e+1|0)););}(I,I+1024|0),J(n[A>>2],n[A+4>>2],I,1024),Gg(I+1024|0,1024),Gg(I,1024),kg(g,n[A+56>>2])}p=I+2048|0}(A,I),e=0}return p=I+48|0,e}function kA(A,g,I,e,B,r,a,t,i,C,Q,o){var c,E;return p=c=p+-64|0,(E=b(i))?(n[c+32>>2]=0,n[c+36>>2]=0,n[c+24>>2]=0,n[c+28>>2]=0,n[c+20>>2]=a,n[c+16>>2]=r,n[c+12>>2]=B,n[c+8>>2]=e,n[c+4>>2]=i,n[c>>2]=E,n[c+56>>2]=0,n[c+52>>2]=I,n[c+48>>2]=I,n[c+44>>2]=g,n[c+40>>2]=A,(I=bA(c,o))?Gg(E,i):!C|!Q||!R(C,Q,c,o)?(t&&W(t,E,i),Gg(E,i),I=0):(Gg(E,i),Gg(C,Q),I=-31),Y(E)):I=-22,p=c- -64|0,I}function FA(A,g,I,e,B){var r,a=0,t=0;p=r=p+-64|0;A:{g:{if((a=MA(A))>>>0<128&&!I|I>>>0<0){if(I=iA(r,0,60),t=function(A){var g=0,I=0;return g=0,A&&(I=A,g=A,(1|A)>>>0<65536||(g=I)),I=g,!(A=b(g))|!(3&i[A+-4|0])||iA(A,0,I),A}(a))break g}else n[8960]=28;A=-1;break A}n[I+32>>2]=0,n[I+36>>2]=0,n[I+8>>2]=t,n[I+16>>2]=t,n[I+20>>2]=a,n[I>>2]=t,n[I+12>>2]=a,n[I+24>>2]=0,n[I+28>>2]=0,n[I+4>>2]=a,j(I,A,B)?(n[8960]=28,A=-1):(A=1,(0|g)==n[I+40>>2]&&(A=n[I+44>>2]!=(e>>>10|0))),Y(t)}return p=r- -64|0,A}function GA(A,g,I,e,B,r){var a,t,n=0,i=0,C=0;return p=a=p-592|0,n=-1,lg(t=A+32|0)&&(vA(A)||bg(B)&&(vA(B)||pA(a+128|0,B)||(lI(a+384|0,r),V(a+384|0,A,32,0),V(a+384|0,B,32,0),V(a+384|0,g,I,e),jg(a+384|0,a+320|0),d(a+320|0),X(a+8|0,a+320|0,a+128|0,t),wg(a+288|0,a+8|0),i=-1,C=RI(a+288|0,A),n=((a+288|0)==(0|A)?i:C)|tg(A,a+288|0,32)))),p=a+592|0,n}function mA(A,g,I,e,B,r,a,t,n,i){var C;return p=C=p-352|0,KI(C+32|0,64,n,i),PI(C+96|0,C+32|0),Gg(C+32|0,64),FI(C+96|0,r,a,t),FI(C+96|0,34688,0-a&15,0),FI(C+96|0,g,I,e),FI(C+96|0,34688,0-I&15,0),Fg(C+24|0,a,t),FI(C+96|0,C+24|0,8,0),Fg(C+24|0,I,e),FI(C+96|0,C+24|0,8,0),xI(C+96|0,C),Gg(C+96|0,256),B=JI(C,B),Gg(C,16),A&&(B?(iA(A,0,I),B=-1):(ig(A,g,I,e,n,1,i),B=0)),p=C+352|0,B}function YA(A,g){var I,e=0,B=0,r=0;if(p=I=p-32|0,!(!A|!n[A+28>>2]))for(n[I+16>>2]=g,e=1;;){if(a[I+24|0]=B,g=0,r=0,e)for(;n[I+28>>2]=0,e=n[I+28>>2],n[I+8>>2]=n[I+24>>2],n[I+12>>2]=e,n[I+20>>2]=g,e=n[I+20>>2],n[I>>2]=n[I+16>>2],n[I+4>>2]=e,BA(A,I),(g=g+1|0)>>>0<(r=n[A+28>>2])>>>0;);if(e=r,4==(0|(B=B+1|0)))break}p=I+32|0}function HA(A,g,I,e,B,r,a,t,i,C,Q){var o;return p=o=p-336|0,KI(o+16|0,64,C,Q),PI(o+80|0,o+16|0),Gg(o+16|0,64),FI(o+80|0,a,t,i),FI(o+80|0,34688,0-t&15,0),ig(A,e,B,r,C,1,Q),FI(o+80|0,A,B,r),FI(o+80|0,34688,0-B&15,0),Fg(o+8|0,t,i),FI(o+80|0,o+8|0,8,0),Fg(o+8|0,B,r),FI(o+80|0,o+8|0,8,0),xI(o+80|0,g),Gg(o+80|0,256),I&&(n[I>>2]=16,n[I+4>>2]=0),p=o+336|0,0}function SA(A,g,I,e,B,r,a,t,n,i){var C;return p=C=p-352|0,bI(C+32|0,n,i),PI(C+96|0,C+32|0),Gg(C+32|0,64),FI(C+96|0,r,a,t),Fg(C+24|0,a,t),FI(C+96|0,C+24|0,8,0),FI(C+96|0,g,I,e),Fg(C+24|0,I,e),FI(C+96|0,C+24|0,8,0),xI(C+96|0,C),Gg(C+96|0,256),B=JI(C,B),Gg(C,16),A&&(B?(iA(A,0,I),B=-1):(Tg(A,g,I,e,n,i),B=0)),p=C+352|0,B}function UA(A,g){var I,e=0,B=0,r=0,a=0,t=0;A:if(!(((I=i[0|A])+-48&255)>>>0>9)){for(B=I,e=A;;){if(a=e,r>>>0>429496729)break A;if((e=(255&B)-48|0)>>>0>(-1^(B=Q(r,10)))>>>0)break A;if(r=e+B|0,!(((B=i[0|(e=a+1|0)])+-48&255)>>>0<10))break}(0|A)==(0|e)|(48==(0|I)?(0|A)!=(0|a):0)||(n[g>>2]=r,t=e)}return t}function MA(A){var g=0,I=0,e=0;A:{g:if(3&(g=A)){if(!i[0|A])return 0;for(;;){if(!(3&(g=g+1|0)))break g;if(!i[0|g])break}break A}for(;I=g,g=g+4|0,!((-1^(e=n[I>>2]))&e+-16843009&-2139062144););if(!(255&e))return I-A|0;for(;e=i[I+1|0],I=g=I+1|0,e;);}return g-A|0}function NA(A,g){var I,e,B,r,a,t,i,C,Q;I=n[g+4>>2],e=n[g+8>>2],B=n[g+12>>2],r=n[g+16>>2],a=n[g+20>>2],t=n[g+24>>2],i=n[g+28>>2],C=n[g+32>>2],Q=n[g+36>>2],n[A>>2]=0-n[g>>2],n[A+36>>2]=0-Q,n[A+32>>2]=0-C,n[A+28>>2]=0-i,n[A+24>>2]=0-t,n[A+20>>2]=0-a,n[A+16>>2]=0-r,n[A+12>>2]=0-B,n[A+8>>2]=0-e,n[A+4>>2]=0-I}function PA(A,g,I){var e=0;e=g<<8&16711680|g<<24,e|=255&(I<<8|g>>>24)|65280&(I<<24|g>>>8),g=-16777216&((255&I)<<24|g>>>8)|16711680&((16777215&I)<<8|g>>>24)|I>>>8&65280|I>>>24|0,a[0|A]=g,a[A+1|0]=g>>>8,a[A+2|0]=g>>>16,a[A+3|0]=g>>>24,g=e,a[A+4|0]=g,a[A+5|0]=g>>>8,a[A+6|0]=g>>>16,a[A+7|0]=g>>>24}function xA(A,g,I){var e;e=A,I?(n[A+48>>2]=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,I=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24):(n[A+48>>2]=0,I=0),n[e+52>>2]=I,n[A+56>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,n[A+60>>2]=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24}function RA(A,g){var I,e,B,r,a,t,i,C,Q;I=n[g+8>>2],e=n[g+12>>2],B=n[g+16>>2],r=n[g+20>>2],a=n[g+24>>2],t=n[g+28>>2],i=n[g>>2],C=n[g+4>>2],Q=n[g+36>>2],n[A+32>>2]=n[g+32>>2],n[A+36>>2]=Q,n[A+24>>2]=a,n[A+28>>2]=t,n[A+16>>2]=B,n[A+20>>2]=r,n[A+8>>2]=I,n[A+12>>2]=e,n[A>>2]=i,n[A+4>>2]=C}function JA(A,g,I,e,B,r,a,t,i,C,Q){var o;return p=o=p-336|0,bI(o+16|0,C,Q),PI(o+80|0,o+16|0),Gg(o+16|0,64),FI(o+80|0,a,t,i),Fg(o+8|0,t,i),FI(o+80|0,o+8|0,8,0),Tg(A,e,B,r,C,Q),FI(o+80|0,A,B,r),Fg(o+8|0,B,r),FI(o+80|0,o+8|0,8,0),xI(o+80|0,g),Gg(o+80|0,256),I&&(n[I>>2]=16,n[I+4>>2]=0),p=o+336|0,0}function KA(A){var g;return g=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,w=65280&(A<<24|g>>>8)|255&(A<<8|g>>>24)|g<<8&16711680|g<<24,-16777216&((255&A)<<24|g>>>8)|16711680&((16777215&A)<<8|g>>>24)|A>>>8&65280|A>>>24|0}function LA(A,g,I,e,B,r,a,t,C,Q,o){var c;return p=c=p-48|0,n[c+4>>2]=0,K(c+16|0,Q,o),o=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,Q=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,n[c+8>>2]=o,n[c+12>>2]=Q,function(A,g,I,e,B,r,a,t,i,C,Q){var o;p=o=p-336|0,dI(o+16|0,64,C,Q),PI(o+80|0,o+16|0),Gg(o+16|0,64),FI(o+80|0,a,t,i),FI(o+80|0,34704,0-t&15,0),Lg(A,e,B,r,C,1,Q),FI(o+80|0,A,B,r),FI(o+80|0,34704,0-B&15,0),Fg(o+8|0,t,i),FI(o+80|0,o+8|0,8,0),Fg(o+8|0,B,r),FI(o+80|0,o+8|0,8,0),xI(o+80|0,g),Gg(o+80|0,256),I&&(n[I>>2]=16,n[I+4>>2]=0),p=o+336|0}(A,g,I,e,B,r,a,t,C,c+4|0,c+16|0),Gg(c+16|0,32),p=c+48|0,0}function TA(A,g,I,e,B,r,a,t,C,Q){var o;return p=o=p-48|0,n[o+4>>2]=0,K(o+16|0,C,Q),Q=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,C=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,n[o+8>>2]=Q,n[o+12>>2]=C,A=function(A,g,I,e,B,r,a,t,n,i){var C;return p=C=p-352|0,dI(C+32|0,64,n,i),PI(C+96|0,C+32|0),Gg(C+32|0,64),FI(C+96|0,r,a,t),FI(C+96|0,34704,0-a&15,0),FI(C+96|0,g,I,e),FI(C+96|0,34704,0-I&15,0),Fg(C+24|0,a,t),FI(C+96|0,C+24|0,8,0),Fg(C+24|0,I,e),FI(C+96|0,C+24|0,8,0),xI(C+96|0,C),Gg(C+96|0,256),B=JI(C,B),Gg(C,16),A&&(B?(iA(A,0,I),B=-1):(Lg(A,g,I,e,n,1,i),B=0)),p=C+352|0,B}(A,g,I,e,B,r,a,t,o+4|0,o+16|0),Gg(o+16|0,32),p=o+48|0,A}function qA(A,g,I,e){var B;if(p=B=p-192|0,!(!I|(g+-1&255)>>>0>=64|(e+-1&255)>>>0>=64))return t[B+130>>1]=257,a[B+129|0]=e,a[B+128|0]=g,nI(B+128|4),Fg(B+128|8,0,0),iA(B+144|0,0,48),dA(A,B+128|0),iA(e+B|0,0,128-e|0),tA(g=A,A=W(B,I,e),128,0),Gg(A,128),p=A+192|0,0;oI(),c()}function XA(A,g,I,e,B,r,a,t,i,C){var Q=0,o=0;return Q=-1,!B&e>>>0>=16|B>>>0>0&&(o=A,A=B+-1|0,(Q=e+-16|0)>>>0<4294967280&&(A=A+1|0),Q=mA(o,I,Q,A,(I+e|0)-16|0,r,a,t,i,C)),g&&(A=B+-1|0,(I=e+-16|0)>>>0<4294967280&&(A=A+1|0),n[(r=g)>>2]=Q?0:I,n[g+4>>2]=Q?0:A),Q}function VA(A,g,I,e,B,r,a,t,i,C){var Q=0,o=0;return Q=-1,!B&e>>>0>=16|B>>>0>0&&(o=A,A=B+-1|0,(Q=e+-16|0)>>>0<4294967280&&(A=A+1|0),Q=TA(o,I,Q,A,(I+e|0)-16|0,r,a,t,i,C)),g&&(A=B+-1|0,(I=e+-16|0)>>>0<4294967280&&(A=A+1|0),n[(r=g)>>2]=Q?0:I,n[g+4>>2]=Q?0:A),Q}function WA(A,g,I,e,B,r,a,t,i,C){var Q=0,o=0;return Q=-1,!B&e>>>0>=16|B>>>0>0&&(o=A,A=B+-1|0,(Q=e+-16|0)>>>0<4294967280&&(A=A+1|0),Q=SA(o,I,Q,A,(I+e|0)-16|0,r,a,t,i,C)),g&&(A=B+-1|0,(I=e+-16|0)>>>0<4294967280&&(A=A+1|0),n[(r=g)>>2]=Q?0:I,n[g+4>>2]=Q?0:A),Q}function OA(A,g,I){n[A+48>>2]=I?i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24:0,n[A+52>>2]=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,n[A+56>>2]=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,n[A+60>>2]=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24}function jA(A,g,I,e,B,r,a){var t;return p=t=p-16|0,A=iA(A,0,128),e|=r,a>>>0<2147483649&&!e|e>>>0<0?a>>>0>8191&&B|r?(mg(t,16),A=kA(B,a>>>10|0,1,g,I,t,16,0,32,A,128,2)?-1:0):(n[8960]=28,A=-1):(n[8960]=22,A=-1),p=t+16|0,A}function ZA(A){var g=0;return(0-(g=A+4&(A+65488>>>8^-1)&(57-A>>>8^-1)&255|((g=A+-65|0)>>>8^-1)&g&(90-A>>>8^-1)&255|A+185&(A+65439>>>8^-1)&(122-A>>>8^-1)&255|63&(1+(16288^A)>>>8^-1)|62&(1+(16338^A)>>>8^-1))>>>8^-1)&1+(65470^A)>>>8&255|g}function zA(A){var g=0;return(0-(g=A+4&(A+65488>>>8^-1)&(57-A>>>8^-1)&255|((g=A+-65|0)>>>8^-1)&g&(90-A>>>8^-1)&255|A+185&(A+65439>>>8^-1)&(122-A>>>8^-1)&255|63&(1+(16336^A)>>>8^-1)|62&(1+(16340^A)>>>8^-1))>>>8^-1)&1+(65470^A)>>>8&255|g}function $A(A,g){var I,e,B=0,r=0,t=0,n=0;for(p=I=p-16|0,B=10;n=B,t=(g>>>0)/10|0,a[0|(r=(B=B+-1|0)+(I+6|0)|0)]=g-Q(t,10)|48,!(g>>>0<10)&&(g=t,B););e=W(g=A,r,A=11-n|0)+A|0,a[0|e]=0,p=I+16|0}function Ag(A,g,I){var e=0,B=0,r=0;if(!I)return 0;A:if(e=i[0|A]){for(;;){if((0|(B=i[0|g]))==(0|e)&&!(!(I=I+-1|0)|!B)){if(g=g+1|0,e=i[A+1|0],A=A+1|0,e)continue;break A}break}r=e}return(255&r)-i[0|g]|0}function gg(A,g,I){var e,B,r,a=0;p=B=p-48|0,lA(A,a=g+40|0,g),uA(e=A+40|0,a,g),k(a=A+80|0,A,I),k(e,e,I+40|0),k(r=A+120|0,I+120|0,g+120|0),k(A,g+80|0,I+80|0),lA(B,A,A),uA(A,a,e),lA(e,a,e),lA(a,B,r),uA(r,B,r),p=B+48|0}function Ig(A,g,I){var e,B,r,a=0;p=B=p-48|0,lA(A,a=g+40|0,g),uA(e=A+40|0,a,g),k(a=A+80|0,A,I+40|0),k(e,e,I),k(r=A+120|0,I+120|0,g+120|0),k(A,g+80|0,I+80|0),lA(B,A,A),uA(A,a,e),lA(e,a,e),uA(a,B,r),lA(r,B,r),p=B+48|0}function eg(A,g){for(var I=0,e=0,B=0,r=0;B=(I=e<<3)+A|0,r=i[0|(I=g+I|0)]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,I=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,n[B>>2]=r,n[B+4>>2]=I,128!=(0|(e=e+1|0)););}function Bg(A,g,I){var e;if(n[12+(e=p-16|0)>>2]=A,n[e+8>>2]=g,g=0,n[e+4>>2]=0,(0|I)>=1)for(;n[e+4>>2]=n[e+4>>2]|i[n[e+8>>2]+g|0]^i[n[e+12>>2]+g|0],(0|I)!=(0|(g=g+1|0)););return(n[e+4>>2]+-1>>>8&1)-1|0}function rg(A,g,I){var e,B,r,a=0;p=B=p-48|0,lA(A,a=g+40|0,g),uA(e=A+40|0,a,g),k(a=A+80|0,A,I+40|0),k(e,e,I),k(r=A+120|0,I+80|0,g+120|0),lA(B,g=g+80|0,g),uA(A,a,e),lA(e,a,e),uA(a,B,r),lA(r,B,r),p=B+48|0}function ag(A,g,I){var e,B,r,a=0;p=B=p-48|0,lA(A,a=g+40|0,g),uA(e=A+40|0,a,g),k(a=A+80|0,A,I),k(e,e,I+40|0),k(r=A+120|0,I+80|0,g+120|0),lA(B,g=g+80|0,g),uA(A,a,e),lA(e,a,e),lA(a,B,r),uA(r,B,r),p=B+48|0}function tg(A,g,I){var e;if(n[12+(e=p-16|0)>>2]=A,n[e+8>>2]=g,g=0,a[e+7|0]=0,I)for(;a[e+7|0]=i[e+7|0]|i[n[e+8>>2]+g|0]^i[n[e+12>>2]+g|0],(0|I)!=(0|(g=g+1|0)););return(i[e+7|0]+-1>>>8&1)-1|0}function ng(A,g,I){var e,B=0,t=0;if(p=e=p-16|0,a[e+15|0]=0,t=-1,!(0|r[n[8949]](A,g,I))){for(;a[e+15|0]=i[A+B|0]|i[e+15|0],32!=(0|(B=B+1|0)););t=0-(i[e+15|0]+-1>>>8&1)|0}return p=e+16|0,t}function ig(A,g,I,e,B,r,a){var t,n=0,i=0;n=e,(i=I+63|0)>>>0<63&&(n=n+1|0),t=n>>>6|0,i=0-(n=(63&n)<<26|i>>>6)|0,!(n=1-(t+(0>>0)|0)|0)&i>>>0>>0|n>>>0<0&&(oI(),c()),Lg(A,g,I,e,B,r,a)}function Cg(A,g){var I,e,B,r,a;p=e=p-48|0,m(A,g),m(I=A+80|0,a=g+40|0),function(A,g){var I,e,B,r,a,t,i,C,o,c,E,s,y,h,f,_,p,u,l,D,v,d,b,k,F,G,m,Y,H,S,U,M,N,P,x,R,J,K=0,L=0,T=0,q=0,X=0,V=0,W=0,O=0,j=0,Z=0,z=0,$=0,AA=0,gA=0,IA=0,eA=0,BA=0,rA=0,aA=0,tA=0,nA=0;tA=A,r=K=(X=n[g+12>>2])<<1,a=K>>31,t=K=(j=n[g+4>>2])<<1,K=kI(r,a,K,I=K>>31),T=w,L=K,d=K=gA=n[g+8>>2],q=kI(K,$=K>>31,K,$),K=w+T|0,K=(L=L+q|0)>>>0>>0?K+1|0:K,q=L,i=L=eA=n[g+16>>2],C=L>>31,o=L=(BA=n[g>>2])<<1,T=kI(i,C,L,e=L>>31),K=w+K|0,K=(L=q+T|0)>>>0>>0?K+1|0:K,W=L,T=n[g+28>>2],l=L=Q(T,38),H=T,q=kI(L,_=L>>31,T,b=T>>31),K=w+K|0,K=(L=W+q|0)>>>0>>0?K+1|0:K,V=L,W=n[g+32>>2],O=kI(E=L=Q(W,19),s=L>>31,L=(q=n[g+24>>2])<<1,L>>31),L=w+K|0,L=(Z=V+O|0)>>>0>>0?L+1|0:L,V=Z,AA=n[g+36>>2],c=K=Q(AA,38),B=K>>31,p=g=(Z=n[g+20>>2])<<1,O=kI(K,B,g,h=g>>31),g=w+L|0,k=(K=V+O|0)<<1,P=K=(K>>>0>>0?g+1|0:g)<<1|K>>>31,(g=k+33554432|0)>>>0<33554432&&(K=K+1|0),S=g,x=K,g=K>>26,K=(67108863&K)<<6|S>>>26,L=kI(t,I,i,C),O=w,V=K,u=K=gA<<1,rA=X,X=kI(K,f=K>>31,X,F=X>>31),K=w+O|0,K=(L=X+L|0)>>>0>>0?K+1|0:K,gA=Z,X=(O=kI(Z,D=Z>>31,o,e))+L|0,L=w+K|0,L=X>>>0>>0?L+1|0:L,IA=X,U=K=T<<1,X=kI(E,s,K,G=K>>31),K=w+L|0,K=(T=IA+X|0)>>>0>>0?K+1|0:K,L=T,X=q,T=kI(c,B,q,y=q>>31),K=w+K|0,K=(L=L+T|0)>>>0>>0?K+1|0:K,T=L,g=g+(L=K<<1|L>>>31)|0,aA=K=V+(T<<=1)|0,K=K>>>0>>0?g+1|0:g,(g=aA+16777216|0)>>>0<16777216&&(K=K+1|0),R=g,g=(33554431&K)<<7|g>>>25,T=K>>25,K=kI(r,a,rA,F),L=w,V=g,g=(O=kI(i,C,u,f))+K|0,K=w+L|0,K=g>>>0>>0?K+1|0:K,L=kI(t,I,p,h),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=(O=kI(o,e,X,y))+g|0,g=w+K|0,g=L>>>0>>0?g+1|0:g,O=W,W=kI(E,s,W,v=W>>31),K=w+g|0,K=(L=W+L|0)>>>0>>0?K+1|0:K,g=(W=kI(c,B,U,G))+L|0,L=w+K|0,g=((K=g)>>>0>>0?L+1|0:L)<<1|K>>>31,W=K<<1,K=g+T|0,K=(L=V+W|0)>>>0>>0?K+1|0:K,(L=(g=L)+33554432|0)>>>0<33554432&&(K=K+1|0),IA=L,T=K,K=-67108864&L,n[tA+24>>2]=g-K,W=A,g=kI(g=Q(Z,38),g>>31,gA,D),K=w,V=g,Z=kI(g=BA,L=g>>31,g,L),L=w+K|0,L=(g=V+Z|0)>>>0>>0?L+1|0:L,K=g,z=g=Q(q,19),m=g>>31,M=g=eA<<1,g=K+(q=kI(z,m,g,Y=g>>31))|0,K=w+L|0,K=g>>>0>>0?K+1|0:K,L=kI(r,a,l,_),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=(q=kI(E,s,u,f))+g|0,g=w+K|0,g=L>>>0>>0?g+1|0:g,q=kI(t,I,c,B),K=w+g|0,tA=K=((g=L=q+L|0)>>>0>>0?K+1|0:K)<<1|g>>>31,L=K,(g=33554432+(Z=g<<1)|0)>>>0<33554432&&(L=L+1|0),BA=g,eA=L,g=(67108863&L)<<6|g>>>26,q=L>>26,K=kI(z,m,p,h),L=w,nA=g,g=(j=kI(o,e,V=j,N=V>>31))+K|0,K=w+L|0,K=g>>>0>>0?K+1|0:K,L=(j=kI(i,C,l,_))+g|0,g=w+K|0,g=L>>>0>>0?g+1|0:g,j=kI(E,s,r,a),K=w+g|0,K=(L=j+L|0)>>>0>>0?K+1|0:K,g=(j=kI(c,B,d,$))+L|0,L=w+K|0,g=((K=g)>>>0>>0?L+1|0:L)<<1|K>>>31,j=K<<1,K=g+q|0,K=(L=nA+j|0)>>>0>>0?K+1|0:K,j=L,(g=L+16777216|0)>>>0<16777216&&(K=K+1|0),nA=g,L=g,g=K>>25,K=(33554431&K)<<7|L>>>25,q=g,g=kI(o,e,d,$),L=w,J=K,V=kI(t,I,V,N),K=w+L|0,K=(g=V+g|0)>>>0>>0?K+1|0:K,V=kI(z,m,X,y),L=w+K|0,L=(g=V+g|0)>>>0>>0?L+1|0:L,V=kI(p,h,l,_),K=w+L|0,K=(g=V+g|0)>>>0>>0?K+1|0:K,L=kI(E,s,M,Y),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=(V=kI(c,B,r,a))+g|0,g=w+K|0,K=(K=(g=L>>>0>>0?g+1|0:g)<<1|L>>>31)+q|0,L=K=(g=J+(L<<=1)|0)>>>0>>0?K+1|0:K,(K=g+33554432|0)>>>0<33554432&&(L=L+1|0),V=K,q=L,K&=-67108864,n[W+8>>2]=g-K,g=kI(u,f,gA,D),L=w,K=(z=kI(i,C,r,a))+g|0,g=w+L|0,g=K>>>0>>0?g+1|0:g,L=(z=kI(t,I,X,y))+K|0,K=w+g|0,K=L>>>0>>0?K+1|0:K,g=(z=kI(o,e,H,b))+L|0,L=w+K|0,L=g>>>0>>0?L+1|0:L,z=kI(c,B,O,v),K=w+L|0,K=(K=(K=(g=z+g|0)>>>0>>0?K+1|0:K)<<1|g>>>31)+(L=T>>26)|0,L=g=(T=(67108863&T)<<6|IA>>>26)+(g<<1)|0,g=K=g>>>0>>0?K+1|0:K,(K=L+16777216|0)>>>0<16777216&&(g=g+1|0),IA=K,T=g,g=-33554432&K,n[W+28>>2]=L-g,g=kI(o,e,rA,F),K=w,L=kI(t,I,d,$),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=kI(X,y,l,_),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=($=kI(E,s,p,h))+g|0,g=w+K|0,g=L>>>0<$>>>0?g+1|0:g,K=($=kI(c,B,i,C))+L|0,L=w+g|0,g=K,K=(K>>>0<$>>>0?L+1|0:L)<<1|K>>>31,L=g<<1,K=(g=q>>26)+K|0,K=(L=L+(q=(67108863&q)<<6|V>>>26)|0)>>>0>>0?K+1|0:K,(L=(g=L)+16777216|0)>>>0<16777216&&(K=K+1|0),rA=L,q=K,K=-33554432&L,n[W+12>>2]=g-K,$=A,g=kI(X,y,u,f),K=w,L=kI(i,C,i,C),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=kI(r,a,p,h),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=kI(t,I,U,G),K=w+K|0,K=(g=L+g|0)>>>0>>0?K+1|0:K,L=(W=kI(o,e,O,v))+g|0,g=w+K|0,g=L>>>0>>0?g+1|0:g,K=(AA=kI(c,B,W=AA,V=W>>31))+L|0,L=w+g|0,g=K,K=(K>>>0>>0?L+1|0:L)<<1|K>>>31,L=g<<1,K=(g=T>>25)+K|0,K=(L=L+(T=(33554431&T)<<7|IA>>>25)|0)>>>0>>0?K+1|0:K,(L=(g=L)+33554432|0)>>>0<33554432&&(K=K+1|0),AA=L,T=K,K=-67108864&L,n[$+32>>2]=g-K,K=q>>25,L=(q=(33554431&q)<<7|rA>>>25)+(k-(g=-67108864&S)|0)|0,g=K+(P-((k>>>0>>0)+x|0)|0)|0,K=g=L>>>0>>0?g+1|0:g,(g=L+33554432|0)>>>0<33554432&&(K=K+1|0),q=((67108863&K)<<6|g>>>26)+(aA=aA-(-33554432&R)|0)|0,n[$+20>>2]=q,g&=-67108864,n[A+16>>2]=L-g,g=kI(r,a,X,y),L=w,K=(X=kI(gA,D,M,Y))+g|0,g=w+L|0,g=K>>>0>>0?g+1|0:g,L=(X=kI(u,f,H,b))+K|0,K=w+g|0,K=L>>>0>>0?K+1|0:K,g=(X=kI(t,I,O,v))+L|0,L=w+K|0,L=g>>>0>>0?L+1|0:L,X=kI(o,e,W,V),K=w+L|0,K=(K=(K=(g=X+g|0)>>>0>>0?K+1|0:K)<<1|g>>>31)+(L=T>>26)|0,K=(g=(T=(67108863&T)<<6|AA>>>26)+(g<<1)|0)>>>0>>0?K+1|0:K,L=g,T=g,q=g,g=K,(K=L+16777216|0)>>>0<16777216&&(g=g+1|0),L=-33554432&K,n[A+36>>2]=T-L,T=A,q=j-(-33554432&nA)|0,g=(K=kI((33554431&g)<<7|K>>>25,g>>25,19,0))+(Z-(L=-67108864&BA)|0)|0,L=w+(tA-((Z>>>0>>0)+eA|0)|0)|0,L=g>>>0>>0?L+1|0:L,K=g,X=T,g=L,(L=K+33554432|0)>>>0<33554432&&(g=g+1|0),T=((67108863&g)<<6|L>>>26)+q|0,n[X+4>>2]=T,g=A,A=-67108864&L,n[g>>2]=K-A}(r=A+120|0,g+80|0),lA(B=A+40|0,g,a),m(e,B),lA(B,I,A),uA(I,I,A),uA(A,e,B),uA(r,r,I),p=e+48|0}function Qg(A,g){var I;return p=I=p+-64|0,(g+-1&255)>>>0>=64&&(oI(),c()),a[I+3|0]=1,a[I+1|0]=256,a[I+2|0]=1,a[0|I]=g,nI(4|I),Fg(8|I,0,0),iA(I+16|0,0,48),dA(A,I),p=I- -64|0,0}function og(A){var g,I;return(A=(g=n[9108])+(I=A+3&-4)|0)>>>0<=g>>>0&&(0|I)>=1||A>>>0>ae()<<16>>>0&&!(0|_(0|A))?(n[8960]=48,-1):(n[9108]=A,g)}function cg(A,g,I,e,B,r,a){var t=0,n=0,i=0;return!e&I>>>0>=16|e>>>0>0?(t=A,n=g+16|0,i=g,A=e+-1|0,(g=I+-16|0)>>>0<4294967280&&(A=A+1|0),A=Ug(t,n,i,g,A,B,r,a)):A=-1,A}function Eg(A,g,I,e,B,r,a,t,i,C){if(!B&e>>>0<4294967280|B>>>0<0)return JA(A,A+e|0,0,I,e,B,r,a,t,i,C),g&&((A=e+16|0)>>>0<16&&(B=B+1|0),n[g>>2]=A,n[g+4>>2]=B),0;oI(),c()}function sg(A,g,I,e,B,r,a,t,i,C){if(!B&e>>>0<4294967280|B>>>0<0)return HA(A,A+e|0,0,I,e,B,r,a,t,i,C),g&&((A=e+16|0)>>>0<16&&(B=B+1|0),n[g>>2]=A,n[g+4>>2]=B),0;oI(),c()}function yg(A,g,I,e,B,r,a,t,i,C){if(!B&e>>>0<4294967280|B>>>0<0)return LA(A,A+e|0,0,I,e,B,r,a,t,i,C),g&&((A=e+16|0)>>>0<16&&(B=B+1|0),n[g>>2]=A,n[g+4>>2]=B),0;oI(),c()}function hg(A,g){for(var I=0,e=0,B=0,r=0;e=(I=B<<3)+A|0,r=n[(I=g+I|0)>>2],I=n[e+4>>2]^n[I+4>>2],n[e>>2]=n[e>>2]^r,n[e+4>>2]=I,128!=(0|(B=B+1|0)););}function fg(A){var g,I;return 95&(1+(32704^A)>>>8^-1)|45&(1+(16321^A)>>>8^-1)|(g=A+65510>>>8&255)&A+65|(I=A+65484>>>8|0)&A+71&(255^g)|A+252&A+65474>>>8&(-1^I)&255}function _g(A){var g,I;return 47&(1+(16320^A)>>>8^-1)|43&(1+(16321^A)>>>8^-1)|(g=A+65510>>>8&255)&A+65|(I=A+65484>>>8|0)&A+71&(255^g)|A+252&A+65474>>>8&(-1^I)&255}function pg(A,g,I,e,B,r,a,t,i,C,Q){switch(Q+-1|0){case 0:return function(A,g,I,e,B,r,a,t,i,C){var Q,o;Q=g,o=iA(A,0,g),A=22;A:if(!(I>>>0>0)){if(!(!I&g>>>0<16|I>>>0<0)){if(C>>>0>2147483648|(r|i)>>>0>0)break A;if(!(!i&t>>>0<3|i>>>0<0|C>>>0<8192))return kA(t,C>>>10|0,1,e,B,a,16,o,Q,0,0,1)?-1:0}A=28}return n[8960]=A,-1}(A,g,I,e,B,r,a,t,i,C);case 1:return function(A,g,I,e,B,r,a,t,i,C){var Q,o;Q=g,o=iA(A,0,g),A=22;A:if(!(I>>>0>0)){if(!(!I&g>>>0<16|I>>>0<0)){if(C>>>0>2147483648|(r|i)>>>0>0)break A;if(!(!(t|i)|C>>>0<8192))return kA(t,C>>>10|0,1,e,B,a,16,o,Q,0,0,2)?-1:0}A=28}return n[8960]=A,-1}(A,g,I,e,B,r,a,t,i,C)}return n[8960]=28,-1}function ug(A,g,I,e){var B=0;B=-1;A:if(!(I>>>0>64|e+-1>>>0>63)){g:{if(!I||!g){if(!Qg(A,255&e))break g;break A}if(qA(A,255&e,g,255&I))break A}B=0}return B}function lg(A){var g=0,I=0,e=0,B=0,r=0;for(g=32,I=1;r=(e=i[(g=g+-1|0)+A|0])-(B=i[g+3456|0])>>8&I|255&r,I&=65535+(e^B)>>>8,g;);return 0!=(0|r)}function wg(A,g){var I,e,B;p=I=p-144|0,z(I+96|0,g+80|0),k(I+48|0,g,I+96|0),k(I,g+40|0,I+96|0),nA(A,I),e=A,B=eI(I+48|0)<<7^i[A+31|0],a[e+31|0]=B,p=I+144|0}function Dg(A,g){var I,e=0;if(a[15+(I=p-16|0)|0]=0,g)for(;a[I+15|0]=i[A+e|0]|i[I+15|0],(0|(e=e+1|0))!=(0|g););return i[I+15|0]+-1>>>8&1}function vg(A,g,I,e){var B;return e=g+e|0,(B=A+I|0)>>>0>>0&&(e=e+1|0),I=kI(A<<1&-2,1&(g=g<<1|A>>>31),I,0),A=w+e|0,w=A=(g=I+B|0)>>>0>>0?A+1|0:A,g}function dg(A,g,I){var e,B=0;if(e=I>>>3|0)for(I=0;PA((B=I<<3)+A|0,n[(B=g+B|0)>>2],n[B+4>>2]),(0|e)!=(0|(I=I+1|0)););}function bg(A){var g=0,I=0;for(I=127&(-1^i[A+31|0]),g=30;I=-1^i[A+g|0]|I,g=g+-1|0;);return 1&(((255&I)-1&236-i[0|A])>>>8^-1)}function kg(A,g){var I=0;!function(A,g){g&&((g=n[A>>2])&&Gg(n[g+4>>2],n[A+16>>2]<<10),(g=n[A+4>>2])&&Gg(g,n[A+20>>2]<<3))}(A,4&g),Y(n[A+4>>2]),n[A+4>>2]=0,(g=n[A>>2])&&(I=n[g>>2])&&Y(I),Y(g),n[A>>2]=0}function Fg(A,g,I){a[0|A]=g,a[A+1|0]=g>>>8,a[A+2|0]=g>>>16,a[A+3|0]=g>>>24,a[A+4|0]=I,a[A+5|0]=I>>>8,a[A+6|0]=I>>>16,a[A+7|0]=I>>>24}function Gg(A,g){var I;if(n[12+(I=p-16|0)>>2]=A,g)for(A=0;a[n[I+12>>2]+A|0]=0,(0|g)!=(0|(A=A+1|0)););}function mg(A,g){A|=0;var I=0,e=0,B=0;if(g|=0)for(;e=A+I|0,B=Xg(),a[0|e]=B,(0|(I=I+1|0))!=(0|g););}function Yg(A,g,I,e,B){var r,a;return A|=0,g|=0,I|=0,e|=0,p=r=(a=p)-128&-64,rA(r,B|=0),AA(r,g,I,e),Z(r,A),p=a,0}function Hg(A){var g=0,I=0,e=0;for(g=1;g=i[0|(e=A+I|0)]+g|0,a[0|e]=g,g=g>>>8|0,4!=(0|(I=I+1|0)););}function Sg(A,g,I,e,B,r,a,t){var n,i=0;return p=n=p-32|0,i=-1,CI(n,a,t)||(i=_I(A,g,I,e,B,r,n),Gg(n,32)),p=n+32|0,i}function Ug(A,g,I,e,B,r,a,t){var n,i=0;return p=n=p-32|0,i=-1,CI(n,a,t)||(i=pI(A,g,I,e,B,r,n),Gg(n,32)),p=n+32|0,i}function Mg(A,g){var I,e,B;k(A,g,I=g+120|0),k(A+40|0,e=g+40|0,B=g+80|0),k(A+80|0,B,I),k(A+120|0,g,e)}function Ng(A,g){for(var I=0,e=0;a[0|(e=A+I|0)]=i[0|e]^i[g+I|0],8!=(0|(I=I+1|0)););}function Pg(A,g,I){var e,B;p=e=(B=p)-384&-64,rI(e,0,0,24),YI(e,g,32,0),YI(e,I,32,0),iI(e,A,24),p=B}function xg(A,g){var I;lA(A,I=g+40|0,g),uA(A+40|0,I,g),RA(A+80|0,g+80|0),k(A+120|0,g+120|0,2224)}function Rg(A,g,I,e,B,r,a){return!e&I>>>0>=4294967280|e>>>0>0&&(oI(),c()),Sg(A+16|0,A,g,I,e,B,r,a)}function Jg(A,g,I,e,B,r,a){return g+-1>>>0>63|a>>>0>64?-1:function(A,g,I,e,B,r,a){var t,n=0;if(t=n=p,p=n=n-384&-64,!(!A|(e+-1&255)>>>0>=64|(B|r?!g:0)|a>>>0>=65|(a?!I:0)))return a?qA(n,e,I,a):Qg(n,e),tA(n,g,B,r),P(n,A,e),p=t,0;oI(),c()}(A,I,r,255&g,e,B,255&a)}function Kg(A,g){var I;k(A,g,I=g+120|0),k(A+40|0,g+40|0,g=g+80|0),k(A+80|0,g,I)}function Lg(A,g,I,e,B,a,t){1==(0|e)&I>>>0>=0|e>>>0>1&&(oI(),c()),r[n[8956]](A,g,I,e,B,a,t)}function Tg(A,g,I,e,B,a){1==(0|e)&I>>>0>=0|e>>>0>1&&(oI(),c()),r[n[8955]](A,g,I,e,B,1,0,a)}function qg(A){var g;return g=i[0|A]|i[A+1|0]<<8,A=i[A+2|0],w=A>>>16|0,g|A<<16}function Xg(){var A,g;return p=A=p-16|0,a[A+15|0]=0,g=0|s(1024,A+15|0,0),p=A+16|0,0|g}function Vg(A,g,I,e,B){var r;return p=r=p-416|0,function(A,g){var I,e=0,B=0;for(p=I=p-192|0,Zg(A),iA(I- -64|0,54,128),a[I+64|0]=54^i[0|g],e=1;a[0|(B=(I- -64|0)+e|0)]=i[0|B]^i[g+e|0],32!=(0|(e=e+1|0)););for(V(A,I- -64|0,128,0),Zg(A=A+208|0),iA(I- -64|0,92,128),a[I+64|0]=92^i[0|g],e=1;a[0|(B=(I- -64|0)+e|0)]=i[0|B]^i[g+e|0],32!=(0|(e=e+1|0)););V(A,I- -64|0,128,0),Gg(I- -64|0,128),Gg(I,64),p=I+192|0}(r,B),V(r,g,I,e),function(A,g){var I,e=0;p=I=p+-64|0,function(A,g){var I;p=I=p+-64|0,jg(A,I),V(A=A+208|0,I,64,0),jg(A,g),Gg(I,64),p=I- -64|0}(A,I),e=n[I+28>>2],A=n[I+24>>2],a[g+24|0]=A,a[g+25|0]=A>>>8,a[g+26|0]=A>>>16,a[g+27|0]=A>>>24,a[g+28|0]=e,a[g+29|0]=e>>>8,a[g+30|0]=e>>>16,a[g+31|0]=e>>>24,e=n[I+20>>2],A=n[I+16>>2],a[g+16|0]=A,a[g+17|0]=A>>>8,a[g+18|0]=A>>>16,a[g+19|0]=A>>>24,a[g+20|0]=e,a[g+21|0]=e>>>8,a[g+22|0]=e>>>16,a[g+23|0]=e>>>24,e=n[I+12>>2],A=n[I+8>>2],a[g+8|0]=A,a[g+9|0]=A>>>8,a[g+10|0]=A>>>16,a[g+11|0]=A>>>24,a[g+12|0]=e,a[g+13|0]=e>>>8,a[g+14|0]=e>>>16,a[g+15|0]=e>>>24,e=n[I+4>>2],A=n[I>>2],a[0|g]=A,a[g+1|0]=A>>>8,a[g+2|0]=A>>>16,a[g+3|0]=A>>>24,a[g+4|0]=e,a[g+5|0]=e>>>8,a[g+6|0]=e>>>16,a[g+7|0]=e>>>24,p=I- -64|0}(r,A),p=r+416|0,0}function Wg(A,g,I,e){var B;return p=B=p-208|0,Zg(B),V(B,g,I,e),jg(B,A),p=B+208|0,0}function Og(A,g){var I=0;return(-1>>>(I=31&g)&A)<>>A}function jg(A,g){var I;p=I=p-704|0,function(A,g){var I,e=0;A:if((I=n[A+72>>2]>>>3&127)>>>0<=111){if(!(e=112-I|0))break A;W(80+(A+I|0)|0,35424,e)}else W((e=A+80|0)+I|0,35424,128-I|0),v(A,e,g,g+640|0),iA(e,0,112);dg(A+192|0,A- -64|0,16),v(A,A+80|0,g,g+640|0)}(A,I),dg(g,A,64),Gg(I,704),Gg(A,208),p=I+704|0}function Zg(A){n[A+64>>2]=0,n[A+68>>2]=0,n[A+72>>2]=0,n[A+76>>2]=0,W(A,34720,64)}function zg(A,g,I){return I>>>0>=256&&(E(2016,2036,107,2089),c()),P(A,g,255&I)}function $g(){var A;p=A=p-16|0,a[A+15|0]=0,s(1062,A+15|0,0),p=A+16|0}function AI(A){var g;return p=g=p-32|0,nA(g,A),A=Dg(g,32),p=g+32|0,A}function gI(A,g){var I;p=I=p-128|0,function(A,g){RA(A,g),RA(A+40|0,g+40|0),RA(A+80|0,g+80|0)}(I+8|0,g),Cg(A,I+8|0),p=I+128|0}function II(A,g){a[0|A]=g,a[A+1|0]=g>>>8,a[A+2|0]=g>>>16,a[A+3|0]=g>>>24}function eI(A){var g;return p=g=p-32|0,nA(g,A),p=g+32|0,1&a[0|g]}function BI(A,g,I){fA(A,g,I),fA(A+40|0,g+40|0,I),fA(A+80|0,g+80|0,I)}function rI(A,g,I,e){return 0|ug(A|=0,g|=0,I|=0,e|=0)}function aI(A){a[A+32|0]=1,a[A+33|0]=0,a[A+34|0]=0,a[A+35|0]=0}function tI(A){n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,n[A+12>>2]=0}function nI(A){a[0|A]=0,a[A+1|0]=0,a[A+2|0]=0,a[A+3|0]=0}function iI(A,g,I){return 0|zg(A|=0,g|=0,I|=0)}function CI(A,g,I){return 0|function(A,g,I){var e,B=0;return p=e=p-32|0,B=-1,ng(e,I,g)||(B=T(A,35552,e)),p=e+32|0,B}(A|=0,g|=0,I|=0)}function QI(A,g,I){return 0|ng(A|=0,g|=0,I|=0)}function oI(){var A;(A=n[9105])&&r[0|A](),y(),c()}function cI(A){WI(A),HI(A+40|0),HI(A+80|0),WI(A+120|0)}function EI(A,g,I,e,B,a){r[n[8952]](A,g,I,e,B,0,0,a)}function sI(A,g,I,e,B,a){r[n[8952]](A,g,I,e,B,1,0,a)}function yI(A,g){return A|=0,mg(g|=0,32),0|mI(A,g)}function hI(A,g){return A=function(A,g){var I=0,e=0;A:{if(e=255&g){if(3&A)for(;;){if(!(I=i[0|A])|(0|I)==(255&g))break A;if(!(3&(A=A+1|0)))break}g:if(!((-1^(I=n[A>>2]))&I+-16843009&-2139062144))for(e=Q(e,16843009);;){if((-1^(I^=e))&I+-16843009&-2139062144)break g;if(I=n[A+4>>2],A=A+4|0,I+-16843009&(-1^I)&-2139062144)break}for(;(e=i[0|(I=A)])&&(A=I+1|0,(0|e)!=(255&g)););return I}return MA(A)+A|0}return A}(A,g),i[0|A]==(255&g)?A:0}function fI(A,g,I,e,B,r){return q(A,g,I,e,B,r,0),0}function _I(A,g,I,e,B,r,a){return oA(A,g,I,e,B,r,a)}function pI(A,g,I,e,B,r,a){return cA(A,g,I,e,B,r,a)}function uI(A,g,I,e,B,r,a){return Jg(A,g,I,e,B,r,a)}function lI(A,g){Zg(A),g&&V(A,35728,34,0)}function wI(A,g,I,e,B){return GA(A,g,I,e,B,0)}function DI(A,g){return 0|mI(A|=0,g|=0)}function vI(A,g){return(255&(A^g))-1>>>31|0}function dI(A,g,I,e){r[n[8954]](A,g,0,I,e)}function bI(A,g,I){r[n[8953]](A,64,0,g,I)}function kI(A,g,I,e){return function(A,g,I,e){var B,r,a,t,n=0,i=0;return t=Q(n=I>>>16|0,i=A>>>16|0),n=(65535&(i=((a=Q(B=65535&I,r=65535&A))>>>16|0)+Q(i,B)|0))+Q(n,r)|0,A=(Q(g,I)+t|0)+Q(A,e)+(i>>>16)+(n>>>16)|0,w=A,65535&a|n<<16}(A,g,I,e)}function FI(A,g,I,e){r[n[8947]](A,g,I,e)}function GI(A,g,I){!function(A,g,I){var e,B;p=e=p-128|0,HI(A),HI(A+40|0),WI(A+80|0),BI(A,g,vI(I=I-((0-(B=(128&I)>>>7|0)&I)<<1)<<24>>24,1)),BI(A,g+120|0,vI(I,2)),BI(A,g+240|0,vI(I,3)),BI(A,g+360|0,vI(I,4)),BI(A,g+480|0,vI(I,5)),BI(A,g+600|0,vI(I,6)),BI(A,g+720|0,vI(I,7)),BI(A,g+840|0,vI(I,8)),RA(e+8|0,A+40|0),RA(e+48|0,A),NA(e+88|0,A+80|0),BI(A,e+8|0,B),p=e+128|0}(A,Q(g,960)+3488|0,I)}function mI(A,g){return 0|r[n[8950]](A,g)}function YI(A,g,I,e){return SI(A,g,I,e)}function HI(A){n[A>>2]=1,iA(A+4|0,0,36)}function SI(A,g,I,e){return tA(A,g,I,e)}function UI(A,g,I){return function(A,g,I){var e=0,B=0,r=0,a=0;return e=31&(r=a=63&I),32<=r>>>0?e=-1>>>e|0:(B=-1>>>e|0,e=(1<>>e),r=e&A,e=g&B,B=31&a,32<=a>>>0?(e=r<>>32-B|e<>>0?(e=-1<>>32-I|-1<>>0?(I=0,A=e>>>g|0):(I=e>>>g|0,A=((1<>>g),w=I|r,A|a}(A,g,I)}function MI(A,g,I){return function(A,g,I){var e=0,B=0,r=0,a=0,t=0;return e=31&(a=63&I),32<=a>>>0?(B=-1<>>32-e|-1<>>0?(B=0,a=e>>>r|0):(B=e>>>r|0,a=((1<>>r),t=B,r=31&(e=0-I&63),32<=e>>>0?(B=0,I=-1>>>r|0):(B=-1>>>r|0,I=(1<>>r),A&=I,g&=B,B=31&e,32<=e>>>0?(I=A<>>32-B|g<>>0<18,H=H+2|0,F;);II(A,I+1634760805|0),II(A+4|0,_+e|0),II(A+8|0,p+B|0),II(A+12|0,G+r|0),II(A+16|0,u+a|0),II(A+20|0,k+857760878|0),II(A+24|0,l+o|0),II(A+28|0,w+c|0),II(A+32|0,D+E|0),II(A+36|0,b+s|0),II(A+40|0,g+2036477234|0),II(A+44|0,h+t|0),II(A+48|0,y+n|0),II(A+52|0,f+C|0),II(A+56|0,d+Q|0),II(A+60|0,v+1797285236|0)}(A,g,I)}function VI(A){iA(A,0,1024)}function WI(A){iA(A,0,40)}function OI(){return 16}function jI(){return 32}function ZI(){return 24}function zI(){return-17}function $I(){return 64}function Ae(){return 1}function ge(){return 2}function Ie(){return 8}function ee(){return 0}function Be(){return-1}function re(){return 3}function ae(){return e.byteLength/65536|0}return r[1]=Yg,r[2]=function(A,g,I,e,B){var r;return A|=0,p=r=p-16|0,Yg(r,g|=0,I|=0,e|=0,B|=0),A=JI(A,r),p=r+16|0,0|A},r[3]=function(A,g){return rA(A|=0,g|=0),0},r[4]=function(A,g,I,e){return AA(A|=0,g|=0,I|=0,e|=0),0},r[5]=function(A,g){return Z(A|=0,g|=0),0},r[6]=function(A,g,I){A|=0,g|=0;var e,B=0,r=0;if(p=e=p-336|0,B=-1,!function(A){var g,I=0,e=0,B=0,r=0;for(a[11+(g=p-16|0)|0]=0,a[g+12|0]=0,a[g+13|0]=0,a[g+14|0]=0,n[g+8>>2]=0;;){for(B=i[A+e|0],I=0;a[0|(r=(g+8|0)+I|0)]=i[0|r]|B^i[(34464+(I<<5)|0)+e|0],7!=(0|(I=I+1|0)););if(31==(0|(e=e+1|0)))break}for(e=127&i[A+31|0],A=0,I=0;a[0|(B=(g+8|0)+I|0)]=i[0|B]|e^i[34495+(I<<5)|0],7!=(0|(I=I+1|0)););for(I=0;I=i[(g+8|0)+A|0]+-1|I,7!=(0|(A=A+1|0)););return I>>>8&1}(I|=0)){for(B=0;a[A+B|0]=i[g+B|0],32!=(0|(B=B+1|0)););for(a[0|A]=248&i[0|A],a[A+31|0]=63&i[A+31|0]|64,x(e+288|0,I),HI(e+240|0),WI(e+192|0),RA(e+144|0,e+288|0),HI(e+96|0),I=254,g=0;B=g,r=I,eA(e+240|0,e+144|0,B^=g=i[(I>>>3|0)+A|0]>>>(7&I)&1),eA(e+192|0,e+96|0,B),I=I+-1|0,uA(e+48|0,e+144|0,e+96|0),uA(e,e+240|0,e+192|0),lA(e+240|0,e+240|0,e+192|0),lA(e+192|0,e+144|0,e+96|0),k(e+96|0,e+48|0,e+240|0),k(e+192|0,e+192|0,e),m(e+48|0,e),m(e,e+240|0),lA(e+144|0,e+96|0,e+192|0),uA(e+192|0,e+96|0,e+192|0),k(e+240|0,e,e+48|0),uA(e,e,e+48|0),m(e+192|0,e+192|0),N(e+96|0,e),m(e+144|0,e+144|0),lA(e+48|0,e+48|0,e+96|0),k(e+96|0,e+288|0,e+192|0),k(e+192|0,e,e+48|0),r;);eA(e+240|0,e+144|0,g),eA(e+192|0,e+96|0,g),z(e+192|0,e+192|0),k(e+240|0,e+240|0,e+192|0),nA(A,e+240|0),B=0}return p=e+336|0,0|B},r[7]=function(A,g){A|=0,g|=0;var I,e=0;for(p=I=p-208|0;a[A+e|0]=i[g+e|0],32!=(0|(e=e+1|0)););return a[0|A]=248&i[0|A],a[A+31|0]=63&i[A+31|0]|64,CA(I+48|0,A),function(A,g,I){var e;p=e=p-96|0,lA(e+48|0,I,g),uA(e,I,g),z(e,e),k(A,e+48|0,e),p=e+96|0}(I,I+88|0,I+128|0),nA(A,I),p=I+208|0,0},r[8]=function(A,g,I,e,B){A|=0,e|=0,B|=0;var r,t=0;if(p=r=p-112|0,(g|=0)|(I|=0)){t=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,n[r+24>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,n[r+28>>2]=t,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,n[r+16>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,n[r+20>>2]=t,t=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,n[r>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,n[r+4>>2]=t,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,n[r+8>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,n[r+12>>2]=t,B=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,n[r+104>>2]=0,n[r+108>>2]=0,n[r+96>>2]=B,n[r+100>>2]=e;A:{if(!I&g>>>0>=64|I>>>0>0){for(;;){for(XI(A,r+96|0,r),B=8,e=1;e=i[0|(t=(r+96|0)+B|0)]+e|0,a[0|t]=e,e=e>>>8|0,16!=(0|(B=B+1|0)););if(A=A- -64|0,I=I+-1|0,(g=g+-64|0)>>>0<4294967232&&(I=I+1|0),!(!I&g>>>0>63|I>>>0>0))break}if(!(g|I))break A}if(B=0,XI(r+32|0,r+96|0,r),g)for(;a[A+B|0]=i[(r+32|0)+B|0],(0|g)!=(0|(B=B+1|0)););}Gg(r+32|0,64),Gg(r,32)}return p=r+112|0,0},r[9]=function(A,g,I,e,B,r,t,C){A|=0,g|=0,B|=0,r|=0,t|=0,C|=0;var Q,o=0,c=0;if(p=Q=p-112|0,(I|=0)|(e|=0)){for(o=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,n[Q+24>>2]=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,n[Q+28>>2]=o,o=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,n[Q+16>>2]=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,n[Q+20>>2]=o,o=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,n[Q>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,n[Q+4>>2]=o,o=8,c=i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24,n[Q+8>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,n[Q+12>>2]=c,C=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,n[Q+96>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,n[Q+100>>2]=C;a[(Q+96|0)+o|0]=r,r=(255&t)<<24|r>>>8,t=t>>>8|0,16!=(0|(o=o+1|0)););if(!e&I>>>0>63|e>>>0>0)for(;;){for(o=0,XI(Q+32|0,Q+96|0,Q);a[A+o|0]=i[(Q+32|0)+o|0]^i[g+o|0],C=1,64!=(0|(o=o+1|0)););for(o=8;B=i[0|(r=(Q+96|0)+o|0)]+C|0,a[0|r]=B,C=B>>>8|0,16!=(0|(o=o+1|0)););if(g=g- -64|0,A=A- -64|0,e=e+-1|0,(I=I+-64|0)>>>0<4294967232&&(e=e+1|0),!(!e&I>>>0>63|e>>>0>0))break}if(I|e&&(o=0,XI(Q+32|0,Q+96|0,Q),I))for(;a[A+o|0]=i[(Q+32|0)+o|0]^i[g+o|0],(0|I)!=(0|(o=o+1|0)););Gg(Q+32|0,64),Gg(Q,32)}return p=Q+112|0,0},r[10]=function(A,g,I,e,B){var r;return A|=0,e|=0,p=r=p+-64|0,(g|=0)|(I|=0)&&(sA(r,B|=0),xA(r,e,0),S(r,A=iA(A,0,g),A,g,I),Gg(r,64)),p=r- -64|0,0},r[11]=function(A,g,I,e,B){var r;return A|=0,e|=0,p=r=p+-64|0,(g|=0)|(I|=0)&&(sA(r,B|=0),OA(r,e,0),S(r,A=iA(A,0,g),A,g,I),Gg(r,64)),p=r- -64|0,0},r[12]=function(A,g,I,e,B,r,a,t){var n;return A|=0,g|=0,B|=0,a|=0,t|=0,p=n=p-80|0,(I|=0)|(e|=0)&&(II(n+8|0,r|=0),II(n+12|0,a),sA(n+16|0,t),xA(n+16|0,B,n+8|0),S(n+16|0,g,A,I,e),Gg(n+16|0,64)),p=n+80|0,0},r[13]=function(A,g,I,e,B,r,a){var t;return A|=0,g|=0,B|=0,a|=0,p=t=p-80|0,(I|=0)|(e|=0)&&(II(t+12|0,r|=0),sA(t+16|0,a),OA(t+16|0,B,t+12|0),S(t+16|0,g,A,I,e),Gg(t+16|0,64)),p=t+80|0,0},{g:function(){},h:function(A,g,I,e,B,r,a,t,n,i,C,Q){return 0|JA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,C|=0,Q|=0)},i:function(A,g,I,e,B,r,a,t,n,i,C){return 0|Eg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,i|=0,C|=0)},j:function(A,g,I,e,B,r,a,t,n,i,C,Q){return 0|HA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,C|=0,Q|=0)},k:function(A,g,I,e,B,r,a,t,n,i,C){return 0|sg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,i|=0,C|=0)},l:function(A,g,I,e,B,r,a,t,n,i,C){return 0|SA(A|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},m:function(A,g,I,e,B,r,a,t,n,i,C){return 0|WA(A|=0,g|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},n:function(A,g,I,e,B,r,a,t,n,i,C){return 0|mA(A|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},o:function(A,g,I,e,B,r,a,t,n,i,C){return 0|XA(A|=0,g|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},p:jI,q:function(){return 12},r:ee,s:OI,t:zI,u:qI,v:jI,w:Ie,x:ee,y:OI,z:zI,A:qI,B:function(A,g,I,e,B,r,a,t,n,i,C,Q){return 0|LA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,C|=0,Q|=0)},C:function(A,g,I,e,B,r,a,t,n,i,C){return 0|yg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,i|=0,C|=0)},D:function(A,g,I,e,B,r,a,t,n,i,C){return 0|TA(A|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},E:function(A,g,I,e,B,r,a,t,n,i,C){return 0|VA(A|=0,g|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},F:jI,G:ZI,H:ee,I:OI,J:zI,K:qI,L:jI,M:jI,N:function(A,g,I,e,B){return 0|Vg(A|=0,g|=0,I|=0,e|=0,B|=0)},O:function(A,g,I,e,B){return 0|function(A,g,I,e,B){var r;return p=r=p-32|0,Vg(r,g,I,e,B),g=RI(A,r),I=tg(r,A,32),p=r+32|0,I|((0|A)==(0|r)?-1:g)}(A|=0,g|=0,I|=0,e|=0,B|=0)},P:qI,Q:jI,R:jI,S:jI,T:jI,U:ZI,V:OI,W:zI,X:function(A,g,I){return 0|function(A,g,I){var e,B=0;return p=e=p+-64|0,Wg(e,I,32,0),I=n[e+28>>2],B=n[e+24>>2],a[g+24|0]=B,a[g+25|0]=B>>>8,a[g+26|0]=B>>>16,a[g+27|0]=B>>>24,a[g+28|0]=I,a[g+29|0]=I>>>8,a[g+30|0]=I>>>16,a[g+31|0]=I>>>24,I=n[e+20>>2],B=n[e+16>>2],a[g+16|0]=B,a[g+17|0]=B>>>8,a[g+18|0]=B>>>16,a[g+19|0]=B>>>24,a[g+20|0]=I,a[g+21|0]=I>>>8,a[g+22|0]=I>>>16,a[g+23|0]=I>>>24,I=n[e+12>>2],B=n[e+8>>2],a[g+8|0]=B,a[g+9|0]=B>>>8,a[g+10|0]=B>>>16,a[g+11|0]=B>>>24,a[g+12|0]=I,a[g+13|0]=I>>>8,a[g+14|0]=I>>>16,a[g+15|0]=I>>>24,I=n[e+4>>2],B=n[e>>2],a[0|g]=B,a[g+1|0]=B>>>8,a[g+2|0]=B>>>16,a[g+3|0]=B>>>24,a[g+4|0]=I,a[g+5|0]=I>>>8,a[g+6|0]=I>>>16,a[g+7|0]=I>>>24,Gg(e,64),A=mI(A,g),p=e- -64|0,A}(A|=0,g|=0,I|=0)},Y:yI,Z:CI,_:function(A,g,I,e,B,r,a){return 0|_I(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},$:function(A,g,I,e,B,r,a,t){return 0|Sg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0)},aa:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){return!e&I>>>0>=4294967280|e>>>0>0&&(oI(),c()),_I(A+16|0,A,g,I,e,B,r)}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},ba:function(A,g,I,e,B,r,a){return 0|Rg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},ca:function(A,g,I,e,B,r,a){return 0|pI(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},da:function(A,g,I,e,B,r,a,t){return 0|Ug(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0)},ea:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a=0,t=0,n=0;return!e&I>>>0>=16|e>>>0>0?(a=A,t=g+16|0,n=g,A=e+-1|0,(g=I+-16|0)>>>0<4294967280&&(A=A+1|0),A=pI(a,t,n,g,A,B,r)):A=-1,A}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},fa:function(A,g,I,e,B,r,a){return 0|cg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},ga:function(A,g,I,e,B){return 0|function(A,g,I,e,B){var r,t=0;return p=r=p-96|0,t=-1,yI(r+32|0,r)||(Pg(r- -64|0,r+32|0,B),t=Rg(A+32|0,g,I,e,r- -64|0,B,r),g=n[r+60>>2],I=n[r+56>>2],a[A+24|0]=I,a[A+25|0]=I>>>8,a[A+26|0]=I>>>16,a[A+27|0]=I>>>24,a[A+28|0]=g,a[A+29|0]=g>>>8,a[A+30|0]=g>>>16,a[A+31|0]=g>>>24,g=n[r+52>>2],I=n[r+48>>2],a[A+16|0]=I,a[A+17|0]=I>>>8,a[A+18|0]=I>>>16,a[A+19|0]=I>>>24,a[A+20|0]=g,a[A+21|0]=g>>>8,a[A+22|0]=g>>>16,a[A+23|0]=g>>>24,g=n[r+44>>2],I=n[r+40>>2],a[A+8|0]=I,a[A+9|0]=I>>>8,a[A+10|0]=I>>>16,a[A+11|0]=I>>>24,a[A+12|0]=g,a[A+13|0]=g>>>8,a[A+14|0]=g>>>16,a[A+15|0]=g>>>24,g=n[r+36>>2],I=n[r+32>>2],a[0|A]=I,a[A+1|0]=I>>>8,a[A+2|0]=I>>>16,a[A+3|0]=I>>>24,a[A+4|0]=g,a[A+5|0]=g>>>8,a[A+6|0]=g>>>16,a[A+7|0]=g>>>24,Gg(r,32),Gg(r+32|0,32),Gg(r- -64|0,24)),p=r+96|0,t}(A|=0,g|=0,I|=0,e|=0,B|=0)},ha:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a,t=0;return p=a=p-32|0,t=-1,!e&I>>>0>=48|e>>>0>0&&(Pg(a,g,B),B=A,A=e+-1|0,(I=I+-32|0)>>>0<4294967264&&(A=A+1|0),t=cg(B,t=g+32|0,I,A,a,g,r)),p=a+32|0,t}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},ia:function(){return 48},ja:OI,ka:$I,la:jI,ma:OI,na:$I,oa:jI,pa:function(){return 384},qa:function(A,g,I,e,B,r,a){return 0|uI(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},ra:rI,sa:function(A,g,I,e){return 0|YI(A|=0,g|=0,I|=0,e|=0)},ta:iI,ua:qI,va:$I,wa:function(A,g,I,e){return 0|Wg(A|=0,g|=0,I|=0,e|=0)},xa:OI,ya:$I,za:Ie,Aa:jI,Ba:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a,t;return p=a=p-32|0,t=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,B=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,n[a+24>>2]=0,n[a+28>>2]=0,n[a+16>>2]=t,n[a+20>>2]=B,Fg(a,I,e),n[a+8>>2]=0,n[a+12>>2]=0,g+-16>>>0>=49?(n[8960]=28,A=-1):(I=a+16|0,A=g+-1>>>0>63?-1:function(A,g,I,e,B){var r,a=0;if(r=a=p,p=a=a-384&-64,!(!g|!A|(I+-1&255)>>>0>=64))return DA(a,I,g,e,B),tA(a,0,0,0),P(a,A,I),p=r,0;oI(),c()}(A,r,255&g,a,I)),p=a+32|0,A}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},Ca:qI,Da:function(A,g,I){return A|=0,uI(g|=0,32,I|=0,32,0,0,0),0|DI(A,g)},Ea:function(A,g){return A|=0,mg(g|=0,32),0|DI(A,g)},Fa:function(A,g,I,e,B){g|=0,I|=0,B|=0;var r,t,n=0;if(t=n=p,p=n=n-512&-64,r=(A|=0)||g){if(A=-1,!QI(n+96|0,e|=0,B)){for(g=g||r,A=0,rI(n+128|0,0,0,64),YI(n+128|0,n+96|0,32,0),Gg(n+96|0,32),YI(n+128|0,I,32,0),YI(n+128|0,B,32,0),iI(n+128|0,n+32|0,64),Gg(n+128|0,384);I=(n+32|0)+A|0,a[A+r|0]=i[0|I],a[A+g|0]=i[I+32|0],32!=(0|(A=A+1|0)););Gg(n+32|0,64),A=0}return p=t,0|A}oI(),c()},Ga:function(A,g,I,e,B){g|=0,I|=0,B|=0;var r,t,n=0;if(t=n=p,p=n=n-512&-64,r=(A|=0)||g){if(A=-1,!QI(n+96|0,e|=0,B)){for(g=g||r,A=0,rI(n+128|0,0,0,64),YI(n+128|0,n+96|0,32,0),Gg(n+96|0,32),YI(n+128|0,B,32,0),YI(n+128|0,I,32,0),iI(n+128|0,n+32|0,64),Gg(n+128|0,384);I=(n+32|0)+A|0,a[A+g|0]=i[0|I],a[A+r|0]=i[I+32|0],32!=(0|(A=A+1|0)););Gg(n+32|0,64),A=0}return p=t,0|A}oI(),c()},Ha:jI,Ia:jI,Ja:jI,Ka:jI,La:Ae,Ma:ge,Na:ge,Oa:OI,Pa:Be,Qa:ee,Ra:Be,Sa:OI,Ta:function(){return 128},Ua:function(){return 35681},Va:Ae,Wa:Be,Xa:function(){return 8192},Ya:function(){return-2147483648},Za:ge,_a:function(){return 67108864},$a:re,ab:function(){return 268435456},bb:function(){return 4},cb:function(){return 1073741824},db:function(A,g,I,e,B,r,a,t,n,i,C){return 0|pg(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0,C|=0)},eb:function(A,g,I,e,B,r,a){return 0|jA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0)},fb:function(A,g,I,e,B,r,a,t){return 0|function(A,g,I,e,B,r,a,t){switch(t+-1|0){case 1:return jA(A,g,I,e,B,r,a);default:oI(),c();case 0:}return function(A,g,I,e,B,r,a){var t;return p=t=p-16|0,A=iA(A,0,128),e|=r,a>>>0<2147483649&&!e|e>>>0<0?a>>>0>8191&&!r&B>>>0>=3|r>>>0>0?(mg(t,16),A=kA(B,a>>>10|0,1,g,I,t,16,0,32,A,128,1)?-1:0):(n[8960]=28,A=-1):(n[8960]=22,A=-1),p=t+16|0,A}(A,g,I,e,B,r,a)}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0)},gb:function(A,g,I,e){return 0|function(A,g,I,e){return Ag(A,35681,10)?Ag(A,35692,9)?(n[8960]=28,-1):function(A,g,I,e){A:{if(1==(0|e)&I>>>0>=0|e>>>0>1)n[8960]=22;else{if(!(A=_A(A,g,I,1)))break A;-35==(0|A)&&(n[8960]=28)}A=-1}return A}(A,g,I,e):function(A,g,I,e){A:{if(1==(0|e)&I>>>0>=0|e>>>0>1)n[8960]=22;else{if(!(A=_A(A,g,I,2)))break A;-35==(0|A)&&(n[8960]=28)}A=-1}return A}(A,g,I,e)}(A|=0,g|=0,I|=0,e|=0)},hb:function(A,g,I,e){return 0|function(A,g,I,e){return Ag(A,35681,10)?Ag(A,35692,9)?(n[8960]=28,-1):FA(A,g,I,e,1):FA(A,g,I,e,2)}(A|=0,g|=0,I|=0,e|=0)},ib:DI,jb:QI,kb:jI,lb:jI,mb:jI,nb:ZI,ob:OI,pb:zI,qb:qI,rb:_I,sb:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){return!e&I>>>0>=4294967280|e>>>0>0&&(oI(),c()),oA(A+16|0,A,g,I,e,B,r),0}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},tb:pI,ub:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a=0,t=0,n=0;return!e&I>>>0>=16|e>>>0>0?(a=A,t=g+16|0,n=g,A=e+-1|0,(g=I+-16|0)>>>0<4294967280&&(A=A+1|0),A=cA(a,t,n,g,A,B,r)):A=-1,A}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},vb:qI,wb:function(A,g,I){return A|=0,I|=0,mg(g|=0,24),K(A,g,I),aI(A),I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[A+44|0]=0,a[A+45|0]=0,a[A+46|0]=0,a[A+47|0]=0,a[A+48|0]=0,a[A+49|0]=0,a[A+50|0]=0,a[A+51|0]=0,a[A+36|0]=I,a[A+37|0]=I>>>8,a[A+38|0]=I>>>16,a[A+39|0]=I>>>24,a[A+40|0]=g,a[A+41|0]=g>>>8,a[A+42|0]=g>>>16,a[A+43|0]=g>>>24,0},xb:function(A,g,I){return K(A|=0,g|=0,I|=0),aI(A),I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[A+44|0]=0,a[A+45|0]=0,a[A+46|0]=0,a[A+47|0]=0,a[A+48|0]=0,a[A+49|0]=0,a[A+50|0]=0,a[A+51|0]=0,a[A+36|0]=I,a[A+37|0]=I>>>8,a[A+38|0]=I>>>16,a[A+39|0]=I>>>24,a[A+40|0]=g,a[A+41|0]=g>>>8,a[A+42|0]=g>>>16,a[A+43|0]=g>>>24,0},yb:L,zb:function(A,g,I,e,B,r,a,t,n,i){return 0|QA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0)},Ab:function(A,g,I,e,B,r,a,t,n,i){return 0|IA(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0,a|=0,t|=0,n|=0,i|=0)},Bb:function(){return 52},Cb:function(){return 17},Db:ZI,Eb:jI,Fb:function(){return-18},Gb:ee,Hb:Ae,Ib:ge,Jb:re,Kb:Ie,Lb:OI,Mb:function(A,g,I,e,B){return 0|function(A,g,I,e){var B=0,r=0,a=0,t=0,n=0,C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0,u=0;if(a=1886610805^(r=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24),t=1936682341^(B=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24),C=1852142177^r,Q=1819895653^B,B=1852075885^(r=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24),n=1685025377^(e=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24),c=2037671283^r,o=1952801890^e,(0|(r=(g+I|0)-(f=7&I)|0))!=(0|g)){for(;E=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,y=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,s=UI(B,n,13),e=t+n|0,h=w,(B=B+a|0)>>>0>>0&&(e=e+1|0),a=e,_=UI(B,e,32),p=w,c=UI(t=c^E,e=o^y,16),e=e+Q|0,(n=t+C|0)>>>0>>0&&(e=e+1|0),t=n^c,c=C=e^(o=w),C=UI(t,C,21),o=w,Q=a^=h,a=UI(B^=s,a,17),s=w,e=e+Q|0,(B=B+n|0)>>>0>>0&&(e=e+1|0),Q=UI(B,e,32),h=w,u=UI(n=B^a,s^=e,13),e=c+p|0,(B=t+_|0)>>>0>>0&&(e=e+1|0),e=s+(a=e)|0,_=w,(s=B+n|0)>>>0>>0&&(e=e+1|0),n=e,t=UI(s,e,32),c=w,o=UI(B^=C,e=a^o,16),e=e+h|0,(C=B+Q|0)>>>0>>0&&(e=e+1|0),e=(Q=(B=e)^w)+c|0,(a=t+(o=c=C^o)|0)>>>0>>0&&(e=e+1|0),c=UI(c,Q,21)^a,t=e,o=e^w,s=UI(Q=s^u,e=n^_,17),e=B+e|0,(Q=Q+C|0)>>>0>>0&&(e=e+1|0),B=Q^s,n=e^(h=w),a^=E,t^=y,C=UI(Q,e,32),Q=w,(0|r)!=(0|(g=g+8|0)););g=r}switch(r=I<<24,I=0,f+-1|0){case 6:r|=i[g+6|0]<<16;case 5:r|=i[g+5|0]<<8;case 4:r|=i[g+4|0];case 3:e=(I=i[g+3|0])>>>8|0,I<<=24,r|=e;case 2:I|=(e=i[g+2|0])<<16,r|=E=e>>>16|0;case 1:I|=(e=i[g+1|0])<<8,r|=E=e>>>24|0;case 0:I=i[0|g]|I}return E=UI(B,n,13),e=t+n|0,t=w,(g=B+a|0)>>>0>>0&&(e=e+1|0),B=e,y=UI(g,e,32),s=w,c=UI(n=I^c,e=r^o,16),e=e+Q|0,(a=n+C|0)>>>0>>0&&(e=e+1|0),Q=C=e^(o=w),c=UI(n=a^c,C,21),o=w,t=B^=t,B=UI(g^=E,B,17),C=w,e=e+t|0,(g=g+a|0)>>>0>>0&&(e=e+1|0),t=UI(g,e,32),E=w,f=UI(a=g^B,C^=e,13),e=Q+s|0,(g=n+y|0)>>>0>>0&&(e=e+1|0),e=C+(B=e)|0,Q=w,(a=g+a|0)>>>0>>0&&(e=e+1|0),n=e,C=UI(a,e,32),y=w,c=UI(g^=c,e=B^o,16),e=e+E|0,(g=g+t|0)>>>0>>0&&(e=e+1|0),B=g^c,c=t=e^(o=w),t=UI(B,t,21),o=w,Q=n^=Q,n=UI(a^=f,n,17),E=w,e=e+Q|0,(a=g+a|0)>>>0>>0&&(e=e+1|0),Q=UI(a,e,32),s=w,n=UI(a^=n,g=e^E,13),e=c+y|0,e=(c=g)+(r^(g=(B=B+C|0)>>>0>>0?e+1|0:e))|0,C=w,(I=a+(r=I^B)|0)>>>0>>0&&(e=e+1|0),r=e,a=UI(I,e,32),c=w,t=UI(B^=t,e=g^=o,16),e=e+s|0,(g=B+(255^Q)|0)>>>0>>0&&(e=e+1|0),B=g^t,Q=t=e^(o=w),t=UI(B,t,21),o=w,C=r^=C,r=UI(I^=n,r,17),n=w,e=e+C|0,(I=g+I|0)>>>0>>0&&(e=e+1|0),C=UI(I,e,32),E=w,n=UI(I^=r,g=e^n,13),e=Q+c|0,e=(r=g)+(g=(B=B+a|0)>>>0>>0?e+1|0:e)|0,Q=w,(I=I+B|0)>>>0>>0&&(e=e+1|0),r=e,a=UI(I,e,32),c=w,t=UI(B^=t,e=g^=o,16),e=e+E|0,(g=B+C|0)>>>0>>0&&(e=e+1|0),B=g^t,C=t=e^(o=w),t=UI(B,t,21),o=w,Q=r^=Q,r=UI(I^=n,r,17),n=w,e=e+Q|0,(I=g+I|0)>>>0>>0&&(e=e+1|0),Q=UI(I,e,32),E=w,n=UI(I^=r,r=e^n,13),e=C+c|0,e=r+(g=(B=B+a|0)>>>0>>0?e+1|0:e)|0,C=w,(I=I+B|0)>>>0>>0&&(e=e+1|0),r=e,a=UI(I,e,32),c=w,t=UI(B^=t,e=g^=o,16),e=e+E|0,(g=B+Q|0)>>>0>>0&&(e=e+1|0),B=g^t,Q=t=e^(o=w),t=UI(B,t,21),o=w,C=r^=C,r=UI(I^=n,r,17),n=w,e=e+C|0,(I=g+I|0)>>>0>>0&&(e=e+1|0),C=UI(I,e,32),E=w,n=g=e^n,s=UI(y=I^r,g,13),e=Q+c|0,(g=B+a|0)>>>0>>0&&(e=e+1|0),a=w,r=e,t=UI(B=g^t,e=I=o^e,16),e=e+E|0,(I=B+C|0)>>>0>>0&&(e=e+1|0),B=e,t=UI(I^t,e^(Q=w),21),e=r+n|0,(r=g+y|0)>>>0>>0&&(e=e+1|0),e=B+(a^=e)|0,(g=(r^=s)+I|0)>>>0>>0&&(e=e+1|0),I=w,r=UI(r,a,17)^g^t,I=w^I^e,Fg(A,UI(g,e,32)^r,w^I),0}(A|=0,g|=0,I|=0,B|=0)},Nb:function(A){mg(A|=0,16)},Ob:function(){return 208},Pb:$I,Qb:jI,Rb:jI,Sb:$I,Tb:function(){return-65},Ub:function(A,g,I){return 0|M(A|=0,g|=0,I|=0)},Vb:function(A,g){return 0|function(A,g){var I;return p=I=p-32|0,mg(I,32),M(A,g,I),Gg(I,32),p=I+32|0,0}(A|=0,g|=0)},Wb:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a,t;return p=a=p-16|0,t=I,I=e,fI(A,a+8|0,aA(A- -64|0,t,e),e,B,r),64!=n[a+8>>2]|n[a+12>>2]?(g&&(n[g>>2]=0,n[g+4>>2]=0),iA(A,0,I- -64|0),A=-1):(A=0,g&&(n[g>>2]=e- -64,n[g+4>>2]=B-((e>>>0<4294967232)+-1|0))),p=a+16|0,A}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},Xb:function(A,g,I,e,B,r){return 0|function(A,g,I,e,B,r){var a=0;A:{g:{if(!(!B&e>>>0<64|B>>>0<0||(B=B+-1|0,(e=e+-64|0)>>>0<4294967232&&(B=B+1|0),!B&e>>>0>4294967231|B>>>0>0))){if(!wI(I,a=I- -64|0,e,B,r))break g;A&&iA(A,0,e)}if(I=-1,!g)break A;return n[g>>2]=0,n[g+4>>2]=0,-1}g&&(n[g>>2]=e,n[g+4>>2]=B),I=0,A&&aA(A,a,e)}return I}(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},Yb:function(A,g,I,e,B,r){return 0|fI(A|=0,g|=0,I|=0,e|=0,B|=0,r|=0)},Zb:function(A,g,I,e,B){return 0|wI(A|=0,g|=0,I|=0,e|=0,B|=0)},_b:function(A){return Zg(A|=0),0},$b:function(A,g,I,e){return 0|V(A|=0,g|=0,I|=0,e|=0)},ac:function(A,g,I,e){return 0|function(A,g,I,e){var B;return p=B=p+-64|0,jg(A,B),A=q(g,I,B,64,0,e,1),p=B- -64|0,A}(A|=0,g|=0,I|=0,e|=0)},bc:function(A,g,I){return 0|function(A,g,I){var e;return p=e=p+-64|0,jg(A,e),A=GA(g,e,64,0,I,1),p=e- -64|0,A}(A|=0,g|=0,I|=0)},cc:function(A,g){A|=0;var I,e=0;return p=I=p-256|0,e=-1,vA(g|=0)||pA(I+96|0,g)||function(A){var g;return p=g=p-160|0,function(A,g){var I,e=0;for(p=I=p-1760|0,xg(I+480|0,g),gI(I+320|0,g),Mg(I,I+320|0),gg(I+320|0,I,I+480|0),Mg(I+160|0,I+320|0),xg(g=I+640|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(g=I+800|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(g=I+960|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(g=I+1120|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(g=I+1280|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(g=I+1440|0,I+160|0),gg(I+320|0,I,g),Mg(I+160|0,I+320|0),xg(I+1600|0,I+160|0),cI(A),g=252;gI(I+320|0,A),e=g,(0|(g=a[g+34208|0]))>=1?(Mg(I+160|0,I+320|0),gg(I+320|0,I+160|0,(I+480|0)+Q((254&g)>>>1|0,160)|0)):(0|g)>-1||(Mg(I+160|0,I+320|0),Ig(I+320|0,I+160|0,(I+480|0)+Q((0-g&254)>>>1|0,160)|0)),Mg(A,I+320|0),g=e+-1|0,e;);p=I+1760|0}(g,A),A=AI(g),p=g+160|0,A}(I+96|0)&&(HI(I),uA(I,I,g=I+136|0),HI(I+48|0),lA(I+48|0,I+48|0,g),z(I,I),k(I+48|0,I+48|0,I),nA(A,I+48|0),e=0),p=I+256|0,0|e},dc:function(A,g){A|=0;var I,e=0;return p=I=p+-64|0,Wg(I,g|=0,32,0),a[0|I]=248&i[0|I],a[I+31|0]=63&i[I+31|0]|64,g=n[I+20>>2],e=n[I+16>>2],a[A+16|0]=e,a[A+17|0]=e>>>8,a[A+18|0]=e>>>16,a[A+19|0]=e>>>24,a[A+20|0]=g,a[A+21|0]=g>>>8,a[A+22|0]=g>>>16,a[A+23|0]=g>>>24,g=n[I+12>>2],e=n[I+8>>2],a[A+8|0]=e,a[A+9|0]=e>>>8,a[A+10|0]=e>>>16,a[A+11|0]=e>>>24,a[A+12|0]=g,a[A+13|0]=g>>>8,a[A+14|0]=g>>>16,a[A+15|0]=g>>>24,g=n[I+4>>2],e=n[I>>2],a[0|A]=e,a[A+1|0]=e>>>8,a[A+2|0]=e>>>16,a[A+3|0]=e>>>24,a[A+4|0]=g,a[A+5|0]=g>>>8,a[A+6|0]=g>>>16,a[A+7|0]=g>>>24,g=n[I+28>>2],e=n[I+24>>2],a[A+24|0]=e,a[A+25|0]=e>>>8,a[A+26|0]=e>>>16,a[A+27|0]=e>>>24,a[A+28|0]=g,a[A+29|0]=g>>>8,a[A+30|0]=g>>>16,a[A+31|0]=g>>>24,Gg(I,64),p=I- -64|0,0},ec:Xg,fc:$g,gc:function(A){var g=0,I=0;if((A|=0)>>>0>=2){for(I=(0-A>>>0)%(A>>>0)|0;(g=Xg())>>>0>>0;);A=(g>>>0)%(A>>>0)|0}else A=0;return 0|A},hc:mg,ic:function(A,g,I){KI(A|=0,g|=0,1784,I|=0)},jc:jI,kc:function(){var A=0,g=0;return(A=n[9097])&&(A=n[A+20>>2])&&(g=0|r[0|A]()),0|g},lc:function(A,g,I){!function(A,g,I){1==(0|I)&g>>>0>=0|I>>>0>1&&(E(1796,1816,197,1842),c()),mg(A,g)}(A|=0,g|=0,I|=0)},mc:function(A,g,I,e){A|=0,I|=0;var B=0,r=0,t=0;if(!((e|=0)>>>0>2147483646|e<<1>>>0>=(g|=0)>>>0)){if(g=0,e){for(;B=g<<1,r=(t=i[g+I|0])>>>4|0,a[B+A|0]=87+(r+(r+65526>>>8&217)|0),r=(1|B)+A|0,B=15&t,a[0|r]=22272+((B<<8)+(B+65526&55552)|0)>>>8,(0|e)!=(0|(g=g+1|0)););g=e<<1}else g=0;return a[g+A|0]=0,0|A}oI(),c()},nc:function(A,g,I,e,B,r,t){A|=0,g|=0,I|=0,B|=0,r|=0,t|=0;var C=0,Q=0,o=0,c=0,E=0,s=0,y=0,h=0,f=0,_=0,p=0;A:if(e|=0){g:{I:{e:for(;;){for(Q=C;;){B:{if(!(255&((f=(65526+(y=(223&(s=i[I+Q|0]))-55&255)^y+65520)>>>8|0)|(o=65526+(_=48^s)>>>8|0)))){if(o=1,!B|255&E)break I;if(hI(B,s))break B;C=Q;break A}if(c>>>0>=g>>>0){n[8960]=68,o=0;break I}if(C=y&f|o&_,255&E?(a[A+c|0]=C|p,c=c+1|0):p=C<<4,E^=-1,o=1,(C=Q+1|0)>>>0>>0)continue e;break g}if(E=0,!((Q=Q+1|0)>>>0>>0))break}break}C=(A=C+1|0)>>>0>>0?e:A;break A}C=Q}255&E?(n[8960]=28,h=-1,C=C+-1|0,c=0):o||(c=0,h=-1)}return t?n[t>>2]=I+C:(0|e)!=(0|C)&&(n[8960]=28,h=-1),r&&(n[r>>2]=c),0|h},oc:function(A,g){var I;return A|=0,NI(g|=0),A=Q(I=(A>>>0)/3|0,-3)+A|0,Q(4-(3-A&0-(g>>>1&1))|0,1&(A|A>>>1))+(I<<2|1)|0},pc:$,qc:O,rc:function(){var A=0;return n[9104]?A=1:(n[9086]=0,function(){var A;p=A=p-16|0,tI(A),n[A>>2]&&(tI(A),iA(36348,0,40)),p=A+16|0}(),n[9085]=1,$g(),function(){var A=0;(0|(A=0|h(30)))>=1?n[8943]=A:A=n[8943],A>>>0<=15&&(oI(),c()),mg(36400,16)}(),n[9104]=1,A=0),0|A},sc:function(A,g,I,e,B){A|=0,g|=0,I|=0,B|=0;var r,t=0,C=0,Q=0;p=r=p-16|0;A:{if(e|=0){if(Q=-1,(t=(t=e+-1|0)-(C=t&e?(I>>>0)%(e>>>0)|0:I&t)|0)>>>0>=(-1^I)>>>0)break A;if(!((I=I+t|0)>>>0>=B>>>0))for(A&&(n[A>>2]=I+1),A=g+I|0,Q=0,a[r+15|0]=0,g=e>>>0>1?e:1,e=0;B=I=A-e|0,C=i[0|I]&i[r+15|0],I=(e^t)-1>>>24|0,a[0|B]=C|128&I,a[r+15|0]=I|i[r+15|0],(0|g)!=(0|(e=e+1|0)););}else Q=-1;return p=r+16|0,0|Q}oI(),c()},tc:function(A,g,I,e){A|=0,g|=0,I|=0,e|=0;var B,r=0,a=0,t=0,C=0,Q=0;if(n[12+(B=p-16|0)>>2]=0,e+-1>>>0>>0){for(Q=(r=I+-1|0)+g|0,I=0,g=0;C=((128^(a=i[Q-I|0]))-1&n[B+12>>2]+-1&t+-1)>>>8&1,n[B+12>>2]=n[B+12>>2]|0-C&I,g|=C,t|=a,(0|e)!=(0|(I=I+1|0)););n[A>>2]=r-n[B+12>>2],A=g+-1|0}else A=-1;return 0|A},uc:function(){return 35762},vc:function(){return 10},wc:re,xc:Ae,yc:function(){return 35840},zc:b,Ac:Y,Bc:function(g){return 0|function(g){g|=0;var I=0|ae(),r=I+g|0;if(I>0]=g;break;case"i16":m[A>>1]=g;break;case"i32":Y[A>>2]=g;break;case"i64":EA=[g>>>0,(cA=g,+z(cA)>=1?cA>0?(0|gA(+AA(cA/4294967296),4294967295))>>>0:~~+$((cA-+(~~cA>>>0))/4294967296)>>>0:0)],Y[A>>2]=EA[0],Y[A+4>>2]=EA[1];break;case"float":H[A>>2]=g;break;case"double":S[A>>3]=g;break;default:tA("invalid type for setValue: "+I)}}function u(A,g,I){switch("*"===(g=g||"i8").charAt(g.length-1)&&(g="i32"),g){case"i1":case"i8":return F[A>>0];case"i16":return m[A>>1];case"i32":case"i64":return Y[A>>2];case"float":return H[A>>2];case"double":return S[A>>3];default:tA("invalid type for getValue: "+g)}return null}y=[],"object"!=typeof _&&tA("no native wasm support detected");var l=new _.Table({initial:14,element:"anyfunc"}),w=!1;function D(A,g){A||tA("Assertion failed: "+g)}var v="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function d(A,g,I){for(var e=g+I,B=g;A[B]&&!(B>=e);)++B;if(B-g>16&&A.subarray&&v)return v.decode(A.subarray(g,B));for(var r="";g>10,56320|1023&i)}}else r+=String.fromCharCode((31&a)<<6|t)}else r+=String.fromCharCode(a)}return r}function b(A,g){return A?d(G,A,g):""}var k,F,G,m,Y,H,S,U=65536;function M(A,g){return A%g>0&&(A+=g-A%g),A}function N(A){k=A,g.HEAP8=F=new Int8Array(A),g.HEAP16=m=new Int16Array(A),g.HEAP32=Y=new Int32Array(A),g.HEAPU8=G=new Uint8Array(A),g.HEAPU16=new Uint16Array(A),g.HEAPU32=new Uint32Array(A),g.HEAPF32=H=new Float32Array(A),g.HEAPF64=S=new Float64Array(A)}var P=5279472,x=36432,R=g.INITIAL_MEMORY||16777216;function J(A){for(;A.length>0;){var I=A.shift();if("function"!=typeof I){var e=I.func;"number"==typeof e?void 0===I.arg?g.dynCall_v(e):g.dynCall_vi(e,I.arg):e(void 0===I.arg?null:I.arg)}else I(g)}}(f=g.wasmMemory?g.wasmMemory:new _.Memory({initial:R/U,maximum:2147483648/U}))&&(k=f.buffer),R=k.byteLength,N(k),Y[x>>2]=P;var K=[],L=[],T=[],q=[];function X(){if(g.preRun)for("function"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)j(g.preRun.shift());J(K)}function V(){J(L)}function W(){J(T)}function O(){if(g.postRun)for("function"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;)Z(g.postRun.shift());J(q)}function j(A){K.unshift(A)}function Z(A){q.unshift(A)}var z=Math.abs,$=Math.ceil,AA=Math.floor,gA=Math.min,IA=0,eA=null,BA=null;function rA(A){IA++,g.monitorRunDependencies&&g.monitorRunDependencies(IA)}function aA(A){if(IA--,g.monitorRunDependencies&&g.monitorRunDependencies(IA),0==IA&&(null!==eA&&(clearInterval(eA),eA=null),BA)){var I=BA;BA=null,I()}}function tA(A){throw g.onAbort&&g.onAbort(A),h(A+=""),w=!0,A="abort("+A+"). Build with -s ASSERTIONS=1 for more info.",new _.RuntimeError(A)}function nA(A,g){return String.prototype.startsWith?A.startsWith(g):0===A.indexOf(g)}g.preloadedImages={},g.preloadedAudios={};var iA="data:application/octet-stream;base64,";function CA(A){return nA(A,iA)}var QA="file://";function oA(A){return nA(A,QA)}var cA,EA,sA="";function yA(){try{if(y)return new Uint8Array(y);var A=UA(sA);if(A)return A;if(Q)return Q(sA);throw"both async and sync fetching of the wasm failed"}catch(A){tA(A)}}function hA(){return y||!a&&!t||"function"!=typeof fetch||oA(sA)?Promise.resolve().then(yA):fetch(sA,{credentials:"same-origin"}).then((function(A){if(!A.ok)throw"failed to load wasm binary file at '"+sA+"'";return A.arrayBuffer()})).catch((function(){return yA()}))}function fA(){var A={a:NA};function I(A,I){var e=A.exports;g.asm=e,aA()}function e(A){I(A.instance)}function B(g){return hA().then((function(g){return _.instantiate(g,A)})).then(g,(function(A){h("failed to asynchronously prepare wasm: "+A),tA(A)}))}if(rA(),g.instantiateWasm)try{return g.instantiateWasm(A,I)}catch(A){return h("Module.instantiateWasm callback failed with error: "+A),!1}return function(){if(y||"function"!=typeof _.instantiateStreaming||CA(sA)||oA(sA)||"function"!=typeof fetch)return B(e);fetch(sA,{credentials:"same-origin"}).then((function(g){return _.instantiateStreaming(g,A).then(e,(function(A){return h("wasm streaming compile failed: "+A),h("falling back to ArrayBuffer instantiation"),B(e)}))}))}(),{}}CA(sA)||(sA=s(sA));var _A={1024:function(){return g.getRandomValue()},1062:function(){if(void 0===g.getRandomValue)try{var A="object"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto,e=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};e(),g.getRandomValue=e}catch(A){try{var B=require("crypto"),r=function(){var A=B.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};r(),g.getRandomValue=r}catch(A){throw"No secure random number generator found"}}}};function pA(A,g,I,e){tA("Assertion failed: "+b(A)+", at: "+[g?b(g):"unknown filename",I,e?b(e):"unknown function"])}function uA(){tA()}function lA(A,g,I){var e=GA(g,I);return _A[A].apply(null,e)}function wA(A,g,I){G.copyWithin(A,g,g+I)}function DA(){return G.length}function vA(A){try{return f.grow(A-k.byteLength+65535>>>16),N(f.buffer),1}catch(A){}}function dA(A){A>>>=0;var g=DA(),I=2147483648;if(A>I)return!1;for(var e=1;e<=4;e*=2){var B=g*(1+.2/e);if(B=Math.min(B,A+100663296),vA(Math.min(I,M(Math.max(16777216,A,B),65536))))return!0}return!1}function bA(A){return Y[xA()>>2]=A,A}function kA(A){switch(A){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return bA(28),-1}L.push({func:function(){PA()}});var FA=[];function GA(A,g){var I;for(FA.length=0,g>>=2;I=G[A++];){var e=I<105;e&&1&g&&g++,FA.push(e?S[g++>>1]:Y[g]),++g}return FA}var mA=!1;function YA(A){for(var g=[],I=0;I255&&(mA&&D(!1,"Character code "+e+" ("+String.fromCharCode(e)+") at offset "+I+" not in 0x00-0xFF."),e&=255),g.push(String.fromCharCode(e))}return g.join("")}var HA="function"==typeof atob?atob:function(A){var g,I,e,B,r,a,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="",i=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{g=t.indexOf(A.charAt(i++))<<2|(B=t.indexOf(A.charAt(i++)))>>4,I=(15&B)<<4|(r=t.indexOf(A.charAt(i++)))>>2,e=(3&r)<<6|(a=t.indexOf(A.charAt(i++))),n+=String.fromCharCode(g),64!==r&&(n+=String.fromCharCode(I)),64!==a&&(n+=String.fromCharCode(e))}while(i0||(X(),IA>0||(g.setStatus?(g.setStatus("Running..."),setTimeout((function(){setTimeout((function(){g.setStatus("")}),1),I()}),1)):I()))}if(g.setValue=p,g.getValue=u,g.UTF8ToString=b,BA=function A(){MA||JA(),MA||(BA=A)},g.run=JA,g.preInit)for("function"==typeof g.preInit&&(g.preInit=[g.preInit]);g.preInit.length>0;)g.preInit.pop()();JA(),Object.keys(B).forEach((function(A){"getRandomValue"!==A&&delete B[A]})),Object.keys(g).forEach((function(A){B[A]=g[A]}))};var e,r=void 0!==r?r:{},a={};for(e in r)r.hasOwnProperty(e)&&(a[e]=r[e]);var t=[],n=!1,i=!1,C=!1,Q=!1;n="object"==typeof window,i="function"==typeof importScripts,C="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,Q=!n&&!C&&!i;var o,c,E,s,y="";function h(A){return r.locateFile?r.locateFile(A,y):y+A}C?(y=i?require("path").dirname(y)+"/":__dirname+"/",o=function(A,g){var I=MA(A);return I?g?I:I.toString():(E||(E=require("fs")),s||(s=require("path")),A=s.normalize(A),E.readFileSync(A,g?null:"utf8"))},c=function(A){var g=o(A,!0);return g.buffer||(g=new Uint8Array(g)),v(g.buffer),g},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),t=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=r),process.on("unhandledRejection",nA),r.inspect=function(){return"[Emscripten Module object]"}):Q?("undefined"!=typeof read&&(o=function(A){var g=MA(A);return g?HA(g):read(A)}),c=function(A){var g;return(g=MA(A))?g:"function"==typeof readbuffer?new Uint8Array(readbuffer(A)):(v("object"==typeof(g=read(A,"binary"))),g)},"undefined"!=typeof scriptArgs?t=scriptArgs:void 0!==arguments&&(t=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(n||i)&&(i?y=self.location.href:I.currentScript&&(y=I.currentScript.src),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",o=function(A){try{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.send(null),g.responseText}catch(g){var I=MA(A);if(I)return HA(I);throw g}},i&&(c=function(A){try{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}catch(g){var I=MA(A);if(I)return I;throw g}})),r.print;var f,_,p=r.printErr||void 0;for(e in a)a.hasOwnProperty(e)&&(r[e]=a[e]);function u(A,g,I,e){switch("*"===(I=I||"i8").charAt(I.length-1)&&(I="i32"),I){case"i1":case"i8":G[A>>0]=g;break;case"i16":Y[A>>1]=g;break;case"i32":H[A>>2]=g;break;case"i64":sA=[g>>>0,(EA=g,+$(EA)>=1?EA>0?(0|IA(+gA(EA/4294967296),4294967295))>>>0:~~+AA((EA-+(~~EA>>>0))/4294967296)>>>0:0)],H[A>>2]=sA[0],H[A+4>>2]=sA[1];break;case"float":S[A>>2]=g;break;case"double":U[A>>3]=g;break;default:nA("invalid type for setValue: "+I)}}function l(A,g,I){switch("*"===(g=g||"i8").charAt(g.length-1)&&(g="i32"),g){case"i1":case"i8":return G[A>>0];case"i16":return Y[A>>1];case"i32":case"i64":return H[A>>2];case"float":return S[A>>2];case"double":return U[A>>3];default:nA("invalid type for getValue: "+g)}return null}a=null,r.arguments&&(t=r.arguments),r.thisProgram&&r.thisProgram,r.quit&&r.quit,r.wasmBinary&&(f=r.wasmBinary),r.noExitRuntime&&r.noExitRuntime,"object"!=typeof WebAssembly&&nA("no native wasm support detected");var w=new WebAssembly.Table({initial:14,element:"anyfunc"}),D=!1;function v(A,g){A||nA("Assertion failed: "+g)}var d="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function b(A,g,I){for(var e=g+I,B=g;A[B]&&!(B>=e);)++B;if(B-g>16&&A.subarray&&d)return d.decode(A.subarray(g,B));for(var r="";g>10,56320|1023&i)}}else r+=String.fromCharCode((31&a)<<6|t)}else r+=String.fromCharCode(a)}return r}function k(A,g){return A?b(m,A,g):""}var F,G,m,Y,H,S,U,M=65536;function N(A,g){return A%g>0&&(A+=g-A%g),A}function P(A){F=A,r.HEAP8=G=new Int8Array(A),r.HEAP16=Y=new Int16Array(A),r.HEAP32=H=new Int32Array(A),r.HEAPU8=m=new Uint8Array(A),r.HEAPU16=new Uint16Array(A),r.HEAPU32=new Uint32Array(A),r.HEAPF32=S=new Float32Array(A),r.HEAPF64=U=new Float64Array(A)}var x=5279472,R=36432,J=r.INITIAL_MEMORY||16777216;function K(A){for(;A.length>0;){var g=A.shift();if("function"!=typeof g){var I=g.func;"number"==typeof I?void 0===g.arg?r.dynCall_v(I):r.dynCall_vi(I,g.arg):I(void 0===g.arg?null:g.arg)}else g(r)}}(_=r.wasmMemory?r.wasmMemory:new WebAssembly.Memory({initial:J/M,maximum:2147483648/M}))&&(F=_.buffer),J=F.byteLength,P(F),H[R>>2]=x;var L=[],T=[],q=[],X=[];function V(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)Z(r.preRun.shift());K(L)}function W(){K(T)}function O(){K(q)}function j(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)z(r.postRun.shift());K(X)}function Z(A){L.unshift(A)}function z(A){X.unshift(A)}var $=Math.abs,AA=Math.ceil,gA=Math.floor,IA=Math.min,eA=0,BA=null,rA=null;function aA(A){eA++,r.monitorRunDependencies&&r.monitorRunDependencies(eA)}function tA(A){if(eA--,r.monitorRunDependencies&&r.monitorRunDependencies(eA),0==eA&&(null!==BA&&(clearInterval(BA),BA=null),rA)){var g=rA;rA=null,g()}}function nA(A){throw r.onAbort&&r.onAbort(A),p(A+=""),D=!0,A="abort("+A+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(A)}function iA(A,g){return String.prototype.startsWith?A.startsWith(g):0===A.indexOf(g)}r.preloadedImages={},r.preloadedAudios={};var CA="data:application/octet-stream;base64,";function QA(A){return iA(A,CA)}var oA="file://";function cA(A){return iA(A,oA)}var EA,sA,yA="data:application/octet-stream;base64,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AUgEQCAAIQIMAQsgAEEDcUUEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA08NASACQQNxDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIANBfGoiBCAASQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAAL7AEBEn8gAigCBCEDIAEoAgQhBCACKAIIIQUgASgCCCEGIAIoAgwhByABKAIMIQggAigCECEJIAEoAhAhCiACKAIUIQsgASgCFCEMIAIoAhghDSABKAIYIQ4gAigCHCEPIAEoAhwhECACKAIgIREgASgCICESIAIoAiQhEyABKAIkIRQgACACKAIAIAEoAgBqNgIAIAAgEyAUajYCJCAAIBEgEmo2AiAgACAPIBBqNgIcIAAgDSAOajYCGCAAIAsgDGo2AhQgACAJIApqNgIQIAAgByAIajYCDCAAIAUgBmo2AgggACADIARqNgIECxgBAX9BxJwCKAIAIgAEQCAAEQ4ACxACAAtAAQN/IAAgASABQfgAaiICEAsgAEEoaiABQShqIgMgAUHQAGoiBBALIABB0ABqIAQgAhALIABB+ABqIAEgAxALC+wBARJ/IAIoAgQhAyABKAIEIQQgAigCCCEFIAEoAgghBiACKAIMIQcgASgCDCEIIAIoAhAhCSABKAIQIQogAigCFCELIAEoAhQhDCACKAIYIQ0gASgCGCEOIAIoAhwhDyABKAIcIRAgAigC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IgBBAnRBtJoCaiICKAIAIAFGBEAgAiADNgIAIAMNAUGImAIgCkF+IAB3cTYCAAwCCyAJQRBBFCAJKAIQIAFGG2ogAzYCACADRQ0BCyADIAk2AhggASgCECIABEAgAyAANgIQIAAgAzYCGAsgASgCFCIARQ0AIAMgADYCFCAAIAM2AhgLAkAgBEEPTQRAIAEgBCAFaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIEDAELIAEgBUEDcjYCBCALIARBAXI2AgQgBCALaiAENgIAIAgEQCAIQQN2IgNBA3RBrJgCaiEAQZiYAigCACECAn9BASADdCIDIAZxRQRAQYSYAiADIAZyNgIAIAAMAQsgACgCCAshAyAAIAI2AgggAyACNgIMIAIgADYCDCACIAM2AggLQZiYAiALNgIAQYyYAiAENgIACyABQQhqIQALIAxBEGokACAAC5ABAQN/IAAhAQJAAkAgAEEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANB//37d2pxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLZQEDfyACRQRAQQAPCwJAIAAtAAAiA0UNAANAAkAgAyABLQAAIgVHDQAgAkF/aiICRSAFRXINACABQQFqIQEgAC0AASEDIABBAWohACADDQEMAgsLIAMhBAsgBEH/AXEgAS0AAGsLEQAgACABQdCXAigCABECABoLEQAgACABQciXAigCABECABoLCgAgACABIAIQGAsoACAAIAEgAhBRIABBKGogAUEoaiACEFEgAEHQAGogAUHQAGogAhBRCzUBAX8jAEHABWsiAiQAIAAgAhDGAiABIABBwAAQmgEgAkHABRAJIABB0AEQCSACQcAFaiQACwgAIABBIBAfCxEAIAAgAXNB/wFxQX9qQR92CwwAIAAgAUGACBASGgtVAQJ/QdCcAigCACIBIABBA2pBfHEiAmohAAJAIAJBAU5BACAAIAFNGw0AIAA/AEEQdEsEQCAAEAVFDQELQdCcAiAANgIAIAEPC0GAmAJBMDYCAEF/C0YBBH4gASkCCCECIAEpAhAhAyABKQIYIQQgASkCACEFIAAgASkCIDcC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E34gDiASfnwgDyAVfnwgECAXfnwgESAZfnwiDUIaiEL/////D4N8Ig5CGohC/////w+DfCIPQhqIQv////8Pg3wiEEIaiEL/////D4N8IhFCGoinQQVsIA2nQf///x9xaiIDQRp2IA6nQf///x9xaiEHIA+nQf///x9xIQYgEKdB////H3EhBSARp0H///8fcSEEIANB////H3EhAyABQRBqIQEgAkJwfCICQg9WDQALCyAAIAM2AhQgACAENgIkIAAgBTYCICAAIAY2AhwgACAHNgIYC/IBAQJ/IABFBEBBZw8LIAAoAgBFBEBBfw8LAkACQAJ/QX4gACgCBEEQSQ0AGiAAKAIIRQRAQW4gACgCDA0BGgsgACgCFCEBIAAoAhBFDQFBeiABQQhJDQAaIAAoAhhFBEBBbCAAKAIcDQEaCyAAKAIgRQRAQWsgACgCJA0BGgsgACgCMCIBRQRAQXAPC0FvIAFB////B0sNABpBciAAKAIsIgJBCEkNABpBcSACQYCAgAFLDQAaQXIgAiABQQN0SQ0AGiAAKAIoRQRAQXQPCyAAKAI0IgANAkFkCw8LQW1BeiABGw8LQWNBACAAQf///wdLGwvJDQIRfxB+IwBBgBBrIgMkACADQYAIaiABECogA0GACGogABAuIAMgA0GACGoQKiADIAIQLkEAIQEDQCADQYAIaiAEQQd0IgBB4AByaiIFKQMAIANBgAhqIABqIgkpAwAgA0GACGogAEEgcmoiBikDACIZEAciGoVBIBAGIRQgBSAUIBogGSADQYAIaiAAQcAAcmoiBykDACAUEAciGYVBGBAGIhoQByIXhUEQEAYiFDcDACAHIBkgFBAHIhk3AwAgBiAZIBqFQT8QBiIaNwMAIANBgAhqIABByAByaiIIKQMAIANBgAhqIABB6AByaiIKKQMAIANBgAhqIABBCHJqIgspAwAgA0GACGogAEEocmoiDCkDACIVEAciFoVBIBAGIhgQByEbIAggGyAYIBYgFSAbhUEYEAYiFRAHIiKFQRAQBiIjEAciGzcDACAVIBuFQT8QBiEVIANBgAhqIABB0AByaiINKQMAIANBgAhqIABB8AByaiIOKQMAIANBgAhqIABBEHJqIg8pAwAgA0GACGogAEEwcmoiECkDACIWEAciGIVBIBAGIh0QByIeIBaFQRgQBiEWIBYg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IhIgEGpBEhAIIAVzIQUgBCAUcyIEIAtqQQcQCCAVcyICIARqQQkQCCAIcyIIIAJqQQ0QCCALcyILIAhqQRIQCCAEcyEEIAMgFnMiAyABakEHEAggDHMiDCADakEJEAggCXMiCSAMakENEAggAXMiASAJakESEAggA3MhAyAGIBdzIgYgDmpBBxAIIBFzIgcgBmpBCRAIIA1zIg0gB2pBDRAIIA5zIg4gDWpBEhAIIAZzIQYgD0ECSyERIA9BfmohDyARDQALIAAgBRAKIABBBGogBBAKIABBCGogAxAKIABBDGogBhAKIABBEGogAhAKIABBFGogCBAKIABBGGogCRAKIABBHGogARAKQQALBABBCAsoACACQoCAgIAQWgRAEBQACyAAIAEgAiADIAQgBUHwlwIoAgARFAAaCyQAIAFCgICAgBBaBEAQFAALIAAgASACIANB6JcCKAIAEREAGgsZACAAIAEgAiADQgAgBEHglwIoAgARFQAaCxAAIAAgAUHYlwIoAgARAgALKwECfyMAQRBrIgAkACAAQQA6AA9BgAggAEEPakEAEAEhASAAQRBqJAAgAQuVEgEefiAAEA8hECAANQACIREgAEEFahAPIRIgADUAByEZIAA1AAohGiAAQQ1qEA8hGyAANQAPIQsgAEESahAPIQogAEEVahAPIQggADUAFyEFIABBGmoQDyEBIAA1ABwhHCAANQAfIRMgAEEiahAPIRQgADUAJCEMIABBJ2oQDyEPIABBKmoQDyEJIAA1ACwhBiAAIABBL2oQD0ICiEL///8AgyICQtGrCH4gAUICiEL///8Ag3wgADUAMUIHiEL///8AgyIBQtOMQ358IAA1ADRCBIhC////AIMiA0Ln9id+fCAAQTdqEA9CAYhC////AIMiBEKY2hx+fCAANQA5QgaIQv///wCDIgdCk9gofnwiFSAGQgWIQv///wCDIAA1ADxCA4giBkKDoVZ+IAlC////AIN8Ig1CgIBAfSIOQhWHfCIJQoOhVn58IAJC04xDfiAFQgWIQv///wCDfCABQuf2J358IANCmNocfnwgBEKT2Ch+fCACQuf2J34gCEL///8Ag3wgAUKY2hx+fCADQpPYKH58IgVCgIBAfSIWQhWIfCIIQoCAQH0iF0IVh3wgFUKAgEB9IhVCgICAf4N9IhggGEKAgEB9IhhCgICAf4N9IAlC0asIfiAIfCAXQoCAgH+DfSANIA5CgICAf4N9IAZC0asIfiAPQgOIQv///wCDfCAHQoOhVn58IARCg6FWfiAMQgaIQv///wCDfCAGQtOMQ358IAdC0asIfnwiDEKAgEB9Ig9CFYd8Ig1CgIBAfSIOQhWHfCIIQoOhVn58IAUgAkKY2hx+IApCA4hC////AIN8IAFCk9gofnwgAkKT2Ch+IAtCBohC////AIN8IhdCgIBAfSIdQhWIfCIKQoCAQH0iHkIViHwgFkKAgID///8Hg30gCULTjEN+fCAIQtGrCH58IA0gDkKAgIB/g30iC0KDoVZ+fCIFQoCAQH0iDUIVh3wiDkKAgEB9IhZCFYd8IA4gFkKAgIB/g30gBSANQoCAgH+DfSAKIB5CgICA////B4N9IAlC5/YnfnwgCELTjEN+fCALQtGrCH58IAwgD0KAgIB/g30gA0KDoVZ+IBRCAYhC////AIN8IARC0asIfnwgBkLn9id+fCAHQtOMQ358IAFCg6FWfiATQgSIQv///wCDfCADQtGrCH58IARC04xDfnwgBkKY2hx+fCAHQuf2J358IhNCgIBAfSIUQhWHfCIFQoCAQH0iDEIVh3wiCkKDoVZ+fCAXIB1CgICA////AYN9IAlCmNocfnwgCELn9id+fCALQtOMQ358IApC0asIfnwgBSAMQoCAgH+DfSIFQoOhVn58IgxCgIBAfSIPQhWHfCINQoCAQH0iDkIVh3wgDSAOQoCAgH+DfSAMIA9CgICAf4N9IAlCk9gofiAbQgGIQv///wCDfCAIQpjaHH58IAtC5/YnfnwgCkLTjEN+fCAFQtGrCH58IBMgFEKAgIB/g30gAkKDoVZ+IBxCB4hC////AIN8IAFC0asIfnwgA0LTjEN+fCAEQuf2J358IAZCk9gofnwgB0KY2hx+fCAVQhWHfCIBQoCAQH0iA0IVh3wiAkKDoVZ+fCAIQpPYKH4gGkIEiEL///8Ag3wgC0KY2hx+fCAKQuf2J358IAVC04xDfnwgAkLRqwh+fCIEQoCAQH0iB0IVh3wiBkKAgEB9IglCFYd8IAYgASADQoCAgH+DfSAYQhWHfCIDQoCAQH0iCEIVhyIBQoOhVn58IAlCgICAf4N9IAFC0asIfiAEfCAHQoCAgH+DfSALQpPYKH4gGUIHiEL///8Ag3wgCkKY2hx+fCAFQuf2J358IAJC04xDfnwgCkKT2Ch+IBJCAohC////AIN8IAVCmNocfnwgAkLn9id+fCIEQoCAQH0iB0IVh3wiBkKAgEB9IglCFYd8IAYgAULTjEN+fCAJQoCAgH+DfSABQuf2J34gBHwgB0KAgIB/g30gBUKT2Ch+IBFCBYhC////AIN8IAJCmNocfnwgAkKT2Ch+IBBC////AIN8IgJCgIBAfSIEQhWHfCIHQoCAQH0iBkIVh3wgAUKY2hx+IAd8IAZCgICAf4N9IAIgBEKAgIB/g30gAUKT2Ch+fCIBQhWHfCIEQhWHfCIHQhWHfCIGQhWHfCIJQhWHfCILQhWHfCIKQhWHfCIFQhWHfCIQQhWHfCIRQhWHfCISQhWHIAMgCEKAgIB/g318IghCFYciAkKT2Ch+IAFC////AIN8IgE8AAAgACABQgiIPAABIAAgAkKY2hx+IARC////AIN8IAFCFYd8IgNCC4g8AAQgACADQgOIPAADIAAgAkLn9id+IAdC////AIN8IANCFYd8IgRCBog8AAYgACABQhCIQh+DIANC////AIMiA0IFhoQ8AAIgACACQtOMQ34gBkL///8Ag3wgBEIVh3wiAUIJiDwACSAAIAFCAYg8AAggACAEQv///wCDIgRCAoYgA0ITiIQ8AAUgACACQtGrCH4gCUL///8Ag3wgAUIVh3wiA0IMiDwADCAAIANCBIg8AAsgACABQv///wCDIgdCB4YgBEIOiIQ8AAcgACACQoOhVn4gC0L///8Ag3wgA0IVh3wiAUIHiDwADiAAIANC////AIMiA0IEhiAHQhGIhDwACiAAIApC////AIMgAUIVh3wiAkIKiDwAESAAIAJCAog8ABAgACABQv///wCDIgRCAYYgA0IUiIQ8AA0gACAFQv///wCDIAJCFYd8IgFCDYg8ABQgACABQgWIPAATIAAgAkL///8AgyIDQgaGIARCD4iEPAAPIAAgEEL///8AgyABQhWHfCICPAAVIAAgAUIDhiADQhKIhDwAEiAAIAJCCIg8ABYgACARQv///wCDIAJCFYd8IgFCC4g8ABkgACABQgOIPAAYIAAgEkL///8AgyABQhWHfCIDQgaIPAAbIAAgAkIQiEIfgyABQv///wCDIgFCBYaEPAAXIAAgCEL///8AgyADQhWHfCIC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ACAAIAEQfUEACykBAX8jAEEQayIEJAAgBCABIAIgAxB+GiAAIAQQOyEAIARBEGokACAAC1YCAX8BfgJAAn9BACAARQ0AGiAArSICpyIBIABBAXJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBECAiAEUNACAAQXxqLQAAQQNxRQ0AIABBACABEBAaCyAAC6YBAQR/IwBBgAhrIgIkACABKAIcBEAgAEHEAGohBSAAQUBrIQQDQCAEQQAQCiAFIAMQCiACQYAIIABByAAQViABKAIAKAIEIAEoAhggA2xBCnRqIAIQgQEgBEEBEAogAkGACCAAQcgAEFYgASgCACgCBCABKAIYIANsQQp0akGACGogAhCBASADQQFqIgMgASgCHEkNAAsLIAJBgAgQCSACQYAIaiQAC/ADAQJ/IwAiAyEEIANBwANrQUBxIgMkACAARSABRXJFBEAgA0FAa0EAQQBBwAAQPhogA0E8aiABKAIwEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIEEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIsEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIoEAogA0FAayADQTxqQgQQGBogA0E8akETEAogA0FAayADQTxqQgQQGBogA0E8aiACEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIMEAogA0FAayADQTxqQgQQGBoCQCABKAIIIgJFDQAgA0FAayACIAE1AgwQGBogAS0AOEEBcUUNACABKAIIIAEoAgwQCSABQQA2AgwLIANBPGogASgCFBAKIANBQGsgA0E8akIEEBgaIAEoAhAiAgRAIANBQGsgAiABNQIUEBgaCyADQTxqIAEoAhwQCiADQUBrIANBPGpCBBAYGgJAIAEoAhgiAkUNACADQUBrIAIgATUCHBAYGiABLQA4QQJxRQ0AIAEoAhggASgCHBAJIAFBADYCHAsgA0E8aiABKAIkEAogA0FAayADQTxqQgQQGBogASgCICICBEAgA0FAayACIAE1AiQQGBoLIANBQGsgAEHAABA9GgsgBCQAC68BAQN/IwBBEGsiAiQAQWohAwJAIABFIAFFcg0AIAFBCnQiBCABbkGACEcNACAAQQwQICIBNgIAIAFFDQAgAUIANwIAQYCYAiACQQxqIAQQsQEiATYCAAJAAkAgAQRAIAJBADYCDAwBCyACKAIMIgENAQsgACgCABAZIABBADYCAAwBCyAAKAIAIAE2AgAgACgCACABNgIEIAAoAgAgBDYCCEEAIQMLIAJBEGokACADC4cBAQJ/IwBB0ABrIgMkAEFnIQICQCAARSABRXINACAAIAAoAhRBA3QQICICNgIEIAJFBEBBaiECDAELIAAgACgCEBC7ASICBEAgACABKAI4EIIBDAELIAMgASAAKAIkELoBIANBQGtBCBAJIAMgABC5ASADQcgAEAlBACECCyADQdAAaiQAIAILkwEBBH8jAEEgayICJAACQCAARQ0AIAAoAhxFDQAgAiABNgIQQQEhBANAIAIgAzoAGEEAIQFBACEFIAQEQANAIAJBADYCHCACIAIpAxg3AwggAiABNgIUIAIgAikDEDcDACAAIAIQxAEgAUEBaiIBIAAoAhwiBUkNAAsLIAUhBCADQQFqIgNBBEcNAAsLIAJBIGokAAs5AAJAIAFFDQAgACgCACIBBEAgASgCBCAAKAIQQQp0EAkLIAAoAgQiAUUNACABIAAoAhRBA3QQCQsLKAECfwNAIAAgAkEDdCIDaiABIANqKQMAEBEgAkEBaiICQYABRw0ACwu8AQEDfyMAQYAQayICJAAgAEUgAUVyRQRAIAJBgAhqIAEoAgAoAgQgASgCGEEKdGpBgHhqECogASgCHEECTwRAQQEhAwNAIAJBgAhqIAEoAgAoAgQgASgCGCIEIAMgBGxqQQp0akGAeGoQLiADQQFqIgMgASgCHEkNAAsLIAIgAkGACGoQvwEgACgCACAAKAIEIAJBgAgQViACQYAIakGACBAJIAJBgAgQCSABIAAoAjgQggELIAJBgBBqJAALww0CEX8QfiMAQYAQayIDJAAgA0GACGogARAqIANBgAhqIAAQLiADIANBgAhqECpBACEBA0AgA0GACGogBEEHdCIAQeAAcmoiBSkDACADQYAIaiAAaiIJKQMAIANBgAhqIABBIHJqIgYpAwAiGRAHIhqFQSAQBiEUIAUgFCAaIBkgA0GACGogAEHAAHJqIgcpAwAgFBAHIhmFQRgQBiIaEAciF4VBEBAGIhQ3AwAgByAZIBQQByIZNwMAIAYgGSAahUE/EAYiGjcDACADQYAIaiAAQcgAcmoiCCkDACADQYAIaiAAQegAcmoiCikDACADQYAI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A6ABCwJAIAQEQCAFQYABaiAEENYBDAELIAVCADcDuAEgBUIANwOwAQsgACAFQYABahBbIAVBIGpBAEHgABAQGiAAIAUgAkEgEBIiAEKAARAyGiAAQYABEAkgAEHAAWokAA8LEBQACxEAIAAgAa0gAq1CIIaEELwCCxIAIAAgASACrSADrUIghoQQHAsVACAAIAEgAq0gA61CIIaEIAQQhQELFwAgACABIAIgA60gBK1CIIaEIAUQhwELFwAgACABIAIgA60gBK1CIIaEIAUQgwILFwAgACABIAIgA60gBK1CIIaEIAUQhAILFQAgACABIAKtIAOtQiCGhCAEEIkCCyUAIAAgASACIAMgBCAFrSAGrUIghoQgByAIrSAJrUIghoQQjQILJQAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCRCOAgsXACAAIAEgAq0gA61CIIaEIAQgBRC5AgsYACAAIAEgAiADrSAErUIghoQgBSAGEGoLFwAgACABIAKtIAOtQiCGhCAEIAUQugILGAAgACABIAIgA60gBK1CIIaEIAUgBhBrCxMAIAAgAa0gAq1CIIaEIAMQkQILFgAgACABKQAANwAwIAAgASkACDcAOAsTACAAIAEgAq0gA61CIIaEEJICCyEAIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYgBxCTAgsfACAAIAEgAq0gA61CIIaEIAStIAWtQiCGhCAGEIsBCy0AIAAgAa0gAq1CIIaEIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChCUAgsXACAAIAEgAq0gA61CIIaEIAQgBRCyAgsSACAAIAEgAq0gA61CIIaEEDQLEgAgACABIAKtIAOtQiCGhBAlCxkAIAAgASACIAOtIAStQiCGhCAFIAYQkwELFwAgACABIAKtIAOtQiCGhCAEIAUQtAILFQAgACABIAKtIAOtQiCGhCAEELUCCxYAIAAgASkAADcAICAAIAEpAAg3ACgLGQAgACABIAKtIAOtQiCGhCAEIAUgBhCUAQsXACAAIAEgAq0gA61CIIaEIAQgBRC3AgsbACAAIAEgAiADrSAErUIghoQgBSAGIAcQlQELGAAgACABIAIgA60gBK1CIIaEIAUgBhBoCxkAIAAgASACrSADrUIghoQgBCAFIAYQlgELFwAgACABIAKtIAOtQiCGhCAEIAUQuAILGwAgACABIAIgA60gBK1CIIaEIAUgBiAHEJcBCxgAIAAgASACIAOtIAStQiCGhCAFIAYQaQsVACAAIAEgAq0gA61CIIaEIAQQvwILFQAgACABIAKtIAOtQiCGhCAEEJkBCyUAIAAgASADIAStIAWtQiCGhCAGIAetIAitQiCGhCAJIAoQyAILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChCbAQslACAAIAEgAiADrSAErUIghoQgBSAGrSAHrUIghoQgCSAKEMoCCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxCcAQslACAAIAEgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEM4CCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQnQELJQAgACABIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChDPAgslACAAIAIgA60gBK1CIIaEIAUgBiAHrSAIrUIghoQgCSAKEJ4BCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQ0AILJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEJ8BCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQ0QILJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEKABCwQAQQoLBgBBspcCCwsAIAAgASACEIECCw0AIAAgASACIAMQggILCAAgABA1QQALCQAgACABEIcCCwsAIAAgASACEIkBCwUAQb9/CwUAQdABCywBAX8jAEFAaiIDJAAgACADECcgASADQsAAIAJBARCGASEAIANBQGskACAACy4BAX8jAEFAaiIEJAAgACAEECcgASACIARCwAAgA0EBEIgBIQAgBEFAayQAIAALewEBfwJAAkACQCADQsAAVA0AIANCQHwiA0K/////D1YNACACIAJBQGsiBSADIAQQhQFFDQEgAEUNACAAQQAgA6cQEBoLQX8hAiABRQ0BIAFCADcDAEF/DwsgAQRAIAEgAzcDAAtBACECIABFDQAgACAFIAOnEEcaCyACC3MBAX8jAEEQayIFJAAgACAFQQhqIABBQGsgAiAD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CyEAIAVBIGokACAACwQAQTALQgECfyMAQSBrIgUkAEF/IQYgAkIwWgRAIAUgASADEJIBIAAgAUEgaiACQmB8IAUgASAEEJQBIQYLIAVBIGokACAGC5ABAQJ/IwBB4ABrIgQkAEF/IQUgBEEgaiAEEJgBRQRAIARBQGsgBEEgaiADEJIBIABBIGogASACIARBQGsgAyAEEJYBIQUgACAEKQM4NwAYIAAgBCkDMDcAECAAIAQpAyg3AAggACAEKQMgNwAAIARBIBAJIARBIGpBIBAJIARBQGtBGBAJCyAEQeAAaiQAIAULBQBBgAMLJwEBf0F/IQUgAkIQWgR/IAAgAUEQaiABIAJCcHwgAyAEEGgFIAULCyIAIAJC8P///w9aBEAQFAALIABBEGogACABIAIgAyAEEGkLJwEBf0F/IQUgAkIQWgR/IAAgAUEQaiABIAJCcHwgAyAEEGoFIAULCyUAIAJC8P///w9aBEAQFAALIABBEGogACABIAIgAyAEEGsaQQALCwAgACABIAIQvgILLwAgAUKAgICAEFoEQEEAIgBBhA5qIABBmA5qQcUBIABBsg5qEAAACyAAIAGnEB8LMwECfyMAQSBrIgMkAEF/IQQgAyACIAEQpwFFBEAgAEHglQIgAxBtIQQLIANBIGokACAEC1YBAX8jAEFAaiIDJAAgAyACQiAQNBogASADKQMYNwAYIAEgAykDEDcAECABIAMpAwg3AAggASADKQMANwAAIANBwAAQCSAAIAEQciEAIANBQGskACAACz8BAX8jAEEgayIEJAAgBCABIAIgAxCZARogACAEEH8hASAEIABBIBBFIQMgBEEgaiQAIANBfyABIAAgBEYbcgtDAQF/IwBBQGoiAiQAIAAgAhDBAiABIAIpAxg3ABggASACKQMQNwAQIAEgAikDCDcACCABIAIpAwA3AAAgAkFAayQACzcBAX8jAEFAaiICJAAgACACECcgAEHQAWoiACACQsAAEBwaIAAgARAnIAJBwAAQCSACQUBrJAAL4QEBA38jAEHAAWsiAiQAIAAQNSACQUBrQTZBgAEQEBogAiABLQAAQTZzOgBAQQEhAwNAIAJBQGsgA2oiBCAELQAAIAEgA2otAABzOgAAIANBAWoiA0EgRw0ACyAAIAJBQGtCgAEQHBogAEHQAWoiABA1IAJBQGtB3ABB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cyIfIAxqQRIQCCEgIAcgDmpBBxAIIA9zIgMgDmpBCRAIIAZzIhAgA2pBDRAIIAdzIgcgEGpBEhAIIQ8gASAKakEHEAggDXMiDSABakEJEAggCHMiCCANakENEAggCnMiCiAIakESEAghISAEIAVqQQcQCCARcyIGIAVqQQkQCCALcyILIAZqQQ0QCCAEcyIiIAtqQRIQCCEjIAYgAiAgcyICakEHEAggB3MiByACakEJEAggCHMiCCAHakENEAggBnMiESAIakESEAggAnMhAiAOIA9zIgQgCWpBBxAIIApzIgogBGpBCRAIIAtzIgsgCmpBDRAIIAlzIgkgC2pBEhAIIARzIQ4gASAhcyIBIANqQQcQCCAicyIEIAFqQQkQCCAMcyIMIARqQQ0QCCADcyIPIAxqQRIQCCABcyEBIAUgI3MiBSANakEHEAggH3MiAyAFakEJEAggEHMiBiADakENEAggDXMiDSAGakESEAggBXMhBSAaQRJJIRAgGkECaiEaIBANAAsgACACQeXwwYsGahAKIABBBGogByASahAKIABBCGogCCATahAKIABBDGogESAUahAKIABBEGogCSAVahAKIABBFGogDkHuyIGZA2oQCiAAQRhqIAogG2oQCiAAQRxqIAsgHGoQCiAAQSBqIAwgHWoQCiAAQSRqIA8gHmoQCiAAQShqIAFBstqIywdqEAogAEEsaiAEIBZqEAogAEEwaiADIBdqEAogAEE0aiAGIBhqEAogAEE4aiANIBlqEAogAEE8aiAFQfTKgdkGahAKCzoBAX8jAEHgAGsiAyQAIANBMGogAiABEBMgAyACIAEQFiADIAMQOiAAIANBMGogAxALIANB4ABqJAALdgECfyMAQdABayICJAADQCAAIANqIAEgA2otAAA6AAAgA0EBaiIDQSBHDQALIAAgAC0AAEH4AXE6AAAgACAALQAfQT9xQcAAcjoAHyACQTBqIAAQdiACIAJB2ABqIAJBgAFqENsCIAAgAhAtIAJB0AFqJABBAAu9AwEMfiABNAIEIQIgATQCCCEDIAE0AgwhBCABNAIQIQUgATQCFCEGIAE0AhghByABNAIAIQsgACABNAIkQsK2B34iCCAIQoCAgAh8IghCgICA8A+DfSABNAIgQsK2B34gATQCHELCtgd+IglCgICACHwiCkIZh3wiDEKAgIAQfCINQhqIfD4CJCAAIAwgDUKAgIDgD4N9PgIgIAAgCSAKQoCAgPAPg30gB0LCtgd+IAZCwrYHfiIGQoCAgAh8IgdCGYd8IglCgICAEHwiCkIaiHw+AhwgACAJIApCgICA4A+DfT4CGCAAIAYgB0KAgIDwD4N9IAVCwrYHfiAEQsK2B34iBEKAgIAIfCIFQhmHfCIGQoCAgBB8IgdCGoh8PgIUIAAgBiAHQoCAgOAPg30+AhAgACAEIAVCgICA8A+DfSADQsK2B34gAkLCtgd+IgJCgICACHwiA0IZh3wiBEKAgIAQfCIFQhqIfD4CDCAAIAQgBUKAgIDgD4N9PgIIIAAgAiADQoCAgPAPg30gCEIZh0ITfiALQsK2B358IgJCgICAEHwiA0IaiHw+AgQgACACIANCgICA4A+DfT4CAAvcAQEFfyMAQRBrIgNBADYACyADQQA2AggDQCAAIAJqLQAAIQRBACEBA0AgA0EIaiABaiIFIAUtAAAgAUEFdEGgjQJqIAJqLQAAIARzcjoAACABQQFqIgFBB0cNAAsgAkEBaiICQR9HDQALIAAtAB9B/wBxIQJBACEAQQAhAQNAIANBCGogAWoiBCAELQAAIAIgAUEFdEG/jQJqLQAAc3I6AAAgAUEBaiIBQQdHDQALQQAhAQNAIANBCGogAGotAABBf2ogAXIhASAAQQFqIgBBB0cNAAsgAUEIdkEBcQvcBAEDfyMAQdACayIDJABBfyEEIAIQ3gJFBEBBACEEA0AgACAEaiABIARqLQAAOgAAIARBAWoiBEEgRw0ACyAAIAAtAABB+AFxOgAAIAAgAC0AH0E/cUHAAHI6AB8gA0GgAmogAhB6IANB8AFqEB0gA0HAAWoQOCADQZABaiADQaACahAsIANB4ABqEB1B/gEhAkEAIQQDQCADQfABaiADQZABaiAAIAIiBUEDdmotAAAgAkEHcXZBAXEiASAEcyIEEE4gA0HAAWogA0HgAGogBBBOIAJBf2ohAiADQTBqIANBkAFqIANB4ABqEBYgAyADQfABaiADQcABahAWIANB8AFqIANB8AFqIANBwAFqEBMgA0HAAWogA0GQAWogA0HgAGoQEyADQeAAaiADQTBqIANB8AFqEAsgA0HAAWogA0HAAWogAxALIANBMGogAxAOIAMgA0HwAWoQDiADQZABaiADQeAAaiADQcABahATIANBwAFqIANB4ABqIANBwAFqEBYgA0HwAWogAyADQTBqEAsgAyADIANBMGoQFiADQcABaiADQcABahAOIANB4ABqIAMQ3QIgA0GQAWogA0GQAWoQDiADQTBqIANBMGogA0HgAGoQEyADQeAAaiADQaACaiADQcABahALIANBwAFqIAMgA0EwahALIAEhBCAFDQALIANB8AFqIANBkAFqIAEQTiADQcABaiADQeAAaiABEE4gA0HAAWogA0HAAWoQOiADQfABaiADQfABaiADQcABahALIAAgA0HwAWoQLUEAIQQLIANB0AJqJAAgBAtUAQV/QSAhAUEBIQIDQCAAIAFBf2oiAWotAAAiBCABQYAbai0AACIFa0EIdSACcSADQf8BcXIhAyAEIAVzQf//A2pBCHYgAnEhAiABDQALIANBAEcL6B4BOn4gARAPIRIgATUAAiETIAFBBWoQDyEUIAE1AAchFSABNQAKIRYgAUENahAPIRcgATUADyERIAFBEmoQDyEOIAFBFWoQDyEQIAE1ABchCCABQRpqEA8hBCABNQAcIQcgAhAPIRggAjUAAiEZIAJBBWoQDyEaIAI1AAchGyACNQAKIQogAkENahAPIQkgAjUADyELIAJBEmoQDyEPIAJBFWoQDyEMIAI1ABchDSACQRpqEA8hBSACNQAcIQYgAxAPITIgAzUAAiEzIANBBWoQDyE0IAM1AAchNSADNQAKISEgA0ENahAPIS4gAzUADyEoIANBEmoQDyEpIANBFWoQDyEiIAAgBkIHiCIGIARCAohC////AIMiBH4gBUICiEL///8AgyIFIAdCB4giB358IAQgBX4gDUIFiEL///8AgyINIAd+fCAGIAhCBYhC////AIMiCH58Ih9CgIBAfSIgQhWHfCIjQoCAQH0iHEIVhyAGIAd+IiQgJEKAgEB9IiVCgICAf4N9fCIkQoOhVn4gJUIVhyIlQtGrCH58IAlCAYhC////AIMiCSAEfiAKQgSIQv///wCDIgogB358IAtCBohC////AIMiCyAIfnwgDEL///8AgyIMIA5CA4hC////AIMiDn58IA9CA4hC////AIMiDyAQQv///wCDIhB+fCANIBFCBohC////AIMiEX58IAUgF0IBiEL///8AgyIXfnwgBiAWQgSIQv///wCDIhZ+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eXB0b18gPSB0eXBlb2Ygd2luZG93Xy5jcnlwdG8gIT09ICd1bmRlZmluZWQnID8gd2luZG93Xy5jcnlwdG8gOiB3aW5kb3dfLm1zQ3J5cHRvOyB2YXIgcmFuZG9tVmFsdWVzU3RhbmRhcmQgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IG5ldyBVaW50MzJBcnJheSgxKTsgY3J5cHRvXy5nZXRSYW5kb21WYWx1ZXMoYnVmKTsgcmV0dXJuIGJ1ZlswXSA+Pj4gMDsgfTsgcmFuZG9tVmFsdWVzU3RhbmRhcmQoKTsgTW9kdWxlLmdldFJhbmRvbVZhbHVlID0gcmFuZG9tVmFsdWVzU3RhbmRhcmQ7IH0gY2F0Y2ggKGUpIHsgdHJ5IHsgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpOyB2YXIgcmFuZG9tVmFsdWVOb2RlSlMgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IGNyeXB0b1sncmFuZG9tQnl0ZXMnXSg0KTsgcmV0dXJuIChidWZbMF0gPDwgMjQgfCBidWZbMV0gPDwgMTYgfCBidWZbMl0gPDwgOCB8IGJ1ZlszXSkgPj4+IDA7IH07IHJhbmRvbVZhbHVlTm9kZUpTKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlTm9kZUpTOyB9IGNhdGNoIChlKSB7IHRocm93ICdObyBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm91bmQnOyB9IH0gfSB9AExpYnNvZGl1bURSR2J1Zl9sZW4gPD0gU0laRV9NQVgAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwByYW5kb21ieXRlcwBTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGJsYWtlMmJfZmluYWwAAAAAAAAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FtvdXRsZW4gPD0gVUlOVDhfTUFYAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAAAAAAAAAtnhZ/4Vy0wC9bhX/DwpqACnAAQCY6Hn/vDyg/5lxzv8At+L+tA1I/wAAAAAAAAAAsKAO/tPJhv+eGI8Af2k1AGAMvQCn1/v/n0yA/mpl4f8e/AQAkgyuAEGwEQsnWfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQAEHgEQvAB4U7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7amACbK/H+m6Bo/zO7pQACEa8AQlSgAfc6HgAjQTX+Rey/AC2G9QGje90AIG4U/zQXpQC61kcA6bBgAPLvNgE5WYoAUwBU/4igZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/9KjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/y9jqP6q4pn/ZrPYAOKNev96Qpn+tvWGAOPkGQHWOev/2K04/7Xn0gB3gJ3/gV+I/25+MwACqbf/B4Ji/kWwXv90BOMB2fKR/8qtHwFpASf/Lq9FAOQvOv/X4EX+zzhF/xD+i/8Xz9T/yhR+/1/VYP8JsCEAyAXP//EqgP4jIcD/+OXEAYEReAD7Z5f/BzRw/4w4Qv8o4vX/2UYl/qzWCf9IQ4YBksDW/ywmcABEuEv/zlr7AJXrjQC1qjoAdPTvAFydAgBmrWIA6YlgAX8xywAFm5QAF5QJ/9N6DAAihhr/28yIAIYIKf/gUyv+VRn3AG1/AP6piDAA7nfb/+et1QDOEv7+CLoH/34JBwFvKkgAbzTs/mA/jQCTv3/+zU7A/w5q7QG720wAr/O7/mlZrQBVGVkBovOUAAJ20f4hngkAi6Mu/11GKABsKo7+b/yO/5vfkAAz5af/Sfyb/150DP+YoNr/nO4l/7Pqz//FALP/mqSNAOHEaAAKIxn+0dTy/2H93v64ZeUA3hJ/AaSIh/8ez4z+kmHzAIHAGv7JVCH/bwpO/5NRsv8EBBgAoe7X/waNIQA11w7/KbXQ/+eLnQCzy93//7lxAL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBwBkLAQEAQeAZC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQZ8bC/zwARCFO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP/qcTz/Jf85/0Wytv6A0LMAdhp9/gMH1v/xMk3/VcvF/9OH+v8ZMGT/u9W0/hFYaQBT0Z4BBXNiAASuPP6rN27/2bUR/xS8qgCSnGb+V9au/3J6mwHpLKoAfwjvAdbs6gCvBdsAMWo9/wZC0P8Cam7/UeoT/9drwP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP+yCfz+ZG7UAA4FpwDp76P/HJedAWWSCv/+nkb+R/nkAFgeMgBEOqD/vxhoAYFCgf/AMlX/CLOK/yb6yQBzUKAAg+ZxAH1YkwBaRMcA/UyeABz/dgBx+v4AQksu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AL1UM/6b+kgA1VTr/y3e4ADulI//qio1/06ndQC6ACj/fbFn/0XhQgDjB1gBS6wGAKkt4wEQJEb/MgIJ/4vBFgCPt+f+2kUyAOw4oQHVgyoAipEs/ojlKP8xPyP/PZH1/2XAAv7op3EAmGgmAXm52gB5i9P+d/AjAEG92f67s6L/oLvmAD74Dv88TmEA//ej/+E7W/9rRzr/8S8hATJ17ADbsT/+9FqzACPC1/+9QzL/F4eBAGi9Jf+5OcIAIz7n/9z4bAAM57IAj1BbAYNdZf+QJwIB//qyAAUR7P6LIC4AzLwm/vVzNP+/cUn+v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQZyNAgsBAQBBwI0CCwEBAEHgjQILoAHg63p8O0G4rhZW4/rxn8Rq2gmN65wysf2GYgUWX0m4AF+clbyjUIwksdCxVZyD71sERFzEWByOhtgiTt3QnxFX7P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/AEGgjwILwQUIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIAAQfCVAguFAWI2NF9wb3MgPD0gYjY0X2xlbgBzb2RpdW0vY29kZWNzLmMAc29kaXVtX2JpbjJiYXNlNjQAJGFyZ29uMmlkACRhcmdvbjJpACR2PQAkbT0ALHQ9ACxwPQAkYXJnb24yaWQkdj0AJGFyZ29uMmkkdj0AJGFyZ29uMmlkJAAkYXJnb24yaSQAQZCXAgsoU2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMBADEuMC4xOABBvZcCCzRAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAAN";function hA(){try{if(f)return new Uint8Array(f);var A=MA(yA);if(A)return A;if(c)return c(yA);throw"both async and sync fetching of the wasm failed"}catch(A){nA(A)}}function fA(){return f||!n&&!i||"function"!=typeof fetch||cA(yA)?Promise.resolve().then(hA):fetch(yA,{credentials:"same-origin"}).then((function(A){if(!A.ok)throw"failed to load wasm binary file at '"+yA+"'";return A.arrayBuffer()})).catch((function(){return hA()}))}function _A(){var A={a:PA};function g(A,g){var I=A.exports;r.asm=I,tA()}function I(A){g(A.instance)}function e(g){return fA().then((function(g){return WebAssembly.instantiate(g,A)})).then(g,(function(A){p("failed to asynchronously prepare wasm: "+A),nA(A)}))}if(aA(),r.instantiateWasm)try{return r.instantiateWasm(A,g)}catch(A){return p("Module.instantiateWasm callback failed with error: "+A),!1}return function(){if(f||"function"!=typeof WebAssembly.instantiateStreaming||QA(yA)||cA(yA)||"function"!=typeof fetch)return e(I);fetch(yA,{credentials:"same-origin"}).then((function(g){return WebAssembly.instantiateStreaming(g,A).then(I,(function(A){return p("wasm streaming compile failed: "+A),p("falling back to ArrayBuffer instantiation"),e(I)}))}))}(),{}}QA(yA)||(yA=h(yA));var pA={1024:function(){return r.getRandomValue()},1062:function(){if(void 0===r.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto,I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),r.getRandomValue=I}catch(A){try{var e=require("crypto"),B=function(){var A=e.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),r.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}};function uA(A,g,I,e){nA("Assertion failed: "+k(A)+", at: "+[g?k(g):"unknown filename",I,e?k(e):"unknown function"])}function lA(){nA()}function wA(A,g,I){var e=mA(g,I);return pA[A].apply(null,e)}function DA(A,g,I){m.copyWithin(A,g,g+I)}function vA(){return m.length}function dA(A){try{return _.grow(A-F.byteLength+65535>>>16),P(_.buffer),1}catch(A){}}function bA(A){A>>>=0;var g=vA(),I=2147483648;if(A>I)return!1;for(var e=1;e<=4;e*=2){var B=g*(1+.2/e);if(B=Math.min(B,A+100663296),dA(Math.min(I,N(Math.max(16777216,A,B),65536))))return!0}return!1}function kA(A){return H[RA()>>2]=A,A}function FA(A){switch(A){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return kA(28),-1}T.push({func:function(){xA()}});var GA=[];function mA(A,g){var I;for(GA.length=0,g>>=2;I=m[A++];){var e=I<105;e&&1&g&&g++,GA.push(e?U[g++>>1]:H[g]),++g}return GA}var YA=!1;function HA(A){for(var g=[],I=0;I255&&(YA&&v(!1,"Character code "+e+" ("+String.fromCharCode(e)+") at offset "+I+" not in 0x00-0xFF."),e&=255),g.push(String.fromCharCode(e))}return g.join("")}var SA="function"==typeof atob?atob:function(A){var g,I,e,B,r,a,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="",i=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{g=t.indexOf(A.charAt(i++))<<2|(B=t.indexOf(A.charAt(i++)))>>4,I=(15&B)<<4|(r=t.indexOf(A.charAt(i++)))>>2,e=(3&r)<<6|(a=t.indexOf(A.charAt(i++))),n+=String.fromCharCode(g),64!==r&&(n+=String.fromCharCode(I)),64!==a&&(n+=String.fromCharCode(e))}while(i0||(V(),eA>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),g()}),1)):g()))}if(r._malloc=function(){return(r._malloc=r.asm.zc).apply(null,arguments)},r._free=function(){return(r._free=r.asm.Ac).apply(null,arguments)},r.setValue=u,r.getValue=l,r.UTF8ToString=k,rA=function A(){NA||JA(),NA||(rA=A)},r.run=JA,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();JA()})).catch((function(){B.useBackupModule()})),"object"==typeof process&&"function"==typeof process.removeAllListeners&&(process.removeAllListeners("uncaughtException"),process.removeAllListeners("unhandledRejection")),g}"function"==typeof define&&define.amd?define(["exports"],e):"object"==typeof exports&&"string"!=typeof exports.nodeName?e(exports):g&&(g.libsodium=e(g.libsodium_mod||(g.commonJsStrict={})))}(0,__denoroot,__document),function(A,g,I){g.sodium=function(A,g){"use strict";var I,e=g.ready.then((function(){I=g;try{!function(){if(0!==I._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var g=["crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],e=[u,l,w,D,v,d,b,k,F,G,m,Y,H,S,U,M,N,P,x,R,J,K,L,T,q,X,V,W,O,j,Z,z,$,AA,gA,IA,eA,BA,rA,aA,tA,nA,iA,CA,QA,oA,cA,EA,sA,yA,hA,fA,_A,pA,uA,lA,wA,DA,vA,dA,bA,kA,FA,GA,mA,YA,HA,SA,UA,MA,NA,PA,xA,RA,JA,KA,LA,TA,qA,XA,VA,WA,OA,jA,ZA,zA,$A,Ag,gg,Ig,eg,Bg,rg,ag,tg,ng,ig,Cg,Qg,og,cg,Eg,sg,yg,hg,fg,_g,pg,ug,lg,wg,Dg,vg,dg,bg,kg,Fg,Gg,mg,Yg,Hg,Sg,Ug,Mg,Ng,Pg,xg,Rg,Jg,Kg,Lg,Tg,qg,Xg,Vg,Wg],B=0;B=240?(C=4,n=!0):Q>=224?(C=3,n=!0):Q>=192?(C=2,n=!0):Q<128&&(C=1,n=!0)}while(!n);for(var o=C-(t.length-i),c=0;c>8&-39)<<8|87+(g=A[r]>>>4)+(g-10>>8&-39),B+=String.fromCharCode(255&e)+String.fromCharCode(e>>>8);return B}var t={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function n(A){if(null==A)return t.URLSAFE_NO_PADDING;if(A!==t.ORIGINAL&&A!==t.ORIGINAL_NO_PADDING&&A!==t.URLSAFE&&A!=t.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return A}function i(A,g){g=n(g),A=p(B,A,"input");var e,B=[],a=0|Math.floor(A.length/3),t=A.length-3*a,i=4*a+(0!==t?0==(2&g)?4:2+(t>>>1):0),C=new c(i+1),Q=E(A);return B.push(Q),B.push(C.address),0===I._sodium_bin2base64(C.address,C.length,Q,A.length,g)&&h(B,"conversion failed"),C.length=i,e=r(C.to_Uint8Array()),y(B),e}function C(A,g){var I=g||"uint8array";if(!Q(I))throw new Error(I+" output format is not available");if(A instanceof c){if("uint8array"===I)return A.to_Uint8Array();if("text"===I)return r(A.to_Uint8Array());if("hex"===I)return a(A.to_Uint8Array());if("base64"===I)return i(A.to_Uint8Array(),t.URLSAFE_NO_PADDING);throw new Error('What is output format "'+I+'"?')}if("object"==typeof A){for(var e=Object.keys(A),B={},n=0;n>>24>>>8,n,Q);var l=C(h,a);return y(t),l}function SA(A){var g=[];o(A);var e=new c(0|I._crypto_kdf_keybytes()),B=e.address;g.push(B),I._crypto_kdf_keygen(B);var r=C(e,A);return y(g),r}function UA(A,g,e,B){var r=[];o(B),A=p(r,A,"clientPublicKey");var a,t=0|I._crypto_kx_publickeybytes();A.length!==t&&f(r,"invalid clientPublicKey length"),a=E(A),r.push(a),g=p(r,g,"clientSecretKey");var n,i=0|I._crypto_kx_secretkeybytes();g.length!==i&&f(r,"invalid clientSecretKey length"),n=E(g),r.push(n),e=p(r,e,"serverPublicKey");var Q,s=0|I._crypto_kx_publickeybytes();e.length!==s&&f(r,"invalid serverPublicKey length"),Q=E(e),r.push(Q);var _=new c(0|I._crypto_kx_sessionkeybytes()),u=_.address;r.push(u);var l=new c(0|I._crypto_kx_sessionkeybytes()),w=l.address;if(r.push(w),0==(0|I._crypto_kx_client_session_keys(u,w,a,n,Q))){var D=C({sharedRx:_,sharedTx:l},B);return y(r),D}h(r,"invalid usage")}function MA(A){var g=[];o(A);var e=new c(0|I._crypto_kx_publickeybytes()),B=e.address;g.push(B);var r=new c(0|I._crypto_kx_secretkeybytes()),a=r.address;if(g.push(a),0==(0|I._crypto_kx_keypair(B,a))){var t={publicKey:C(e,A),privateKey:C(r,A),keyType:"x25519"};return y(g),t}h(g,"internal error")}function NA(A,g){var e=[];o(g),A=p(e,A,"seed");var B,r=0|I._crypto_kx_seedbytes();A.length!==r&&f(e,"invalid seed length"),B=E(A),e.push(B);var a=new c(0|I._crypto_kx_publickeybytes()),t=a.address;e.push(t);var n=new c(0|I._crypto_kx_secretkeybytes()),i=n.address;if(e.push(i),0==(0|I._crypto_kx_seed_keypair(t,i,B))){var Q={publicKey:C(a,g),privateKey:C(n,g),keyType:"x25519"};return y(e),Q}h(e,"internal error")}function PA(A,g,e,B){var r=[];o(B),A=p(r,A,"serverPublicKey");var a,t=0|I._crypto_kx_publickeybytes();A.length!==t&&f(r,"invalid serverPublicKey length"),a=E(A),r.push(a),g=p(r,g,"serverSecretKey");var n,i=0|I._crypto_kx_secretkeybytes();g.length!==i&&f(r,"invalid serverSecretKey length"),n=E(g),r.push(n),e=p(r,e,"clientPublicKey");var Q,s=0|I._crypto_kx_publickeybytes();e.length!==s&&f(r,"invalid clientPublicKey length"),Q=E(e),r.push(Q);var _=new c(0|I._crypto_kx_sessionkeybytes()),u=_.address;r.push(u);var l=new c(0|I._crypto_kx_sessionkeybytes()),w=l.address;if(r.push(w),0==(0|I._crypto_kx_server_session_keys(u,w,a,n,Q))){var D=C({sharedRx:_,sharedTx:l},B);return y(r),D}h(r,"invalid usage")}function xA(A,g,e){var B=[];o(e);var r=E(A=p(B,A,"message")),a=A.length;B.push(r),g=p(B,g,"key");var t,n=0|I._crypto_onetimeauth_keybytes();g.length!==n&&f(B,"invalid key length"),t=E(g),B.push(t);var i=new c(0|I._crypto_onetimeauth_bytes()),Q=i.address;if(B.push(Q),0==(0|I._crypto_onetimeauth(Q,r,a,0,t))){var s=C(i,e);return y(B),s}h(B,"invalid usage")}function RA(A,g){var e=[];o(g),_(e,A,"state_address");var B=new c(0|I._crypto_onetimeauth_bytes()),r=B.address;if(e.push(r),0==(0|I._crypto_onetimeauth_final(A,r))){var a=(I._free(A),C(B,g));return y(e),a}h(e,"invalid usage")}function JA(A,g){var e=[];o(g);var B=null;null!=A&&(B=E(A=p(e,A,"key")),A.length,e.push(B));var r=new c(144).address;if(0==(0|I._crypto_onetimeauth_init(r,B))){var a=r;return y(e),a}h(e,"invalid usage")}function KA(A){var g=[];o(A);var e=new c(0|I._crypto_onetimeauth_keybytes()),B=e.address;g.push(B),I._crypto_onetimeauth_keygen(B);var r=C(e,A);return y(g),r}function LA(A,g,e){var B=[];o(e),_(B,A,"state_address");var r=E(g=p(B,g,"message_chunk")),a=g.length;B.push(r),0!=(0|I._crypto_onetimeauth_update(A,r,a))&&h(B,"invalid usage"),y(B)}function TA(A,g,e){var B=[];A=p(B,A,"hash");var r,a=0|I._crypto_onetimeauth_bytes();A.length!==a&&f(B,"invalid hash length"),r=E(A),B.push(r);var t=E(g=p(B,g,"message")),n=g.length;B.push(t),e=p(B,e,"key");var i,C=0|I._crypto_onetimeauth_keybytes();e.length!==C&&f(B,"invalid key length"),i=E(e),B.push(i);var Q=0==(0|I._crypto_onetimeauth_verify(r,t,n,0,i));return y(B),Q}function qA(A,g,e,B,r,a,t){var n=[];o(t),_(n,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&f(n,"keyLength must be an unsigned integer");var i=E(g=p(n,g,"password")),Q=g.length;n.push(i),e=p(n,e,"salt");var s,u=0|I._crypto_pwhash_saltbytes();e.length!==u&&f(n,"invalid salt length"),s=E(e),n.push(s),_(n,B,"opsLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&f(n,"opsLimit must be an unsigned integer"),_(n,r,"memLimit"),("number"!=typeof r||(0|r)!==r||r<0)&&f(n,"memLimit must be an unsigned integer"),_(n,a,"algorithm"),("number"!=typeof a||(0|a)!==a||a<0)&&f(n,"algorithm must be an unsigned integer");var l=new c(0|A),w=l.address;if(n.push(w),0==(0|I._crypto_pwhash(w,A,0,i,Q,0,s,B,0,r,a))){var D=C(l,t);return y(n),D}h(n,"invalid usage")}function XA(A,g,e,B,r,a){var t=[];o(a),_(t,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&f(t,"keyLength must be an unsigned integer");var n=E(g=p(t,g,"password")),i=g.length;t.push(n),e=p(t,e,"salt");var Q,s=0|I._crypto_pwhash_scryptsalsa208sha256_saltbytes();e.length!==s&&f(t,"invalid salt length"),Q=E(e),t.push(Q),_(t,B,"opsLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&f(t,"opsLimit must be an unsigned integer"),_(t,r,"memLimit"),("number"!=typeof r||(0|r)!==r||r<0)&&f(t,"memLimit must be an unsigned integer");var u=new c(0|A),l=u.address;if(t.push(l),0==(0|I._crypto_pwhash_scryptsalsa208sha256(l,A,0,n,i,0,Q,B,0,r))){var w=C(u,a);return y(t),w}h(t,"invalid usage")}function VA(A,g,e,B,r,a,t){var n=[];o(t);var i=E(A=p(n,A,"password")),Q=A.length;n.push(i);var s=E(g=p(n,g,"salt")),u=g.length;n.push(s),_(n,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&f(n,"opsLimit must be an unsigned integer"),_(n,B,"r"),("number"!=typeof B||(0|B)!==B||B<0)&&f(n,"r must be an unsigned integer"),_(n,r,"p"),("number"!=typeof r||(0|r)!==r||r<0)&&f(n,"p must be an unsigned integer"),_(n,a,"keyLength"),("number"!=typeof a||(0|a)!==a||a<0)&&f(n,"keyLength must be an unsigned integer");var l=new c(0|a),w=l.address;if(n.push(w),0==(0|I._crypto_pwhash_scryptsalsa208sha256_ll(i,Q,s,u,e,0,B,r,w,a))){var D=C(l,t);return y(n),D}h(n,"invalid usage")}function WA(A,g,e,B){var r=[];o(B);var a=E(A=p(r,A,"password")),t=A.length;r.push(a),_(r,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&f(r,"opsLimit must be an unsigned integer"),_(r,e,"memLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&f(r,"memLimit must be an unsigned integer");var n=new c(0|I._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(r.push(n),0==(0|I._crypto_pwhash_scryptsalsa208sha256_str(n,a,t,0,g,0,e))){var i=I.UTF8ToString(n);return y(r),i}h(r,"invalid usage")}function OA(A,g,e){var r=[];o(e),"string"!=typeof A&&f(r,"hashed_password must be a string"),A=B(A+"\0"),null!=t&&A.length-1!==t&&f(r,"invalid hashed_password length");var a=E(A),t=A.length-1;r.push(a);var n=E(g=p(r,g,"password")),i=g.length;r.push(n);var C=0==(0|I._crypto_pwhash_scryptsalsa208sha256_str_verify(a,n,i,0));return y(r),C}function jA(A,g,e,B){var r=[];o(B);var a=E(A=p(r,A,"password")),t=A.length;r.push(a),_(r,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&f(r,"opsLimit must be an unsigned integer"),_(r,e,"memLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&f(r,"memLimit must be an unsigned integer");var n=new c(0|I._crypto_pwhash_strbytes()).address;if(r.push(n),0==(0|I._crypto_pwhash_str(n,a,t,0,g,0,e))){var i=I.UTF8ToString(n);return y(r),i}h(r,"invalid usage")}function ZA(A,g,e,r){var a=[];o(r),"string"!=typeof A&&f(a,"hashed_password must be a string"),A=B(A+"\0"),null!=n&&A.length-1!==n&&f(a,"invalid hashed_password length");var t=E(A),n=A.length-1;a.push(t),_(a,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&f(a,"opsLimit must be an unsigned integer"),_(a,e,"memLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&f(a,"memLimit must be an unsigned integer");var i=0!=(0|I._crypto_pwhash_str_needs_rehash(t,g,0,e));return y(a),i}function zA(A,g,e){var r=[];o(e),"string"!=typeof A&&f(r,"hashed_password must be a string"),A=B(A+"\0"),null!=t&&A.length-1!==t&&f(r,"invalid hashed_password length");var a=E(A),t=A.length-1;r.push(a);var n=E(g=p(r,g,"password")),i=g.length;r.push(n);var C=0==(0|I._crypto_pwhash_str_verify(a,n,i,0));return y(r),C}function $A(A,g,e){var B=[];o(e),A=p(B,A,"privateKey");var r,a=0|I._crypto_scalarmult_scalarbytes();A.length!==a&&f(B,"invalid privateKey length"),r=E(A),B.push(r),g=p(B,g,"publicKey");var t,n=0|I._crypto_scalarmult_scalarbytes();g.length!==n&&f(B,"invalid publicKey length"),t=E(g),B.push(t);var i=new c(0|I._crypto_scalarmult_bytes()),Q=i.address;if(B.push(Q),0==(0|I._crypto_scalarmult(Q,r,t))){var s=C(i,e);return y(B),s}h(B,"weak public key")}function Ag(A,g){var e=[];o(g),A=p(e,A,"privateKey");var B,r=0|I._crypto_scalarmult_scalarbytes();A.length!==r&&f(e,"invalid privateKey length"),B=E(A),e.push(B);var a=new c(0|I._crypto_scalarmult_scalarbytes()),t=a.address;if(e.push(t),0==(0|I._crypto_scalarmult_base(t,B))){var n=C(a,g);return y(e),n}h(e,"insecure scalar")}function gg(A,g,e){var B=[];o(e),A=p(B,A,"scalar");var r,a=0|I._crypto_scalarmult_ristretto255_scalarbytes();A.length!==a&&f(B,"invalid scalar length"),r=E(A),B.push(r),g=p(B,g,"privateKey");var t,n=0|I._crypto_scalarmult_ristretto255_bytes();g.length!==n&&f(B,"invalid privateKey length"),t=E(g),B.push(t);var i=new c(0|I._crypto_scalarmult_ristretto255_bytes()),Q=i.address;if(B.push(Q),0==(0|I._crypto_scalarmult_ristretto255(Q,r,t))){var s=C(i,e);return y(B),s}h(B,"input is zero element")}function Ig(A,g){var e=[];o(g);var B=E(A=p(e,A,"scalar"));A.length,e.push(B);var r=new c(0|I._crypto_core_ristretto255_bytes()),a=r.address;if(e.push(a),0==(0|I._crypto_scalarmult_ristretto255_base(a,B))){var t=C(r,g);return y(e),t}h(e,"scalar is 0")}function eg(A,g,e,B){var r=[];o(B);var a=E(A=p(r,A,"message")),t=A.length;r.push(a),g=p(r,g,"nonce");var n,i=0|I._crypto_secretbox_noncebytes();g.length!==i&&f(r,"invalid nonce length"),n=E(g),r.push(n),e=p(r,e,"key");var Q,s=0|I._crypto_secretbox_keybytes();e.length!==s&&f(r,"invalid key length"),Q=E(e),r.push(Q);var _=new c(0|t),u=_.address;r.push(u);var l=new c(0|I._crypto_secretbox_macbytes()),w=l.address;if(r.push(w),0==(0|I._crypto_secretbox_detached(u,w,a,t,0,n,Q))){var D=C({mac:l,cipher:_},B);return y(r),D}h(r,"invalid usage")}function Bg(A,g,e,B){var r=[];o(B);var a=E(A=p(r,A,"message")),t=A.length;r.push(a),g=p(r,g,"nonce");var n,i=0|I._crypto_secretbox_noncebytes();g.length!==i&&f(r,"invalid nonce length"),n=E(g),r.push(n),e=p(r,e,"key");var Q,s=0|I._crypto_secretbox_keybytes();e.length!==s&&f(r,"invalid key length"),Q=E(e),r.push(Q);var _=new c(t+I._crypto_secretbox_macbytes()|0),u=_.address;if(r.push(u),0==(0|I._crypto_secretbox_easy(u,a,t,0,n,Q))){var l=C(_,B);return y(r),l}h(r,"invalid usage")}function rg(A){var g=[];o(A);var e=new c(0|I._crypto_secretbox_keybytes()),B=e.address;g.push(B),I._crypto_secretbox_keygen(B);var r=C(e,A);return y(g),r}function ag(A,g,e,B,r){var a=[];o(r);var t=E(A=p(a,A,"ciphertext")),n=A.length;a.push(t),g=p(a,g,"mac");var i,Q=0|I._crypto_secretbox_macbytes();g.length!==Q&&f(a,"invalid mac length"),i=E(g),a.push(i),e=p(a,e,"nonce");var s,_=0|I._crypto_secretbox_noncebytes();e.length!==_&&f(a,"invalid nonce length"),s=E(e),a.push(s),B=p(a,B,"key");var u,l=0|I._crypto_secretbox_keybytes();B.length!==l&&f(a,"invalid key length"),u=E(B),a.push(u);var w=new c(0|n),D=w.address;if(a.push(D),0==(0|I._crypto_secretbox_open_detached(D,t,i,n,0,s,u))){var v=C(w,r);return y(a),v}h(a,"wrong secret key for the given ciphertext")}function tg(A,g,e,B){var r=[];o(B),A=p(r,A,"ciphertext");var a,t=I._crypto_secretbox_macbytes(),n=A.length;n>>0;return y([]),g}function qg(A,g){var e=[];o(g);for(var B=I._malloc(24),r=0;r<6;r++)I.setValue(B+4*r,I.Runtime.addFunction(A[["implementation_name","random","stir","uniform","buf","close"][r]]),"i32");0!=(0|I._randombytes_set_implementation(B))&&h(e,"unsupported implementation"),y(e)}function Xg(A){o(A),I._randombytes_stir()}function Vg(A,g){var e=[];o(g),_(e,A,"upper_bound"),("number"!=typeof A||(0|A)!==A||A<0)&&f(e,"upper_bound must be an unsigned integer");var B=I._randombytes_uniform(A)>>>0;return y(e),B}function Wg(){var A=I._sodium_version_string(),g=I.UTF8ToString(A);return y([]),g}return c.prototype.to_Uint8Array=function(){var A=new Uint8Array(this.length);return A.set(I.HEAPU8.subarray(this.address,this.address+this.length)),A},A.add=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var I=A.length,e=0,B=0;if(g.length!=A.length)throw new TypeError("Arguments must have the same length");for(B=0;B>=8,e+=A[B]+g[B],A[B]=255&e},A.base64_variants=t,A.compare=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,e=1,B=A.length;B-- >0;)I|=g[B]-A[B]>>8&e,e&=(g[B]^A[B])-1>>8;return I+I+e-1},A.from_base64=function(A,g){g=n(g);var e,B=[],r=new c(3*(A=p(B,A,"input")).length/4),a=E(A),t=s(4),i=s(4);return B.push(a),B.push(r.address),B.push(r.result_bin_len_p),B.push(r.b64_end_p),0!==I._sodium_base642bin(r.address,r.length,a,A.length,0,t,i,g)&&h(B,"invalid input"),I.getValue(i,"i32")-a!==A.length&&h(B,"incomplete input"),r.length=I.getValue(t,"i32"),e=r.to_Uint8Array(),y(B),e},A.from_hex=function(A){var g,e=[],B=new c((A=p(e,A,"input")).length/2),r=E(A),a=s(4);return e.push(r),e.push(B.address),e.push(B.hex_end_p),0!==I._sodium_hex2bin(B.address,B.length,r,A.length,0,0,a)&&h(e,"invalid input"),I.getValue(a,"i32")-r!==A.length&&h(e,"incomplete input"),g=B.to_Uint8Array(),y(e),g},A.from_string=B,A.increment=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var g=256,I=0,e=A.length;I>=8,g+=A[I],A[I]=255&g},A.is_zero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var g=0,I=0,e=A.length;I 0");var e,B=[],r=s(4),a=1,t=0,n=0|A.length,i=new c(n+g);B.push(r),B.push(i.address);for(var C=i.address,Q=i.address+n+g;C>>48|n>>>32|n>>>16|n))-1>>16);return 0!==I._sodium_pad(r,i.address,A.length,g,i.length)&&h(B,"internal error"),i.length=I.getValue(r,"i32"),e=i.to_Uint8Array(),y(B),e},A.unpad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var e=[],B=E(A),r=s(4);return e.push(B),e.push(r),0!==I._sodium_unpad(r,B,A.length,g)&&h(e,"unsupported/invalid padding"),A=(A=new Uint8Array(A)).subarray(0,I.getValue(r,"i32")),y(e),A},A.ready=e,A.symbols=function(){return Object.keys(A).sort()},A.to_base64=i,A.to_hex=a,A.to_string=r,A}(g.commonJsStrict={},g.libsodium)}(0,__denoroot);export default __denoroot.sodium; diff --git a/bundler/tests/.cache/deno/cbf633d8fb10f64d13c5969a7822ff777f8c4d3e.ts b/bundler/tests/.cache/deno/cbf633d8fb10f64d13c5969a7822ff777f8c4d3e.ts new file mode 100644 index 00000000000..1a71afc21d2 --- /dev/null +++ b/bundler/tests/.cache/deno/cbf633d8fb10f64d13c5969a7822ff777f8c4d3e.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isHexColor.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i; + +export const isHexColor = (str: string) => { + assertString(str); + return hexcolor.test(str); +}; diff --git a/bundler/tests/.cache/deno/cc7273e31e9ae68fb3c750625e62f70ded4166e7.ts b/bundler/tests/.cache/deno/cc7273e31e9ae68fb3c750625e62f70ded4166e7.ts new file mode 100644 index 00000000000..e14de015ffd --- /dev/null +++ b/bundler/tests/.cache/deno/cc7273e31e9ae68fb3c750625e62f70ded4166e7.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/values.js + + +import _curry1 from './internal/_curry1.js'; +import keys from './keys.js'; + + +/** + * Returns a list of all the enumerable own properties of the supplied object. + * Note that the order of the output array is not guaranteed across different + * JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own properties. + * @see R.valuesIn, R.keys + * @example + * + * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] + */ +var values = _curry1(function values(obj) { + var props = keys(obj); + var len = props.length; + var vals = []; + var idx = 0; + while (idx < len) { + vals[idx] = obj[props[idx]]; + idx += 1; + } + return vals; +}); +export default values; diff --git a/bundler/tests/.cache/deno/ccb634fb8b96d87d8d1839dfd32a2ee7084cf7aa.ts b/bundler/tests/.cache/deno/ccb634fb8b96d87d8d1839dfd32a2ee7084cf7aa.ts new file mode 100644 index 00000000000..27ea77ce07f --- /dev/null +++ b/bundler/tests/.cache/deno/ccb634fb8b96d87d8d1839dfd32a2ee7084cf7aa.ts @@ -0,0 +1,17 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/seq.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +export const seq = new Type("tag:yaml.org,2002:seq", { + construct(data): Any { + return data !== null ? data : []; + }, + kind: "sequence", +}); diff --git a/bundler/tests/.cache/deno/ccc13d148135efa61f45bfa4931c308b8e057a12.ts b/bundler/tests/.cache/deno/ccc13d148135efa61f45bfa4931c308b8e057a12.ts new file mode 100644 index 00000000000..70f6f5c067f --- /dev/null +++ b/bundler/tests/.cache/deno/ccc13d148135efa61f45bfa4931c308b8e057a12.ts @@ -0,0 +1,71 @@ +// Loaded from https://deno.land/std/async/pool.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * If an error is thrown from `iterableFn`, no new transformations will begin. + * All currently executing transformations are allowed to finish and still + * yielded on success. After that, the rejections among them are gathered and + * thrown by the iterator in an `AggregateError`. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + try { + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + // Only write on success. If we `writer.write()` a rejected promise, + // that will end the iteration. We don't want that yet. Instead let it + // fail the race, taking us to the catch block where all currently + // executing jobs are allowed to finish and all rejections among them + // can be reported together. + p.then((v) => writer.write(Promise.resolve(v))).catch(() => {}); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + } catch { + const errors = []; + for (const result of await Promise.allSettled(executing)) { + if (result.status == "rejected") { + errors.push(result.reason); + } + } + writer.write(Promise.reject( + new AggregateError(errors, "Threw while mapping."), + )).catch(() => {}); + } + })(); + return res.readable[Symbol.asyncIterator](); +} diff --git a/bundler/tests/.cache/deno/cccc59a2a0435d6aa188a14df30cc43e4ee521b8.ts b/bundler/tests/.cache/deno/cccc59a2a0435d6aa188a14df30cc43e4ee521b8.ts new file mode 100644 index 00000000000..7f3f5933430 --- /dev/null +++ b/bundler/tests/.cache/deno/cccc59a2a0435d6aa188a14df30cc43e4ee521b8.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/deps.ts + + +import mongobj from "https://cdn.skypack.dev/mongobj" +import { matches } from 'https://raw.githubusercontent.com/denyncrawford/safe-filter/master/dist/index.js' +import project from 'https://raw.githubusercontent.com/denyncrawford/mongo-project.node/master/dist/bundle.js' + +export { + mongobj, + matches, + project +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/cce6dcd37c624f56a71789362eafc2186f8232fc.ts b/bundler/tests/.cache/deno/cce6dcd37c624f56a71789362eafc2186f8232fc.ts new file mode 100644 index 00000000000..58bb5889090 --- /dev/null +++ b/bundler/tests/.cache/deno/cce6dcd37c624f56a71789362eafc2186f8232fc.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.81.0/async/deferred.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/ccfb1d05d24a281ab8bbde0886902ee1f2bdc37a.ts b/bundler/tests/.cache/deno/ccfb1d05d24a281ab8bbde0886902ee1f2bdc37a.ts new file mode 100644 index 00000000000..661a85edc86 --- /dev/null +++ b/bundler/tests/.cache/deno/ccfb1d05d24a281ab8bbde0886902ee1f2bdc37a.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/case/upperFirstCase.ts + + +import upperCase from "./upperCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + str = String(str); + + return upperCase(str.charAt(0), locale) + str.substr(1); +} diff --git a/bundler/tests/.cache/deno/cd61d39a0baea90ce1528d1f7c3845f789ac7396.ts b/bundler/tests/.cache/deno/cd61d39a0baea90ce1528d1f7c3845f789ac7396.ts new file mode 100644 index 00000000000..1873f88a2d7 --- /dev/null +++ b/bundler/tests/.cache/deno/cd61d39a0baea90ce1528d1f7c3845f789ac7396.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/std@0.67.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/cd9bc7139a65144209ea6d09bcce351435a75fe7.ts b/bundler/tests/.cache/deno/cd9bc7139a65144209ea6d09bcce351435a75fe7.ts new file mode 100644 index 00000000000..2961cf861c1 --- /dev/null +++ b/bundler/tests/.cache/deno/cd9bc7139a65144209ea6d09bcce351435a75fe7.ts @@ -0,0 +1,161 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isPostalCode.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// common patterns +/** + * @ignore + */ +const threeDigit = /^\d{3}$/; + +/** + * @ignore + */ +const fourDigit = /^\d{4}$/; + +/** + * @ignore + */ +const fiveDigit = /^\d{5}$/; + +/** + * @ignore + */ +const sixDigit = /^\d{6}$/; + +type PostalCode = + | 'AD' + | 'AT' + | 'AU' + | 'BE' + | 'BG' + | 'BR' + | 'CA' + | 'CH' + | 'CZ' + | 'DE' + | 'DK' + | 'DZ' + | 'EE' + | 'ES' + | 'FI' + | 'FR' + | 'GB' + | 'GR' + | 'HR' + | 'HU' + | 'ID' + | 'IE' + | 'IL' + | 'IN' + | 'IS' + | 'IT' + | 'JP' + | 'KE' + | 'LI' + | 'LT' + | 'LU' + | 'LV' + | 'MX' + | 'MT' + | 'NL' + | 'NO' + | 'NP' + | 'NZ' + | 'PL' + | 'PR' + | 'PT' + | 'RO' + | 'RU' + | 'SA' + | 'SE' + | 'SI' + | 'SK' + | 'TN' + | 'TW' + | 'UA' + | 'US' + | 'ZA' + | 'ZM' + | 'any'; + +/** + * @ignore + */ +const patterns = { + AD: /^AD\d{3}$/, + AT: fourDigit, + AU: fourDigit, + BE: fourDigit, + BG: fourDigit, + BR: /^\d{5}-\d{3}$/, + CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, + CH: fourDigit, + CZ: /^\d{3}\s?\d{2}$/, + DE: fiveDigit, + DK: fourDigit, + DZ: fiveDigit, + EE: fiveDigit, + ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/, + FI: fiveDigit, + FR: /^\d{2}\s?\d{3}$/, + GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i, + GR: /^\d{3}\s?\d{2}$/, + HR: /^([1-5]\d{4}$)/, + HU: fourDigit, + ID: fiveDigit, + IE: /^(?!.*(?:o))[A-z]\d[\dw]\s\w{4}$/i, + IL: /^(\d{5}|\d{7})$/, + IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/, + IS: threeDigit, + IT: fiveDigit, + JP: /^\d{3}\-\d{4}$/, + KE: fiveDigit, + LI: /^(948[5-9]|949[0-7])$/, + LT: /^LT\-\d{5}$/, + LU: fourDigit, + LV: /^LV\-\d{4}$/, + MX: fiveDigit, + MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/, + NL: /^\d{4}\s?[a-z]{2}$/i, + NO: fourDigit, + NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i, + NZ: fourDigit, + PL: /^\d{2}\-\d{3}$/, + PR: /^00[679]\d{2}([ -]\d{4})?$/, + PT: /^\d{4}\-\d{3}?$/, + RO: sixDigit, + RU: sixDigit, + SA: fiveDigit, + SE: /^[1-9]\d{2}\s?\d{2}$/, + SI: fourDigit, + SK: /^\d{3}\s?\d{2}$/, + TN: fourDigit, + TW: /^\d{3}(\d{2})?$/, + UA: fiveDigit, + US: /^\d{5}(-\d{4})?$/, + ZA: fourDigit, + ZM: fiveDigit, +}; + +export const isPostalCode = (str: string, locale: PostalCode) => { + assertString(str); + if (locale in patterns) { + return (patterns as any)[locale].test(str); + } else if (locale === 'any') { + for (const key in patterns) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (patterns.hasOwnProperty(key)) { + const pattern = (patterns as any)[key]; + if (pattern.test(str)) { + return true; + } + } + } + return false; + } + throw new Error(`Invalid locale '${locale}'`); +}; diff --git a/bundler/tests/.cache/deno/cde3d856c31882977158cb69c3ef16a5b80fd976.ts b/bundler/tests/.cache/deno/cde3d856c31882977158cb69c3ef16a5b80fd976.ts new file mode 100644 index 00000000000..fb6913c3243 --- /dev/null +++ b/bundler/tests/.cache/deno/cde3d856c31882977158cb69c3ef16a5b80fd976.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/case@v2.1.0/upperCase.ts + + +import { LanguageSpecific } from "./types.ts"; + +const LANGUAGES: LanguageSpecific = { + tr: { + regexp: /[\u0069]/g, + map: { + i: "\u0130", + }, + }, + az: { + regexp: /[\u0069]/g, + map: { + i: "\u0130", + }, + }, + lt: { + regexp: /[\u0069\u006A\u012F]\u0307|\u0069\u0307[\u0300\u0301\u0303]/g, + map: { + i̇: "\u0049", + j̇: "\u004A", + į̇: "\u012E", + i̇̀: "\u00CC", + i̇́: "\u00CD", + i̇̃: "\u0128", + }, + }, +}; + +export default function (str: string, locale?: string): string { + str = str == null ? "" : String(str); + + if (!locale) { + return str.toUpperCase(); + } + + const lang = LANGUAGES[locale]; + + if (lang) { + str = str.replace(lang.regexp, function (m) { + return lang.map[m]; + }); + } + + return str.toUpperCase(); +} diff --git a/bundler/tests/.cache/deno/ce75f59ec68f7f35e428dd589cacf6a9124a097e.ts b/bundler/tests/.cache/deno/ce75f59ec68f7f35e428dd589cacf6a9124a097e.ts new file mode 100644 index 00000000000..a34fd91ecc7 --- /dev/null +++ b/bundler/tests/.cache/deno/ce75f59ec68f7f35e428dd589cacf6a9124a097e.ts @@ -0,0 +1,252 @@ +// Loaded from https://deno.land/std/datetime/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { DateTimeFormatter } from "./formatter.ts"; + +export const SECOND = 1e3; +export const MINUTE = SECOND * 60; +export const HOUR = MINUTE * 60; +export const DAY = HOUR * 24; +export const WEEK = DAY * 7; +const DAYS_PER_WEEK = 7; + +enum Day { + Sun, + Mon, + Tue, + Wed, + Thu, + Fri, + Sat, +} + +/** + * Parse date from string using format string + * @param dateString Date string + * @param format Format string + * @return Parsed date + */ +export function parse(dateString: string, formatString: string): Date { + const formatter = new DateTimeFormatter(formatString); + const parts = formatter.parseToParts(dateString); + const sortParts = formatter.sortDateTimeFormatPart(parts); + return formatter.partsToDate(sortParts); +} + +/** + * Format date using format string + * @param date Date + * @param format Format string + * @return formatted date string + */ +export function format(date: Date, formatString: string): string { + const formatter = new DateTimeFormatter(formatString); + return formatter.format(date); +} + +/** + * Get number of the day in the year + * @return Number of the day in year + */ +export function dayOfYear(date: Date): number { + // Values from 0 to 99 map to the years 1900 to 1999. All other values are the actual year. (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date) + // Using setFullYear as a workaround + + const yearStart = new Date(date); + + yearStart.setUTCFullYear(date.getUTCFullYear(), 0, 0); + const diff = date.getTime() - + yearStart.getTime() + + (yearStart.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000; + + return Math.floor(diff / DAY); +} +/** + * Get number of the week in the year (ISO-8601) + * @return Number of the week in year + */ +export function weekOfYear(date: Date): number { + const workingDate = new Date( + Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()), + ); + + const day = workingDate.getUTCDay(); + + const nearestThursday = workingDate.getUTCDate() + + Day.Thu - + (day === Day.Sun ? DAYS_PER_WEEK : day); + + workingDate.setUTCDate(nearestThursday); + + // Get first day of year + const yearStart = new Date(Date.UTC(workingDate.getUTCFullYear(), 0, 1)); + + // return the calculated full weeks to nearest Thursday + return Math.ceil((workingDate.getTime() - yearStart.getTime() + DAY) / WEEK); +} + +/** + * Parse a date to return a IMF formatted string date + * RFC: https://tools.ietf.org/html/rfc7231#section-7.1.1.1 + * IMF is the time format to use when generating times in HTTP + * headers. The time being formatted must be in UTC for Format to + * generate the correct format. + * @param date Date to parse + * @return IMF date formatted string + */ +export function toIMF(date: Date): string { + function dtPad(v: string, lPad = 2): string { + return v.padStart(lPad, "0"); + } + const d = dtPad(date.getUTCDate().toString()); + const h = dtPad(date.getUTCHours().toString()); + const min = dtPad(date.getUTCMinutes().toString()); + const s = dtPad(date.getUTCSeconds().toString()); + const y = date.getUTCFullYear(); + const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + const months = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ]; + return `${days[date.getUTCDay()]}, ${d} ${ + months[date.getUTCMonth()] + } ${y} ${h}:${min}:${s} GMT`; +} + +/** + * Check given year is a leap year or not. + * based on : https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-a-leap-year + * @param year year in number or Date format + */ +export function isLeap(year: Date | number): boolean { + const yearNumber = year instanceof Date ? year.getFullYear() : year; + return ( + (yearNumber % 4 === 0 && yearNumber % 100 !== 0) || yearNumber % 400 === 0 + ); +} + +export type Unit = + | "milliseconds" + | "seconds" + | "minutes" + | "hours" + | "days" + | "weeks" + | "months" + | "quarters" + | "years"; + +export type DifferenceFormat = Partial>; + +export type DifferenceOptions = { + units?: Unit[]; +}; + +/** + * Calculate difference between two dates. + * @param from Year to calculate difference + * @param to Year to calculate difference with + * @param options Options for determining how to respond + * + * example : + * + * ```typescript + * datetime.difference(new Date("2020/1/1"),new Date("2020/2/2"),{ units : ["days","months"] }) + * ``` + */ +export function difference( + from: Date, + to: Date, + options?: DifferenceOptions, +): DifferenceFormat { + const uniqueUnits = options?.units ? [...new Set(options?.units)] : [ + "milliseconds", + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months", + "quarters", + "years", + ]; + + const bigger = Math.max(from.getTime(), to.getTime()); + const smaller = Math.min(from.getTime(), to.getTime()); + const differenceInMs = bigger - smaller; + + const differences: DifferenceFormat = {}; + + for (const uniqueUnit of uniqueUnits) { + switch (uniqueUnit) { + case "milliseconds": + differences.milliseconds = differenceInMs; + break; + case "seconds": + differences.seconds = Math.floor(differenceInMs / SECOND); + break; + case "minutes": + differences.minutes = Math.floor(differenceInMs / MINUTE); + break; + case "hours": + differences.hours = Math.floor(differenceInMs / HOUR); + break; + case "days": + differences.days = Math.floor(differenceInMs / DAY); + break; + case "weeks": + differences.weeks = Math.floor(differenceInMs / WEEK); + break; + case "months": + differences.months = calculateMonthsDifference(bigger, smaller); + break; + case "quarters": + differences.quarters = Math.floor( + (typeof differences.months !== "undefined" && + differences.months / 4) || + calculateMonthsDifference(bigger, smaller) / 4, + ); + break; + case "years": + differences.years = Math.floor( + (typeof differences.months !== "undefined" && + differences.months / 12) || + calculateMonthsDifference(bigger, smaller) / 12, + ); + break; + } + } + + return differences; +} + +function calculateMonthsDifference(bigger: number, smaller: number): number { + const biggerDate = new Date(bigger); + const smallerDate = new Date(smaller); + const yearsDiff = biggerDate.getFullYear() - smallerDate.getFullYear(); + const monthsDiff = biggerDate.getMonth() - smallerDate.getMonth(); + const calendarDifferences = Math.abs(yearsDiff * 12 + monthsDiff); + const compareResult = biggerDate > smallerDate ? 1 : -1; + biggerDate.setMonth( + biggerDate.getMonth() - compareResult * calendarDifferences, + ); + const isLastMonthNotFull = biggerDate > smallerDate + ? 1 + : -1 === -compareResult + ? 1 + : 0; + const months = compareResult * (calendarDifferences - isLastMonthNotFull); + return months === 0 ? 0 : months; +} diff --git a/bundler/tests/.cache/deno/ce95cbd6f72bc3d00eabeb208656be46cf55bc90.ts b/bundler/tests/.cache/deno/ce95cbd6f72bc3d00eabeb208656be46cf55bc90.ts new file mode 100644 index 00000000000..f87bc36f815 --- /dev/null +++ b/bundler/tests/.cache/deno/ce95cbd6f72bc3d00eabeb208656be46cf55bc90.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/memoize3.js + + +/** + * Memoizes the provided three-argument function. + */ +export default function memoize3(fn) { + let cache0; + + function memoized(a1, a2, a3) { + if (!cache0) { + cache0 = new WeakMap(); + } + + let cache1 = cache0.get(a1); + let cache2; + + if (cache1) { + cache2 = cache1.get(a2); + + if (cache2) { + const cachedValue = cache2.get(a3); + + if (cachedValue !== undefined) { + return cachedValue; + } + } + } else { + cache1 = new WeakMap(); + cache0.set(a1, cache1); + } + + if (!cache2) { + cache2 = new WeakMap(); + cache1.set(a2, cache2); + } + + const newValue = fn(a1, a2, a3); + cache2.set(a3, newValue); + return newValue; + } + + return memoized; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/cee2dafcf0bd78b86c85553073f2a8354a049000.ts b/bundler/tests/.cache/deno/cee2dafcf0bd78b86c85553073f2a8354a049000.ts new file mode 100644 index 00000000000..2a79d0f7505 --- /dev/null +++ b/bundler/tests/.cache/deno/cee2dafcf0bd78b86c85553073f2a8354a049000.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/either.js + + +import _curry2 from './internal/_curry2.js'; +import _isFunction from './internal/_isFunction.js'; +import lift from './lift.js'; +import or from './or.js'; + + +/** + * A function wrapping calls to the two functions in an `||` operation, + * returning the result of the first function if it is truth-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * truth-y value. + * + * In addition to functions, `R.either` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f a predicate + * @param {Function} g another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together. + * @see R.both, R.or + * @example + * + * const gt10 = x => x > 10; + * const even = x => x % 2 === 0; + * const f = R.either(gt10, even); + * f(101); //=> true + * f(8); //=> true + * + * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55) + * R.either([false, false, 'a'], [11]) // => [11, 11, "a"] + */ +var either = _curry2(function either(f, g) { + return _isFunction(f) ? + function _either() { + return f.apply(this, arguments) || g.apply(this, arguments); + } : + lift(or)(f, g); +}); +export default either; diff --git a/bundler/tests/.cache/deno/cee985510d58f81ae25b09a502ac96a4b2d945d0.ts b/bundler/tests/.cache/deno/cee985510d58f81ae25b09a502ac96a4b2d945d0.ts new file mode 100644 index 00000000000..7eb8c64b36c --- /dev/null +++ b/bundler/tests/.cache/deno/cee985510d58f81ae25b09a502ac96a4b2d945d0.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/mod.ts + + +export * from "./protocol.ts"; +export * from "./header.ts"; +export * from "./message.ts"; +export * from "./cursor.ts"; diff --git a/bundler/tests/.cache/deno/cef1ef36741f0138205fad9e3db2f2c77755df6b.ts b/bundler/tests/.cache/deno/cef1ef36741f0138205fad9e3db2f2c77755df6b.ts new file mode 100644 index 00000000000..67d0042c22a --- /dev/null +++ b/bundler/tests/.cache/deno/cef1ef36741f0138205fad9e3db2f2c77755df6b.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/tryCatch.js + + +import _arity from './internal/_arity.js'; +import _concat from './internal/_concat.js'; +import _curry2 from './internal/_curry2.js'; + +/** + * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned + * function evaluates the `tryer`; if it does not throw, it simply returns the + * result. If the `tryer` *does* throw, the returned function evaluates the + * `catcher` function and returns its result. Note that for effective + * composition with this function, both the `tryer` and `catcher` functions + * must return the same type of results. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a) + * @param {Function} tryer The function that may throw. + * @param {Function} catcher The function that will be evaluated if `tryer` throws. + * @return {Function} A new function that will catch exceptions and send them to the catcher. + * @example + * + * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true + * R.tryCatch(() => { throw 'foo'}, R.always('caught'))('bar') // => + * 'caught' + * R.tryCatch(R.times(R.identity), R.always([]))('s') // => [] + * R.tryCatch(() => { throw 'this is not a valid value'}, (err, value)=>({error : err, value }))('bar') // => {'error': 'this is not a valid value', 'value': 'bar'} + */ +var tryCatch = _curry2(function _tryCatch(tryer, catcher) { + return _arity(tryer.length, function() { + try { + return tryer.apply(this, arguments); + } catch (e) { + return catcher.apply(this, _concat([e], arguments)); + } + }); +}); +export default tryCatch; diff --git a/bundler/tests/.cache/deno/cf10b35d6f568026075877c710884d1eba1121d4.ts b/bundler/tests/.cache/deno/cf10b35d6f568026075877c710884d1eba1121d4.ts new file mode 100644 index 00000000000..f9614650f26 --- /dev/null +++ b/bundler/tests/.cache/deno/cf10b35d6f568026075877c710884d1eba1121d4.ts @@ -0,0 +1,68 @@ +// Loaded from https://deno.land/std@0.85.0/fs/ensure_file.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_util.ts"; + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist. + * these directories are created. If the file already exists, + * it is NOTMODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export async function ensureFile(filePath: string): Promise { + try { + // if file exists + const stat = await Deno.lstat(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + await ensureDir(path.dirname(filePath)); + // create file + await Deno.writeFile(filePath, new Uint8Array()); + return; + } + + throw err; + } +} + +/** + * Ensures that the file exists. + * If the file that is requested to be created is in directories that do not + * exist, + * these directories are created. If the file already exists, + * it is NOT MODIFIED. + * Requires the `--allow-read` and `--allow-write` flag. + */ +export function ensureFileSync(filePath: string): void { + try { + // if file exists + const stat = Deno.lstatSync(filePath); + if (!stat.isFile) { + throw new Error( + `Ensure path exists, expected 'file', got '${getFileInfoType(stat)}'`, + ); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + ensureDirSync(path.dirname(filePath)); + // create file + Deno.writeFileSync(filePath, new Uint8Array()); + return; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/cf12ac454c69f7afb74184149dc89ad59a2120c7.ts b/bundler/tests/.cache/deno/cf12ac454c69f7afb74184149dc89ad59a2120c7.ts new file mode 100644 index 00000000000..2798125765f --- /dev/null +++ b/bundler/tests/.cache/deno/cf12ac454c69f7afb74184149dc89ad59a2120c7.ts @@ -0,0 +1,93 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/types.ts + + +import { IOBuffer } from './iobuffer/IOBuffer.ts'; + + +declare enum StrategyValues { + Z_FILTERED = 1, + Z_HUFFMAN_ONLY = 2, + Z_RLE = 3, + Z_FIXED = 4, + Z_DEFAULT_STRATEGY = 0, +} + +export interface DeflateFunctionOptions { + level?: -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; + windowBits?: number; + memLevel?: number; + strategy?: StrategyValues; + dictionary?: any; + raw?: boolean; + to?: "string"; +} + +export type PNGDataArray = Uint8Array | Uint16Array; + +export type DecoderInputType = IOBuffer | ArrayBufferLike | ArrayBufferView; + +export type BitDepth = 1 | 2 | 4 | 8 | 16; + +export interface IPNGResolution { + /** + * Pixels per unit, X axis + */ + x: number; + /** + * Pixels per unit, Y axis + */ + y: number; + /** + * Unit specifier + */ + unit: ResolutionUnitSpecifier; +} + +export enum ResolutionUnitSpecifier { + /** + * Unit is unknown + */ + UNKNOWN = 0, + /** + * Unit is the metre + */ + METRE = 1, +} + +export interface IImageData { + width: number; + height: number; + data: PNGDataArray; + depth?: BitDepth; + channels?: number; +} + +export interface IDecodedPNG { + width: number; + height: number; + data: PNGDataArray; + depth: BitDepth; + channels: number; + text: { [key: string]: string }; + resolution?: IPNGResolution; + palette?: IndexedColors; +} + +export interface IPNGDecoderOptions { + checkCrc?: boolean; +} + +export interface IPNGEncoderOptions { + zlib?: DeflateFunctionOptions; +} + +export type IndexedColors = number[][]; + +export interface IInflator { + result: Uint8Array | Array | string; + err: number; + msg: string; + push: Function; + onData: Function; + onEnd: Function; +} diff --git a/bundler/tests/.cache/deno/cf29dd9767780568d1f039c184d5ecc11958e9e3.ts b/bundler/tests/.cache/deno/cf29dd9767780568d1f039c184d5ecc11958e9e3.ts new file mode 100644 index 00000000000..e5fb0562502 --- /dev/null +++ b/bundler/tests/.cache/deno/cf29dd9767780568d1f039c184d5ecc11958e9e3.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std/async/mux_async_iterator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // deno-lint-ignore no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/cf51e700c9ca5d3530b589bda2fee36ee9441455.ts b/bundler/tests/.cache/deno/cf51e700c9ca5d3530b589bda2fee36ee9441455.ts new file mode 100644 index 00000000000..c743ddbd102 --- /dev/null +++ b/bundler/tests/.cache/deno/cf51e700c9ca5d3530b589bda2fee36ee9441455.ts @@ -0,0 +1,17 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/seq.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +export const seq = new Type("tag:yaml.org,2002:seq", { + construct(data): Any { + return data !== null ? data : []; + }, + kind: "sequence", +}); diff --git a/bundler/tests/.cache/deno/d043e7581e4be85d4ee64019510c7fea2a32f92d.ts b/bundler/tests/.cache/deno/d043e7581e4be85d4ee64019510c7fea2a32f92d.ts new file mode 100644 index 00000000000..891617b166b --- /dev/null +++ b/bundler/tests/.cache/deno/d043e7581e4be85d4ee64019510c7fea2a32f92d.ts @@ -0,0 +1,212 @@ +// Loaded from https://deno.land/std@0.83.0/log/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Logger } from "./logger.ts"; +import type { GenericFunction } from "./logger.ts"; +import { + BaseHandler, + ConsoleHandler, + FileHandler, + RotatingFileHandler, + WriterHandler, +} from "./handlers.ts"; +import { assert } from "../_util/assert.ts"; +import type { LevelName } from "./levels.ts"; + +export { LogLevels } from "./levels.ts"; +export type { LevelName } from "./levels.ts"; +export { Logger } from "./logger.ts"; + +export class LoggerConfig { + level?: LevelName; + handlers?: string[]; +} + +export interface LogConfig { + handlers?: { + [name: string]: BaseHandler; + }; + loggers?: { + [name: string]: LoggerConfig; + }; +} + +const DEFAULT_LEVEL = "INFO"; +const DEFAULT_CONFIG: LogConfig = { + handlers: { + default: new ConsoleHandler(DEFAULT_LEVEL), + }, + + loggers: { + default: { + level: DEFAULT_LEVEL, + handlers: ["default"], + }, + }, +}; + +const state = { + handlers: new Map(), + loggers: new Map(), + config: DEFAULT_CONFIG, +}; + +export const handlers = { + BaseHandler, + ConsoleHandler, + WriterHandler, + FileHandler, + RotatingFileHandler, +}; + +/** Get a logger instance. If not specified `name`, get the default logger. */ +export function getLogger(name?: string): Logger { + if (!name) { + const d = state.loggers.get("default"); + assert( + d != null, + `"default" logger must be set for getting logger without name`, + ); + return d; + } + const result = state.loggers.get(name); + if (!result) { + const logger = new Logger(name, "NOTSET", { handlers: [] }); + state.loggers.set(name, logger); + return logger; + } + return result; +} + +/** Log with debug level, using default logger. */ +export function debug(msg: () => T, ...args: unknown[]): T | undefined; +export function debug( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").debug(msg, ...args); + } + return getLogger("default").debug(msg, ...args); +} + +/** Log with info level, using default logger. */ +export function info(msg: () => T, ...args: unknown[]): T | undefined; +export function info( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").info(msg, ...args); + } + return getLogger("default").info(msg, ...args); +} + +/** Log with warning level, using default logger. */ +export function warning(msg: () => T, ...args: unknown[]): T | undefined; +export function warning( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").warning(msg, ...args); + } + return getLogger("default").warning(msg, ...args); +} + +/** Log with error level, using default logger. */ +export function error(msg: () => T, ...args: unknown[]): T | undefined; +export function error( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").error(msg, ...args); + } + return getLogger("default").error(msg, ...args); +} + +/** Log with critical level, using default logger. */ +export function critical(msg: () => T, ...args: unknown[]): T | undefined; +export function critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").critical(msg, ...args); + } + return getLogger("default").critical(msg, ...args); +} + +/** Setup logger config. */ +export async function setup(config: LogConfig): Promise { + state.config = { + handlers: { ...DEFAULT_CONFIG.handlers, ...config.handlers }, + loggers: { ...DEFAULT_CONFIG.loggers, ...config.loggers }, + }; + + // tear down existing handlers + state.handlers.forEach((handler): void => { + handler.destroy(); + }); + state.handlers.clear(); + + // setup handlers + const handlers = state.config.handlers || {}; + + for (const handlerName in handlers) { + const handler = handlers[handlerName]; + await handler.setup(); + state.handlers.set(handlerName, handler); + } + + // remove existing loggers + state.loggers.clear(); + + // setup loggers + const loggers = state.config.loggers || {}; + for (const loggerName in loggers) { + const loggerConfig = loggers[loggerName]; + const handlerNames = loggerConfig.handlers || []; + const handlers: BaseHandler[] = []; + + handlerNames.forEach((handlerName): void => { + const handler = state.handlers.get(handlerName); + if (handler) { + handlers.push(handler); + } + }); + + const levelName = loggerConfig.level || DEFAULT_LEVEL; + const logger = new Logger(loggerName, levelName, { handlers: handlers }); + state.loggers.set(loggerName, logger); + } +} + +await setup(DEFAULT_CONFIG); diff --git a/bundler/tests/.cache/deno/d05317965c1121432be9c1713e3371315fbda0e1.ts b/bundler/tests/.cache/deno/d05317965c1121432be9c1713e3371315fbda0e1.ts new file mode 100644 index 00000000000..e505f235e35 --- /dev/null +++ b/bundler/tests/.cache/deno/d05317965c1121432be9c1713e3371315fbda0e1.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/omap.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; +const _toString = Object.prototype.toString; + +function resolveYamlOmap(data: Any): boolean { + const objectKeys: string[] = []; + let pairKey = ""; + let pairHasKey = false; + + for (const pair of data) { + pairHasKey = false; + + if (_toString.call(pair) !== "[object Object]") return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data: Any): Any { + return data !== null ? data : []; +} + +export const omap = new Type("tag:yaml.org,2002:omap", { + construct: constructYamlOmap, + kind: "sequence", + resolve: resolveYamlOmap, +}); diff --git a/bundler/tests/.cache/deno/d0a9c9736276898e6047cceb97f83dfb0197f116.ts b/bundler/tests/.cache/deno/d0a9c9736276898e6047cceb97f83dfb0197f116.ts new file mode 100644 index 00000000000..10f77b40e73 --- /dev/null +++ b/bundler/tests/.cache/deno/d0a9c9736276898e6047cceb97f83dfb0197f116.ts @@ -0,0 +1,383 @@ +// Loaded from https://deno.land/std@0.84.0/http/_io.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { assert } from "../_util/assert.ts"; +import { encoder } from "../encoding/utf8.ts"; +import { Response, ServerRequest } from "./server.ts"; +import { STATUS_TEXT } from "./http_status.ts"; + +export function emptyReader(): Deno.Reader { + return { + read(_: Uint8Array): Promise { + return Promise.resolve(null); + }, + }; +} + +export function bodyReader(contentLength: number, r: BufReader): Deno.Reader { + let totalRead = 0; + let finished = false; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + let result: number | null; + const remaining = contentLength - totalRead; + if (remaining >= buf.byteLength) { + result = await r.read(buf); + } else { + const readBuf = buf.subarray(0, remaining); + result = await r.read(readBuf); + } + if (result !== null) { + totalRead += result; + } + finished = totalRead === contentLength; + return result; + } + return { read }; +} + +export function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO(bartlomieju): handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Deno.errors.InvalidData("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +function isProhibidedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} + +/** Read trailer headers from reader and append values to headers. "trailer" + * field will be deleted. */ +export async function readTrailers( + headers: Headers, + r: BufReader, +): Promise { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMIMEHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibidedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +export async function writeChunkedBody( + w: BufWriter, + r: Deno.Reader, +): Promise { + for await (const chunk of Deno.iter(r)) { + if (chunk.byteLength <= 0) continue; + const start = encoder.encode(`${chunk.byteLength.toString(16)}\r\n`); + const end = encoder.encode("\r\n"); + await w.write(start); + await w.write(chunk); + await w.write(end); + await w.flush(); + } + + const endChunk = encoder.encode("0\r\n\r\n"); + await w.write(endChunk); +} + +/** Write trailer headers to writer. It should mostly should be called after + * `writeResponse()`. */ +export async function writeTrailers( + w: Deno.Writer, + headers: Headers, + trailers: Headers, +): Promise { + const trailer = headers.get("trailer"); + if (trailer === null) { + throw new TypeError("Missing trailer header."); + } + const transferEncoding = headers.get("transfer-encoding"); + if (transferEncoding === null || !transferEncoding.match(/^chunked/)) { + throw new TypeError( + `Trailers are only allowed for "transfer-encoding: chunked", got "transfer-encoding: ${transferEncoding}".`, + ); + } + const writer = BufWriter.create(w); + const trailerNames = trailer.split(",").map((s) => s.trim().toLowerCase()); + const prohibitedTrailers = trailerNames.filter((k) => + isProhibidedForTrailer(k) + ); + if (prohibitedTrailers.length > 0) { + throw new TypeError( + `Prohibited trailer names: ${Deno.inspect(prohibitedTrailers)}.`, + ); + } + const undeclared = [...trailers.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new TypeError(`Undeclared trailers: ${Deno.inspect(undeclared)}.`); + } + for (const [key, value] of trailers) { + await writer.write(encoder.encode(`${key}: ${value}\r\n`)); + } + await writer.write(encoder.encode("\r\n")); + await writer.flush(); +} + +export async function writeResponse( + w: Deno.Writer, + r: Response, +): Promise { + const protoMajor = 1; + const protoMinor = 1; + const statusCode = r.status || 200; + const statusText = STATUS_TEXT.get(statusCode); + const writer = BufWriter.create(w); + if (!statusText) { + throw new Deno.errors.InvalidData("Bad status code"); + } + if (!r.body) { + r.body = new Uint8Array(); + } + if (typeof r.body === "string") { + r.body = encoder.encode(r.body); + } + + let out = `HTTP/${protoMajor}.${protoMinor} ${statusCode} ${statusText}\r\n`; + + const headers = r.headers ?? new Headers(); + + if (r.body && !headers.get("content-length")) { + if (r.body instanceof Uint8Array) { + out += `content-length: ${r.body.byteLength}\r\n`; + } else if (!headers.get("transfer-encoding")) { + out += "transfer-encoding: chunked\r\n"; + } + } + + for (const [key, value] of headers) { + out += `${key}: ${value}\r\n`; + } + + out += `\r\n`; + + const header = encoder.encode(out); + const n = await writer.write(header); + assert(n === header.byteLength); + + if (r.body instanceof Uint8Array) { + const n = await writer.write(r.body); + assert(n === r.body.byteLength); + } else if (headers.has("content-length")) { + const contentLength = headers.get("content-length"); + assert(contentLength != null); + const bodyLength = parseInt(contentLength); + const n = await Deno.copy(r.body, writer); + assert(n === bodyLength); + } else { + await writeChunkedBody(writer, r.body); + } + if (r.trailers) { + const t = await r.trailers(); + await writeTrailers(writer, headers, t); + } + await writer.flush(); +} + +/** + * ParseHTTPVersion parses a HTTP version string. + * "HTTP/1.0" returns (1, 0). + * Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792 + */ +export function parseHTTPVersion(vers: string): [number, number] { + switch (vers) { + case "HTTP/1.1": + return [1, 1]; + + case "HTTP/1.0": + return [1, 0]; + + default: { + const Big = 1000000; // arbitrary upper bound + + if (!vers.startsWith("HTTP/")) { + break; + } + + const dot = vers.indexOf("."); + if (dot < 0) { + break; + } + + const majorStr = vers.substring(vers.indexOf("/") + 1, dot); + const major = Number(majorStr); + if (!Number.isInteger(major) || major < 0 || major > Big) { + break; + } + + const minorStr = vers.substring(dot + 1); + const minor = Number(minorStr); + if (!Number.isInteger(minor) || minor < 0 || minor > Big) { + break; + } + + return [major, minor]; + } + } + + throw new Error(`malformed HTTP version ${vers}`); +} + +export async function readRequest( + conn: Deno.Conn, + bufr: BufReader, +): Promise { + const tp = new TextProtoReader(bufr); + const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 + if (firstLine === null) return null; + const headers = await tp.readMIMEHeader(); + if (headers === null) throw new Deno.errors.UnexpectedEof(); + + const req = new ServerRequest(); + req.conn = conn; + req.r = bufr; + [req.method, req.url, req.proto] = firstLine.split(" ", 3); + [req.protoMajor, req.protoMinor] = parseHTTPVersion(req.proto); + req.headers = headers; + fixLength(req); + return req; +} + +function fixLength(req: ServerRequest): void { + const contentLength = req.headers.get("Content-Length"); + if (contentLength) { + const arrClen = contentLength.split(","); + if (arrClen.length > 1) { + const distinct = [...new Set(arrClen.map((e): string => e.trim()))]; + if (distinct.length > 1) { + throw Error("cannot contain multiple Content-Length headers"); + } else { + req.headers.set("Content-Length", distinct[0]); + } + } + const c = req.headers.get("Content-Length"); + if (req.method === "HEAD" && c && c !== "0") { + throw Error("http: method cannot contain a Content-Length"); + } + if (c && req.headers.has("transfer-encoding")) { + // A sender MUST NOT send a Content-Length header field in any message + // that contains a Transfer-Encoding header field. + // rfc: https://tools.ietf.org/html/rfc7230#section-3.3.2 + throw new Error( + "http: Transfer-Encoding and Content-Length cannot be send together", + ); + } + } +} diff --git a/bundler/tests/.cache/deno/d0b3ab913f2da591f92d7c859d8138a98c46870d.ts b/bundler/tests/.cache/deno/d0b3ab913f2da591f92d7c859d8138a98c46870d.ts new file mode 100644 index 00000000000..6d7f36edbd4 --- /dev/null +++ b/bundler/tests/.cache/deno/d0b3ab913f2da591f92d7c859d8138a98c46870d.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std@0.85.0/async/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/d0cb1cab22150588787552132815ba0adfaa9f25.ts b/bundler/tests/.cache/deno/d0cb1cab22150588787552132815ba0adfaa9f25.ts new file mode 100644 index 00000000000..569b3ac3c1f --- /dev/null +++ b/bundler/tests/.cache/deno/d0cb1cab22150588787552132815ba0adfaa9f25.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/std@0.74.0/async/pool.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** + * pooledMap transforms values from an (async) iterable into another async + * iterable. The transforms are done concurrently, with a max concurrency + * defined by the poolLimit. + * + * @param poolLimit The maximum count of items being processed concurrently. + * @param array The input array for mapping. + * @param iteratorFn The function to call for every item of the array. + */ +export function pooledMap( + poolLimit: number, + array: Iterable | AsyncIterable, + iteratorFn: (data: T) => Promise, +): AsyncIterableIterator { + // Create the async iterable that is returned from this function. + const res = new TransformStream, R>({ + async transform( + p: Promise, + controller: TransformStreamDefaultController, + ): Promise { + controller.enqueue(await p); + }, + }); + // Start processing items from the iterator + (async (): Promise => { + const writer = res.writable.getWriter(); + const executing: Array> = []; + for await (const item of array) { + const p = Promise.resolve().then(() => iteratorFn(item)); + writer.write(p); + const e: Promise = p.then(() => + executing.splice(executing.indexOf(e), 1) + ); + executing.push(e); + if (executing.length >= poolLimit) { + await Promise.race(executing); + } + } + // Wait until all ongoing events have processed, then close the writer. + await Promise.all(executing); + writer.close(); + })(); + return res.readable.getIterator(); +} diff --git a/bundler/tests/.cache/deno/d0f53c973249fa46c589bba3ed992682a61da5d6.ts b/bundler/tests/.cache/deno/d0f53c973249fa46c589bba3ed992682a61da5d6.ts new file mode 100644 index 00000000000..743bb75478a --- /dev/null +++ b/bundler/tests/.cache/deno/d0f53c973249fa46c589bba3ed992682a61da5d6.ts @@ -0,0 +1,132 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/connectors/sqlite3-connector.ts + + +import { SQLiteClient } from "../../deps.ts"; +import type { Connector, ConnectorOptions } from "./connector.ts"; +import type { QueryDescription } from "../query-builder.ts"; +import type { FieldValue } from "../data-types.ts"; +import { SQLTranslator } from "../translators/sql-translator.ts"; + +export interface SQLite3Options extends ConnectorOptions { + filepath: string; +} + +export class SQLite3Connector implements Connector { + _client: SQLiteClient; + _options: SQLite3Options; + _translator: SQLTranslator; + _connected = false; + + /** Create a SQLite connection. */ + constructor(options: SQLite3Options) { + this._options = options; + this._client = new SQLiteClient(this._options.filepath); + this._translator = new SQLTranslator("sqlite3"); + } + + async _makeConnection() { + if (this._connected) { + return; + } + + this._connected = true; + } + + async ping() { + await this._makeConnection(); + + try { + let connected = false; + + for (const [result] of this._client.query("SELECT 1 + 1")) { + connected = result === 2; + } + + return connected; + } catch (error) { + return false; + } + } + + async query(queryDescription: QueryDescription): Promise { + await this._makeConnection(); + + const query = this._translator.translateToQuery(queryDescription); + const subqueries = query.split(";"); + + const results = subqueries.map(async (subquery, index) => { + const response = this._client.query(subquery + ";", []); + + if (index < subqueries.length - 1) { + response.return(); + return []; + } + + const results = []; + let columns; + + try { + columns = response.columns(); + } catch (error) { + // If there are no matching records, .columns will throw an error + + if ( + (queryDescription.type === "insert" || + queryDescription.type === "update") && + queryDescription.values + ) { + if (Array.isArray(queryDescription.values)) { + return await Promise.all( + queryDescription.values.map((values) => + queryDescription.schema.where(values).first() + ), + ); + } + + return queryDescription.schema.where(queryDescription.values).first(); + } + + return []; + } + + for (const row of response) { + const result: { [k: string]: FieldValue } = {}; + + let i = 0; + for (const column of row!) { + const columnName = columns[i].name; + if (columnName === "count(*)") { + result.count = column; + } else if (columnName.startsWith("max(")) { + result.max = column; + } else if (columnName.startsWith("min(")) { + result.min = column; + } else if (columnName.startsWith("sum(")) { + result.sum = column; + } else if (columnName.startsWith("avg(")) { + result.avg = column; + } else { + result[columns[i].name] = column; + } + + i++; + } + + results.push(result); + } + + return results; + }); + + return results[results.length - 1]; + } + + async close() { + if (!this._connected) { + return; + } + + this._client.close(); + this._connected = false; + } +} diff --git a/bundler/tests/.cache/deno/d1090b86764c5193b1b2d03876f65c8a484c76d5.ts b/bundler/tests/.cache/deno/d1090b86764c5193b1b2d03876f65c8a484c76d5.ts new file mode 100644 index 00000000000..3520fd75e59 --- /dev/null +++ b/bundler/tests/.cache/deno/d1090b86764c5193b1b2d03876f65c8a484c76d5.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/subtract.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Subtracts its second argument from its first argument. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a - b`. + * @see R.add + * @example + * + * R.subtract(10, 8); //=> 2 + * + * const minus5 = R.subtract(R.__, 5); + * minus5(17); //=> 12 + * + * const complementaryAngle = R.subtract(90); + * complementaryAngle(30); //=> 60 + * complementaryAngle(72); //=> 18 + */ +var subtract = _curry2(function subtract(a, b) { + return Number(a) - Number(b); +}); +export default subtract; diff --git a/bundler/tests/.cache/deno/d168b0f663b05a2aff5713eb265dde722651c7ef.ts b/bundler/tests/.cache/deno/d168b0f663b05a2aff5713eb265dde722651c7ef.ts new file mode 100644 index 00000000000..3ed9c618853 --- /dev/null +++ b/bundler/tests/.cache/deno/d168b0f663b05a2aff5713eb265dde722651c7ef.ts @@ -0,0 +1,192 @@ +// Loaded from https://deno.land/std@0.83.0/log/logger.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, getLevelName, LogLevels } from "./levels.ts"; +import type { LevelName } from "./levels.ts"; +import type { BaseHandler } from "./handlers.ts"; + +// deno-lint-ignore no-explicit-any +export type GenericFunction = (...args: any[]) => any; + +export interface LogRecordOptions { + msg: string; + args: unknown[]; + level: number; + loggerName: string; +} + +export class LogRecord { + readonly msg: string; + #args: unknown[]; + #datetime: Date; + readonly level: number; + readonly levelName: string; + readonly loggerName: string; + + constructor(options: LogRecordOptions) { + this.msg = options.msg; + this.#args = [...options.args]; + this.level = options.level; + this.loggerName = options.loggerName; + this.#datetime = new Date(); + this.levelName = getLevelName(options.level); + } + get args(): unknown[] { + return [...this.#args]; + } + get datetime(): Date { + return new Date(this.#datetime.getTime()); + } +} + +export interface LoggerOptions { + handlers?: BaseHandler[]; +} + +export class Logger { + #level: LogLevels; + #handlers: BaseHandler[]; + readonly #loggerName: string; + + constructor( + loggerName: string, + levelName: LevelName, + options: LoggerOptions = {}, + ) { + this.#loggerName = loggerName; + this.#level = getLevelByName(levelName); + this.#handlers = options.handlers || []; + } + + get level(): LogLevels { + return this.#level; + } + set level(level: LogLevels) { + this.#level = level; + } + + get levelName(): LevelName { + return getLevelName(this.#level); + } + set levelName(levelName: LevelName) { + this.#level = getLevelByName(levelName); + } + + get loggerName(): string { + return this.#loggerName; + } + + set handlers(hndls: BaseHandler[]) { + this.#handlers = hndls; + } + get handlers(): BaseHandler[] { + return this.#handlers; + } + + /** If the level of the logger is greater than the level to log, then nothing + * is logged, otherwise a log record is passed to each log handler. `msg` data + * passed in is returned. If a function is passed in, it is only evaluated + * if the msg will be logged and the return value will be the result of the + * function, not the function itself, unless the function isn't called, in which + * case undefined is returned. All types are coerced to strings for logging. + */ + private _log( + level: number, + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + if (this.level > level) { + return msg instanceof Function ? undefined : msg; + } + + let fnResult: T | undefined; + let logMessage: string; + if (msg instanceof Function) { + fnResult = msg(); + logMessage = this.asString(fnResult); + } else { + logMessage = this.asString(msg); + } + const record: LogRecord = new LogRecord({ + msg: logMessage, + args: args, + level: level, + loggerName: this.loggerName, + }); + + this.#handlers.forEach((handler): void => { + handler.handle(record); + }); + + return msg instanceof Function ? fnResult : msg; + } + + asString(data: unknown): string { + if (typeof data === "string") { + return data; + } else if ( + data === null || + typeof data === "number" || + typeof data === "bigint" || + typeof data === "boolean" || + typeof data === "undefined" || + typeof data === "symbol" + ) { + return String(data); + } else if (data instanceof Error) { + return data.stack!; + } else if (typeof data === "object") { + return JSON.stringify(data); + } + return "undefined"; + } + + debug(msg: () => T, ...args: unknown[]): T | undefined; + debug(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.DEBUG, msg, ...args); + } + + info(msg: () => T, ...args: unknown[]): T | undefined; + info(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.INFO, msg, ...args); + } + + warning(msg: () => T, ...args: unknown[]): T | undefined; + warning(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.WARNING, msg, ...args); + } + + error(msg: () => T, ...args: unknown[]): T | undefined; + error(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; + error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.ERROR, msg, ...args); + } + + critical(msg: () => T, ...args: unknown[]): T | undefined; + critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] + ): T; + critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] + ): T | undefined { + return this._log(LogLevels.CRITICAL, msg, ...args); + } +} diff --git a/bundler/tests/.cache/deno/d16fa84a403387609691baebee6162db555a49eb.ts b/bundler/tests/.cache/deno/d16fa84a403387609691baebee6162db555a49eb.ts new file mode 100644 index 00000000000..9b903a900f8 --- /dev/null +++ b/bundler/tests/.cache/deno/d16fa84a403387609691baebee6162db555a49eb.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/max.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns the larger of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.maxBy, R.min + * @example + * + * R.max(789, 123); //=> 789 + * R.max('a', 'b'); //=> 'b' + */ +var max = _curry2(function max(a, b) { return b > a ? b : a; }); +export default max; diff --git a/bundler/tests/.cache/deno/d1745064f6aff60fdf50815e4b14d6d5d6772d8c.ts b/bundler/tests/.cache/deno/d1745064f6aff60fdf50815e4b14d6d5d6772d8c.ts new file mode 100644 index 00000000000..3efaf63a792 --- /dev/null +++ b/bundler/tests/.cache/deno/d1745064f6aff60fdf50815e4b14d6d5d6772d8c.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/god_crypto@v1.4.3/src/hash.ts + + +import { sha1 } from "https://denopkg.com/chiefbiiko/sha1@v1.0.3/mod.ts"; +import { sha256 } from "https://denopkg.com/chiefbiiko/sha256@v1.0.2/mod.ts"; + +export function createHash(algorithm: string) { + return new class { + protected m: Uint8Array = new Uint8Array(); + + public update(b: Uint8Array) { + this.m = b; + return this; + } + + public digest() { + if (algorithm === "sha1") { + return sha1(this.m) as Uint8Array; + } else if (algorithm === "sha256") { + return sha256(this.m) as Uint8Array; + } + + throw "Unsupport hash algorithm"; + } + }(); +} diff --git a/bundler/tests/.cache/deno/d1e3d21226328ca899c8d9b7f50176af9f0f63e9.ts b/bundler/tests/.cache/deno/d1e3d21226328ca899c8d9b7f50176af9f0f63e9.ts new file mode 100644 index 00000000000..a4ec40e0a42 --- /dev/null +++ b/bundler/tests/.cache/deno/d1e3d21226328ca899c8d9b7f50176af9f0f63e9.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { SchemaDefinition } from "./schema.ts"; +import { DEFAULT_SCHEMA } from "./schema/mod.ts"; + +export abstract class State { + constructor(public schema: SchemaDefinition = DEFAULT_SCHEMA) {} +} diff --git a/bundler/tests/.cache/deno/d20887b7b6b613d2656b487efebc04b646d470ec.ts b/bundler/tests/.cache/deno/d20887b7b6b613d2656b487efebc04b646d470ec.ts new file mode 100644 index 00000000000..57b7ef4d1cc --- /dev/null +++ b/bundler/tests/.cache/deno/d20887b7b6b613d2656b487efebc04b646d470ec.ts @@ -0,0 +1,307 @@ +// Loaded from https://deno.land/x/axiod@0.20.0-0/mod.ts + + +import { urlJoin } from "https://deno.land/x/url_join/mod.ts"; + +import { + IRequest, + IConfig, + Data, + IAxiodResponse, +} from "./interfaces.ts"; +import { methods } from "./helpers.ts"; + +function axiod( + url: string | IRequest, + config?: IRequest, +): Promise { + if (typeof url === "string") { + return axiod.request(Object.assign({}, axiod.defaults, { url }, config)); + } + return axiod.request(Object.assign({}, axiod.defaults, url)); +} + +axiod.defaults = { + url: "/", + method: "get", + timeout: 0, + withCredentials: false, + validateStatus: (status: number) => { + return status >= 200 && status < 300; + }, +}; + +axiod.create = (config?: IRequest) => { + const instance = Object.assign({}, axiod); + instance.defaults = Object.assign({}, axiod.defaults, config); + instance.defaults.timeout = 1000; + + return instance; +}; + +axiod.request = ({ + url = "/", + baseURL, + method, + headers, + params, + data, + timeout, + withCredentials, + auth, + validateStatus, + paramsSerializer, + transformRequest, + transformResponse, +}: IRequest): Promise => { + // Url and Base url + if (baseURL) { + url = urlJoin(baseURL, url); + } + + // Method + if (method) { + if (methods.indexOf(method.toLowerCase().trim()) === -1) { + throw new Error(`Method ${method} is not supported`); + } else { + method = method.toLowerCase().trim(); + } + } else { + method = "get"; + } + + // Params + let _params = ""; + if (params) { + if (paramsSerializer) { + _params = paramsSerializer(params); + } else { + _params = Object.keys(params) + .map((key) => { + return ( + encodeURIComponent(key) + "=" + encodeURIComponent(params[key]) + ); + }) + .join("&"); + } + } + + // Add credentials to header + if (withCredentials) { + if (auth?.username && auth?.password) { + if (!headers) { + headers = {}; + } + + headers["Authorization"] = "Basic " + + btoa( + unescape(encodeURIComponent(`${auth.username}:${auth.password}`)), + ); + } + } + + // Create fetch Request Config + const fetchRequestObject: RequestInit = {}; + + // Add method to Request Config + if (method !== "get") { + fetchRequestObject.method = method.toUpperCase(); + } + + // Add params to Request Config Url + if (_params) { + url = urlJoin(url, `?${params}`); + } + + // Add body to Request Config + if (data && method !== "get") { + // transformRequest + if ( + transformRequest && + Array.isArray(transformRequest) && + transformRequest.length > 0 + ) { + for (var i = 0; i < (transformRequest || []).length; i++) { + if (transformRequest && transformRequest[i]) { + data = transformRequest[i](data, headers); + } + } + } + + if (typeof data === "string" || data instanceof FormData) { + fetchRequestObject.body = data; + } else { + try { + fetchRequestObject.body = JSON.stringify(data); + if (!headers) { + headers = {}; + } + + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + } catch (ex) {} + } + } + + // Add headers to Request Config + if (headers) { + const _headers: Headers = new Headers(); + Object.keys(headers).forEach((header) => { + if (headers && headers[header]) { + _headers.set(header, headers[header]); + } + }); + fetchRequestObject.headers = _headers; + } + + // [TODO] Mouadh HSOUMI + // Remove commented test when Abort is supported by Deno + // https://github.com/denoland/deno/issues/5471 + // https://github.com/Code-Hex/deno-context/issues/8 + // Timeout + // const controller = new AbortController(); + // fetchRequestObject.signal = controller.signal; + + // let timeoutVar: number = 0; + // console.log("timeout", timeout); + // if ((timeout || 0) > 0) { + // timeoutVar = setTimeout(() => { + // timeoutVar = 0; + // console.log("Cancecled controller.abort()"); + // controller.abort(); + // }, timeout); + // } + + // Start request + return fetch(url, fetchRequestObject).then(async (x) => { + // // Clear timeout + // if (timeoutVar) { + // clearTimeout(timeoutVar); + // } + + const _status: number = x.status; + const _statusText: string = x.statusText; + + // Data + let _data: any = null; + + // Check content type and then do the needed transformations + const contentType = x.headers.get("content-type") || ""; + if (contentType.toLowerCase().indexOf("json") === -1) { + // Try to convert to json + try { + _data = await x.json(); + } catch (ex) { + _data = await x.text(); + } + } else { + _data = await x.json(); + } + + // transformResponse + if (transformResponse) { + if ( + transformResponse && + Array.isArray(transformResponse) && + transformResponse.length > 0 + ) { + for (var i = 0; i < (transformResponse || []).length; i++) { + if (transformResponse && transformResponse[i]) { + _data = transformResponse[i](_data); + } + } + } + } + + const _headers: Headers = x.headers; + const _config: IRequest = { + url, + baseURL, + method, + headers, + params, + data, + timeout, + withCredentials, + auth, + paramsSerializer, + }; + + // Validate the status code + let isValidStatus = true; + + if (validateStatus) { + isValidStatus = validateStatus(_status); + } else { + isValidStatus = _status >= 200 && _status < 300; + } + + if (isValidStatus) { + return Promise.resolve({ + status: _status, + statusText: _statusText, + data: _data, + headers: _headers, + config: _config, + }); + } else { + const error = { + response: { + status: _status, + statusText: _statusText, + data: _data, + headers: _headers, + }, + config: _config, + }; + + return Promise.reject(error); + } + }); +}; + +axiod.get = (url: string, config?: IConfig) => { + return axiod.request(Object.assign({}, { url }, config, { method: "get" })); +}; +axiod.post = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "post", data }), + ); +}; +axiod.put = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "put", data }), + ); +}; +axiod.delete = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "delete", data }), + ); +}; +axiod.options = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "options", data }), + ); +}; +axiod.head = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "head", data }), + ); +}; +axiod.connect = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "connect", data }), + ); +}; +axiod.trace = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "trace", data }), + ); +}; +axiod.patch = (url: string, data?: Data, config?: IConfig) => { + return axiod.request( + Object.assign({}, { url }, config, { method: "patch", data }), + ); +}; + +export default axiod; diff --git a/bundler/tests/.cache/deno/d20ae1cd188fa121bb7310fd04d1c44c622b452a.ts b/bundler/tests/.cache/deno/d20ae1cd188fa121bb7310fd04d1c44c622b452a.ts new file mode 100644 index 00000000000..ac1742c49ca --- /dev/null +++ b/bundler/tests/.cache/deno/d20ae1cd188fa121bb7310fd04d1c44c622b452a.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueFragmentNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Unique fragment names + * + * A GraphQL document is only valid if all defined fragments have unique names. + */ +export function UniqueFragmentNamesRule(context) { + const knownFragmentNames = Object.create(null); + return { + OperationDefinition: () => false, + + FragmentDefinition(node) { + const fragmentName = node.name.value; + + if (knownFragmentNames[fragmentName]) { + context.reportError(new GraphQLError(`There can be only one fragment named "${fragmentName}".`, [knownFragmentNames[fragmentName], node.name])); + } else { + knownFragmentNames[fragmentName] = node.name; + } + + return false; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d2104f5cfe96d1e328d590e309094302175c8ff1.ts b/bundler/tests/.cache/deno/d2104f5cfe96d1e328d590e309094302175c8ff1.ts new file mode 100644 index 00000000000..83c780d8306 --- /dev/null +++ b/bundler/tests/.cache/deno/d2104f5cfe96d1e328d590e309094302175c8ff1.ts @@ -0,0 +1,391 @@ +// Loaded from https://deno.land/std@0.73.0/path/glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { NATIVE_OS } from "./_constants.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = NATIVE_OS }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + /* eslint-disable-next-line max-len */ + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/d210984b6ab8a23314ce3a9c6a383ff61baa2b56.ts b/bundler/tests/.cache/deno/d210984b6ab8a23314ce3a9c6a383ff61baa2b56.ts new file mode 100644 index 00000000000..7038c241774 --- /dev/null +++ b/bundler/tests/.cache/deno/d210984b6ab8a23314ce3a9c6a383ff61baa2b56.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/std@0.85.0/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +const hexTable = new TextEncoder().encode("0123456789abcdef"); + +/** + * ErrInvalidByte takes an invalid byte and returns an Error. + * @param byte + */ +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])), + ); +} + +/** ErrLength returns an error about odd string length. */ +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value. +function fromHexChar(byte: number): number { + // '0' <= byte && byte <= '9' + if (48 <= byte && byte <= 57) return byte - 48; + // 'a' <= byte && byte <= 'f' + if (97 <= byte && byte <= 102) return byte - 97 + 10; + // 'A' <= byte && byte <= 'F' + if (65 <= byte && byte <= 70) return byte - 65 + 10; + + throw errInvalidByte(byte); +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes. + * @param src + */ +export function encode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(encodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const v = src[i]; + dst[i * 2] = hexTable[v >> 4]; + dst[i * 2 + 1] = hexTable[v & 0x0f]; + } + return dst; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + return new TextDecoder().decode(encode(src)); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * If the input is malformed an error will be thrown + * the error. + * @param src + */ +export function decode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(decodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const a = fromHexChar(src[i * 2]); + const b = fromHexChar(src[i * 2 + 1]); + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + fromHexChar(src[dst.length * 2]); + throw errLength(); + } + + return dst; +} + +/** + * DecodedLen returns the length of decoding `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return x >>> 1; +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throw an error. + * @param s the `string` to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + return decode(new TextEncoder().encode(s)); +} diff --git a/bundler/tests/.cache/deno/d2770b20e27aa55cf9e8a86206eac21c2ca74223.ts b/bundler/tests/.cache/deno/d2770b20e27aa55cf9e8a86206eac21c2ca74223.ts new file mode 100644 index 00000000000..7ab198bd6dc --- /dev/null +++ b/bundler/tests/.cache/deno/d2770b20e27aa55cf9e8a86206eac21c2ca74223.ts @@ -0,0 +1,147 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/lexicographicSortSchema.js + + +import objectValues from '../polyfills/objectValues.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import keyValMap from '../jsutils/keyValMap.js'; +import { GraphQLSchema } from '../type/schema.js'; +import { GraphQLDirective } from '../type/directives.js'; +import { isIntrospectionType } from '../type/introspection.js'; +import { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition.js'; +/** + * Sort GraphQLSchema. + * + * This function returns a sorted copy of the given GraphQLSchema. + */ + +export function lexicographicSortSchema(schema) { + const schemaConfig = schema.toConfig(); + const typeMap = keyValMap(sortByName(schemaConfig.types), type => type.name, sortNamedType); + return new GraphQLSchema({ ...schemaConfig, + types: objectValues(typeMap), + directives: sortByName(schemaConfig.directives).map(sortDirective), + query: replaceMaybeType(schemaConfig.query), + mutation: replaceMaybeType(schemaConfig.mutation), + subscription: replaceMaybeType(schemaConfig.subscription) + }); + + function replaceType(type) { + if (isListType(type)) { + return new GraphQLList(replaceType(type.ofType)); + } else if (isNonNullType(type)) { + return new GraphQLNonNull(replaceType(type.ofType)); + } + + return replaceNamedType(type); + } + + function replaceNamedType(type) { + return typeMap[type.name]; + } + + function replaceMaybeType(maybeType) { + return maybeType && replaceNamedType(maybeType); + } + + function sortDirective(directive) { + const config = directive.toConfig(); + return new GraphQLDirective({ ...config, + locations: sortBy(config.locations, x => x), + args: sortArgs(config.args) + }); + } + + function sortArgs(args) { + return sortObjMap(args, arg => ({ ...arg, + type: replaceType(arg.type) + })); + } + + function sortFields(fieldsMap) { + return sortObjMap(fieldsMap, field => ({ ...field, + type: replaceType(field.type), + args: sortArgs(field.args) + })); + } + + function sortInputFields(fieldsMap) { + return sortObjMap(fieldsMap, field => ({ ...field, + type: replaceType(field.type) + })); + } + + function sortTypes(arr) { + return sortByName(arr).map(replaceNamedType); + } + + function sortNamedType(type) { + if (isScalarType(type) || isIntrospectionType(type)) { + return type; + } + + if (isObjectType(type)) { + const config = type.toConfig(); + return new GraphQLObjectType({ ...config, + interfaces: () => sortTypes(config.interfaces), + fields: () => sortFields(config.fields) + }); + } + + if (isInterfaceType(type)) { + const config = type.toConfig(); + return new GraphQLInterfaceType({ ...config, + interfaces: () => sortTypes(config.interfaces), + fields: () => sortFields(config.fields) + }); + } + + if (isUnionType(type)) { + const config = type.toConfig(); + return new GraphQLUnionType({ ...config, + types: () => sortTypes(config.types) + }); + } + + if (isEnumType(type)) { + const config = type.toConfig(); + return new GraphQLEnumType({ ...config, + values: sortObjMap(config.values) + }); + } + + if (isInputObjectType(type)) { + const config = type.toConfig(); + return new GraphQLInputObjectType({ ...config, + fields: () => sortInputFields(config.fields) + }); + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected type: ' + inspect(type)); + } +} + +function sortObjMap(map, sortValueFn) { + const sortedMap = Object.create(null); + const sortedKeys = sortBy(Object.keys(map), x => x); + + for (const key of sortedKeys) { + const value = map[key]; + sortedMap[key] = sortValueFn ? sortValueFn(value) : value; + } + + return sortedMap; +} + +function sortByName(array) { + return sortBy(array, obj => obj.name); +} + +function sortBy(array, mapToKey) { + return array.slice().sort((obj1, obj2) => { + const key1 = mapToKey(obj1); + const key2 = mapToKey(obj2); + return key1.localeCompare(key2); + }); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d31e1432d013dcef458190f0d8157c996963cadd.ts b/bundler/tests/.cache/deno/d31e1432d013dcef458190f0d8157c996963cadd.ts new file mode 100644 index 00000000000..4ec2540bb0f --- /dev/null +++ b/bundler/tests/.cache/deno/d31e1432d013dcef458190f0d8157c996963cadd.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/case/pascalCase.ts + + +import camelCase from "./camelCase.ts"; +import upperFirstCase from "./upperFirstCase.ts"; + +export default function pascalCase( + value: string, + locale?: string, + mergeNumbers?: boolean, +): string { + return upperFirstCase(camelCase(value, locale, mergeNumbers), locale); +} diff --git a/bundler/tests/.cache/deno/d3344efb9da95e08758beadfdf7b40164049e343.ts b/bundler/tests/.cache/deno/d3344efb9da95e08758beadfdf7b40164049e343.ts new file mode 100644 index 00000000000..96261d0f1cf --- /dev/null +++ b/bundler/tests/.cache/deno/d3344efb9da95e08758beadfdf7b40164049e343.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/join.js + + +import invoker from './invoker.js'; + + +/** + * Returns a string made by inserting the `separator` between each element and + * concatenating all the elements into a single string. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig String -> [a] -> String + * @param {Number|String} separator The string used to separate the elements. + * @param {Array} xs The elements to join into a string. + * @return {String} str The string made by concatenating `xs` with `separator`. + * @see R.split + * @example + * + * const spacer = R.join(' '); + * spacer(['a', 2, 3.4]); //=> 'a 2 3.4' + * R.join('|', [1, 2, 3]); //=> '1|2|3' + */ +var join = invoker(1, 'join'); +export default join; diff --git a/bundler/tests/.cache/deno/d33584c12e32941a6e6379a4a8d3be362140f70e.ts b/bundler/tests/.cache/deno/d33584c12e32941a6e6379a4a8d3be362140f70e.ts new file mode 100644 index 00000000000..f7cc7999ffd --- /dev/null +++ b/bundler/tests/.cache/deno/d33584c12e32941a6e6379a4a8d3be362140f70e.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/std@0.84.0/async/mux_async_iterator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { Deferred, deferred } from "./deferred.ts"; + +interface TaggedYieldedValue { + iterator: AsyncIterableIterator; + value: T; +} + +/** The MuxAsyncIterator class multiplexes multiple async iterators into a + * single stream. It currently makes an assumption: + * - The final result (the value returned and not yielded from the iterator) + * does not matter; if there is any, it is discarded. + */ +export class MuxAsyncIterator implements AsyncIterable { + private iteratorCount = 0; + private yields: Array> = []; + // deno-lint-ignore no-explicit-any + private throws: any[] = []; + private signal: Deferred = deferred(); + + add(iterator: AsyncIterableIterator): void { + ++this.iteratorCount; + this.callIteratorNext(iterator); + } + + private async callIteratorNext( + iterator: AsyncIterableIterator, + ): Promise { + try { + const { value, done } = await iterator.next(); + if (done) { + --this.iteratorCount; + } else { + this.yields.push({ iterator, value }); + } + } catch (e) { + this.throws.push(e); + } + this.signal.resolve(); + } + + async *iterate(): AsyncIterableIterator { + while (this.iteratorCount > 0) { + // Sleep until any of the wrapped iterators yields. + await this.signal; + + // Note that while we're looping over `yields`, new items may be added. + for (let i = 0; i < this.yields.length; i++) { + const { iterator, value } = this.yields[i]; + yield value; + this.callIteratorNext(iterator); + } + + if (this.throws.length) { + for (const e of this.throws) { + throw e; + } + this.throws.length = 0; + } + // Clear the `yields` list and reset the `signal` promise. + this.yields.length = 0; + this.signal = deferred(); + } + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + return this.iterate(); + } +} diff --git a/bundler/tests/.cache/deno/d404e5c250663eeec42fcd8b8dfe25560269f725.ts b/bundler/tests/.cache/deno/d404e5c250663eeec42fcd8b8dfe25560269f725.ts new file mode 100644 index 00000000000..447e9eda9bd --- /dev/null +++ b/bundler/tests/.cache/deno/d404e5c250663eeec42fcd8b8dfe25560269f725.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/indexBy.js + + +import reduceBy from './reduceBy.js'; + + +/** + * Given a function that generates a key, turns a list of objects into an + * object indexing the objects by the given key. Note that if multiple + * objects generate the same value for the indexing key only the last value + * will be included in the generated object. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @typedefn Idx = String | Int | Symbol + * @sig Idx a => (b -> a) -> [b] -> {a: b} + * @param {Function} fn Function :: a -> Idx + * @param {Array} array The array of objects to index + * @return {Object} An object indexing each array element by the given property. + * @see R.groupBy + * @example + * + * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}]; + * R.indexBy(R.prop('id'), list); + * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} + */ +var indexBy = reduceBy(function(acc, elem) { return elem; }, null); +export default indexBy; diff --git a/bundler/tests/.cache/deno/d437cf9a8c17626352d164ef4e7aa14af842055c.ts b/bundler/tests/.cache/deno/d437cf9a8c17626352d164ef4e7aa14af842055c.ts new file mode 100644 index 00000000000..a0d4f187d8b --- /dev/null +++ b/bundler/tests/.cache/deno/d437cf9a8c17626352d164ef4e7aa14af842055c.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/getOperationAST.js + + +import { Kind } from '../language/kinds.js'; + +/** + * Returns an operation AST given a document AST and optionally an operation + * name. If a name is not provided, an operation is only returned if only one is + * provided in the document. + */ +export function getOperationAST(documentAST, operationName) { + let operation = null; + + for (const definition of documentAST.definitions) { + if (definition.kind === Kind.OPERATION_DEFINITION) { + if (operationName == null) { + // If no operation name was provided, only return an Operation if there + // is one defined in the document. Upon encountering the second, return + // null. + if (operation) { + return null; + } + + operation = definition; + } else if (definition.name?.value === operationName) { + return definition; + } + } + } + + return operation; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d45959e8749b8e98ed8168e128b2c7f880a13d15.ts b/bundler/tests/.cache/deno/d45959e8749b8e98ed8168e128b2c7f880a13d15.ts new file mode 100644 index 00000000000..4abd4166fb7 --- /dev/null +++ b/bundler/tests/.cache/deno/d45959e8749b8e98ed8168e128b2c7f880a13d15.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.79.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/d4d6921a7a08ab2164439921d0dff2bccc62f26a.ts b/bundler/tests/.cache/deno/d4d6921a7a08ab2164439921d0dff2bccc62f26a.ts new file mode 100644 index 00000000000..8e1609f00a6 --- /dev/null +++ b/bundler/tests/.cache/deno/d4d6921a7a08ab2164439921d0dff2bccc62f26a.ts @@ -0,0 +1,250 @@ +// Loaded from https://deno.land/std/node/_utils.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { deferred } from "../async/mod.ts"; +import { assert, assertStringIncludes, fail } from "../testing/asserts.ts"; + +export type BinaryEncodings = "binary"; + +export type TextEncodings = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "ucs2" + | "ucs-2" + | "base64" + | "latin1" + | "hex"; + +export type Encodings = BinaryEncodings | TextEncodings; + +export function notImplemented(msg?: string): never { + const message = msg ? `Not implemented: ${msg}` : "Not implemented"; + throw new Error(message); +} + +export type _TextDecoder = typeof TextDecoder.prototype; +export const _TextDecoder = TextDecoder; + +export type _TextEncoder = typeof TextEncoder.prototype; +export const _TextEncoder = TextEncoder; + +// API helpers + +export type MaybeNull = T | null; +export type MaybeDefined = T | undefined; +export type MaybeEmpty = T | null | undefined; + +export function intoCallbackAPI( + // deno-lint-ignore no-explicit-any + func: (...args: any[]) => Promise, + cb: MaybeEmpty<(err: MaybeNull, value?: MaybeEmpty) => void>, + // deno-lint-ignore no-explicit-any + ...args: any[] +): void { + func(...args).then( + (value) => cb && cb(null, value), + (err) => cb && cb(err), + ); +} + +export function intoCallbackAPIWithIntercept( + // deno-lint-ignore no-explicit-any + func: (...args: any[]) => Promise, + interceptor: (v: T1) => T2, + cb: MaybeEmpty<(err: MaybeNull, value?: MaybeEmpty) => void>, + // deno-lint-ignore no-explicit-any + ...args: any[] +): void { + func(...args).then( + (value) => cb && cb(null, interceptor(value)), + (err) => cb && cb(err), + ); +} + +export function spliceOne(list: string[], index: number): void { + for (; index + 1 < list.length; index++) list[index] = list[index + 1]; + list.pop(); +} + +// Taken from: https://github.com/nodejs/node/blob/ba684805b6c0eded76e5cd89ee00328ac7a59365/lib/internal/util.js#L125 +// Return undefined if there is no match. +// Move the "slow cases" to a separate function to make sure this function gets +// inlined properly. That prioritizes the common case. +export function normalizeEncoding( + enc: string | null, +): TextEncodings | undefined { + if (enc == null || enc === "utf8" || enc === "utf-8") return "utf8"; + return slowCases(enc); +} + +// https://github.com/nodejs/node/blob/ba684805b6c0eded76e5cd89ee00328ac7a59365/lib/internal/util.js#L130 +function slowCases(enc: string): TextEncodings | undefined { + switch (enc.length) { + case 4: + if (enc === "UTF8") return "utf8"; + if (enc === "ucs2" || enc === "UCS2") return "utf16le"; + enc = `${enc}`.toLowerCase(); + if (enc === "utf8") return "utf8"; + if (enc === "ucs2") return "utf16le"; + break; + case 3: + if (enc === "hex" || enc === "HEX" || `${enc}`.toLowerCase() === "hex") { + return "hex"; + } + break; + case 5: + if (enc === "ascii") return "ascii"; + if (enc === "ucs-2") return "utf16le"; + if (enc === "UTF-8") return "utf8"; + if (enc === "ASCII") return "ascii"; + if (enc === "UCS-2") return "utf16le"; + enc = `${enc}`.toLowerCase(); + if (enc === "utf-8") return "utf8"; + if (enc === "ascii") return "ascii"; + if (enc === "ucs-2") return "utf16le"; + break; + case 6: + if (enc === "base64") return "base64"; + if (enc === "latin1" || enc === "binary") return "latin1"; + if (enc === "BASE64") return "base64"; + if (enc === "LATIN1" || enc === "BINARY") return "latin1"; + enc = `${enc}`.toLowerCase(); + if (enc === "base64") return "base64"; + if (enc === "latin1" || enc === "binary") return "latin1"; + break; + case 7: + if ( + enc === "utf16le" || + enc === "UTF16LE" || + `${enc}`.toLowerCase() === "utf16le" + ) { + return "utf16le"; + } + break; + case 8: + if ( + enc === "utf-16le" || + enc === "UTF-16LE" || + `${enc}`.toLowerCase() === "utf-16le" + ) { + return "utf16le"; + } + break; + default: + if (enc === "") return "utf8"; + } +} + +export function validateIntegerRange( + value: number, + name: string, + min = -2147483648, + max = 2147483647, +): void { + // The defaults for min and max correspond to the limits of 32-bit integers. + if (!Number.isInteger(value)) { + throw new Error(`${name} must be 'an integer' but was ${value}`); + } + + if (value < min || value > max) { + throw new Error( + `${name} must be >= ${min} && <= ${max}. Value was ${value}`, + ); + } +} + +type OptionalSpread = T extends undefined ? [] + : [T]; + +export function once( + callback: (...args: OptionalSpread) => void, +) { + let called = false; + return function (this: unknown, ...args: OptionalSpread) { + if (called) return; + called = true; + callback.apply(this, args); + }; +} + +/** + * @param {number} [expectedExecutions = 1] + * @param {number} [timeout = 1000] Milliseconds to wait before the promise is forcefully exited +*/ +export function mustCall( + fn: ((...args: T) => void) = () => {}, + expectedExecutions = 1, + timeout = 1000, +): [Promise, (...args: T) => void] { + if (expectedExecutions < 1) { + throw new Error("Expected executions can't be lower than 1"); + } + let timesExecuted = 0; + const completed = deferred(); + + const abort = setTimeout(() => completed.reject(), timeout); + + function callback(this: unknown, ...args: T) { + timesExecuted++; + if (timesExecuted === expectedExecutions) { + completed.resolve(); + } + fn.apply(this, args); + } + + const result = completed + .then(() => clearTimeout(abort)) + .catch(() => + fail( + `Async operation not completed: Expected ${expectedExecutions}, executed ${timesExecuted}`, + ) + ); + + return [ + result, + callback, + ]; +} +/** Asserts that an error thrown in a callback will not be wrongly caught. */ +export async function assertCallbackErrorUncaught( + { prelude, invocation, cleanup }: { + /** Any code which needs to run before the actual invocation (notably, any import statements). */ + prelude?: string; + /** + * The start of the invocation of the function, e.g. `open("foo.txt", `. + * The callback will be added after it. + */ + invocation: string; + /** Called after the subprocess is finished but before running the assertions, e.g. to clean up created files. */ + cleanup?: () => Promise | void; + }, +) { + // Since the error has to be uncaught, and that will kill the Deno process, + // the only way to test this is to spawn a subprocess. + const p = Deno.run({ + cmd: [ + Deno.execPath(), + "eval", + "--no-check", // Running TSC for every one of these tests would take way too long + "--unstable", + `${prelude ?? ""} + + ${invocation}(err) => { + // If the bug is present and the callback is called again with an error, + // don't throw another error, so if the subprocess fails we know it had the correct behaviour. + if (!err) throw new Error("success"); + });`, + ], + stderr: "piped", + }); + const status = await p.status(); + const stderr = new TextDecoder().decode(await Deno.readAll(p.stderr)); + p.close(); + p.stderr.close(); + await cleanup?.(); + assert(!status.success); + assertStringIncludes(stderr, "Error: success"); +} diff --git a/bundler/tests/.cache/deno/d4e8cd9d25876e2f27c7cb15c5f2bfe99ef9b071.ts b/bundler/tests/.cache/deno/d4e8cd9d25876e2f27c7cb15c5f2bfe99ef9b071.ts new file mode 100644 index 00000000000..ed1b8f80c16 --- /dev/null +++ b/bundler/tests/.cache/deno/d4e8cd9d25876e2f27c7cb15c5f2bfe99ef9b071.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/divide.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * Divides two numbers. Equivalent to `a / b`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a / b`. + * @see R.multiply + * @example + * + * R.divide(71, 100); //=> 0.71 + * + * const half = R.divide(R.__, 2); + * half(42); //=> 21 + * + * const reciprocal = R.divide(1); + * reciprocal(4); //=> 0.25 + */ +var divide = _curry2(function divide(a, b) { return a / b; }); +export default divide; diff --git a/bundler/tests/.cache/deno/d55a64ab45359e86e46ee653bba1d86590a5ee9e.ts b/bundler/tests/.cache/deno/d55a64ab45359e86e46ee653bba1d86590a5ee9e.ts new file mode 100644 index 00000000000..3311a08464d --- /dev/null +++ b/bundler/tests/.cache/deno/d55a64ab45359e86e46ee653bba1d86590a5ee9e.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/once.js + + +import _arity from './internal/_arity.js'; +import _curry1 from './internal/_curry1.js'; + + +/** + * Accepts a function `fn` and returns a function that guards invocation of + * `fn` such that `fn` can only ever be called once, no matter how many times + * the returned function is invoked. The first value calculated is returned in + * subsequent invocations. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a... -> b) -> (a... -> b) + * @param {Function} fn The function to wrap in a call-only-once wrapper. + * @return {Function} The wrapped function. + * @example + * + * const addOneOnce = R.once(x => x + 1); + * addOneOnce(10); //=> 11 + * addOneOnce(addOneOnce(50)); //=> 11 + */ +var once = _curry1(function once(fn) { + var called = false; + var result; + return _arity(fn.length, function() { + if (called) { + return result; + } + called = true; + result = fn.apply(this, arguments); + return result; + }); +}); +export default once; diff --git a/bundler/tests/.cache/deno/d57983204e1f809a3eff59710d532b336db31a98.ts b/bundler/tests/.cache/deno/d57983204e1f809a3eff59710d532b336db31a98.ts new file mode 100644 index 00000000000..0750f41922b --- /dev/null +++ b/bundler/tests/.cache/deno/d57983204e1f809a3eff59710d532b336db31a98.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueDirectivesPerLocationRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { isTypeDefinitionNode, isTypeExtensionNode } from '../../language/predicates.js'; +import { specifiedDirectives } from '../../type/directives.js'; + +/** + * Unique directive names per location + * + * A GraphQL document is only valid if all non-repeatable directives at + * a given location are uniquely named. + */ +export function UniqueDirectivesPerLocationRule(context) { + const uniqueDirectiveMap = Object.create(null); + const schema = context.getSchema(); + const definedDirectives = schema ? schema.getDirectives() : specifiedDirectives; + + for (const directive of definedDirectives) { + uniqueDirectiveMap[directive.name] = !directive.isRepeatable; + } + + const astDefinitions = context.getDocument().definitions; + + for (const def of astDefinitions) { + if (def.kind === Kind.DIRECTIVE_DEFINITION) { + uniqueDirectiveMap[def.name.value] = !def.repeatable; + } + } + + const schemaDirectives = Object.create(null); + const typeDirectivesMap = Object.create(null); + return { + // Many different AST nodes may contain directives. Rather than listing + // them all, just listen for entering any node, and check to see if it + // defines any directives. + enter(node) { + if (node.directives == null) { + return; + } + + let seenDirectives; + + if (node.kind === Kind.SCHEMA_DEFINITION || node.kind === Kind.SCHEMA_EXTENSION) { + seenDirectives = schemaDirectives; + } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) { + const typeName = node.name.value; + seenDirectives = typeDirectivesMap[typeName]; + + if (seenDirectives === undefined) { + typeDirectivesMap[typeName] = seenDirectives = Object.create(null); + } + } else { + seenDirectives = Object.create(null); + } + + for (const directive of node.directives) { + const directiveName = directive.name.value; + + if (uniqueDirectiveMap[directiveName]) { + if (seenDirectives[directiveName]) { + context.reportError(new GraphQLError(`The directive "@${directiveName}" can only be used once at this location.`, [seenDirectives[directiveName], directive])); + } else { + seenDirectives[directiveName] = directive; + } + } + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d5e653c908b9df7f1b2c5854561d1952f8063d88.ts b/bundler/tests/.cache/deno/d5e653c908b9df7f1b2c5854561d1952f8063d88.ts new file mode 100644 index 00000000000..bf80fd44873 --- /dev/null +++ b/bundler/tests/.cache/deno/d5e653c908b9df7f1b2c5854561d1952f8063d88.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std/path/glob.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/d6183832e1c1eabfeb9a327eabfb7c71fe40986d.ts b/bundler/tests/.cache/deno/d6183832e1c1eabfeb9a327eabfb7c71fe40986d.ts new file mode 100644 index 00000000000..678c196c3d1 --- /dev/null +++ b/bundler/tests/.cache/deno/d6183832e1c1eabfeb9a327eabfb7c71fe40986d.ts @@ -0,0 +1,92 @@ +// Loaded from https://deno.land/x/oak/isMediaType.ts + + +/*! + * Adapted directly from type-is at https://github.com/jshttp/type-is/ + * which is licensed as follows: + * + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +import { lookup } from "./deps.ts"; +import { format, parse } from "./mediaTyper.ts"; + +function mimeMatch(expected: string | undefined, actual: string): boolean { + if (expected === undefined) { + return false; + } + + const actualParts = actual.split("/"); + const expectedParts = expected.split("/"); + + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + + const [actualType, actualSubtype] = actualParts; + const [expectedType, expectedSubtype] = expectedParts; + + if (expectedType !== "*" && expectedType !== actualType) { + return false; + } + + if (expectedSubtype.substr(0, 2) === "*+") { + return ( + expectedSubtype.length <= actualSubtype.length + 1 && + expectedSubtype.substr(1) === + actualSubtype.substr(1 - expectedSubtype.length) + ); + } + + if (expectedSubtype !== "*" && expectedSubtype !== actualSubtype) { + return false; + } + + return true; +} + +function normalize(type: string): string | undefined { + if (type === "urlencoded") { + return "application/x-www-form-urlencoded"; + } else if (type === "multipart") { + return "multipart/*"; + } else if (type[0] === "+") { + return `*/*${type}`; + } + return type.includes("/") ? type : lookup(type); +} + +function normalizeType(value: string): string | undefined { + try { + const val = value.split(";"); + const type = parse(val[0]); + return format(type); + } catch { + return; + } +} + +/** Given a value of the content type of a request and an array of types, + * provide the matching type or `false` if no types are matched. + */ +export function isMediaType(value: string, types: string[]): string | false { + const val = normalizeType(value); + + if (!val) { + return false; + } + + if (!types.length) { + return val; + } + + for (const type of types) { + if (mimeMatch(normalize(type), val)) { + return type[0] === "+" || type.includes("*") ? val : type; + } + } + + return false; +} diff --git a/bundler/tests/.cache/deno/d63ac6803f6683601e225a1db29edc8524f79c45.ts b/bundler/tests/.cache/deno/d63ac6803f6683601e225a1db29edc8524f79c45.ts new file mode 100644 index 00000000000..53a84652706 --- /dev/null +++ b/bundler/tests/.cache/deno/d63ac6803f6683601e225a1db29edc8524f79c45.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/primitives.ts + + +import { createHash } from "https://deno.land/std/hash/mod.ts"; + +type HashFunction = (b: Uint8Array) => Uint8Array; +type HashAlgorithm = "sha1" | "sha256"; + +/** + * I2OSP converts a nonnegative integer to an octet string of a specified length. + * @param x nonnegative integer to be converted + * @param length intended length of the resulting octet string + */ +export function i2osp(x: bigint, length: number): Uint8Array { + const t = new Uint8Array(length); + for(let i = length - 1; i >= 0; i--) { + if (x === 0n) break; + t[i] = Number(x & 255n); + x = x >> 8n; + } + + return t; +} + +export function os2ip(m: Uint8Array): bigint { + let n = 0n; + for(const c of m) n = (n << 8n) + BigInt(c); + return n; +} + +/** + * MGF1 is a Mask Generation Function based on a hash function. + * https://tools.ietf.org/html/rfc3447#appendix-B.2.1 + * + * @param seed seed from which mask is generated, an octet string + * @param length intended length in octets of the mask + * @param hash Hash function + */ +export function mgf1(seed: Uint8Array, length: number, hash: HashFunction | HashAlgorithm): Uint8Array { + let counter = 0n; + let output: number[] = []; + + while(output.length < length) { + let h; + const c = i2osp(counter, 4); + + if (typeof hash === 'function') { + h = hash(new Uint8Array([...seed, ...c])) + } else { + h = new Uint8Array(createHash(hash).update(new Uint8Array([...seed, ...c])).digest()); + } + + output = [...output, ...h]; + counter++; + } + + return new Uint8Array(output.slice(0, length)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d65acf04f42400a5376a539be8b8d1e31160a2b9.ts b/bundler/tests/.cache/deno/d65acf04f42400a5376a539be8b8d1e31160a2b9.ts new file mode 100644 index 00000000000..5b63c395505 --- /dev/null +++ b/bundler/tests/.cache/deno/d65acf04f42400a5376a539be8b8d1e31160a2b9.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/tokenKind.js + + +/** + * An exported enum describing the different kinds of tokens that the + * lexer emits. + */ +export const TokenKind = Object.freeze({ + SOF: '', + EOF: '', + BANG: '!', + DOLLAR: '$', + AMP: '&', + PAREN_L: '(', + PAREN_R: ')', + SPREAD: '...', + COLON: ':', + EQUALS: '=', + AT: '@', + BRACKET_L: '[', + BRACKET_R: ']', + BRACE_L: '{', + PIPE: '|', + BRACE_R: '}', + NAME: 'Name', + INT: 'Int', + FLOAT: 'Float', + STRING: 'String', + BLOCK_STRING: 'BlockString', + COMMENT: 'Comment' +}); +/** + * The enum type representing the token kinds values. + */ \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d672dca036a1a85042ae087924f4de32d7effcc6.ts b/bundler/tests/.cache/deno/d672dca036a1a85042ae087924f4de32d7effcc6.ts new file mode 100644 index 00000000000..c15b684e93e --- /dev/null +++ b/bundler/tests/.cache/deno/d672dca036a1a85042ae087924f4de32d7effcc6.ts @@ -0,0 +1,194 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/execution/values.js + + +import find from '../polyfills/find.js'; +import keyMap from '../jsutils/keyMap.js'; +import inspect from '../jsutils/inspect.js'; +import printPathArray from '../jsutils/printPathArray.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { Kind } from '../language/kinds.js'; +import { print } from '../language/printer.js'; +import { isInputType, isNonNullType } from '../type/definition.js'; +import { typeFromAST } from '../utilities/typeFromAST.js'; +import { valueFromAST } from '../utilities/valueFromAST.js'; +import { coerceInputValue } from '../utilities/coerceInputValue.js'; + +/** + * Prepares an object map of variableValues of the correct type based on the + * provided variable definitions and arbitrary input. If the input cannot be + * parsed to match the variable definitions, a GraphQLError will be thrown. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + * + * @internal + */ +export function getVariableValues(schema, varDefNodes, inputs, options) { + const errors = []; + const maxErrors = options?.maxErrors; + + try { + const coerced = coerceVariableValues(schema, varDefNodes, inputs, error => { + if (maxErrors != null && errors.length >= maxErrors) { + throw new GraphQLError('Too many errors processing variables, error limit reached. Execution aborted.'); + } + + errors.push(error); + }); + + if (errors.length === 0) { + return { + coerced + }; + } + } catch (error) { + errors.push(error); + } + + return { + errors + }; +} + +function coerceVariableValues(schema, varDefNodes, inputs, onError) { + const coercedValues = {}; + + for (const varDefNode of varDefNodes) { + const varName = varDefNode.variable.name.value; + const varType = typeFromAST(schema, varDefNode.type); + + if (!isInputType(varType)) { + // Must use input types for variables. This should be caught during + // validation, however is checked again here for safety. + const varTypeStr = print(varDefNode.type); + onError(new GraphQLError(`Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`, varDefNode.type)); + continue; + } + + if (!hasOwnProperty(inputs, varName)) { + if (varDefNode.defaultValue) { + coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType); + } else if (isNonNullType(varType)) { + const varTypeStr = inspect(varType); + onError(new GraphQLError(`Variable "$${varName}" of required type "${varTypeStr}" was not provided.`, varDefNode)); + } + + continue; + } + + const value = inputs[varName]; + + if (value === null && isNonNullType(varType)) { + const varTypeStr = inspect(varType); + onError(new GraphQLError(`Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`, varDefNode)); + continue; + } + + coercedValues[varName] = coerceInputValue(value, varType, (path, invalidValue, error) => { + let prefix = `Variable "$${varName}" got invalid value ` + inspect(invalidValue); + + if (path.length > 0) { + prefix += ` at "${varName}${printPathArray(path)}"`; + } + + onError(new GraphQLError(prefix + '; ' + error.message, varDefNode, undefined, undefined, undefined, error.originalError)); + }); + } + + return coercedValues; +} +/** + * Prepares an object map of argument values given a list of argument + * definitions and list of argument AST nodes. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + * + * @internal + */ + + +export function getArgumentValues(def, node, variableValues) { + const coercedValues = {}; + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + const argumentNodes = node.arguments ?? []; + const argNodeMap = keyMap(argumentNodes, arg => arg.name.value); + + for (const argDef of def.args) { + const name = argDef.name; + const argType = argDef.type; + const argumentNode = argNodeMap[name]; + + if (!argumentNode) { + if (argDef.defaultValue !== undefined) { + coercedValues[name] = argDef.defaultValue; + } else if (isNonNullType(argType)) { + throw new GraphQLError(`Argument "${name}" of required type "${inspect(argType)}" ` + 'was not provided.', node); + } + + continue; + } + + const valueNode = argumentNode.value; + let isNull = valueNode.kind === Kind.NULL; + + if (valueNode.kind === Kind.VARIABLE) { + const variableName = valueNode.name.value; + + if (variableValues == null || !hasOwnProperty(variableValues, variableName)) { + if (argDef.defaultValue !== undefined) { + coercedValues[name] = argDef.defaultValue; + } else if (isNonNullType(argType)) { + throw new GraphQLError(`Argument "${name}" of required type "${inspect(argType)}" ` + `was provided the variable "$${variableName}" which was not provided a runtime value.`, valueNode); + } + + continue; + } + + isNull = variableValues[variableName] == null; + } + + if (isNull && isNonNullType(argType)) { + throw new GraphQLError(`Argument "${name}" of non-null type "${inspect(argType)}" ` + 'must not be null.', valueNode); + } + + const coercedValue = valueFromAST(valueNode, argType, variableValues); + + if (coercedValue === undefined) { + // Note: ValuesOfCorrectTypeRule validation should catch this before + // execution. This is a runtime check to ensure execution does not + // continue with an invalid argument value. + throw new GraphQLError(`Argument "${name}" has invalid value ${print(valueNode)}.`, valueNode); + } + + coercedValues[name] = coercedValue; + } + + return coercedValues; +} +/** + * Prepares an object map of argument values given a directive definition + * and a AST node which may contain directives. Optionally also accepts a map + * of variable values. + * + * If the directive does not exist on the node, returns undefined. + * + * Note: The returned value is a plain Object with a prototype, since it is + * exposed to user code. Care should be taken to not pull values from the + * Object prototype. + */ + +export function getDirectiveValues(directiveDef, node, variableValues) { + const directiveNode = node.directives && find(node.directives, directive => directive.name.value === directiveDef.name); + + if (directiveNode) { + return getArgumentValues(directiveDef, directiveNode, variableValues); + } +} + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d689cd691e6cbe681e9a187f0a719fe4fdf83719.ts b/bundler/tests/.cache/deno/d689cd691e6cbe681e9a187f0a719fe4fdf83719.ts new file mode 100644 index 00000000000..98d7adcc977 --- /dev/null +++ b/bundler/tests/.cache/deno/d689cd691e6cbe681e9a187f0a719fe4fdf83719.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/ScalarLeafsRule.js + + +import inspect from '../../jsutils/inspect.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { getNamedType, isLeafType } from '../../type/definition.js'; + +/** + * Scalar leafs + * + * A GraphQL document is valid only if all leaf fields (fields without + * sub selections) are of scalar or enum types. + */ +export function ScalarLeafsRule(context) { + return { + Field(node) { + const type = context.getType(); + const selectionSet = node.selectionSet; + + if (type) { + if (isLeafType(getNamedType(type))) { + if (selectionSet) { + const fieldName = node.name.value; + const typeStr = inspect(type); + context.reportError(new GraphQLError(`Field "${fieldName}" must not have a selection since type "${typeStr}" has no subfields.`, selectionSet)); + } + } else if (!selectionSet) { + const fieldName = node.name.value; + const typeStr = inspect(type); + context.reportError(new GraphQLError(`Field "${fieldName}" of type "${typeStr}" must have a selection of subfields. Did you mean "${fieldName} { ... }"?`, node)); + } + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d6a65c32e97394852b9a0acfbd1a9dd2c516ab00.ts b/bundler/tests/.cache/deno/d6a65c32e97394852b9a0acfbd1a9dd2c516ab00.ts new file mode 100644 index 00000000000..181bf35951a --- /dev/null +++ b/bundler/tests/.cache/deno/d6a65c32e97394852b9a0acfbd1a9dd2c516ab00.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mergeDeepLeft.js + + +import _curry2 from './internal/_curry2.js'; +import mergeDeepWithKey from './mergeDeepWithKey.js'; + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the first object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} + */ +var mergeDeepLeft = _curry2(function mergeDeepLeft(lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return lVal; + }, lObj, rObj); +}); +export default mergeDeepLeft; diff --git a/bundler/tests/.cache/deno/d706f02c673b871e257a62af5e9562e5c87ba103.ts b/bundler/tests/.cache/deno/d706f02c673b871e257a62af5e9562e5c87ba103.ts new file mode 100644 index 00000000000..b298930f875 --- /dev/null +++ b/bundler/tests/.cache/deno/d706f02c673b871e257a62af5e9562e5c87ba103.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/update.js + + +import { mongobj, matches } from '../../deps.ts'; +import { ReadFileStream, WriteFileStream } from '../storage.ts'; + +export default async (filename ,query, operators, projection) => { + const readStream = new ReadFileStream(filename); + const writeStream = new WriteFileStream(filename); + let updated = []; + query = query || {}; + return new Promise((resolve, reject) => { + readStream.on('document', obj => { + if (matches(query, obj)) { + mongobj.update(obj, operators); + updated.push(obj) + } + writeStream.emit("write", obj) + }) + readStream.on("end", () => { + writeStream.emit("end"); + }) + writeStream.on("close", () => { + return resolve(updated) + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d70d4a0c36d27b43eba85df18c90649a7eb11fc1.ts b/bundler/tests/.cache/deno/d70d4a0c36d27b43eba85df18c90649a7eb11fc1.ts new file mode 100644 index 00000000000..ff41959e249 --- /dev/null +++ b/bundler/tests/.cache/deno/d70d4a0c36d27b43eba85df18c90649a7eb11fc1.ts @@ -0,0 +1,63 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/map.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _map from './internal/_map.js'; +import _reduce from './internal/_reduce.js'; +import _xmap from './internal/_xmap.js'; +import curryN from './curryN.js'; +import keys from './keys.js'; + + +/** + * Takes a function and + * a [functor](https://github.com/fantasyland/fantasy-land#functor), + * applies the function to each of the functor's values, and returns + * a functor of the same shape. + * + * Ramda provides suitable `map` implementations for `Array` and `Object`, + * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`. + * + * Dispatches to the `map` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * Also treats functions as functors and will compose them together. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => (a -> b) -> f a -> f b + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {Array} list The list to be iterated over. + * @return {Array} The new list. + * @see R.transduce, R.addIndex, R.pluck, R.project + * @example + * + * const double = x => x * 2; + * + * R.map(double, [1, 2, 3]); //=> [2, 4, 6] + * + * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} + * @symb R.map(f, [a, b]) = [f(a), f(b)] + * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) } + * @symb R.map(f, functor_o) = functor_o.map(f) + */ +var map = _curry2(_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) { + switch (Object.prototype.toString.call(functor)) { + case '[object Function]': + return curryN(functor.length, function() { + return fn.call(this, functor.apply(this, arguments)); + }); + case '[object Object]': + return _reduce(function(acc, key) { + acc[key] = fn(functor[key]); + return acc; + }, {}, keys(functor)); + default: + return _map(fn, functor); + } +})); +export default map; diff --git a/bundler/tests/.cache/deno/d71ad67b1292c7fef31a0262d6031f68234c2d54.ts b/bundler/tests/.cache/deno/d71ad67b1292c7fef31a0262d6031f68234c2d54.ts new file mode 100644 index 00000000000..ac47a33c4be --- /dev/null +++ b/bundler/tests/.cache/deno/d71ad67b1292c7fef31a0262d6031f68234c2d54.ts @@ -0,0 +1,212 @@ +// Loaded from https://deno.land/std/log/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { Logger } from "./logger.ts"; +import type { GenericFunction } from "./logger.ts"; +import { + BaseHandler, + ConsoleHandler, + FileHandler, + RotatingFileHandler, + WriterHandler, +} from "./handlers.ts"; +import { assert } from "../_util/assert.ts"; +import type { LevelName } from "./levels.ts"; + +export { LogLevels } from "./levels.ts"; +export type { LevelName } from "./levels.ts"; +export { Logger } from "./logger.ts"; + +export class LoggerConfig { + level?: LevelName; + handlers?: string[]; +} + +export interface LogConfig { + handlers?: { + [name: string]: BaseHandler; + }; + loggers?: { + [name: string]: LoggerConfig; + }; +} + +const DEFAULT_LEVEL = "INFO"; +const DEFAULT_CONFIG: LogConfig = { + handlers: { + default: new ConsoleHandler(DEFAULT_LEVEL), + }, + + loggers: { + default: { + level: DEFAULT_LEVEL, + handlers: ["default"], + }, + }, +}; + +const state = { + handlers: new Map(), + loggers: new Map(), + config: DEFAULT_CONFIG, +}; + +export const handlers = { + BaseHandler, + ConsoleHandler, + WriterHandler, + FileHandler, + RotatingFileHandler, +}; + +/** Get a logger instance. If not specified `name`, get the default logger. */ +export function getLogger(name?: string): Logger { + if (!name) { + const d = state.loggers.get("default"); + assert( + d != null, + `"default" logger must be set for getting logger without name`, + ); + return d; + } + const result = state.loggers.get(name); + if (!result) { + const logger = new Logger(name, "NOTSET", { handlers: [] }); + state.loggers.set(name, logger); + return logger; + } + return result; +} + +/** Log with debug level, using default logger. */ +export function debug(msg: () => T, ...args: unknown[]): T | undefined; +export function debug( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function debug( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").debug(msg, ...args); + } + return getLogger("default").debug(msg, ...args); +} + +/** Log with info level, using default logger. */ +export function info(msg: () => T, ...args: unknown[]): T | undefined; +export function info( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function info( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").info(msg, ...args); + } + return getLogger("default").info(msg, ...args); +} + +/** Log with warning level, using default logger. */ +export function warning(msg: () => T, ...args: unknown[]): T | undefined; +export function warning( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function warning( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").warning(msg, ...args); + } + return getLogger("default").warning(msg, ...args); +} + +/** Log with error level, using default logger. */ +export function error(msg: () => T, ...args: unknown[]): T | undefined; +export function error( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function error( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").error(msg, ...args); + } + return getLogger("default").error(msg, ...args); +} + +/** Log with critical level, using default logger. */ +export function critical(msg: () => T, ...args: unknown[]): T | undefined; +export function critical( + msg: T extends GenericFunction ? never : T, + ...args: unknown[] +): T; +export function critical( + msg: (T extends GenericFunction ? never : T) | (() => T), + ...args: unknown[] +): T | undefined { + // Assist TS compiler with pass-through generic type + if (msg instanceof Function) { + return getLogger("default").critical(msg, ...args); + } + return getLogger("default").critical(msg, ...args); +} + +/** Setup logger config. */ +export async function setup(config: LogConfig): Promise { + state.config = { + handlers: { ...DEFAULT_CONFIG.handlers, ...config.handlers }, + loggers: { ...DEFAULT_CONFIG.loggers, ...config.loggers }, + }; + + // tear down existing handlers + state.handlers.forEach((handler): void => { + handler.destroy(); + }); + state.handlers.clear(); + + // setup handlers + const handlers = state.config.handlers || {}; + + for (const handlerName in handlers) { + const handler = handlers[handlerName]; + await handler.setup(); + state.handlers.set(handlerName, handler); + } + + // remove existing loggers + state.loggers.clear(); + + // setup loggers + const loggers = state.config.loggers || {}; + for (const loggerName in loggers) { + const loggerConfig = loggers[loggerName]; + const handlerNames = loggerConfig.handlers || []; + const handlers: BaseHandler[] = []; + + handlerNames.forEach((handlerName): void => { + const handler = state.handlers.get(handlerName); + if (handler) { + handlers.push(handler); + } + }); + + const levelName = loggerConfig.level || DEFAULT_LEVEL; + const logger = new Logger(loggerName, levelName, { handlers: handlers }); + state.loggers.set(loggerName, logger); + } +} + +await setup(DEFAULT_CONFIG); diff --git a/bundler/tests/.cache/deno/d788148ec19b2ebf1fcefac5e7cef768245b609a.ts b/bundler/tests/.cache/deno/d788148ec19b2ebf1fcefac5e7cef768245b609a.ts new file mode 100644 index 00000000000..a43c1667a9c --- /dev/null +++ b/bundler/tests/.cache/deno/d788148ec19b2ebf1fcefac5e7cef768245b609a.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/identity.js + + +import _curry1 from './internal/_curry1.js'; +import _identity from './internal/_identity.js'; + + +/** + * A function that does nothing but return the parameter supplied to it. Good + * as a default or placeholder function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> a + * @param {*} x The value to return. + * @return {*} The input value, `x`. + * @example + * + * R.identity(1); //=> 1 + * + * const obj = {}; + * R.identity(obj) === obj; //=> true + * @symb R.identity(a) = a + */ +var identity = _curry1(_identity); +export default identity; diff --git a/bundler/tests/.cache/deno/d7ad744d28ef0a37229c636201322fd02edcae4d.ts b/bundler/tests/.cache/deno/d7ad744d28ef0a37229c636201322fd02edcae4d.ts new file mode 100644 index 00000000000..bcea3c72a45 --- /dev/null +++ b/bundler/tests/.cache/deno/d7ad744d28ef0a37229c636201322fd02edcae4d.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/x/case/lowerCase.ts + + +/** + * via: https://github.com/blakeembrey/lower-case + */ + +import { LanguageSpecific } from "./types.ts"; + +/** + * Special language-specific overrides. + * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt + */ +const LANGUAGES: LanguageSpecific = { + tr: { + regexp: /\u0130|\u0049|\u0049\u0307/g, + map: { + İ: "\u0069", + I: "\u0131", + İ: "\u0069", + }, + }, + az: { + regexp: /[\u0130]/g, + map: { + İ: "\u0069", + I: "\u0131", + İ: "\u0069", + }, + }, + lt: { + regexp: /[\u0049\u004A\u012E\u00CC\u00CD\u0128]/g, + map: { + I: "\u0069\u0307", + J: "\u006A\u0307", + Į: "\u012F\u0307", + Ì: "\u0069\u0307\u0300", + Í: "\u0069\u0307\u0301", + Ĩ: "\u0069\u0307\u0303", + }, + }, +}; + +/** + * Lowercase a string. + * + * @param {String} str + * @return {String} + */ +export default function (str: string, locale?: string): string { + str = str == null ? "" : String(str); + + if (!locale) { + return str.toLowerCase(); + } + + const lang = LANGUAGES[locale]; + + if (lang) { + str = str.replace(lang.regexp, (m: string): string => lang.map[m]); + } + + return str.toLowerCase(); +} diff --git a/bundler/tests/.cache/deno/d802ec9a09e10f17e42d7e1abc40374079df674c.ts b/bundler/tests/.cache/deno/d802ec9a09e10f17e42d7e1abc40374079df674c.ts new file mode 100644 index 00000000000..c9223bc9008 --- /dev/null +++ b/bundler/tests/.cache/deno/d802ec9a09e10f17e42d7e1abc40374079df674c.ts @@ -0,0 +1,55 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mapAccumRight.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * The `mapAccumRight` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from right to left, and returning a final value of this + * accumulator together with the new list. + * + * Similar to [`mapAccum`](#mapAccum), except moves through the input list from + * the right to the left. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccum + * @example + * + * const digits = ['1', '2', '3', '4']; + * const appender = (a, b) => [b + a, b + a]; + * + * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']] + * @symb R.mapAccumRight(f, a, [b, c, d]) = [ + * f(f(f(a, d)[0], c)[0], b)[0], + * [ + * f(a, d)[1], + * f(f(a, d)[0], c)[1], + * f(f(f(a, d)[0], c)[0], b)[1] + * ] + * ] + */ +var mapAccumRight = _curry3(function mapAccumRight(fn, acc, list) { + var idx = list.length - 1; + var result = []; + var tuple = [acc]; + while (idx >= 0) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx -= 1; + } + return [tuple[0], result]; +}); +export default mapAccumRight; diff --git a/bundler/tests/.cache/deno/d8b1ca56d7a7bd15c58997b01e24112b0fe9baee.ts b/bundler/tests/.cache/deno/d8b1ca56d7a7bd15c58997b01e24112b0fe9baee.ts new file mode 100644 index 00000000000..dc20784ffc5 --- /dev/null +++ b/bundler/tests/.cache/deno/d8b1ca56d7a7bd15c58997b01e24112b0fe9baee.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/uniqWith.js + + +import _includesWith from './internal/_includesWith.js'; +import _curry2 from './internal/_curry2.js'; + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied predicate to + * two list elements. Prefers the first item if two items compare equal based + * on the predicate. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category List + * @sig ((a, a) -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * const strEq = R.eqBy(String); + * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2] + * R.uniqWith(strEq)([{}, {}]); //=> [{}] + * R.uniqWith(strEq)([1, '1', 1]); //=> [1] + * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] + */ +var uniqWith = _curry2(function uniqWith(pred, list) { + var idx = 0; + var len = list.length; + var result = []; + var item; + while (idx < len) { + item = list[idx]; + if (!_includesWith(pred, item, result)) { + result[result.length] = item; + } + idx += 1; + } + return result; +}); +export default uniqWith; diff --git a/bundler/tests/.cache/deno/d8b6994eee1b6ba8a74a7b0461d930066a48fbf1.ts b/bundler/tests/.cache/deno/d8b6994eee1b6ba8a74a7b0461d930066a48fbf1.ts new file mode 100644 index 00000000000..8094a7710ea --- /dev/null +++ b/bundler/tests/.cache/deno/d8b6994eee1b6ba8a74a7b0461d930066a48fbf1.ts @@ -0,0 +1,274 @@ +// Loaded from https://deno.land/std/hash/_wasm/wasm.js + + +// deno-lint-ignore-file +//deno-fmt-ignore-file +//deno-lint-ignore-file +import * as base64 from "../../encoding/base64.ts"; +export const source = base64.decode( + "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HiADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpB/IXAACEEQQAMEQsgAEHYgcAARwRAIAAoAABB89CFiwNHDRALIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB4ABBCBChASIDRQ0XIANCADcDACADQQA2AhwgAyACKQPwAjcDICADQfiXwAApAwA3AwggA0EQakGAmMAAKQMANwMAIANBGGpBiJjAACgCADYCACADQShqIAgpAwA3AwAgA0EwaiAHKQMANwMAIANBOGogBikDADcDACADQUBrIAopAwA3AwAgA0HIAGogCSkDADcDACADQdAAaiAFKQMANwMAIANB2ABqIAQpAwA3AwBB3IHAACEEQQAMEAsgAEGAgsAARg0FIABBgILAAEEGEIMBRQ0FIABBrILAAEYNBiAAQayCwABBBhCDAUUNBiAAQdiCwABGDQcgAEHYgsAAQQYQgwFFDQcgAEGEg8AARwRAIABBhIPAAEEGEIMBDQ8LIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNGCADQgA3AwggA0IANwMAIANBADYCUCADQZCZwAApAwA3AxAgA0EYakGYmcAAKQMANwMAIANBIGpBoJnAACkDADcDACADQShqQaiZwAApAwA3AwAgA0EwakGwmcAAKQMANwMAIANBOGpBuJnAACkDADcDACADQUBrQcCZwAApAwA3AwAgA0HIAGpByJnAACkDADcDACADQdQAaiACQfACakGAARCLARpBjIPAACEEQQAMDwsgAEGwg8AARg0HIAApAABC89CFm9PFjJk0UQ0HIABB3IPAAEYNCCAAKQAAQvPQhZvTxcyaNlENCCAAQYiEwABGDQkgACkAAELz0IWb0+WMnDRRDQkgAEG0hMAARwRAIAApAABC89CFm9OlzZgyUg0OCyACQZgBakEAQcgBEJEBGiACQf4CakIANwEAIAJBhgNqQgA3AQAgAkGOA2pCADcBACACQZYDakIANwEAIAJBngNqQgA3AQAgAkGmA2pCADcBACACQa4DakIANwEAIAJBtgNqQQA2AQAgAkG6A2pBADsBACACQQA7AfQCIAJCADcB9gIgAkHIADYC8AIgAkGIBGogAkHwAmpBzAAQiwEaIAJBCGogAkGIBGpBBHJByAAQiwEaQZgCQQgQoQEiA0UNGyADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpBvITAACEEQQAMDgsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBEDYCiAQgAkEAOwGMBCACQQA2AY4EIAJBqAFqIgMgAkGYBGoiBCgCADYCACACQaABaiIJIAJBkARqIgUpAwA3AwAgAkHoAmoiBiACQaQBaikCADcDACACIAIpA4gENwOYASACIAIpApwBNwPgAiACQcABaiIHQgA3AwAgAkG4AWoiCEIANwMAIAJBsAFqIg1CADcDACADQgA3AwAgCUIANwMAIAJCADcDmAEgAkH6AmpCADcBACACQYIDakEAOwEAIAJBEDYC8AIgAkEAOwH0AiACQQA2AfYCIAQgAkGAA2ooAgA2AgAgBSACQfgCaiIKKQMANwMAIAJBEGoiCyACQZQEaikCADcDACACIAIpA/ACNwOIBCACIAIpAowENwMIIAJB0AFqIgwgCykDADcDACACIAIpAwg3A8gBIAogBikDADcDACACIAIpA+ACNwPwAiACQcAEaiIGIAwpAwA3AwAgAkG4BGoiCyACKQPIATcDACACQbAEaiIMIAcpAwA3AwAgAkGoBGoiByAIKQMANwMAIAJBoARqIgggDSkDADcDACAEIAMpAwA3AwAgBSAJKQMANwMAIAIgAikDmAE3A4gEQdQAQQQQoQEiA0UNDiADQQA2AgAgAyACKQPwAjcCBCADIAIpA4gENwIUIANBDGogCikDADcCACADQRxqIAUpAwA3AgAgA0EkaiAEKQMANwIAIANBLGogCCkDADcCACADQTRqIAcpAwA3AgAgA0E8aiAMKQMANwIAIANBxABqIAspAwA3AgAgA0HMAGogBikDADcCAEGEgMAAIQRBAAwNCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEyADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQdQAakHIl8AAKQIANwIAIANBwJfAACkCADcCTEGsgMAAIQRBAAwMCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEiADQgA3AwAgA0EANgIcIAMgAikD8AI3AyAgA0H4l8AAKQMANwMIIANBEGpBgJjAACkDADcDACADQRhqQYiYwAAoAgA2AgAgA0EoaiAIKQMANwMAIANBMGogBykDADcDACADQThqIAYpAwA3AwAgA0FAayAKKQMANwMAIANByABqIAkpAwA3AwAgA0HQAGogBSkDADcDACADQdgAaiAEKQMANwMAQYSBwAAhBEEADAsLIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB+ABBCBChASIDRQ0MIANCADcDACADQQA2AjAgAyACKQPwAjcCNCADQdCXwAApAwA3AwggA0EQakHYl8AAKQMANwMAIANBGGpB4JfAACkDADcDACADQSBqQeiXwAApAwA3AwAgA0EoakHwl8AAKQMANwMAIANBPGogCCkDADcCACADQcQAaiAHKQMANwIAIANBzABqIAYpAwA3AgAgA0HUAGogCikDADcCACADQdwAaiAJKQMANwIAIANB5ABqIAUpAwA3AgAgA0HsAGogBCkDADcCAEG0gcAAIQRBAAwKCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQfAAQQgQoQEiA0UNESADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQeQAakGkmMAAKQIANwIAIANB3ABqQZyYwAApAgA3AgAgA0HUAGpBlJjAACkCADcCACADQYyYwAApAgA3AkxBiILAACEEQQAMCQsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBnARqQgA3AgAgAkGkBGpCADcCACACQawEakIANwIAIAJBtARqQgA3AgAgAkG8BGpCADcCACACQcQEakEAOgAAIAJBxQRqQQA2AAAgAkHJBGpBADsAACACQcsEakEAOgAAIAJBwAA2AogEIAJBADsBjAQgAkEANgGOBCACQZgBaiACQYgEakHEABCLARogAkGoA2oiBCACQdQBaikCADcDACACQaADaiIFIAJBzAFqKQIANwMAIAJBmANqIgkgAkHEAWopAgA3AwAgAkGQA2oiCiACQbwBaikCADcDACACQYgDaiIGIAJBtAFqKQIANwMAIAJBgANqIgcgAkGsAWopAgA3AwAgAkH4AmoiCCACQaQBaikCADcDACACIAIpApwBNwPwAkHwAEEIEKEBIgNFDRAgA0EANgIIIANCADcDACADIAIpA/ACNwIMIANBFGogCCkDADcCACADQRxqIAcpAwA3AgAgA0EkaiAGKQMANwIAIANBLGogCikDADcCACADQTRqIAkpAwA3AgAgA0E8aiAFKQMANwIAIANBxABqIAQpAwA3AgAgA0HkAGpBxJjAACkCADcCACADQdwAakG8mMAAKQIANwIAIANB1ABqQbSYwAApAgA3AgAgA0GsmMAAKQIANwJMQbSCwAAhBEEADAgLIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNECADQgA3AwggA0IANwMAIANBADYCUCADQdCYwAApAwA3AxAgA0EYakHYmMAAKQMANwMAIANBIGpB4JjAACkDADcDACADQShqQeiYwAApAwA3AwAgA0EwakHwmMAAKQMANwMAIANBOGpB+JjAACkDADcDACADQUBrQYCZwAApAwA3AwAgA0HIAGpBiJnAACkDADcDACADQdQAaiACQfACakGAARCLARpB4ILAACEEQQAMBwsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GUAUcNAAsgAkGIBGogAkHwAmpBlAEQiwEaIAJBCGogAkGIBGpBBHJBkAEQiwEaQeACQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGQARCLARpBuIPAACEEQQAMBgsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GMAUcNAAsgAkGIBGogAkHwAmpBjAEQiwEaIAJBCGogAkGIBGpBBHJBiAEQiwEaQdgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGIARCLARpB5IPAACEEQQAMBQsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0HsAEcNAAsgAkGIBGogAkHwAmpB7AAQiwEaIAJBCGogAkGIBGpBBHJB6AAQiwEaQbgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHoABCLARpBkITAACEEQQAMBAsgAkGYAWpBAEHIARCRARogAkEA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aiIBIAIgBHNzakHglu21f2pBEHcgAWoiAyABcyACIApqIAEgBHMgA3NqQfD4/vV7akEXdyADaiICc2pBxv3txAJqQQR3IAJqIgRqIAMgC2ogASATaiACIANzIARzakH6z4TVfmpBC3cgBGoiASACIARzc2pBheG8p31qQRB3IAFqIgMgAXMgAiAGaiABIARzIANzakGFuqAkakEXdyADaiICc2pBuaDTzn1qQQR3IAJqIgRqIAIgDGogASAJaiACIANzIARzakHls+62fmpBC3cgBGoiASAEcyADIBJqIAIgBHMgAXNqQfj5if0BakEQdyABaiICc2pB5ayxpXxqQRd3IAJqIgMgAUF/c3IgAnNqQcTEpKF/akEGdyADaiIEaiADIBVqIAIgCGogASAOaiAEIAJBf3NyIANzakGX/6uZBGpBCncgBGoiASADQX9zciAEc2pBp8fQ3HpqQQ93IAFqIgIgBEF/c3IgAXNqQbnAzmRqQRV3IAJqIgMgAUF/c3IgAnNqQcOz7aoGakEGdyADaiIEaiADIBRqIAIgCmogASALaiAEIAJBf3NyIANzakGSmbP4eGpBCncgBGoiASADQX9zciAEc2pB/ei/f2pBD3cgAWoiAiAEQX9zciABc2pB0buRrHhqQRV3IAJqIgMgAUF/c3IgAnNqQc/8of0GakEGdyADaiIEaiADIBFqIAIgBmogASASaiAEIAJBf3NyIANzakHgzbNxakEKdyAEaiIBIANBf3NyIARzakGUhoWYempBD3cgAWoiAiAEQX9zciABc2pBoaOg8ARqQRV3IAJqIgMgAUF/c3IgAnNqQYL9zbp/akEGdyADaiIEIAAoAgBqNgIAIAAgASAQaiAEIAJBf3NyIANzakG15Ovpe2pBCncgBGoiASAAKAIMajYCDCAAIAIgDGogASADQX9zciAEc2pBu6Xf1gJqQQ93IAFqIgIgACgCCGo2AgggACACIAAoAgRqIAMgD2ogAiAEQX9zciABc2pBkaeb3H5qQRV3ajYCBAvcDwEFfyAAIAEtAAAiAzoAECAAIAEtAAEiAjoAESAAIAEtAAIiBDoAEiAAIAEtAAMiBToAEyAAIAEtAAQiBjoAFCAAIAMgAC0AAHM6ACAgACACIAAtAAFzOgAhIAAgBCAALQACczoAIiAAIAUgAC0AA3M6ACMgACAGIAAt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BCARIAEgA0F/c3EgAyAEcXIgAmpqQQd3IgVBf3NxIAMgBXFyIAFqakELdyIBIAVyIBIgBCABIAVxIgQgAyABQX9zcXJqakETdyICcSAEcmogFGpBmfOJ1AVqQQN3IgMgByABIAUgAyABIAJycSABIAJxcmogDWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAJIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogDGpBmfOJ1AVqQQN3IgMgDyABIAQgAyABIAJycSABIAJxcmogFWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciARIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogC2pBmfOJ1AVqQQN3IgMgCiABIAYgBCADIAEgAnJxIAEgAnFyampBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAIIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogE2pBmfOJ1AVqQQN3IgMgEiACIBAgASAOIAQgAyABIAJycSABIAJxcmpqQZnzidQFakEFdyIEIAIgA3JxIAIgA3FyampBmfOJ1AVqQQl3IgUgAyAEcnEgAyAEcXJqakGZ84nUBWpBDXciAyAFcyICIARzaiAUakGh1+f2BmpBA3ciASAJIAMgASAHIAQgASACc2pqQaHX5/YGakEJdyICcyAFIA1qIAEgA3MgAnNqQaHX5/YGakELdyIEc2pqQaHX5/YGakEPdyIDIARzIgUgAnNqIAtqQaHX5/YGakEDdyIBIAggAyABIAogAiABIAVzampBodfn9gZqQQl3IgJzIAQgBmogASADcyACc2pBodfn9gZqQQt3IgRzampBodfn9gZqQQ93IgMgBHMiBSACc2ogDGpBodfn9gZqQQN3IgEgESADIAEgDyACIAEgBXNqakGh1+f2BmpBCXciAnMgBCAVaiABIANzIAJzakGh1+f2BmpBC3ciBHNqakGh1+f2BmpBD3ciAyAEcyIFIAJzaiATakGh1+f2BmpBA3ciASAAKAIAajYCACAAIBAgAiABIAVzampBodfn9gZqQQl3IgIgACgCDGo2AgwgACAEIA5qIAEgA3MgAnNqQaHX5/YGakELdyIEIAAoAghqNgIIIAAgACgCBCASIAMgASACcyAEc2pqQaHX5/YGakEPd2o2AgQLowgCAX8tfiAAKQPAASEQIAApA5gBIRwgACkDcCERIAApA0ghEiAAKQMgIR0gACkDuAEhHiAAKQOQASEfIAApA2ghICAAKQNAIQ0gACkDGCEIIAApA7ABISEgACkDiAEhEyAAKQNgISIgACkDOCEJIAApAxAhBSAAKQOoASEOIAApA4ABISMgACkDWCEUIAApAzAhCiAAKQMIIQQgACkDoAEhDyAAKQN4IRUgACkDUCEkIAApAyghCyAAKQMAIQxBwH4hAQNAIA8gFSAkIAsgDIWFhYUiAiAhIBMgIiAFIAmFhYWFIgNCAYmFIgYgCoUgECAeIB8gICAIIA2FhYWFIgcgAkIBiYUiAoUhLiAGIA6FQgKJIhYgDSAQIBwgESASIB2FhYWFIg1CAYkgA4UiA4VCN4kiFyAFIA4gIyAUIAQgCoWFhYUiDiAHQgGJhSIFhUI+iSIYQn+Fg4UhECAXIA0gDkIBiYUiByAVhUIpiSIZIAIgEYVCJ4kiJUJ/hYOFIQ4gBiAUhUIKiSIaIAMgHoVCOIkiGyAFIBOFQg+JIiZCf4WDhSETIAIgHYVCG4kiJyAaIAcgC4VCJIkiKEJ/hYOFIRUgByAPhUISiSIPIAUgCYVCBokiKSAEIAaFQgGJIipCf4WDhSERIAIgHIVCCIkiKyADICCFQhmJIixCf4WDICmFIRQgBSAhhUI9iSIJIAIgEoVCFIkiBCADIAiFQhyJIghCf4WDhSESIAYgI4VCLYkiCiAIIAlCf4WDhSENIAcgJIVCA4kiCyAJIApCf4WDhSEJIAogC0J/hYMgBIUhCiAIIAsgBEJ/hYOFIQsgAyAfhUIViSIEIAcgDIUiBiAuQg6JIgJCf4WDhSEIIAUgIoVCK4kiDCACIARCf4WDhSEFQiyJIgMgBCAMQn+Fg4UhBCABQciUwABqKQMAIAYgDCADQn+Fg4WFIQwgGyAoICdCf4WDhSIHIRwgAyAGQn+FgyAChSIGIR0gGSAYIBZCf4WDhSICIR4gJyAbQn+FgyAmhSIDIR8gKiAPQn+FgyArhSIbISAgFiAZQn+FgyAlhSIWISEgLCAPICtCf4WDhSIZISIgKCAmIBpCf4WDhSIaISMgJSAXQn+FgyAYhSIXIQ8gLCApQn+FgyAqhSIYISQgAUEIaiIBDQALIAAgFzcDoAEgACAVNwN4IAAgGDcDUCAAIAs3AyggACAMNwMAIAAgDjcDqAEgACAaNwOAASAAIBQ3A1ggACAKNwMwIAAgBDcDCCAAIBY3A7ABIAAgEzcDiAEgACAZNwNgIAAgCTcDOCAAIAU3AxAgACACNwO4ASAAIAM3A5ABIAAgGzcDaCAAIA03A0AgACAINwMYIAAgEDcDwAEgACAHNwOYASAAIBE3A3AgACASNwNIIAAgBjcDIAvoCAEMfyMAQZABayICJAAgAkGCAWpCADcBACACQYoBakEAOwEAIAJBADsBfCACQQA2AX4gAkEQNgJ4IAJBGGoiBCACQYABaiIGKQMANwMAIAJBIGoiBSACQYgBaiIHKAIANgIAIAJBCGoiCCACQRxqKQIANwMAIAIgAikDeDcDECACIAIpAhQ3AwACQAJAAkAgASgCACIDQRBJBEAgAUEEaiIJIANqQRAgA2siAyADEJEBGiABQQA2AgAgAUEUaiIDIAkQCyAEIAFBzABqIgkpAAA3AwAgAiABQcQAaiIKKQAANwMQIAMgAkEQahALIAggAUEcaiIIKQAANwMAIAIgASkAFDcDACACQThqIgtCADcDACACQTBqIgxCADcDACACQShqIg1CADcDACAFQgA3AwAgBEIANwMAIAJCADcDECACQe4AakEANgEAIAJB8gBqQQA7AQAgAkEAOwFkIAJBEDYCYCACQgA3AWYgByACQfAAaigCADYCACAGIAJB6ABqKQMANwMAIAJB2ABqIgYgAkGEAWopAgA3AwAgAiACKQNgNwN4IAIgAikCfDcDUCACQcgAaiIHIAYpAwA3AwAgAiACKQNQNwNAIAkgBykDADcAACAKIAIpA0A3AAAgAUE8aiALKQMANwAAIAFBNGogDCkDADcAACABQSxqIA0pAwA3AAAgAUEkaiAFKQMANwAAIAggBCkDADcAACABIAIpAxA3ABQgAUEANgIAQRBBARChASIERQ0BIAJCEDcCFCACIAQ2AhAgAkEQaiACQRAQXgJAIAIoAhQiBSACKAIYIgRGBEAgBSEEDAELIAUgBEkNAyAFRQ0AIAIoAhAhBgJAIARFBEAgBhAQQQEhBQwBCyAGIAVBASAEEJoBIgVFDQULIAIgBDYCFCACIAU2AhALIAIoAhAhBSACQThqIgZCADcDACACQTBqIgdCADcDACACQShqIghCADcDACACQSBqIglCADcDACACQRhqIgpCADcDACACQgA3AxAgAkHqAGpCADcBACACQfIAakEAOwEAIAJBEDYCYCACQQA7AWQgAkEANgFmIAJBiAFqIAJB8ABqKAIANgIAIAJBgAFqIAJB6ABqKQMANwMAIAJB2ABqIgsgAkGEAWopAgA3AwAgAiACKQNgNwN4IAIgAikCfDcDUCACQcgAaiIMIAspAwA3AwAgAiACKQNQNwNAIANBOGogDCkDADcAACADQTBqIAIpA0A3AAAgA0EoaiAGKQMANwAAIANBIGogBykDADcAACADQRhqIAgpAwA3AAAgA0EQaiAJKQMANwAAIANBCGogCikDADcAACADIAIpAxA3AAAgAUEANgIAIAAgBDYCBCAAIAU2AgAgAkGQAWokAA8LQbCawABBFyACQRBqQaCXwABBsJfAABB5AAtBEEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyAEQQFBtKXAACgCACIAQQIgABsRAAAAC9gIAQV/IABBeGoiASAAQXxqKAIAIgNBeHEiAGohAgJAAkACQAJAIANBAXENACADQQNxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUH8pMAAKAIARgRAIAIoAgRBA3FBA0cNAUH0pMAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgAPCyABIAMQTAsCQCACQQRqIgQoAgAiA0ECcQRAIAQgA0F+cTYCACABIABBAXI2AgQgACABaiAANgIADAELAkAgAkGApcAAKAIARwRAQfykwAAoAgAgAkYNASACIANBeHEiAhBMIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQfykwAAoAgBHDQJB9KTAACAANgIADwtBgKXAACABNgIAQfikwABB+KTAACgCACAAaiIANgIAIAEgAEEBcjYCBEH8pMAAKAIAIAFGBEBB9KTAAEEANgIAQfykwABBADYCAAtBnKXAACgCACICIABPDQJBgKXAACgCACIARQ0CAkBB+KTAACgCACIDQSlJDQBBjKXAACEBA0AgASgCACIEIABNBEAgBCABKAIE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KQMwNwNoIAJBIGogAkGMAWopAgA3AwAgAkEYaiACQYQBaikCADcDACACQRBqIAJB/ABqKQIANwMAIAJBCGogAkH0AGopAgA3AwAgAkEoaiACQZQBaikCADcDACACIAIpAmw3AwAgASACEB8gAUIANwMIIAFCADcDACABQQA2AlAgAUHQmMAAKQMANwMQIAFBGGpB2JjAACkDADcDACABQSBqQeCYwAApAwA3AwAgAUEoakHomMAAKQMANwMAIAFBMGpB8JjAACkDADcDACABQThqQfiYwAApAwA3AwAgAUFAa0GAmcAAKQMANwMAIAFByABqQYiZwAApAwA3AwACQAJAQTBBARChASIDBEAgAkIwNwJsIAIgAzYCaCACQegAaiACQTAQXgJAIAIoAmwiBCACKAJwIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAmghBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCbCACIAQ2AmgLIAIoAmghBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFB0JjAACkDADcDACABQQhqQdiYwAApAwA3AwAgAUEQakHgmMAAKQMANwMAIAFBGGpB6JjAACkDADcDACABQSBqQfCYwAApAwA3AwAgAUEoakH4mMAAKQMANwMAIAFBMGpBgJnAACkDADcDACABQThqQYiZwAApAwA3AwAgACADNgIEIAAgBDYCACACQaABaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC78GAQR/IAAgAWohAgJAAkACQAJAAkAgAEEEaigCACIDQQFxDQAgA0EDcUUNASAAKAIAIgMgAWohASAAIANrIgBB/KTAACgCAEYEQCACKAIEQQNxQQNHDQFB9KTAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADwsgACADEEwLAkAgAkEEaigCACIDQQJxBEAgAkEEaiADQX5xNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAMAQsCQCACQYClwAAoAgBHBEBB/KTAACgCACACRg0BIAIgA0F4cSICEEwgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABB/KTAACgCAEcNAkH0pMAAIAE2AgAPC0GApcAAIAA2AgBB+KTAAEH4pMAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABB/KTAACgCAEcNAkH0pMAAQQA2AgBB/KTAAEEANgIADwtB/KTAACAANgIAQfSkwABB9KTAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyABQYACSQ0DIABCADcCECAAQRxqAn9BACABQQh2IgNFDQAaQR8gAUH///8HSw0AGiABQQYgA2ciAmtBH3F2QQFxIAJBAXRrQT5qCyICNgIAIAJBAnRB9KPAAGohAwJAAkBB6KHAACgCACIEQQEgAkEfcXQiBXEEQCADKAIAIgNBBGooAgBBeHEgAUcNASADIQIMAgtB6KHAACAEIAVyNgIAIAMgADYCAAwECyABQQBBGSACQQF2a0EfcSACQR9GG3QhBANAIAMgBEEddkEEcWpBEGoiBSgCACICRQ0DIARBAXQhBCACIQMgAkEEaigCAEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBGGpBADYCACAAIAI2AgwgACABNgIICw8LIAUgADYCAAsgAEEYaiADNgIAIAAgADYCDCAAIAA2AggPCyABQQN2IgJBA3RB7KHAAGohAQJ/QeShwAAoAgAiA0EBIAJ0IgJxBEAgASgCCAwBC0HkocAAIAIgA3I2AgAgAQshAiABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggL1AYBBH8jAEHQAWsiAiQAIAJBygBqQgA3AQAgAkHSAGpBADsBACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkHkAGpCADcCACACQewAakIANwIAIAJB9ABqQgA3AgAgAkH8AGpBADoAACACQf0AakEANgAAIAJBgQFqQQA7AAAgAkGDAWpBADoAACACQQA7AUQgAkEANgFGIAJBwAA2AkAgAkGIAWogAkFAa0HEABCLARogAkE4aiACQcQBaikCADcDACACQTBqIAJBvAFqKQIANwMAIAJBKGogAkG0AWopAgA3AwAgAkEgaiACQawBaikCADcDACACQRhqIAJBpAFqKQIANwMAIAJBEGogAkGcAWopAgA3AwAgAkEIaiACQZQBaikCADcDACACIAIpAowBNwMAIAEgAhARIAFCADcDCCABQgA3AwAgAUEANgJQIAFBkJnAACkDADcDECABQRhqQZiZwAApAwA3AwAgAUEgakGgmcAAKQMANwMAIAFBKGpBqJnAACkDADcDACABQTBqQbCZwAApAwA3AwAgAUE4akG4mcAAKQMANwMAIAFBQGtBwJnAACkDADcDACABQcgAakHImcAAKQMANwMAAkACQEHAAEEBEKEBIgMEQCACQsAANwKMASACIAM2AogBIAJBiAFqIAJBwAAQXgJAIAIoAowBIgQgAigCkAEiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCiAEhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCjAEgAiAENgKIAQsgAigCiAEhBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFBkJnAACkDADcDACABQQhqQZiZwAApAwA3AwAgAUEQakGgmcAAKQMANwMAIAFBGGpBqJnAACkDADcDACABQSBqQbCZwAApAwA3AwAgAUEoakG4mcAAKQMANwMAIAFBMGpBwJnAACkDADcDACABQThqQciZwAApAwA3AwAgACADNgIEIAAgBDYCACACQdABaiQADwtBwABBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBgEKfyMAQTBrIgIkACACQSRqQYCHwAA2AgAgAkEDOgAoIAJCgICAgIAENwMIIAIgADYCICACQQA2AhggAkEANgIQAn8CQAJAAkAgASgCCCIDBEAgASgCACEFIAEoAgQiCCABQQxqKAIAIgYgBiAISxsiBkUNASABQRRqKAIAIQcgASgCECEJIAAgBSgCACAFKAIEQYyHwAAoAgARAwANAyAFQQhqIQECQAJAA0AgAiADQQRqKAIANgIMIAIgA0Ecai0AADoAKCACIANBCGooAgA2AgggA0EYaigCACEAQQAhBAJAAkACQCADQRRqKAIAQQFrDgIAAgELIAAgB08NAyAAQQN0IAlqIgooAgRBA0cNASAKKAIAKAIAIQALQQEhBAsgAiAANgIUIAIgBDYCECADQRBqKAIAIQBBACEEAkACQAJAIANBDGooAgBBAWsOAgACAQsgACAHTw0EIABBA3QgCWoiCigCBEEDRw0BIAooAgAoAgAh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IQEgACgCGCEAA0AgBkF/aiIGRQRAQQAPCyAAIAcgASgCEBEBAEUNAAsLIAULtwUBBH8jAEGQAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJBADsBNCACQQA2ATYgAkEoNgIwIAJBgAFqIAJB0ABqKQMANwMAIAJB+ABqIAJByABqKQMANwMAIAJB8ABqIAJBQGspAwA3AwAgAkHoAGogAkE4aikDADcDACACQYgBaiACQdgAaigCADYCACACIAIpAzA3A2AgAkEgaiACQfwAaikCADcDACACQRhqIAJB9ABqKQIANwMAIAJBEGogAkHsAGopAgA3AwAgAkEoaiACQYQBaikCADcDACACIAIpAmQ3AwggASACQQhqEE0gAUIANwMAIAFBADYCMCABQdCXwAApAwA3AwggAUEQakHYl8AAKQMANwMAIAFBGGpB4JfAACkDADcDACABQSBqQeiXwAApAwA3AwAgAUEoakHwl8AAKQMANwMAAkACQEEoQQEQoQEiAwRAIAJCKDcCZCACIAM2AmAgAkHgAGogAkEIakEoEF4CQCACKAJkIgQgAigCaCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AmQgAiAENgJgCyACKAJgIQQgAUIANwMAIAFBADYCMCABQQhqIgFB0JfAACkDADcDACABQQhqQdiXwAApAwA3AwAgAUEQakHgl8AAKQMANwMAIAFBGGpB6JfAACkDADcDACABQSBqQfCXwAApAwA3AwAgACADNgIEIAAgBDYCACACQZABaiQADwtBKEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8YEAQR/IwBBoAFrIgIkACACQTpqQgA3AQAgAkHCAGpBADsBACACQcQAakIANwIAIAJBzABqQgA3AgAgAkHUAGpCADcCACACQdwAakIANwIAIAJBADsBNCACQQA2ATYgAkEwNgIwIAJBkAFqIAJB2ABqKQMANwMAIAJBiAFqIAJB0ABqKQMANwMAIAJBgAFqIAJByABqKQMANwMAIAJB+ABqIAJBQGspAwA3AwAgAkHwAGogAkE4aikDADcDACACQZgBaiACQeAAaigCADYCACACIAIpAzA3A2ggAkEgaiACQYwBaikCADcDACACQRhqIAJBhAFqKQIANwMAIAJBEGogAkH8AGopAgA3AwAgAkEIaiACQfQAaikCADcDACACQShqIAJBlAFqKQIANwMAIAIgAikCbDcDACABIAIQYyABQQBByAEQkQEiBUEANgLIAQJAAkBBMEEBEKEBIgEEQCACQjA3AmwgAiABNgJoIAJB6ABqIAJBMBBeAkAgAigCbCIDIAIoAnAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCaCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJsIAIgAzYCaAsgAigCaCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJBoAFqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALxgQBBH8jAEGgAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkEAOwE0IAJBADYBNiACQTA2AjAgAkGQAWogAkHYAGopAwA3AwAgAkGIAWogAkHQAGopAwA3AwAgAkGAAWogAkHIAGopAwA3AwAgAkH4AGogAkFAaykDADcDACACQfAAaiACQThqKQMANwMAIAJBmAFqIAJB4ABqKAIANgIAIAIgAikDMDcDaCACQSBqIAJBjAFqKQIANwMAIAJBGGogAkGEAWopAgA3AwAgAkEQaiACQfwAaikCADcDACACQQhqIAJB9ABqKQIANwMAIAJBKGogAkGUAWopAgA3AwAgAiACKQJsNwMAIAEgAhBkIAFBAEHIARCRASIFQQA2AsgBAkACQEEwQQEQoQEiAQRAIAJCMDcCbCACIAE2AmggAkHoAGogAkEwEF4CQCACKAJsIgMgAigCcCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJoIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AmwgAiADNgJoCyACKAJoIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkGgAWokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAu8BAEEfyMAQaADayICJAAgAkHyAmpCADcBACACQfoCakEAOwEAIAJB/AJqQgA3AgAgAkGEA2pCADcCACACQYwDakIANwIAIAJBlANqQgA3AgAgAkEAOwHsAiACQQA2Ae4CIAJBMDYC6AIgAkHYAGogAkGQA2opAwA3AwAgAkHQAGogAkGIA2opAwA3AwAgAkHIAGogAkGAA2opAwA3AwAgAkFAayACQfgCaikDADcDACACQThqIAJB8AJqKQMANwMAIAJB4ABqIAJBmANqKAIANgIAIAIgAikD6AI3AzAgAkEgaiACQdQAaikCADcDACACQRhqIAJBzABqKQIANwMAIAJBEGogAkHEAGopAgA3AwAgAkEIaiACQTxqKQIANwMAIAJBKGogAkHcAGopAgA3AwAgAiACKQI0NwMAIAJBMGogAUG4AhCLARogAkEwaiACEGMCQAJAQTBBARChASIDBEAgAkIwNwI0IAIgAzYCMCACQTBqIAJBMBBeAkAgAigCNCIEIAIoAjgiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCMCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgI0IAIgBDYCMAsgAigCMCEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALvAQBBH8jAEGgA2siAiQAIAJB8gJqQgA3AQAgAkH6AmpBADsBACACQfwCakIANwIAIAJBhANqQgA3AgAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB7AIgAkEANgHuAiACQTA2AugCIAJB2ABqIAJBkANqKQMANwMAIAJB0ABqIAJBiANqKQMANwMAIAJByABqIAJBgANqKQMANwMAIAJBQGsgAkH4AmopAwA3AwAgAkE4aiACQfACaikDADcDACACQeAAaiACQZgDaigCADYCACACIAIpA+gCNwMwIAJBIGogAkHUAGopAgA3AwAgAkEYaiACQcwAaikCADcDACACQRBqIAJBxABqKQIANwMAIAJBCGogAkE8aikCADcDACACQShqIAJB3ABqKQIANwMAIAIgAikCNDcDACACQTBqIAFBuAIQiwEaIAJBMGogAhBkAkACQEEwQQEQoQEiAwRAIAJCMDcCNCACIAM2AjAgAkEwaiACQTAQXgJAIAIoAjQiBCACKAI4IgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAjAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCNCACIAQ2AjALIAIoAjAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC7wEAQR/IwBBwAJrIgIkACACQZICakIANwEAIAJBmgJqQQA7AQAgAkGcAmpCADcCACACQaQCakIANwIAIAJBrAJqQgA3AgAgAkG0AmpCADcCACACQQA7AYwCIAJBADYBjgIgAkEwNgKIAiACQdgAaiACQbACaikDADcDACACQdAAaiACQagCaikDADcDACACQcgAaiACQaACaikDADcDACACQUBrIAJBmAJqKQMANwMAIAJBOGogAkGQAmopAwA3AwAgAkHgAGogAkG4AmooAgA2AgAgAiACKQOIAjcDMCACQSBqIAJB1ABqKQIANwMAIAJBGGogAkHMAGopAgA3AwAgAkEQaiACQcQAaikCADcDACACQQhqIAJBPGopAgA3AwAgAkEoaiACQdwAaikCADcDACACIAIpAjQ3AwAgAkEwaiABQdgBEIsBGiACQTBqIAIQHwJAAkBBMEEBEKEBIgMEQCACQjA3AjQgAiADNgIwIAJBMGogAkEwEF4CQCACKAI0IgQgAigCOCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIwIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjQgAiAENgIwCyACKAIwIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAmokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGs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AkHwAGokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvMBAEEfyMAQdABayICJAAgAkHKAGpCADcBACACQdIAakEAOwEAIAJB1ABqQgA3AgAgAkHcAGpCADcCACACQeQAakIANwIAIAJB7ABqQgA3AgAgAkH0AGpCADcCACACQfwAakEAOgAAIAJB/QBqQQA2AAAgAkGBAWpBADsAACACQYMBakEAOgAAIAJBADsBRCACQQA2AUYgAkHAADYCQCACQYgBaiACQUBrQcQAEIsBGiACQThqIAJBxAFqKQIANwMAIAJBMGogAkG8AWopAgA3AwAgAkEoaiACQbQBaikCADcDACACQSBqIAJBrAFqKQIANwMAIAJBGGogAkGkAWopAgA3AwAgAkEQaiACQZwBaikCADcDACACQQhqIAJBlAFqKQIANwMAIAIgAikCjAE3AwAgASACEFsgAUEAQcgBEJEBIgVBADYCyAECQAJAQcAAQQEQoQEiAQRAIAJCwAA3AowBIAIgATYCiAEgAkGIAWogAkHAABBeAkAgAigCjAEiAyACKAKQASIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAKIASEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgKMASACIAM2AogBCyACKAKIASEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB0AFqJAAPC0HAAEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC8wEAQR/IwBB0AFrIgIkACACQcoAakIANwEAIAJB0gBqQQA7AQAgAkHUAGpCADcCACACQdwAakIANwIAIAJB5ABqQgA3AgAgAkHsAGpCADcCACACQfQAakIANwIAIAJB/ABqQQA6AAAgAkH9AGpBADYAACACQYEBakEAOwAAIAJBgwFqQQA6AAAgAkEAOwFEIAJBADYBRiACQcAANgJAIAJBiAFqIAJBQGtBxAAQiwEaIAJBOGogAkHEAWopAgA3AwAgAkEwaiACQbwBaikCADcDACACQShqIAJBtAFqKQIANwMAIAJBIGogAkGsAWopAgA3AwAgAkEYaiACQaQBaikCADcDACACQRBqIAJBnAFqKQIANwMAIAJBCGogAkGUAWopAgA3AwAgAiACKQKMATcDACABIAIQXCABQQBByAEQkQEiBUEANgLIAQJAAkBBwABBARChASIBBEAgAkLAADcCjAEgAiABNgKIASACQYgBaiACQcAAEF4CQCACKAKMASIDIAIoApABIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAogBIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AowBIAIgAzYCiAELIAIoAogBIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHQAWokAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQWwJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQXAJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEHgAmsiAiQAIAJBogJqQgA3AQAgAkGqAmpBADsBACACQawCakIANwIAIAJBtAJqQgA3AgAgAkG8AmpCADcCACACQcQCakIANwIAIAJBzAJqQgA3AgAgAkHUAmpBADoAACACQdUCakEANgAAIAJB2QJqQQA7AAAgAkHbAmpBADoAACACQQA7AZwCIAJBADYBngIgAkHAADYCmAIgAkFAayACQZgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3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AABzOgAAIAVBAWoiBUHIAEcNAAsgABAOIAZByABJDQJByAAhBSACQcgAaiECIAhByABqIQgMAAsACyACIARqIgYgBEkNAiAGQcgASw0DIAAgBGpBzAFqIAEgAhCLARogACgCyAEgAmohBwwBCyAAQcwBaiABIARqIAcQiwEaCyAAIAc2AsgBIANBQGskAA8LIAQgBkHAm8AAEH4ACyAGQcgAQcCbwAAQfQALIARByABB0JvAABB+AAsgBCACQeCbwAAQfQALIANBNGpBBjYCACADQSRqQQI2AgAgA0IDNwIUIANBuJ7AADYCECADQQY2AiwgAyADQQxqNgI4IANB3J7AADYCPCADIANBKGo2AiAgAyADQTxqNgIwIAMgA0E4ajYCKCADQRBqQeCewAAQkAEAC5sEAQd/IwBBQGoiAyQAAkACQAJAAkACQAJAAkBB6AAgACgCyAEiBGsiBiACTQRAIAQEQCAEQekATw0GIAAgBGpBzAFqIAEgBhCLARogAiAGayECIAEgBmohAQNAIAAgBWoiBCAELQAAIARBzAFqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDgsgAiACQegAcCIHayEEIAIgB0kNBiAEQegASQ0BIAFB6ABqIQggASECIAQhBkHoACEFA0AgAyAFNgIMIAVB6ABHDQggBkGYf2ohBkEAIQUDQCAAIAVqIgkgCS0AACACIAVqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDiAGQegASQ0CQegAIQUgAkHoAGohAiAIQegAaiEIDAALAAsgAiAEaiIGIARJDQIgBkHoAEsNAyAAIARqQcwBaiABIAIQiwEaIAAoAsgBIAJqIQcMAQsgAEHMAWogASAEaiAHEIsBGgsgACAHNgLIASADQUBrJAAPCyAEIAZBwJvAABB+AAsgBkHoAEHAm8AAEH0ACyAEQegAQdCbwAAQfgALIAQgAkHgm8AAEH0ACyADQTRqQQY2AgAgA0EkakECNgIAIANCAzcCFCADQbiewAA2AhAgA0EGNgIsIAMgA0EMajYCOCADQdiewAA2AjwgAyADQShqNgIgIAMgA0E8ajYCMCADIANBOGo2AiggA0EQakHgnsAAEJABAAvkAwEEfyMAQcABayICJAAgAkGiAWpCADcBACACQaoBakEAOwEAIAJBrAFqQgA3AgAgAkG0AWpCADcCACACQQA7AZwBIAJBADYBngEgAkEgNgKYASACQUBrIAJBsAFqKQMANwMAIAJBOGogAkGoAWopAwA3AwAgAkEwaiACQaABaikDADcDACACQcgAaiACQbgBaigCADYCACACIAIpA5gBNwMoIAJBGGogAkE8aikCADcDACACQRBqIAJBNGopAgA3AwAgAkEgaiACQcQAaikCADcDACACIAIpAiw3AwggAkEoaiABQfAAEIsBGiACQShqIAJBCGoQOwJAAkBBIEEBEKEBIgMEQCACQiA3AiwgAiADNgIoIAJBKGogAkEIakEgEF4CQCACKAIsIgQgAigCMCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIoIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiwgAiAENgIoCyACKAIoIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAWokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBAEFfyMAQYABayICJAAgAkHyAGpCADcBACACQfoAakEAOwEAIAJBADsBbCACQQA2AW4gAkEQNgJoIAJBGGogAkHwAGoiBCkDADcDACACQSBqIAJB+ABqKAIANgIAIAJBCGoiBSACQRxqKQIANwMAIAIgAikDaDcDECACIAIpAhQ3AwAgAkEQaiABQdQAEIsBGgJAAkACQCACKAIQIgNBEEkEQCACQRBqQQRyIgYgA2pBECADayIDIAMQkQEaIAJBADYCECACQSRqIgMgBhALIAQgAkHcAGopAgA3AwAgAiACQdQAaikCADcDaCADIAJB6ABqEAsgBSACQSxqKQIANwMAIAIgAikCJDcDAEEQQQEQoQEiA0UNASACQhA3AhQgAiADNgIQIAJBEGogAkEQEF4CQCACKAIUIgQgAigCGCIDRgRAIAQhAwwBCyAEIANJDQMgBEUNACACKAIQIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0FCyACIAM2AhQgAiAENgIQCyACKAIQIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGAAWokAA8LQbCawABBFyACQegAakGgl8AAQbCXwAAQeQALQRBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqEFogAUIANwMAIAFBADYCHCABQfiXwAApAwA3AwggAUEQakGAmMAAKQMANwMAIAFBGGpBiJjAACgCADYCAAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUIANwMAIAFBADYCHCABQQhqIgFB+JfAACkDADcDACABQQhqQYCYwAApAwA3AwAgAUEQakGImMAAKAIANgIAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqECAgAUEANgIcIAFCADcDACABQRhqQYiYwAAoAgA2AgAgAUEQakGAmMAAKQMANwMAIAFB+JfAACkDADcDCAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUEANgIcIAFCADcDACABQQhqIgFBEGpBiJjAACgCADYCACABQQhqQYCYwAApAwA3AwAgAUH4l8AAKQMANwMAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvlAwEEfyMAQfAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQTRqQgA3AgAgAkE8akIANwIAIAJBADsBJCACQQA2ASYgAkEgNgIgIAJB4ABqIAJBOGopAwA3AwAgAkHYAGogAkEwaikDADcDACACQdAAaiACQShqKQMANwMAIAJB6ABqIAJBQGsoAgA2AgAgAiACKQMgNwNIIAJBEGogAkHcAGopAgA3AwAgAkEIaiACQdQAaikCADcDACACQRhqIAJB5ABqKQIANwMAIAIgAikCTDcDACABIAIQZiABQQBByAEQkQEiBUEANgLIAQJAAkBBIEEBEKEBIgEEQCACQiA3AkwgAiABNgJIIAJByABqIAJBIBBeAkAgAigCTCIDIAIoAlAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCSCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJMIAIgAzYCSAsgAigCSCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB8ABqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAAL5QMBBH8jAEHwAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBPGpCADcCACACQQA7ASQgAkEANgEmIAJBIDYCICACQeAAaiACQThqKQMANwMAIAJB2ABqIAJBMGopAwA3AwAgAkHQAGogAkEoaikDADcDACACQegAaiACQUBrKAIANgIAIAIgAikDIDcDSCACQRBqIAJB3ABqKQIANwMAIAJBCGogAkHUAGopAgA3AwAgAkEYaiACQeQAaikCADcDACACIAIpAkw3AwAgASACEGcgAUEAQcgBEJEBIgVBADYCyAECQAJAQSBBARChASIBBEAgAkIgNwJMIAIgATYCSCACQcgAaiACQSAQXgJAIAIoAkwiAyACKAJQIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkghBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCTCACIAM2AkgLIAIoAkghAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQfAAaiQADwtBIEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9wDAQR/IwBBoANrIgIkACACQYIDakIANwEAIAJBigNqQQA7AQAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB/AIgAkEANgH+AiACQSA2AvgCIAJBOGogAkGQA2opAwA3AwAgAkEwaiACQYgDaikDADcDACACQShqIAJBgANqKQMANwMAIAJBQGsgAkGYA2ooAgA2AgAgAiACKQP4AjcDICACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAJBGGogAkE8aikCADcDACACIAIpAiQ3AwAgAkEgaiABQdgCEIsBGiACQSBqIAIQZgJAAkBBIEEBEKEBIgMEQCACQiA3AiQgAiADNgIgIAJBIGogAkEgEF4CQCACKAIkIgQgAigCKCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiQgAiAENgIgCyACKAIgIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvcAwEEfyMAQaADayICJAAgAkGCA2pCADcBACACQYoDakEAOwEAIAJBjANqQgA3AgAgAkGUA2pCADcCACACQQA7AfwCIAJBADYB/gIgAkEgNgL4AiACQThqIAJBkANqKQMANwMAIAJBMGogAkGIA2opAwA3AwAgAkEoaiACQYADaikDADcDACACQUBrIAJBmANqKAIANgIAIAIgAikD+AI3AyAgAkEQaiACQTRqKQIANwMAIAJBCGogAkEsaikCADcDACACQRhqIAJBPGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHYAhCLARogAkEgaiACEGcCQAJAQSBBARChASIDBEAgAkIgNwIkIAIgAzYCICACQSBqIAJBIBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAAL0wMBBH8jAEHgAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBHDYCICACQTxqQQA2AgAgAkEAOwEkIAJBADYBJiACQdgAaiACQThqKQMANwMAIAJB0ABqIAJBMGopAwA3AwAgAkHIAGogAkEoaikDADcDACACIAIpAyA3A0AgAkEYaiACQdwAaigCADYCACACQRBqIAJB1ABqKQIANwMAIAJBCGogAkHMAGopAgA3AwAgAiACKQJENwMAIAEgAhBoIAFBAEHIARCRASIFQQA2AsgBAkACQEEcQQEQoQEiAQRAIAJCHDcCRCACIAE2AkAgAkFAayACQRwQXgJAIAIoAkQiAyACKAJIIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkAhBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCRCACIAM2AkALIAIoAkAhAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQeAAaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9MDAQR/IwBB4ABrIgIkACACQSpqQgA3AQAgAkEyakEAOwEAIAJBNGpCADcCACACQRw2AiAgAkE8akEANgIAIAJBADsBJCACQQA2ASYgAkHYAGogAkE4aikDADcDACACQdAAaiACQTBqKQMANwMAIAJByABqIAJBKGopAwA3AwAgAiACKQMgNwNAIAJBGGogAkHcAGooAgA2AgAgAkEQaiACQdQAaikCADcDACACQQhqIAJBzABqKQIANwMAIAIgAikCRDcDACABIAIQaSABQQBByAEQkQEiBUEANgLIAQJAAkBBHEEBEKEBIgEEQCACQhw3AkQgAiABNgJAIAJBQGsgAkEcEF4CQCACKAJEIgMgAigCSCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJAIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AkQgAiADNgJACyACKAJAIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHgAGokAA8LQRxBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAvkAwIJfwF+IwBBoAFrIgIkACACQUBrIAFBBGoQciABKAIAIQggAkH4AGoiAyABQTxqKQAANwMAIAJB8ABqIgQgAUE0aikAADcDACACQegAaiIFIAFBLGopAAA3AwAgAkHgAGoiBiABQSRqKQAANwMAIAJB2ABqIgcgAUEcaikAADcDACACIAEpABQ3A1AgAkGQAWogAUHEAGoQciACQQhqIgkgBykDADcDACACQRBqIgcgBikDADcDACACQRhqIgYgBSkDADcDACACQSBqIgUgBCkDADcDACACQShqIgQgAykDADcDACACQTBqIgMgAikDkAEiCzcDACACQThqIgogAkGYAWopAwA3AwAgAiALNwOAASACIAIpA1A3AwBB1ABBBBChASIBRQRAQdQAQQRBtKXAACgCACIAQQIgABsRAAAACyABIAg2AgAgASACKQNANwIEIAEgAikDADcCFCABQQxqIAJByABqKQMANwIAIAFBHGogCSkDADcCACABQSRqIAcpAwA3AgAgAUEsaiAGKQMANwIAIAFBNGogBSkDADcCACABQTxqIAQpAwA3AgAgAUHEAGogAykDADcCACABQcwAaiAKKQMANwIAIABB9I/AADYCBCAAIAE2AgAgAkGgAWokAAvLAwEEfyMAQaADayICJAAgAkGKA2pCADcBACACQZIDakEAOwEAIAJBlANqQgA3AgAgAkEcNgKAAyACQZwDakEANgIAIAJBADsBhAMgAkEANgGGAyACQThqIAJBmANqKQMANwMAIAJBMGogAkGQA2opAwA3AwAgAkEoaiACQYgDaikDADcDACACIAIpA4ADNwMgIAJBGGogAkE8aigCADYCACACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAIgAikCJDcDACACQSBqIAFB4AIQiwEaIAJBIGogAhBpAkACQEEcQQEQoQEiAwRAIAJCHDcCJCACIAM2AiAgAkEgaiACQRwQXgJAIAIoAiQiBCACKAIoIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAiAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCJCACIAQ2AiALIAIoAiAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8sDAQR/IwBBoANrIgIkACACQYoDakIANwEAIAJBkgNqQQA7AQAgAkGUA2pCADcCACACQRw2AoADIAJBnANqQQA2AgAgAkEAOwGEAyACQQA2AYYDIAJBOGogAkGYA2opAwA3AwAgAkEwaiACQZADaikDADcDACACQShqIAJBiANqKQMANwMAIAIgAikDgAM3AyAgAkEYaiACQTxqKAIANgIAIAJBEGogAkE0aikCADcDACACQQhqIAJBLGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHgAhCLARogAkEgaiACEGgCQAJAQRxBARChASIDBEAgAkIcNwIkIAIgAzYCICACQSBqIAJBHBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EcQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALywMBBH8jAEGwAWsiAiQAIAJBmgFqQgA3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HCIEayIFIAJNBEAgAEEIaiEHIAQEQCAEQcEATw0GIAQgAEEgaiIEaiABIAUQiwEaIAcgBBAHIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAcgBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQSBqIAEgAhCLARogACgCHCACaiEFDAELIABBIGogASAIaiAFEIsBGgsgACAFNgIcIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQALtAMBBn8jAEFAaiIDJAAgACAAKQMAIAKtfDcDAAJAAkACQAJAAkACQEHAACAAKAIIIgRrIgUgAk0EQCAAQcwAaiEHIAQEQCAEQcEATw0GIAQgAEEMaiIEaiABIAUQiwEaIAcgBBAKIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAogBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQQxqIAEgAhCLARogACgCCCACaiEFDAELIABBDGogASAIaiAFEIsBGgsgACAFNgIIIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQAL0QMCBX8CfiAAQdQAaiECIABBEGohAyAAQQhqKQMAIQYgACkDACEHAkACQCAAKAJQIgFBgAFGBEAgAyACQQEQDEEAIQEgAEEA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AXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACAAIAAoAgRBAXI2AgQgASACEBQMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgAEEEaigCACIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIABBBGogBCABQQFxckECcjYCACAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBAUCyAAQQhqIQMLIAMLiwMCBn8BfiMAQfAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaikDADcDACACQeAAaiIFIAFBIGopAwA3AwAgAkHoAGoiBiABQShqKQMANwMAIAIgASkDCDcDSCABKQMAIQggAkEIaiABQTRqEGUgASgCMCEHQfgAQQgQoQEiAUUEQEH4AEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAINwMAIAEgAikDSDcDCCABIAc2AjAgASACKQMINwI0IAFBEGogAykDADcDACABQRhqIAQpAwA3AwAgAUEgaiAFKQMANwMAIAFBKGogBikDADcDACABQTxqIAJBEGopAwA3AgAgAUHEAGogAkEYaikDADcCACABQcwAaiACQSBqKQMANwIAIAFB1ABqIAJBKGopAwA3AgAgAUHcAGogAkEwaikDADcCACABQeQAaiACQThqKQMANwIAIAFB7ABqIAJBQGspAwA3AgAgAEHgjMAANgIEIAAgATYCACACQfAAaiQAC4YDAQR/IwBBkAFrIgIkACACQYIBakIANwEAIAJBigFqQQA7AQAgAkEAOwF8IAJBADYBfiACQRA2AnggAkEgaiACQYABaikDADcDACACQShqIAJBiAFqKAIANgIAIAJBEGogAkEkaikCADcDACACIAIpA3g3AxggAiACKQIcNwMIIAJBGGogAUHgABCLARogAkEYaiACQQhqEF0CQAJAQRBBARChASIDBEAgAkIQNwIcIAIgAzYCGCACQRhqIAJBCGpBEBBeAkAgAigCHCIEIAIoAiAiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCGCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIcIAIgBDYCGAsgAigCGCEEIAEQ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QT8gBmsQkQEaQcAAIAAoAjBrQQdNBEAgBCADEAYgACgCMCICQcEATw0CIABBNGpBACACEJEBGgsgAEHsAGogB0IDhjcCACAEIAMQBiAAQQA2AjAgASAAKAIINgAAIAEgAEEMaigCADYABCABIABBEGooAgA2AAggASAAQRRqKAIANgAMIAEgAEEYaigCADYAECABIABBHGooAgA2ABQgASAAQSBqKAIANgAYIAEgAEEkaigCADYAHCABIABBKGooAgA2ACAgASAAQSxqKAIANgAkDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAvwAgIGfwF+IwBBEGsiBCQAIABBDGohBSAAQcwAaiEDIAApAwAhCAJAAkAgACgCCCICQcAARgRAIAMgBRAKQQAhAiAAQQA2AggMAQsgAkE/Sw0BCyAAQQhqIgYgAmpBBGpBgAE6AAAgACAAKAIIIgdBAWoiAjYCCAJAIAJBwQBJBEAgAiAGakEEakEAQT8gB2sQkQEaQcAAIAAoAghrQQdNBEAgAyAFEAogACgCCCICQcEATw0CIABBDGpBACACEJEBGgsgAEHEAGogCEIDhjcCACADIAUQCiAAQQA2AgggBEEIaiICIABB3ABqNgIEIAIgAzYCACAEKAIMIAQoAggiAGtBAnYiA0EEIANBBEkbIgIEQEEAIQMDQCABIAAoAgA2AAAgAEEEaiEAIAFBBGohASADQQFqIgMgAkkNAAsLIARBEGokAA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAAL1AIBAX8gABBUIAEgACgCTCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAAgASAAQdAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAQgASAAQdQAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAggASAAQdgAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAwgASAAQdwAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABAgASAAQeAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABQgASAAQeQAaigCACIAQRh0IABBCHRBgID8B3FyIABBCHZBgP4DcSAAQRh2cnI2ABgL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQeCQwAA2AgQgACABNgIAIAJB4ABqJAAL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQYSRwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQYSNwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQbCNwAA2AgQgACABNgIAIAJB4ABqJAAL3QICBX8BfiAAQQxqIQIgAEHMAGohAyAAKQMAIQYCQAJAIAAoAggiAUHAAEYEQCADIAJBARAEQQAhASAAQQA2AggMAQsgAUE/Sw0BCyAAQQhqIgQgAWpBBGpBgAE6AAAgACAAKAIIIgVBAWoiATYCCAJAIAFBwQBJBEAgASAEakEEakEAQT8gBWsQkQEaQcAAIAAoAghrQQdNBEAgAyACQQEQBCAAKAIIIgFBwQBPDQIgAEEMakEAIAEQkQEaCyAAQcQAaiAGQiiGQoCAgICAgMD/AIMgBkI4hoQgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcCACADIAJBARAEIABBADYCCA8LIAFBwABBgJrAABB+AAsgAUHAAEGQmsAAEH0ACyABQcAAQaCawAAQfAALvgICBX8BfiMAQTBrIgQkAEEnIQICQCAAQpDOAFQEQCAAIQcMAQsDQCAEQQlqIAJqIgNBfGogACAAQpDOAIAiB0LwsX9+fKciBUH//wNxQeQAbiIGQQF0QdqIwABqLwAAOwAAIANBfmogBkGcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAACACQXxqIQIgAEL/wdcvViAHIQANAAsLIAenIgNB4wBKBEAgAkF+aiICIARBCWpqIAenIgVB//8DcUHkAG4iA0Gcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAAAsCQCADQQpOBEAgAkF+aiICIARBCWpqIANBAXRB2ojAAGovAAA7AAAMAQsgAkF/aiICIARBCWpqIANBMGo6AAALIAFByKDAAEEAIARBCWogAmpBJyACaxAYIARBMGokAAu/AgEDfyMAQRBrIgIkAAJAIAAoAgAiAAJ/AkAgAUGAAU8EQCACQQA2AgwgAUGAEEkNASABQYCABEkEQCACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAMLIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyAAKAIIIgMgAEEEaigCAEYEfyAAQQEQaiAAKAIIBSADCyAAKAIAaiABOgAAIAAgACgCCEEBajYCCAwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgsiARBqIABBCGoiAygCACIEIAAoAgBqIAJBDGogARCLARogAyABIARqNgIACyACQRBqJABBAAvLAgEIfyMAQYABayIBQShqIgJCADcDACABQSBqIgNCADcDACABQRhqIgRCADcDACABQRBqIgVCADcDACABQQhqIgZCADcDACABQgA3AwAgAUHaAGpCADcBACABQeIAakEAOwEAIAFBEDYCUCABQQA7AVQgAUEANgFWIAFB+ABqIAFB4ABqKAIANgIAIAFB8ABqIAFB2ABqKQMANwMAIAFByABqIgcgAUH0AGopAgA3AwAgASABKQNQNwNoIAEgASkCbDcDQCABQThqIgggBykDADcDACABIAEpA0A3AzAgAEHMAGogCCkDADcAACAAQcQAaiABKQMwNwAAIABBPGogAikDADcAACAAQTRqIAMpAwA3AAAgAEEsaiAEKQMANwAAIABBJGogBSkDADcAACAAQRxqIAYpAwA3AAAgACABKQMANwAUIABBADYCAAuxAgEDfyMAQYABayIEJAAgACgCACEAAkACQAJ/AkAgASgCACIDQRBxRQRAIAAoAgAhAiADQSBxDQEgAq0gARBVDAILIAAoAgAhAkEAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEF/aiEAIAJBBHYiAg0ACyAAQYABaiICQYEBTw0CIAFB2IvAAEECIAAgBGpBgAFqQQAgAGsQGAwBC0EAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPDQIgAUHYi8AAQQIgACAEakGAAWpBACAAaxAYCyAEQYABaiQADwsgAkGAAUHIi8AAEH4ACyACQYABQciLwAAQfgALrAICA38CfiAAIAApAwAiBiACrUIDhnwiBzcDACAAQQhqIgMgAykDACAHIAZUrXw3AwACQAJAQYABIAAoAlAiA2siBCACTQRAIABBEGoiBSADBEAgA0GBAU8NAiADIABB1ABqIgNqIAEgBBCLARogAEEANgJQIAUgA0EBEAwgAiAEayECIAEgBGohAQsgASACQQd2EAwgAkH/AHEiA0GBAU8NAiAAQdQAaiABIAJBgH9xaiADEIsBGiAAIAM2AlAPCwJAIAIgA2oiBCADTwRAIARBgAFLDQEgACADakHUAGogASACEIsBGiAAIAAoAlAgAmo2AlAPCyADIARB0JnAABB+AAsgBEGAAUHQmcAAEH0ACyADQYABQeCZwAAQfgALIANBgAFB8JnAABB9AAu8AgIFfwF+IABBIGohAyAAQQhqIQQgACkDACEHAkACQCAAKAIcIgJBwABGBEAgBCADEAdBACECIABBADYCHAwBCyACQT9LDQELIABBHGoiBSACakEEakGAAToAACAAIAAoAhwiBkEBaiICNgIcAkAgAkHBAEkEQCACIAVqQQRqQQBBPyAGaxCRARpBwAAgACgCHGtBB00EQCAEIAMQByAAKAIcIgJBwQBPDQIgAEEgakEAIAIQkQEaCyAAQdgAaiAHQgOGNwIAIAQgAxAHIABBADYCHCABIAAoAgg2AAAgASAAQQxqKAIANgAEIAEgAEEQaigCADYACCABIABBFGooAgA2AAwgASAAQRhqKAIANgAQDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAu1AgEDfyMAQRBrIgQkACAAKALIASICQccATQRAIAAgAmpBzAFqQQY6AAAgAkEBaiIDQcgARwRAIAAgA2pBzAFqQQBBxwAgAmsQkQEaC0EAIQIgAEEANgLIASAAQZMCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkHIAEcNAAsgABAOIAEgACkAADcAACABQThqIABBOGopAAA3AAAgAUEwaiAAQTBqKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGknsAAEHkAC7UCAQN/IwBBEGsiBCQAIAAoAsgBIgJBxwBNBEAgACACakHMAWpBAToAACACQQFqIgNByABHBEAgACADakHMAWpBAEHHACACaxCRARoLQQAhAiAAQQA2AsgBIABBkwJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQcgARw0ACyAAEA4gASAAKQAANwAAIAFBOGogAEE4aikAADcAACABQTBqIABBMGopAAA3AAAgAUEoaiAAQShqKQAANwAAIAFBIGogAEEgaikAADcAACABQRhqIABBGGopAAA3AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQeSdwAAQeQALswICBX8BfiAAQQxqIQMgAEHMAGohBCAAKQMAIQcCQAJAIAAoAggiAkHAAEYEQCAEIAMQDUEAIQIgAEEANgIIDAELIAJBP0sNAQsgAEEIaiIFIAJqQQRqQYABOgAAIAAgACgCCCIGQQFqIgI2AggCQCACQcEASQRAIAIgBWpBBGpBAEE/IAZrEJEBGkHAACAAKAIIa0EHTQRAIAQgAxANIAAoAggiAkHBAE8NAiAAQQxqQQAgAhCRARoLIABBxABqIAdCA4Y3AgAgBCADEA0gAEEANgIIIAEgACgCTDYAACABIABB0ABqKAIANgAEIAEgAEHUAGooAgA2AAggASAAQdgAaigCADYADA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAALhgIBBH8CQCAAQQRqKAIAIgYgAEEIaigCACIFayACTwRAIAAoAgAhBAwBCwJAAn8gAiAFaiIDIAVPBEBBACAGQQF0IgUgAyAFIANLGyIDQQggA0EISxsiA0EASA0BGgJAIAAoAgBBACAGGyIERQRAIANBARChASIEDQQMAQsgAyAGRg0DIAZFBEAgA0EBEKEBIgRFDQEMBAsgBCAGQQEgAxCaASIEDQMLQQEMAQtBAAsiBARAIAMgBEG0pcAAKAIAIgBBAiAAGxEAAAALEJsBAAsgACAENgIAIABBBGogAzYCACAAQQhqKAIAIQULIAQgBWogASACEIsBGiAAQQhqIAIgBWo2AgALjAIBA38gACAAKQMAIAKtQgOGfDcDAAJAAkBBwAAgACgCCCIDayIEIAJNBEAgAEHMAGoiBSADBEAgA0HBAE8NAiADIABBDGoiA2ogASAEEIsBGiAAQQA2AgggBSADQQEQBCACIARrIQIgASAEaiEBCyABIAJBBnYQBCACQT9xIgNBwQBPDQIgAEEMaiABIAJBQHFqIAMQiwEaIAAgAzYCCA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQQxqIAEgAhCLARogACAAKAIIIAJqNgIIDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEG8jMAANgIEIAAgATYCACACQdAAaiQAC4gCAQN/IAAgACkDACACrXw3AwACQAJAQcAAIAAoAhwiA2siBCACTQRAIABBCGoiBSADBEAgA0HBAE8NAiADIABBIGoiA2ogASAEEIsBGiAAQQA2AhwgBSADQQEQCCACIARrIQIgASAEaiEBCyABIAJBBnYQCCACQT9xIgNBwQBPDQIgAEEgaiABIAJBQHFqIAMQiwEaIAAgAzYCHA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQSBqIAEgAhCLARogACAAKAIcIAJqNgIcDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEGokcAANgIEIAAgATYCACACQdAAaiQAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBBjoAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGUnsAAEHkAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBAToAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHUncAAEHkAC/MBAQR/IwBBkAFrIgIkACACQQA2AgAgAkEEciEFA0AgAyAFaiABIANqLQAAOgAAIAIgAigCAEEBaiIENgIAIANBAWoiA0HAAEcNAAsgBEE/TQRAIARBwAAQfwALIAJByABqIAJBxAAQiwEaIABBOGogAkGEAWopAgA3AAAgAEEwaiACQfwAaikCADcAACAAQShqIAJB9ABqKQIANwAAIABBIGogAkHsAGopAgA3AAAgAEEYaiACQeQAaikCADcAACAAQRBqIAJB3ABqKQIANwAAIABBCGogAkHUAGopAgA3AAAgACACKQJMNwAAIAJBkAFqJAAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGHAU0EQCAAIAJqQcwBakEBOgAAIAJBAWoiA0GIAUcEQCAAIANqQcwBakEAQYcBIAJrEJEBGgtBACECIABBADYCyAEgAEHTAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBiAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHEncAAEHkAC/UBAQN/IwBBEGsiBCQAIAAoAsgBIgJBhwFNBEAgACACakHMAWpBBjoAACACQQFqIgNBiAFHBEAgACADakHMAWpBAEGHASACaxCRARoLQQAhAiAAQQA2AsgBIABB0wJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQYgBRw0ACyAAEA4gASAAKQAANwAAIAFBGGogAEEYaikAADcAACABQRBqIABBEGopAAA3AAAgAUEIaiAAQQhqKQAANwAAIARBEGokAA8LQbCawABBFyAEQQhqQciawABBhJ7AABB5AAv1AQEDfyMAQRBrIgQkACAAKALIASICQY8BTQRAIAAgAmpBzAFqQQE6AAAgAkEBaiIDQZABRwRAIAAgA2pBzAFqQQBBjwEgAmsQkQEaC0EAIQIgAEEANgLIASAAQdsCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkGQAUcNAAsgABAOIAEgACkAADcAACABQRhqIABBGGooAAA2AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQdiawAAQeQAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGPAU0EQCAAIAJqQcwBakEGOgAAIAJBAWoiA0GQAUcEQCAAIANqQcwBakEAQY8BIAJrEJEBGgtBACECIABBADYCyAEgAEHbAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBkAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKAAANgAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEH0ncAAEHkAC8MBAQJ/AkACQCAAQQRqKAIAIgMgACgCCCICayABSQRAIAEgAmoiASACSQ0BIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQECQCAAKAIAQQAgAxsiAUUEQCACQQEQoQEhAQwBCyACIANGDQAgA0UEQCACQQEQoQEhAQwBCyABIANBASACEJoBIQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxCbAQALIAJBAUG0pcAAKAIAIgBBAiAAGxEAAAALhQEBBH8jAEGgAWsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQcgARw0A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JAAgAkGIAWogAUHIARCLARogAiABQcwBahBuIAEoAsgBIQNB2AJBCBChASIBRQRAQdgCQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBiAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkGIARCLARogAEGsj8AANgIEIAAgATYCACACQdACaiQAC34BAX8jAEFAaiIFJAAgBSABNgIMIAUgADYCCCAFIAM2AhQgBSACNgIQIAVBLGpBAjYCACAFQTxqQQQ2AgAgBUICNwIcIAVB8IvAADYCGCAFQQE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJABAAuVAQAgAEIANwMIIABCADcDACAAQQA2AlAgAEGQmcAAKQMANwMQIABBGGpBmJnAACkDADcDACAAQSBqQaCZwAApAwA3AwAgAEEoakGomcAAKQMANwMAIABBMGpBsJnAACkDADcDACAAQThqQbiZwAApAwA3AwAgAEFAa0HAmcAAKQMANwMAIABByABqQciZwAApAwA3AwALlQEAIABCADcDCCAAQgA3AwAgAEEANgJQIABB0JjAACkDADcDECAAQRhqQdiYwAApAwA3AwAgAEEgakHgmMAAKQMANwMAIABBKGpB6JjAACkDADcDACAAQTBqQfCYwAApAwA3AwAgAEE4akH4mMAAKQMANwMAIABBQGtBgJnAACkDADcDACAAQcgAakGImcAAKQMANwMAC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEFNgIAIANCAjcCDCADQYiIwAA2AgggA0EFNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCQAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQU2AgAgA0ICNwIMIANBpIrAADYCCCADQQU2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJABAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBBTYCACADQgI3AgwgA0HcisAANgIIIANBBTYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkAEAC3ABAX8jAEEwayICJAAgAiABNgIEIAIgADYCACACQRxqQQI2AgAgAkEsakEFNgIAIAJCAjcCDCACQcyRwAA2AgggAkEFNgIkIAIgAkEgajYCGCACIAJBBGo2AiggAiACNgIgIAJBCGpB3JHAABCQAQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEBYgAkEgaiQAC30BAn9BASEAQeChwABB4KHAACgCAEEBajYCAAJAAkBBqKXAACgCAEEBRwRAQailwABCgYCAgBA3AwAMAQtBrKXAAEGspcAAKAIAQQFqIgA2AgAgAEECSw0BC0GwpcAAKAIAIgFBf0wNAEGwpcAAIAE2AgAgAEEBSw0AAAsAC2ICAX8BfiMAQRBrIgIkAAJAIAEEQCABKAIADQEgAUF/NgIAIAJBCGogASgCBCABQQhqKAIAKAIQEQAAIAIpAwghAyABQQA2AgAgACADNwIAIAJBEGokAA8LEJ0BAAsQngEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSwECfwJAIAAEQCAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgABAQIAEgAigCABEEACACKAIEBEAgARAQCw8LEJ0BAAsQngEAC0gAAkAgAARAIAAoAgANASAAQX82AgAgACgCBCABIAIgAEEIaigCACgCDBECACACBEAgARAQCyAAQQA2AgAPCxCdAQALEJ4BAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQEADQEaCyACRQRAQQAPCyAAKAIYIAIgAyAAQRxqKAIAKAIMEQMACwtdACAAQgA3AwAgAEEANgIwIABB0JfAACkDADcDCCAAQRBqQdiXwAApAwA3AwAgAEEYakHgl8AAKQMANwMAIABBIGpB6JfAACkDADcDACAAQShqQfCXwAApAwA3AwALSAEBfyMAQSBrIgMkACADQRRqQQA2AgAgA0HIoMAANgIQIANCATcCBCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQkAEAC1AAIABBADYCCCAAQgA3AwAgAEGsmMAAKQIANwJMIABB1ABqQbSYwAApAgA3AgAgAEHcAGpBvJjAACkCADcCACAAQeQAakHEmMAAKQIANwIAC1AAIABBADYCCCAAQgA3AwAgAEGMmMAAKQIANwJMIABB1ABqQZSYwAApAgA3AgAgAEHcAGpBnJjAACkCADcCACAAQeQAakGkmMAAKQIANwIACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQEgA0EBaiEDIAJBf2oiAg0ACwsgAAs1AQJ/IAAoAgAiACACEGogAEEIaiIDKAIAIgQgACgCAGogASACEIsBGiADIAIgBGo2AgBBAAsrAAJAIABBfEsNACAARQRAQQQPCyAAIABBfUlBAnQQoQEiAEUNACAADwsACz0AIABCADcDACAAQQA2AhwgAEH4l8AAKQMANwMIIABBEGpBgJjAACkDADcDACAAQRhqQYiYwAAoAgA2AgALPQAgAEEANgIcIABCADcDACAAQRhqQYiYwAAoAgA2AgAgAEEQakGAmMAAKQMANwMAIABB+JfAACkDADcDCAtMAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkGYiMAANgIEIAJByKDAADYCACACKAIIRQRAQZ2gwABBK0HIoMAAEIgBAAsQgQEACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkF/aiICDQALCyAACy4AIABBADYCCCAAQgA3AwAgAEHUAGpByJfAACkCADcCACAAQcCXwAApAgA3AkwLIAACQCABQXxLDQAgACABQQQgAhCaASIARQ0AIAAPCwALHAAgASgCGEH/h8AAQQggAUEcaigCACgCDBEDAAscACABKAIYQYKMwABBBSABQRxqKAIAKAIMEQMACxQAIAAoAgAgASAAKAIEKAIMEQEACxAAIAEgACgCACAAKAIEEBILEgAgAEEAQcgBEJEBQQA2AsgBCwsAIAEEQCAAEBALCwwAIAAgASACIAMQFwsSAEHEhsAAQRFB2IbAABCIAQALDgAgACgCABoDQAwACwALDQBB76DAAEEbEKABAAsOAEGKocAAQc8AEKABAAsLACAANQIAIAEQVQsJACAAIAEQAQALGQACfyABQQlPBEAgASAAEEYMAQsgABAJCwsNAEKtqduM/5imovgACwQAQRALBABBKAsEAEEUCwUAQcAACwQA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AAAvaG9tZS9sdWNhY2Fzb25hdG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmxvY2stYnVmZmVyLTAuOS4wL3NyYy9saWIucnMvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzAGgNEABYAAAASAAAAAEAAABoDRAAWAAAAE8AAAABAAAAaA0QAFgAAABWAAAAAQAAAGgNEABYAAAAZgAAAAEAAABoDRAAWAAAAG0AAAABAAAAaA0QAFgAAAB0AAAAAQAAAGgNEABYAAAAewAAAAEAAACQAAAA5A8QAC0AAAAREBAADAAAAFAPEAABAAAAYAAAAIgAAABoAAAASAAAAHAPEAB0AAAAEAAAAAkAAAAvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvbWFjcm9zL21vZC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVYEBAAFwAAALQBAAAeAAAAc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ2LjAgKDA0NDg4YWZlMyAyMDIwLTA4LTI0KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNjggKGEwNGUxODk3MSk=", +); +let wasm; + +let cachedTextDecoder = new TextDecoder("utf-8", { + ignoreBOM: true, + fatal: true, +}); + +cachedTextDecoder.decode(); + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if ( + cachegetUint8Memory0 === null || + cachegetUint8Memory0.buffer !== wasm.memory.buffer + ) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { + return heap[idx]; +} + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let WASM_VECTOR_LEN = 0; + +let cachedTextEncoder = new TextEncoder("utf-8"); + +const encodeString = + (typeof cachedTextEncoder.encodeInto === "function" + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length, + }; + }); + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** +* @param {string} algorithm +* @returns {DenoHash} +*/ +export function create_hash(algorithm) { + var ptr0 = passStringToWasm0( + algorithm, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc, + ); + var len0 = WASM_VECTOR_LEN; + var ret = wasm.create_hash(ptr0, len0); + return DenoHash.__wrap(ret); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +/** +* @param {DenoHash} hash +* @param {Uint8Array} data +*/ +export function update_hash(hash, data) { + _assertClass(hash, DenoHash); + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.update_hash(hash.ptr, ptr0, len0); +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if ( + cachegetInt32Memory0 === null || + cachegetInt32Memory0.buffer !== wasm.memory.buffer + ) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} + +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +/** +* @param {DenoHash} hash +* @returns {Uint8Array} +*/ +export function digest_hash(hash) { + try { + const retptr = wasm.__wbindgen_export_2.value - 16; + wasm.__wbindgen_export_2.value = retptr; + _assertClass(hash, DenoHash); + wasm.digest_hash(retptr, hash.ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally { + wasm.__wbindgen_export_2.value += 16; + } +} + +/** +*/ +export class DenoHash { + static __wrap(ptr) { + const obj = Object.create(DenoHash.prototype); + obj.ptr = ptr; + + return obj; + } + + free() { + const ptr = this.ptr; + this.ptr = 0; + + wasm.__wbg_denohash_free(ptr); + } +} + +async function load(module, imports) { + if (typeof Response === "function" && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === "function") { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get("Content-Type") != "application/wasm") { + console.warn( + "`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", + e, + ); + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } +} + +async function init(input) { + if (typeof input === "undefined") { + input = import.meta.url.replace(/\.js$/, "_bg.wasm"); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function (arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_rethrow = function (arg0) { + throw takeObject(arg0); + }; + + if ( + typeof input === "string" || + (typeof Request === "function" && input instanceof Request) || + (typeof URL === "function" && input instanceof URL) + ) { + input = fetch(input); + } + + const { instance, module } = await load(await input, imports); + + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + + return wasm; +} + +export default init; diff --git a/bundler/tests/.cache/deno/d8bcd6288eaf9241602757273e6ce0cae3f89f22.ts b/bundler/tests/.cache/deno/d8bcd6288eaf9241602757273e6ce0cae3f89f22.ts new file mode 100644 index 00000000000..4b0e3a551db --- /dev/null +++ b/bundler/tests/.cache/deno/d8bcd6288eaf9241602757273e6ce0cae3f89f22.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.81.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/d90518e14164d26b969f8df2555db8f9ab2b4f60.ts b/bundler/tests/.cache/deno/d90518e14164d26b969f8df2555db8f9ab2b4f60.ts new file mode 100644 index 00000000000..96be5414e91 --- /dev/null +++ b/bundler/tests/.cache/deno/d90518e14164d26b969f8df2555db8f9ab2b4f60.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/is.js + + +import _curry2 from './internal/_curry2.js'; + + +/** + * See if an object (`val`) is an instance of the supplied constructor. This + * function will check up the inheritance chain, if any. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Type + * @sig (* -> {*}) -> a -> Boolean + * @param {Object} ctor A constructor + * @param {*} val The value to test + * @return {Boolean} + * @example + * + * R.is(Object, {}); //=> true + * R.is(Number, 1); //=> true + * R.is(Object, 1); //=> false + * R.is(String, 's'); //=> true + * R.is(String, new String('')); //=> true + * R.is(Object, new String('')); //=> true + * R.is(Object, 's'); //=> false + * R.is(Number, {}); //=> false + */ +var is = _curry2(function is(Ctor, val) { + return val != null && val.constructor === Ctor || val instanceof Ctor; +}); +export default is; diff --git a/bundler/tests/.cache/deno/d908bfc1c8b682eb8f4cb3ce86534748cc75fe1e.ts b/bundler/tests/.cache/deno/d908bfc1c8b682eb8f4cb3ce86534748cc75fe1e.ts new file mode 100644 index 00000000000..7b82dbda3af --- /dev/null +++ b/bundler/tests/.cache/deno/d908bfc1c8b682eb8f4cb3ce86534748cc75fe1e.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/insert.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Inserts the supplied element into the list, at the specified `index`. _Note that + + * this is not destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} index The position to insert the element + * @param {*} elt The element to insert into the Array + * @param {Array} list The list to insert into + * @return {Array} A new Array with `elt` inserted at `index`. + * @example + * + * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4] + */ +var insert = _curry3(function insert(idx, elt, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + var result = Array.prototype.slice.call(list, 0); + result.splice(idx, 0, elt); + return result; +}); +export default insert; diff --git a/bundler/tests/.cache/deno/d90ce64f0f06c337774c0110ec715b8b322fd010.ts b/bundler/tests/.cache/deno/d90ce64f0f06c337774c0110ec715b8b322fd010.ts new file mode 100644 index 00000000000..a17a891a489 --- /dev/null +++ b/bundler/tests/.cache/deno/d90ce64f0f06c337774c0110ec715b8b322fd010.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/schema/failsafe.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Schema } from "../schema.ts"; +import { map, seq, str } from "../type/mod.ts"; + +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 +export const failsafe = new Schema({ + explicit: [str, seq, map], +}); diff --git a/bundler/tests/.cache/deno/d922f58353cb797ed32e711f48b910f4d15e4f32.ts b/bundler/tests/.cache/deno/d922f58353cb797ed32e711f48b910f4d15e4f32.ts new file mode 100644 index 00000000000..1b573376bea --- /dev/null +++ b/bundler/tests/.cache/deno/d922f58353cb797ed32e711f48b910f4d15e4f32.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isVariableWidth.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// @ts-ignore allowing typedoc to build +import { fullWidth } from './isFullWidth.ts'; +// @ts-ignore allowing typedoc to build +import { halfWidth } from './isHalfWidth.ts'; + +export const isVariableWidth = (str: string) => { + assertString(str); + return fullWidth.test(str) && halfWidth.test(str); +}; diff --git a/bundler/tests/.cache/deno/d93268d85a61c7cf2a9f287805bf3b2e034b45ee.ts b/bundler/tests/.cache/deno/d93268d85a61c7cf2a9f287805bf3b2e034b45ee.ts new file mode 100644 index 00000000000..24ca947de91 --- /dev/null +++ b/bundler/tests/.cache/deno/d93268d85a61c7cf2a9f287805bf3b2e034b45ee.ts @@ -0,0 +1,384 @@ +// Loaded from https://deno.land/std@0.74.0/http/server.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { encode } from "../encoding/utf8.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { assert } from "../_util/assert.ts"; +import { Deferred, deferred, MuxAsyncIterator } from "../async/mod.ts"; +import { + bodyReader, + chunkedBodyReader, + emptyReader, + readRequest, + writeResponse, +} from "./_io.ts"; + +export class ServerRequest { + url!: string; + method!: string; + proto!: string; + protoMinor!: number; + protoMajor!: number; + headers!: Headers; + conn!: Deno.Conn; + r!: BufReader; + w!: BufWriter; + done: Deferred = deferred(); + + private _contentLength: number | undefined | null = undefined; + /** + * Value of Content-Length header. + * If null, then content length is invalid or not given (e.g. chunked encoding). + */ + get contentLength(): number | null { + // undefined means not cached. + // null means invalid or not provided. + if (this._contentLength === undefined) { + const cl = this.headers.get("content-length"); + if (cl) { + this._contentLength = parseInt(cl); + // Convert NaN to null (as NaN harder to test) + if (Number.isNaN(this._contentLength)) { + this._contentLength = null; + } + } else { + this._contentLength = null; + } + } + return this._contentLength; + } + + private _body: Deno.Reader | null = null; + + /** + * Body of the request. The easiest way to consume the body is: + * + * const buf: Uint8Array = await Deno.readAll(req.body); + */ + get body(): Deno.Reader { + if (!this._body) { + if (this.contentLength != null) { + this._body = bodyReader(this.contentLength, this.r); + } else { + const transferEncoding = this.headers.get("transfer-encoding"); + if (transferEncoding != null) { + const parts = transferEncoding + .split(",") + .map((e): string => e.trim().toLowerCase()); + assert( + parts.includes("chunked"), + 'transfer-encoding must include "chunked" if content-length is not set', + ); + this._body = chunkedBodyReader(this.headers, this.r); + } else { + // Neither content-length nor transfer-encoding: chunked + this._body = emptyReader(); + } + } + } + return this._body; + } + + async respond(r: Response): Promise { + let err: Error | undefined; + try { + // Write our response! + await writeResponse(this.w, r); + } catch (e) { + try { + // Eagerly close on error. + this.conn.close(); + } catch { + // Pass + } + err = e; + } + // Signal that this request has been processed and the next pipelined + // request on the same connection can be accepted. + this.done.resolve(err); + if (err) { + // Error during responding, rethrow. + throw err; + } + } + + private finalized = false; + async finalize(): Promise { + if (this.finalized) return; + // Consume unread body + const body = this.body; + const buf = new Uint8Array(1024); + while ((await body.read(buf)) !== null) { + // Pass + } + this.finalized = true; + } +} + +export class Server implements AsyncIterable { + private closing = false; + private connections: Deno.Conn[] = []; + + constructor(public listener: Deno.Listener) {} + + close(): void { + this.closing = true; + this.listener.close(); + for (const conn of this.connections) { + try { + conn.close(); + } catch (e) { + // Connection might have been already closed + if (!(e instanceof Deno.errors.BadResource)) { + throw e; + } + } + } + } + + // Yields all HTTP requests on a single TCP connection. + private async *iterateHttpRequests( + conn: Deno.Conn, + ): AsyncIterableIterator { + const reader = new BufReader(conn); + const writer = new BufWriter(conn); + + while (!this.closing) { + let request: ServerRequest | null; + try { + request = await readRequest(conn, reader); + } catch (error) { + if ( + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + // An error was thrown while parsing request headers. + await writeResponse(writer, { + status: 400, + body: encode(`${error.message}\r\n\r\n`), + }); + } + break; + } + if (request === null) { + break; + } + + request.w = writer; + yield request; + + // Wait for the request to be processed before we accept a new request on + // this connection. + const responseError = await request.done; + if (responseError) { + // Something bad happened during response. + // (likely other side closed during pipelined req) + // req.done implies this connection already closed, so we can just return. + this.untrackConnection(request.conn); + return; + } + // Consume unread body and trailers if receiver didn't consume those data + await request.finalize(); + } + + this.untrackConnection(conn); + try { + conn.close(); + } catch (e) { + // might have been already closed + } + } + + private trackConnection(conn: Deno.Conn): void { + this.connections.push(conn); + } + + private untrackConnection(conn: Deno.Conn): void { + const index = this.connections.indexOf(conn); + if (index !== -1) { + this.connections.splice(index, 1); + } + } + + // Accepts a new TCP connection and yields all HTTP requests that arrive on + // it. When a connection is accepted, it also creates a new iterator of the + // same kind and adds it to the request multiplexer so that another TCP + // connection can be accepted. + private async *acceptConnAndIterateHttpRequests( + mux: MuxAsyncIterator, + ): AsyncIterableIterator { + if (this.closing) return; + // Wait for a new connection. + let conn: Deno.Conn; + try { + conn = await this.listener.accept(); + } catch (error) { + if ( + error instanceof Deno.errors.BadResource || + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + return mux.add(this.acceptConnAndIterateHttpRequests(mux)); + } + throw error; + } + this.trackConnection(conn); + // Try to accept another connection and add it to the multiplexer. + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + // Yield the requests that arrive on the just-accepted connection. + yield* this.iterateHttpRequests(conn); + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + const mux: MuxAsyncIterator = new MuxAsyncIterator(); + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + return mux.iterate(); + } +} + +/** Options for creating an HTTP server. */ +export type HTTPOptions = Omit; + +/** + * Parse addr from string + * + * const addr = "::1:8000"; + * parseAddrFromString(addr); + * + * @param addr Address string + */ +export function _parseAddrFromStr(addr: string): HTTPOptions { + let url: URL; + try { + const host = addr.startsWith(":") ? `0.0.0.0${addr}` : addr; + url = new URL(`http://${host}`); + } catch { + throw new TypeError("Invalid address."); + } + if ( + url.username || + url.password || + url.pathname != "/" || + url.search || + url.hash + ) { + throw new TypeError("Invalid address."); + } + + return { + hostname: url.hostname, + port: url.port === "" ? 80 : Number(url.port), + }; +} + +/** + * Create a HTTP server + * + * import { serve } from "https://deno.land/std/http/server.ts"; + * const body = "Hello World\n"; + * const server = serve({ port: 8000 }); + * for await (const req of server) { + * req.respond({ body }); + * } + */ +export function serve(addr: string | HTTPOptions): Server { + if (typeof addr === "string") { + addr = _parseAddrFromStr(addr); + } + + const listener = Deno.listen(addr); + return new Server(listener); +} + +/** + * Start an HTTP server with given options and request handler + * + * const body = "Hello World\n"; + * const options = { port: 8000 }; + * listenAndServe(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServe( + addr: string | HTTPOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serve(addr); + + for await (const request of server) { + handler(request); + } +} + +/** Options for creating an HTTPS server. */ +export type HTTPSOptions = Omit; + +/** + * Create an HTTPS server with given options + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * for await (const req of serveTLS(options)) { + * req.respond({ body }); + * } + * + * @param options Server configuration + * @return Async iterable server instance for incoming requests + */ +export function serveTLS(options: HTTPSOptions): Server { + const tlsOptions: Deno.ListenTlsOptions = { + ...options, + transport: "tcp", + }; + const listener = Deno.listenTls(tlsOptions); + return new Server(listener); +} + +/** + * Start an HTTPS server with given options and request handler + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * listenAndServeTLS(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServeTLS( + options: HTTPSOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serveTLS(options); + + for await (const request of server) { + handler(request); + } +} + +/** + * Interface of HTTP server response. + * If body is a Reader, response would be chunked. + * If body is a string, it would be UTF-8 encoded by default. + */ +export interface Response { + status?: number; + headers?: Headers; + body?: Uint8Array | Deno.Reader | string; + trailers?: () => Promise | Headers; +} diff --git a/bundler/tests/.cache/deno/d95bc3fd6eaca0abff1a4380d03c0cb37b0fcca8.ts b/bundler/tests/.cache/deno/d95bc3fd6eaca0abff1a4380d03c0cb37b0fcca8.ts new file mode 100644 index 00000000000..a041de8cb21 --- /dev/null +++ b/bundler/tests/.cache/deno/d95bc3fd6eaca0abff1a4380d03c0cb37b0fcca8.ts @@ -0,0 +1,383 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/visitor.js + + +import inspect from '../jsutils/inspect.js'; +import { isNode } from './ast.js'; +/** + * A visitor is provided to visit, it contains the collection of + * relevant functions to be called during the visitor's traversal. + */ + +export const QueryDocumentKeys = { + Name: [], + Document: ['definitions'], + OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'], + VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'], + Variable: ['name'], + SelectionSet: ['selections'], + Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'], + Argument: ['name', 'value'], + FragmentSpread: ['name', 'directives'], + InlineFragment: ['typeCondition', 'directives', 'selectionSet'], + FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed + // or removed in the future. + 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'], + IntValue: [], + FloatValue: [], + StringValue: [], + BooleanValue: [], + NullValue: [], + EnumValue: [], + ListValue: ['values'], + ObjectValue: ['fields'], + ObjectField: ['name', 'value'], + Directive: ['name', 'arguments'], + NamedType: ['name'], + ListType: ['type'], + NonNullType: ['type'], + SchemaDefinition: ['description', 'directives', 'operationTypes'], + OperationTypeDefinition: ['type'], + ScalarTypeDefinition: ['description', 'name', 'directives'], + ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'], + FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'], + InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'], + InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'], + UnionTypeDefinition: ['description', 'name', 'directives', 'types'], + EnumTypeDefinition: ['description', 'name', 'directives', 'values'], + EnumValueDefinition: ['description', 'name', 'directives'], + InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'], + DirectiveDefinition: ['description', 'name', 'arguments', 'locations'], + SchemaExtension: ['directives', 'operationTypes'], + ScalarTypeExtension: ['name', 'directives'], + ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'], + InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'], + UnionTypeExtension: ['name', 'directives', 'types'], + EnumTypeExtension: ['name', 'directives', 'values'], + InputObjectTypeExtension: ['name', 'directives', 'fields'] +}; +export const BREAK = Object.freeze({}); +/** + * visit() will walk through an AST using a depth first traversal, calling + * the visitor's enter function at each node in the traversal, and calling the + * leave function after visiting that node and all of its child nodes. + * + * By returning different values from the enter and leave functions, the + * behavior of the visitor can be altered, including skipping over a sub-tree of + * the AST (by returning false), editing the AST by returning a value or null + * to remove the value, or to stop the whole traversal by returning BREAK. + * + * When using visit() to edit an AST, the original AST will not be modified, and + * a new version of the AST with the changes applied will be returned from the + * visit function. + * + * const editedAST = visit(ast, { + * enter(node, key, parent, path, ancestors) { + * // @return + * // undefined: no action + * // false: skip visiting this node + * // visitor.BREAK: stop visiting altogether + * // null: delete this node + * // any value: replace this node with the returned value + * }, + * leave(node, key, parent, path, ancestors) { + * // @return + * // undefined: no action + * // false: no action + * // visitor.BREAK: stop visiting altogether + * // null: delete this node + * // any value: replace this node with the returned value + * } + * }); + * + * Alternatively to providing enter() and leave() functions, a visitor can + * instead provide functions named the same as the kinds of AST nodes, or + * enter/leave visitors at a named key, leading to four permutations of + * visitor API: + * + * 1) Named visitors triggered when entering a node a specific kind. + * + * visit(ast, { + * Kind(node) { + * // enter the "Kind" node + * } + * }) + * + * 2) Named visitors that trigger upon entering and leaving a node of + * a specific kind. + * + * visit(ast, { + * Kind: { + * enter(node) { + * // enter the "Kind" node + * } + * leave(node) { + * // leave the "Kind" node + * } + * } + * }) + * + * 3) Generic visitors that trigger upon entering and leaving any node. + * + * visit(ast, { + * enter(node) { + * // enter any node + * }, + * leave(node) { + * // leave any node + * } + * }) + * + * 4) Parallel visitors for entering and leaving nodes of a specific kind. + * + * visit(ast, { + * enter: { + * Kind(node) { + * // enter the "Kind" node + * } + * }, + * leave: { + * Kind(node) { + * // leave the "Kind" node + * } + * } + * }) + */ + +export function visit(root, visitor, visitorKeys = QueryDocumentKeys) { + /* eslint-disable no-undef-init */ + let stack = undefined; + let inArray = Array.isArray(root); + let keys = [root]; + let index = -1; + let edits = []; + let node = undefined; + let key = undefined; + let parent = undefined; + const path = []; + const ancestors = []; + let newRoot = root; + /* eslint-enable no-undef-init */ + + do { + index++; + const isLeaving = index === keys.length; + const isEdited = isLeaving && edits.length !== 0; + + if (isLeaving) { + key = ancestors.length === 0 ? undefined : path[path.length - 1]; + node = parent; + parent = ancestors.pop(); + + if (isEdited) { + if (inArray) { + node = node.slice(); + } else { + const clone = {}; + + for (const k of Object.keys(node)) { + clone[k] = node[k]; + } + + node = clone; + } + + let editOffset = 0; + + for (let ii = 0; ii < edits.length; ii++) { + let editKey = edits[ii][0]; + const editValue = edits[ii][1]; + + if (inArray) { + editKey -= editOffset; + } + + if (inArray && editValue === null) { + node.splice(editKey, 1); + editOffset++; + } else { + node[editKey] = editValue; + } + } + } + + index = stack.index; + keys = stack.keys; + edits = stack.edits; + inArray = stack.inArray; + stack = stack.prev; + } else { + key = parent ? inArray ? index : keys[index] : undefined; + node = parent ? parent[key] : newRoot; + + if (node === null || node === undefined) { + continue; + } + + if (parent) { + path.push(key); + } + } + + let result; + + if (!Array.isArray(node)) { + if (!isNode(node)) { + throw new Error(`Invalid AST Node: ${inspect(node)}.`); + } + + const visitFn = getVisitFn(visitor, node.kind, isLeaving); + + if (visitFn) { + result = visitFn.call(visitor, node, key, parent, path, ancestors); + + if (result === BREAK) { + break; + } + + if (result === false) { + if (!isLeaving) { + path.pop(); + continue; + } + } else if (result !== undefined) { + edits.push([key, result]); + + if (!isLeaving) { + if (isNode(result)) { + node = result; + } else { + path.pop(); + continue; + } + } + } + } + } + + if (result === undefined && isEdited) { + edits.push([key, node]); + } + + if (isLeaving) { + path.pop(); + } else { + stack = { + inArray, + index, + keys, + edits, + prev: stack + }; + inArray = Array.isArray(node); + keys = inArray ? node : visitorKeys[node.kind] ?? []; + index = -1; + edits = []; + + if (parent) { + ancestors.push(parent); + } + + parent = node; + } + } while (stack !== undefined); + + if (edits.length !== 0) { + newRoot = edits[edits.length - 1][1]; + } + + return newRoot; +} +/** + * Creates a new visitor instance which delegates to many visitors to run in + * parallel. Each visitor will be visited for each node before moving on. + * + * If a prior visitor edits a node, no following visitors will see that node. + */ + +export function visitInParallel(visitors) { + const skipping = new Array(visitors.length); + return { + enter(node) { + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] == null) { + const fn = getVisitFn(visitors[i], node.kind, + /* isLeaving */ + false); + + if (fn) { + const result = fn.apply(visitors[i], arguments); + + if (result === false) { + skipping[i] = node; + } else if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== undefined) { + return result; + } + } + } + } + }, + + leave(node) { + for (let i = 0; i < visitors.length; i++) { + if (skipping[i] == null) { + const fn = getVisitFn(visitors[i], node.kind, + /* isLeaving */ + true); + + if (fn) { + const result = fn.apply(visitors[i], arguments); + + if (result === BREAK) { + skipping[i] = BREAK; + } else if (result !== undefined && result !== false) { + return result; + } + } + } else if (skipping[i] === node) { + skipping[i] = null; + } + } + } + + }; +} +/** + * Given a visitor instance, if it is leaving or not, and a node kind, return + * the function the visitor runtime should call. + */ + +export function getVisitFn(visitor, kind, isLeaving) { + const kindVisitor = visitor[kind]; + + if (kindVisitor) { + if (!isLeaving && typeof kindVisitor === 'function') { + // { Kind() {} } + return kindVisitor; + } + + const kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter; + + if (typeof kindSpecificVisitor === 'function') { + // { Kind: { enter() {}, leave() {} } } + return kindSpecificVisitor; + } + } else { + const specificVisitor = isLeaving ? visitor.leave : visitor.enter; + + if (specificVisitor) { + if (typeof specificVisitor === 'function') { + // { enter() {}, leave() {} } + return specificVisitor; + } + + const specificKindVisitor = specificVisitor[kind]; + + if (typeof specificKindVisitor === 'function') { + // { enter: { Kind() {} }, leave: { Kind() {} } } + return specificKindVisitor; + } + } + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d95edbcb827d78c6c55bb679a9be33c6763c438f.ts b/bundler/tests/.cache/deno/d95edbcb827d78c6c55bb679a9be33c6763c438f.ts new file mode 100644 index 00000000000..b07f37d518d --- /dev/null +++ b/bundler/tests/.cache/deno/d95edbcb827d78c6c55bb679a9be33c6763c438f.ts @@ -0,0 +1,75 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/keyStack.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +// This was inspired by [keygrip](https://github.com/crypto-utils/keygrip/) +// which allows signing of data (cookies) to prevent tampering, but also allows +// for easy key rotation without needing to resign the data. + +import { HmacSha256 } from "./deps.ts"; +import { compare } from "./tssCompare.ts"; + +export type Data = string | number[] | ArrayBuffer | Uint8Array; +export type Key = string | number[] | ArrayBuffer | Uint8Array; + +const replacements: Record = { + "/": "_", + "+": "-", + "=": "", +}; + +export class KeyStack { + #keys: Key[]; + + /** A class which accepts an array of keys that are used to sign and verify + * data and allows easy key rotation without invalidation of previously signed + * data. + * + * @param keys An array of keys, of which the index 0 will be used to sign + * data, but verification can happen against any key. + */ + constructor(keys: Key[]) { + if (!(0 in keys)) { + throw new TypeError("keys must contain at least one value"); + } + this.#keys = keys; + } + + #sign = (data: Data, key: Key): string => { + return btoa( + String.fromCharCode.apply( + undefined, + // deno-lint-ignore no-explicit-any + new Uint8Array(new HmacSha256(key).update(data).arrayBuffer()) as any, + ), + ) + .replace(/\/|\+|=/g, (c) => replacements[c]); + }; + + /** Take `data` and return a SHA256 HMAC digest that uses the current 0 index + * of the `keys` passed to the constructor. This digest is in the form of a + * URL safe base64 encoded string. */ + sign(data: Data): string { + return this.#sign(data, this.#keys[0]); + } + + /** Given `data` and a `digest`, verify that one of the `keys` provided the + * constructor was used to generate the `digest`. Returns `true` if one of + * the keys was used, otherwise `false`. */ + verify(data: Data, digest: string): boolean { + return this.indexOf(data, digest) > -1; + } + + /** Given `data` and a `digest`, return the current index of the key in the + * `keys` passed the constructor that was used to generate the digest. If no + * key can be found, the method returns `-1`. */ + indexOf(data: Data, digest: string): number { + for (let i = 0; i < this.#keys.length; i++) { + if (compare(digest, this.#sign(data, this.#keys[i]))) { + return i; + } + } + return -1; + } +} diff --git a/bundler/tests/.cache/deno/d9757bfdd62aee27fcd8d0da2ec1571c3b5637c5.ts b/bundler/tests/.cache/deno/d9757bfdd62aee27fcd8d0da2ec1571c3b5637c5.ts new file mode 100644 index 00000000000..8735c053981 --- /dev/null +++ b/bundler/tests/.cache/deno/d9757bfdd62aee27fcd8d0da2ec1571c3b5637c5.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/error/index.js + + +export { GraphQLError, printError } from './GraphQLError.js'; +export { syntaxError } from './syntaxError.js'; +export { locatedError } from './locatedError.js'; +export { formatError } from './formatError.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/d9829961282894c30686f560abf9c7f08e1483db.ts b/bundler/tests/.cache/deno/d9829961282894c30686f560abf9c7f08e1483db.ts new file mode 100644 index 00000000000..f0be0f7a3a5 --- /dev/null +++ b/bundler/tests/.cache/deno/d9829961282894c30686f560abf9c7f08e1483db.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.77.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/d991bc996063c32bf9ff0e51251ee2f00409835d.ts b/bundler/tests/.cache/deno/d991bc996063c32bf9ff0e51251ee2f00409835d.ts new file mode 100644 index 00000000000..f0e1635273c --- /dev/null +++ b/bundler/tests/.cache/deno/d991bc996063c32bf9ff0e51251ee2f00409835d.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.77.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/d9dfebe5a40cc21a267c2c8cd2a03403cdd599b7.ts b/bundler/tests/.cache/deno/d9dfebe5a40cc21a267c2c8cd2a03403cdd599b7.ts new file mode 100644 index 00000000000..a24b72362f9 --- /dev/null +++ b/bundler/tests/.cache/deno/d9dfebe5a40cc21a267c2c8cd2a03403cdd599b7.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/hasIn.js + + +import _curry2 from './internal/_curry2.js'; +import isNil from './isNil.js'; + + +/** + * Returns whether or not an object or its prototype chain has a property with + * the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * function Rectangle(width, height) { + * this.width = width; + * this.height = height; + * } + * Rectangle.prototype.area = function() { + * return this.width * this.height; + * }; + * + * const square = new Rectangle(2, 2); + * R.hasIn('width', square); //=> true + * R.hasIn('area', square); //=> true + */ +var hasIn = _curry2(function hasIn(prop, obj) { + if (isNil(obj)) { + return false; + } + return prop in obj; +}); +export default hasIn; diff --git a/bundler/tests/.cache/deno/da208af4ea18f9dd34a64c594b7863ccfb6dba7f.ts b/bundler/tests/.cache/deno/da208af4ea18f9dd34a64c594b7863ccfb6dba7f.ts new file mode 100644 index 00000000000..89f06753e29 --- /dev/null +++ b/bundler/tests/.cache/deno/da208af4ea18f9dd34a64c594b7863ccfb6dba7f.ts @@ -0,0 +1,63 @@ +// Loaded from https://deno.land/x/mysql/src/constant/mysql_types.ts + + +/** @ignore */ +export const MYSQL_TYPE_DECIMAL = 0x00; +/** @ignore */ +export const MYSQL_TYPE_TINY = 0x01; +/** @ignore */ +export const MYSQL_TYPE_SHORT = 0x02; +/** @ignore */ +export const MYSQL_TYPE_LONG = 0x03; +/** @ignore */ +export const MYSQL_TYPE_FLOAT = 0x04; +/** @ignore */ +export const MYSQL_TYPE_DOUBLE = 0x05; +/** @ignore */ +export const MYSQL_TYPE_NULL = 0x06; +/** @ignore */ +export const MYSQL_TYPE_TIMESTAMP = 0x07; +/** @ignore */ +export const MYSQL_TYPE_LONGLONG = 0x08; +/** @ignore */ +export const MYSQL_TYPE_INT24 = 0x09; +/** @ignore */ +export const MYSQL_TYPE_DATE = 0x0a; +/** @ignore */ +export const MYSQL_TYPE_TIME = 0x0b; +/** @ignore */ +export const MYSQL_TYPE_DATETIME = 0x0c; +/** @ignore */ +export const MYSQL_TYPE_YEAR = 0x0d; +/** @ignore */ +export const MYSQL_TYPE_NEWDATE = 0x0e; +/** @ignore */ +export const MYSQL_TYPE_VARCHAR = 0x0f; +/** @ignore */ +export const MYSQL_TYPE_BIT = 0x10; +/** @ignore */ +export const MYSQL_TYPE_TIMESTAMP2 = 0x11; +/** @ignore */ +export const MYSQL_TYPE_DATETIME2 = 0x12; +/** @ignore */ +export const MYSQL_TYPE_TIME2 = 0x13; +/** @ignore */ +export const MYSQL_TYPE_NEWDECIMAL = 0xf6; +/** @ignore */ +export const MYSQL_TYPE_ENUM = 0xf7; +/** @ignore */ +export const MYSQL_TYPE_SET = 0xf8; +/** @ignore */ +export const MYSQL_TYPE_TINY_BLOB = 0xf9; +/** @ignore */ +export const MYSQL_TYPE_MEDIUM_BLOB = 0xfa; +/** @ignore */ +export const MYSQL_TYPE_LONG_BLOB = 0xfb; +/** @ignore */ +export const MYSQL_TYPE_BLOB = 0xfc; +/** @ignore */ +export const MYSQL_TYPE_VAR_STRING = 0xfd; +/** @ignore */ +export const MYSQL_TYPE_STRING = 0xfe; +/** @ignore */ +export const MYSQL_TYPE_GEOMETRY = 0xff; diff --git a/bundler/tests/.cache/deno/da72e428bb685926256311dffdf9fe2470a1ffe6.ts b/bundler/tests/.cache/deno/da72e428bb685926256311dffdf9fe2470a1ffe6.ts new file mode 100644 index 00000000000..c4059ce1bcc --- /dev/null +++ b/bundler/tests/.cache/deno/da72e428bb685926256311dffdf9fe2470a1ffe6.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/UniqueEnumValueNamesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { isEnumType } from '../../type/definition.js'; + +/** + * Unique enum value names + * + * A GraphQL enum type is only valid if all its values are uniquely named. + */ +export function UniqueEnumValueNamesRule(context) { + const schema = context.getSchema(); + const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null); + const knownValueNames = Object.create(null); + return { + EnumTypeDefinition: checkValueUniqueness, + EnumTypeExtension: checkValueUniqueness + }; + + function checkValueUniqueness(node) { + const typeName = node.name.value; + + if (!knownValueNames[typeName]) { + knownValueNames[typeName] = Object.create(null); + } + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + + const valueNodes = node.values ?? []; + const valueNames = knownValueNames[typeName]; + + for (const valueDef of valueNodes) { + const valueName = valueDef.name.value; + const existingType = existingTypeMap[typeName]; + + if (isEnumType(existingType) && existingType.getValue(valueName)) { + context.reportError(new GraphQLError(`Enum value "${typeName}.${valueName}" already exists in the schema. It cannot also be defined in this type extension.`, valueDef.name)); + } else if (valueNames[valueName]) { + context.reportError(new GraphQLError(`Enum value "${typeName}.${valueName}" can only be defined once.`, [valueNames[valueName], valueDef.name])); + } else { + valueNames[valueName] = valueDef.name; + } + } + + return false; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/da99e09ca02d3d32967d4903bb3149ce9af83fcf.ts b/bundler/tests/.cache/deno/da99e09ca02d3d32967d4903bb3149ce9af83fcf.ts new file mode 100644 index 00000000000..9bd193a894a --- /dev/null +++ b/bundler/tests/.cache/deno/da99e09ca02d3d32967d4903bb3149ce9af83fcf.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/mod.ts + + +export type { + GraphQLType, + GraphQLInputType, + GraphQLOutputType, + GraphQLLeafType, + GraphQLCompositeType, + GraphQLAbstractType, + GraphQLWrappingType, + GraphQLNullableType, + GraphQLNamedType, + Thunk, + GraphQLSchemaConfig, + GraphQLDirectiveConfig, + GraphQLArgument, + GraphQLArgumentConfig, + GraphQLEnumTypeConfig, + GraphQLEnumValue, + GraphQLEnumValueConfig, + GraphQLEnumValueConfigMap, + GraphQLField, + GraphQLFieldConfig, + GraphQLFieldConfigArgumentMap, + GraphQLFieldConfigMap, + GraphQLFieldMap, + GraphQLFieldResolver, + GraphQLInputField, + GraphQLInputFieldConfig, + GraphQLInputFieldConfigMap, + GraphQLInputFieldMap, + GraphQLInputObjectTypeConfig, + GraphQLInterfaceTypeConfig, + GraphQLIsTypeOfFn, + GraphQLObjectTypeConfig, + GraphQLResolveInfo, + ResponsePath, + GraphQLScalarTypeConfig, + GraphQLTypeResolver, + GraphQLUnionTypeConfig, + GraphQLScalarSerializer, + GraphQLScalarValueParser, + GraphQLScalarLiteralParser, + ParseOptions, + SourceLocation, + Location, + Token, + TokenKindEnum, + KindEnum, + DirectiveLocationEnum, + // Visitor utilities + ASTVisitor, + Visitor, + VisitFn, + VisitorKeyMap, + // AST nodes + ASTNode, + ASTKindToNode, + // Each kind of AST node + NameNode, + DocumentNode, + DefinitionNode, + ExecutableDefinitionNode, + OperationDefinitionNode, + OperationTypeNode, + VariableDefinitionNode, + VariableNode, + SelectionSetNode, + SelectionNode, + FieldNode, + ArgumentNode, + FragmentSpreadNode, + InlineFragmentNode, + FragmentDefinitionNode, + ValueNode, + IntValueNode, + FloatValueNode, + StringValueNode, + BooleanValueNode, + NullValueNode, + EnumValueNode, + ListValueNode, + ObjectValueNode, + ObjectFieldNode, + DirectiveNode, + TypeNode, + NamedTypeNode, + ListTypeNode, + NonNullTypeNode, + TypeSystemDefinitionNode, + SchemaDefinitionNode, + OperationTypeDefinitionNode, + TypeDefinitionNode, + ScalarTypeDefinitionNode, + ObjectTypeDefinitionNode, + FieldDefinitionNode, + InputValueDefinitionNode, + InterfaceTypeDefinitionNode, + UnionTypeDefinitionNode, + EnumTypeDefinitionNode, + EnumValueDefinitionNode, + InputObjectTypeDefinitionNode, + DirectiveDefinitionNode, + TypeSystemExtensionNode, + SchemaExtensionNode, + TypeExtensionNode, + ScalarTypeExtensionNode, + ObjectTypeExtensionNode, + InterfaceTypeExtensionNode, + UnionTypeExtensionNode, + EnumTypeExtensionNode, + InputObjectTypeExtensionNode, + ExecutionArgs, + ExecutionResult, + SubscriptionArgs, + ValidationRule, + GraphQLFormattedError, + IntrospectionOptions, + IntrospectionQuery, + IntrospectionSchema, + IntrospectionType, + IntrospectionInputType, + IntrospectionOutputType, + IntrospectionScalarType, + IntrospectionObjectType, + IntrospectionInterfaceType, + IntrospectionUnionType, + IntrospectionEnumType, + IntrospectionInputObjectType, + IntrospectionTypeRef, + IntrospectionInputTypeRef, + IntrospectionOutputTypeRef, + IntrospectionNamedTypeRef, + IntrospectionListTypeRef, + IntrospectionNonNullTypeRef, + IntrospectionField, + IntrospectionInputValue, + IntrospectionEnumValue, + IntrospectionDirective, + BuildSchemaOptions, + BreakingChange, + DangerousChange, +} from './lib/index.d.ts'; + +// @deno-types="./lib/index.d.ts" +export { + version, + versionInfo, + graphql, + graphqlSync, + // Definitions + GraphQLSchema, + GraphQLDirective, + GraphQLScalarType, + GraphQLObjectType, + GraphQLInterfaceType, + GraphQLUnionType, + GraphQLEnumType, + GraphQLInputObjectType, + GraphQLList, + GraphQLNonNull, + // Standard GraphQL Scalars + specifiedScalarTypes, + GraphQLInt, + GraphQLFloat, + GraphQLString, + GraphQLBoolean, + GraphQLID, + // Built-in Directives defined by the Spec + specifiedDirectives, + GraphQLIncludeDirective, + GraphQLSkipDirective, + GraphQLDeprecatedDirective, + // "Enum" of Type Kinds + TypeKind, + // Constant Deprecation Reason + DEFAULT_DEPRECATION_REASON, + // GraphQL Types for introspection. + introspectionTypes, + __Schema, + __Directive, + __DirectiveLocation, + __Type, + __Field, + __InputValue, + __EnumValue, + __TypeKind, + // Meta-field definitions. + SchemaMetaFieldDef, + TypeMetaFieldDef, + TypeNameMetaFieldDef, + // Predicates + isSchema, + isDirective, + isType, + isScalarType, + isObjectType, + isInterfaceType, + isUnionType, + isEnumType, + isInputObjectType, + isListType, + isNonNullType, + isInputType, + isOutputType, + isLeafType, + isCompositeType, + isAbstractType, + isWrappingType, + isNullableType, + isNamedType, + isRequiredArgument, + isRequiredInputField, + isSpecifiedScalarType, + isIntrospectionType, + isSpecifiedDirective, + // Assertions + assertSchema, + assertDirective, + assertType, + assertScalarType, + assertObjectType, + assertInterfaceType, + assertUnionType, + assertEnumType, + assertInputObjectType, + assertListType, + assertNonNullType, + assertInputType, + assertOutputType, + assertLeafType, + assertCompositeType, + assertAbstractType, + assertWrappingType, + assertNullableType, + assertNamedType, + // Un-modifiers + getNullableType, + getNamedType, + // Validate GraphQL schema. + validateSchema, + assertValidSchema, + Source, + getLocation, + // Print source location + printLocation, + printSourceLocation, + // Lex + Lexer, + TokenKind, + // Parse + parse, + parseValue, + parseType, + // Print + print, + // Visit + visit, + visitInParallel, + getVisitFn, + BREAK, + Kind, + DirectiveLocation, + // Predicates + isDefinitionNode, + isExecutableDefinitionNode, + isSelectionNode, + isValueNode, + isTypeNode, + isTypeSystemDefinitionNode, + isTypeDefinitionNode, + isTypeSystemExtensionNode, + isTypeExtensionNode, + execute, + defaultFieldResolver, + defaultTypeResolver, + responsePathAsArray, + getDirectiveValues, + subscribe, + createSourceEventStream, + validate, + ValidationContext, + // All validation rules in the GraphQL Specification. + specifiedRules, + // Individual validation rules. + ExecutableDefinitionsRule, + FieldsOnCorrectTypeRule, + FragmentsOnCompositeTypesRule, + KnownArgumentNamesRule, + KnownDirectivesRule, + KnownFragmentNamesRule, + KnownTypeNamesRule, + LoneAnonymousOperationRule, + NoFragmentCyclesRule, + NoUndefinedVariablesRule, + NoUnusedFragmentsRule, + NoUnusedVariablesRule, + OverlappingFieldsCanBeMergedRule, + PossibleFragmentSpreadsRule, + ProvidedRequiredArgumentsRule, + ScalarLeafsRule, + SingleFieldSubscriptionsRule, + UniqueArgumentNamesRule, + UniqueDirectivesPerLocationRule, + UniqueFragmentNamesRule, + UniqueInputFieldNamesRule, + UniqueOperationNamesRule, + UniqueVariableNamesRule, + ValuesOfCorrectTypeRule, + VariablesAreInputTypesRule, + VariablesInAllowedPositionRule, + // SDL-specific validation rules + LoneSchemaDefinitionRule, + UniqueOperationTypesRule, + UniqueTypeNamesRule, + UniqueEnumValueNamesRule, + UniqueFieldDefinitionNamesRule, + UniqueDirectiveNamesRule, + PossibleTypeExtensionsRule, + GraphQLError, + syntaxError, + locatedError, + printError, + formatError, + getIntrospectionQuery, + getOperationAST, + getOperationRootType, + introspectionFromSchema, + buildClientSchema, + buildASTSchema, + buildSchema, + getDescription, + extendSchema, + lexicographicSortSchema, + printSchema, + printType, + printIntrospectionSchema, + typeFromAST, + valueFromAST, + valueFromASTUntyped, + astFromValue, + TypeInfo, + visitWithTypeInfo, + coerceInputValue, + concatAST, + separateOperations, + isEqualType, + isTypeSubTypeOf, + doTypesOverlap, + assertValidName, + isValidNameError, + BreakingChangeType, + DangerousChangeType, + findBreakingChanges, + findDangerousChanges, + findDeprecatedUsages +} from "./lib/index.js"; diff --git a/bundler/tests/.cache/deno/daba1372e4e33e435fa4882ec6684be5733b35c5.ts b/bundler/tests/.cache/deno/daba1372e4e33e435fa4882ec6684be5733b35c5.ts new file mode 100644 index 00000000000..cd626d32a9b --- /dev/null +++ b/bundler/tests/.cache/deno/daba1372e4e33e435fa4882ec6684be5733b35c5.ts @@ -0,0 +1,120 @@ +// Loaded from https://deno.land/std@0.85.0/path/_util.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import type { FormatInputPathObject } from "./_interface.ts"; +import { + CHAR_BACKWARD_SLASH, + CHAR_DOT, + CHAR_FORWARD_SLASH, + CHAR_LOWERCASE_A, + CHAR_LOWERCASE_Z, + CHAR_UPPERCASE_A, + CHAR_UPPERCASE_Z, +} from "./_constants.ts"; + +export function assertPath(path: string): void { + if (typeof path !== "string") { + throw new TypeError( + `Path must be a string. Received ${JSON.stringify(path)}`, + ); + } +} + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} + +export function isPathSeparator(code: number): boolean { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} + +export function isWindowsDeviceRoot(code: number): boolean { + return ( + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) + ); +} + +// Resolves . and .. elements in a path with directory names +export function normalizeString( + path: string, + allowAboveRoot: boolean, + separator: string, + isPathSeparator: (code: number) => boolean, +): string { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code: number | undefined; + for (let i = 0, len = path.length; i <= len; ++i) { + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code!)) break; + else code = CHAR_FORWARD_SLASH; + + if (isPathSeparator(code!)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if ( + res.length < 2 || + lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT + ) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +export function _format( + sep: string, + pathObject: FormatInputPathObject, +): string { + const dir: string | undefined = pathObject.dir || pathObject.root; + const base: string = pathObject.base || + (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} diff --git a/bundler/tests/.cache/deno/db17363cba3a9fed3ce8698570e6eefad91ee2c2.ts b/bundler/tests/.cache/deno/db17363cba3a9fed3ce8698570e6eefad91ee2c2.ts new file mode 100644 index 00000000000..558e4b13f88 --- /dev/null +++ b/bundler/tests/.cache/deno/db17363cba3a9fed3ce8698570e6eefad91ee2c2.ts @@ -0,0 +1,398 @@ +// Loaded from https://deno.land/std@0.81.0/http/server.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { encode } from "../encoding/utf8.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { assert } from "../_util/assert.ts"; +import { Deferred, deferred, MuxAsyncIterator } from "../async/mod.ts"; +import { + bodyReader, + chunkedBodyReader, + emptyReader, + readRequest, + writeResponse, +} from "./_io.ts"; + +export class ServerRequest { + url!: string; + method!: string; + proto!: string; + protoMinor!: number; + protoMajor!: number; + headers!: Headers; + conn!: Deno.Conn; + r!: BufReader; + w!: BufWriter; + done: Deferred = deferred(); + + private _contentLength: number | undefined | null = undefined; + /** + * Value of Content-Length header. + * If null, then content length is invalid or not given (e.g. chunked encoding). + */ + get contentLength(): number | null { + // undefined means not cached. + // null means invalid or not provided. + if (this._contentLength === undefined) { + const cl = this.headers.get("content-length"); + if (cl) { + this._contentLength = parseInt(cl); + // Convert NaN to null (as NaN harder to test) + if (Number.isNaN(this._contentLength)) { + this._contentLength = null; + } + } else { + this._contentLength = null; + } + } + return this._contentLength; + } + + private _body: Deno.Reader | null = null; + + /** + * Body of the request. The easiest way to consume the body is: + * + * const buf: Uint8Array = await Deno.readAll(req.body); + */ + get body(): Deno.Reader { + if (!this._body) { + if (this.contentLength != null) { + this._body = bodyReader(this.contentLength, this.r); + } else { + const transferEncoding = this.headers.get("transfer-encoding"); + if (transferEncoding != null) { + const parts = transferEncoding + .split(",") + .map((e): string => e.trim().toLowerCase()); + assert( + parts.includes("chunked"), + 'transfer-encoding must include "chunked" if content-length is not set', + ); + this._body = chunkedBodyReader(this.headers, this.r); + } else { + // Neither content-length nor transfer-encoding: chunked + this._body = emptyReader(); + } + } + } + return this._body; + } + + async respond(r: Response): Promise { + let err: Error | undefined; + try { + // Write our response! + await writeResponse(this.w, r); + } catch (e) { + try { + // Eagerly close on error. + this.conn.close(); + } catch { + // Pass + } + err = e; + } + // Signal that this request has been processed and the next pipelined + // request on the same connection can be accepted. + this.done.resolve(err); + if (err) { + // Error during responding, rethrow. + throw err; + } + } + + private finalized = false; + async finalize(): Promise { + if (this.finalized) return; + // Consume unread body + const body = this.body; + const buf = new Uint8Array(1024); + while ((await body.read(buf)) !== null) { + // Pass + } + this.finalized = true; + } +} + +export class Server implements AsyncIterable { + private closing = false; + private connections: Deno.Conn[] = []; + + constructor(public listener: Deno.Listener) {} + + close(): void { + this.closing = true; + this.listener.close(); + for (const conn of this.connections) { + try { + conn.close(); + } catch (e) { + // Connection might have been already closed + if (!(e instanceof Deno.errors.BadResource)) { + throw e; + } + } + } + } + + // Yields all HTTP requests on a single TCP connection. + private async *iterateHttpRequests( + conn: Deno.Conn, + ): AsyncIterableIterator { + const reader = new BufReader(conn); + const writer = new BufWriter(conn); + + while (!this.closing) { + let request: ServerRequest | null; + try { + request = await readRequest(conn, reader); + } catch (error) { + if ( + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof + ) { + // An error was thrown while parsing request headers. + // Try to send the "400 Bad Request" before closing the connection. + try { + await writeResponse(writer, { + status: 400, + body: encode(`${error.message}\r\n\r\n`), + }); + } catch (error) { + // The connection is broken. + } + } + break; + } + if (request === null) { + break; + } + + request.w = writer; + yield request; + + // Wait for the request to be processed before we accept a new request on + // this connection. + const responseError = await request.done; + if (responseError) { + // Something bad happened during response. + // (likely other side closed during pipelined req) + // req.done implies this connection already closed, so we can just return. + this.untrackConnection(request.conn); + return; + } + + try { + // Consume unread body and trailers if receiver didn't consume those data + await request.finalize(); + } catch (error) { + // Invalid data was received or the connection was closed. + break; + } + } + + this.untrackConnection(conn); + try { + conn.close(); + } catch (e) { + // might have been already closed + } + } + + private trackConnection(conn: Deno.Conn): void { + this.connections.push(conn); + } + + private untrackConnection(conn: Deno.Conn): void { + const index = this.connections.indexOf(conn); + if (index !== -1) { + this.connections.splice(index, 1); + } + } + + // Accepts a new TCP connection and yields all HTTP requests that arrive on + // it. When a connection is accepted, it also creates a new iterator of the + // same kind and adds it to the request multiplexer so that another TCP + // connection can be accepted. + private async *acceptConnAndIterateHttpRequests( + mux: MuxAsyncIterator, + ): AsyncIterableIterator { + if (this.closing) return; + // Wait for a new connection. + let conn: Deno.Conn; + try { + conn = await this.listener.accept(); + } catch (error) { + if ( + // The listener is closed: + error instanceof Deno.errors.BadResource || + // TLS handshake errors: + error instanceof Deno.errors.InvalidData || + error instanceof Deno.errors.UnexpectedEof || + error instanceof Deno.errors.ConnectionReset + ) { + return mux.add(this.acceptConnAndIterateHttpRequests(mux)); + } + throw error; + } + this.trackConnection(conn); + // Try to accept another connection and add it to the multiplexer. + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + // Yield the requests that arrive on the just-accepted connection. + yield* this.iterateHttpRequests(conn); + } + + [Symbol.asyncIterator](): AsyncIterableIterator { + const mux: MuxAsyncIterator = new MuxAsyncIterator(); + mux.add(this.acceptConnAndIterateHttpRequests(mux)); + return mux.iterate(); + } +} + +/** Options for creating an HTTP server. */ +export type HTTPOptions = Omit; + +/** + * Parse addr from string + * + * const addr = "::1:8000"; + * parseAddrFromString(addr); + * + * @param addr Address string + */ +export function _parseAddrFromStr(addr: string): HTTPOptions { + let url: URL; + try { + const host = addr.startsWith(":") ? `0.0.0.0${addr}` : addr; + url = new URL(`http://${host}`); + } catch { + throw new TypeError("Invalid address."); + } + if ( + url.username || + url.password || + url.pathname != "/" || + url.search || + url.hash + ) { + throw new TypeError("Invalid address."); + } + + return { + hostname: url.hostname, + port: url.port === "" ? 80 : Number(url.port), + }; +} + +/** + * Create a HTTP server + * + * import { serve } from "https://deno.land/std/http/server.ts"; + * const body = "Hello World\n"; + * const server = serve({ port: 8000 }); + * for await (const req of server) { + * req.respond({ body }); + * } + */ +export function serve(addr: string | HTTPOptions): Server { + if (typeof addr === "string") { + addr = _parseAddrFromStr(addr); + } + + const listener = Deno.listen(addr); + return new Server(listener); +} + +/** + * Start an HTTP server with given options and request handler + * + * const body = "Hello World\n"; + * const options = { port: 8000 }; + * listenAndServe(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServe( + addr: string | HTTPOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serve(addr); + + for await (const request of server) { + handler(request); + } +} + +/** Options for creating an HTTPS server. */ +export type HTTPSOptions = Omit; + +/** + * Create an HTTPS server with given options + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * for await (const req of serveTLS(options)) { + * req.respond({ body }); + * } + * + * @param options Server configuration + * @return Async iterable server instance for incoming requests + */ +export function serveTLS(options: HTTPSOptions): Server { + const tlsOptions: Deno.ListenTlsOptions = { + ...options, + transport: "tcp", + }; + const listener = Deno.listenTls(tlsOptions); + return new Server(listener); +} + +/** + * Start an HTTPS server with given options and request handler + * + * const body = "Hello HTTPS"; + * const options = { + * hostname: "localhost", + * port: 443, + * certFile: "./path/to/localhost.crt", + * keyFile: "./path/to/localhost.key", + * }; + * listenAndServeTLS(options, (req) => { + * req.respond({ body }); + * }); + * + * @param options Server configuration + * @param handler Request handler + */ +export async function listenAndServeTLS( + options: HTTPSOptions, + handler: (req: ServerRequest) => void, +): Promise { + const server = serveTLS(options); + + for await (const request of server) { + handler(request); + } +} + +/** + * Interface of HTTP server response. + * If body is a Reader, response would be chunked. + * If body is a string, it would be UTF-8 encoded by default. + */ +export interface Response { + status?: number; + headers?: Headers; + body?: Uint8Array | Deno.Reader | string; + trailers?: () => Promise | Headers; +} diff --git a/bundler/tests/.cache/deno/db6c92d1ffe8fa39e1c40cd3fb7843a20e00c9c2.ts b/bundler/tests/.cache/deno/db6c92d1ffe8fa39e1c40cd3fb7843a20e00c9c2.ts new file mode 100644 index 00000000000..f5c133481e9 --- /dev/null +++ b/bundler/tests/.cache/deno/db6c92d1ffe8fa39e1c40cd3fb7843a20e00c9c2.ts @@ -0,0 +1,27 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/location.js + + +/** + * Represents a location in a Source. + */ + +/** + * Takes a Source and a UTF-8 character offset, and returns the corresponding + * line and column as a SourceLocation. + */ +export function getLocation(source, position) { + const lineRegexp = /\r\n|[\n\r]/g; + let line = 1; + let column = position + 1; + let match; + + while ((match = lineRegexp.exec(source.body)) && match.index < position) { + line += 1; + column = position + 1 - (match.index + match[0].length); + } + + return { + line, + column + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/db88e3ad5eaf64791413d2c0e3efcc0b5602a9d1.ts b/bundler/tests/.cache/deno/db88e3ad5eaf64791413d2c0e3efcc0b5602a9d1.ts new file mode 100644 index 00000000000..489b9a8c618 --- /dev/null +++ b/bundler/tests/.cache/deno/db88e3ad5eaf64791413d2c0e3efcc0b5602a9d1.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/__.js + + +/** + * A special placeholder value used to specify "gaps" within curried functions, + * allowing partial application of any combination of arguments, regardless of + * their positions. + * + * If `g` is a curried ternary function and `_` is `R.__`, the following are + * equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2, _)(1, 3)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @name __ + * @constant + * @memberOf R + * @since v0.6.0 + * @category Function + * @example + * + * const greet = R.replace('{name}', R.__, 'Hello, {name}!'); + * greet('Alice'); //=> 'Hello, Alice!' + */ +export default {'@@functional/placeholder': true}; diff --git a/bundler/tests/.cache/deno/db8c4b16b87020b0182a80a60fbb71bed38b814d.ts b/bundler/tests/.cache/deno/db8c4b16b87020b0182a80a60fbb71bed38b814d.ts new file mode 100644 index 00000000000..215d97990d7 --- /dev/null +++ b/bundler/tests/.cache/deno/db8c4b16b87020b0182a80a60fbb71bed38b814d.ts @@ -0,0 +1,5 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/mod.ts + + +export * from "./dnit.ts"; +export * from "./deps.ts"; diff --git a/bundler/tests/.cache/deno/dbb10f16e8dab6b0190a0debe09d19af608b861a.ts b/bundler/tests/.cache/deno/dbb10f16e8dab6b0190a0debe09d19af608b861a.ts new file mode 100644 index 00000000000..f372dd8f77e --- /dev/null +++ b/bundler/tests/.cache/deno/dbb10f16e8dab6b0190a0debe09d19af608b861a.ts @@ -0,0 +1,961 @@ +// Loaded from https://deno.land/x/oak/router.ts + + +/** + * Adapted directly from @koa/router at + * https://github.com/koajs/router/ which is licensed as: + * + * The MIT License (MIT) + * + * Copyright (c) 2015 Alexander C. Mingoia + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +import type { State } from "./application.ts"; +import type { Context } from "./context.ts"; +import { + assert, + compile, + Key, + ParseOptions, + pathParse, + pathToRegexp, + Status, + TokensToRegexpOptions, +} from "./deps.ts"; +import { httpErrors } from "./httpError.ts"; +import { compose, Middleware } from "./middleware.ts"; +import type { HTTPMethods, RedirectStatus } from "./types.d.ts"; +import { decodeComponent } from "./util.ts"; + +interface Matches { + path: Layer[]; + pathAndMethod: Layer[]; + route: boolean; +} + +export interface RouterAllowedMethodsOptions { + /** Use the value returned from this function instead of an HTTP error + * `MethodNotAllowed`. */ + // deno-lint-ignore no-explicit-any + methodNotAllowed?(): any; + + /** Use the value returned from this function instead of an HTTP error + * `NotImplemented`. */ + // deno-lint-ignore no-explicit-any + notImplemented?(): any; + + /** When dealing with a non-implemented method or a method not allowed, throw + * an error instead of setting the status and header for the response. */ + throw?: boolean; +} + +export interface Route< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + /** The HTTP methods that this route handles. */ + methods: HTTPMethods[]; + + /** The middleware that will be applied to this route. */ + middleware: RouterMiddleware[]; + + /** An optional name for the route. */ + name?: string; + + /** Options that were used to create the route. */ + options: LayerOptions; + + /** The parameters that are identified in the route that will be parsed out + * on matched requests. */ + paramNames: (keyof P)[]; + + /** The path that this route manages. */ + path: string; + + /** The regular expression used for matching and parsing parameters for the + * route. */ + regexp: RegExp; +} + +/** The context passed router middleware. */ +export interface RouterContext< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> extends Context { + /** When matching the route, an array of the capturing groups from the regular + * expression. */ + captures: string[]; + + /** The routes that were matched for this request. */ + matched?: Layer[]; + + /** Any parameters parsed from the route when matched. */ + params: P; + + /** A reference to the router instance. */ + router: Router; + + /** If the matched route has a `name`, the matched route name is provided + * here. */ + routeName?: string; + + /** Overrides the matched path for future route middleware, when a + * `routerPath` option is not defined on the `Router` options. */ + routerPath?: string; +} + +export interface RouterMiddleware< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + (context: RouterContext, next: () => Promise): + | Promise + | void; + /** For route parameter middleware, the `param` key for this parameter will + * be set. */ + param?: keyof P; +} + +export interface RouterOptions { + /** Override the default set of methods supported by the router. */ + methods?: HTTPMethods[]; + + /** Only handle routes where the requested path starts with the prefix. */ + prefix?: string; + + /** Override the `request.url.pathname` when matching middleware to run. */ + routerPath?: string; + + /** Determines if routes are matched in a case sensitive way. Defaults to + * `false`. */ + sensitive?: boolean; + + /** Determines if routes are matched strictly, where the trailing `/` is not + * optional. Defaults to `false`. */ + strict?: boolean; +} + +/** Middleware that will be called by the router when handling a specific + * parameter, which the middleware will be called when a request matches the + * route parameter. */ +export interface RouterParamMiddleware< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + ( + param: string, + context: RouterContext, + next: () => Promise, + ): Promise | void; +} + +export type RouteParams = Record; + +type LayerOptions = TokensToRegexpOptions & ParseOptions & { + ignoreCaptures?: boolean; + name?: string; +}; + +type UrlOptions = TokensToRegexpOptions & ParseOptions & { + /** When generating a URL from a route, add the query to the URL. If an + * object */ + query?: URLSearchParams | Record | string; +}; + +/** Generate a URL from a string, potentially replace route params with + * values. */ +function toUrl(url: string, params: RouteParams = {}, options?: UrlOptions) { + const tokens = pathParse(url); + let replace: RouteParams = {}; + + if (tokens.some((token) => typeof token === "object")) { + replace = params; + } else { + options = params; + } + + const toPath = compile(url, options); + const replaced = toPath(replace); + + if (options && options.query) { + const url = new URL(replaced, "http://oak"); + if (typeof options.query === "string") { + url.search = options.query; + } else { + url.search = String( + options.query instanceof URLSearchParams + ? options.query + : new URLSearchParams(options.query), + ); + } + return `${url.pathname}${url.search}${url.hash}`; + } + return replaced; +} + +class Layer< + P extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + S extends State = Record, +> { + #opts: LayerOptions; + #paramNames: Key[] = []; + #regexp: RegExp; + + methods: HTTPMethods[]; + name?: string; + path: string; + stack: RouterMiddleware[]; + + constructor( + path: string, + methods: HTTPMethods[], + middleware: RouterMiddleware | RouterMiddleware[], + { name, ...opts }: LayerOptions = {}, + ) { + this.#opts = opts; + this.name = name; + this.methods = [...methods]; + if (this.methods.includes("GET")) { + this.methods.unshift("HEAD"); + } + this.stack = Array.isArray(middleware) ? middleware : [middleware]; + this.path = path; + this.#regexp = pathToRegexp(path, this.#paramNames, this.#opts); + } + + match(path: string): boolean { + return this.#regexp.test(path); + } + + params( + captures: string[], + existingParams: RouteParams = {}, + ): RouteParams { + const params = existingParams; + for (let i = 0; i < captures.length; i++) { + if (this.#paramNames[i]) { + const c = captures[i]; + params[this.#paramNames[i].name] = c ? decodeComponent(c) : c; + } + } + return params; + } + + captures(path: string): string[] { + if (this.#opts.ignoreCaptures) { + return []; + } + return path.match(this.#regexp)?.slice(1) ?? []; + } + + url( + params: RouteParams = {}, + options?: UrlOptions, + ): string { + const url = this.path.replace(/\(\.\*\)/g, ""); + return toUrl(url, params, options); + } + + param( + param: string, + // deno-lint-ignore no-explicit-any + fn: RouterParamMiddleware, + ) { + const stack = this.stack; + const params = this.#paramNames; + const middleware: RouterMiddleware = function ( + this: Router, + ctx, + next, + ): Promise | void { + const p = ctx.params[param]; + assert(p); + return fn.call(this, p, ctx, next); + }; + middleware.param = param; + + const names = params.map((p) => p.name); + + const x = names.indexOf(param); + if (x >= 0) { + for (let i = 0; i < stack.length; i++) { + const fn = stack[i]; + if (!fn.param || names.indexOf(fn.param as (string | number)) > x) { + stack.splice(i, 0, middleware); + break; + } + } + } + return this; + } + + setPrefix(prefix: string): this { + if (this.path) { + this.path = this.path !== "/" || this.#opts.strict === true + ? `${prefix}${this.path}` + : prefix; + this.#paramNames = []; + this.#regexp = pathToRegexp(this.path, this.#paramNames, this.#opts); + } + return this; + } + + // deno-lint-ignore no-explicit-any + toJSON(): Route { + return { + methods: [...this.methods], + middleware: [...this.stack], + paramNames: this.#paramNames.map((key) => key.name), + path: this.path, + regexp: this.#regexp, + options: { ...this.#opts }, + }; + } +} + +/** An interface for registering middleware that will run when certain HTTP + * methods and paths are requested, as well as provides a way to parameterize + * parts of the requested path. */ +export class Router< + RP extends RouteParams = RouteParams, + // deno-lint-ignore no-explicit-any + RS extends State = Record, +> { + #opts: RouterOptions; + #methods: HTTPMethods[]; + // deno-lint-ignore no-explicit-any + #params: Record> = {}; + #stack: Layer[] = []; + + #match = (path: string, method: HTTPMethods): Matches => { + const matches: Matches = { + path: [], + pathAndMethod: [], + route: false, + }; + + for (const route of this.#stack) { + if (route.match(path)) { + matches.path.push(route); + if (route.methods.length === 0 || route.methods.includes(method)) { + matches.pathAndMethod.push(route); + if (route.methods.length) { + matches.route = true; + } + } + } + } + + return matches; + }; + + #register = ( + path: string | string[], + middleware: RouterMiddleware[], + methods: HTTPMethods[], + options: LayerOptions = {}, + ): void => { + if (Array.isArray(path)) { + for (const p of path) { + this.#register(p, middleware, methods, options); + } + return; + } + + const { end, name, sensitive, strict, ignoreCaptures } = options; + const route = new Layer(path, methods, middleware, { + end: end === false ? end : true, + name, + sensitive: sensitive ?? this.#opts.sensitive ?? false, + strict: strict ?? this.#opts.strict ?? false, + ignoreCaptures, + }); + + if (this.#opts.prefix) { + route.setPrefix(this.#opts.prefix); + } + + for (const [param, mw] of Object.entries(this.#params)) { + route.param(param, mw); + } + + this.#stack.push(route); + }; + + #route = (name: string): Layer | undefined => { + for (const route of this.#stack) { + if (route.name === name) { + return route; + } + } + }; + + #useVerb = ( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + middleware: RouterMiddleware[], + methods: HTTPMethods[], + ): void => { + let name: string | undefined = undefined; + let path: string; + if (typeof pathOrMiddleware === "string") { + name = nameOrPath; + path = pathOrMiddleware; + } else { + path = nameOrPath; + middleware.unshift(pathOrMiddleware); + } + + this.#register(path, middleware, methods, { name }); + }; + + constructor(opts: RouterOptions = {}) { + this.#opts = opts; + this.#methods = opts.methods ?? [ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + ]; + } + + /** Register named middleware for the specified routes when the `DELETE`, + * `GET`, `POST`, or `PUT` method is requested. */ + all

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `DELETE`, + * `GET`, `POST`, or `PUT` method is requested. */ + all

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + all

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["DELETE", "GET", "POST", "PUT"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Middleware that handles requests for HTTP methods registered with the + * router. If none of the routes handle a method, then "not allowed" logic + * will be used. If a method is supported by some routes, but not the + * particular matched router, then "not implemented" will be returned. + * + * The middleware will also automatically handle the `OPTIONS` method, + * responding with a `200 OK` when the `Allowed` header sent to the allowed + * methods for a given route. + * + * By default, a "not allowed" request will respond with a `405 Not Allowed` + * and a "not implemented" will respond with a `501 Not Implemented`. Setting + * the option `.throw` to `true` will cause the middleware to throw an + * `HTTPError` instead of setting the response status. The error can be + * overridden by providing a `.notImplemented` or `.notAllowed` method in the + * options, of which the value will be returned will be thrown instead of the + * HTTP error. */ + allowedMethods( + options: RouterAllowedMethodsOptions = {}, + ): Middleware { + const implemented = this.#methods; + + const allowedMethods: Middleware = async (context, next) => { + const ctx = context as RouterContext; + await next(); + if (!ctx.response.status || ctx.response.status === Status.NotFound) { + assert(ctx.matched); + const allowed = new Set(); + for (const route of ctx.matched) { + for (const method of route.methods) { + allowed.add(method); + } + } + + const allowedStr = [...allowed].join(", "); + if (!implemented.includes(ctx.request.method)) { + if (options.throw) { + throw options.notImplemented + ? options.notImplemented() + : new httpErrors.NotImplemented(); + } else { + ctx.response.status = Status.NotImplemented; + ctx.response.headers.set("Allowed", allowedStr); + } + } else if (allowed.size) { + if (ctx.request.method === "OPTIONS") { + ctx.response.status = Status.OK; + ctx.response.headers.set("Allowed", allowedStr); + } else if (!allowed.has(ctx.request.method)) { + if (options.throw) { + throw options.methodNotAllowed + ? options.methodNotAllowed() + : new httpErrors.MethodNotAllowed(); + } else { + ctx.response.status = Status.MethodNotAllowed; + ctx.response.headers.set("Allowed", allowedStr); + } + } + } + } + }; + + return allowedMethods; + } + + /** Register named middleware for the specified routes when the `DELETE`, + * method is requested. */ + delete

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `DELETE`, + * method is requested. */ + delete

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + delete

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["DELETE"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. To be compatible + * with the iterable interfaces, both the key and value are set to the value + * of the route. */ + *entries(): IterableIterator<[Route, Route]> { + for (const route of this.#stack) { + const value = route.toJSON(); + yield [value, value]; + } + } + + /** Iterate over the routes currently added to the router, calling the + * `callback` function for each value. */ + forEach( + callback: (value1: Route, value2: Route, router: this) => void, + // deno-lint-ignore no-explicit-any + thisArg: any = null, + ): void { + for (const route of this.#stack) { + const value = route.toJSON(); + callback.call(thisArg, value, value, this); + } + } + + /** Register named middleware for the specified routes when the `GET`, + * method is requested. */ + get

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `GET`, + * method is requested. */ + get

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + get

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["GET"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register named middleware for the specified routes when the `HEAD`, + * method is requested. */ + head

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `HEAD`, + * method is requested. */ + head

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + head

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["HEAD"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. To be compatible + * with the iterable interfaces, the key is set to the value of the route. */ + *keys(): IterableIterator { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Register named middleware for the specified routes when the `OPTIONS`, + * method is requested. */ + options

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `OPTIONS`, + * method is requested. */ + options

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + options

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["OPTIONS"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register param middleware, which will be called when the particular param + * is parsed from the route. */ + param( + param: keyof RP, + middleware: RouterParamMiddleware, + ): Router { + this.#params[param as string] = middleware; + for (const route of this.#stack) { + route.param(param as string, middleware); + } + return this; + } + + /** Register named middleware for the specified routes when the `PATCH`, + * method is requested. */ + patch

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `PATCH`, + * method is requested. */ + patch

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + patch

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["PATCH"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register named middleware for the specified routes when the `POST`, + * method is requested. */ + post

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `POST`, + * method is requested. */ + post

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + post

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["POST"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Set the router prefix for this router. */ + prefix(prefix: string): this { + prefix = prefix.replace(/\/$/, ""); + this.#opts.prefix = prefix; + for (const route of this.#stack) { + route.setPrefix(prefix); + } + return this; + } + + /** Register named middleware for the specified routes when the `PUT` + * method is requested. */ + put

( + name: string, + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware for the specified routes when the `PUT` + * method is requested. */ + put

( + path: string, + ...middleware: RouterMiddleware[] + ): Router

; + put

( + nameOrPath: string, + pathOrMiddleware: string | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + this.#useVerb( + nameOrPath, + pathOrMiddleware as (string | RouterMiddleware), + middleware as RouterMiddleware[], + ["PUT"], + ); + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Register a direction middleware, where when the `source` path is matched + * the router will redirect the request to the `destination` path. A `status` + * of `302 Found` will be set by default. + * + * The `source` and `destination` can be named routes. */ + redirect( + source: string, + destination: string, + status: RedirectStatus = Status.Found, + ): this { + if (source[0] !== "/") { + const s = this.url(source); + if (!s) { + throw new RangeError(`Could not resolve named route: "${source}"`); + } + source = s; + } + if (destination[0] !== "/") { + const d = this.url(destination); + if (!d) { + throw new RangeError(`Could not resolve named route: "${source}"`); + } + destination = d; + } + + this.all(source, (ctx) => { + ctx.response.redirect(destination); + ctx.response.status = status; + }); + return this; + } + + /** Return middleware that will do all the route processing that the router + * has been configured to handle. Typical usage would be something like this: + * + * ```ts + * import { Application, Router } from "https://deno.land/x/oak/mod.ts"; + * + * const app = new Application(); + * const router = new Router(); + * + * // register routes + * + * app.use(router.routes()); + * app.use(router.allowedMethods()); + * await app.listen({ port: 80 }); + * ``` + */ + routes(): Middleware { + const dispatch = ( + context: Context, + next: () => Promise, + ): Promise => { + const ctx = context as RouterContext; + let pathname: string; + let method: HTTPMethods; + try { + const { url: { pathname: p }, method: m } = ctx.request; + pathname = p; + method = m; + } catch (e) { + return Promise.reject(e); + } + const path = this.#opts.routerPath ?? ctx.routerPath ?? + decodeURIComponent(pathname); + const matches = this.#match(path, method); + + if (ctx.matched) { + ctx.matched.push(...matches.path); + } else { + ctx.matched = [...matches.path]; + } + + // deno-lint-ignore no-explicit-any + ctx.router = this as Router; + + if (!matches.route) return next(); + + const { pathAndMethod: matchedRoutes } = matches; + + const chain = matchedRoutes.reduce( + (prev, route) => [ + ...prev, + (ctx: RouterContext, next: () => Promise): Promise => { + ctx.captures = route.captures(path); + ctx.params = route.params(ctx.captures, ctx.params); + ctx.routeName = route.name; + return next(); + }, + ...route.stack, + ], + [] as RouterMiddleware[], + ); + return compose(chain)(ctx, next); + }; + dispatch.router = this; + return dispatch; + } + + /** Generate a URL pathname for a named route, interpolating the optional + * params provided. Also accepts an optional set of options. */ + url

( + name: string, + params?: P, + options?: UrlOptions, + ): string | undefined { + const route = this.#route(name); + + if (route) { + return route.url(params, options); + } + } + + /** Register middleware to be used on every matched route. */ + use

( + ...middleware: RouterMiddleware[] + ): Router

; + /** Register middleware to be used on every route that matches the supplied + * `path`. */ + use

( + path: string | string[], + ...middleware: RouterMiddleware[] + ): Router

; + use

( + pathOrMiddleware: string | string[] | RouterMiddleware, + ...middleware: RouterMiddleware[] + ): Router

{ + let path: string | string[] | undefined; + if ( + typeof pathOrMiddleware === "string" || Array.isArray(pathOrMiddleware) + ) { + path = pathOrMiddleware; + } else { + middleware.unshift(pathOrMiddleware); + } + + this.#register( + path ?? "(.*)", + middleware as RouterMiddleware[], + [], + { end: false, ignoreCaptures: !path }, + ); + + // deno-lint-ignore no-explicit-any + return this as Router; + } + + /** Iterate over the routes currently added to the router. */ + *values(): IterableIterator> { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Provide an iterator interface that iterates over the routes registered + * with the router. */ + *[Symbol.iterator](): IterableIterator> { + for (const route of this.#stack) { + yield route.toJSON(); + } + } + + /** Generate a URL pathname based on the provided path, interpolating the + * optional params provided. Also accepts an optional set of options. */ + static url( + path: string, + params?: RouteParams, + options?: UrlOptions, + ): string { + return toUrl(path, params, options); + } +} diff --git a/bundler/tests/.cache/deno/dc0c42eb8874d03c69f133343ed02c75dea2f237.ts b/bundler/tests/.cache/deno/dc0c42eb8874d03c69f133343ed02c75dea2f237.ts new file mode 100644 index 00000000000..db513f9491b --- /dev/null +++ b/bundler/tests/.cache/deno/dc0c42eb8874d03c69f133343ed02c75dea2f237.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.82.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/dc6d3dce7401159ca2464ee9c9ccbaf708abcf33.ts b/bundler/tests/.cache/deno/dc6d3dce7401159ca2464ee9c9ccbaf708abcf33.ts new file mode 100644 index 00000000000..f1a19ef05a4 --- /dev/null +++ b/bundler/tests/.cache/deno/dc6d3dce7401159ca2464ee9c9ccbaf708abcf33.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/NoFragmentCyclesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +export function NoFragmentCyclesRule(context) { + // Tracks already visited fragments to maintain O(N) and to ensure that cycles + // are not redundantly reported. + const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors + + const spreadPath = []; // Position in the spread path + + const spreadPathIndexByName = Object.create(null); + return { + OperationDefinition: () => false, + + FragmentDefinition(node) { + detectCycleRecursive(node); + return false; + } + + }; // This does a straight-forward DFS to find cycles. + // It does not terminate when a cycle was found but continues to explore + // the graph to find all possible cycles. + + function detectCycleRecursive(fragment) { + if (visitedFrags[fragment.name.value]) { + return; + } + + const fragmentName = fragment.name.value; + visitedFrags[fragmentName] = true; + const spreadNodes = context.getFragmentSpreads(fragment.selectionSet); + + if (spreadNodes.length === 0) { + return; + } + + spreadPathIndexByName[fragmentName] = spreadPath.length; + + for (const spreadNode of spreadNodes) { + const spreadName = spreadNode.name.value; + const cycleIndex = spreadPathIndexByName[spreadName]; + spreadPath.push(spreadNode); + + if (cycleIndex === undefined) { + const spreadFragment = context.getFragment(spreadName); + + if (spreadFragment) { + detectCycleRecursive(spreadFragment); + } + } else { + const cyclePath = spreadPath.slice(cycleIndex); + const viaPath = cyclePath.slice(0, -1).map(s => '"' + s.name.value + '"').join(', '); + context.reportError(new GraphQLError(`Cannot spread fragment "${spreadName}" within itself` + (viaPath !== '' ? ` via ${viaPath}.` : '.'), cyclePath)); + } + + spreadPath.pop(); + } + + spreadPathIndexByName[fragmentName] = undefined; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/dcab55a17f5254faba5748f703c932191eaa5ff6.ts b/bundler/tests/.cache/deno/dcab55a17f5254faba5748f703c932191eaa5ff6.ts new file mode 100644 index 00000000000..2455693df34 --- /dev/null +++ b/bundler/tests/.cache/deno/dcab55a17f5254faba5748f703c932191eaa5ff6.ts @@ -0,0 +1,125 @@ +// Loaded from https://deno.land/x/args@1.0.7/flag-errors.ts + + +import { + ParseError, +} from "./types.ts"; + +import { + flag, +} from "./utils.ts"; + +import { + ValueError, +} from "./value-errors.ts"; + +const fmtFlagList = (names: readonly string[]) => names.map(flag).join(" "); + +/** + * Base class of all `FlagError` + */ +export abstract class FlagError implements ParseError { + public abstract toString(): string; +} + +/** + * `FlagError` class for when unknown flags being detected in argument list + */ +export class UnknownFlags extends FlagError { + constructor( + /** Flag names */ + public readonly names: readonly string[], + ) { + super(); + } + + public toString() { + return `Unknown flags: ${fmtFlagList(this.names)}`; + } +} + +/** + * `FlagError` class for when required flags not being specified + */ +export class MissingFlag extends FlagError { + constructor( + /** Flag name */ + public readonly name: string, + ) { + super(); + } + + public toString() { + return `Flag ${flag(this.name)} is required but missing`; + } +} + +/** + * `FlagError` class for when two or more aliases of the same option being specified + */ +export class ConflictFlags extends FlagError { + constructor( + /** Aliases */ + public readonly names: readonly string[], + ) { + super(); + } + + public toString() { + return `Conflicting options: ${fmtFlagList(this.names)}`; + } +} + +/** + * `FlagError` class for when an option flag being specified without a value + */ +export class MissingValue extends FlagError { + constructor( + /** Option name */ + public readonly name: string | readonly string[], + ) { + super(); + } + + public toString() { + return `Option ${flag(this.name)} requires a value but none was found`; + } +} + +/** + * `FlagError` class for when a flag being place where a value is expected + */ +export class UnexpectedFlag extends FlagError { + constructor( + /** Option name */ + public readonly name: string | readonly string[], + /** Offender flag (raw form) */ + public readonly unexpectedFlag: string, + ) { + super(); + } + + public toString() { + return `Option ${flag( + this.name, + )} requires a value but received flag ${this.unexpectedFlag} instead`; + } +} + +/** + * `FlagError` class for when an argument fails to convert to a value + */ +export class ValueParsingFailure extends FlagError { + constructor( + /** Option name */ + public readonly name: string | readonly string[], + /** Value parsing error */ + public readonly error: ValueError, + ) { + super(); + } + + public toString() { + return `Failed to parse ${flag(this.name)}: ${this.error.toString()}`; + } +} diff --git a/bundler/tests/.cache/deno/dcc36fe910e1ed8105058e19c939027bd294a425.ts b/bundler/tests/.cache/deno/dcc36fe910e1ed8105058e19c939027bd294a425.ts new file mode 100644 index 00000000000..33ae0748f34 --- /dev/null +++ b/bundler/tests/.cache/deno/dcc36fe910e1ed8105058e19c939027bd294a425.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/transpose.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Transposes the rows and columns of a 2D list. + * When passed a list of `n` lists of length `x`, + * returns a list of `x` lists of length `n`. + * + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [[a]] -> [[a]] + * @param {Array} list A 2D list + * @return {Array} A 2D list + * @example + * + * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] + * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * + * // If some of the rows are shorter than the following rows, their elements are skipped: + * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] + * @symb R.transpose([[a], [b], [c]]) = [a, b, c] + * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] + * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] + */ +var transpose = _curry1(function transpose(outerlist) { + var i = 0; + var result = []; + while (i < outerlist.length) { + var innerlist = outerlist[i]; + var j = 0; + while (j < innerlist.length) { + if (typeof result[j] === 'undefined') { + result[j] = []; + } + result[j].push(innerlist[j]); + j += 1; + } + i += 1; + } + return result; +}); +export default transpose; diff --git a/bundler/tests/.cache/deno/dcce674912502cecf7c33ba73855470d0a57c93e.ts b/bundler/tests/.cache/deno/dcce674912502cecf7c33ba73855470d0a57c93e.ts new file mode 100644 index 00000000000..0205ae75dd9 --- /dev/null +++ b/bundler/tests/.cache/deno/dcce674912502cecf7c33ba73855470d0a57c93e.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/objectEntries.js + + +/* eslint-disable no-redeclare */ +// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838 +const objectEntries = Object.entries || (obj => Object.keys(obj).map(key => [key, obj[key]])); + +export default objectEntries; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/dd17d1398e494d3bbfa9b2d4cf1af3d855a4d95f.ts b/bundler/tests/.cache/deno/dd17d1398e494d3bbfa9b2d4cf1af3d855a4d95f.ts new file mode 100644 index 00000000000..4b9e585133e --- /dev/null +++ b/bundler/tests/.cache/deno/dd17d1398e494d3bbfa9b2d4cf1af3d855a4d95f.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std@0.85.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/dde64dfe13621179ef8559e19b3dd613c5da712d.ts b/bundler/tests/.cache/deno/dde64dfe13621179ef8559e19b3dd613c5da712d.ts new file mode 100644 index 00000000000..4786fb13548 --- /dev/null +++ b/bundler/tests/.cache/deno/dde64dfe13621179ef8559e19b3dd613c5da712d.ts @@ -0,0 +1,268 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISO31661Alpha2.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { includes } from '../helpers/includes.ts'; + +// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 +/** + * @ignore + */ +const validISO31661Alpha2CountriesCodes = [ + 'AD', + 'AE', + 'AF', + 'AG', + 'AI', + 'AL', + 'AM', + 'AO', + 'AQ', + 'AR', + 'AS', + 'AT', + 'AU', + 'AW', + 'AX', + 'AZ', + 'BA', + 'BB', + 'BD', + 'BE', + 'BF', + 'BG', + 'BH', + 'BI', + 'BJ', + 'BL', + 'BM', + 'BN', + 'BO', + 'BQ', + 'BR', + 'BS', + 'BT', + 'BV', + 'BW', + 'BY', + 'BZ', + 'CA', + 'CC', + 'CD', + 'CF', + 'CG', + 'CH', + 'CI', + 'CK', + 'CL', + 'CM', + 'CN', + 'CO', + 'CR', + 'CU', + 'CV', + 'CW', + 'CX', + 'CY', + 'CZ', + 'DE', + 'DJ', + 'DK', + 'DM', + 'DO', + 'DZ', + 'EC', + 'EE', + 'EG', + 'EH', + 'ER', + 'ES', + 'ET', + 'FI', + 'FJ', + 'FK', + 'FM', + 'FO', + 'FR', + 'GA', + 'GB', + 'GD', + 'GE', + 'GF', + 'GG', + 'GH', + 'GI', + 'GL', + 'GM', + 'GN', + 'GP', + 'GQ', + 'GR', + 'GS', + 'GT', + 'GU', + 'GW', + 'GY', + 'HK', + 'HM', + 'HN', + 'HR', + 'HT', + 'HU', + 'ID', + 'IE', + 'IL', + 'IM', + 'IN', + 'IO', + 'IQ', + 'IR', + 'IS', + 'IT', + 'JE', + 'JM', + 'JO', + 'JP', + 'KE', + 'KG', + 'KH', + 'KI', + 'KM', + 'KN', + 'KP', + 'KR', + 'KW', + 'KY', + 'KZ', + 'LA', + 'LB', + 'LC', + 'LI', + 'LK', + 'LR', + 'LS', + 'LT', + 'LU', + 'LV', + 'LY', + 'MA', + 'MC', + 'MD', + 'ME', + 'MF', + 'MG', + 'MH', + 'MK', + 'ML', + 'MM', + 'MN', + 'MO', + 'MP', + 'MQ', + 'MR', + 'MS', + 'MT', + 'MU', + 'MV', + 'MW', + 'MX', + 'MY', + 'MZ', + 'NA', + 'NC', + 'NE', + 'NF', + 'NG', + 'NI', + 'NL', + 'NO', + 'NP', + 'NR', + 'NU', + 'NZ', + 'OM', + 'PA', + 'PE', + 'PF', + 'PG', + 'PH', + 'PK', + 'PL', + 'PM', + 'PN', + 'PR', + 'PS', + 'PT', + 'PW', + 'PY', + 'QA', + 'RE', + 'RO', + 'RS', + 'RU', + 'RW', + 'SA', + 'SB', + 'SC', + 'SD', + 'SE', + 'SG', + 'SH', + 'SI', + 'SJ', + 'SK', + 'SL', + 'SM', + 'SN', + 'SO', + 'SR', + 'SS', + 'ST', + 'SV', + 'SX', + 'SY', + 'SZ', + 'TC', + 'TD', + 'TF', + 'TG', + 'TH', + 'TJ', + 'TK', + 'TL', + 'TM', + 'TN', + 'TO', + 'TR', + 'TT', + 'TV', + 'TW', + 'TZ', + 'UA', + 'UG', + 'UM', + 'US', + 'UY', + 'UZ', + 'VA', + 'VC', + 'VE', + 'VG', + 'VI', + 'VN', + 'VU', + 'WF', + 'WS', + 'YE', + 'YT', + 'ZA', + 'ZM', + 'ZW', +]; + +export const isISO31661Alpha2 = (str: string) => { + assertString(str); + return includes(validISO31661Alpha2CountriesCodes, str.toUpperCase()); +}; diff --git a/bundler/tests/.cache/deno/dea150aa7c1bee858a5a9a293f4068a1dffb6633.ts b/bundler/tests/.cache/deno/dea150aa7c1bee858a5a9a293f4068a1dffb6633.ts new file mode 100644 index 00000000000..d6c92942120 --- /dev/null +++ b/bundler/tests/.cache/deno/dea150aa7c1bee858a5a9a293f4068a1dffb6633.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.81.0/path/glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/df284e68b94120f1bce26fcc89c3f6f2847eaf6a.ts b/bundler/tests/.cache/deno/df284e68b94120f1bce26fcc89c3f6f2847eaf6a.ts new file mode 100644 index 00000000000..424c552ec47 --- /dev/null +++ b/bundler/tests/.cache/deno/df284e68b94120f1bce26fcc89c3f6f2847eaf6a.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isMACAddress.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const macAddress = /^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/; + +/** + * @ignore + */ +const macAddressNoColons = /^([0-9a-fA-F]){12}$/; + +/** + * @ignore + */ +const macAddressWithHyphen = /^([0-9a-fA-F][0-9a-fA-F]-){5}([0-9a-fA-F][0-9a-fA-F])$/; + +/** + * @ignore + */ +const macAddressWithSpaces = /^([0-9a-fA-F][0-9a-fA-F]\s){5}([0-9a-fA-F][0-9a-fA-F])$/; + +/** + * @ignore + */ +const macAddressWithDots = /^([0-9a-fA-F]{4}).([0-9a-fA-F]{4}).([0-9a-fA-F]{4})$/; + +type MACAddressOptions = { + noColons?: boolean; +}; + +export const isMACAddress = (str: string, options?: MACAddressOptions) => { + assertString(str); + + if (options && options.noColons) { + return macAddressNoColons.test(str); + } + + return ( + macAddress.test(str) || + macAddressWithHyphen.test(str) || + macAddressWithSpaces.test(str) || + macAddressWithDots.test(str) + ); +}; diff --git a/bundler/tests/.cache/deno/df2d7298f8720126964df61ffa573ce9dfed6e10.ts b/bundler/tests/.cache/deno/df2d7298f8720126964df61ffa573ce9dfed6e10.ts new file mode 100644 index 00000000000..11f6b5ec589 --- /dev/null +++ b/bundler/tests/.cache/deno/df2d7298f8720126964df61ffa573ce9dfed6e10.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/T.js + + + + +/** + * A function that always returns `true`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.F + * @example + * + * R.T(); //=> true + */ +var T = function() {return true;}; +export default T; diff --git a/bundler/tests/.cache/deno/df42b966a6c08b9e204808fee514bbf37c44188a.ts b/bundler/tests/.cache/deno/df42b966a6c08b9e204808fee514bbf37c44188a.ts new file mode 100644 index 00000000000..8c556a66f87 --- /dev/null +++ b/bundler/tests/.cache/deno/df42b966a6c08b9e204808fee514bbf37c44188a.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/std@0.77.0/log/handlers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { getLevelByName, LevelName, LogLevels } from "./levels.ts"; +import type { LogRecord } from "./logger.ts"; +import { blue, bold, red, yellow } from "../fmt/colors.ts"; +import { exists, existsSync } from "../fs/exists.ts"; +import { BufWriterSync } from "../io/bufio.ts"; + +const DEFAULT_FORMATTER = "{levelName} {msg}"; +type FormatterFunction = (logRecord: LogRecord) => string; +type LogMode = "a" | "w" | "x"; + +interface HandlerOptions { + formatter?: string | FormatterFunction; +} + +export class BaseHandler { + level: number; + levelName: LevelName; + formatter: string | FormatterFunction; + + constructor(levelName: LevelName, options: HandlerOptions = {}) { + this.level = getLevelByName(levelName); + this.levelName = levelName; + + this.formatter = options.formatter || DEFAULT_FORMATTER; + } + + handle(logRecord: LogRecord): void { + if (this.level > logRecord.level) return; + + const msg = this.format(logRecord); + return this.log(msg); + } + + format(logRecord: LogRecord): string { + if (this.formatter instanceof Function) { + return this.formatter(logRecord); + } + + return this.formatter.replace(/{(\S+)}/g, (match, p1): string => { + const value = logRecord[p1 as keyof LogRecord]; + + // do not interpolate missing values + if (value == null) { + return match; + } + + return String(value); + }); + } + + log(_msg: string): void {} + async setup(): Promise {} + async destroy(): Promise {} +} + +export class ConsoleHandler extends BaseHandler { + format(logRecord: LogRecord): string { + let msg = super.format(logRecord); + + switch (logRecord.level) { + case LogLevels.INFO: + msg = blue(msg); + break; + case LogLevels.WARNING: + msg = yellow(msg); + break; + case LogLevels.ERROR: + msg = red(msg); + break; + case LogLevels.CRITICAL: + msg = bold(red(msg)); + break; + default: + break; + } + + return msg; + } + + log(msg: string): void { + console.log(msg); + } +} + +export abstract class WriterHandler extends BaseHandler { + protected _writer!: Deno.Writer; + #encoder = new TextEncoder(); + + abstract log(msg: string): void; +} + +interface FileHandlerOptions extends HandlerOptions { + filename: string; + mode?: LogMode; +} + +export class FileHandler extends WriterHandler { + protected _file: Deno.File | undefined; + protected _buf!: BufWriterSync; + protected _filename: string; + protected _mode: LogMode; + protected _openOptions: Deno.OpenOptions; + protected _encoder = new TextEncoder(); + #unloadCallback = (): Promise => this.destroy(); + + constructor(levelName: LevelName, options: FileHandlerOptions) { + super(levelName, options); + this._filename = options.filename; + // default to append mode, write only + this._mode = options.mode ? options.mode : "a"; + this._openOptions = { + createNew: this._mode === "x", + create: this._mode !== "x", + append: this._mode === "a", + truncate: this._mode !== "a", + write: true, + }; + } + + async setup(): Promise { + this._file = await Deno.open(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + + addEventListener("unload", this.#unloadCallback); + } + + handle(logRecord: LogRecord): void { + super.handle(logRecord); + + // Immediately flush if log level is higher than ERROR + if (logRecord.level > LogLevels.ERROR) { + this.flush(); + } + } + + log(msg: string): void { + this._buf.writeSync(this._encoder.encode(msg + "\n")); + } + + flush(): void { + if (this._buf?.buffered() > 0) { + this._buf.flush(); + } + } + + destroy(): Promise { + this.flush(); + this._file?.close(); + this._file = undefined; + removeEventListener("unload", this.#unloadCallback); + return Promise.resolve(); + } +} + +interface RotatingFileHandlerOptions extends FileHandlerOptions { + maxBytes: number; + maxBackupCount: number; +} + +export class RotatingFileHandler extends FileHandler { + #maxBytes: number; + #maxBackupCount: number; + #currentFileSize = 0; + + constructor(levelName: LevelName, options: RotatingFileHandlerOptions) { + super(levelName, options); + this.#maxBytes = options.maxBytes; + this.#maxBackupCount = options.maxBackupCount; + } + + async setup(): Promise { + if (this.#maxBytes < 1) { + this.destroy(); + throw new Error("maxBytes cannot be less than 1"); + } + if (this.#maxBackupCount < 1) { + this.destroy(); + throw new Error("maxBackupCount cannot be less than 1"); + } + await super.setup(); + + if (this._mode === "w") { + // Remove old backups too as it doesn't make sense to start with a clean + // log file, but old backups + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + await Deno.remove(this._filename + "." + i); + } + } + } else if (this._mode === "x") { + // Throw if any backups also exist + for (let i = 1; i <= this.#maxBackupCount; i++) { + if (await exists(this._filename + "." + i)) { + this.destroy(); + throw new Deno.errors.AlreadyExists( + "Backup log file " + this._filename + "." + i + " already exists", + ); + } + } + } else { + this.#currentFileSize = (await Deno.stat(this._filename)).size; + } + } + + log(msg: string): void { + const msgByteLength = this._encoder.encode(msg).byteLength + 1; + + if (this.#currentFileSize + msgByteLength > this.#maxBytes) { + this.rotateLogFiles(); + this.#currentFileSize = 0; + } + + this._buf.writeSync(this._encoder.encode(msg + "\n")); + this.#currentFileSize += msgByteLength; + } + + rotateLogFiles(): void { + this._buf.flush(); + Deno.close(this._file!.rid); + + for (let i = this.#maxBackupCount - 1; i >= 0; i--) { + const source = this._filename + (i === 0 ? "" : "." + i); + const dest = this._filename + "." + (i + 1); + + if (existsSync(source)) { + Deno.renameSync(source, dest); + } + } + + this._file = Deno.openSync(this._filename, this._openOptions); + this._writer = this._file; + this._buf = new BufWriterSync(this._file); + } +} diff --git a/bundler/tests/.cache/deno/df441564279e27b04327725d089516c9045b90c0.ts b/bundler/tests/.cache/deno/df441564279e27b04327725d089516c9045b90c0.ts new file mode 100644 index 00000000000..c43aa82c3c0 --- /dev/null +++ b/bundler/tests/.cache/deno/df441564279e27b04327725d089516c9045b90c0.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/converge.js + + +import _curry2 from './internal/_curry2.js'; +import _map from './internal/_map.js'; +import curryN from './curryN.js'; +import max from './max.js'; +import pluck from './pluck.js'; +import reduce from './reduce.js'; + + +/** + * Accepts a converging function and a list of branching functions and returns + * a new function. The arity of the new function is the same as the arity of + * the longest branching function. When invoked, this new function is applied + * to some arguments, and each branching function is applied to those same + * arguments. The results of each branching function are passed as arguments + * to the converging function to produce the return value. + * + * @func + * @memberOf R + * @since v0.4.2 + * @category Function + * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} after A function. `after` will be invoked with the return values of + * `fn1` and `fn2` as its arguments. + * @param {Array} functions A list of functions. + * @return {Function} A new function. + * @see R.useWith + * @example + * + * const average = R.converge(R.divide, [R.sum, R.length]) + * average([1, 2, 3, 4, 5, 6, 7]) //=> 4 + * + * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) + * strangeConcat("Yodel") //=> "YODELyodel" + * + * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b)) + */ +var converge = _curry2(function converge(after, fns) { + return curryN(reduce(max, 0, pluck('length', fns)), function() { + var args = arguments; + var context = this; + return after.apply(context, _map(function(fn) { + return fn.apply(context, args); + }, fns)); + }); +}); +export default converge; diff --git a/bundler/tests/.cache/deno/df521d1e81648abf9a455b7ed098e034f697884c.ts b/bundler/tests/.cache/deno/df521d1e81648abf9a455b7ed098e034f697884c.ts new file mode 100644 index 00000000000..01f6ade0be8 --- /dev/null +++ b/bundler/tests/.cache/deno/df521d1e81648abf9a455b7ed098e034f697884c.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std@0.81.0/io/bufio.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/dfd1ee984a6faec6df21e8eeb8848f8512fa9a4a.ts b/bundler/tests/.cache/deno/dfd1ee984a6faec6df21e8eeb8848f8512fa9a4a.ts new file mode 100644 index 00000000000..5603850a283 --- /dev/null +++ b/bundler/tests/.cache/deno/dfd1ee984a6faec6df21e8eeb8848f8512fa9a4a.ts @@ -0,0 +1,99 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/timestamp.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +const YAML_DATE_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])" + // [1] year + "-([0-9][0-9])" + // [2] month + "-([0-9][0-9])$", // [3] day +); + +const YAML_TIMESTAMP_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])" + // [1] year + "-([0-9][0-9]?)" + // [2] month + "-([0-9][0-9]?)" + // [3] day + "(?:[Tt]|[ \\t]+)" + // ... + "([0-9][0-9]?)" + // [4] hour + ":([0-9][0-9])" + // [5] minute + ":([0-9][0-9])" + // [6] second + "(?:\\.([0-9]*))?" + // [7] fraction + "(?:[ \\t]*(Z|([-+])([0-9][0-9]?)" + // [8] tz [9] tz_sign [10] tz_hour + "(?::([0-9][0-9]))?))?$", // [11] tz_minute +); + +function resolveYamlTimestamp(data: string): boolean { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data: string): Date { + let match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error("Date resolve error"); + + // match: [1] year [2] month [3] day + + const year = +match[1]; + const month = +match[2] - 1; // JS month starts with 0 + const day = +match[3]; + + if (!match[4]) { + // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + const hour = +match[4]; + const minute = +match[5]; + const second = +match[6]; + + let fraction = 0; + if (match[7]) { + let partFraction = match[7].slice(0, 3); + while (partFraction.length < 3) { + // milli-seconds + partFraction += "0"; + } + fraction = +partFraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + let delta = null; + if (match[9]) { + const tzHour = +match[10]; + const tzMinute = +(match[11] || 0); + delta = (tzHour * 60 + tzMinute) * 60000; // delta in milli-seconds + if (match[9] === "-") delta = -delta; + } + + const date = new Date( + Date.UTC(year, month, day, hour, minute, second, fraction), + ); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(date: Date): string { + return date.toISOString(); +} + +export const timestamp = new Type("tag:yaml.org,2002:timestamp", { + construct: constructYamlTimestamp, + instanceOf: Date, + kind: "scalar", + represent: representYamlTimestamp, + resolve: resolveYamlTimestamp, +}); diff --git a/bundler/tests/.cache/deno/dff66e9be3083faddfb752397fccb71a7f500809.ts b/bundler/tests/.cache/deno/dff66e9be3083faddfb752397fccb71a7f500809.ts new file mode 100644 index 00000000000..b99fe70cebc --- /dev/null +++ b/bundler/tests/.cache/deno/dff66e9be3083faddfb752397fccb71a7f500809.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/countBy.js + + +import reduceBy from './reduceBy.js'; + + +/** + * Counts the elements of a list according to how many match each value of a + * key generated by the supplied function. Returns an object mapping the keys + * produced by `fn` to the number of occurrences in the list. Note that all + * keys are coerced to strings because of how JavaScript objects work. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> String) -> [a] -> {*} + * @param {Function} fn The function used to map values to keys. + * @param {Array} list The list to count elements from. + * @return {Object} An object mapping keys to number of occurrences in the list. + * @example + * + * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2]; + * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1} + * + * const letters = ['a', 'b', 'A', 'a', 'B', 'c']; + * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} + */ +var countBy = reduceBy(function(acc, elem) { return acc + 1; }, 0); +export default countBy; diff --git a/bundler/tests/.cache/deno/e023404be98d7776261688a96d643ca521f7bd68.ts b/bundler/tests/.cache/deno/e023404be98d7776261688a96d643ca521f7bd68.ts new file mode 100644 index 00000000000..a3dccc309cf --- /dev/null +++ b/bundler/tests/.cache/deno/e023404be98d7776261688a96d643ca521f7bd68.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/props.js + + +import _curry2 from './internal/_curry2.js'; +import path from './path.js'; + + +/** + * Acts as multiple `prop`: array of keys in, array of values out. Preserves + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> [v] + * @param {Array} ps The property names to fetch + * @param {Object} obj The object to query + * @return {Array} The corresponding values or partially applied function. + * @see R.prop, R.pluck, R.project + * @example + * + * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2] + * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2] + * + * const fullName = R.compose(R.join(' '), R.props(['first', 'last'])); + * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' + */ +var props = _curry2(function props(ps, obj) { + return ps.map(function(p) { + return path([p], obj); + }); +}); +export default props; diff --git a/bundler/tests/.cache/deno/e07fc48ca28e556adcca084ee40f7e652d4fe4c3.ts b/bundler/tests/.cache/deno/e07fc48ca28e556adcca084ee40f7e652d4fe4c3.ts new file mode 100644 index 00000000000..0b10e87fa8c --- /dev/null +++ b/bundler/tests/.cache/deno/e07fc48ca28e556adcca084ee40f7e652d4fe4c3.ts @@ -0,0 +1,25 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/flatMap.js + + +const flatMapMethod = Array.prototype.flatMap; +/* eslint-disable no-redeclare */ +// $FlowFixMe + +const flatMap = flatMapMethod ? function (list, fn) { + return flatMapMethod.call(list, fn); +} : function (list, fn) { + let result = []; + + for (const item of list) { + const value = fn(item); + + if (Array.isArray(value)) { + result = result.concat(value); + } else { + result.push(value); + } + } + + return result; +}; +export default flatMap; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/e0cd953338b5f75ce93555b731d80e127cb15f8a.ts b/bundler/tests/.cache/deno/e0cd953338b5f75ce93555b731d80e127cb15f8a.ts new file mode 100644 index 00000000000..c01e63d4653 --- /dev/null +++ b/bundler/tests/.cache/deno/e0cd953338b5f75ce93555b731d80e127cb15f8a.ts @@ -0,0 +1,812 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/execution/execute.js + + +import arrayFrom from '../polyfills/arrayFrom.js'; +import inspect from '../jsutils/inspect.js'; +import memoize3 from '../jsutils/memoize3.js'; +import invariant from '../jsutils/invariant.js'; +import devAssert from '../jsutils/devAssert.js'; +import isPromise from '../jsutils/isPromise.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import isCollection from '../jsutils/isCollection.js'; +import promiseReduce from '../jsutils/promiseReduce.js'; +import promiseForObject from '../jsutils/promiseForObject.js'; +import { addPath, pathToArray } from '../jsutils/Path.js'; +import { GraphQLError } from '../error/GraphQLError.js'; +import { locatedError } from '../error/locatedError.js'; +import { Kind } from '../language/kinds.js'; +import { assertValidSchema } from '../type/validate.js'; +import { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection.js'; +import { GraphQLIncludeDirective, GraphQLSkipDirective } from '../type/directives.js'; +import { isObjectType, isAbstractType, isLeafType, isListType, isNonNullType } from '../type/definition.js'; +import { typeFromAST } from '../utilities/typeFromAST.js'; +import { getOperationRootType } from '../utilities/getOperationRootType.js'; +import { getVariableValues, getArgumentValues, getDirectiveValues } from './values.js'; +/** + * Terminology + * + * "Definitions" are the generic name for top-level statements in the document. + * Examples of this include: + * 1) Operations (such as a query) + * 2) Fragments + * + * "Operations" are a generic name for requests in the document. + * Examples of this include: + * 1) query, + * 2) mutation + * + * "Selections" are the definitions that can appear legally and at + * single level of the query. These include: + * 1) field references e.g "a" + * 2) fragment "spreads" e.g. "...c" + * 3) inline fragment "spreads" e.g. "...on Type { a }" + */ + +/** + * Data that must be available at all points during query execution. + * + * Namely, schema of the type system that is currently executing, + * and the fragments defined in the query document + */ + +export function execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) { + /* eslint-enable no-redeclare */ + // Extract arguments from object args if provided. + return arguments.length === 1 ? executeImpl(argsOrSchema) : executeImpl({ + schema: argsOrSchema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + }); +} + +function executeImpl(args) { + const { + schema, + document, + rootValue, + contextValue, + variableValues, + operationName, + fieldResolver, + typeResolver + } = args; // If arguments are missing or incorrect, throw an error. + + assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, + // a "Response" with only errors is returned. + + const exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver); // Return early errors if execution context failed. + + if (Array.isArray(exeContext)) { + return { + errors: exeContext + }; + } // Return a Promise that will eventually resolve to the data described by + // The "Response" section of the GraphQL specification. + // + // If errors are encountered while executing a GraphQL field, only that + // field and its descendants will be omitted, and sibling fields will still + // be executed. An execution which encounters errors will still result in a + // resolved Promise. + + + const data = executeOperation(exeContext, exeContext.operation, rootValue); + return buildResponse(exeContext, data); +} +/** + * Given a completed execution context and data, build the { errors, data } + * response defined by the "Response" section of the GraphQL specification. + */ + + +function buildResponse(exeContext, data) { + if (isPromise(data)) { + return data.then(resolved => buildResponse(exeContext, resolved)); + } + + return exeContext.errors.length === 0 ? { + data + } : { + errors: exeContext.errors, + data + }; +} +/** + * Essential assertions before executing to provide developer feedback for + * improper use of the GraphQL library. + * + * @internal + */ + + +export function assertValidExecutionArguments(schema, document, rawVariableValues) { + devAssert(document, 'Must provide document.'); // If the schema used for execution is invalid, throw an error. + + assertValidSchema(schema); // Variables, if provided, must be an object. + + devAssert(rawVariableValues == null || isObjectLike(rawVariableValues), 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.'); +} +/** + * Constructs a ExecutionContext object from the arguments passed to + * execute, which we will pass throughout the other execution methods. + * + * Throws a GraphQLError if a valid execution context cannot be created. + * + * @internal + */ + +export function buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver, typeResolver) { + let operation; + const fragments = Object.create(null); + + for (const definition of document.definitions) { + switch (definition.kind) { + case Kind.OPERATION_DEFINITION: + if (operationName == null) { + if (operation !== undefined) { + return [new GraphQLError('Must provide operation name if query contains multiple operations.')]; + } + + operation = definition; + } else if (definition.name?.value === operationName) { + operation = definition; + } + + break; + + case Kind.FRAGMENT_DEFINITION: + fragments[definition.name.value] = definition; + break; + } + } + + if (!operation) { + if (operationName != null) { + return [new GraphQLError(`Unknown operation named "${operationName}".`)]; + } + + return [new GraphQLError('Must provide an operation.')]; + } + /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */ + + + const variableDefinitions = operation.variableDefinitions ?? []; + const coercedVariableValues = getVariableValues(schema, variableDefinitions, rawVariableValues ?? {}, { + maxErrors: 50 + }); + + if (coercedVariableValues.errors) { + return coercedVariableValues.errors; + } + + return { + schema, + fragments, + rootValue, + contextValue, + operation, + variableValues: coercedVariableValues.coerced, + fieldResolver: fieldResolver ?? defaultFieldResolver, + typeResolver: typeResolver ?? defaultTypeResolver, + errors: [] + }; +} +/** + * Implements the "Evaluating operations" section of the spec. + */ + +function executeOperation(exeContext, operation, rootValue) { + const type = getOperationRootType(exeContext.schema, operation); + const fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null)); + const path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level, + // at which point we still log the error and null the parent field, which + // in this case is the entire response. + // + // Similar to completeValueCatchingError. + + try { + const result = operation.operation === 'mutation' ? executeFieldsSerially(exeContext, type, rootValue, path, fields) : executeFields(exeContext, type, rootValue, path, fields); + + if (isPromise(result)) { + return result.then(undefined, error => { + exeContext.errors.push(error); + return Promise.resolve(null); + }); + } + + return result; + } catch (error) { + exeContext.errors.push(error); + return null; + } +} +/** + * Implements the "Evaluating selection sets" section of the spec + * for "write" mode. + */ + + +function executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) { + return promiseReduce(Object.keys(fields), (results, responseName) => { + const fieldNodes = fields[responseName]; + const fieldPath = addPath(path, responseName); + const result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath); + + if (result === undefined) { + return results; + } + + if (isPromise(result)) { + return result.then(resolvedResult => { + results[responseName] = resolvedResult; + return results; + }); + } + + results[responseName] = result; + return results; + }, Object.create(null)); +} +/** + * Implements the "Evaluating selection sets" section of the spec + * for "read" mode. + */ + + +function executeFields(exeContext, parentType, sourceValue, path, fields) { + const results = Object.create(null); + let containsPromise = false; + + for (const responseName of Object.keys(fields)) { + const fieldNodes = fields[responseName]; + const fieldPath = addPath(path, responseName); + const result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath); + + if (result !== undefined) { + results[responseName] = result; + + if (!containsPromise && isPromise(result)) { + containsPromise = true; + } + } + } // If there are no promises, we can just return the object + + + if (!containsPromise) { + return results; + } // Otherwise, results is a map from field name to the result of resolving that + // field, which is possibly a promise. Return a promise that will return this + // same map, but with any promises replaced with the values they resolved to. + + + return promiseForObject(results); +} +/** + * Given a selectionSet, adds all of the fields in that selection to + * the passed in map of fields, and returns it at the end. + * + * CollectFields requires the "runtime type" of an object. For a field which + * returns an Interface or Union type, the "runtime type" will be the actual + * Object type returned by that field. + * + * @internal + */ + + +export function collectFields(exeContext, runtimeType, selectionSet, fields, visitedFragmentNames) { + for (const selection of selectionSet.selections) { + switch (selection.kind) { + case Kind.FIELD: + { + if (!shouldIncludeNode(exeContext, selection)) { + continue; + } + + const name = getFieldEntryKey(selection); + + if (!fields[name]) { + fields[name] = []; + } + + fields[name].push(selection); + break; + } + + case Kind.INLINE_FRAGMENT: + { + if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(exeContext, selection, runtimeType)) { + continue; + } + + collectFields(exeContext, runtimeType, selection.selectionSet, fields, visitedFragmentNames); + break; + } + + case Kind.FRAGMENT_SPREAD: + { + const fragName = selection.name.value; + + if (visitedFragmentNames[fragName] || !shouldIncludeNode(exeContext, selection)) { + continue; + } + + visitedFragmentNames[fragName] = true; + const fragment = exeContext.fragments[fragName]; + + if (!fragment || !doesFragmentConditionMatch(exeContext, fragment, runtimeType)) { + continue; + } + + collectFields(exeContext, runtimeType, fragment.selectionSet, fields, visitedFragmentNames); + break; + } + } + } + + return fields; +} +/** + * Determines if a field should be included based on the @include and @skip + * directives, where @skip has higher precedence than @include. + */ + +function shouldIncludeNode(exeContext, node) { + const skip = getDirectiveValues(GraphQLSkipDirective, node, exeContext.variableValues); + + if (skip?.if === true) { + return false; + } + + const include = getDirectiveValues(GraphQLIncludeDirective, node, exeContext.variableValues); + + if (include?.if === false) { + return false; + } + + return true; +} +/** + * Determines if a fragment is applicable to the given type. + */ + + +function doesFragmentConditionMatch(exeContext, fragment, type) { + const typeConditionNode = fragment.typeCondition; + + if (!typeConditionNode) { + return true; + } + + const conditionalType = typeFromAST(exeContext.schema, typeConditionNode); + + if (conditionalType === type) { + return true; + } + + if (isAbstractType(conditionalType)) { + return exeContext.schema.isSubType(conditionalType, type); + } + + return false; +} +/** + * Implements the logic to compute the key of a given field's entry + */ + + +function getFieldEntryKey(node) { + return node.alias ? node.alias.value : node.name.value; +} +/** + * Resolves the field on the given source object. In particular, this + * figures out the value that the field returns by calling its resolve function, + * then calls completeValue to complete promises, serialize scalars, or execute + * the sub-selection-set for objects. + */ + + +function resolveField(exeContext, parentType, source, fieldNodes, path) { + const fieldNode = fieldNodes[0]; + const fieldName = fieldNode.name.value; + const fieldDef = getFieldDef(exeContext.schema, parentType, fieldName); + + if (!fieldDef) { + return; + } + + const resolveFn = fieldDef.resolve ?? exeContext.fieldResolver; + const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal + // or abrupt (error). + + const result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info); + return completeValueCatchingError(exeContext, fieldDef.type, fieldNodes, info, path, result); +} +/** + * @internal + */ + + +export function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) { + // The resolve function's optional fourth argument is a collection of + // information about the current execution state. + return { + fieldName: fieldDef.name, + fieldNodes, + returnType: fieldDef.type, + parentType, + path, + schema: exeContext.schema, + fragments: exeContext.fragments, + rootValue: exeContext.rootValue, + operation: exeContext.operation, + variableValues: exeContext.variableValues + }; +} +/** + * Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField` + * function. Returns the result of resolveFn or the abrupt-return Error object. + * + * @internal + */ + +export function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info) { + try { + // Build a JS object of arguments from the field.arguments AST, using the + // variables scope to fulfill any variable references. + // TODO: find a way to memoize, in case this field is within a List type. + const args = getArgumentValues(fieldDef, fieldNodes[0], exeContext.variableValues); // The resolve function's optional third argument is a context value that + // is provided to every resolve function within an execution. It is commonly + // used to represent an authenticated user, or request-specific caches. + + const contextValue = exeContext.contextValue; + const result = resolveFn(source, args, contextValue, info); + return isPromise(result) ? result.then(undefined, asErrorInstance) : result; + } catch (error) { + return asErrorInstance(error); + } +} // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a +// consistent Error interface. + +function asErrorInstance(error) { + if (error instanceof Error) { + return error; + } + + return new Error('Unexpected error value: ' + inspect(error)); +} // This is a small wrapper around completeValue which detects and logs errors +// in the execution context. + + +function completeValueCatchingError(exeContext, returnType, fieldNodes, info, path, result) { + try { + let completed; + + if (isPromise(result)) { + completed = result.then(resolved => completeValue(exeContext, returnType, fieldNodes, info, path, resolved)); + } else { + completed = completeValue(exeContext, returnType, fieldNodes, info, path, result); + } + + if (isPromise(completed)) { + // Note: we don't rely on a `catch` method, but we do expect "thenable" + // to take a second callback for the error case. + return completed.then(undefined, error => handleFieldError(error, fieldNodes, path, returnType, exeContext)); + } + + return completed; + } catch (error) { + return handleFieldError(error, fieldNodes, path, returnType, exeContext); + } +} + +function handleFieldError(rawError, fieldNodes, path, returnType, exeContext) { + const error = locatedError(asErrorInstance(rawError), fieldNodes, pathToArray(path)); // If the field type is non-nullable, then it is resolved without any + // protection from errors, however it still properly locates the error. + + if (isNonNullType(returnType)) { + throw error; + } // Otherwise, error protection is applied, logging the error and resolving + // a null value for this field if one is encountered. + + + exeContext.errors.push(error); + return null; +} +/** + * Implements the instructions for completeValue as defined in the + * "Field entries" section of the spec. + * + * If the field type is Non-Null, then this recursively completes the value + * for the inner type. It throws a field error if that completion returns null, + * as per the "Nullability" section of the spec. + * + * If the field type is a List, then this recursively completes the value + * for the inner type on each item in the list. + * + * If the field type is a Scalar or Enum, ensures the completed value is a legal + * value of the type by calling the `serialize` method of GraphQL type + * definition. + * + * If the field is an abstract type, determine the runtime type of the value + * and then complete based on that type + * + * Otherwise, the field type expects a sub-selection set, and will complete the + * value by evaluating all sub-selections. + */ + + +function completeValue(exeContext, returnType, fieldNodes, info, path, result) { + // If result is an Error, throw a located error. + if (result instanceof Error) { + throw result; + } // If field type is NonNull, complete for inner type, and throw field error + // if result is null. + + + if (isNonNullType(returnType)) { + const completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result); + + if (completed === null) { + throw new Error(`Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`); + } + + return completed; + } // If result value is null or undefined then return null. + + + if (result == null) { + return null; + } // If field type is List, complete each item in the list with the inner type + + + if (isListType(returnType)) { + return completeListValue(exeContext, returnType, fieldNodes, info, path, result); + } // If field type is a leaf type, Scalar or Enum, serialize to a valid value, + // returning null if serialization is not possible. + + + if (isLeafType(returnType)) { + return completeLeafValue(returnType, result); + } // If field type is an abstract type, Interface or Union, determine the + // runtime Object type and complete for that type. + + + if (isAbstractType(returnType)) { + return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result); + } // If field type is Object, execute and complete all sub-selections. + + + if (isObjectType(returnType)) { + return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result); + } // Not reachable. All possible output types have been considered. + + + invariant(false, 'Cannot complete value of unexpected output type: ' + inspect(returnType)); +} +/** + * Complete a list value by completing each item in the list with the + * inner type + */ + + +function completeListValue(exeContext, returnType, fieldNodes, info, path, result) { + if (!isCollection(result)) { + throw new GraphQLError(`Expected Iterable, but did not find one for field "${info.parentType.name}.${info.fieldName}".`); + } // This is specified as a simple map, however we're optimizing the path + // where the list contains no Promises by avoiding creating another Promise. + + + const itemType = returnType.ofType; + let containsPromise = false; + const completedResults = arrayFrom(result, (item, index) => { + // No need to modify the info object containing the path, + // since from here on it is not ever accessed by resolver functions. + const fieldPath = addPath(path, index); + const completedItem = completeValueCatchingError(exeContext, itemType, fieldNodes, info, fieldPath, item); + + if (!containsPromise && isPromise(completedItem)) { + containsPromise = true; + } + + return completedItem; + }); + return containsPromise ? Promise.all(completedResults) : completedResults; +} +/** + * Complete a Scalar or Enum by serializing to a valid value, returning + * null if serialization is not possible. + */ + + +function completeLeafValue(returnType, result) { + const serializedResult = returnType.serialize(result); + + if (serializedResult === undefined) { + throw new Error(`Expected a value of type "${inspect(returnType)}" but ` + `received: ${inspect(result)}`); + } + + return serializedResult; +} +/** + * Complete a value of an abstract type by determining the runtime object type + * of that value, then complete the value for that type. + */ + + +function completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result) { + const resolveTypeFn = returnType.resolveType ?? exeContext.typeResolver; + const contextValue = exeContext.contextValue; + const runtimeType = resolveTypeFn(result, contextValue, info, returnType); + + if (isPromise(runtimeType)) { + return runtimeType.then(resolvedRuntimeType => completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result)); + } + + return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result); +} + +function ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) { + const runtimeType = typeof runtimeTypeOrName === 'string' ? exeContext.schema.getType(runtimeTypeOrName) : runtimeTypeOrName; + + if (!isObjectType(runtimeType)) { + throw new GraphQLError(`Abstract type "${returnType.name}" must resolve to an Object type at runtime for field "${info.parentType.name}.${info.fieldName}" with ` + `value ${inspect(result)}, received "${inspect(runtimeType)}". ` + `Either the "${returnType.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, fieldNodes); + } + + if (!exeContext.schema.isSubType(returnType, runtimeType)) { + throw new GraphQLError(`Runtime Object type "${runtimeType.name}" is not a possible type for "${returnType.name}".`, fieldNodes); + } + + return runtimeType; +} +/** + * Complete an Object value by executing all sub-selections. + */ + + +function completeObjectValue(exeContext, returnType, fieldNodes, info, path, result) { + // If there is an isTypeOf predicate function, call it with the + // current result. If isTypeOf returns false, then raise an error rather + // than continuing execution. + if (returnType.isTypeOf) { + const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info); + + if (isPromise(isTypeOf)) { + return isTypeOf.then(resolvedIsTypeOf => { + if (!resolvedIsTypeOf) { + throw invalidReturnTypeError(returnType, result, fieldNodes); + } + + return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result); + }); + } + + if (!isTypeOf) { + throw invalidReturnTypeError(returnType, result, fieldNodes); + } + } + + return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result); +} + +function invalidReturnTypeError(returnType, result, fieldNodes) { + return new GraphQLError(`Expected value of type "${returnType.name}" but got: ${inspect(result)}.`, fieldNodes); +} + +function collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result) { + // Collect sub-fields to execute to complete this value. + const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); + return executeFields(exeContext, returnType, result, path, subFieldNodes); +} +/** + * A memoized collection of relevant subfields with regard to the return + * type. Memoizing ensures the subfields are not repeatedly calculated, which + * saves overhead when resolving lists of values. + */ + + +const collectSubfields = memoize3(_collectSubfields); + +function _collectSubfields(exeContext, returnType, fieldNodes) { + let subFieldNodes = Object.create(null); + const visitedFragmentNames = Object.create(null); + + for (const node of fieldNodes) { + if (node.selectionSet) { + subFieldNodes = collectFields(exeContext, returnType, node.selectionSet, subFieldNodes, visitedFragmentNames); + } + } + + return subFieldNodes; +} +/** + * If a resolveType function is not given, then a default resolve behavior is + * used which attempts two strategies: + * + * First, See if the provided value has a `__typename` field defined, if so, use + * that value as name of the resolved type. + * + * Otherwise, test each possible type for the abstract type by calling + * isTypeOf for the object being coerced, returning the first type that matches. + */ + + +export const defaultTypeResolver = function (value, contextValue, info, abstractType) { + // First, look for `__typename`. + if (isObjectLike(value) && typeof value.__typename === 'string') { + return value.__typename; + } // Otherwise, test each possible type. + + + const possibleTypes = info.schema.getPossibleTypes(abstractType); + const promisedIsTypeOfResults = []; + + for (let i = 0; i < possibleTypes.length; i++) { + const type = possibleTypes[i]; + + if (type.isTypeOf) { + const isTypeOfResult = type.isTypeOf(value, contextValue, info); + + if (isPromise(isTypeOfResult)) { + promisedIsTypeOfResults[i] = isTypeOfResult; + } else if (isTypeOfResult) { + return type; + } + } + } + + if (promisedIsTypeOfResults.length) { + return Promise.all(promisedIsTypeOfResults).then(isTypeOfResults => { + for (let i = 0; i < isTypeOfResults.length; i++) { + if (isTypeOfResults[i]) { + return possibleTypes[i]; + } + } + }); + } +}; +/** + * If a resolve function is not given, then a default resolve behavior is used + * which takes the property of the source object of the same name as the field + * and returns it as the result, or if it's a function, returns the result + * of calling that function while passing along args and context value. + */ + +export const defaultFieldResolver = function (source, args, contextValue, info) { + // ensure source is a value for which property access is acceptable. + if (isObjectLike(source) || typeof source === 'function') { + const property = source[info.fieldName]; + + if (typeof property === 'function') { + return source[info.fieldName](args, contextValue, info); + } + + return property; + } +}; +/** + * This method looks up the field on the given type definition. + * It has special casing for the two introspection fields, __schema + * and __typename. __typename is special because it can always be + * queried as a field, even in situations where no other fields + * are allowed, like on a Union. __schema could get automatically + * added to the query type, but that would require mutating type + * definitions, which would cause issues. + * + * @internal + */ + +export function getFieldDef(schema, parentType, fieldName) { + if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) { + return SchemaMetaFieldDef; + } else if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === parentType) { + return TypeMetaFieldDef; + } else if (fieldName === TypeNameMetaFieldDef.name) { + return TypeNameMetaFieldDef; + } + + return parentType.getFields()[fieldName]; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/e100cbe58f455002090fed192baa83b8a471f524.ts b/bundler/tests/.cache/deno/e100cbe58f455002090fed192baa83b8a471f524.ts new file mode 100644 index 00000000000..2194d1fda9a --- /dev/null +++ b/bundler/tests/.cache/deno/e100cbe58f455002090fed192baa83b8a471f524.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.73.0/async/delay.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/e10c0c2bc160551bb9ddae4049dd7707df449cc4.ts b/bundler/tests/.cache/deno/e10c0c2bc160551bb9ddae4049dd7707df449cc4.ts new file mode 100644 index 00000000000..21fced0e21c --- /dev/null +++ b/bundler/tests/.cache/deno/e10c0c2bc160551bb9ddae4049dd7707df449cc4.ts @@ -0,0 +1,383 @@ +// Loaded from https://deno.land/std@0.73.0/http/_io.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { assert } from "../_util/assert.ts"; +import { encoder } from "../encoding/utf8.ts"; +import { Response, ServerRequest } from "./server.ts"; +import { STATUS_TEXT } from "./http_status.ts"; + +export function emptyReader(): Deno.Reader { + return { + read(_: Uint8Array): Promise { + return Promise.resolve(null); + }, + }; +} + +export function bodyReader(contentLength: number, r: BufReader): Deno.Reader { + let totalRead = 0; + let finished = false; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + let result: number | null; + const remaining = contentLength - totalRead; + if (remaining >= buf.byteLength) { + result = await r.read(buf); + } else { + const readBuf = buf.subarray(0, remaining); + result = await r.read(readBuf); + } + if (result !== null) { + totalRead += result; + } + finished = totalRead === contentLength; + return result; + } + return { read }; +} + +export function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO: handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Error("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +function isProhibidedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} + +/** Read trailer headers from reader and append values to headers. "trailer" + * field will be deleted. */ +export async function readTrailers( + headers: Headers, + r: BufReader, +): Promise { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMIMEHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibidedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +export async function writeChunkedBody( + w: Deno.Writer, + r: Deno.Reader, +): Promise { + const writer = BufWriter.create(w); + for await (const chunk of Deno.iter(r)) { + if (chunk.byteLength <= 0) continue; + const start = encoder.encode(`${chunk.byteLength.toString(16)}\r\n`); + const end = encoder.encode("\r\n"); + await writer.write(start); + await writer.write(chunk); + await writer.write(end); + } + + const endChunk = encoder.encode("0\r\n\r\n"); + await writer.write(endChunk); +} + +/** Write trailer headers to writer. It should mostly should be called after + * `writeResponse()`. */ +export async function writeTrailers( + w: Deno.Writer, + headers: Headers, + trailers: Headers, +): Promise { + const trailer = headers.get("trailer"); + if (trailer === null) { + throw new TypeError("Missing trailer header."); + } + const transferEncoding = headers.get("transfer-encoding"); + if (transferEncoding === null || !transferEncoding.match(/^chunked/)) { + throw new TypeError( + `Trailers are only allowed for "transfer-encoding: chunked", got "transfer-encoding: ${transferEncoding}".`, + ); + } + const writer = BufWriter.create(w); + const trailerNames = trailer.split(",").map((s) => s.trim().toLowerCase()); + const prohibitedTrailers = trailerNames.filter((k) => + isProhibidedForTrailer(k) + ); + if (prohibitedTrailers.length > 0) { + throw new TypeError( + `Prohibited trailer names: ${Deno.inspect(prohibitedTrailers)}.`, + ); + } + const undeclared = [...trailers.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new TypeError(`Undeclared trailers: ${Deno.inspect(undeclared)}.`); + } + for (const [key, value] of trailers) { + await writer.write(encoder.encode(`${key}: ${value}\r\n`)); + } + await writer.write(encoder.encode("\r\n")); + await writer.flush(); +} + +export async function writeResponse( + w: Deno.Writer, + r: Response, +): Promise { + const protoMajor = 1; + const protoMinor = 1; + const statusCode = r.status || 200; + const statusText = STATUS_TEXT.get(statusCode); + const writer = BufWriter.create(w); + if (!statusText) { + throw new Deno.errors.InvalidData("Bad status code"); + } + if (!r.body) { + r.body = new Uint8Array(); + } + if (typeof r.body === "string") { + r.body = encoder.encode(r.body); + } + + let out = `HTTP/${protoMajor}.${protoMinor} ${statusCode} ${statusText}\r\n`; + + const headers = r.headers ?? new Headers(); + + if (r.body && !headers.get("content-length")) { + if (r.body instanceof Uint8Array) { + out += `content-length: ${r.body.byteLength}\r\n`; + } else if (!headers.get("transfer-encoding")) { + out += "transfer-encoding: chunked\r\n"; + } + } + + for (const [key, value] of headers) { + out += `${key}: ${value}\r\n`; + } + + out += `\r\n`; + + const header = encoder.encode(out); + const n = await writer.write(header); + assert(n === header.byteLength); + + if (r.body instanceof Uint8Array) { + const n = await writer.write(r.body); + assert(n === r.body.byteLength); + } else if (headers.has("content-length")) { + const contentLength = headers.get("content-length"); + assert(contentLength != null); + const bodyLength = parseInt(contentLength); + const n = await Deno.copy(r.body, writer); + assert(n === bodyLength); + } else { + await writeChunkedBody(writer, r.body); + } + if (r.trailers) { + const t = await r.trailers(); + await writeTrailers(writer, headers, t); + } + await writer.flush(); +} + +/** + * ParseHTTPVersion parses a HTTP version string. + * "HTTP/1.0" returns (1, 0). + * Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792 + */ +export function parseHTTPVersion(vers: string): [number, number] { + switch (vers) { + case "HTTP/1.1": + return [1, 1]; + + case "HTTP/1.0": + return [1, 0]; + + default: { + const Big = 1000000; // arbitrary upper bound + + if (!vers.startsWith("HTTP/")) { + break; + } + + const dot = vers.indexOf("."); + if (dot < 0) { + break; + } + + const majorStr = vers.substring(vers.indexOf("/") + 1, dot); + const major = Number(majorStr); + if (!Number.isInteger(major) || major < 0 || major > Big) { + break; + } + + const minorStr = vers.substring(dot + 1); + const minor = Number(minorStr); + if (!Number.isInteger(minor) || minor < 0 || minor > Big) { + break; + } + + return [major, minor]; + } + } + + throw new Error(`malformed HTTP version ${vers}`); +} + +export async function readRequest( + conn: Deno.Conn, + bufr: BufReader, +): Promise { + const tp = new TextProtoReader(bufr); + const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 + if (firstLine === null) return null; + const headers = await tp.readMIMEHeader(); + if (headers === null) throw new Deno.errors.UnexpectedEof(); + + const req = new ServerRequest(); + req.conn = conn; + req.r = bufr; + [req.method, req.url, req.proto] = firstLine.split(" ", 3); + [req.protoMinor, req.protoMajor] = parseHTTPVersion(req.proto); + req.headers = headers; + fixLength(req); + return req; +} + +function fixLength(req: ServerRequest): void { + const contentLength = req.headers.get("Content-Length"); + if (contentLength) { + const arrClen = contentLength.split(","); + if (arrClen.length > 1) { + const distinct = [...new Set(arrClen.map((e): string => e.trim()))]; + if (distinct.length > 1) { + throw Error("cannot contain multiple Content-Length headers"); + } else { + req.headers.set("Content-Length", distinct[0]); + } + } + const c = req.headers.get("Content-Length"); + if (req.method === "HEAD" && c && c !== "0") { + throw Error("http: method cannot contain a Content-Length"); + } + if (c && req.headers.has("transfer-encoding")) { + // A sender MUST NOT send a Content-Length header field in any message + // that contains a Transfer-Encoding header field. + // rfc: https://tools.ietf.org/html/rfc7230#section-3.3.2 + throw new Error( + "http: Transfer-Encoding and Content-Length cannot be send together", + ); + } + } +} diff --git a/bundler/tests/.cache/deno/e12f197f584c32e84c4a91178e294941eaa27f33.ts b/bundler/tests/.cache/deno/e12f197f584c32e84c4a91178e294941eaa27f33.ts new file mode 100644 index 00000000000..2319198ce28 --- /dev/null +++ b/bundler/tests/.cache/deno/e12f197f584c32e84c4a91178e294941eaa27f33.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/collection/commands/aggregate.ts + + +import { CommandCursor } from "../../protocol/cursor.ts"; +import { WireProtocol } from "../../protocol/protocol.ts"; +import { AggregateOptions, Document } from "../../types.ts"; + +interface AggregateCursorContext { + dbName: string; + collectionName: string; + protocol: WireProtocol; + pipeline: Document; + options?: AggregateOptions; +} + +export class AggregateCursor extends CommandCursor { + #context: AggregateCursorContext; + + private async executor() { + const { dbName, pipeline, collectionName, protocol, options } = + this.#context; + + const { cursor } = await protocol.commandSingle(dbName, { + aggregate: collectionName, + pipeline, + cursor: { + batchSize: options?.batchSize || 1000, + }, + ...options, + }); + return { + ...cursor, + id: cursor.id.toString(), + }; + } + + constructor(context: AggregateCursorContext) { + super(context.protocol, () => this.executor()); + this.#context = context; + } +} diff --git a/bundler/tests/.cache/deno/e15e34e2df22b87f06994f00c9b4e0e9e912d5f8.ts b/bundler/tests/.cache/deno/e15e34e2df22b87f06994f00c9b4e0e9e912d5f8.ts new file mode 100644 index 00000000000..e69e7518002 --- /dev/null +++ b/bundler/tests/.cache/deno/e15e34e2df22b87f06994f00c9b4e0e9e912d5f8.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.77.0/fs/eol.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** EndOfLine character enum */ +export enum EOL { + LF = "\n", + CRLF = "\r\n", +} + +const regDetect = /(?:\r?\n)/g; + +/** + * Detect the EOL character for string input. + * returns null if no newline + */ +export function detect(content: string): EOL | null { + const d = content.match(regDetect); + if (!d || d.length === 0) { + return null; + } + const crlf = d.filter((x: string): boolean => x === EOL.CRLF); + if (crlf.length > 0) { + return EOL.CRLF; + } else { + return EOL.LF; + } +} + +/** Format the file to the targeted EOL */ +export function format(content: string, eol: EOL): string { + return content.replace(regDetect, eol); +} diff --git a/bundler/tests/.cache/deno/e172f2cf0c39fe54286e353190000b46f66147fc.ts b/bundler/tests/.cache/deno/e172f2cf0c39fe54286e353190000b46f66147fc.ts new file mode 100644 index 00000000000..c8dec6e4730 --- /dev/null +++ b/bundler/tests/.cache/deno/e172f2cf0c39fe54286e353190000b46f66147fc.ts @@ -0,0 +1,31 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_dissoc.js + + +import _isInteger from './_isInteger.js'; +import _isArray from './_isArray.js'; +import remove from '../remove.js'; + +/** + * Returns a new object that does not contain a `prop` property. + * + * @private + * @param {String|Number} prop The name of the property to dissociate + * @param {Object|Array} obj The object to clone + * @return {Object} A new object equivalent to the original but without the specified property + */ +export default function _dissoc(prop, obj) { + if (obj == null) { + return obj; + } + + if (_isInteger(prop) && _isArray(obj)) { + return remove(prop, 1, obj); + } + + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + delete result[prop]; + return result; +} diff --git a/bundler/tests/.cache/deno/e2c269b8eb8154e77fa3e29616a66f12457e0d99.ts b/bundler/tests/.cache/deno/e2c269b8eb8154e77fa3e29616a66f12457e0d99.ts new file mode 100644 index 00000000000..3bee8ccfd0f --- /dev/null +++ b/bundler/tests/.cache/deno/e2c269b8eb8154e77fa3e29616a66f12457e0d99.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.73.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/e2ed8b69988a34e5280e092db717ab4a77651b79.ts b/bundler/tests/.cache/deno/e2ed8b69988a34e5280e092db717ab4a77651b79.ts new file mode 100644 index 00000000000..4bb9c028eba --- /dev/null +++ b/bundler/tests/.cache/deno/e2ed8b69988a34e5280e092db717ab4a77651b79.ts @@ -0,0 +1,45 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/uncurryN.js + + +import _curry2 from './internal/_curry2.js'; +import curryN from './curryN.js'; + + +/** + * Returns a function of arity `n` from a (manually) curried function. + * Note that, the returned function is actually a ramda style + * curryied function, which can accept one or more arguments in each + * function calling. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Function + * @sig Number -> (a -> b -> c ... -> z) -> ((a -> b -> c ...) -> z) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to uncurry. + * @return {Function} A new function. + * @see R.curry, R.curryN + * @example + * + * const addFour = a => b => c => d => a + b + c + d; + * + * const uncurriedAddFour = R.uncurryN(4, addFour); + * uncurriedAddFour(1, 2, 3, 4); //=> 10 + */ +var uncurryN = _curry2(function uncurryN(depth, fn) { + return curryN(depth, function() { + var currentDepth = 1; + var value = fn; + var idx = 0; + var endIdx; + while (currentDepth <= depth && typeof value === 'function') { + endIdx = currentDepth === depth ? arguments.length : idx + value.length; + value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); + currentDepth += 1; + idx = endIdx; + } + return value; + }); +}); +export default uncurryN; diff --git a/bundler/tests/.cache/deno/e31fbd5a45e548817df35e52c3e911f2e3481f8d.ts b/bundler/tests/.cache/deno/e31fbd5a45e548817df35e52c3e911f2e3481f8d.ts new file mode 100644 index 00000000000..e02c14e175e --- /dev/null +++ b/bundler/tests/.cache/deno/e31fbd5a45e548817df35e52c3e911f2e3481f8d.ts @@ -0,0 +1,470 @@ +// Loaded from https://deno.land/x/deno_image@v0.0.3/lib/decoders/fast-png/PNGDecoder.ts + + + +import { IOBuffer } from './iobuffer/IOBuffer.ts'; +import { Inflate as Inflator } from './pako/index.js'; + +import { pngSignature, crc } from './common.ts'; +import type { + IDecodedPNG, + DecoderInputType, + IPNGDecoderOptions, + PNGDataArray, + IndexedColors, + BitDepth, + IInflator +} from './types.ts'; +import { + ColorType, + CompressionMethod, + FilterMethod, + InterlaceMethod, +} from './internalTypes.ts'; + +const empty = new Uint8Array(0); +const NULL = '\0'; + +const uint16 = new Uint16Array([0x00ff]); +const uint8 = new Uint8Array(uint16.buffer); +const osIsLittleEndian = uint8[0] === 0xff; + +export default class PNGDecoder extends IOBuffer { + private _checkCrc: boolean; + private _inflator: IInflator; + private _png: IDecodedPNG; + private _end: boolean; + private _hasPalette: boolean; + private _palette: IndexedColors; + private _compressionMethod: CompressionMethod; + private _filterMethod: FilterMethod; + private _interlaceMethod: InterlaceMethod; + private _colorType: number; + + public constructor(data: DecoderInputType, options: IPNGDecoderOptions = {}) { + super(data); + const { checkCrc = false } = options; + this._checkCrc = checkCrc; + this._inflator = new Inflator(); + this._png = { + width: -1, + height: -1, + channels: -1, + data: new Uint8Array(0), + depth: 1, + text: {}, + }; + this._end = false; + this._hasPalette = false; + this._palette = []; + this._compressionMethod = CompressionMethod.UNKNOWN; + this._filterMethod = FilterMethod.UNKNOWN; + this._interlaceMethod = InterlaceMethod.UNKNOWN; + this._colorType = -1; + // PNG is always big endian + // https://www.w3.org/TR/PNG/#7Integers-and-byte-order + this.setBigEndian(); + } + + public decode(): IDecodedPNG { + this.decodeSignature(); + while (!this._end) { + this.decodeChunk(); + } + this.decodeImage(); + return this._png; + } + + // https://www.w3.org/TR/PNG/#5PNG-file-signature + private decodeSignature(): void { + for (let i = 0; i < pngSignature.length; i++) { + if (this.readUint8() !== pngSignature[i]) { + throw new Error( + `wrong PNG signature. Byte at ${i} should be ${pngSignature[i]}.`, + ); + } + } + } + + // https://www.w3.org/TR/PNG/#5Chunk-layout + private decodeChunk(): void { + const length = this.readUint32(); + const type = this.readChars(4); + const offset = this.offset; + switch (type) { + // 11.2 Critical chunks + case 'IHDR': // 11.2.2 IHDR Image header + this.decodeIHDR(); + break; + case 'PLTE': // 11.2.3 PLTE Palette + this.decodePLTE(length); + break; + case 'IDAT': // 11.2.4 IDAT Image data + this.decodeIDAT(length); + break; + case 'IEND': // 11.2.5 IEND Image trailer + this._end = true; + break; + // 11.3 Ancillary chunks + case 'tRNS': // 11.3.2.1 tRNS Transparency + this.decodetRNS(length); + break; + case 'tEXt': // 11.3.4.3 tEXt Textual data + this.decodetEXt(length); + break; + case 'pHYs': // 11.3.5.3 pHYs Physical pixel dimensions + this.decodepHYs(); + break; + default: + this.skip(length); + break; + } + if (this.offset - offset !== length) { + throw new Error(`Length mismatch while decoding chunk ${type}`); + } + if (this._checkCrc) { + const expectedCrc = this.readUint32(); + const crcLength = length + 4; // includes type + const actualCrc = crc( + new Uint8Array( + this.buffer, + this.byteOffset + this.offset - crcLength - 4, + crcLength, + ), + crcLength, + ); // "- 4" because we already advanced by reading the CRC + if (actualCrc !== expectedCrc) { + throw new Error( + `CRC mismatch for chunk ${type}. Expected ${expectedCrc}, found ${actualCrc}`, + ); + } + } else { + this.skip(4); + } + } + + // https://www.w3.org/TR/PNG/#11IHDR + private decodeIHDR(): void { + const image = this._png; + image.width = this.readUint32(); + image.height = this.readUint32(); + image.depth = checkBitDepth(this.readUint8()); + + const colorType: ColorType = this.readUint8(); + this._colorType = colorType; + let channels: number; + switch (colorType) { + case ColorType.GREYSCALE: + channels = 1; + break; + case ColorType.TRUECOLOUR: + channels = 3; + break; + case ColorType.INDEXED_COLOUR: + channels = 1; + break; + case ColorType.GREYSCALE_ALPHA: + channels = 2; + break; + case ColorType.TRUECOLOUR_ALPHA: + channels = 4; + break; + default: + throw new Error(`Unknown color type: ${colorType}`); + } + this._png.channels = channels; + + this._compressionMethod = this.readUint8(); + if (this._compressionMethod !== CompressionMethod.DEFLATE) { + throw new Error( + `Unsupported compression method: ${this._compressionMethod}`, + ); + } + + this._filterMethod = this.readUint8(); + this._interlaceMethod = this.readUint8(); + } + + // https://www.w3.org/TR/PNG/#11PLTE + private decodePLTE(length: number): void { + if (length % 3 !== 0) { + throw new RangeError( + `PLTE field length must be a multiple of 3. Got ${length}`, + ); + } + const l = length / 3; + this._hasPalette = true; + const palette: IndexedColors = []; + this._palette = palette; + for (let i = 0; i < l; i++) { + palette.push([this.readUint8(), this.readUint8(), this.readUint8()]); + } + } + + // https://www.w3.org/TR/PNG/#11IDAT + private decodeIDAT(length: number): void { + this._inflator.push( + new Uint8Array(this.buffer, this.offset + this.byteOffset, length), + false, + ); + this.skip(length); + } + + // https://www.w3.org/TR/PNG/#11tRNS + private decodetRNS(length: number): void { + // TODO: support other color types. + if (this._colorType === 3) { + if (length > this._palette.length) { + throw new Error( + `tRNS chunk contains more alpha values than there are palette colors (${length} vs ${this._palette.length})`, + ); + } + let i = 0; + for (; i < length; i++) { + const alpha = this.readByte(); + this._palette[i].push(alpha); + } + for (; i < this._palette.length; i++) { + this._palette[i].push(255); + } + } + } + + // https://www.w3.org/TR/PNG/#11tEXt + private decodetEXt(length: number): void { + let keyword = ''; + let char; + while ((char = this.readChar()) !== NULL) { + keyword += char; + } + this._png.text[keyword] = this.readChars(length - keyword.length - 1); + } + + // https://www.w3.org/TR/PNG/#11pHYs + private decodepHYs(): void { + const ppuX = this.readUint32(); + const ppuY = this.readUint32(); + const unitSpecifier = this.readByte(); + this._png.resolution = { x: ppuX, y: ppuY, unit: unitSpecifier }; + } + + private decodeImage(): void { + this._inflator.push(empty, true); + if (this._inflator.err) { + throw new Error( + `Error while decompressing the data: ${this._inflator.err}`, + ); + } + const data = this._inflator.result; + + if (this._filterMethod !== FilterMethod.ADAPTIVE) { + throw new Error(`Filter method ${this._filterMethod} not supported`); + } + + if (this._interlaceMethod === InterlaceMethod.NO_INTERLACE) { + this.decodeInterlaceNull(data as Uint8Array); + } else { + throw new Error( + `Interlace method ${this._interlaceMethod} not supported`, + ); + } + } + + private decodeInterlaceNull(data: PNGDataArray): void { + const height = this._png.height; + const bytesPerPixel = (this._png.channels * this._png.depth) / 8; + const bytesPerLine = this._png.width * bytesPerPixel; + const newData = new Uint8Array(this._png.height * bytesPerLine); + + let prevLine = empty; + let offset = 0; + let currentLine; + let newLine; + + for (let i = 0; i < height; i++) { + currentLine = data.subarray(offset + 1, offset + 1 + bytesPerLine); + newLine = newData.subarray(i * bytesPerLine, (i + 1) * bytesPerLine); + switch (data[offset]) { + case 0: + unfilterNone(currentLine, newLine, bytesPerLine); + break; + case 1: + unfilterSub(currentLine, newLine, bytesPerLine, bytesPerPixel); + break; + case 2: + unfilterUp(currentLine, newLine, prevLine, bytesPerLine); + break; + case 3: + unfilterAverage( + currentLine, + newLine, + prevLine, + bytesPerLine, + bytesPerPixel, + ); + break; + case 4: + unfilterPaeth( + currentLine, + newLine, + prevLine, + bytesPerLine, + bytesPerPixel, + ); + break; + default: + throw new Error(`Unsupported filter: ${data[offset]}`); + } + prevLine = newLine; + offset += bytesPerLine + 1; + } + + if (this._hasPalette) { + this._png.palette = this._palette; + } + + if (this._png.depth === 16) { + const uint16Data = new Uint16Array(newData.buffer); + if (osIsLittleEndian) { + for (let k = 0; k < uint16Data.length; k++) { + // PNG is always big endian. Swap the bytes. + uint16Data[k] = swap16(uint16Data[k]); + } + } + this._png.data = uint16Data; + } else { + this._png.data = newData; + } + } +} + +function unfilterNone( + currentLine: PNGDataArray, + newLine: PNGDataArray, + bytesPerLine: number, +): void { + for (let i = 0; i < bytesPerLine; i++) { + newLine[i] = currentLine[i]; + } +} + +function unfilterSub( + currentLine: PNGDataArray, + newLine: PNGDataArray, + bytesPerLine: number, + bytesPerPixel: number, +): void { + let i = 0; + for (; i < bytesPerPixel; i++) { + // just copy first bytes + newLine[i] = currentLine[i]; + } + for (; i < bytesPerLine; i++) { + newLine[i] = (currentLine[i] + newLine[i - bytesPerPixel]) & 0xff; + } +} + +function unfilterUp( + currentLine: PNGDataArray, + newLine: PNGDataArray, + prevLine: PNGDataArray, + bytesPerLine: number, +): void { + let i = 0; + if (prevLine.length === 0) { + // just copy bytes for first line + for (; i < bytesPerLine; i++) { + newLine[i] = currentLine[i]; + } + } else { + for (; i < bytesPerLine; i++) { + newLine[i] = (currentLine[i] + prevLine[i]) & 0xff; + } + } +} + +function unfilterAverage( + currentLine: PNGDataArray, + newLine: PNGDataArray, + prevLine: PNGDataArray, + bytesPerLine: number, + bytesPerPixel: number, +): void { + let i = 0; + if (prevLine.length === 0) { + for (; i < bytesPerPixel; i++) { + newLine[i] = currentLine[i]; + } + for (; i < bytesPerLine; i++) { + newLine[i] = (currentLine[i] + (newLine[i - bytesPerPixel] >> 1)) & 0xff; + } + } else { + for (; i < bytesPerPixel; i++) { + newLine[i] = (currentLine[i] + (prevLine[i] >> 1)) & 0xff; + } + for (; i < bytesPerLine; i++) { + newLine[i] = + (currentLine[i] + ((newLine[i - bytesPerPixel] + prevLine[i]) >> 1)) & + 0xff; + } + } +} + +function unfilterPaeth( + currentLine: PNGDataArray, + newLine: PNGDataArray, + prevLine: PNGDataArray, + bytesPerLine: number, + bytesPerPixel: number, +): void { + let i = 0; + if (prevLine.length === 0) { + for (; i < bytesPerPixel; i++) { + newLine[i] = currentLine[i]; + } + for (; i < bytesPerLine; i++) { + newLine[i] = (currentLine[i] + newLine[i - bytesPerPixel]) & 0xff; + } + } else { + for (; i < bytesPerPixel; i++) { + newLine[i] = (currentLine[i] + prevLine[i]) & 0xff; + } + for (; i < bytesPerLine; i++) { + newLine[i] = + (currentLine[i] + + paethPredictor( + newLine[i - bytesPerPixel], + prevLine[i], + prevLine[i - bytesPerPixel], + )) & + 0xff; + } + } +} + +function paethPredictor(a: number, b: number, c: number): number { + const p = a + b - c; + const pa = Math.abs(p - a); + const pb = Math.abs(p - b); + const pc = Math.abs(p - c); + if (pa <= pb && pa <= pc) return a; + else if (pb <= pc) return b; + else return c; +} + +function swap16(val: number): number { + return ((val & 0xff) << 8) | ((val >> 8) & 0xff); +} + +function checkBitDepth(value: number): BitDepth { + if ( + value !== 1 && + value !== 2 && + value !== 4 && + value !== 8 && + value !== 16 + ) { + throw new Error(`invalid bit depth: ${value}`); + } + return value; +} diff --git a/bundler/tests/.cache/deno/e347b9844739d6f8cdba667c63adc3985638179b.ts b/bundler/tests/.cache/deno/e347b9844739d6f8cdba667c63adc3985638179b.ts new file mode 100644 index 00000000000..5d682cdc473 --- /dev/null +++ b/bundler/tests/.cache/deno/e347b9844739d6f8cdba667c63adc3985638179b.ts @@ -0,0 +1,136 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/src/basic_encoding_rule.ts + + +interface BasicEncodingRule { + type: number; + length: number; + totalLength: number; + value: BasicEncodingRuleValue; +} + +type BasicEncodingRuleValue = + | Uint8Array + | string + | number + | BasicEncodingRule[] + | null + | bigint; +type BasicEncodingSimpleValue = + | Uint8Array + | string + | number + | null + | bigint + | BasicEncodingSimpleValue[]; + +export function ber_decode( + bytes: Uint8Array, + from?: number, + to?: number, +): BasicEncodingRule { + return ber_next(bytes); +} + +function ber_sequence( + bytes: Uint8Array, + from: number, + length: number, +): BasicEncodingRule[] { + const end = from + length; + let res: BasicEncodingRule[] = []; + let ptr = from; + + while (ptr < end) { + const next = ber_next(bytes, ptr); + res.push(next); + ptr += next.totalLength; + } + + return res; +} + +function ber_integer(bytes: Uint8Array, from: number, length: number): bigint { + let n = 0n; + for (const b of bytes.slice(from, from + length)) { + n = (n << 8n) + BigInt(b); + } + return n; +} + +function ber_oid(bytes: Uint8Array, from: number, length: number): string { + const id = [ + (bytes[from] / 40) | 0, + (bytes[from] % 40), + ]; + let value = 0; + + for (const b of bytes.slice(from + 1, from + length)) { + if (b > 128) value += value * 127 + (b - 128); + else { + value = value * 128 + b; + id.push(value); + value = 0; + } + } + + return id.join("."); +} + +function ber_unknown( + bytes: Uint8Array, + from: number, + length: number, +): Uint8Array { + return bytes.slice(from, from + length); +} + +export function ber_simple(n: BasicEncodingRule): BasicEncodingSimpleValue { + if (Array.isArray(n.value)) return n.value.map((x) => ber_simple(x)); + return n.value as BasicEncodingSimpleValue; +} + +function ber_next( + bytes: Uint8Array, + from?: number, + to?: number, +): BasicEncodingRule { + if (!from) from = 0; + if (!to) to = bytes.length; + + let ptr = from; + + const type = bytes[ptr++]; + let size = bytes[ptr++]; + + if ((size & 0x80) > 0) { + let ext = size - 0x80; + size = 0; + + while (--ext >= 0) { + size = (size << 8) + bytes[ptr++]; + } + } + + // Sequence + let value = null; + if (type === 0x30) { + value = ber_sequence(bytes, ptr, size); + } else if (type === 0x2) { + value = ber_integer(bytes, ptr, size); + } else if (type === 0x3) { + value = ber_sequence(bytes, ptr + 1, size - 1); + } else if (type === 0x5) { + value = null; + } else if (type === 0x6) { + value = ber_oid(bytes, ptr, size); + } else { + value = ber_unknown(bytes, ptr, size); + } + + return { + totalLength: (ptr - from) + size, + type, + length: size, + value, + }; +} diff --git a/bundler/tests/.cache/deno/e3538a08508a6bc6a8e87897cb875847b761bd81.ts b/bundler/tests/.cache/deno/e3538a08508a6bc6a8e87897cb875847b761bd81.ts new file mode 100644 index 00000000000..8c09c9205a9 --- /dev/null +++ b/bundler/tests/.cache/deno/e3538a08508a6bc6a8e87897cb875847b761bd81.ts @@ -0,0 +1,714 @@ +// Loaded from https://deno.land/std@0.74.0/io/bufio.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copyBytes } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copyBytes(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +// eslint-disable-next-line require-await +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + yield* readStringDelim(reader, "\n"); +} diff --git a/bundler/tests/.cache/deno/e398bc9afb1566b85f6c9ea04c369eafa7482e65.ts b/bundler/tests/.cache/deno/e398bc9afb1566b85f6c9ea04c369eafa7482e65.ts new file mode 100644 index 00000000000..4e138ef2197 --- /dev/null +++ b/bundler/tests/.cache/deno/e398bc9afb1566b85f6c9ea04c369eafa7482e65.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/std@0.74.0/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +const hextable = new TextEncoder().encode("0123456789abcdef"); + +/** + * ErrInvalidByte takes an invalid byte and returns an Error. + * @param byte + */ +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])), + ); +} + +/** ErrLength returns an error about odd string length. */ +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value. +function fromHexChar(byte: number): number { + // '0' <= byte && byte <= '9' + if (48 <= byte && byte <= 57) return byte - 48; + // 'a' <= byte && byte <= 'f' + if (97 <= byte && byte <= 102) return byte - 97 + 10; + // 'A' <= byte && byte <= 'F' + if (65 <= byte && byte <= 70) return byte - 65 + 10; + + throw errInvalidByte(byte); +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes. + * @param src + */ +export function encode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(encodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const v = src[i]; + dst[i * 2] = hextable[v >> 4]; + dst[i * 2 + 1] = hextable[v & 0x0f]; + } + return dst; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + return new TextDecoder().decode(encode(src)); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * If the input is malformed an error will be thrown + * the error. + * @param src + */ +export function decode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(decodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const a = fromHexChar(src[i * 2]); + const b = fromHexChar(src[i * 2 + 1]); + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + fromHexChar(src[dst.length * 2]); + throw errLength(); + } + + return dst; +} + +/** + * DecodedLen returns the length of decoding `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return x >>> 1; +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throw an error. + * @param s the `string` to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + return decode(new TextEncoder().encode(s)); +} diff --git a/bundler/tests/.cache/deno/e4420c1f014d74f39f8f0b4beaf283f65acb1bf2.ts b/bundler/tests/.cache/deno/e4420c1f014d74f39f8f0b4beaf283f65acb1bf2.ts new file mode 100644 index 00000000000..984a797ee6d --- /dev/null +++ b/bundler/tests/.cache/deno/e4420c1f014d74f39f8f0b4beaf283f65acb1bf2.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isUppercase.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const isUppercase = (str: string) => { + assertString(str); + return str === str.toUpperCase(); +}; diff --git a/bundler/tests/.cache/deno/e44f041c274af69fe87a62141a54d150e7318029.ts b/bundler/tests/.cache/deno/e44f041c274af69fe87a62141a54d150e7318029.ts new file mode 100644 index 00000000000..86112f88a58 --- /dev/null +++ b/bundler/tests/.cache/deno/e44f041c274af69fe87a62141a54d150e7318029.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/clone.js + + +import _clone from './internal/_clone.js'; +import _curry1 from './internal/_curry1.js'; + + +/** + * Creates a deep copy of the source that can be used in place of the source + * object without retaining any references to it. + * The source object may contain (nested) `Array`s and `Object`s, + * `Number`s, `String`s, `Boolean`s and `Date`s. + * `Function`s are assigned by reference rather than copied. + * + * Dispatches to a `clone` method if present. + * + * Note that if the source object has multiple nodes that share a reference, + * the returned object will have the same structure, but the references will + * be pointed to the location within the cloned value. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {*} -> {*} + * @param {*} value The object or array to clone + * @return {*} A deeply cloned copy of `val` + * @example + * + * const objects = [{}, {}, {}]; + * const objectsClone = R.clone(objects); + * objects === objectsClone; //=> false + * objects[0] === objectsClone[0]; //=> false + */ +var clone = _curry1(function clone(value) { + return value != null && typeof value.clone === 'function' ? + value.clone() : + _clone(value, [], [], true); +}); +export default clone; diff --git a/bundler/tests/.cache/deno/e4519cf959e83e6291af0f91a44c8f17dd4d1cd6.ts b/bundler/tests/.cache/deno/e4519cf959e83e6291af0f91a44c8f17dd4d1cd6.ts new file mode 100644 index 00000000000..a2c9961f7ae --- /dev/null +++ b/bundler/tests/.cache/deno/e4519cf959e83e6291af0f91a44c8f17dd4d1cd6.ts @@ -0,0 +1,212 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/request.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +import type { + Body, + BodyForm, + BodyFormData, + BodyJson, + BodyOptions, + BodyRaw, + BodyReader, + BodyText, +} from "./body.ts"; +import { RequestBody } from "./body.ts"; +import type { HTTPMethods, ServerRequest } from "./types.d.ts"; +import { preferredCharsets } from "./negotiation/charset.ts"; +import { preferredEncodings } from "./negotiation/encoding.ts"; +import { preferredLanguages } from "./negotiation/language.ts"; +import { preferredMediaTypes } from "./negotiation/mediaType.ts"; + +const decoder = new TextDecoder(); + +/** An interface which provides information about the current request. */ +export class Request { + #body: RequestBody; + #proxy: boolean; + #secure: boolean; + #serverRequest: ServerRequest; + #url?: URL; + + /** Is `true` if the request has a body, otherwise `false`. */ + get hasBody(): boolean { + return this.#body.has(); + } + + /** The `Headers` supplied in the request. */ + get headers(): Headers { + return this.#serverRequest.headers; + } + + /** Request remote address. When the application's `.proxy` is true, the + * `X-Forwarded-For` will be used to determine the requesting remote address. + */ + get ip(): string { + return this.#proxy + ? this.ips[0] + : (this.#serverRequest.conn.remoteAddr as Deno.NetAddr).hostname; + } + + /** When the application's `.proxy` is `true`, this will be set to an array of + * IPs, ordered from upstream to downstream, based on the value of the header + * `X-Forwarded-For`. When `false` an empty array is returned. */ + get ips(): string[] { + return this.#proxy + ? (this.#serverRequest.headers.get("x-forwarded-for") ?? + (this.#serverRequest.conn.remoteAddr as Deno.NetAddr).hostname).split( + /\s*,\s*/, + ) + : []; + } + + /** The HTTP Method used by the request. */ + get method(): HTTPMethods { + return this.#serverRequest.method as HTTPMethods; + } + + /** Shortcut to `request.url.protocol === "https:"`. */ + get secure(): boolean { + return this.#secure; + } + + /** Set to the value of the _original_ Deno server request. */ + get serverRequest(): ServerRequest { + return this.#serverRequest; + } + + /** A parsed URL for the request which complies with the browser standards. + * When the application's `.proxy` is `true`, this value will be based off of + * the `X-Forwarded-Proto` and `X-Forwarded-Host` header values if present in + * the request. */ + get url(): URL { + if (!this.#url) { + const serverRequest = this.#serverRequest; + let proto: string; + let host: string; + if (this.#proxy) { + proto = serverRequest + .headers.get("x-forwarded-proto")?.split(/\s*,\s*/, 1)[0] ?? + "http"; + host = serverRequest.headers.get("x-forwarded-host") ?? + serverRequest.headers.get("host") ?? ""; + } else { + proto = this.#secure ? "https" : "http"; + host = serverRequest.headers.get("host") ?? ""; + } + this.#url = new URL(`${proto}://${host}${serverRequest.url}`); + } + return this.#url; + } + + constructor(serverRequest: ServerRequest, proxy = false, secure = false) { + this.#proxy = proxy; + this.#secure = secure; + this.#serverRequest = serverRequest; + this.#body = new RequestBody(serverRequest); + } + + /** Returns an array of media types, accepted by the requestor, in order of + * preference. If there are no encodings supplied by the requestor, + * `undefined` is returned. + */ + accepts(): string[] | undefined; + /** For a given set of media types, return the best match accepted by the + * requestor. If there are no encoding that match, then the method returns + * `undefined`. + */ + accepts(...types: string[]): string | undefined; + accepts(...types: string[]): string | string[] | undefined { + const acceptValue = this.#serverRequest.headers.get("Accept"); + if (!acceptValue) { + return; + } + if (types.length) { + return preferredMediaTypes(acceptValue, types)[0]; + } + return preferredMediaTypes(acceptValue); + } + + /** Returns an array of charsets, accepted by the requestor, in order of + * preference. If there are no charsets supplied by the requestor, + * `undefined` is returned. + */ + acceptsCharsets(): string[] | undefined; + /** For a given set of charsets, return the best match accepted by the + * requestor. If there are no charsets that match, then the method returns + * `undefined`. */ + acceptsCharsets(...charsets: string[]): string | undefined; + acceptsCharsets(...charsets: string[]): string[] | string | undefined { + const acceptCharsetValue = this.#serverRequest.headers.get( + "Accept-Charset", + ); + if (!acceptCharsetValue) { + return; + } + if (charsets.length) { + return preferredCharsets(acceptCharsetValue, charsets)[0]; + } + return preferredCharsets(acceptCharsetValue); + } + + /** Returns an array of encodings, accepted by the requestor, in order of + * preference. If there are no encodings supplied by the requestor, + * `undefined` is returned. + */ + acceptsEncodings(): string[] | undefined; + /** For a given set of encodings, return the best match accepted by the + * requestor. If there are no encodings that match, then the method returns + * `undefined`. + * + * **NOTE:** You should always supply `identity` as one of the encodings + * to ensure that there is a match when the `Accept-Encoding` header is part + * of the request. + */ + acceptsEncodings(...encodings: string[]): string | undefined; + acceptsEncodings(...encodings: string[]): string[] | string | undefined { + const acceptEncodingValue = this.#serverRequest.headers.get( + "Accept-Encoding", + ); + if (!acceptEncodingValue) { + return; + } + if (encodings.length) { + return preferredEncodings(acceptEncodingValue, encodings)[0]; + } + return preferredEncodings(acceptEncodingValue); + } + + /** Returns an array of languages, accepted by the requestor, in order of + * preference. If there are no languages supplied by the requestor, + * `undefined` is returned. + */ + acceptsLanguages(): string[] | undefined; + /** For a given set of languages, return the best match accepted by the + * requestor. If there are no languages that match, then the method returns + * `undefined`. */ + acceptsLanguages(...langs: string[]): string | undefined; + acceptsLanguages(...langs: string[]): string[] | string | undefined { + const acceptLanguageValue = this.#serverRequest.headers.get( + "Accept-Language", + ); + if (!acceptLanguageValue) { + return; + } + if (langs.length) { + return preferredLanguages(acceptLanguageValue, langs)[0]; + } + return preferredLanguages(acceptLanguageValue); + } + + body(options: BodyOptions<"form">): BodyForm; + body(options: BodyOptions<"form-data">): BodyFormData; + body(options: BodyOptions<"json">): BodyJson; + body(options: BodyOptions<"raw">): BodyRaw; + body(options: BodyOptions<"reader">): BodyReader; + body(options: BodyOptions<"text">): BodyText; + body(options?: BodyOptions): Body; + body(options: BodyOptions = {}): Body | BodyReader { + return this.#body.get(options); + } +} diff --git a/bundler/tests/.cache/deno/e472e1b4ad1786b59e6e86f728927fca9dc86475.ts b/bundler/tests/.cache/deno/e472e1b4ad1786b59e6e86f728927fca9dc86475.ts new file mode 100644 index 00000000000..0c76e51e898 --- /dev/null +++ b/bundler/tests/.cache/deno/e472e1b4ad1786b59e6e86f728927fca9dc86475.ts @@ -0,0 +1,268 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISO31661Alpha3.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { includes } from '../helpers/includes.ts'; + +// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 +/** + * @ignore + */ +const validISO31661Alpha3CountriesCodes = [ + 'AFG', + 'ALA', + 'ALB', + 'DZA', + 'ASM', + 'AND', + 'AGO', + 'AIA', + 'ATA', + 'ATG', + 'ARG', + 'ARM', + 'ABW', + 'AUS', + 'AUT', + 'AZE', + 'BHS', + 'BHR', + 'BGD', + 'BRB', + 'BLR', + 'BEL', + 'BLZ', + 'BEN', + 'BMU', + 'BTN', + 'BOL', + 'BES', + 'BIH', + 'BWA', + 'BVT', + 'BRA', + 'IOT', + 'BRN', + 'BGR', + 'BFA', + 'BDI', + 'KHM', + 'CMR', + 'CAN', + 'CPV', + 'CYM', + 'CAF', + 'TCD', + 'CHL', + 'CHN', + 'CXR', + 'CCK', + 'COL', + 'COM', + 'COG', + 'COD', + 'COK', + 'CRI', + 'CIV', + 'HRV', + 'CUB', + 'CUW', + 'CYP', + 'CZE', + 'DNK', + 'DJI', + 'DMA', + 'DOM', + 'ECU', + 'EGY', + 'SLV', + 'GNQ', + 'ERI', + 'EST', + 'ETH', + 'FLK', + 'FRO', + 'FJI', + 'FIN', + 'FRA', + 'GUF', + 'PYF', + 'ATF', + 'GAB', + 'GMB', + 'GEO', + 'DEU', + 'GHA', + 'GIB', + 'GRC', + 'GRL', + 'GRD', + 'GLP', + 'GUM', + 'GTM', + 'GGY', + 'GIN', + 'GNB', + 'GUY', + 'HTI', + 'HMD', + 'VAT', + 'HND', + 'HKG', + 'HUN', + 'ISL', + 'IND', + 'IDN', + 'IRN', + 'IRQ', + 'IRL', + 'IMN', + 'ISR', + 'ITA', + 'JAM', + 'JPN', + 'JEY', + 'JOR', + 'KAZ', + 'KEN', + 'KIR', + 'PRK', + 'KOR', + 'KWT', + 'KGZ', + 'LAO', + 'LVA', + 'LBN', + 'LSO', + 'LBR', + 'LBY', + 'LIE', + 'LTU', + 'LUX', + 'MAC', + 'MKD', + 'MDG', + 'MWI', + 'MYS', + 'MDV', + 'MLI', + 'MLT', + 'MHL', + 'MTQ', + 'MRT', + 'MUS', + 'MYT', + 'MEX', + 'FSM', + 'MDA', + 'MCO', + 'MNG', + 'MNE', + 'MSR', + 'MAR', + 'MOZ', + 'MMR', + 'NAM', + 'NRU', + 'NPL', + 'NLD', + 'NCL', + 'NZL', + 'NIC', + 'NER', + 'NGA', + 'NIU', + 'NFK', + 'MNP', + 'NOR', + 'OMN', + 'PAK', + 'PLW', + 'PSE', + 'PAN', + 'PNG', + 'PRY', + 'PER', + 'PHL', + 'PCN', + 'POL', + 'PRT', + 'PRI', + 'QAT', + 'REU', + 'ROU', + 'RUS', + 'RWA', + 'BLM', + 'SHN', + 'KNA', + 'LCA', + 'MAF', + 'SPM', + 'VCT', + 'WSM', + 'SMR', + 'STP', + 'SAU', + 'SEN', + 'SRB', + 'SYC', + 'SLE', + 'SGP', + 'SXM', + 'SVK', + 'SVN', + 'SLB', + 'SOM', + 'ZAF', + 'SGS', + 'SSD', + 'ESP', + 'LKA', + 'SDN', + 'SUR', + 'SJM', + 'SWZ', + 'SWE', + 'CHE', + 'SYR', + 'TWN', + 'TJK', + 'TZA', + 'THA', + 'TLS', + 'TGO', + 'TKL', + 'TON', + 'TTO', + 'TUN', + 'TUR', + 'TKM', + 'TCA', + 'TUV', + 'UGA', + 'UKR', + 'ARE', + 'GBR', + 'USA', + 'UMI', + 'URY', + 'UZB', + 'VUT', + 'VEN', + 'VNM', + 'VGB', + 'VIR', + 'WLF', + 'ESH', + 'YEM', + 'ZMB', + 'ZWE', +]; + +export const isISO31661Alpha3 = (str: string) => { + assertString(str); + return includes(validISO31661Alpha3CountriesCodes, str.toUpperCase()); +}; diff --git a/bundler/tests/.cache/deno/e50c78d40dc985f77ba8402b211ce55d4beb7863.ts b/bundler/tests/.cache/deno/e50c78d40dc985f77ba8402b211ce55d4beb7863.ts new file mode 100644 index 00000000000..d0366f38636 --- /dev/null +++ b/bundler/tests/.cache/deno/e50c78d40dc985f77ba8402b211ce55d4beb7863.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/LoneSchemaDefinitionRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; + +/** + * Lone Schema definition + * + * A GraphQL document is only valid if it contains only one schema definition. + */ +export function LoneSchemaDefinitionRule(context) { + const oldSchema = context.getSchema(); + const alreadyDefined = oldSchema?.astNode ?? oldSchema?.getQueryType() ?? oldSchema?.getMutationType() ?? oldSchema?.getSubscriptionType(); + let schemaDefinitionsCount = 0; + return { + SchemaDefinition(node) { + if (alreadyDefined) { + context.reportError(new GraphQLError('Cannot define a new schema within a schema extension.', node)); + return; + } + + if (schemaDefinitionsCount > 0) { + context.reportError(new GraphQLError('Must provide only one schema definition.', node)); + } + + ++schemaDefinitionsCount; + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/e53c93135b6bda5c5240206f42d74d37558bfb2a.ts b/bundler/tests/.cache/deno/e53c93135b6bda5c5240206f42d74d37558bfb2a.ts new file mode 100644 index 00000000000..3f4f6ed734b --- /dev/null +++ b/bundler/tests/.cache/deno/e53c93135b6bda5c5240206f42d74d37558bfb2a.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_curryN.js + + +import _arity from './_arity.js'; +import _isPlaceholder from './_isPlaceholder.js'; + + +/** + * Internal curryN function. + * + * @private + * @category Function + * @param {Number} length The arity of the curried function. + * @param {Array} received An array of arguments received thus far. + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +export default function _curryN(length, received, fn) { + return function() { + var combined = []; + var argsIdx = 0; + var left = length; + var combinedIdx = 0; + while (combinedIdx < received.length || argsIdx < arguments.length) { + var result; + if (combinedIdx < received.length && + (!_isPlaceholder(received[combinedIdx]) || + argsIdx >= arguments.length)) { + result = received[combinedIdx]; + } else { + result = arguments[argsIdx]; + argsIdx += 1; + } + combined[combinedIdx] = result; + if (!_isPlaceholder(result)) { + left -= 1; + } + combinedIdx += 1; + } + return left <= 0 + ? fn.apply(this, combined) + : _arity(left, _curryN(length, combined, fn)); + }; +} diff --git a/bundler/tests/.cache/deno/e5523baec54c0e7c65cea0b40e8b2fe139d8366b.ts b/bundler/tests/.cache/deno/e5523baec54c0e7c65cea0b40e8b2fe139d8366b.ts new file mode 100644 index 00000000000..7c1e70e730b --- /dev/null +++ b/bundler/tests/.cache/deno/e5523baec54c0e7c65cea0b40e8b2fe139d8366b.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/case@v2.1.0/mod.ts + + +export { default as camelCase } from "./camelCase.ts"; +export { default as constantCase } from "./constantCase.ts"; +export { default as dotCase } from "./dotCase.ts"; +export { default as headerCase } from "./headerCase.ts"; +export { default as lowerCase } from "./lowerCase.ts"; +export { default as lowerFirstCase } from "./lowerFirstCase.ts"; +export { default as normalCase } from "./normalCase.ts"; +export { default as paramCase } from "./paramCase.ts"; +export { default as pascalCase } from "./pascalCase.ts"; +export { default as pathCase } from "./pathCase.ts"; +export { default as sentenceCase } from "./sentenceCase.ts"; +export { default as snakeCase } from "./snakeCase.ts"; +export { default as swapCase } from "./swapCase.ts"; +export { default as titleCase } from "./titleCase.ts"; +export { default as upperCase } from "./upperCase.ts"; +export { default as upperFirstCase } from "./upperFirstCase.ts"; diff --git a/bundler/tests/.cache/deno/e588eed3ca4a864679bd2883a537f4f380a903e6.ts b/bundler/tests/.cache/deno/e588eed3ca4a864679bd2883a537f4f380a903e6.ts new file mode 100644 index 00000000000..90e77b58a86 --- /dev/null +++ b/bundler/tests/.cache/deno/e588eed3ca4a864679bd2883a537f4f380a903e6.ts @@ -0,0 +1,241 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/translators/sql-translator.ts + + +import { snakeCase, SQLQueryBuilder } from "../../deps.ts"; +import type { FieldAlias } from "../data-types.ts"; +import type { DatabaseDialect } from "../database.ts"; +import { addFieldToSchema } from "../helpers/fields.ts"; +import type { Query, QueryDescription } from "../query-builder.ts"; +import { Translator } from "./translator.ts"; + +export class SQLTranslator extends Translator { + _dialect: DatabaseDialect; + + constructor(dialect: DatabaseDialect) { + super(); + this._dialect = dialect; + } + + translateToQuery(query: QueryDescription): Query { + let queryBuilder = new (SQLQueryBuilder as any)( + { + client: this._dialect, + useNullAsDefault: this._dialect === "sqlite3", + log: { + // NOTE(eveningkid): It shows a message whenever `createTableIfNotExists` + // is used. Knex deprecated it as part of its library but in our case, + // it actually makes sense. As this warning message should be ignored, + // we override the `log.warn` method so it doesn't show up. + warn(message: string) { + }, + }, + }, + ); + + if (query.table && query.type !== "drop" && query.type !== "create") { + queryBuilder = queryBuilder.table(query.table); + } + + if (query.select) { + query.select.forEach((field) => { + queryBuilder = queryBuilder.select(field); + }); + } + + if (query.whereIn) { + queryBuilder = queryBuilder.whereIn( + query.whereIn.field, + query.whereIn.possibleValues, + ); + } + + if (query.orderBy) { + queryBuilder = queryBuilder.orderBy( + Object.entries(query.orderBy).map(([field, orderDirection]) => ({ + column: field, + order: orderDirection, + })), + ); + } + + if (query.groupBy) { + queryBuilder = queryBuilder.groupBy(query.groupBy); + } + + if (query.limit) { + queryBuilder = queryBuilder.limit(query.limit); + } + + if (query.offset) { + queryBuilder = queryBuilder.offset(query.offset); + } + + if (query.wheres) { + query.wheres.forEach((where) => { + queryBuilder = queryBuilder.where( + where.field, + where.operator, + where.value, + ); + }); + } + + if (query.joins) { + query.joins.forEach((join) => { + queryBuilder = queryBuilder.join( + join.joinTable, + join.originField, + "=", + join.targetField, + ); + }); + } + + if (query.leftOuterJoins) { + query.leftOuterJoins.forEach((join) => { + queryBuilder = queryBuilder.leftOuterJoin( + join.joinTable, + join.originField, + join.targetField, + ); + }); + } + + if (query.leftJoins) { + query.leftJoins.forEach((join) => { + queryBuilder = queryBuilder.leftJoin( + join.joinTable, + join.originField, + join.targetField, + ); + }); + } + + switch (query.type) { + case "drop": + const dropTableHelper = query.ifExists + ? "dropTableIfExists" + : "dropTable"; + + queryBuilder = queryBuilder.schema[dropTableHelper](query.table); + break; + + case "create": + if (!query.fields) { + throw new Error( + "Fields were not provided for creating a new instance.", + ); + } + + const createTableHelper = query.ifExists + ? "createTable" + : "createTableIfNotExists"; + + queryBuilder = queryBuilder.schema[createTableHelper]( + query.table, + (table: any) => { + const fieldDefaults = query.fieldsDefaults ?? {}; + + for ( + const [field, fieldType] of Object.entries(query.fields!) + ) { + addFieldToSchema( + table, + { + name: field, + type: fieldType, + defaultValue: fieldDefaults[field], + }, + ); + } + + if (query.timestamps) { + // Adds `createdAt` and `updatedAt` fields + table.timestamps(null, true); + } + }, + ); + break; + + case "insert": + if (!query.values) { + throw new Error( + "Trying to make an insert query, but no values were provided.", + ); + } + + queryBuilder = queryBuilder.returning("*").insert(query.values); + break; + + case "update": + if (!query.values) { + throw new Error( + "Trying to make an update query, but no values were provided.", + ); + } + + queryBuilder = queryBuilder.update(query.values); + break; + + case "delete": + queryBuilder = queryBuilder.del(); + break; + + case "count": + queryBuilder = queryBuilder.count( + query.aggregatorField ? query.aggregatorField : "*", + ); + break; + + case "avg": + queryBuilder = queryBuilder.avg( + query.aggregatorField ? query.aggregatorField : "*", + ); + break; + + case "min": + queryBuilder = queryBuilder.min( + query.aggregatorField ? query.aggregatorField : "*", + ); + break; + + case "max": + queryBuilder = queryBuilder.max( + query.aggregatorField ? query.aggregatorField : "*", + ); + break; + + case "sum": + queryBuilder = queryBuilder.sum( + query.aggregatorField ? query.aggregatorField : "*", + ); + break; + } + + return queryBuilder.toString(); + } + + formatFieldNameToDatabase( + fieldName: string | FieldAlias, + ): string | FieldAlias { + if (typeof fieldName === "string") { + const dotIndex = fieldName.indexOf("."); + + // Table.fieldName + if (dotIndex !== -1) { + return fieldName.slice(0, dotIndex + 1) + + snakeCase(fieldName.slice(dotIndex + 1)); + } + + return snakeCase(fieldName); + } else { + return Object.entries(fieldName).reduce( + (prev: any, [alias, fullName]) => { + prev[alias] = this.formatFieldNameToDatabase(fullName); + return prev; + }, + {}, + ); + } + } +} diff --git a/bundler/tests/.cache/deno/e59c0cb02e0d5033a3bc649628ff97fa458e8457.ts b/bundler/tests/.cache/deno/e59c0cb02e0d5033a3bc649628ff97fa458e8457.ts new file mode 100644 index 00000000000..956b95c7afa --- /dev/null +++ b/bundler/tests/.cache/deno/e59c0cb02e0d5033a3bc649628ff97fa458e8457.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xall.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XAll(f, xf) { + this.xf = xf; + this.f = f; + this.all = true; +} +XAll.prototype['@@transducer/init'] = _xfBase.init; +XAll.prototype['@@transducer/result'] = function(result) { + if (this.all) { + result = this.xf['@@transducer/step'](result, true); + } + return this.xf['@@transducer/result'](result); +}; +XAll.prototype['@@transducer/step'] = function(result, input) { + if (!this.f(input)) { + this.all = false; + result = _reduced(this.xf['@@transducer/step'](result, false)); + } + return result; +}; + +var _xall = _curry2(function _xall(f, xf) { return new XAll(f, xf); }); +export default _xall; diff --git a/bundler/tests/.cache/deno/e5bf2b575f845e5f97a11bc711bb2df0bf2739a9.ts b/bundler/tests/.cache/deno/e5bf2b575f845e5f97a11bc711bb2df0bf2739a9.ts new file mode 100644 index 00000000000..c0365499dfe --- /dev/null +++ b/bundler/tests/.cache/deno/e5bf2b575f845e5f97a11bc711bb2df0bf2739a9.ts @@ -0,0 +1,373 @@ +// Loaded from https://deno.land/x/oak/multipart.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { BufReader, ReadLineResult } from "./buf_reader.ts"; +import { getFilename } from "./content_disposition.ts"; +import { equals, extension } from "./deps.ts"; +import { readHeaders, toParamRegExp, unquote } from "./headers.ts"; +import { httpErrors } from "./httpError.ts"; +import { getRandomFilename, skipLWSPChar, stripEol } from "./util.ts"; + +const decoder = new TextDecoder(); +const encoder = new TextEncoder(); + +const BOUNDARY_PARAM_REGEX = toParamRegExp("boundary", "i"); +const DEFAULT_BUFFER_SIZE = 1048576; // 1mb +const DEFAULT_MAX_FILE_SIZE = 10485760; // 10mb +const DEFAULT_MAX_SIZE = 0; // all files written to disc +const NAME_PARAM_REGEX = toParamRegExp("name", "i"); + +export interface FormDataBody { + /** A record of form parts where the key was the `name` of the part and the + * value was the value of the part. This record does not include any files + * that were part of the form data. + * + * *Note*: Duplicate names are not included in this record, if there are + * duplicates, the last value will be the value that is set here. If there + * is a possibility of duplicate values, use the `.stream()` method to + * iterate over the values. */ + fields: Record; + + /** An array of any files that were part of the form data. */ + files?: FormDataFile[]; +} + +/** A representation of a file that has been read from a form data body. */ +export type FormDataFile = { + /** When the file has not been written out to disc, the contents of the file + * as a `Uint8Array`. */ + content?: Uint8Array; + + /** The content type og the form data file. */ + contentType: string; + + /** When the file has been written out to disc, the full path to the file. */ + filename?: string; + + /** The `name` that was assigned to the form data file. */ + name: string; + + /** The `filename` that was provided in the form data file. */ + originalName: string; +}; + +export interface FormDataReadOptions { + /** The size of the buffer to read from the request body at a single time. + * This defaults to 1mb. */ + bufferSize?: number; + + /** The maximum file size that can be handled. This defaults to 10MB when + * not specified. This is to try to avoid DOS attacks where someone would + * continue to try to send a "file" continuously until a host limit was + * reached crashing the server or the host. */ + maxFileSize?: number; + + /** The maximum size of a file to hold in memory, and not write to disk. This + * defaults to `0`, so that all multipart form files are written to disk. + * When set to a positive integer, if the form data file is smaller, it will + * be retained in memory and available in the `.content` property of the + * `FormDataFile` object. If the file exceeds the `maxSize` it will be + * written to disk and the `filename` file will contain the full path to the + * output file. */ + maxSize?: number; + + /** When writing form data files to disk, the output path. This will default + * to a temporary path generated by `Deno.makeTempDir()`. */ + outPath?: string; + + /** When a form data file is written to disk, it will be generated with a + * random filename and have an extension based off the content type for the + * file. `prefix` can be specified though to prepend to the file name. */ + prefix?: string; +} + +interface PartsOptions { + body: BufReader; + final: Uint8Array; + maxFileSize: number; + maxSize: number; + outPath?: string; + part: Uint8Array; + prefix?: string; +} + +function append(a: Uint8Array, b: Uint8Array): Uint8Array { + const ab = new Uint8Array(a.length + b.length); + ab.set(a, 0); + ab.set(b, a.length); + return ab; +} + +function isEqual(a: Uint8Array, b: Uint8Array): boolean { + return equals(skipLWSPChar(a), b); +} + +async function readToStartOrEnd( + body: BufReader, + start: Uint8Array, + end: Uint8Array, +): Promise { + let lineResult: ReadLineResult | null; + while ((lineResult = await body.readLine())) { + if (isEqual(lineResult.bytes, start)) { + return true; + } + if (isEqual(lineResult.bytes, end)) { + return false; + } + } + throw new httpErrors.BadRequest( + "Unable to find multi-part boundary.", + ); +} + +/** Yield up individual parts by reading the body and parsing out the ford + * data values. */ +async function* parts( + { body, final, part, maxFileSize, maxSize, outPath, prefix }: PartsOptions, +): AsyncIterableIterator<[string, string | FormDataFile]> { + async function getFile(contentType: string): Promise<[string, Deno.File]> { + const ext = extension(contentType); + if (!ext) { + throw new httpErrors.BadRequest(`Invalid media type for part: ${ext}`); + } + if (!outPath) { + outPath = await Deno.makeTempDir(); + } + const filename = `${outPath}/${getRandomFilename(prefix, ext)}`; + const file = await Deno.open(filename, { write: true, createNew: true }); + return [filename, file]; + } + + while (true) { + const headers = await readHeaders(body); + const contentType = headers["content-type"]; + const contentDisposition = headers["content-disposition"]; + if (!contentDisposition) { + throw new httpErrors.BadRequest( + "Form data part missing content-disposition header", + ); + } + if (!contentDisposition.match(/^form-data;/i)) { + throw new httpErrors.BadRequest( + `Unexpected content-disposition header: "${contentDisposition}"`, + ); + } + const matches = NAME_PARAM_REGEX.exec(contentDisposition); + if (!matches) { + throw new httpErrors.BadRequest( + `Unable to determine name of form body part`, + ); + } + let [, name] = matches; + name = unquote(name); + if (contentType) { + const originalName = getFilename(contentDisposition); + let byteLength = 0; + let file: Deno.File | undefined; + let filename: string | undefined; + let buf: Uint8Array | undefined; + if (maxSize) { + buf = new Uint8Array(); + } else { + const result = await getFile(contentType); + filename = result[0]; + file = result[1]; + } + while (true) { + const readResult = await body.readLine(false); + if (!readResult) { + throw new httpErrors.BadRequest("Unexpected EOF reached"); + } + const { bytes } = readResult; + const strippedBytes = stripEol(bytes); + if (isEqual(strippedBytes, part) || isEqual(strippedBytes, final)) { + if (file) { + file.close(); + } + yield [ + name, + { + content: buf, + contentType, + name, + filename, + originalName, + } as FormDataFile, + ]; + if (isEqual(strippedBytes, final)) { + return; + } + break; + } + byteLength += bytes.byteLength; + if (byteLength > maxFileSize) { + if (file) { + file.close(); + } + throw new httpErrors.RequestEntityTooLarge( + `File size exceeds limit of ${maxFileSize} bytes.`, + ); + } + if (buf) { + if (byteLength > maxSize) { + const result = await getFile(contentType); + filename = result[0]; + file = result[1]; + await Deno.writeAll(file, buf); + buf = undefined; + } else { + buf = append(buf, bytes); + } + } + if (file) { + await Deno.writeAll(file, bytes); + } + } + } else { + const lines: string[] = []; + while (true) { + const readResult = await body.readLine(); + if (!readResult) { + throw new httpErrors.BadRequest("Unexpected EOF reached"); + } + const { bytes } = readResult; + if (isEqual(bytes, part) || isEqual(bytes, final)) { + yield [name, lines.join("\n")]; + if (isEqual(bytes, final)) { + return; + } + break; + } + lines.push(decoder.decode(bytes)); + } + } + } +} + +/** A class which provides an interface to access the fields of a + * `multipart/form-data` body. */ +export class FormDataReader { + #body: Deno.Reader; + #boundaryFinal: Uint8Array; + #boundaryPart: Uint8Array; + #reading = false; + + constructor(contentType: string, body: Deno.Reader) { + const matches = contentType.match(BOUNDARY_PARAM_REGEX); + if (!matches) { + throw new httpErrors.BadRequest( + `Content type "${contentType}" does not contain a valid boundary.`, + ); + } + let [, boundary] = matches; + boundary = unquote(boundary); + this.#boundaryPart = encoder.encode(`--${boundary}`); + this.#boundaryFinal = encoder.encode(`--${boundary}--`); + this.#body = body; + } + + /** Reads the multipart body of the response and resolves with an object which + * contains fields and files that were part of the response. + * + * *Note*: this method handles multiple files with the same `name` attribute + * in the request, but by design it does not handle multiple fields that share + * the same `name`. If you expect the request body to contain multiple form + * data fields with the same name, it is better to use the `.stream()` method + * which will iterate over each form data field individually. */ + async read(options: FormDataReadOptions = {}): Promise { + if (this.#reading) { + throw new Error("Body is already being read."); + } + this.#reading = true; + const { + outPath, + maxFileSize = DEFAULT_MAX_FILE_SIZE, + maxSize = DEFAULT_MAX_SIZE, + bufferSize = DEFAULT_BUFFER_SIZE, + } = options; + const body = new BufReader(this.#body, bufferSize); + const result: FormDataBody = { fields: {} }; + if ( + !(await readToStartOrEnd(body, this.#boundaryPart, this.#boundaryFinal)) + ) { + return result; + } + try { + for await ( + const part of parts({ + body, + part: this.#boundaryPart, + final: this.#boundaryFinal, + maxFileSize, + maxSize, + outPath, + }) + ) { + const [key, value] = part; + if (typeof value === "string") { + result.fields[key] = value; + } else { + if (!result.files) { + result.files = []; + } + result.files.push(value); + } + } + } catch (err) { + if (err instanceof Deno.errors.PermissionDenied) { + console.error(err.stack ? err.stack : `${err.name}: ${err.message}`); + } else { + throw err; + } + } + return result; + } + + /** Returns an iterator which will asynchronously yield each part of the form + * data. The yielded value is a tuple, where the first element is the name + * of the part and the second element is a `string` or a `FormDataFile` + * object. */ + async *stream( + options: FormDataReadOptions = {}, + ): AsyncIterableIterator<[string, string | FormDataFile]> { + if (this.#reading) { + throw new Error("Body is already being read."); + } + this.#reading = true; + const { + outPath, + maxFileSize = DEFAULT_MAX_FILE_SIZE, + maxSize = DEFAULT_MAX_SIZE, + bufferSize = 32000, + } = options; + const body = new BufReader(this.#body, bufferSize); + if ( + !(await readToStartOrEnd(body, this.#boundaryPart, this.#boundaryFinal)) + ) { + return; + } + try { + for await ( + const part of parts({ + body, + part: this.#boundaryPart, + final: this.#boundaryFinal, + maxFileSize, + maxSize, + outPath, + }) + ) { + yield part; + } + } catch (err) { + if (err instanceof Deno.errors.PermissionDenied) { + console.error(err.stack ? err.stack : `${err.name}: ${err.message}`); + } else { + throw err; + } + } + } +} diff --git a/bundler/tests/.cache/deno/e5fa8bbda465712e08bde0da9448fde9082f38e1.ts b/bundler/tests/.cache/deno/e5fa8bbda465712e08bde0da9448fde9082f38e1.ts new file mode 100644 index 00000000000..aa3f59ef203 --- /dev/null +++ b/bundler/tests/.cache/deno/e5fa8bbda465712e08bde0da9448fde9082f38e1.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/keyValMap.js + + +/** + * Creates a keyed JS object from an array, given a function to produce the keys + * and a function to produce the values from each item in the array. + * + * const phoneBook = [ + * { name: 'Jon', num: '555-1234' }, + * { name: 'Jenny', num: '867-5309' } + * ] + * + * // { Jon: '555-1234', Jenny: '867-5309' } + * const phonesByName = keyValMap( + * phoneBook, + * entry => entry.name, + * entry => entry.num + * ) + * + */ +export default function keyValMap(list, keyFn, valFn) { + return list.reduce((map, item) => { + map[keyFn(item)] = valFn(item); + return map; + }, Object.create(null)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/e600798754efb2758cf4433489970f7e9eecfc4b.ts b/bundler/tests/.cache/deno/e600798754efb2758cf4433489970f7e9eecfc4b.ts new file mode 100644 index 00000000000..eb08c33cbfd --- /dev/null +++ b/bundler/tests/.cache/deno/e600798754efb2758cf4433489970f7e9eecfc4b.ts @@ -0,0 +1,46 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mathMod.js + + +import _curry2 from './internal/_curry2.js'; +import _isInteger from './internal/_isInteger.js'; + + +/** + * `mathMod` behaves like the modulo operator should mathematically, unlike the + * `%` operator (and by extension, [`R.modulo`](#modulo)). So while + * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer + * arguments, and returns NaN when the modulus is zero or negative. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} m The dividend. + * @param {Number} p the modulus. + * @return {Number} The result of `b mod a`. + * @see R.modulo + * @example + * + * R.mathMod(-17, 5); //=> 3 + * R.mathMod(17, 5); //=> 2 + * R.mathMod(17, -5); //=> NaN + * R.mathMod(17, 0); //=> NaN + * R.mathMod(17.2, 5); //=> NaN + * R.mathMod(17, 5.3); //=> NaN + * + * const clock = R.mathMod(R.__, 12); + * clock(15); //=> 3 + * clock(24); //=> 0 + * + * const seventeenMod = R.mathMod(17); + * seventeenMod(3); //=> 2 + * seventeenMod(4); //=> 1 + * seventeenMod(10); //=> 7 + */ +var mathMod = _curry2(function mathMod(m, p) { + if (!_isInteger(m)) { return NaN; } + if (!_isInteger(p) || p < 1) { return NaN; } + return ((m % p) + p) % p; +}); +export default mathMod; diff --git a/bundler/tests/.cache/deno/e61522e99211280d0617220e33004a5cd7b58cff.ts b/bundler/tests/.cache/deno/e61522e99211280d0617220e33004a5cd7b58cff.ts new file mode 100644 index 00000000000..5ae1d15e6ac --- /dev/null +++ b/bundler/tests/.cache/deno/e61522e99211280d0617220e33004a5cd7b58cff.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/flatten.js + + +import _curry1 from './internal/_curry1.js'; +import _makeFlat from './internal/_makeFlat.js'; + + +/** + * Returns a new list by pulling every item out of it (and all its sub-arrays) + * and putting them in a new array, depth-first. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] + * @param {Array} list The array to consider. + * @return {Array} The flattened list. + * @see R.unnest + * @example + * + * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); + * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + */ +var flatten = _curry1(_makeFlat(true)); +export default flatten; diff --git a/bundler/tests/.cache/deno/e630bf2fbe9fc1622490ed06eaa33196ccd5b560.ts b/bundler/tests/.cache/deno/e630bf2fbe9fc1622490ed06eaa33196ccd5b560.ts new file mode 100644 index 00000000000..96c8b9675a3 --- /dev/null +++ b/bundler/tests/.cache/deno/e630bf2fbe9fc1622490ed06eaa33196ccd5b560.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.86.0/_util/assert.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/e67a9ccd77c0442381980a8e0b247e162ac57ecf.ts b/bundler/tests/.cache/deno/e67a9ccd77c0442381980a8e0b247e162ac57ecf.ts new file mode 100644 index 00000000000..581b10632db --- /dev/null +++ b/bundler/tests/.cache/deno/e67a9ccd77c0442381980a8e0b247e162ac57ecf.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/yaml.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export type { ParseOptions } from "./_yaml/parse.ts"; +export { parse, parseAll } from "./_yaml/parse.ts"; +export type { DumpOptions as StringifyOptions } from "./_yaml/stringify.ts"; +export { stringify } from "./_yaml/stringify.ts"; +export type { SchemaDefinition } from "./_yaml/schema.ts"; +export type { StyleVariant } from "./_yaml/type.ts"; +export { + CORE_SCHEMA, + DEFAULT_SCHEMA, + FAILSAFE_SCHEMA, + JSON_SCHEMA, +} from "./_yaml/schema/mod.ts"; diff --git a/bundler/tests/.cache/deno/e67ddd6a63ce844336904b9552353dc7bcc25360.ts b/bundler/tests/.cache/deno/e67ddd6a63ce844336904b9552353dc7bcc25360.ts new file mode 100644 index 00000000000..33263e1b303 --- /dev/null +++ b/bundler/tests/.cache/deno/e67ddd6a63ce844336904b9552353dc7bcc25360.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std@0.77.0/path/mod.ts + + +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +import { isWindows } from "./_constants.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; + +const path = isWindows ? _win32 : _posix; + +export const win32 = _win32; +export const posix = _posix; +export const { + basename, + delimiter, + dirname, + extname, + format, + fromFileUrl, + isAbsolute, + join, + normalize, + parse, + relative, + resolve, + sep, + toFileUrl, + toNamespacedPath, +} = path; + +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; diff --git a/bundler/tests/.cache/deno/e6cc48c158de625fb396045db3042a95a705e98b.ts b/bundler/tests/.cache/deno/e6cc48c158de625fb396045db3042a95a705e98b.ts new file mode 100644 index 00000000000..982f2c27717 --- /dev/null +++ b/bundler/tests/.cache/deno/e6cc48c158de625fb396045db3042a95a705e98b.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/modify.js + + +import _curry3 from './internal/_curry3.js'; +import modifyPath from './modifyPath.js'; + + +/** + * Creates a copy of the passed object by applying an `fn` function to the given `prop` property. + * + * The function will not be invoked, and the object will not change + * if its corresponding property does not exist in the object. + * All non-primitive properties are copied to the new object by reference. + * + * @func + * @memberOf R + * @category Object + * @sig Idx -> (v -> v) -> {k: v} -> {k: v} + * @param {String|Number} prop The property to be modified. + * @param {Function} fn The function to apply to the property. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * const person = {name: 'James', age: 20, pets: ['dog', 'cat']}; + * R.modify('age', R.add(1), person); //=> {name: 'James', age: 21, pets: ['dog', 'cat']} + * R.modify('pets', R.append('turtle'), person); //=> {name: 'James', age: 20, pets: ['dog', 'cat', 'turtle']} + */ +var modify = _curry3(function modify(prop, fn, object) { return modifyPath([prop], fn, object); }); +export default modify; diff --git a/bundler/tests/.cache/deno/e6d07026036b391db737b44a8b79d5cd4844623d.ts b/bundler/tests/.cache/deno/e6d07026036b391db737b44a8b79d5cd4844623d.ts new file mode 100644 index 00000000000..a52d80fdf55 --- /dev/null +++ b/bundler/tests/.cache/deno/e6d07026036b391db737b44a8b79d5cd4844623d.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/std/fs/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +export * from "./empty_dir.ts"; +export * from "./ensure_dir.ts"; +export * from "./ensure_file.ts"; +export * from "./ensure_link.ts"; +export * from "./ensure_symlink.ts"; +export * from "./exists.ts"; +export * from "./expand_glob.ts"; +export * from "./move.ts"; +export * from "./copy.ts"; +export * from "./walk.ts"; +export * from "./eol.ts"; diff --git a/bundler/tests/.cache/deno/e6eef9714db48a30f7a024aab133a04af95c9d4e.ts b/bundler/tests/.cache/deno/e6eef9714db48a30f7a024aab133a04af95c9d4e.ts new file mode 100644 index 00000000000..a2d6966266c --- /dev/null +++ b/bundler/tests/.cache/deno/e6eef9714db48a30f7a024aab133a04af95c9d4e.ts @@ -0,0 +1,57 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reduceRight.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * Similar to [`reduce`](#reduce), except moves through the input list from the + * right to the left. + * + * The iterator function receives two values: *(value, acc)*, while the arguments' + * order of `reduce`'s iterator function is *(acc, value)*. + * + * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduceRight` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> b) -> b -> [a] -> b + * @param {Function} fn The iterator function. Receives two values, the current element from the array + * and the accumulator. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.addIndex + * @example + * + * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 + * // - -2 + * // / \ / \ + * // 1 - 1 3 + * // / \ / \ + * // 2 - ==> 2 -1 + * // / \ / \ + * // 3 - 3 4 + * // / \ / \ + * // 4 0 4 0 + * + * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a))) + */ +var reduceRight = _curry3(function reduceRight(fn, acc, list) { + var idx = list.length - 1; + while (idx >= 0) { + acc = fn(list[idx], acc); + idx -= 1; + } + return acc; +}); +export default reduceRight; diff --git a/bundler/tests/.cache/deno/e7515f9cebf42e8ed896aea96ab9ac152e4390e2.ts b/bundler/tests/.cache/deno/e7515f9cebf42e8ed896aea96ab9ac152e4390e2.ts new file mode 100644 index 00000000000..904faaa59e9 --- /dev/null +++ b/bundler/tests/.cache/deno/e7515f9cebf42e8ed896aea96ab9ac152e4390e2.ts @@ -0,0 +1,49 @@ +// Loaded from https://deno.land/x/bytes_formater/format.ts + + +import { green } from "./deps.ts"; + +export function format(data: ArrayBufferView) { + const bytes = new Uint8Array(data.buffer); + let out = " +-------------------------------------------------+\n"; + out += ` |${ + green(" 0 1 2 3 4 5 6 7 8 9 a b c d e f ") + }|\n`; + out += + "+--------+-------------------------------------------------+----------------+\n"; + + const lineCount = Math.ceil(bytes.length / 16); + + for (let line = 0; line < lineCount; line++) { + const start = line * 16; + const addr = start.toString(16).padStart(8, "0"); + const lineBytes = bytes.slice(start, start + 16); + + out += `|${green(addr)}| `; + + lineBytes.forEach( + (byte) => (out += byte.toString(16).padStart(2, "0") + " "), + ); + + if (lineBytes.length < 16) { + out += " ".repeat(16 - lineBytes.length); + } + + out += "|"; + + lineBytes.forEach(function (byte) { + return (out += byte > 31 && byte < 127 + ? green(String.fromCharCode(byte)) + : "."); + }); + + if (lineBytes.length < 16) { + out += " ".repeat(16 - lineBytes.length); + } + + out += "|\n"; + } + out += + "+--------+-------------------------------------------------+----------------+"; + return out; +} diff --git a/bundler/tests/.cache/deno/e7ba54d20badad2eaa355b56939a37ff681c2f27.ts b/bundler/tests/.cache/deno/e7ba54d20badad2eaa355b56939a37ff681c2f27.ts new file mode 100644 index 00000000000..40b15227c26 --- /dev/null +++ b/bundler/tests/.cache/deno/e7ba54d20badad2eaa355b56939a37ff681c2f27.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/isCollection.js + + +import { SYMBOL_ITERATOR } from '../polyfills/symbols.js'; +/** + * Returns true if the provided object is an Object (i.e. not a string literal) + * and is either Iterable or Array-like. + * + * This may be used in place of [Array.isArray()][isArray] to determine if an + * object should be iterated-over. It always excludes string literals and + * includes Arrays (regardless of if it is Iterable). It also includes other + * Array-like objects such as NodeList, TypedArray, and Buffer. + * + * @example + * + * isCollection([ 1, 2, 3 ]) // true + * isCollection('ABC') // false + * isCollection({ length: 1, 0: 'Alpha' }) // true + * isCollection({ key: 'value' }) // false + * isCollection(new Map()) // true + * + * @param obj + * An Object value which might implement the Iterable or Array-like protocols. + * @return {boolean} true if Iterable or Array-like Object. + */ + +export default function isCollection(obj) { + if (obj == null || typeof obj !== 'object') { + return false; + } // Is Array like? + + + const length = obj.length; + + if (typeof length === 'number' && length >= 0 && length % 1 === 0) { + return true; + } // Is Iterable? + + + return typeof obj[SYMBOL_ITERATOR] === 'function'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/e7baf0178286c6118449c632aea9e35a66c5a78a.ts b/bundler/tests/.cache/deno/e7baf0178286c6118449c632aea9e35a66c5a78a.ts new file mode 100644 index 00000000000..5f1b16d9bad --- /dev/null +++ b/bundler/tests/.cache/deno/e7baf0178286c6118449c632aea9e35a66c5a78a.ts @@ -0,0 +1,117 @@ +// Loaded from https://deno.land/std/uuid/v1.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { bytesToUuid } from "./_common.ts"; + +const UUID_RE = + /^[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +/** + * Validates the UUID v1. + * @param id UUID value. + */ +export function validate(id: string): boolean { + return UUID_RE.test(id); +} + +let _nodeId: number[]; +let _clockseq: number; + +let _lastMSecs = 0; +let _lastNSecs = 0; + +/** The options used for generating a v1 UUID. */ +export interface V1Options { + node?: number[]; + clockseq?: number; + msecs?: number; + nsecs?: number; + random?: number[]; + rng?: () => number[]; +} + +/** + * Generates a RFC4122 v1 UUID (time-based). + * @param options Can use RFC time sequence values as overwrites. + * @param buf Can allow the UUID to be written in byte-form starting at the offset. + * @param offset Index to start writing on the UUID bytes in buffer. + */ +export function generate( + options?: V1Options | null, + buf?: number[], + offset?: number, +): string | number[] { + let i = (buf && offset) || 0; + const b = buf ?? []; + + options ??= {}; + let { node = _nodeId, clockseq = _clockseq } = options; + + if (node === undefined || clockseq === undefined) { + // deno-lint-ignore no-explicit-any + const seedBytes: any = options.random ?? + options.rng ?? + crypto.getRandomValues(new Uint8Array(16)); + + if (node === undefined) { + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], + seedBytes[2], + seedBytes[3], + seedBytes[4], + seedBytes[5], + ]; + } + + if (clockseq === undefined) { + clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 0x3fff; + } + } + + let { msecs = new Date().getTime(), nsecs = _lastNSecs + 1 } = options; + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; + + if (dt < 0 && options.clockseq === undefined) { + clockseq = (clockseq + 1) & 0x3fff; + } + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + if (nsecs > 10000) { + throw new Error("Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + msecs += 12219292800000; + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = (tl >>> 24) & 0xff; + b[i++] = (tl >>> 16) & 0xff; + b[i++] = (tl >>> 8) & 0xff; + b[i++] = tl & 0xff; + + const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff; + b[i++] = (tmh >>> 8) & 0xff; + b[i++] = tmh & 0xff; + + b[i++] = ((tmh >>> 24) & 0xf) | 0x10; + b[i++] = (tmh >>> 16) & 0xff; + + b[i++] = (clockseq >>> 8) | 0x80; + + b[i++] = clockseq & 0xff; + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ?? bytesToUuid(b); +} diff --git a/bundler/tests/.cache/deno/e7ca6e09cde14717854459f3a9112f88912d9fb1.ts b/bundler/tests/.cache/deno/e7ca6e09cde14717854459f3a9112f88912d9fb1.ts new file mode 100644 index 00000000000..6ca85c759ab --- /dev/null +++ b/bundler/tests/.cache/deno/e7ca6e09cde14717854459f3a9112f88912d9fb1.ts @@ -0,0 +1,209 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/context.ts + + +import type { + Response, + ServerRequest, +} from "./vendor/https/deno.land/std/http/server.ts"; +import type { + Cookie, + Cookies, +} from "./vendor/https/deno.land/std/http/cookie.ts"; +import type { Application } from "./app.ts"; +import type { ContextOptions } from "./types.ts"; + +import { Status } from "./vendor/https/deno.land/std/http/http_status.ts"; +import { join } from "./vendor/https/deno.land/std/path/mod.ts"; +import { + getCookies, + setCookie, +} from "./vendor/https/deno.land/std/http/cookie.ts"; +import { MultipartReader } from "./vendor/https/deno.land/std/mime/multipart.ts"; +import { decode, encode } from "./vendor/https/deno.land/std/encoding/utf8.ts"; +import { Header, MIME } from "./constants.ts"; +import { contentType, NotFoundHandler } from "./util.ts"; + +const { cwd, readFile, readAll } = Deno; + +export class Context { + app!: Application; + request!: ServerRequest; + url!: URL; + + response: Response & { headers: Headers } = { headers: new Headers() }; + params: Record = {}; + customContext: any; + + #store?: Map; + + #body: Promise | undefined; + + get cookies(): Cookies { + return getCookies(this.request); + } + + get path(): string { + return this.url.pathname; + } + + get method(): string { + return this.request.method; + } + + get queryParams(): Record { + const params: Record = {}; + for (const [k, v] of this.url.searchParams) { + params[k] = v; + } + return params; + } + + get body(): Promise { + return this.#body ?? (this.#body = this.#readBody()); + } + + get(key: string | symbol): unknown { + return this.#store?.get(key); + } + + set(key: string | symbol, val: unknown): void { + if (this.#store === undefined) { + this.#store = new Map(); + } + + this.#store.set(key, val); + } + + constructor(opts: ContextOptions); + constructor(c: Context); + constructor(optionsOrContext: ContextOptions | Context) { + if (optionsOrContext instanceof Context) { + Object.assign(this, optionsOrContext); + this.customContext = this; + return; + } + + const opts = optionsOrContext; + this.app = opts.app; + this.request = opts.r; + + this.url = new URL(this.request.url, `http://0.0.0.0`); + } + + #writeContentType = (v: string): void => { + if (!this.response.headers.has(Header.ContentType)) { + this.response.headers.set(Header.ContentType, v); + } + }; + + #readBody = async (): Promise => { + const contentType = this.request.headers.get(Header.ContentType); + walk: { + let data: Record = {}; + if (contentType) { + if (contentType.includes(MIME.ApplicationJSON)) { + data = JSON.parse(decode(await readAll(this.request.body))); + } else if (contentType.includes(MIME.ApplicationForm)) { + for ( + const [k, v] of new URLSearchParams( + decode(await readAll(this.request.body)), + ) + ) { + data[k] = v; + } + } else if (contentType.includes(MIME.MultipartForm)) { + const match = contentType.match(/boundary=([^\s]+)/); + const boundary = match ? match[1] : undefined; + if (boundary) { + const mr = new MultipartReader(this.request.body, boundary); + const form = await mr.readForm(); + for (const [k, v] of form.entries()) { + data[k] = v; + } + } + } else { + break walk; + } + } else { + break walk; + } + + return data; + } + + return decode(await readAll(this.request.body)); + }; + + string(v: string, code: Status = Status.OK): void { + this.#writeContentType(MIME.TextPlainCharsetUTF8); + this.response.status = code; + this.response.body = encode(v); + } + + json(v: Record | string, code: Status = Status.OK): void { + this.#writeContentType(MIME.ApplicationJSONCharsetUTF8); + this.response.status = code; + this.response.body = encode(typeof v === "object" ? JSON.stringify(v) : v); + } + + /** Sends an HTTP response with status code. */ + html(v: string, code: Status = Status.OK): void { + this.#writeContentType(MIME.TextHTMLCharsetUTF8); + this.response.status = code; + this.response.body = encode(v); + } + + /** Sends an HTTP blob response with status code. */ + htmlBlob(b: Uint8Array | Deno.Reader, code: Status = Status.OK): void { + this.blob(b, MIME.TextHTMLCharsetUTF8, code); + } + + /** + * Renders a template with data and sends a text/html response with status code. + * renderer must be registered first. + */ + async render( + name: string, + data: T = {} as T, + code: Status = Status.OK, + ): Promise { + if (!this.app.renderer) { + throw new Error(); + } + const r = await this.app.renderer.render(name, data); + this.htmlBlob(r, code); + } + + /** Sends a blob response with content type and status code. */ + blob( + b: Uint8Array | Deno.Reader, + contentType?: string, + code: Status = Status.OK, + ): void { + if (contentType) { + this.#writeContentType(contentType); + } + this.response.status = code; + this.response.body = b; + } + + async file(filepath: string): Promise { + filepath = join(cwd(), filepath); + try { + this.blob(await readFile(filepath), contentType(filepath)); + } catch { + NotFoundHandler(); + } + } + + /** append a `Set-Cookie` header to the response */ + setCookie(c: Cookie): void { + setCookie(this.response, c); + } + + /** Redirects a response to a specific URL. the `code` defaults to `302` if omitted */ + redirect(url: string, code = Status.Found): void { + this.response.headers.set(Header.Location, url); + this.response.status = code; + } +} diff --git a/bundler/tests/.cache/deno/e7d2993a1ac0bc76e0740d8f42a7065e807b5419.ts b/bundler/tests/.cache/deno/e7d2993a1ac0bc76e0740d8f42a7065e807b5419.ts new file mode 100644 index 00000000000..68934ca76b1 --- /dev/null +++ b/bundler/tests/.cache/deno/e7d2993a1ac0bc76e0740d8f42a7065e807b5419.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/std@0.77.0/fs/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export * from "./empty_dir.ts"; +export * from "./ensure_dir.ts"; +export * from "./ensure_file.ts"; +export * from "./ensure_link.ts"; +export * from "./ensure_symlink.ts"; +export * from "./exists.ts"; +export * from "./expand_glob.ts"; +export * from "./move.ts"; +export * from "./copy.ts"; +export * from "./walk.ts"; +export * from "./eol.ts"; diff --git a/bundler/tests/.cache/deno/e7df95de00127c2edf9189aa2588824ae8365d5d.ts b/bundler/tests/.cache/deno/e7df95de00127c2edf9189aa2588824ae8365d5d.ts new file mode 100644 index 00000000000..84f95feb891 --- /dev/null +++ b/bundler/tests/.cache/deno/e7df95de00127c2edf9189aa2588824ae8365d5d.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isHalfWidth.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +export const halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; + +export const isHalfWidth = (str: string) => { + assertString(str); + return halfWidth.test(str); +}; diff --git a/bundler/tests/.cache/deno/e7e781048374a1526e9c9dc782aa263d4fb81c22.ts b/bundler/tests/.cache/deno/e7e781048374a1526e9c9dc782aa263d4fb81c22.ts new file mode 100644 index 00000000000..d84afb7e28c --- /dev/null +++ b/bundler/tests/.cache/deno/e7e781048374a1526e9c9dc782aa263d4fb81c22.ts @@ -0,0 +1,525 @@ +// Loaded from https://deno.land/std@0.83.0/fmt/colors.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors + * on npm. + * + * ``` + * import { bgBlue, red, bold } from "https://deno.land/std/fmt/colors.ts"; + * console.log(bgBlue(red(bold("Hello world!")))); + * ``` + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * This module is browser compatible. */ + +const noColor = globalThis.Deno?.noColor ?? true; + +interface Code { + open: string; + close: string; + regexp: RegExp; +} + +/** RGB 8-bits per channel. Each in range `0->255` or `0x00->0xff` */ +interface Rgb { + r: number; + g: number; + b: number; +} + +let enabled = !noColor; + +/** + * Set changing text color to enabled or disabled + * @param value + */ +export function setColorEnabled(value: boolean): void { + if (noColor) { + return; + } + + enabled = value; +} + +/** Get whether text color change is enabled or disabled. */ +export function getColorEnabled(): boolean { + return enabled; +} + +/** + * Builds color code + * @param open + * @param close + */ +function code(open: number[], close: number): Code { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g"), + }; +} + +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ +function run(str: string, code: Code): string { + return enabled + ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` + : str; +} + +/** + * Reset the text modified + * @param str text to reset + */ +export function reset(str: string): string { + return run(str, code([0], 0)); +} + +/** + * Make the text bold. + * @param str text to make bold + */ +export function bold(str: string): string { + return run(str, code([1], 22)); +} + +/** + * The text emits only a small amount of light. + * @param str text to dim + */ +export function dim(str: string): string { + return run(str, code([2], 22)); +} + +/** + * Make the text italic. + * @param str text to make italic + */ +export function italic(str: string): string { + return run(str, code([3], 23)); +} + +/** + * Make the text underline. + * @param str text to underline + */ +export function underline(str: string): string { + return run(str, code([4], 24)); +} + +/** + * Invert background color and text color. + * @param str text to invert its color + */ +export function inverse(str: string): string { + return run(str, code([7], 27)); +} + +/** + * Make the text hidden. + * @param str text to hide + */ +export function hidden(str: string): string { + return run(str, code([8], 28)); +} + +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ +export function strikethrough(str: string): string { + return run(str, code([9], 29)); +} + +/** + * Set text color to black. + * @param str text to make black + */ +export function black(str: string): string { + return run(str, code([30], 39)); +} + +/** + * Set text color to red. + * @param str text to make red + */ +export function red(str: string): string { + return run(str, code([31], 39)); +} + +/** + * Set text color to green. + * @param str text to make green + */ +export function green(str: string): string { + return run(str, code([32], 39)); +} + +/** + * Set text color to yellow. + * @param str text to make yellow + */ +export function yellow(str: string): string { + return run(str, code([33], 39)); +} + +/** + * Set text color to blue. + * @param str text to make blue + */ +export function blue(str: string): string { + return run(str, code([34], 39)); +} + +/** + * Set text color to magenta. + * @param str text to make magenta + */ +export function magenta(str: string): string { + return run(str, code([35], 39)); +} + +/** + * Set text color to cyan. + * @param str text to make cyan + */ +export function cyan(str: string): string { + return run(str, code([36], 39)); +} + +/** + * Set text color to white. + * @param str text to make white + */ +export function white(str: string): string { + return run(str, code([37], 39)); +} + +/** + * Set text color to gray. + * @param str text to make gray + */ +export function gray(str: string): string { + return brightBlack(str); +} + +/** + * Set text color to bright black. + * @param str text to make bright-black + */ +export function brightBlack(str: string): string { + return run(str, code([90], 39)); +} + +/** + * Set text color to bright red. + * @param str text to make bright-red + */ +export function brightRed(str: string): string { + return run(str, code([91], 39)); +} + +/** + * Set text color to bright green. + * @param str text to make bright-green + */ +export function brightGreen(str: string): string { + return run(str, code([92], 39)); +} + +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ +export function brightYellow(str: string): string { + return run(str, code([93], 39)); +} + +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ +export function brightBlue(str: string): string { + return run(str, code([94], 39)); +} + +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ +export function brightMagenta(str: string): string { + return run(str, code([95], 39)); +} + +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ +export function brightCyan(str: string): string { + return run(str, code([96], 39)); +} + +/** + * Set text color to bright white. + * @param str text to make bright-white + */ +export function brightWhite(str: string): string { + return run(str, code([97], 39)); +} + +/** + * Set background color to black. + * @param str text to make its background black + */ +export function bgBlack(str: string): string { + return run(str, code([40], 49)); +} + +/** + * Set background color to red. + * @param str text to make its background red + */ +export function bgRed(str: string): string { + return run(str, code([41], 49)); +} + +/** + * Set background color to green. + * @param str text to make its background green + */ +export function bgGreen(str: string): string { + return run(str, code([42], 49)); +} + +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ +export function bgYellow(str: string): string { + return run(str, code([43], 49)); +} + +/** + * Set background color to blue. + * @param str text to make its background blue + */ +export function bgBlue(str: string): string { + return run(str, code([44], 49)); +} + +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ +export function bgMagenta(str: string): string { + return run(str, code([45], 49)); +} + +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ +export function bgCyan(str: string): string { + return run(str, code([46], 49)); +} + +/** + * Set background color to white. + * @param str text to make its background white + */ +export function bgWhite(str: string): string { + return run(str, code([47], 49)); +} + +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ +export function bgBrightBlack(str: string): string { + return run(str, code([100], 49)); +} + +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ +export function bgBrightRed(str: string): string { + return run(str, code([101], 49)); +} + +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ +export function bgBrightGreen(str: string): string { + return run(str, code([102], 49)); +} + +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ +export function bgBrightYellow(str: string): string { + return run(str, code([103], 49)); +} + +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ +export function bgBrightBlue(str: string): string { + return run(str, code([104], 49)); +} + +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ +export function bgBrightMagenta(str: string): string { + return run(str, code([105], 49)); +} + +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ +export function bgBrightCyan(str: string): string { + return run(str, code([106], 49)); +} + +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ +export function bgBrightWhite(str: string): string { + return run(str, code([107], 49)); +} + +/* Special Color Sequences */ + +/** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ +function clampAndTruncate(n: number, max = 255, min = 0): number { + return Math.trunc(Math.max(Math.min(n, max), min)); +} + +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ +export function rgb8(str: string, color: number): string { + return run(str, code([38, 5, clampAndTruncate(color)], 39)); +} + +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ +export function bgRgb8(str: string, color: number): string { + return run(str, code([48, 5, clampAndTruncate(color)], 49)); +} + +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * rgba24("foo", 0xff00ff); + * rgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function rgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 39, + ), + ); + } + return run( + str, + code( + [ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 39, + ), + ); +} + +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * bgRgba24("foo", 0xff00ff); + * bgRgba24("foo", {r: 255, g: 0, b: 255}); + * @param str text color to apply 24bit rgb to + * @param color code + */ +export function bgRgb24(str: string, color: number | Rgb): string { + if (typeof color === "number") { + return run( + str, + code( + [48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], + 49, + ), + ); + } + return run( + str, + code( + [ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b), + ], + 49, + ), + ); +} + +// https://github.com/chalk/ansi-regex/blob/2b56fb0c7a07108e5b54241e8faec160d393aedb/index.js +const ANSI_PATTERN = new RegExp( + [ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + ].join("|"), + "g", +); + +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ +export function stripColor(string: string): string { + return string.replace(ANSI_PATTERN, ""); +} diff --git a/bundler/tests/.cache/deno/e8144b3b08999291a196bd3e205d7e6905d412db.ts b/bundler/tests/.cache/deno/e8144b3b08999291a196bd3e205d7e6905d412db.ts new file mode 100644 index 00000000000..a75e47663ec --- /dev/null +++ b/bundler/tests/.cache/deno/e8144b3b08999291a196bd3e205d7e6905d412db.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/ap.js + + +import _concat from './internal/_concat.js'; +import _curry2 from './internal/_curry2.js'; +import _reduce from './internal/_reduce.js'; +import map from './map.js'; + + +/** + * ap applies a list of functions to a list of values. + * + * Dispatches to the `ap` method of the second argument, if present. Also + * treats curried functions as applicatives. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig [a -> b] -> [a] -> [b] + * @sig Apply f => f (a -> b) -> f a -> f b + * @sig (r -> a -> b) -> (r -> a) -> (r -> b) + * @param {*} applyF + * @param {*} applyX + * @return {*} + * @example + * + * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6] + * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"] + * + * // R.ap can also be used as S combinator + * // when only two functions are passed + * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA' + * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)] + */ +var ap = _curry2(function ap(applyF, applyX) { + return ( + typeof applyX['fantasy-land/ap'] === 'function' + ? applyX['fantasy-land/ap'](applyF) + : typeof applyF.ap === 'function' + ? applyF.ap(applyX) + : typeof applyF === 'function' + ? function(x) { return applyF(x)(applyX(x)); } + : _reduce(function(acc, f) { return _concat(acc, map(f, applyX)); }, [], applyF) + ); +}); +export default ap; diff --git a/bundler/tests/.cache/deno/e8475c7bbef4930e4b56114c49fe84e5fb942b24.ts b/bundler/tests/.cache/deno/e8475c7bbef4930e4b56114c49fe84e5fb942b24.ts new file mode 100644 index 00000000000..c4e6cd3c4d5 --- /dev/null +++ b/bundler/tests/.cache/deno/e8475c7bbef4930e4b56114c49fe84e5fb942b24.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case@v2.1.0/vendor/nonWordRegexp.ts + + +const nonWordRegexp: RegExp = + /[^A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]+/g; + +export default nonWordRegexp; diff --git a/bundler/tests/.cache/deno/e84a80c61546d201faba63612e45400af5789596.ts b/bundler/tests/.cache/deno/e84a80c61546d201faba63612e45400af5789596.ts new file mode 100644 index 00000000000..2bcc9a061fb --- /dev/null +++ b/bundler/tests/.cache/deno/e84a80c61546d201faba63612e45400af5789596.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/traverse.js + + +import _curry3 from './internal/_curry3.js'; +import map from './map.js'; +import sequence from './sequence.js'; + + +/** + * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning + * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable), + * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative + * into an Applicative of Traversable. + * + * Dispatches to the `traverse` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b) + * @param {Function} of + * @param {Function} f + * @param {*} traversable + * @return {*} + * @see R.sequence + * @example + * + * // Returns `Maybe.Nothing` if the given divisor is `0` + * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d) + * + * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2]) + * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing + */ +var traverse = _curry3(function traverse(of, f, traversable) { + return ( + typeof traversable['fantasy-land/traverse'] === 'function' + ? traversable['fantasy-land/traverse'](f, of) + : typeof traversable.traverse === 'function' + ? traversable.traverse(f, of) + : sequence(of, map(f, traversable)) + ); +}); +export default traverse; diff --git a/bundler/tests/.cache/deno/e8b5867dc1dbb41f4e0d2cb9e6052378956bedcf.ts b/bundler/tests/.cache/deno/e8b5867dc1dbb41f4e0d2cb9e6052378956bedcf.ts new file mode 100644 index 00000000000..117d4317dc5 --- /dev/null +++ b/bundler/tests/.cache/deno/e8b5867dc1dbb41f4e0d2cb9e6052378956bedcf.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/type.js + + +import _curry1 from './internal/_curry1.js'; + + +/** + * Gives a single-word string description of the (native) type of a value, + * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not + * attempt to distinguish user Object types any further, reporting them all as + * 'Object'. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Type + * @sig (* -> {*}) -> String + * @param {*} val The value to test + * @return {String} + * @example + * + * R.type({}); //=> "Object" + * R.type(1); //=> "Number" + * R.type(false); //=> "Boolean" + * R.type('s'); //=> "String" + * R.type(null); //=> "Null" + * R.type([]); //=> "Array" + * R.type(/[A-z]/); //=> "RegExp" + * R.type(() => {}); //=> "Function" + * R.type(undefined); //=> "Undefined" + */ +var type = _curry1(function type(val) { + return val === null + ? 'Null' + : val === undefined + ? 'Undefined' + : Object.prototype.toString.call(val).slice(8, -1); +}); +export default type; diff --git a/bundler/tests/.cache/deno/e8d58fc58316e43fd2e972bad3b81ff041bb3f36.ts b/bundler/tests/.cache/deno/e8d58fc58316e43fd2e972bad3b81ff041bb3f36.ts new file mode 100644 index 00000000000..473aff64a1f --- /dev/null +++ b/bundler/tests/.cache/deno/e8d58fc58316e43fd2e972bad3b81ff041bb3f36.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/std@0.67.0/path/_interface.ts + + +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/e8f52e784781a1fdc50f65e2a0650bfc86914b0b.ts b/bundler/tests/.cache/deno/e8f52e784781a1fdc50f65e2a0650bfc86914b0b.ts new file mode 100644 index 00000000000..82f4b5a9f0a --- /dev/null +++ b/bundler/tests/.cache/deno/e8f52e784781a1fdc50f65e2a0650bfc86914b0b.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case@v2.1.0/dotCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function dotCase(value: string, locale?: string): string { + return normalCase(value, locale, "."); +} diff --git a/bundler/tests/.cache/deno/e912299d2a5fe3e85b18a8068bbcc876ced17c9c.ts b/bundler/tests/.cache/deno/e912299d2a5fe3e85b18a8068bbcc876ced17c9c.ts new file mode 100644 index 00000000000..f0d030e1a8d --- /dev/null +++ b/bundler/tests/.cache/deno/e912299d2a5fe3e85b18a8068bbcc876ced17c9c.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/set.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import type { Any } from "../utils.ts"; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data: Any): boolean { + if (data === null) return true; + + for (const key in data) { + if (_hasOwnProperty.call(data, key)) { + if (data[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data: string): Any { + return data !== null ? data : {}; +} + +export const set = new Type("tag:yaml.org,2002:set", { + construct: constructYamlSet, + kind: "mapping", + resolve: resolveYamlSet, +}); diff --git a/bundler/tests/.cache/deno/e93264d24375855aa43285f47e65738148517f85.ts b/bundler/tests/.cache/deno/e93264d24375855aa43285f47e65738148517f85.ts new file mode 100644 index 00000000000..3ac72939802 --- /dev/null +++ b/bundler/tests/.cache/deno/e93264d24375855aa43285f47e65738148517f85.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/std@0.74.0/async/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export * from "./deferred.ts"; +export * from "./delay.ts"; +export * from "./mux_async_iterator.ts"; +export * from "./pool.ts"; diff --git a/bundler/tests/.cache/deno/e9c32e5ce2a4e9d581d49d62465001439f02a00e.ts b/bundler/tests/.cache/deno/e9c32e5ce2a4e9d581d49d62465001439f02a00e.ts new file mode 100644 index 00000000000..b7aec059435 --- /dev/null +++ b/bundler/tests/.cache/deno/e9c32e5ce2a4e9d581d49d62465001439f02a00e.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/std@0.77.0/io/ioutil.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import type { BufReader } from "./bufio.ts"; +type Reader = Deno.Reader; +type Writer = Deno.Writer; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUFFER_SIZE = 32 * 1024; + +/** copy N size at the most. + * If read size is lesser than N, then returns nread + * */ +export async function copyN( + r: Reader, + dest: Writer, + size: number, +): Promise { + let bytesRead = 0; + let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); + while (bytesRead < size) { + if (size - bytesRead < DEFAULT_BUFFER_SIZE) { + buf = new Uint8Array(size - bytesRead); + } + const result = await r.read(buf); + const nread = result ?? 0; + bytesRead += nread; + if (nread > 0) { + let n = 0; + while (n < nread) { + n += await dest.write(buf.slice(n, nread)); + } + assert(n === nread, "could not write"); + } + if (result === null) { + break; + } + } + return bytesRead; +} + +/** Read big endian 16bit short from BufReader */ +export async function readShort(buf: BufReader): Promise { + const high = await buf.readByte(); + if (high === null) return null; + const low = await buf.readByte(); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 8) | low; +} + +/** Read big endian 32bit integer from BufReader */ +export async function readInt(buf: BufReader): Promise { + const high = await readShort(buf); + if (high === null) return null; + const low = await readShort(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + return (high << 16) | low; +} + +const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER); + +/** Read big endian 64bit long from BufReader */ +export async function readLong(buf: BufReader): Promise { + const high = await readInt(buf); + if (high === null) return null; + const low = await readInt(buf); + if (low === null) throw new Deno.errors.UnexpectedEof(); + const big = (BigInt(high) << 32n) | BigInt(low); + // We probably should provide a similar API that returns BigInt values. + if (big > MAX_SAFE_INTEGER) { + throw new RangeError( + "Long value too big to be represented as a JavaScript number.", + ); + } + return Number(big); +} + +/** Slice number into 64bit big endian byte array */ +export function sliceLongToBytes(d: number, dest = new Array(8)): number[] { + let big = BigInt(d); + for (let i = 0; i < 8; i++) { + dest[7 - i] = Number(big & 0xffn); + big >>= 8n; + } + return dest; +} diff --git a/bundler/tests/.cache/deno/e9ca7a432c1f3d078a8e8413e1e8ba93e217ffda.ts b/bundler/tests/.cache/deno/e9ca7a432c1f3d078a8e8413e1e8ba93e217ffda.ts new file mode 100644 index 00000000000..ba2811abc5d --- /dev/null +++ b/bundler/tests/.cache/deno/e9ca7a432c1f3d078a8e8413e1e8ba93e217ffda.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/x/router/mod.ts + + +export * from "https://deno.land/x/router@v2.0.0/mod.ts"; diff --git a/bundler/tests/.cache/deno/e9d65fc0c0411e5bdba1dc5c9cea11108d3b7ce4.ts b/bundler/tests/.cache/deno/e9d65fc0c0411e5bdba1dc5c9cea11108d3b7ce4.ts new file mode 100644 index 00000000000..c434207fffa --- /dev/null +++ b/bundler/tests/.cache/deno/e9d65fc0c0411e5bdba1dc5c9cea11108d3b7ce4.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.84.0/_util/has_own_property.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +/** + * Determines whether an object has a property with the specified name. + * Avoid calling prototype builtin `hasOwnProperty` for two reasons: + * + * 1. `hasOwnProperty` is defined on the object as something else: + * + * const options = { + * ending: 'utf8', + * hasOwnProperty: 'foo' + * }; + * options.hasOwnProperty('ending') // throws a TypeError + * + * 2. The object doesn't inherit from `Object.prototype`: + * + * const options = Object.create(null); + * options.ending = 'utf8'; + * options.hasOwnProperty('ending'); // throws a TypeError + * + * @param obj A Object. + * @param v A property name. + * @see https://eslint.org/docs/rules/no-prototype-builtins + */ +export function hasOwnProperty(obj: T, v: PropertyKey): boolean { + if (obj == null) { + return false; + } + return Object.prototype.hasOwnProperty.call(obj, v); +} diff --git a/bundler/tests/.cache/deno/e9f0183616f01090c1da3ab6e723d7e54164de6d.ts b/bundler/tests/.cache/deno/e9f0183616f01090c1da3ab6e723d7e54164de6d.ts new file mode 100644 index 00000000000..6947243b72d --- /dev/null +++ b/bundler/tests/.cache/deno/e9f0183616f01090c1da3ab6e723d7e54164de6d.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/std/signal/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { MuxAsyncIterator } from "../async/mux_async_iterator.ts"; + +export type Disposable = { dispose: () => void }; + +/** + * Generates an AsyncIterable which can be awaited on for one or more signals. + * `dispose()` can be called when you are finished waiting on the events. + * + * Example: + * + * const sig = signal(Deno.Signal.SIGUSR1, Deno.Signal.SIGINT); + * setTimeout(() => {}, 5000); // Prevents exiting immediately + * + * for await (const _ of sig) { + * console.log("interrupt or usr1 signal received"); + * } + * + * // At some other point in your code when finished listening: + * sig.dispose(); + * + * @param signos - one or more `Deno.Signal`s to await on + */ +export function signal( + ...signos: [number, ...number[]] +): AsyncIterable & Disposable { + const mux = new MuxAsyncIterator(); + + if (signos.length < 1) { + throw new Error( + "No signals are given. You need to specify at least one signal to create a signal stream.", + ); + } + + const streams = signos.map(Deno.signal); + + streams.forEach((stream) => { + mux.add(stream); + }); + + // Create dispose method for the muxer of signal streams. + const dispose = (): void => { + streams.forEach((stream) => { + stream.dispose(); + }); + }; + + return Object.assign(mux, { dispose }); +} + +/** + * Registers a callback function to be called on triggering of a signal event. + * + * const handle = onSignal(Deno.Signal.SIGINT, () => { + * console.log('Received SIGINT'); + * handle.dispose(); // de-register from receiving further events + * }); + * + * @param signo One of Deno.Signal (e.g. Deno.Signal.SIGINT) + * @param callback Callback function triggered upon signal event + */ +export function onSignal(signo: number, callback: () => void): Disposable { + const sig = signal(signo); + + // allows `sig` to be returned before blocking on the await + (async (): Promise => { + for await (const _ of sig) { + callback(); + } + })(); + + return sig; +} diff --git a/bundler/tests/.cache/deno/e9f7d4485b66931dd3408895cfc56d3eaf42ea5f.ts b/bundler/tests/.cache/deno/e9f7d4485b66931dd3408895cfc56d3eaf42ea5f.ts new file mode 100644 index 00000000000..34e2213a260 --- /dev/null +++ b/bundler/tests/.cache/deno/e9f7d4485b66931dd3408895cfc56d3eaf42ea5f.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/args@1.0.7/deps.ts + + +export { once } from "https://deno.land/x/once/index.js"; diff --git a/bundler/tests/.cache/deno/ea1a114c48d412edae56e1371a8d58054b2a3b8b.ts b/bundler/tests/.cache/deno/ea1a114c48d412edae56e1371a8d58054b2a3b8b.ts new file mode 100644 index 00000000000..b9074dcf377 --- /dev/null +++ b/bundler/tests/.cache/deno/ea1a114c48d412edae56e1371a8d58054b2a3b8b.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xtake.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XTake(n, xf) { + this.xf = xf; + this.n = n; + this.i = 0; +} +XTake.prototype['@@transducer/init'] = _xfBase.init; +XTake.prototype['@@transducer/result'] = _xfBase.result; +XTake.prototype['@@transducer/step'] = function(result, input) { + this.i += 1; + var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input); + return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret; +}; + +var _xtake = _curry2(function _xtake(n, xf) { return new XTake(n, xf); }); +export default _xtake; diff --git a/bundler/tests/.cache/deno/ea48b0e5f38c0d40c54cd7527604688c830803ac.ts b/bundler/tests/.cache/deno/ea48b0e5f38c0d40c54cd7527604688c830803ac.ts new file mode 100644 index 00000000000..eb48efb7635 --- /dev/null +++ b/bundler/tests/.cache/deno/ea48b0e5f38c0d40c54cd7527604688c830803ac.ts @@ -0,0 +1,191 @@ +// Loaded from https://deno.land/std@0.85.0/fs/walk.ts + + +// Documentation and interface for walk were adapted from Go +// https://golang.org/pkg/path/filepath/#Walk +// Copyright 2009 The Go Authors. All rights reserved. BSD license. +import { assert } from "../_util/assert.ts"; +import { basename, join, normalize } from "../path/mod.ts"; + +/** Create WalkEntry for the `path` synchronously */ +export function _createWalkEntrySync(path: string): WalkEntry { + path = normalize(path); + const name = basename(path); + const info = Deno.statSync(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +/** Create WalkEntry for the `path` asynchronously */ +export async function _createWalkEntry(path: string): Promise { + path = normalize(path); + const name = basename(path); + const info = await Deno.stat(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink, + }; +} + +export interface WalkOptions { + maxDepth?: number; + includeFiles?: boolean; + includeDirs?: boolean; + followSymlinks?: boolean; + exts?: string[]; + match?: RegExp[]; + skip?: RegExp[]; +} + +function include( + path: string, + exts?: string[], + match?: RegExp[], + skip?: RegExp[], +): boolean { + if (exts && !exts.some((ext): boolean => path.endsWith(ext))) { + return false; + } + if (match && !match.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + if (skip && skip.some((pattern): boolean => !!path.match(pattern))) { + return false; + } + return true; +} + +export interface WalkEntry extends Deno.DirEntry { + path: string; +} + +/** Walks the file tree rooted at root, yielding each file or directory in the + * tree filtered according to the given options. The files are walked in lexical + * order, which makes the output deterministic but means that for very large + * directories walk() can be inefficient. + * + * Options: + * - maxDepth?: number = Infinity; + * - includeFiles?: boolean = true; + * - includeDirs?: boolean = true; + * - followSymlinks?: boolean = false; + * - exts?: string[]; + * - match?: RegExp[]; + * - skip?: RegExp[]; + * + * + * for await (const entry of walk(".")) { + * console.log(entry.path); + * assert(entry.isFile); + * } + */ +export async function* walk( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): AsyncIterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield await _createWalkEntry(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for await (const entry of Deno.readDir(root)) { + assert(entry.name != null); + let path = join(root, entry.name); + + if (entry.isSymlink) { + if (followSymlinks) { + path = await Deno.realPath(path); + } else { + continue; + } + } + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walk(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} + +/** Same as walk() but uses synchronous ops */ +export function* walkSync( + root: string, + { + maxDepth = Infinity, + includeFiles = true, + includeDirs = true, + followSymlinks = false, + exts = undefined, + match = undefined, + skip = undefined, + }: WalkOptions = {}, +): IterableIterator { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield _createWalkEntrySync(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for (const entry of Deno.readDirSync(root)) { + assert(entry.name != null); + let path = join(root, entry.name); + + if (entry.isSymlink) { + if (followSymlinks) { + path = Deno.realPathSync(path); + } else { + continue; + } + } + + if (entry.isFile) { + if (includeFiles && include(path, exts, match, skip)) { + yield { path, ...entry }; + } + } else { + yield* walkSync(path, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip, + }); + } + } +} diff --git a/bundler/tests/.cache/deno/ea78e7fb0bcf6549a37d4d10feb27e4a7a2487ce.ts b/bundler/tests/.cache/deno/ea78e7fb0bcf6549a37d4d10feb27e4a7a2487ce.ts new file mode 100644 index 00000000000..c58aff51af5 --- /dev/null +++ b/bundler/tests/.cache/deno/ea78e7fb0bcf6549a37d4d10feb27e4a7a2487ce.ts @@ -0,0 +1,44 @@ +// Loaded from https://deno.land/x/args@1.0.7/help.ts + + +import { + makeIndentN, + InitMap, +} from "./utils.ts"; + +import { + Command, + CommandHelp, +} from "./command-types.ts"; + +class HelpCategories extends InitMap { + protected init(): CommandHelp[] { + return []; + } +} + +export function* helpLines( + command: Command, + cmdPath: readonly string[], +): Generator { + const catMap = new HelpCategories(); + for (const item of command.help(cmdPath)) { + catMap.get(item.category).push(item); + } + + for (const [category, items] of catMap) { + yield category + ":"; + + for (const { title, description } of items) { + yield* makeIndentN(title, 2); + if (description) yield* makeIndentN(description, 4); + } + } +} + +export const help = ( + command: Command, + cmdPath: readonly string[], +): string => [...helpLines(command, cmdPath)].join("\n"); + +export default help; diff --git a/bundler/tests/.cache/deno/ea86d8c5015cd12a56099eb91069c8ecef2d3103.ts b/bundler/tests/.cache/deno/ea86d8c5015cd12a56099eb91069c8ecef2d3103.ts new file mode 100644 index 00000000000..f58a28daee3 --- /dev/null +++ b/bundler/tests/.cache/deno/ea86d8c5015cd12a56099eb91069c8ecef2d3103.ts @@ -0,0 +1,257 @@ +// Loaded from https://deno.land/std@0.74.0/hash/_wasm/wasm.js + + +/* eslint-disable */ +//deno-fmt-ignore-file +//deno-lint-ignore-file +import * as base64 from "../../encoding/base64.ts";export const source = base64.decode("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HiADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpB/IXAACEEQQAMEQsgAEHYgcAARwRAIAAoAABB89CFiwNHDRALIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB4ABBCBChASIDRQ0XIANCADcDACADQQA2AhwgAyACKQPwAjcDICADQfiXwAApAwA3AwggA0EQakGAmMAAKQMANwMAIANBGGpBiJjAACgCADYCACADQShqIAgpAwA3AwAgA0EwaiAHKQMANwMAIANBOGogBikDADcDACADQUBrIAopAwA3AwAgA0HIAGogCSkDADcDACADQdAAaiAFKQMANwMAIANB2ABqIAQpAwA3AwBB3IHAACEEQQAMEAsgAEGAgsAARg0FIABBgILAAEEGEIMBRQ0FIABBrILAAEYNBiAAQayCwABBBhCDAUUNBiAAQdiCwABGDQcgAEHYgsAAQQYQgwFFDQcgAEGEg8AARwRAIABBhIPAAEEGEIMBDQ8LIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNGCADQgA3AwggA0IANwMAIANBADYCUCADQZCZwAApAwA3AxAgA0EYakGYmcAAKQMANwMAIANBIGpBoJnAACkDADcDACADQShqQaiZwAApAwA3AwAgA0EwakGwmcAAKQMANwMAIANBOGpBuJnAACkDADcDACADQUBrQcCZwAApAwA3AwAgA0HIAGpByJnAACkDADcDACADQdQAaiACQfACakGAARCLARpBjIPAACEEQQAMDwsgAEGwg8AARg0HIAApAABC89CFm9PFjJk0UQ0HIABB3IPAAEYNCCAAKQAAQvPQhZvTxcyaNlENCCAAQYiEwABGDQkgACkAAELz0IWb0+WMnDRRDQkgAEG0hMAARwRAIAApAABC89CFm9OlzZgyUg0OCyACQZgBakEAQcgBEJEBGiACQf4CakIANwEAIAJBhgNqQgA3AQAgAkGOA2pCADcBACACQZYDakIANwEAIAJBngNqQgA3AQAgAkGmA2pCADcBACACQa4DakIANwEAIAJBtgNqQQA2AQAgAkG6A2pBADsBACACQQA7AfQCIAJCADcB9gIgAkHIADYC8AIgAkGIBGogAkHwAmpBzAAQiwEaIAJBCGogAkGIBGpBBHJByAAQiwEaQZgCQQgQoQEiA0UNGyADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHIABCLARpBvITAACEEQQAMDgsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBEDYCiAQgAkEAOwGMBCACQQA2AY4EIAJBqAFqIgMgAkGYBGoiBCgCADYCACACQaABaiIJIAJBkARqIgUpAwA3AwAgAkHoAmoiBiACQaQBaikCADcDACACIAIpA4gENwOYASACIAIpApwBNwPgAiACQcABaiIHQgA3AwAgAkG4AWoiCEIANwMAIAJBsAFqIg1CADcDACADQgA3AwAgCUIANwMAIAJCADcDmAEgAkH6AmpCADcBACACQYIDakEAOwEAIAJBEDYC8AIgAkEAOwH0AiACQQA2AfYCIAQgAkGAA2ooAgA2AgAgBSACQfgCaiIKKQMANwMAIAJBEGoiCyACQZQEaikCADcDACACIAIpA/ACNwOIBCACIAIpAowENwMIIAJB0AFqIgwgCykDADcDACACIAIpAwg3A8gBIAogBikDADcDACACIAIpA+ACNwPwAiACQcAEaiIGIAwpAwA3AwAgAkG4BGoiCyACKQPIATcDACACQbAEaiIMIAcpAwA3AwAgAkGoBGoiByAIKQMANwMAIAJBoARqIgggDSkDADcDACAEIAMpAwA3AwAgBSAJKQMANwMAIAIgAikDmAE3A4gEQdQAQQQQoQEiA0UNDiADQQA2AgAgAyACKQPwAjcCBCADIAIpA4gENwIUIANBDGogCikDADcCACADQRxqIAUpAwA3AgAgA0EkaiAEKQMANwIAIANBLGogCCkDADcCACADQTRqIAcpAwA3AgAgA0E8aiAMKQMANwIAIANBxABqIAspAwA3AgAgA0HMAGogBikDADcCAEGEgMAAIQRBAAwNCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEyADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQdQAakHIl8AAKQIANwIAIANBwJfAACkCADcCTEGsgMAAIQRBAAwMCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQeAAQQgQoQEiA0UNEiADQgA3AwAgA0EANgIcIAMgAikD8AI3AyAgA0H4l8AAKQMANwMIIANBEGpBgJjAACkDADcDACADQRhqQYiYwAAoAgA2AgAgA0EoaiAIKQMANwMAIANBMGogBykDADcDACADQThqIAYpAwA3AwAgA0FAayAKKQMANwMAIANByABqIAkpAwA3AwAgA0HQAGogBSkDADcDACADQdgAaiAEKQMANwMAQYSBwAAhBEEADAsLIAJBkgRqQgA3AQAgAkGaBGpBADsBACACQZwEakIANwIAIAJBpARqQgA3AgAgAkGsBGpCADcCACACQbQEakIANwIAIAJBvARqQgA3AgAgAkHEBGpBADoAACACQcUEakEANgAAIAJByQRqQQA7AAAgAkHLBGpBADoAACACQcAANgKIBCACQQA7AYwEIAJBADYBjgQgAkGYAWogAkGIBGpBxAAQiwEaIAJBqANqIgQgAkHUAWopAgA3AwAgAkGgA2oiBSACQcwBaikCADcDACACQZgDaiIJIAJBxAFqKQIANwMAIAJBkANqIgogAkG8AWopAgA3AwAgAkGIA2oiBiACQbQBaikCADcDACACQYADaiIHIAJBrAFqKQIANwMAIAJB+AJqIgggAkGkAWopAgA3AwAgAiACKQKcATcD8AJB+ABBCBChASIDRQ0MIANCADcDACADQQA2AjAgAyACKQPwAjcCNCADQdCXwAApAwA3AwggA0EQakHYl8AAKQMANwMAIANBGGpB4JfAACkDADcDACADQSBqQeiXwAApAwA3AwAgA0EoakHwl8AAKQMANwMAIANBPGogCCkDADcCACADQcQAaiAHKQMANwIAIANBzABqIAYpAwA3AgAgA0HUAGogCikDADcCACADQdwAaiAJKQMANwIAIANB5ABqIAUpAwA3AgAgA0HsAGogBCkDADcCAEG0gcAAIQRBAAwKCyACQZIEakIANwEAIAJBmgRqQQA7AQAgAkGcBGpCADcCACACQaQEakIANwIAIAJBrARqQgA3AgAgAkG0BGpCADcCACACQbwEakIANwIAIAJBxARqQQA6AAAgAkHFBGpBADYAACACQckEakEAOwAAIAJBywRqQQA6AAAgAkHAADYCiAQgAkEAOwGMBCACQQA2AY4EIAJBmAFqIAJBiARqQcQAEIsBGiACQagDaiIEIAJB1AFqKQIANwMAIAJBoANqIgUgAkHMAWopAgA3AwAgAkGYA2oiCSACQcQBaikCADcDACACQZADaiIKIAJBvAFqKQIANwMAIAJBiANqIgYgAkG0AWopAgA3AwAgAkGAA2oiByACQawBaikCADcDACACQfgCaiIIIAJBpAFqKQIANwMAIAIgAikCnAE3A/ACQfAAQQgQoQEiA0UNESADQQA2AgggA0IANwMAIAMgAikD8AI3AgwgA0EUaiAIKQMANwIAIANBHGogBykDADcCACADQSRqIAYpAwA3AgAgA0EsaiAKKQMANwIAIANBNGogCSkDADcCACADQTxqIAUpAwA3AgAgA0HEAGogBCkDADcCACADQeQAakGkmMAAKQIANwIAIANB3ABqQZyYwAApAgA3AgAgA0HUAGpBlJjAACkCADcCACADQYyYwAApAgA3AkxBiILAACEEQQAMCQsgAkGSBGpCADcBACACQZoEakEAOwEAIAJBnARqQgA3AgAgAkGkBGpCADcCACACQawEakIANwIAIAJBtARqQgA3AgAgAkG8BGpCADcCACACQcQEakEAOgAAIAJBxQRqQQA2AAAgAkHJBGpBADsAACACQcsEakEAOgAAIAJBwAA2AogEIAJBADsBjAQgAkEANgGOBCACQZgBaiACQYgEakHEABCLARogAkGoA2oiBCACQdQBaikCADcDACACQaADaiIFIAJBzAFqKQIANwMAIAJBmANqIgkgAkHEAWopAgA3AwAgAkGQA2oiCiACQbwBaikCADcDACACQYgDaiIGIAJBtAFqKQIANwMAIAJBgANqIgcgAkGsAWopAgA3AwAgAkH4AmoiCCACQaQBaikCADcDACACIAIpApwBNwPwAkHwAEEIEKEBIgNFDRAgA0EANgIIIANCADcDACADIAIpA/ACNwIMIANBFGogCCkDADcCACADQRxqIAcpAwA3AgAgA0EkaiAGKQMANwIAIANBLGogCikDADcCACADQTRqIAkpAwA3AgAgA0E8aiAFKQMANwIAIANBxABqIAQpAwA3AgAgA0HkAGpBxJjAACkCADcCACADQdwAakG8mMAAKQIANwIAIANB1ABqQbSYwAApAgA3AgAgA0GsmMAAKQIANwJMQbSCwAAhBEEADAgLIAJBADYCiAQgAkGIBGpBBHIhBEEAIQMDQCADIARqQQA6AAAgAiACKAKIBEEBajYCiAQgA0EBaiIDQYABRw0ACyACQZgBaiACQYgEakGEARCLARogAkHwAmogAkGYAWpBBHJBgAEQiwEaQdgBQQgQoQEiA0UNECADQgA3AwggA0IANwMAIANBADYCUCADQdCYwAApAwA3AxAgA0EYakHYmMAAKQMANwMAIANBIGpB4JjAACkDADcDACADQShqQeiYwAApAwA3AwAgA0EwakHwmMAAKQMANwMAIANBOGpB+JjAACkDADcDACADQUBrQYCZwAApAwA3AwAgA0HIAGpBiJnAACkDADcDACADQdQAaiACQfACakGAARCLARpB4ILAACEEQQAMBwsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GUAUcNAAsgAkGIBGogAkHwAmpBlAEQiwEaIAJBCGogAkGIBGpBBHJBkAEQiwEaQeACQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGQARCLARpBuIPAACEEQQAMBgsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0GMAUcNAAsgAkGIBGogAkHwAmpBjAEQiwEaIAJBCGogAkGIBGpBBHJBiAEQiwEaQdgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakGIARCLARpB5IPAACEEQQAMBQsgAkGYAWpBAEHIARCRARogAkEANgLwAkEEIQMDQCACQfACaiADakEAOgAAIAIgAigC8AJBAWo2AvACIANBAWoiA0HsAEcNAAsgAkGIBGogAkHwAmpB7AAQiwEaIAJBCGogAkGIBGpBBHJB6AAQiwEaQbgCQQgQoQEiA0UNECADIAJBmAFqQcgBEIsBIgRBADYCyAEgBEHMAWogAkEIakHoABCLARpBkITAACEEQQAMBAsgAkGYAWpBAEHIARCRARogAkEA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aiIBIAIgBHNzakHglu21f2pBEHcgAWoiAyABcyACIApqIAEgBHMgA3NqQfD4/vV7akEXdyADaiICc2pBxv3txAJqQQR3IAJqIgRqIAMgC2ogASATaiACIANzIARzakH6z4TVfmpBC3cgBGoiASACIARzc2pBheG8p31qQRB3IAFqIgMgAXMgAiAGaiABIARzIANzakGFuqAkakEXdyADaiICc2pBuaDTzn1qQQR3IAJqIgRqIAIgDGogASAJaiACIANzIARzakHls+62fmpBC3cgBGoiASAEcyADIBJqIAIgBHMgAXNqQfj5if0BakEQdyABaiICc2pB5ayxpXxqQRd3IAJqIgMgAUF/c3IgAnNqQcTEpKF/akEGdyADaiIEaiADIBVqIAIgCGogASAOaiAEIAJBf3NyIANzakGX/6uZBGpBCncgBGoiASADQX9zciAEc2pBp8fQ3HpqQQ93IAFqIgIgBEF/c3IgAXNqQbnAzmRqQRV3IAJqIgMgAUF/c3IgAnNqQcOz7aoGakEGdyADaiIEaiADIBRqIAIgCmogASALaiAEIAJBf3NyIANzakGSmbP4eGpBCncgBGoiASADQX9zciAEc2pB/ei/f2pBD3cgAWoiAiAEQX9zciABc2pB0buRrHhqQRV3IAJqIgMgAUF/c3IgAnNqQc/8of0GakEGdyADaiIEaiADIBFqIAIgBmogASASaiAEIAJBf3NyIANzakHgzbNxakEKdyAEaiIBIANBf3NyIARzakGUhoWYempBD3cgAWoiAiAEQX9zciABc2pBoaOg8ARqQRV3IAJqIgMgAUF/c3IgAnNqQYL9zbp/akEGdyADaiIEIAAoAgBqNgIAIAAgASAQaiAEIAJBf3NyIANzakG15Ovpe2pBCncgBGoiASAAKAIMajYCDCAAIAIgDGogASADQX9zciAEc2pBu6Xf1gJqQQ93IAFqIgIgACgCCGo2AgggACACIAAoAgRqIAMgD2ogAiAEQX9zciABc2pBkaeb3H5qQRV3ajYCBAvcDwEFfyAAIAEtAAAiAzoAECAAIAEtAAEiAjoAESAAIAEtAAIiBDoAEiAAIAEtAAMiBToAEyAAIAEtAAQiBjoAFCAAIAMgAC0AAHM6ACAgACACIAAtAAFzOgAhIAAgBCAALQACczoAIiAAIAUgAC0AA3M6ACMgACAGIAAt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BCARIAEgA0F/c3EgAyAEcXIgAmpqQQd3IgVBf3NxIAMgBXFyIAFqakELdyIBIAVyIBIgBCABIAVxIgQgAyABQX9zcXJqakETdyICcSAEcmogFGpBmfOJ1AVqQQN3IgMgByABIAUgAyABIAJycSABIAJxcmogDWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAJIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogDGpBmfOJ1AVqQQN3IgMgDyABIAQgAyABIAJycSABIAJxcmogFWpBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciARIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogC2pBmfOJ1AVqQQN3IgMgCiABIAYgBCADIAEgAnJxIAEgAnFyampBmfOJ1AVqQQV3IgQgAiADcnEgAiADcXJqakGZ84nUBWpBCXciASAEciAIIAIgASADIARycSADIARxcmpqQZnzidQFakENdyICcSABIARxcmogE2pBmfOJ1AVqQQN3IgMgEiACIBAgASAOIAQgAyABIAJycSABIAJxcmpqQZnzidQFakEFdyIEIAIgA3JxIAIgA3FyampBmfOJ1AVqQQl3IgUgAyAEcnEgAyAEcXJqakGZ84nUBWpBDXciAyAFcyICIARzaiAUakGh1+f2BmpBA3ciASAJIAMgASAHIAQgASACc2pqQaHX5/YGakEJdyICcyAFIA1qIAEgA3MgAnNqQaHX5/YGakELdyIEc2pqQaHX5/YGakEPdyIDIARzIgUgAnNqIAtqQaHX5/YGakEDdyIBIAggAyABIAogAiABIAVzampBodfn9gZqQQl3IgJzIAQgBmogASADcyACc2pBodfn9gZqQQt3IgRzampBodfn9gZqQQ93IgMgBHMiBSACc2ogDGpBodfn9gZqQQN3IgEgESADIAEgDyACIAEgBXNqakGh1+f2BmpBCXciAnMgBCAVaiABIANzIAJzakGh1+f2BmpBC3ciBHNqakGh1+f2BmpBD3ciAyAEcyIFIAJzaiATakGh1+f2BmpBA3ciASAAKAIAajYCACAAIBAgAiABIAVzampBodfn9gZqQQl3IgIgACgCDGo2Agwg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IgVFDQULIAIgBDYCFCACIAU2AhALIAIoAhAhBSACQThqIgZCADcDACACQTBqIgdCADcDACACQShqIghCADcDACACQSBqIglCADcDACACQRhqIgpCADcDACACQgA3AxAgAkHqAGpCADcBACACQfIAakEAOwEAIAJBEDYCYCACQQA7AWQgAkEANgFmIAJBiAFqIAJB8ABqKAIANgIAIAJBgAFqIAJB6ABqKQMANwMAIAJB2ABqIgsgAkGEAWopAgA3AwAgAiACKQNgNwN4IAIgAikCfDcDUCACQcgAaiIMIAspAwA3AwAgAiACKQNQNwNAIANBOGogDCkDADcAACADQTBqIAIpA0A3AAAgA0EoaiAGKQMANwAAIANBIGogBykDADcAACADQRhqIAgpAwA3AAAgA0EQaiAJKQMANwAAIANBCGogCikDADcAACADIAIpAxA3AAAgAUEANgIAIAAgBDYCBCAAIAU2AgAgAkGQAWokAA8LQbCawABBFyACQRBqQaCXwABBsJfAABB5AAtBEEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyAEQQFBtKXAACgCACIAQQIgABsRAAAAC9gIAQV/IABBeGoiASAAQXxqKAIAIgNBeHEiAGohAgJAAkACQAJAIANBAXENACADQQNxRQ0BIAEoAgAiAyAAaiEAIAEgA2siAUH8pMAAKAIARgRAIAIoAgRBA3FBA0cNAUH0pMAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgAPCyABIAMQTAsCQCACQQRqIgQoAgAiA0ECcQRAIAQgA0F+cTYCACABIABBAXI2AgQgACABaiAANgIADAELAkAgAkGApcAAKAIARwRAQfykwAAoAgAgAkYNASACIANBeHEiAhBMIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQfykwAAoAgBHDQJB9KTAACAANgIADwtBgKXAACABNgIAQfikwABB+KTAACgCACAAaiIANgIAIAEgAEEBcjYCBEH8pMAAKAIAIAFGBEBB9KTAAEEANgIAQfykwABBADYCAAtBnKXAACgCACICIABPDQJBgKXAACgCACIARQ0CAkBB+KTAACgCACIDQSlJDQBBjKXAACEBA0AgASgCACIEIABNBEAgBCABKAIE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KQMwNwNoIAJBIGogAkGMAWopAgA3AwAgAkEYaiACQYQBaikCADcDACACQRBqIAJB/ABqKQIANwMAIAJBCGogAkH0AGopAgA3AwAgAkEoaiACQZQBaikCADcDACACIAIpAmw3AwAgASACEB8gAUIANwMIIAFCADcDACABQQA2AlAgAUHQmMAAKQMANwMQIAFBGGpB2JjAACkDADcDACABQSBqQeCYwAApAwA3AwAgAUEoakHomMAAKQMANwMAIAFBMGpB8JjAACkDADcDACABQThqQfiYwAApAwA3AwAgAUFAa0GAmcAAKQMANwMAIAFByABqQYiZwAApAwA3AwACQAJAQTBBARChASIDBEAgAkIwNwJsIAIgAzYCaCACQegAaiACQTAQXgJAIAIoAmwiBCACKAJwIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAmghBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCbCACIAQ2AmgLIAIoAmghBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFB0JjAACkDADcDACABQQhqQdiYwAApAwA3AwAgAUEQakHgmMAAKQMANwMAIAFBGGpB6JjAACkDADcDACABQSBqQfCYwAApAwA3AwAgAUEoakH4mMAAKQMANwMAIAFBMGpBgJnAACkDADcDACABQThqQYiZwAApAwA3AwAgACADNgIEIAAgBDYCACACQaABaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC78GAQR/IAAgAWohAgJAAkACQAJAAkAgAEEEaigCACIDQQFxDQAgA0EDcUUNASAAKAIAIgMgAWohASAAIANrIgBB/KTAACgCAEYEQCACKAIEQQNxQQNHDQFB9KTAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADwsgACADEEwLAkAgAkEEaigCACIDQQJxBEAgAkEEaiADQX5xNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAMAQsCQCACQYClwAAoAgBHBEBB/KTAACgCACACRg0BIAIgA0F4cSICEEwgACABIAJqIgFBAXI2AgQgACABaiABNgIAIABB/KTAACgCAEcNAkH0pMAAIAE2AgAPC0GApcAAIAA2AgBB+KTAAEH4pMAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABB/KTAACgCAEcNAkH0pMAAQQA2AgBB/KTAAEEANgIADwtB/KTAACAANgIAQfSkwABB9KTAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyABQYACSQ0DIABCADcCECAAQRxqAn9BACABQQh2IgNFDQAaQR8gAUH///8HSw0AGiABQQYgA2ciAmtBH3F2QQFxIAJBAXRrQT5qCyICNgIAIAJBAnRB9KPAAGohAwJAAkBB6KHAACgCACIEQQEgAkEfcXQiBXEEQCADKAIAIgNBBGooAgBBeHEgAUcNASADIQIMAgtB6KHAACAEIAVyNgIAIAMgADYCAAwECyABQQBBGSACQQF2a0EfcSACQR9GG3QhBANAIAMgBEEddkEEcWpBEGoiBSgCACICRQ0DIARBAXQhBCACIQMgAkEEaigCAEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBGGpBADYCACAAIAI2AgwgACABNgIICw8LIAUgADYCAAsgAEEYaiADNgIAIAAgADYCDCAAIAA2AggPCyABQQN2IgJBA3RB7KHAAGohAQJ/QeShwAAoAgAiA0EBIAJ0IgJxBEAgASgCCAwBC0HkocAAIAIgA3I2AgAgAQshAiABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggL1AYBBH8jAEHQAWsiAiQAIAJBygBqQgA3AQAgAkHSAGpBADsBACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkHkAGpCADcCACACQewAakIANwIAIAJB9ABqQgA3AgAgAkH8AGpBADoAACACQf0AakEANgAAIAJBgQFqQQA7AAAgAkGDAWpBADoAACACQQA7AUQgAkEANgFGIAJBwAA2AkAgAkGIAWogAkFAa0HEABCLARogAkE4aiACQcQBaikCADcDACACQTBqIAJBvAFqKQIANwMAIAJBKGogAkG0AWopAgA3AwAgAkEgaiACQawBaikCADcDACACQRhqIAJBpAFqKQIANwMAIAJBEGogAkGcAWopAgA3AwAgAkEIaiACQZQBaikCADcDACACIAIpAowBNwMAIAEgAhARIAFCADcDCCABQgA3AwAgAUEANgJQIAFBkJnAACkDADcDECABQRhqQZiZwAApAwA3AwAgAUEgakGgmcAAKQMANwMAIAFBKGpBqJnAACkDADcDACABQTBqQbCZwAApAwA3AwAgAUE4akG4mcAAKQMANwMAIAFBQGtBwJnAACkDADcDACABQcgAakHImcAAKQMANwMAAkACQEHAAEEBEKEBIgMEQCACQsAANwKMASACIAM2AogBIAJBiAFqIAJBwAAQXgJAIAIoAowBIgQgAigCkAEiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCiAEhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCjAEgAiAENgKIAQsgAigCiAEhBCABQgA3AwggAUIANwMAIAFBADYCUCABQRBqIgFBkJnAACkDADcDACABQQhqQZiZwAApAwA3AwAgAUEQakGgmcAAKQMANwMAIAFBGGpBqJnAACkDADcDACABQSBqQbCZwAApAwA3AwAgAUEoakG4mcAAKQMANwMAIAFBMGpBwJnAACkDADcDACABQThqQciZwAApAwA3AwAgACADNgIEIAAgBDYCACACQdABaiQADwtBwABBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBgEKfyMAQTBrIgIkACACQSRqQYCHwAA2AgAgAkEDOgAoIAJCgICAgIAENwMIIAIgADYCICACQQA2AhggAkEANgIQAn8CQAJAAkAgASgCCCIDBEAgASgCACEFIAEoAgQiCCABQQxqKAIAIgYgBiAISxsiBkUNASABQRRqKAIAIQcgASgCECEJIAAgBSgCACAFKAIEQYyHwAAoAgARAwANAyAFQQhqIQECQAJAA0AgAiADQQRqKAIANgIMIAIgA0Ecai0AADoAKCACIANBCGooAgA2AgggA0EYaigCACEAQQAhBAJAAkACQCADQRRqKAIAQQFrDgIAAgELIAAgB08NAyAAQQN0IAlqIgooAgRBA0cNASAKKAIAKAIAIQALQQEhBAsgAiAANgIUIAIgBDYCECADQRBqKAIAIQBBACEEAkACQAJAIANBDGooAgBBAWsOAgACAQsgACAHTw0EIABBA3QgCWoiCigCBEEDRw0BIAooAgAoAgAh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IQEgACgCGCEAA0AgBkF/aiIGRQRAQQAPCyAAIAcgASgCEBEBAEUNAAsLIAULtwUBBH8jAEGQAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJBADsBNCACQQA2ATYgAkEoNgIwIAJBgAFqIAJB0ABqKQMANwMAIAJB+ABqIAJByABqKQMANwMAIAJB8ABqIAJBQGspAwA3AwAgAkHoAGogAkE4aikDADcDACACQYgBaiACQdgAaigCADYCACACIAIpAzA3A2AgAkEgaiACQfwAaikCADcDACACQRhqIAJB9ABqKQIANwMAIAJBEGogAkHsAGopAgA3AwAgAkEoaiACQYQBaikCADcDACACIAIpAmQ3AwggASACQQhqEE0gAUIANwMAIAFBADYCMCABQdCXwAApAwA3AwggAUEQakHYl8AAKQMANwMAIAFBGGpB4JfAACkDADcDACABQSBqQeiXwAApAwA3AwAgAUEoakHwl8AAKQMANwMAAkACQEEoQQEQoQEiAwRAIAJCKDcCZCACIAM2AmAgAkHgAGogAkEIakEoEF4CQCACKAJkIgQgAigCaCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AmQgAiAENgJgCyACKAJgIQQgAUIANwMAIAFBADYCMCABQQhqIgFB0JfAACkDADcDACABQQhqQdiXwAApAwA3AwAgAUEQakHgl8AAKQMANwMAIAFBGGpB6JfAACkDADcDACABQSBqQfCXwAApAwA3AwAgACADNgIEIAAgBDYCACACQZABaiQADwtBKEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8YEAQR/IwBBoAFrIgIkACACQTpqQgA3AQAgAkHCAGpBADsBACACQcQAakIANwIAIAJBzABqQgA3AgAgAkHUAGpCADcCACACQdwAakIANwIAIAJBADsBNCACQQA2ATYgAkEwNgIwIAJBkAFqIAJB2ABqKQMANwMAIAJBiAFqIAJB0ABqKQMANwMAIAJBgAFqIAJByABqKQMANwMAIAJB+ABqIAJBQGspAwA3AwAgAkHwAGogAkE4aikDADcDACACQZgBaiACQeAAaigCADYCACACIAIpAzA3A2ggAkEgaiACQYwBaikCADcDACACQRhqIAJBhAFqKQIANwMAIAJBEGogAkH8AGopAgA3AwAgAkEIaiACQfQAaikCADcDACACQShqIAJBlAFqKQIANwMAIAIgAikCbDcDACABIAIQYyABQQBByAEQkQEiBUEANgLIAQJAAkBBMEEBEKEBIgEEQCACQjA3AmwgAiABNgJoIAJB6ABqIAJBMBBeAkAgAigCbCIDIAIoAnAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCaCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJsIAIgAzYCaAsgAigCaCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJBoAFqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALxgQBBH8jAEGgAWsiAiQAIAJBOmpCADcBACACQcIAakEAOwEAIAJBxABqQgA3AgAgAkHMAGpCADcCACACQdQAakIANwIAIAJB3ABqQgA3AgAgAkEAOwE0IAJBADYBNiACQTA2AjAgAkGQAWogAkHYAGopAwA3AwAgAkGIAWogAkHQAGopAwA3AwAgAkGAAWogAkHIAGopAwA3AwAgAkH4AGogAkFAaykDADcDACACQfAAaiACQThqKQMANwMAIAJBmAFqIAJB4ABqKAIANgIAIAIgAikDMDcDaCACQSBqIAJBjAFqKQIANwMAIAJBGGogAkGEAWopAgA3AwAgAkEQaiACQfwAaikCADcDACACQQhqIAJB9ABqKQIANwMAIAJBKGogAkGUAWopAgA3AwAgAiACKQJsNwMAIAEgAhBkIAFBAEHIARCRASIFQQA2AsgBAkACQEEwQQEQoQEiAQRAIAJCMDcCbCACIAE2AmggAkHoAGogAkEwEF4CQCACKAJsIgMgAigCcCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJoIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AmwgAiADNgJoCyACKAJoIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkGgAWokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAu8BAEEfyMAQaADayICJAAgAkHyAmpCADcBACACQfoCakEAOwEAIAJB/AJqQgA3AgAgAkGEA2pCADcCACACQYwDakIANwIAIAJBlANqQgA3AgAgAkEAOwHsAiACQQA2Ae4CIAJBMDYC6AIgAkHYAGogAkGQA2opAwA3AwAgAkHQAGogAkGIA2opAwA3AwAgAkHIAGogAkGAA2opAwA3AwAgAkFAayACQfgCaikDADcDACACQThqIAJB8AJqKQMANwMAIAJB4ABqIAJBmANqKAIANgIAIAIgAikD6AI3AzAgAkEgaiACQdQAaikCADcDACACQRhqIAJBzABqKQIANwMAIAJBEGogAkHEAGopAgA3AwAgAkEIaiACQTxqKQIANwMAIAJBKGogAkHcAGopAgA3AwAgAiACKQI0NwMAIAJBMGogAUG4AhCLARogAkEwaiACEGMCQAJAQTBBARChASIDBEAgAkIwNwI0IAIgAzYCMCACQTBqIAJBMBBeAkAgAigCNCIEIAIoAjgiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCMCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgI0IAIgBDYCMAsgAigCMCEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EwQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALvAQBBH8jAEGgA2siAiQAIAJB8gJqQgA3AQAgAkH6AmpBADsBACACQfwCakIANwIAIAJBhANqQgA3AgAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB7AIgAkEANgHuAiACQTA2AugCIAJB2ABqIAJBkANqKQMANwMAIAJB0ABqIAJBiANqKQMANwMAIAJByABqIAJBgANqKQMANwMAIAJBQGsgAkH4AmopAwA3AwAgAkE4aiACQfACaikDADcDACACQeAAaiACQZgDaigCADYCACACIAIpA+gCNwMwIAJBIGogAkHUAGopAgA3AwAgAkEYaiACQcwAaikCADcDACACQRBqIAJBxABqKQIANwMAIAJBCGogAkE8aikCADcDACACQShqIAJB3ABqKQIANwMAIAIgAikCNDcDACACQTBqIAFBuAIQiwEaIAJBMGogAhBkAkACQEEwQQEQoQEiAwRAIAJCMDcCNCACIAM2AjAgAkEwaiACQTAQXgJAIAIoAjQiBCACKAI4IgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAjAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCNCACIAQ2AjALIAIoAjAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBMEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC7wEAQR/IwBBwAJrIgIkACACQZICakIANwEAIAJBmgJqQQA7AQAgAkGcAmpCADcCACACQaQCakIANwIAIAJBrAJqQgA3AgAgAkG0AmpCADcCACACQQA7AYwCIAJBADYBjgIgAkEwNgKIAiACQdgAaiACQbACaikDADcDACACQdAAaiACQagCaikDADcDACACQcgAaiACQaACaikDADcDACACQUBrIAJBmAJqKQMANwMAIAJBOGogAkGQAmopAwA3AwAgAkHgAGogAkG4AmooAgA2AgAgAiACKQOIAjcDMCACQSBqIAJB1ABqKQIANwMAIAJBGGogAkHMAGopAgA3AwAgAkEQaiACQcQAaikCADcDACACQQhqIAJBPGopAgA3AwAgAkEoaiACQdwAaikCADcDACACIAIpAjQ3AwAgAkEwaiABQdgBEIsBGiACQTBqIAIQHwJAAkBBMEEBEKEBIgMEQCACQjA3AjQgAiADNgIwIAJBMGogAkEwEF4CQCACKAI0IgQgAigCOCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIwIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjQgAiAENgIwCyACKAIwIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAmokAA8LQTBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGs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AkHwAGokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvMBAEEfyMAQdABayICJAAgAkHKAGpCADcBACACQdIAakEAOwEAIAJB1ABqQgA3AgAgAkHcAGpCADcCACACQeQAakIANwIAIAJB7ABqQgA3AgAgAkH0AGpCADcCACACQfwAakEAOgAAIAJB/QBqQQA2AAAgAkGBAWpBADsAACACQYMBakEAOgAAIAJBADsBRCACQQA2AUYgAkHAADYCQCACQYgBaiACQUBrQcQAEIsBGiACQThqIAJBxAFqKQIANwMAIAJBMGogAkG8AWopAgA3AwAgAkEoaiACQbQBaikCADcDACACQSBqIAJBrAFqKQIANwMAIAJBGGogAkGkAWopAgA3AwAgAkEQaiACQZwBaikCADcDACACQQhqIAJBlAFqKQIANwMAIAIgAikCjAE3AwAgASACEFsgAUEAQcgBEJEBIgVBADYCyAECQAJAQcAAQQEQoQEiAQRAIAJCwAA3AowBIAIgATYCiAEgAkGIAWogAkHAABBeAkAgAigCjAEiAyACKAKQASIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAKIASEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgKMASACIAM2AogBCyACKAKIASEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB0AFqJAAPC0HAAEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC8wEAQR/IwBB0AFrIgIkACACQcoAakIANwEAIAJB0gBqQQA7AQAgAkHUAGpCADcCACACQdwAakIANwIAIAJB5ABqQgA3AgAgAkHsAGpCADcCACACQfQAakIANwIAIAJB/ABqQQA6AAAgAkH9AGpBADYAACACQYEBakEAOwAAIAJBgwFqQQA6AAAgAkEAOwFEIAJBADYBRiACQcAANgJAIAJBiAFqIAJBQGtBxAAQiwEaIAJBOGogAkHEAWopAgA3AwAgAkEwaiACQbwBaikCADcDACACQShqIAJBtAFqKQIANwMAIAJBIGogAkGsAWopAgA3AwAgAkEYaiACQaQBaikCADcDACACQRBqIAJBnAFqKQIANwMAIAJBCGogAkGUAWopAgA3AwAgAiACKQKMATcDACABIAIQXCABQQBByAEQkQEiBUEANgLIAQJAAkBBwABBARChASIBBEAgAkLAADcCjAEgAiABNgKIASACQYgBaiACQcAAEF4CQCACKAKMASIDIAIoApABIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAogBIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AowBIAIgAzYCiAELIAIoAogBIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHQAWokAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQWwJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEGgA2siAiQAIAJB4gJqQgA3AQAgAkHqAmpBADsBACACQewCakIANwIAIAJB9AJqQgA3AgAgAkH8AmpCADcCACACQYQDakIANwIAIAJBjANqQgA3AgAgAkGUA2pBADoAACACQZUDakEANgAAIAJBmQNqQQA7AAAgAkGbA2pBADoAACACQQA7AdwCIAJBADYB3gIgAkHAADYC2AIgAkFAayACQdgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQZgCEIsBGiACQUBrIAIQXAJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALuAQBBH8jAEHgAmsiAiQAIAJBogJqQgA3AQAgAkGqAmpBADsBACACQawCakIANwIAIAJBtAJqQgA3AgAgAkG8AmpCADcCACACQcQCakIANwIAIAJBzAJqQgA3AgAgAkHUAmpBADoAACACQdUCakEANgAAIAJB2QJqQQA7AAAgAkHbAmpBADoAACACQQA7AZwCIAJBADYBngIgAkHAADYCmAIgAkFAayACQZgCakHEABCLARogAkE4aiACQfwAaikCADcDACACQTBqIAJB9ABqKQIANwMAIAJBKGogAkHsAGopAgA3AwAgAkEgaiACQeQAaikCADcDACACQRhqIAJB3ABqKQIANwMAIAJBEGogAkHUAGopAgA3AwAgAkEIaiACQcwAaikCADcDACACIAIpAkQ3AwAgAkFAayABQdgBEIsBGiACQUBrIAIQEQJAAkBBwABBARChASIDBEAgAkLAADcCRCACIAM2AkAgAkFAayACQcAAEF4CQCACKAJEIgQgAigCSCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAJAIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AkQgAiAENgJACyACKAJAIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHgAmokAA8LQcAAQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAAL0AQBBH8jAEHgAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBHDYCICACQTxqQQA2AgAgAkEAOwEkIAJBADYBJiACQdgAaiACQThqKQMANwMAIAJB0ABqIAJBMGopAwA3AwAgAkHIAGogAkEoaikDADcDACACIAIpAyA3A0AgAkEYaiACQdwAaigCADYCACACQRBqIAJB1ABqKQIANwMAIAJBCGogAkHMAGopAgA3AwAgAiACKQJENwMAIAEgAhBPIAFBADYCCCABQgA3AwAgAUGMmMAAKQIANwJMIAFB1ABqQZSYwAApAgA3AgAgAUHcAGpBnJjAACkCADcCACABQeQAakGkmMAAKQIANwIAAkACQEEcQQEQoQEiAwRAIAJCHDcCRCACIAM2AkAgAkFAayACQRwQXgJAIAIoAkQiBCACKAJIIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAkAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCRCACIAQ2AkALIAIoAkAhBCABQQA2AgggAUIANwMAIAFBzABqIgFBjJjAACkCADcCACABQQhqQZSYwAApAgA3AgAgAUEQakGcmMAAKQIANwIAIAFBGGpBpJjAACkCADcCACAAIAM2AgQgACAENgIAIAJB4ABqJAAPC0EcQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALjAQBBH8jAEHQAWsiAiQAIAJBqgFqQgA3AQAgAkGyAWpBADsBACACQbQBakIANwIAIAJBvAFqQgA3AgAgAkHEAWpCADcCACACQQA7AaQBIAJBADYBpgEgAkEoNgKgASACQcgAaiACQcABaikDADcDACACQUBrIAJBuAFqKQMANwMAIAJBOGogAkGwAWopAwA3AwAgAkEwaiACQagBaikDADcDACACQdAAaiACQcgBaigCADYCACACIAIpA6ABNwMoIAJBGGogAkHEAGopAgA3AwAgAkEQaiACQTxqKQIANwMAIAJBCGogAkE0aikCADcDACACQSBqIAJBzABqKQIANwMAIAIgAikCLDcDACACQShqIAFB+AAQiwEaIAJBKGogAhBNAkACQEEoQQEQoQEiAwRAIAJCKDcCLCACIAM2AiggAkEoaiACQSgQXgJAIAIoAiwiBCACKAIwIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAighBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCLCACIAQ2AigLIAIoAighBCABEBAgACADNgIEIAAgBDYCACACQdABaiQADwtBKEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC5sEAQd/IwBBQGoiAyQAAkACQAJAAkACQAJAAkBBiAEgACgCyAEiBGsiBiACTQRAIAQEQCAEQYkBTw0GIAAgBGpBzAFqIAEgBhCLARogAiAGayECIAEgBmohAQNAIAAgBWoiBCAELQAAIARBzAFqLQAAczoAACAFQQFqIgVBiAFHDQALIAAQDgsgAiACQYgBcCIHayEEIAIgB0kNBiAEQYgBSQ0BIAFBiAFqIQggASECIAQhBkGIASEFA0AgAyAFNgIMIAVBiAFHDQggBkH4fmohBkEAIQUDQCAAIAVqIgkgCS0AACACIAVqLQAAczoAACAFQQFqIgVBiAFHDQALIAAQDiAGQYgBSQ0CQYgBIQUgAkGIAWohAiAIQYgBaiEIDAALAAsgAiAEaiIGIARJDQIgBkGIAUsNAyAAIARqQcwBaiABIAIQiwEaIAAoAsgBIAJqIQcMAQsgAEHMAWogASAEaiAHEIsBGgsgACAHNgLIASADQUBrJAAPCyAEIAZBwJvAABB+AAsgBkGIAUHAm8AAEH0ACyAEQYgBQdCbwAAQfgALIAQgAkHgm8AAEH0ACyADQTRqQQY2AgAgA0EkakECNgIAIANCAzcCFCADQbiewAA2AhAgA0EGNgIsIAMgA0EMajYCOCADQdSewAA2AjwgAyADQShqNgIgIAMgA0E8ajYCMCADIANBOGo2AiggA0EQakHgnsAAEJABAAubBAEHfyMAQUBqIgMkAAJAAkACQAJAAkACQAJAQZABIAAoAsgBIgRrIgYgAk0EQCAEBEAgBEGRAU8NBiAAIARqQcwBaiABIAYQiwEaIAIgBmshAiABIAZqIQEDQCAAIAVqIgQgBC0AACAEQcwBai0AAHM6AAAgBUEBaiIFQZABRw0ACyAAEA4LIAIgAkGQAXAiB2shBCACIAdJDQYgBEGQAUkNASABQZABaiEIIAEhAiAEIQZBkAEhBQNAIAMgBTYCDCAFQZABRw0IIAZB8H5qIQZBACEFA0AgACAFaiIJIAktAAAgAiAFai0AAHM6AAAgBUEBaiIFQZABRw0ACyAAEA4gBkGQAUkNAkGQASEFIAJBkAFqIQIgCEGQAWohCAwACwALIAIgBGoiBiAESQ0CIAZBkAFLDQMgACAEakHMAWogASACEIsBGiAAKALIASACaiEHDAELIABBzAFqIAEgBGogBxCLARoLIAAgBzYCyAEgA0FAayQADwsgBCAGQcCbwAAQfgALIAZBkAFBwJvAABB9AAsgBEGQAUHQm8AAEH4ACyAEIAJB4JvAABB9AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0G0nsAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQALmwQBB38jAEFAaiIDJAACQAJAAkACQAJAAkACQEHIACAAKALIASIEayIGIAJNBEAgBARAIARByQBPDQYgACAEakHMAWogASAGEIsBGiACIAZrIQIgASAGaiEBA0AgACAFaiIEIAQtAAAgBEHMAWotAABzOgAAIAVBAWoiBUHIAEcNAAsgABAOCyACIAJByABwIgdrIQQgAiAHSQ0GIARByABJDQEgAUHIAGohCCABIQIgBCEGQcgAIQUDQCADIAU2AgwgBUHIAEcNCCAGQbh/aiEGQQAhBQNAIAAgBWoiCSAJLQAAIAIgBWotAABzOgAAIAVBAWoiBUHIAEcNAAsgABAOIAZByABJDQJByAAhBSACQcgAaiECIAhByABqIQgMAAsACyACIARqIgYgBEkNAiAGQcgASw0DIAAgBGpBzAFqIAEgAhCLARogACgCyAEgAmohBwwBCyAAQcwBaiABIARqIAcQiwEaCyAAIAc2AsgBIANBQGskAA8LIAQgBkHAm8AAEH4ACyAGQcgAQcCbwAAQfQALIARByABB0JvAABB+AAsgBCACQeCbwAAQfQALIANBNGpBBjYCACADQSRqQQI2AgAgA0IDNwIUIANBuJ7AADYCECADQQY2AiwgAyADQQxqNgI4IANB3J7AADYCPCADIANBKGo2AiAgAyADQTxqNgIwIAMgA0E4ajYCKCADQRBqQeCewAAQkAEAC5sEAQd/IwBBQGoiAyQAAkACQAJAAkACQAJAAkBB6AAgACgCyAEiBGsiBiACTQRAIAQEQCAEQekATw0GIAAgBGpBzAFqIAEgBhCLARogAiAGayECIAEgBmohAQNAIAAgBWoiBCAELQAAIARBzAFqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDgsgAiACQegAcCIHayEEIAIgB0kNBiAEQegASQ0BIAFB6ABqIQggASECIAQhBkHoACEFA0AgAyAFNgIMIAVB6ABHDQggBkGYf2ohBkEAIQUDQCAAIAVqIgkgCS0AACACIAVqLQAAczoAACAFQQFqIgVB6ABHDQALIAAQDiAGQegASQ0CQegAIQUgAkHoAGohAiAIQegAaiEIDAALAAsgAiAEaiIGIARJDQIgBkHoAEsNAyAAIARqQcwBaiABIAIQiwEaIAAoAsgBIAJqIQcMAQsgAEHMAWogASAEaiAHEIsBGgsgACAHNgLIASADQUBrJAAPCyAEIAZBwJvAABB+AAsgBkHoAEHAm8AAEH0ACyAEQegAQdCbwAAQfgALIAQgAkHgm8AAEH0ACyADQTRqQQY2AgAgA0EkakECNgIAIANCAzcCFCADQbiewAA2AhAgA0EGNgIsIAMgA0EMajYCOCADQdiewAA2AjwgAyADQShqNgIgIAMgA0E8ajYCMCADIANBOGo2AiggA0EQakHgnsAAEJABAAvkAwEEfyMAQcABayICJAAgAkGiAWpCADcBACACQaoBakEAOwEAIAJBrAFqQgA3AgAgAkG0AWpCADcCACACQQA7AZwBIAJBADYBngEgAkEgNgKYASACQUBrIAJBsAFqKQMANwMAIAJBOGogAkGoAWopAwA3AwAgAkEwaiACQaABaikDADcDACACQcgAaiACQbgBaigCADYCACACIAIpA5gBNwMoIAJBGGogAkE8aikCADcDACACQRBqIAJBNGopAgA3AwAgAkEgaiACQcQAaikCADcDACACIAIpAiw3AwggAkEoaiABQfAAEIsBGiACQShqIAJBCGoQOwJAAkBBIEEBEKEBIgMEQCACQiA3AiwgAiADNgIoIAJBKGogAkEIakEgEF4CQCACKAIsIgQgAigCMCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIoIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiwgAiAENgIoCyACKAIoIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkHAAWokAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuOBAEFfyMAQYABayICJAAgAkHyAGpCADcBACACQfoAakEAOwEAIAJBADsBbCACQQA2AW4gAkEQNgJoIAJBGGogAkHwAGoiBCkDADcDACACQSBqIAJB+ABqKAIANgIAIAJBCGoiBSACQRxqKQIANwMAIAIgAikDaDcDECACIAIpAhQ3AwAgAkEQaiABQdQAEIsBGgJAAkACQCACKAIQIgNBEEkEQCACQRBqQQRyIgYgA2pBECADayIDIAMQkQEaIAJBADYCECACQSRqIgMgBhALIAQgAkHcAGopAgA3AwAgAiACQdQAaikCADcDaCADIAJB6ABqEAsgBSACQSxqKQIANwMAIAIgAikCJDcDAEEQQQEQoQEiA0UNASACQhA3AhQgAiADNgIQIAJBEGogAkEQEF4CQCACKAIUIgQgAigCGCIDRgRAIAQhAwwBCyAEIANJDQMgBEUNACACKAIQIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0FCyACIAM2AhQgAiAENgIQCyACKAIQIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGAAWokAA8LQbCawABBFyACQegAakGgl8AAQbCXwAAQeQALQRBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqEFogAUIANwMAIAFBADYCHCABQfiXwAApAwA3AwggAUEQakGAmMAAKQMANwMAIAFBGGpBiJjAACgCADYCAAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUIANwMAIAFBADYCHCABQQhqIgFB+JfAACkDADcDACABQQhqQYCYwAApAwA3AwAgAUEQakGImMAAKAIANgIAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAuFBAEEfyMAQdAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQRQ2AiAgAkE0akEANgIAIAJBADsBJCACQQA2ASYgAkHIAGogAkEwaikDADcDACACQUBrIAJBKGopAwA3AwAgAkEQaiACQcQAaikCADcDACACQRhqIAJBzABqKAIANgIAIAIgAikDIDcDOCACIAIpAjw3AwggASACQQhqECAgAUEANgIcIAFCADcDACABQRhqQYiYwAAoAgA2AgAgAUEQakGAmMAAKQMANwMAIAFB+JfAACkDADcDCAJAAkBBFEEBEKEBIgMEQCACQhQ3AjwgAiADNgI4IAJBOGogAkEIakEUEF4CQCACKAI8IgQgAigCQCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAI4IQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AjwgAiAENgI4CyACKAI4IQQgAUEANgIcIAFCADcDACABQQhqIgFBEGpBiJjAACgCADYCACABQQhqQYCYwAApAwA3AwAgAUH4l8AAKQMANwMAIAAgAzYCBCAAIAQ2AgAgAkHQAGokAA8LQRRBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvlAwEEfyMAQfAAayICJAAgAkEqakIANwEAIAJBMmpBADsBACACQTRqQgA3AgAgAkE8akIANwIAIAJBADsBJCACQQA2ASYgAkEgNgIgIAJB4ABqIAJBOGopAwA3AwAgAkHYAGogAkEwaikDADcDACACQdAAaiACQShqKQMANwMAIAJB6ABqIAJBQGsoAgA2AgAgAiACKQMgNwNIIAJBEGogAkHcAGopAgA3AwAgAkEIaiACQdQAaikCADcDACACQRhqIAJB5ABqKQIANwMAIAIgAikCTDcDACABIAIQZiABQQBByAEQkQEiBUEANgLIAQJAAkBBIEEBEKEBIgEEQCACQiA3AkwgAiABNgJIIAJByABqIAJBIBBeAkAgAigCTCIDIAIoAlAiAUYEQCADIQEMAQsgAyABSQ0CIANFDQAgAigCSCEEAkAgAUUEQCAEEBBBASEDDAELIAQgA0EBIAEQmgEiA0UNBAsgAiABNgJMIAIgAzYCSAsgAigCSCEDIAVBAEHIARCRAUEANgLIASAAIAE2AgQgACADNgIAIAJB8ABqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIAFBAUG0pcAAKAIAIgBBAiAAGxEAAAAL5QMBBH8jAEHwAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBPGpCADcCACACQQA7ASQgAkEANgEmIAJBIDYCICACQeAAaiACQThqKQMANwMAIAJB2ABqIAJBMGopAwA3AwAgAkHQAGogAkEoaikDADcDACACQegAaiACQUBrKAIANgIAIAIgAikDIDcDSCACQRBqIAJB3ABqKQIANwMAIAJBCGogAkHUAGopAgA3AwAgAkEYaiACQeQAaikCADcDACACIAIpAkw3AwAgASACEGcgAUEAQcgBEJEBIgVBADYCyAECQAJAQSBBARChASIBBEAgAkIgNwJMIAIgATYCSCACQcgAaiACQSAQXgJAIAIoAkwiAyACKAJQIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkghBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCTCACIAM2AkgLIAIoAkghAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQfAAaiQADwtBIEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9wDAQR/IwBBoANrIgIkACACQYIDakIANwEAIAJBigNqQQA7AQAgAkGMA2pCADcCACACQZQDakIANwIAIAJBADsB/AIgAkEANgH+AiACQSA2AvgCIAJBOGogAkGQA2opAwA3AwAgAkEwaiACQYgDaikDADcDACACQShqIAJBgANqKQMANwMAIAJBQGsgAkGYA2ooAgA2AgAgAiACKQP4AjcDICACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAJBGGogAkE8aikCADcDACACIAIpAiQ3AwAgAkEgaiABQdgCEIsBGiACQSBqIAIQZgJAAkBBIEEBEKEBIgMEQCACQiA3AiQgAiADNgIgIAJBIGogAkEgEF4CQCACKAIkIgQgAigCKCIDRgRAIAQhAwwBCyAEIANJDQIgBEUNACACKAIgIQUCQCADRQRAIAUQEEEBIQQMAQsgBSAEQQEgAxCaASIERQ0ECyACIAM2AiQgAiAENgIgCyACKAIgIQQgARAQIAAgAzYCBCAAIAQ2AgAgAkGgA2okAA8LQSBBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgA0EBQbSlwAAoAgAiAEECIAAbEQAAAAvcAwEEfyMAQaADayICJAAgAkGCA2pCADcBACACQYoDakEAOwEAIAJBjANqQgA3AgAgAkGUA2pCADcCACACQQA7AfwCIAJBADYB/gIgAkEgNgL4AiACQThqIAJBkANqKQMANwMAIAJBMGogAkGIA2opAwA3AwAgAkEoaiACQYADaikDADcDACACQUBrIAJBmANqKAIANgIAIAIgAikD+AI3AyAgAkEQaiACQTRqKQIANwMAIAJBCGogAkEsaikCADcDACACQRhqIAJBPGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHYAhCLARogAkEgaiACEGcCQAJAQSBBARChASIDBEAgAkIgNwIkIAIgAzYCICACQSBqIAJBIBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EgQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAAL0wMBBH8jAEHgAGsiAiQAIAJBKmpCADcBACACQTJqQQA7AQAgAkE0akIANwIAIAJBHDYCICACQTxqQQA2AgAgAkEAOwEkIAJBADYBJiACQdgAaiACQThqKQMANwMAIAJB0ABqIAJBMGopAwA3AwAgAkHIAGogAkEoaikDADcDACACIAIpAyA3A0AgAkEYaiACQdwAaigCADYCACACQRBqIAJB1ABqKQIANwMAIAJBCGogAkHMAGopAgA3AwAgAiACKQJENwMAIAEgAhBoIAFBAEHIARCRASIFQQA2AsgBAkACQEEcQQEQoQEiAQRAIAJCHDcCRCACIAE2AkAgAkFAayACQRwQXgJAIAIoAkQiAyACKAJIIgFGBEAgAyEBDAELIAMgAUkNAiADRQ0AIAIoAkAhBAJAIAFFBEAgBBAQQQEhAwwBCyAEIANBASABEJoBIgNFDQQLIAIgATYCRCACIAM2AkALIAIoAkAhAyAFQQBByAEQkQFBADYCyAEgACABNgIEIAAgAzYCACACQeAAaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyABQQFBtKXAACgCACIAQQIgABsRAAAAC9MDAQR/IwBB4ABrIgIkACACQSpqQgA3AQAgAkEyakEAOwEAIAJBNGpCADcCACACQRw2AiAgAkE8akEANgIAIAJBADsBJCACQQA2ASYgAkHYAGogAkE4aikDADcDACACQdAAaiACQTBqKQMANwMAIAJByABqIAJBKGopAwA3AwAgAiACKQMgNwNAIAJBGGogAkHcAGooAgA2AgAgAkEQaiACQdQAaikCADcDACACQQhqIAJBzABqKQIANwMAIAIgAikCRDcDACABIAIQaSABQQBByAEQkQEiBUEANgLIAQJAAkBBHEEBEKEBIgEEQCACQhw3AkQgAiABNgJAIAJBQGsgAkEcEF4CQCACKAJEIgMgAigCSCIBRgRAIAMhAQwBCyADIAFJDQIgA0UNACACKAJAIQQCQCABRQRAIAQQEEEBIQMMAQsgBCADQQEgARCaASIDRQ0ECyACIAE2AkQgAiADNgJACyACKAJAIQMgBUEAQcgBEJEBQQA2AsgBIAAgATYCBCAAIAM2AgAgAkHgAGokAA8LQRxBAUG0pcAAKAIAIgBBAiAAGxEAAAALQYeMwABBJEGsjMAAEIgBAAsgAUEBQbSlwAAoAgAiAEECIAAbEQAAAAvkAwIJfwF+IwBBoAFrIgIkACACQUBrIAFBBGoQciABKAIAIQggAkH4AGoiAyABQTxqKQAANwMAIAJB8ABqIgQgAUE0aikAADcDACACQegAaiIFIAFBLGopAAA3AwAgAkHgAGoiBiABQSRqKQAANwMAIAJB2ABqIgcgAUEcaikAADcDACACIAEpABQ3A1AgAkGQAWogAUHEAGoQciACQQhqIgkgBykDADcDACACQRBqIgcgBikDADcDACACQRhqIgYgBSkDADcDACACQSBqIgUgBCkDADcDACACQShqIgQgAykDADcDACACQTBqIgMgAikDkAEiCzcDACACQThqIgogAkGYAWopAwA3AwAgAiALNwOAASACIAIpA1A3AwBB1ABBBBChASIBRQRAQdQAQQRBtKXAACgCACIAQQIgABsRAAAACyABIAg2AgAgASACKQNANwIEIAEgAikDADcCFCABQQxqIAJByABqKQMANwIAIAFBHGogCSkDADcCACABQSRqIAcpAwA3AgAgAUEsaiAGKQMANwIAIAFBNGogBSkDADcCACABQTxqIAQpAwA3AgAgAUHEAGogAykDADcCACABQcwAaiAKKQMANwIAIABB9I/AADYCBCAAIAE2AgAgAkGgAWokAAvLAwEEfyMAQaADayICJAAgAkGKA2pCADcBACACQZIDakEAOwEAIAJBlANqQgA3AgAgAkEcNgKAAyACQZwDakEANgIAIAJBADsBhAMgAkEANgGGAyACQThqIAJBmANqKQMANwMAIAJBMGogAkGQA2opAwA3AwAgAkEoaiACQYgDaikDADcDACACIAIpA4ADNwMgIAJBGGogAkE8aigCADYCACACQRBqIAJBNGopAgA3AwAgAkEIaiACQSxqKQIANwMAIAIgAikCJDcDACACQSBqIAFB4AIQiwEaIAJBIGogAhBpAkACQEEcQQEQoQEiAwRAIAJCHDcCJCACIAM2AiAgAkEgaiACQRwQXgJAIAIoAiQiBCACKAIoIgNGBEAgBCEDDAELIAQgA0kNAiAERQ0AIAIoAiAhBQJAIANFBEAgBRAQQQEhBAwBCyAFIARBASADEJoBIgRFDQQLIAIgAzYCJCACIAQ2AiALIAIoAiAhBCABEBAgACADNgIEIAAgBDYCACACQaADaiQADwtBHEEBQbSlwAAoAgAiAEECIAAbEQAAAAtBh4zAAEEkQayMwAAQiAEACyADQQFBtKXAACgCACIAQQIgABsRAAAAC8sDAQR/IwBBoANrIgIkACACQYoDakIANwEAIAJBkgNqQQA7AQAgAkGUA2pCADcCACACQRw2AoADIAJBnANqQQA2AgAgAkEAOwGEAyACQQA2AYYDIAJBOGogAkGYA2opAwA3AwAgAkEwaiACQZADaikDADcDACACQShqIAJBiANqKQMANwMAIAIgAikDgAM3AyAgAkEYaiACQTxqKAIANgIAIAJBEGogAkE0aikCADcDACACQQhqIAJBLGopAgA3AwAgAiACKQIkNwMAIAJBIGogAUHgAhCLARogAkEgaiACEGgCQAJAQRxBARChASIDBEAgAkIcNwIkIAIgAzYCICACQSBqIAJBHBBeAkAgAigCJCIEIAIoAigiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCICEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIkIAIgBDYCIAsgAigCICEEIAEQECAAIAM2AgQgACAENgIAIAJBoANqJAAPC0EcQQFBtKXAACgCACIAQQIgABsRAAAAC0GHjMAAQSRBrIzAABCIAQALIANBAUG0pcAAKAIAIgBBAiAAGxEAAAALywMBBH8jAEGwAWsiAiQAIAJBmgFqQgA3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HCIEayIFIAJNBEAgAEEIaiEHIAQEQCAEQcEATw0GIAQgAEEgaiIEaiABIAUQiwEaIAcgBBAHIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAcgBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQSBqIAEgAhCLARogACgCHCACaiEFDAELIABBIGogASAIaiAFEIsBGgsgACAFNgIcIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQALtAMBBn8jAEFAaiIDJAAgACAAKQMAIAKtfDcDAAJAAkACQAJAAkACQEHAACAAKAIIIgRrIgUgAk0EQCAAQcwAaiEHIAQEQCAEQcEATw0GIAQgAEEMaiIEaiABIAUQiwEaIAcgBBAKIAIgBWshAiABIAVqIQELIAJBP3EhBSACQUBxIghBwABJDQEgAiAFa0FAaiEGIAEhBEHAACECA0AgAyACNgIMIAJBwABHDQcgByAEEAogBkHAAEkNAiAEQUBrIQQgBkFAaiEGDAALAAsgAiAEaiIFIARJDQIgBUHAAEsNAyAAIARqQQxqIAEgAhCLARogACgCCCACaiEFDAELIABBDGogASAIaiAFEIsBGgsgACAFNgIIIANBQGskAA8LIAQgBUHAm8AAEH4ACyAFQcAAQcCbwAAQfQALIARBwABB0JvAABB+AAsgA0E0akEGNgIAIANBJGpBAjYCACADQgM3AhQgA0G4nsAANgIQIANBBjYCLCADIANBDGo2AjggA0GsjcAANgI8IAMgA0EoajYCICADIANBPGo2AjAgAyADQThqNgIoIANBEGpB4J7AABCQAQAL0QMCBX8CfiAAQdQAaiECIABBEGohAyAAQQhqKQMAIQYgACkDACEHAkACQCAAKAJQIgFBgAFGBEAgAyACQQEQDEEAIQEgAEEA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AXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACAAIAAoAgRBAXI2AgQgASACEBQMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgAEEEaigCACIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIABBBGogBCABQQFxckECcjYCACAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBAUCyAAQQhqIQMLIAMLiwMCBn8BfiMAQfAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaikDADcDACACQeAAaiIFIAFBIGopAwA3AwAgAkHoAGoiBiABQShqKQMANwMAIAIgASkDCDcDSCABKQMAIQggAkEIaiABQTRqEGUgASgCMCEHQfgAQQgQoQEiAUUEQEH4AEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAINwMAIAEgAikDSDcDCCABIAc2AjAgASACKQMINwI0IAFBEGogAykDADcDACABQRhqIAQpAwA3AwAgAUEgaiAFKQMANwMAIAFBKGogBikDADcDACABQTxqIAJBEGopAwA3AgAgAUHEAGogAkEYaikDADcCACABQcwAaiACQSBqKQMANwIAIAFB1ABqIAJBKGopAwA3AgAgAUHcAGogAkEwaikDADcCACABQeQAaiACQThqKQMANwIAIAFB7ABqIAJBQGspAwA3AgAgAEHgjMAANgIEIAAgATYCACACQfAAaiQAC4YDAQR/IwBBkAFrIgIkACACQYIBakIANwEAIAJBigFqQQA7AQAgAkEAOwF8IAJBADYBfiACQRA2AnggAkEgaiACQYABaikDADcDACACQShqIAJBiAFqKAIANgIAIAJBEGogAkEkaikCADcDACACIAIpA3g3AxggAiACKQIcNwMIIAJBGGogAUHgABCLARogAkEYaiACQQhqEF0CQAJAQRBBARChASIDBEAgAkIQNwIcIAIgAzYCGCACQRhqIAJBCGpBEBBeAkAgAigCHCIEIAIoAiAiA0YEQCAEIQMMAQsgBCADSQ0CIARFDQAgAigCGCEFAkAgA0UEQCAFEBBBASEEDAELIAUgBEEBIAMQmgEiBEUNBAsgAiADNgIcIAIgBDYCGAsgAigCGCEEIAEQ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QT8gBmsQkQEaQcAAIAAoAjBrQQdNBEAgBCADEAYgACgCMCICQcEATw0CIABBNGpBACACEJEBGgsgAEHsAGogB0IDhjcCACAEIAMQBiAAQQA2AjAgASAAKAIINgAAIAEgAEEMaigCADYABCABIABBEGooAgA2AAggASAAQRRqKAIANgAMIAEgAEEYaigCADYAECABIABBHGooAgA2ABQgASAAQSBqKAIANgAYIAEgAEEkaigCADYAHCABIABBKGooAgA2ACAgASAAQSxqKAIANgAkDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAvwAgIGfwF+IwBBEGsiBCQAIABBDGohBSAAQcwAaiEDIAApAwAhCAJAAkAgACgCCCICQcAARgRAIAMgBRAKQQAhAiAAQQA2AggMAQsgAkE/Sw0BCyAAQQhqIgYgAmpBBGpBgAE6AAAgACAAKAIIIgdBAWoiAjYCCAJAIAJBwQBJBEAgAiAGakEEakEAQT8gB2sQkQEaQcAAIAAoAghrQQdNBEAgAyAFEAogACgCCCICQcEATw0CIABBDGpBACACEJEBGgsgAEHEAGogCEIDhjcCACADIAUQCiAAQQA2AgggBEEIaiICIABB3ABqNgIEIAIgAzYCACAEKAIMIAQoAggiAGtBAnYiA0EEIANBBEkbIgIEQEEAIQMDQCABIAAoAgA2AAAgAEEEaiEAIAFBBGohASADQQFqIgMgAkkNAAsLIARBEGokAA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAAL1AIBAX8gABBUIAEgACgCTCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAAgASAAQdAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAQgASAAQdQAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAggASAAQdgAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AAwgASAAQdwAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABAgASAAQeAAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2ABQgASAAQeQAaigCACIAQRh0IABBCHRBgID8B3FyIABBCHZBgP4DcSAAQRh2cnI2ABgL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQeCQwAA2AgQgACABNgIAIAJB4ABqJAAL7AICBX8BfiMAQeAAayICJAAgASkDACEHIAJBIGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACQRBqIgQgAUHcAGopAgA3AwAgAkEYaiIFIAFB5ABqKQIANwMAIAIgASkCTDcDACABKAIIIQZB8ABBCBChASIBRQRAQfAAQQhBtKXAACgCACIAQQIgABsRAAAACyABIAY2AgggASAHNwMAIAEgAikDIDcCDCABQRRqIAJBKGopAwA3AgAgAUEcaiACQTBqKQMANwIAIAFBJGogAkE4aikDADcCACABQSxqIAJBQGspAwA3AgAgAUE0aiACQcgAaikDADcCACABQTxqIAJB0ABqKQMANwIAIAFBxABqIAJB2ABqKQMANwIAIAFB5ABqIAUpAwA3AgAgAUHcAGogBCkDADcCACABQdQAaiADKQMANwIAIAEgAikDADcCTCAAQYSRwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQYSNwAA2AgQgACABNgIAIAJB4ABqJAALyAICBH8BfiMAQeAAayICJAAgAkHQAGoiAyABQRBqKQMANwMAIAJB2ABqIgQgAUEYaigCADYCACACIAEpAwg3A0ggASkDACEGIAJBCGogAUEgahBlIAEoAhwhBUHgAEEIEKEBIgFFBEBB4ABBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgBjcDACABIAIpA0g3AwggASAFNgIcIAEgAikDCDcDICABQRBqIAMpAwA3AwAgAUEYaiAEKAIANgIAIAFBKGogAkEQaikDADcDACABQTBqIAJBGGopAwA3AwAgAUE4aiACQSBqKQMANwMAIAFBQGsgAkEoaikDADcDACABQcgAaiACQTBqKQMANwMAIAFB0ABqIAJBOGopAwA3AwAgAUHYAGogAkFAaykDADcDACAAQbCNwAA2AgQgACABNgIAIAJB4ABqJAAL3QICBX8BfiAAQQxqIQIgAEHMAGohAyAAKQMAIQYCQAJAIAAoAggiAUHAAEYEQCADIAJBARAEQQAhASAAQQA2AggMAQsgAUE/Sw0BCyAAQQhqIgQgAWpBBGpBgAE6AAAgACAAKAIIIgVBAWoiATYCCAJAIAFBwQBJBEAgASAEakEEakEAQT8gBWsQkQEaQcAAIAAoAghrQQdNBEAgAyACQQEQBCAAKAIIIgFBwQBPDQIgAEEMakEAIAEQkQEaCyAAQcQAaiAGQiiGQoCAgICAgMD/AIMgBkI4hoQgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcCACADIAJBARAEIABBADYCCA8LIAFBwABBgJrAABB+AAsgAUHAAEGQmsAAEH0ACyABQcAAQaCawAAQfAALvgICBX8BfiMAQTBrIgQkAEEnIQICQCAAQpDOAFQEQCAAIQcMAQsDQCAEQQlqIAJqIgNBfGogACAAQpDOAIAiB0LwsX9+fKciBUH//wNxQeQAbiIGQQF0QdqIwABqLwAAOwAAIANBfmogBkGcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAACACQXxqIQIgAEL/wdcvViAHIQANAAsLIAenIgNB4wBKBEAgAkF+aiICIARBCWpqIAenIgVB//8DcUHkAG4iA0Gcf2wgBWpB//8DcUEBdEHaiMAAai8AADsAAAsCQCADQQpOBEAgAkF+aiICIARBCWpqIANBAXRB2ojAAGovAAA7AAAMAQsgAkF/aiICIARBCWpqIANBMGo6AAALIAFByKDAAEEAIARBCWogAmpBJyACaxAYIARBMGokAAu/AgEDfyMAQRBrIgIkAAJAIAAoAgAiAAJ/AkAgAUGAAU8EQCACQQA2AgwgAUGAEEkNASABQYCABEkEQCACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAMLIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAwCCyAAKAIIIgMgAEEEaigCAEYEfyAAQQEQaiAAKAIIBSADCyAAKAIAaiABOgAAIAAgACgCCEEBajYCCAwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAgsiARBqIABBCGoiAygCACIEIAAoAgBqIAJBDGogARCLARogAyABIARqNgIACyACQRBqJABBAAvLAgEIfyMAQYABayIBQShqIgJCADcDACABQSBqIgNCADcDACABQRhqIgRCADcDACABQRBqIgVCADcDACABQQhqIgZCADcDACABQgA3AwAgAUHaAGpCADcBACABQeIAakEAOwEAIAFBEDYCUCABQQA7AVQgAUEANgFWIAFB+ABqIAFB4ABqKAIANgIAIAFB8ABqIAFB2ABqKQMANwMAIAFByABqIgcgAUH0AGopAgA3AwAgASABKQNQNwNoIAEgASkCbDcDQCABQThqIgggBykDADcDACABIAEpA0A3AzAgAEHMAGogCCkDADcAACAAQcQAaiABKQMwNwAAIABBPGogAikDADcAACAAQTRqIAMpAwA3AAAgAEEsaiAEKQMANwAAIABBJGogBSkDADcAACAAQRxqIAYpAwA3AAAgACABKQMANwAUIABBADYCAAuxAgEDfyMAQYABayIEJAAgACgCACEAAkACQAJ/AkAgASgCACIDQRBxRQRAIAAoAgAhAiADQSBxDQEgAq0gARBVDAILIAAoAgAhAkEAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0HXAGogA0EKSRs6AAAgAEF/aiEAIAJBBHYiAg0ACyAAQYABaiICQYEBTw0CIAFB2IvAAEECIAAgBGpBgAFqQQAgAGsQGAwBC0EAIQADQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPDQIgAUHYi8AAQQIgACAEakGAAWpBACAAaxAYCyAEQYABaiQADwsgAkGAAUHIi8AAEH4ACyACQYABQciLwAAQfgALrAICA38CfiAAIAApAwAiBiACrUIDhnwiBzcDACAAQQhqIgMgAykDACAHIAZUrXw3AwACQAJAQYABIAAoAlAiA2siBCACTQRAIABBEGoiBSADBEAgA0GBAU8NAiADIABB1ABqIgNqIAEgBBCLARogAEEANgJQIAUgA0EBEAwgAiAEayECIAEgBGohAQsgASACQQd2EAwgAkH/AHEiA0GBAU8NAiAAQdQAaiABIAJBgH9xaiADEIsBGiAAIAM2AlAPCwJAIAIgA2oiBCADTwRAIARBgAFLDQEgACADakHUAGogASACEIsBGiAAIAAoAlAgAmo2AlAPCyADIARB0JnAABB+AAsgBEGAAUHQmcAAEH0ACyADQYABQeCZwAAQfgALIANBgAFB8JnAABB9AAu8AgIFfwF+IABBIGohAyAAQQhqIQQgACkDACEHAkACQCAAKAIcIgJBwABGBEAgBCADEAdBACECIABBADYCHAwBCyACQT9LDQELIABBHGoiBSACakEEakGAAToAACAAIAAoAhwiBkEBaiICNgIcAkAgAkHBAEkEQCACIAVqQQRqQQBBPyAGaxCRARpBwAAgACgCHGtBB00EQCAEIAMQByAAKAIcIgJBwQBPDQIgAEEgakEAIAIQkQEaCyAAQdgAaiAHQgOGNwIAIAQgAxAHIABBADYCHCABIAAoAgg2AAAgASAAQQxqKAIANgAEIAEgAEEQaigCADYACCABIABBFGooAgA2AAwgASAAQRhqKAIANgAQDwsgAkHAAEGAmsAAEH4ACyACQcAAQZCawAAQfQALIAJBwABBoJrAABB8AAu1AgEDfyMAQRBrIgQkACAAKALIASICQccATQRAIAAgAmpBzAFqQQY6AAAgAkEBaiIDQcgARwRAIAAgA2pBzAFqQQBBxwAgAmsQkQEaC0EAIQIgAEEANgLIASAAQZMCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkHIAEcNAAsgABAOIAEgACkAADcAACABQThqIABBOGopAAA3AAAgAUEwaiAAQTBqKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGknsAAEHkAC7UCAQN/IwBBEGsiBCQAIAAoAsgBIgJBxwBNBEAgACACakHMAWpBAToAACACQQFqIgNByABHBEAgACADakHMAWpBAEHHACACaxCRARoLQQAhAiAAQQA2AsgBIABBkwJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQcgARw0ACyAAEA4gASAAKQAANwAAIAFBOGogAEE4aikAADcAACABQTBqIABBMGopAAA3AAAgAUEoaiAAQShqKQAANwAAIAFBIGogAEEgaikAADcAACABQRhqIABBGGopAAA3AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQeSdwAAQeQALswICBX8BfiAAQQxqIQMgAEHMAGohBCAAKQMAIQcCQAJAIAAoAggiAkHAAEYEQCAEIAMQDUEAIQIgAEEANgIIDAELIAJBP0sNAQsgAEEIaiIFIAJqQQRqQYABOgAAIAAgACgCCCIGQQFqIgI2AggCQCACQcEASQRAIAIgBWpBBGpBAEE/IAZrEJEBGkHAACAAKAIIa0EHTQRAIAQgAxANIAAoAggiAkHBAE8NAiAAQQxqQQAgAhCRARoLIABBxABqIAdCA4Y3AgAgBCADEA0gAEEANgIIIAEgACgCTDYAACABIABB0ABqKAIANgAEIAEgAEHUAGooAgA2AAggASAAQdgAaigCADYADA8LIAJBwABBgJrAABB+AAsgAkHAAEGQmsAAEH0ACyACQcAAQaCawAAQfAALhgIBBH8CQCAAQQRqKAIAIgYgAEEIaigCACIFayACTwRAIAAoAgAhBAwBCwJAAn8gAiAFaiIDIAVPBEBBACAGQQF0IgUgAyAFIANLGyIDQQggA0EISxsiA0EASA0BGgJAIAAoAgBBACAGGyIERQRAIANBARChASIEDQQMAQsgAyAGRg0DIAZFBEAgA0EBEKEBIgRFDQEMBAsgBCAGQQEgAxCaASIEDQMLQQEMAQtBAAsiBARAIAMgBEG0pcAAKAIAIgBBAiAAGxEAAAALEJsBAAsgACAENgIAIABBBGogAzYCACAAQQhqKAIAIQULIAQgBWogASACEIsBGiAAQQhqIAIgBWo2AgALjAIBA38gACAAKQMAIAKtQgOGfDcDAAJAAkBBwAAgACgCCCIDayIEIAJNBEAgAEHMAGoiBSADBEAgA0HBAE8NAiADIABBDGoiA2ogASAEEIsBGiAAQQA2AgggBSADQQEQBCACIARrIQIgASAEaiEBCyABIAJBBnYQBCACQT9xIgNBwQBPDQIgAEEMaiABIAJBQHFqIAMQiwEaIAAgAzYCCA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQQxqIAEgAhCLARogACAAKAIIIAJqNgIIDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEG8jMAANgIEIAAgATYCACACQdAAaiQAC4gCAQN/IAAgACkDACACrXw3AwACQAJAQcAAIAAoAhwiA2siBCACTQRAIABBCGoiBSADBEAgA0HBAE8NAiADIABBIGoiA2ogASAEEIsBGiAAQQA2AhwgBSADQQEQCCACIARrIQIgASAEaiEBCyABIAJBBnYQCCACQT9xIgNBwQBPDQIgAEEgaiABIAJBQHFqIAMQiwEaIAAgAzYCHA8LAkAgAiADaiIEIANPBEAgBEHAAEsNASAAIANqQSBqIAEgAhCLARogACAAKAIcIAJqNgIcDwsgAyAEQdCZwAAQfgALIARBwABB0JnAABB9AAsgA0HAAEHgmcAAEH4ACyADQcAAQfCZwAAQfQALqAICA38BfiMAQdAAayICJAAgASkDACEFIAJBEGogAUEMahBlIAJBCGoiAyABQdQAaikCADcDACACIAEpAkw3AwAgASgCCCEEQeAAQQgQoQEiAUUEQEHgAEEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASAENgIIIAEgBTcDACABIAIpAxA3AgwgAUEUaiACQRhqKQMANwIAIAFBHGogAkEgaikDADcCACABQSRqIAJBKGopAwA3AgAgAUEsaiACQTBqKQMANwIAIAFBNGogAkE4aikDADcCACABQTxqIAJBQGspAwA3AgAgAUHEAGogAkHIAGopAwA3AgAgAUHUAGogAykDADcCACABIAIpAwA3AkwgAEGokcAANgIEIAAgATYCACACQdAAaiQAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBBjoAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEGUnsAAEHkAC5UCAQN/IwBBEGsiBCQAIAAoAsgBIgJB5wBNBEAgACACakHMAWpBAToAACACQQFqIgNB6ABHBEAgACADakHMAWpBAEHnACACaxCRARoLQQAhAiAAQQA2AsgBIABBswJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQegARw0ACyAAEA4gASAAKQAANwAAIAFBKGogAEEoaikAADcAACABQSBqIABBIGopAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHUncAAEHkAC/MBAQR/IwBBkAFrIgIkACACQQA2AgAgAkEEciEFA0AgAyAFaiABIANqLQAAOgAAIAIgAigCAEEBaiIENgIAIANBAWoiA0HAAEcNAAsgBEE/TQRAIARBwAAQfwALIAJByABqIAJBxAAQiwEaIABBOGogAkGEAWopAgA3AAAgAEEwaiACQfwAaikCADcAACAAQShqIAJB9ABqKQIANwAAIABBIGogAkHsAGopAgA3AAAgAEEYaiACQeQAaikCADcAACAAQRBqIAJB3ABqKQIANwAAIABBCGogAkHUAGopAgA3AAAgACACKQJMNwAAIAJBkAFqJAAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGHAU0EQCAAIAJqQcwBakEBOgAAIAJBAWoiA0GIAUcEQCAAIANqQcwBakEAQYcBIAJrEJEBGgtBACECIABBADYCyAEgAEHTAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBiAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKQAANwAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEHEncAAEHkAC/UBAQN/IwBBEGsiBCQAIAAoAsgBIgJBhwFNBEAgACACakHMAWpBBjoAACACQQFqIgNBiAFHBEAgACADakHMAWpBAEGHASACaxCRARoLQQAhAiAAQQA2AsgBIABB0wJqIgMgAy0AAEGAAXI6AAADQCAAIAJqIgMgAy0AACADQcwBai0AAHM6AAAgAkEBaiICQYgBRw0ACyAAEA4gASAAKQAANwAAIAFBGGogAEEYaikAADcAACABQRBqIABBEGopAAA3AAAgAUEIaiAAQQhqKQAANwAAIARBEGokAA8LQbCawABBFyAEQQhqQciawABBhJ7AABB5AAv1AQEDfyMAQRBrIgQkACAAKALIASICQY8BTQRAIAAgAmpBzAFqQQE6AAAgAkEBaiIDQZABRwRAIAAgA2pBzAFqQQBBjwEgAmsQkQEaC0EAIQIgAEEANgLIASAAQdsCaiIDIAMtAABBgAFyOgAAA0AgACACaiIDIAMtAAAgA0HMAWotAABzOgAAIAJBAWoiAkGQAUcNAAsgABAOIAEgACkAADcAACABQRhqIABBGGooAAA2AAAgAUEQaiAAQRBqKQAANwAAIAFBCGogAEEIaikAADcAACAEQRBqJAAPC0GwmsAAQRcgBEEIakHImsAAQdiawAAQeQAL9QEBA38jAEEQayIEJAAgACgCyAEiAkGPAU0EQCAAIAJqQcwBakEGOgAAIAJBAWoiA0GQAUcEQCAAIANqQcwBakEAQY8BIAJrEJEBGgtBACECIABBADYCyAEgAEHbAmoiAyADLQAAQYABcjoAAANAIAAgAmoiAyADLQAAIANBzAFqLQAAczoAACACQQFqIgJBkAFHDQALIAAQDiABIAApAAA3AAAgAUEYaiAAQRhqKAAANgAAIAFBEGogAEEQaikAADcAACABQQhqIABBCGopAAA3AAAgBEEQaiQADwtBsJrAAEEXIARBCGpByJrAAEH0ncAAEHkAC8MBAQJ/AkACQCAAQQRqKAIAIgMgACgCCCICayABSQRAIAEgAmoiASACSQ0BIANBAXQiAiABIAIgAUsbIgFBCCABQQhLGyICQQBIDQECQCAAKAIAQQAgAxsiAUUEQCACQQEQoQEhAQwBCyACIANGDQAgA0UEQCACQQEQoQEhAQwBCyABIANBASACEJoBIQELIAFFDQIgACABNgIAIABBBGogAjYCAAsPCxCbAQALIAJBAUG0pcAAKAIAIgBBAiAAGxEAAAALhQEBBH8jAEGgAWsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQcgARw0ACyAEQccATQRAIARByAAQfwALIAJB0ABqIAJBzAAQiwEaIAAgAkHQAGpBBHJByAAQiwEaIAJBoAFqJAALhQEBBH8jAEGQAmsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQYABRw0ACyAEQf8ATQRAIARBgAEQfwALIAJBiAFqIAJBhAEQiwEaIAAgAkGIAWpBBHJBgAEQiwEaIAJBkAJqJAALhQEBBH8jAEHgAWsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQegARw0ACyAEQecATQRAIARB6AAQfwALIAJB8ABqIAJB7AAQiwEaIAAgAkHwAGpBBHJB6AAQiwEaIAJB4AFqJAALhQEBBH8jAEGgAmsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQYgBRw0ACyAEQYcBTQRAIARBiAEQfwALIAJBkAFqIAJBjAEQiwEaIAAgAkGQAWpBBHJBiAEQiwEaIAJBoAJqJAALhQEBBH8jAEGwAmsiAiQAIAJBADYCACACQQRyIQUDQCADIAVqIAEgA2otAAA6AAAgAiACKAIAQQFqIgQ2AgAgA0EBaiIDQZABRw0ACyAEQY8BTQRAIARBkAEQfwALIAJBmAFqIAJBlAEQiwEaIAAgAkGYAWpBBHJBkAEQiwEaIAJBsAJqJAALmQEBAn8jAEHgAmsiAiQAIAJBmAFqIAFByAEQiwEaIAJBCGogAUHMAWoQbyABKALIASEDQeACQQgQoQEiAUUEQEHgAkEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASACQZgBakHIARCLASIBIAM2AsgBIAFBzAFqIAJBCGpBkAEQiwEaIABBnI7AADYCBCAAIAE2AgAgAkHgAmokAAuZAQECfyMAQeACayICJAAgAkGYAWogAUHIARCLARogAkEIaiABQcwBahBvIAEoAsgBIQNB4AJBCBChASIBRQRAQeACQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBmAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkEIakGQARCLARogAEHQj8AANgIEIAAgATYCACACQeACaiQAC4IBAQF/IwBBMGsiAkEOaiABKAAKNgEAIAJBEmogAS8ADjsBACACIAEvAAA7AQQgAiABKQACNwEGIAJBEDYCACACQSBqIAJBCGopAwA3AwAgAkEoaiACQRBqKAIANgIAIAIgAikDADcDGCAAIAIpAhw3AAAgAEEIaiACQSRqKQIANwAAC5MBAQJ/IwBBkAJrIgIkACACQcgAaiABQcgBEIsBGiACIAFBzAFqEGsgASgCyAEhA0GYAkEIEKEBIgFFBEBBmAJBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgAkHIAGpByAEQiwEiASADNgLIASABQcwBaiACQcgAEIsBGiAAQdSNwAA2AgQgACABNgIAIAJBkAJqJAALkwEBAn8jAEGwAmsiAiQAIAJB6ABqIAFByAEQiwEaIAIgAUHMAWoQbSABKALIASEDQbgCQQgQoQEiAUUEQEG4AkEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASACQegAakHIARCLASIBIAM2AsgBIAFBzAFqIAJB6AAQiwEaIABB+I3AADYCBCAAIAE2AgAgAkGwAmokAAuTAQECfyMAQdACayICJAAgAkGIAWogAUHIARCLARogAiABQcwBahBuIAEoAsgBIQNB2AJBCBChASIBRQRAQdgCQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBiAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkGIARCLARogAEHAjsAANgIEIAAgATYCACACQdACaiQAC5MBAQJ/IwBBsAJrIgIkACACQegAaiABQcgBEIsBGiACIAFBzAFqEG0gASgCyAEhA0G4AkEIEKEBIgFFBEBBuAJBCEG0pcAAKAIAIgBBAiAAGxEAAAALIAEgAkHoAGpByAEQiwEiASADNgLIASABQcwBaiACQegAEIsBGiAAQeSOwAA2AgQgACABNgIAIAJBsAJqJAALkwEBAn8jAEGQAmsiAiQAIAJByABqIAFByAEQiwEaIAIgAUHMAWoQayABKALIASEDQZgCQQgQoQEiAUUEQEGYAkEIQbSlwAAoAgAiAEECIAAbEQAAAAsgASACQcgAakHIARCLASIBIAM2AsgBIAFBzAFqIAJByAAQiwEaIABBiI/AADYCBCAAIAE2AgAgAkGQAmokAAuTAQECfyMAQdACayICJAAgAkGIAWogAUHIARCLARogAiABQcwBahBuIAEoAsgBIQNB2AJBCBChASIBRQRAQdgCQQhBtKXAACgCACIAQQIgABsRAAAACyABIAJBiAFqQcgBEIsBIgEgAzYCyAEgAUHMAWogAkGIARCLARogAEGsj8AANgIEIAAgATYCACACQdACaiQAC34BAX8jAEFAaiIFJAAgBSABNgIMIAUgADYCCCAFIAM2AhQgBSACNgIQIAVBLGpBAjYCACAFQTxqQQQ2AgAgBUICNwIcIAVB8IvAADYCGCAFQQE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJABAAuVAQAgAEIANwMIIABCADcDACAAQQA2AlAgAEGQmcAAKQMANwMQIABBGGpBmJnAACkDADcDACAAQSBqQaCZwAApAwA3AwAgAEEoakGomcAAKQMANwMAIABBMGpBsJnAACkDADcDACAAQThqQbiZwAApAwA3AwAgAEFAa0HAmcAAKQMANwMAIABByABqQciZwAApAwA3AwALlQEAIABCADcDCCAAQgA3AwAgAEEANgJQIABB0JjAACkDADcDECAAQRhqQdiYwAApAwA3AwAgAEEgakHgmMAAKQMANwMAIABBKGpB6JjAACkDADcDACAAQTBqQfCYwAApAwA3AwAgAEE4akH4mMAAKQMANwMAIABBQGtBgJnAACkDADcDACAAQcgAakGImcAAKQMANwMAC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEFNgIAIANCAjcCDCADQYiIwAA2AgggA0EFNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCQAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQU2AgAgA0ICNwIMIANBpIrAADYCCCADQQU2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJABAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBBTYCACADQgI3AgwgA0HcisAANgIIIANBBTYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkAEAC3ABAX8jAEEwayICJAAgAiABNgIEIAIgADYCACACQRxqQQI2AgAgAkEsakEFNgIAIAJCAjcCDCACQcyRwAA2AgggAkEFNgIkIAIgAkEgajYCGCACIAJBBGo2AiggAiACNgIgIAJBCGpB3JHAABCQAQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEBYgAkEgaiQAC30BAn9BASEAQeChwABB4KHAACgCAEEBajYCAAJAAkBBqKXAACgCAEEBRwRAQailwABCgYCAgBA3AwAMAQtBrKXAAEGspcAAKAIAQQFqIgA2AgAgAEECSw0BC0GwpcAAKAIAIgFBf0wNAEGwpcAAIAE2AgAgAEEBSw0AAAsAC2ICAX8BfiMAQRBrIgIkAAJAIAEEQCABKAIADQEgAUF/NgIAIAJBCGogASgCBCABQQhqKAIAKAIQEQAAIAIpAwghAyABQQA2AgAgACADNwIAIAJBEGokAA8LEJ0BAAsQngEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSwECfwJAIAAEQCAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgABAQIAEgAigCABEEACACKAIEBEAgARAQCw8LEJ0BAAsQngEAC0gAAkAgAARAIAAoAgANASAAQX82AgAgACgCBCABIAIgAEEIaigCACgCDBECACACBEAgARAQCyAAQQA2AgAPCxCdAQALEJ4BAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQEADQEaCyACRQRAQQAPCyAAKAIYIAIgAyAAQRxqKAIAKAIMEQMACwtdACAAQgA3AwAgAEEANgIwIABB0JfAACkDADcDCCAAQRBqQdiXwAApAwA3AwAgAEEYakHgl8AAKQMANwMAIABBIGpB6JfAACkDADcDACAAQShqQfCXwAApAwA3AwALSAEBfyMAQSBrIgMkACADQRRqQQA2AgAgA0HIoMAANgIQIANCATcCBCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQkAEAC1AAIABBADYCCCAAQgA3AwAgAEGsmMAAKQIANwJMIABB1ABqQbSYwAApAgA3AgAgAEHcAGpBvJjAACkCADcCACAAQeQAakHEmMAAKQIANwIAC1AAIABBADYCCCAAQgA3AwAgAEGMmMAAKQIANwJMIABB1ABqQZSYwAApAgA3AgAgAEHcAGpBnJjAACkCADcCACAAQeQAakGkmMAAKQIANwIACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQEgA0EBaiEDIAJBf2oiAg0ACwsgAAs1AQJ/IAAoAgAiACACEGogAEEIaiIDKAIAIgQgACgCAGogASACEIsBGiADIAIgBGo2AgBBAAsrAAJAIABBfEsNACAARQRAQQQPCyAAIABBfUlBAnQQoQEiAEUNACAADwsACz0AIABCADcDACAAQQA2AhwgAEH4l8AAKQMANwMIIABBEGpBgJjAACkDADcDACAAQRhqQYiYwAAoAgA2AgALPQAgAEEANgIcIABCADcDACAAQRhqQYiYwAAoAgA2AgAgAEEQakGAmMAAKQMANwMAIABB+JfAACkDADcDCAtMAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkGYiMAANgIEIAJByKDAADYCACACKAIIRQRAQZ2gwABBK0HIoMAAEIgBAAsQgQEACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkF/aiICDQALCyAACy4AIABBADYCCCAAQgA3AwAgAEHUAGpByJfAACkCADcCACAAQcCXwAApAgA3AkwLIAACQCABQXxLDQAgACABQQQgAhCaASIARQ0AIAAPCwALHAAgASgCGEH/h8AAQQggAUEcaigCACgCDBEDAAscACABKAIYQYKMwABBBSABQRxqKAIAKAIMEQMACxQAIAAoAgAgASAAKAIEKAIMEQEACxAAIAEgACgCACAAKAIEEBILEgAgAEEAQcgBEJEBQQA2AsgBCwsAIAEEQCAAEBALCwwAIAAgASACIAMQFwsSAEHEhsAAQRFB2IbAABCIAQALDgAgACgCABoDQAwACwALDQBB76DAAEEbEKABAAsOAEGKocAAQc8AEKABAAsLACAANQIAIAEQVQsJACAAIAEQAQALGQACfyABQQlPBEAgASAAEEYMAQsgABAJCwsNAEKtqduM/5imovgACwQAQRALBABBKAsEAEEUCwUAQcAACwQA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AAAvaG9tZS9sdWNhY2Fzb25hdG8vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmxvY2stYnVmZmVyLTAuOS4wL3NyYy9saWIucnMvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzAGgNEABYAAAASAAAAAEAAABoDRAAWAAAAE8AAAABAAAAaA0QAFgAAABWAAAAAQAAAGgNEABYAAAAZgAAAAEAAABoDRAAWAAAAG0AAAABAAAAaA0QAFgAAAB0AAAAAQAAAGgNEABYAAAAewAAAAEAAACQAAAA5A8QAC0AAAAREBAADAAAAFAPEAABAAAAYAAAAIgAAABoAAAASAAAAHAPEAB0AAAAEAAAAAkAAAAvaG9tZS9sdWNhY2Fzb25hdG8vLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYmNvcmUvbWFjcm9zL21vZC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGAobGVmdCA9PSByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVYEBAAFwAAALQBAAAeAAAAc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ2LjAgKDA0NDg4YWZlMyAyMDIwLTA4LTI0KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNjggKGEwNGUxODk3MSk="); +let wasm; + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let WASM_VECTOR_LEN = 0; + +let cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** +* @param {string} algorithm +* @returns {DenoHash} +*/ +export function create_hash(algorithm) { + var ptr0 = passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ret = wasm.create_hash(ptr0, len0); + return DenoHash.__wrap(ret); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +/** +* @param {DenoHash} hash +* @param {Uint8Array} data +*/ +export function update_hash(hash, data) { + _assertClass(hash, DenoHash); + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.update_hash(hash.ptr, ptr0, len0); +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} + +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +/** +* @param {DenoHash} hash +* @returns {Uint8Array} +*/ +export function digest_hash(hash) { + try { + const retptr = wasm.__wbindgen_export_2.value - 16; + wasm.__wbindgen_export_2.value = retptr; + _assertClass(hash, DenoHash); + wasm.digest_hash(retptr, hash.ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally { + wasm.__wbindgen_export_2.value += 16; + } +} + +/** +*/ +export class DenoHash { + + static __wrap(ptr) { + const obj = Object.create(DenoHash.prototype); + obj.ptr = ptr; + + return obj; + } + + free() { + const ptr = this.ptr; + this.ptr = 0; + + wasm.__wbg_denohash_free(ptr); + } +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +async function init(input) { + if (typeof input === 'undefined') { + input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); + }; + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + const { instance, module } = await load(await input, imports); + + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + + return wasm; +} + +export default init; + diff --git a/bundler/tests/.cache/deno/eaa2d6eea1656f58e38f12d3539f969b17b7c96b.ts b/bundler/tests/.cache/deno/eaa2d6eea1656f58e38f12d3539f969b17b7c96b.ts new file mode 100644 index 00000000000..ba803327a5c --- /dev/null +++ b/bundler/tests/.cache/deno/eaa2d6eea1656f58e38f12d3539f969b17b7c96b.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/x/oak/async_iterable_reader.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import { copyBytes } from "./deps.ts"; + +export class AsyncIterableReader implements Deno.Reader { + #asyncIterator: AsyncIterator; + #closed = false; + #current: Uint8Array | undefined; + #processValue: (value: T) => Uint8Array; + + constructor( + asyncIterable: AsyncIterable, + processValue: (value: T) => Uint8Array, + ) { + this.#asyncIterator = asyncIterable[Symbol.asyncIterator](); + this.#processValue = processValue; + } + + #close = () => { + if (this.#asyncIterator.return) { + this.#asyncIterator.return(); + } + // deno-lint-ignore no-explicit-any + (this as any).#asyncIterator = undefined; + this.#closed = true; + }; + + async read(p: Uint8Array): Promise { + if (this.#closed) { + return null; + } + if (p.byteLength === 0) { + this.#close(); + return 0; + } + if (!this.#current) { + const { value, done } = await this.#asyncIterator.next(); + if (done) { + this.#close(); + } + if (value !== undefined) { + this.#current = this.#processValue(value); + } + } + if (!this.#current) { + if (!this.#closed) { + this.#close(); + } + return null; + } + const len = copyBytes(this.#current, p); + if (len >= this.#current.byteLength) { + this.#current = undefined; + } else { + this.#current = this.#current.slice(len); + } + return len; + } +} diff --git a/bundler/tests/.cache/deno/eaa7bd40c129dcc02ba34363a825753f3d3ec09c.ts b/bundler/tests/.cache/deno/eaa7bd40c129dcc02ba34363a825753f3d3ec09c.ts new file mode 100644 index 00000000000..af4758b6084 --- /dev/null +++ b/bundler/tests/.cache/deno/eaa7bd40c129dcc02ba34363a825753f3d3ec09c.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/oak/helpers.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +import type { Context } from "./context.ts"; +import type { RouterContext } from "./router.ts"; + +function isRouterContext(value: Context): value is RouterContext { + return "params" in value; +} + +interface GetQueryOptionsBase { + /** The return value should be a `Map` instead of a record object. */ + asMap?: boolean; + + /** Merge in the context's `.params`. This only works when a `RouterContext` + * is passed. */ + mergeParams?: boolean; +} + +interface GetQueryOptionsAsMap extends GetQueryOptionsBase { + /** The return value should be a `Map` instead of a record object. */ + asMap: true; +} + +export type GetParamsOptions = GetQueryOptionsBase | GetQueryOptionsAsMap; + +/** Given a context, return the `.request.url.searchParams` as a `Map` of keys + * and values of the params. */ +export function getQuery( + ctx: Context | RouterContext, + options: GetQueryOptionsAsMap, +): Map; +/** Given a context, return the `.request.url.searchParams` as a record object + * of keys and values of the params. */ +export function getQuery( + ctx: Context | RouterContext, + options?: GetQueryOptionsBase, +): Record; +export function getQuery( + ctx: Context | RouterContext, + { mergeParams, asMap }: GetParamsOptions = {}, +): Map | Record { + const result: Record = {}; + if (mergeParams && isRouterContext(ctx)) { + Object.assign(result, ctx.params); + } + for (const [key, value] of ctx.request.url.searchParams) { + result[key] = value; + } + return asMap ? new Map(Object.entries(result)) : result; +} diff --git a/bundler/tests/.cache/deno/eaad61e44f7f9751276af72e4b7bc23f83950609.ts b/bundler/tests/.cache/deno/eaad61e44f7f9751276af72e4b7bc23f83950609.ts new file mode 100644 index 00000000000..3f2a22c24de --- /dev/null +++ b/bundler/tests/.cache/deno/eaad61e44f7f9751276af72e4b7bc23f83950609.ts @@ -0,0 +1,675 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/dnit.ts + + +import { flags, path, log, fs, hash } from "./deps.ts"; +import { version } from "./version.ts"; + +import { textTable } from "./textTable.ts"; + +import type * as A from "./adl-gen/dnit/manifest.ts"; +import { Manifest, TaskManifest } from "./manifest.ts"; + +import {AsyncQueue} from './asyncQueue.ts'; + +class ExecContext { + /// All tasks by name + taskRegister = new Map(); + + /// Tasks by target + targetRegister = new Map(); + + /// Done or up-to-date tasks + doneTasks = new Set(); + + /// In progress tasks + inprogressTasks = new Set(); + + /// Queue for scheduling async work with specified number allowable concurrently. + asyncQueue : AsyncQueue; + + internalLogger = log.getLogger("internal"); + taskLogger = log.getLogger("task"); + userLogger = log.getLogger("user"); + + constructor( + /// loaded hash manifest + readonly manifest: Manifest, + /// commandline args + readonly args: flags.Args, + ) { + if (args["verbose"] !== undefined) { + this.internalLogger.levelName = "INFO"; + } + + const concurrency = args["concurrency"] || 4; + this.asyncQueue = new AsyncQueue(concurrency); + + this.internalLogger.info(`Starting ExecContext version: ${version}`); + } + + getTaskByName(name: A.TaskName): Task | undefined { + return this.taskRegister.get(name); + } +} + +export interface TaskContext { + logger: log.Logger; + task: Task; + args: flags.Args; +} + +function taskContext(ctx: ExecContext, task: Task): TaskContext { + return { + logger: ctx.taskLogger, + task, + args: ctx.args, + }; +} + +export type Action = (ctx: TaskContext) => Promise | void; + +export type IsUpToDate = (ctx: TaskContext) => Promise | boolean; +export type GetFileHash = ( + filename: A.TrackedFileName, + stat: Deno.FileInfo +) => Promise | A.TrackedFileHash; +export type GetFileTimestamp = ( + filename: A.TrackedFileName, + stat: Deno.FileInfo +) => Promise | A.Timestamp; + +/** User definition of a task */ +export type TaskParams = { + /// Name: (string) - The key used to initiate a task + name: A.TaskName; + + /// Description (string) - Freeform text description shown on help + description?: string; + + /// Action executed on execution of the task (async or sync) + action: Action; + + /// Optional list of task or file dependencies + deps?: (Task | TrackedFile | TrackedFilesAsync)[] + + /// Targets (files which will be produced by execution of this task) + targets?: TrackedFile[]; + + /// Custom up-to-date definition - Can be used to make a task *less* up to date. Eg; use uptodate: runAlways to run always on request regardless of dependencies being up to date. + uptodate?: IsUpToDate; +}; + +/// Convenience function: an up to date always false to run always +export const runAlways: IsUpToDate = async () => false; + +function isTask(dep: Task | TrackedFile | TrackedFilesAsync): dep is Task { + return dep instanceof Task; +} +function isTrackedFile(dep: Task | TrackedFile | TrackedFilesAsync): dep is TrackedFile { + return dep instanceof TrackedFile; +} +function isTrackedFileAsync(dep: Task | TrackedFile | TrackedFilesAsync): dep is TrackedFilesAsync { + return dep instanceof TrackedFilesAsync; +} + +type StatResult = +| { + kind: 'fileInfo', + fileInfo: Deno.FileInfo +} +| { + kind: 'nonExistent' +} + +async function statPath(path: A.TrackedFileName) : Promise { + try { + const fileInfo = await Deno.stat(path); + return { + kind:'fileInfo', + fileInfo + }; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return { + kind:'nonExistent' + }; + } + throw err; + } +} + +export class Task { + public name: A.TaskName; + public description?: string; + public action: Action; + public task_deps: Set; + public file_deps: Set; + public async_files_deps: Set; + public targets: Set; + + public taskManifest: TaskManifest | null = null; + public uptodate?: IsUpToDate; + + constructor(taskParams: TaskParams) { + this.name = taskParams.name; + this.action = taskParams.action; + this.description = taskParams.description; + this.task_deps = new Set( + this.getTaskDeps(taskParams.deps || []), + ); + this.file_deps = new Set( + this.getTrackedFiles(taskParams.deps || []), + ); + this.async_files_deps = new Set( + this.getTrackedFilesAsync(taskParams.deps || []), + ); + this.targets = new Set(taskParams.targets || []); + this.uptodate = taskParams.uptodate; + + for(const f of this.targets) { + f.setTask(this); + } + } + + private getTaskDeps( + deps: (Task | TrackedFile | TrackedFilesAsync)[], + ): Task[] { + return deps.filter(isTask); + } + private getTrackedFiles( + deps: (Task | TrackedFile | TrackedFilesAsync)[], + ): TrackedFile[] { + return deps.filter(isTrackedFile); + } + private getTrackedFilesAsync( + deps: (Task | TrackedFile | TrackedFilesAsync)[], + ): TrackedFilesAsync[] { + return deps.filter(isTrackedFileAsync); + } + + async setup(ctx: ExecContext): Promise { + if(this.taskManifest === null) { + for (const t of this.targets) { + ctx.targetRegister.set(t.path, this); + } + + this.taskManifest = ctx.manifest.tasks.getOrInsert( + this.name, + new TaskManifest({ + lastExecution: null, + trackedFiles: [], + }), + ); + + // ensure preceding tasks are setup too + for(const taskDep of this.task_deps) { + await taskDep.setup(ctx); + } + for(const fDep of this.file_deps) { + const fDepTask = fDep.getTask(); + if(fDepTask !== null) { + await fDepTask.setup(ctx); + } + } + } + } + + async exec(ctx: ExecContext): Promise { + if (ctx.doneTasks.has(this)) { + return; + } + if (ctx.inprogressTasks.has(this)) { + return; + } + + ctx.inprogressTasks.add(this); + + // evaluate async file_deps (useful if task depends on a glob of the filesystem) + for (const afd of this.async_files_deps) { + const file_deps = await afd.getTrackedFiles(); + for(const fd of file_deps) { + this.file_deps.add(fd) + } + } + + // add task dep on the task that makes the file if its a target + for (const fd of this.file_deps) { + const t = ctx.targetRegister.get(fd.path); + if (t !== undefined) { + this.task_deps.add(t); + } + } + + await this.execDependencies(ctx); + + let actualUpToDate = true; + + actualUpToDate = actualUpToDate && await this.checkFileDeps(ctx); + ctx.internalLogger.info(`${this.name} checkFileDeps ${actualUpToDate}`); + + actualUpToDate = actualUpToDate && await this.targetsExist(ctx); + ctx.internalLogger.info(`${this.name} targetsExist ${actualUpToDate}`); + + if (this.uptodate !== undefined) { + actualUpToDate = actualUpToDate && + await this.uptodate(taskContext(ctx, this)); + } + ctx.internalLogger.info(`${this.name} uptodate ${actualUpToDate}`); + + if (actualUpToDate) { + ctx.taskLogger.info(`--- ${this.name}`); + } else { + ctx.taskLogger.info(`... ${this.name}`); + await this.action(taskContext(ctx, this)); + ctx.taskLogger.info(`=== ${this.name}`); + + { + /// recalc & save data of deps: + this.taskManifest?.setExecutionTimestamp(); + let promisesInProgress: Promise[] = []; + for (const fdep of this.file_deps) { + promisesInProgress.push( + ctx.asyncQueue.schedule( async ()=>{ + const trackedFileData = await fdep.getFileData(ctx) + this.taskManifest?.setFileData(fdep.path, trackedFileData); + }) + ); + } + await Promise.all(promisesInProgress); + } + } + + ctx.doneTasks.add(this); + ctx.inprogressTasks.delete(this); + } + + private async targetsExist(ctx: ExecContext): Promise { + const tex = await Promise.all( + Array.from(this.targets).map(async (tf) => ctx.asyncQueue.schedule(()=> + tf.exists() + )) + ); + // all exist: NOT some NOT exist + return !tex.some((t) => !t); + } + + private async checkFileDeps(ctx: ExecContext): Promise { + let fileDepsUpToDate = true; + let promisesInProgress: Promise[] = []; + + const taskManifest = this.taskManifest; + if (taskManifest === null) { + throw new Error(`Invalid null taskManifest on ${this.name}`); + } + + for (const fdep of this.file_deps) { + promisesInProgress.push( + ctx.asyncQueue.schedule(async ()=>{ + const r = await fdep.getFileDataOrCached( + ctx, + taskManifest.getFileData(fdep.path), + ); + taskManifest.setFileData(fdep.path, r.tData); + fileDepsUpToDate = fileDepsUpToDate && r.upToDate; + }) + ); + } + await Promise.all(promisesInProgress); + promisesInProgress = []; + return fileDepsUpToDate; + } + + private async execDependencies(ctx: ExecContext) { + for (const dep of this.task_deps) { + if (!ctx.doneTasks.has(dep) && !ctx.inprogressTasks.has(dep)) { + await dep.exec(ctx) + } + } + } +} + +export class TrackedFile { + path: A.TrackedFileName = ""; + #getHash: GetFileHash; + #getTimestamp: GetFileTimestamp; + + fromTask: Task|null = null; + + constructor(fileParams: FileParams) { + this.path = path.posix.resolve(fileParams.path); + this.#getHash = fileParams.getHash || getFileSha1Sum; + this.#getTimestamp = fileParams.getTimestamp || getFileTimestamp; + } + + private async stat() : Promise { + log.getLogger('internal').info(`checking file ${this.path}`); + return await statPath(this.path); + } + + async exists(statInput?: StatResult) : Promise { + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + return statResult.kind === 'fileInfo'; + } + + async getHash(statInput?: StatResult) { + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + if(statResult.kind !== 'fileInfo') { + return ""; + } + + log.getLogger('internal').info(`checking hash on ${this.path}`); + return this.#getHash(this.path, statResult.fileInfo); + } + + async getTimestamp(statInput?: StatResult) { + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + if(statResult.kind !== 'fileInfo') { + return ""; + } + return this.#getTimestamp(this.path, statResult.fileInfo); + } + + /// whether this is up to date w.r.t. the given TrackedFileData + async isUpToDate( + ctx: ExecContext, + tData: A.TrackedFileData | undefined, + statInput?: StatResult + ): Promise { + if (tData === undefined) { + return false; + } + + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + + const mtime = await this.getTimestamp(statResult); + if (mtime === tData.timestamp) { + return true; + } + const hash = await this.getHash(statResult); + return hash === tData.hash; + } + + /// Recalculate timestamp and hash data + async getFileData(ctx: ExecContext, statInput?: StatResult): Promise { + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + return { + hash: await this.getHash(statResult), + timestamp: await this.getTimestamp(statResult), + }; + } + + /// return given tData if up to date or re-calculate + async getFileDataOrCached( + ctx: ExecContext, + tData: A.TrackedFileData | undefined, + statInput?:StatResult + ): Promise<{ + tData: A.TrackedFileData; + upToDate: boolean; + }> { + let statResult = statInput; + if(statResult === undefined) { + statResult = await this.stat(); + } + + if (tData !== undefined && await this.isUpToDate(ctx, tData, statResult)) { + return { + tData, + upToDate: true, + }; + } + return { + tData: await this.getFileData(ctx, statResult), + upToDate: false, + }; + } + + setTask(t: Task) { + if(this.fromTask === null) { + this.fromTask = t; + } + else { + throw new Error("Duplicate tasks generating TrackedFile as target - " + this.path); + } + } + + getTask() : Task|null { + return this.fromTask; + } +} + +export type GenTrackedFiles = ()=>Promise|TrackedFile[]; + +export class TrackedFilesAsync { + kind: 'trackedfilesasync' = 'trackedfilesasync'; + + constructor(public gen: GenTrackedFiles) { + } + + async getTrackedFiles() : Promise { + return this.gen(); + } +} + +export async function getFileSha1Sum( + filename: string, +): Promise { + const data = await Deno.readFile(filename); + const hashsha1 = hash.createHash("sha1"); + hashsha1.update(data); + const hashInHex = hashsha1.toString(); + return hashInHex; +} + +export async function getFileTimestamp(filename: string, stat: Deno.FileInfo): Promise { + const mtime = stat.mtime; + return mtime?.toISOString() || ""; +} + +/** User params for a tracked file */ +export type FileParams = { + /// File path + path: string; + + /// Optional function for how to hash the file. Defaults to the sha1 hash of the file contents. + /// A file is out of date if the file timestamp and the hash are different than that in the task manifest + getHash?: GetFileHash; + + /// Optional function for how to get the file timestamp. Defaults to the actual file timestamp + getTimestamp?: GetFileTimestamp; +}; + +/** Generate a trackedfile for tracking */ +export function file(fileParams: FileParams | string): TrackedFile { + if (typeof fileParams === "string") { + return new TrackedFile({ path: fileParams }); + } + return new TrackedFile(fileParams); +} +export function trackFile(fileParams: FileParams | string): TrackedFile { + return file(fileParams); +} + +export function asyncFiles(gen: GenTrackedFiles) : TrackedFilesAsync { + return new TrackedFilesAsync(gen); +} + +/** Generate a task */ +export function task(taskParams: TaskParams): Task { + const task = new Task(taskParams); + return task; +} + +function showTaskList(ctx: ExecContext) { + console.log( + textTable( + ["Name", "Description"], + Array.from(ctx.taskRegister.values()).map((t) => ([ + t.name, + t.description || "", + ])), + ), + ); +} + +/// StdErr plaintext handler (no color codes) +class StdErrPlainHandler extends log.handlers.BaseHandler { + + constructor(levelName: log.LevelName) { + super(levelName, { + formatter: "{msg}" + }) + } + + log(msg: string): void { + Deno.stderr.writeSync(new TextEncoder().encode(msg + "\n")); + } +} + +/// StdErr handler on top of ConsoleHandler (which uses colors) +class StdErrHandler extends log.handlers.ConsoleHandler { + log(msg: string): void { + Deno.stderr.writeSync(new TextEncoder().encode(msg + "\n")); + } +} + +export async function setupLogging() { + await log.setup({ + handlers: { + stderr: new StdErrHandler("DEBUG"), + stderrPlain: new StdErrPlainHandler("DEBUG"), + }, + + loggers: { + // internals of dnit tooling + internal: { + level: "WARNING", + handlers: ["stderrPlain"], + }, + + // basic events eg start of task or task already up to date + task: { + level: "INFO", + handlers: ["stderrPlain"], + }, + + // for user to use within task actions + user: { + level: "INFO", + handlers: ["stderrPlain"], + }, + }, + }); +} + +/** Convenience access to a setup logger for tasks */ +export function getLogger(): log.Logger { + return log.getLogger("user"); +} + +export type ExecResult = { + success: boolean; +}; + +/** Execute given commandline args and array of items (task & trackedfile) */ +export async function execCli( + cliArgs: string[], + tasks: Task[], +): Promise { + const args = flags.parse(cliArgs); + + await setupLogging(); + + /// directory of user's entrypoint source as discovered by 'launch' util: + const dnitDir = args["dnitDir"] || "./dnit"; + delete args["dnitDir"]; + + const ctx = new ExecContext(new Manifest(dnitDir), args); + + /// register tasks as provided by user's source: + tasks.forEach((t) => ctx.taskRegister.set(t.name, t)); + + let requestedTaskName: string | null = null; + const positionalArgs = args["_"]; + if (positionalArgs.length > 0) { + requestedTaskName = `${positionalArgs[0]}`; + } + + if (requestedTaskName === null) { + ctx.taskLogger.error("No task name given"); + showTaskList(ctx); + return { success: false }; + } + + if (requestedTaskName === "list") { + showTaskList(ctx); + return { success: true }; + } + + try { + /// Load manifest (dependency tracking data) + await ctx.manifest.load(); + + /// Run async setup on all tasks: + await Promise.all( + Array.from(ctx.taskRegister.values()).map((t) => + ctx.asyncQueue.schedule(()=>t.setup(ctx)) + ) + ); + + /// Find the requested task: + const requestedTask = ctx.taskRegister.get(requestedTaskName); + if (requestedTask !== undefined) { + /// Execute the requested task: + await requestedTask.exec(ctx); + } else { + ctx.taskLogger.error(`Task ${requestedTaskName} not found`); + } + + /// Save manifest (dependency tracking data) + await ctx.manifest.save(); + + return { success: true }; + } catch (err) { + ctx.taskLogger.error("Error", err); + throw err; + } +} + +/// No-frills setup of an ExecContext (mainly for testing) +export async function execBasic( + cliArgs: string[], + tasks: Task[], + manifest: Manifest, +): Promise { + const args = flags.parse(cliArgs); + const ctx = new ExecContext(manifest, args); + tasks.forEach((t) => ctx.taskRegister.set(t.name, t)); + await Promise.all( + Array.from(ctx.taskRegister.values()).map((t) => ctx.asyncQueue.schedule(()=>t.setup(ctx))), + ); + return ctx; +} + +/// Original name 'exec' for execCli +export async function exec( + cliArgs: string[], + tasks: Task[], +): Promise { + return execCli(cliArgs, tasks); +} diff --git a/bundler/tests/.cache/deno/eae50acd6710f077e24ca6d09970d763c25e5dce.ts b/bundler/tests/.cache/deno/eae50acd6710f077e24ca6d09970d763c25e5dce.ts new file mode 100644 index 00000000000..fd6de734554 --- /dev/null +++ b/bundler/tests/.cache/deno/eae50acd6710f077e24ca6d09970d763c25e5dce.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xfindIndex.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XFindIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.found = false; +} +XFindIndex.prototype['@@transducer/init'] = _xfBase.init; +XFindIndex.prototype['@@transducer/result'] = function(result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, -1); + } + return this.xf['@@transducer/result'](result); +}; +XFindIndex.prototype['@@transducer/step'] = function(result, input) { + this.idx += 1; + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, this.idx)); + } + return result; +}; + +var _xfindIndex = _curry2(function _xfindIndex(f, xf) { return new XFindIndex(f, xf); }); +export default _xfindIndex; diff --git a/bundler/tests/.cache/deno/eb03e15cfa5da6261e350adb534008c26a438522.ts b/bundler/tests/.cache/deno/eb03e15cfa5da6261e350adb534008c26a438522.ts new file mode 100644 index 00000000000..8589896bff3 --- /dev/null +++ b/bundler/tests/.cache/deno/eb03e15cfa5da6261e350adb534008c26a438522.ts @@ -0,0 +1,138 @@ +// Loaded from https://deno.land/x/args@1.0.7/wrapper.ts + + +import { + ParseError, + FlagType, +} from "./types.ts"; + +import { + iterateArguments, +} from "./utils.ts"; + +import { + BLANK, + Command, + Describe, + FlaggedCommand, + SubCommand, + MergeCommand, + CommandReturn, + FlaggedCommandReturn, + SubCommandReturn, + ParseFailure, +} from "./command-types.ts"; + +import help from "./help.ts"; + +type ParseResult< + Main extends CommandReturn, + ErrList extends readonly ParseError[], +> = Main | ParseFailure; + +/** + * @template MainVal Type of value of current pipeline + * @template Main Type of command parser of current pipeline + * @template ErrList Possible type of list of errors of current pipeline + */ +class Wrapper< + MainVal, + Main extends CommandReturn, + ErrList extends readonly ParseError[], +> { + constructor( + private readonly _command: Command, + ) {} + + /** + * Parse a list of raw arguments + * @param args List of raw arguments + * @returns Parsing result + */ + public parse(args: readonly string[]): ParseResult { + return this._command.extract([...iterateArguments(args)]); + } + + /** + * Set description to command parser of current pipeline + * @param description Command's description + * @returns A wrapper with a new description + */ + public describe(description: string): Wrapper { + return new Wrapper(Describe(this._command, description)); + } + + /** + * Add a flag/option parser to command of current pipeline + * @template NextKey Type of flag name + * @template NextVal Type of flag value + * @param flag Parser and type of flag to be added + * @returns A wrapper with added flag + */ + public with< + NextKey extends string, + NextVal, + >( + flag: FlagType, + ): Wrapper< + MainVal & Record, + FlaggedCommandReturn, + readonly ParseError[] + > { + return new Wrapper(FlaggedCommand(this._command, flag)); + } + + /** + * Add a subcommand parser alternate to (main) command of current pipeline + * @template Name Type of subcommand name + * @template SubVal Value of subcommand parser + * @template NextErrList Possible type of list of errors of subcommand parser + * @param name Subcommand name + * @param sub Subcommand wrapper + * @returns A wrapper with added subcommand + */ + public sub< + Name extends string, + SubVal extends CommandReturn, + NextErrList extends readonly ParseError[], + >( + name: Name, + sub: Wrapper, + ): Wrapper< + SubVal, + SubCommandReturn, + ErrList | NextErrList + > { + return new Wrapper(SubCommand(this._command, name, sub._command)); + } + + /** + * Merge with another wrapper + * @param next Wrapper to merge with + * @returns A merged wrapper + */ + public merge( + next: Wrapper, readonly ParseError[]>, + ): Wrapper< + MainVal & NextVal, + CommandReturn.Main, + readonly ParseError[] + > { + return new Wrapper( + MergeCommand(this._command, next._command), + ); + } + + /** + * Get help message + * @param cmdPath Path to target subcommand + * @returns Help message + */ + public help(...cmdPath: readonly string[]): string { + return help(this._command, cmdPath); + } +} + +/** Starting point of parser construction pipeline */ +export const args = new Wrapper(BLANK); +export default args; diff --git a/bundler/tests/.cache/deno/eb373f5a8e59c75021b33eb6fc831e871e423dfb.ts b/bundler/tests/.cache/deno/eb373f5a8e59c75021b33eb6fc831e871e423dfb.ts new file mode 100644 index 00000000000..02034cfdcf5 --- /dev/null +++ b/bundler/tests/.cache/deno/eb373f5a8e59c75021b33eb6fc831e871e423dfb.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/mapAccum.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * The `mapAccum` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from left to right, and returning a final value of this + * accumulator together with the new list. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.scan, R.addIndex, R.mapAccumRight + * @example + * + * const digits = ['1', '2', '3', '4']; + * const appender = (a, b) => [a + b, a + b]; + * + * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']] + * @symb R.mapAccum(f, a, [b, c, d]) = [ + * f(f(f(a, b)[0], c)[0], d)[0], + * [ + * f(a, b)[1], + * f(f(a, b)[0], c)[1], + * f(f(f(a, b)[0], c)[0], d)[1] + * ] + * ] + */ +var mapAccum = _curry3(function mapAccum(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = []; + var tuple = [acc]; + while (idx < len) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx += 1; + } + return [tuple[0], result]; +}); +export default mapAccum; diff --git a/bundler/tests/.cache/deno/eb5889b5ba8d979ed755e2a7de93a57a3cbbb769.ts b/bundler/tests/.cache/deno/eb5889b5ba8d979ed755e2a7de93a57a3cbbb769.ts new file mode 100644 index 00000000000..b12ef613100 --- /dev/null +++ b/bundler/tests/.cache/deno/eb5889b5ba8d979ed755e2a7de93a57a3cbbb769.ts @@ -0,0 +1,103 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/storage.ts + + +const encoder = new TextEncoder(); +const decoder = new TextDecoder('utf-8'); +import { EventEmitter } from "https://deno.land/std/node/events.ts"; +import { BufReader } from "https://deno.land/std/io/bufio.ts"; +import { existsSync } from "https://deno.land/std/fs/mod.ts"; + +// Ensure datastore initialization on first load + +const init = async (filename:string) => { + if (!existsSync(filename)) { + await Deno.writeFile(filename, encoder.encode('')) + } +} + +//Write file line by line on a stream + +class WriteFileStream extends EventEmitter { + constructor(private filename: string) { + super(); + this.stream(); + } + async stream() { + const updatedFile = `${this.filename}.updated`; + await ensureCommit(updatedFile) + await ensureExists(this.filename) + const file = Deno.openSync(updatedFile, { write: true, create: true }); + this.on("write", (data) => { + let uit8 = encoder.encode(JSON.stringify(data)+"\n") + Deno.writeAllSync(file, uit8) + }) + this.on('end', async () => { + file.close() + await Deno.rename(updatedFile, this.filename) + this.emit("close") + }) + } +} + +// Writes line by line and commits the datastore + +const writeFile = async (filename:string, data:object) => { + await ensureExists(filename); + let doc:any = data = encoder.encode(JSON.stringify(data)+"\n"); + await Deno.writeFile(filename, doc, {append: true}); +} + +// Reads the datastore by streaming and buffering chunks + +class ReadFileStream extends EventEmitter { + constructor(private filename: string) { + super(); + this.stream(); + } + async stream() { + const file = await Deno.open(this.filename); + const bufReader = new BufReader(file); + let line: any; + while ((line = await bufReader.readString('\n')) != null) { + let doc: object = JSON.parse(line); + this.emit('document', doc) + } + this.emit('end') + file.close(); + } +} + +// Ensures data if file doesn't exists + +const ensureExists = async (filename:string) => { + if (!existsSync(filename)) await check(() => existsSync(filename), 100) + return +} + +// Esures the temp file is merged + +const ensureCommit = async (filename:string) => { + if (existsSync(filename)) await check(() => existsSync(filename), 100) + return +} + +// Check Polyfill + +const check = (condition:any, checkTime:number) => { + let promise = new Promise((resolve, reject) => { + const timerId = setInterval(() => { + if (condition()) { + clearInterval(timerId) + resolve('done'); + } + }, checkTime) + }); + return promise; +} + +export { + writeFile, + ReadFileStream, + WriteFileStream, + init +} diff --git a/bundler/tests/.cache/deno/ebb89421583483600946712fe2d2f62a5690df3f.ts b/bundler/tests/.cache/deno/ebb89421583483600946712fe2d2f62a5690df3f.ts new file mode 100644 index 00000000000..e302e939bfd --- /dev/null +++ b/bundler/tests/.cache/deno/ebb89421583483600946712fe2d2f62a5690df3f.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_isArrayLike.js + + +import _curry1 from './_curry1.js'; +import _isArray from './_isArray.js'; +import _isString from './_isString.js'; + + +/** + * Tests whether or not an object is similar to an array. + * + * @private + * @category Type + * @category List + * @sig * -> Boolean + * @param {*} x The object to test. + * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise. + * @example + * + * _isArrayLike([]); //=> true + * _isArrayLike(true); //=> false + * _isArrayLike({}); //=> false + * _isArrayLike({length: 10}); //=> false + * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true + * _isArrayLike({nodeType: 1, length: 1}) // => false + */ +var _isArrayLike = _curry1(function isArrayLike(x) { + if (_isArray(x)) { return true; } + if (!x) { return false; } + if (typeof x !== 'object') { return false; } + if (_isString(x)) { return false; } + if (x.length === 0) { return true; } + if (x.length > 0) { + return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1); + } + return false; +}); +export default _isArrayLike; diff --git a/bundler/tests/.cache/deno/ebccff0d21f1fd7191d294b619fd66ee7663e2f0.ts b/bundler/tests/.cache/deno/ebccff0d21f1fd7191d294b619fd66ee7663e2f0.ts new file mode 100644 index 00000000000..bc028c42cea --- /dev/null +++ b/bundler/tests/.cache/deno/ebccff0d21f1fd7191d294b619fd66ee7663e2f0.ts @@ -0,0 +1,239 @@ +// Loaded from https://deno.land/x/oak/negotiation/mediaType.ts + + +/*! + * Adapted directly from negotiator at https://github.com/jshttp/negotiator/ + * which is licensed as follows: + * + * (The MIT License) + * + * Copyright (c) 2012-2014 Federico Romero + * Copyright (c) 2012-2014 Isaac Z. Schlueter + * Copyright (c) 2014-2015 Douglas Christopher Wilson + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { compareSpecs, isQuality, Specificity } from "./common.ts"; + +interface MediaTypeSpecificity extends Specificity { + type: string; + subtype: string; + params: { [param: string]: string | undefined }; +} + +const simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + +function quoteCount(str: string): number { + let count = 0; + let index = 0; + + while ((index = str.indexOf(`"`, index)) !== -1) { + count++; + index++; + } + + return count; +} + +function splitMediaTypes(accept: string): string[] { + const accepts = accept.split(","); + + let j = 0; + for (let i = 1; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 === 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += `,${accepts[i]}`; + } + } + + accepts.length = j + 1; + + return accepts; +} + +function splitParameters(str: string): string[] { + const parameters = str.split(";"); + + let j = 0; + for (let i = 1; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 === 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += `;${parameters[i]}`; + } + } + + parameters.length = j + 1; + + return parameters.map((p) => p.trim()); +} + +function splitKeyValuePair(str: string): [string, string | undefined] { + const [key, value] = str.split("="); + return [key.toLowerCase(), value]; +} + +function parseMediaType( + str: string, + i: number, +): MediaTypeSpecificity | undefined { + const match = simpleMediaTypeRegExp.exec(str); + + if (!match) { + return; + } + + const params: { [param: string]: string | undefined } = Object.create(null); + let q = 1; + const [, type, subtype, parameters] = match; + + if (parameters) { + const kvps = splitParameters(parameters).map(splitKeyValuePair); + + for (const [key, val] of kvps) { + const value = val && val[0] === `"` && val[val.length - 1] === `"` + ? val.substr(1, val.length - 2) + : val; + + if (key === "q" && value) { + q = parseFloat(value); + break; + } + + params[key] = value; + } + } + + return { type, subtype, params, q, i }; +} + +function parseAccept(accept: string): MediaTypeSpecificity[] { + const accepts = splitMediaTypes(accept); + + const mediaTypes: MediaTypeSpecificity[] = []; + for (let i = 0; i < accepts.length; i++) { + const mediaType = parseMediaType(accepts[i].trim(), i); + + if (mediaType) { + mediaTypes.push(mediaType); + } + } + + return mediaTypes; +} + +function getFullType(spec: MediaTypeSpecificity) { + return `${spec.type}/${spec.subtype}`; +} + +function specify( + type: string, + spec: MediaTypeSpecificity, + index: number, +): Specificity | undefined { + const p = parseMediaType(type, index); + + if (!p) { + return; + } + + let s = 0; + + if (spec.type.toLowerCase() === p.type.toLowerCase()) { + s |= 4; + } else if (spec.type !== "*") { + return; + } + + if (spec.subtype.toLowerCase() === p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype !== "*") { + return; + } + + const keys = Object.keys(spec.params); + if (keys.length) { + if ( + keys.every((key) => + (spec.params[key] || "").toLowerCase() === + (p.params[key] || "").toLowerCase() + ) + ) { + s |= 1; + } else { + return; + } + } + + return { + i: index, + o: spec.o, + q: spec.q, + s, + }; +} + +function getMediaTypePriority( + type: string, + accepted: MediaTypeSpecificity[], + index: number, +) { + let priority: Specificity = { o: -1, q: 0, s: 0, i: index }; + + for (const accepts of accepted) { + const spec = specify(type, accepts, index); + + if ( + spec && + ((priority.s || 0) - (spec.s || 0) || + (priority.q || 0) - (spec.q || 0) || + (priority.o || 0) - (spec.o || 0)) < 0 + ) { + priority = spec; + } + } + + return priority; +} + +export function preferredMediaTypes( + accept?: string | null, + provided?: string[], +): string[] { + const accepts = parseAccept(accept === undefined ? "*/*" : accept || ""); + + if (!provided) { + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map(getFullType); + } + + const priorities = provided.map((type, index) => { + return getMediaTypePriority(type, accepts, index); + }); + + return priorities + .filter(isQuality) + .sort(compareSpecs) + .map((priority) => provided[priorities.indexOf(priority)]); +} diff --git a/bundler/tests/.cache/deno/ebe6eaca3e5eb971b48c8b7305c23eb3a355b1b3.ts b/bundler/tests/.cache/deno/ebe6eaca3e5eb971b48c8b7305c23eb3a355b1b3.ts new file mode 100644 index 00000000000..e2321abf24a --- /dev/null +++ b/bundler/tests/.cache/deno/ebe6eaca3e5eb971b48c8b7305c23eb3a355b1b3.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/product.js + + +import multiply from './multiply.js'; +import reduce from './reduce.js'; + + +/** + * Multiplies together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The product of all the numbers in the list. + * @see R.reduce + * @example + * + * R.product([2,4,6,8,100,1]); //=> 38400 + */ +var product = reduce(multiply, 1); +export default product; diff --git a/bundler/tests/.cache/deno/ebfcda31d95d7e064185b599f326ec315c10a7c6.ts b/bundler/tests/.cache/deno/ebfcda31d95d7e064185b599f326ec315c10a7c6.ts new file mode 100644 index 00000000000..05235c485de --- /dev/null +++ b/bundler/tests/.cache/deno/ebfcda31d95d7e064185b599f326ec315c10a7c6.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/std@0.85.0/async/delay.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* Resolves after the given number of milliseconds. */ +export function delay(ms: number): Promise { + return new Promise((res): number => + setTimeout((): void => { + res(); + }, ms) + ); +} diff --git a/bundler/tests/.cache/deno/ec1f5a3ee5a5d243110abff55e35c590cd3e4653.ts b/bundler/tests/.cache/deno/ec1f5a3ee5a5d243110abff55e35c590cd3e4653.ts new file mode 100644 index 00000000000..f18f7df9ef5 --- /dev/null +++ b/bundler/tests/.cache/deno/ec1f5a3ee5a5d243110abff55e35c590cd3e4653.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/assoc.js + + +import _curry3 from './internal/_curry3.js'; +import assocPath from './assocPath.js'; + +/** + * Makes a shallow clone of an object, setting or overriding the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Idx = String | Int + * @sig Idx -> a -> {k: v} -> {k: v} + * @param {String|Number} prop The property name to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except for the changed property. + * @see R.dissoc, R.pick + * @example + * + * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} + */ +var assoc = _curry3(function assoc(prop, val, obj) { return assocPath([prop], val, obj); }); +export default assoc; diff --git a/bundler/tests/.cache/deno/ec381e1d7c2d8e6436dc318c558aa6324dc8ad35.ts b/bundler/tests/.cache/deno/ec381e1d7c2d8e6436dc318c558aa6324dc8ad35.ts new file mode 100644 index 00000000000..f30acda28f5 --- /dev/null +++ b/bundler/tests/.cache/deno/ec381e1d7c2d8e6436dc318c558aa6324dc8ad35.ts @@ -0,0 +1,154 @@ +// Loaded from https://deno.land/x/media_types@v2.5.1/mod.ts + + +/*! + * Ported from: https://github.com/jshttp/mime-types and licensed as: + * + * (The MIT License) + * + * Copyright (c) 2014 Jonathan Ong + * Copyright (c) 2015 Douglas Christopher Wilson + * Copyright (c) 2020 the Deno authors + * Copyright (c) 2020 the oak authors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import { db } from "./db.ts"; +import { extname } from "./deps.ts"; + +const EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; +const TEXT_TYPE_REGEXP = /^text\//i; + +/** A map of extensions for a given media type */ +export const extensions = new Map(); + +/** A map of the media type for a given extension */ +export const types = new Map(); + +/** Internal function to populate the maps based on the Mime DB */ +function populateMaps( + extensions: Map, + types: Map, +): void { + const preference = ["nginx", "apache", undefined, "iana"]; + + for (const type of Object.keys(db)) { + const mime = db[type]; + const exts = mime.extensions; + + if (!exts || !exts.length) { + continue; + } + + extensions.set(type, exts); + + for (const ext of exts) { + const current = types.get(ext); + if (current) { + const from = preference.indexOf(db[current].source); + const to = preference.indexOf(mime.source); + + if ( + current !== "application/octet-stream" && + (from > to || + (from === to && current.substr(0, 12) === "application/")) + ) { + continue; + } + } + + types.set(ext, type); + } + } +} + +// Populate the maps upon module load +populateMaps(extensions, types); + +/** Given a media type return any default charset string. Returns `undefined` + * if not resolvable. + */ +export function charset(type: string): string | undefined { + const m = EXTRACT_TYPE_REGEXP.exec(type); + if (!m) { + return; + } + const [match] = m; + const mime = db[match.toLowerCase()]; + + if (mime && mime.charset) { + return mime.charset; + } + + if (TEXT_TYPE_REGEXP.test(match)) { + return "UTF-8"; + } +} + +/** Given an extension, lookup the appropriate media type for that extension. + * Likely you should be using `contentType()` though instead. + */ +export function lookup(path: string): string | undefined { + const extension = extname("x." + path) + .toLowerCase() + .substr(1); + + return types.get(extension); +} + +/** Given an extension or media type, return the full `Content-Type` header + * string. Returns `undefined` if not resolvable. + */ +export function contentType(str: string): string | undefined { + let mime = str.includes("/") ? str : lookup(str); + + if (!mime) { + return; + } + + if (!mime.includes("charset")) { + const cs = charset(mime); + if (cs) { + mime += `; charset=${cs.toLowerCase()}`; + } + } + + return mime; +} + +/** Given a media type, return the most appropriate extension or return + * `undefined` if there is none. + */ +export function extension(type: string): string | undefined { + const match = EXTRACT_TYPE_REGEXP.exec(type); + + if (!match) { + return; + } + + const exts = extensions.get(match[1].toLowerCase()); + + if (!exts || !exts.length) { + return; + } + + return exts[0]; +} diff --git a/bundler/tests/.cache/deno/ec554e0a029de478e1fc6dd631cb28495ceae983.ts b/bundler/tests/.cache/deno/ec554e0a029de478e1fc6dd631cb28495ceae983.ts new file mode 100644 index 00000000000..609f276378f --- /dev/null +++ b/bundler/tests/.cache/deno/ec554e0a029de478e1fc6dd631cb28495ceae983.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/didYouMean.js + + +const MAX_SUGGESTIONS = 5; +/** + * Given [ A, B, C ] return ' Did you mean A, B, or C?'. + */ + +// eslint-disable-next-line no-redeclare +export default function didYouMean(firstArg, secondArg) { + const [subMessage, suggestionsArg] = typeof firstArg === 'string' ? [firstArg, secondArg] : [undefined, firstArg]; + let message = ' Did you mean '; + + if (subMessage) { + message += subMessage + ' '; + } + + const suggestions = suggestionsArg.map(x => `"${x}"`); + + switch (suggestions.length) { + case 0: + return ''; + + case 1: + return message + suggestions[0] + '?'; + + case 2: + return message + suggestions[0] + ' or ' + suggestions[1] + '?'; + } + + const selected = suggestions.slice(0, MAX_SUGGESTIONS); + const lastItem = selected.pop(); + return message + selected.join(', ') + ', or ' + lastItem + '?'; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ec6e72c1b5c02205ac61be1a77f6e3dd8de7b5f2.ts b/bundler/tests/.cache/deno/ec6e72c1b5c02205ac61be1a77f6e3dd8de7b5f2.ts new file mode 100644 index 00000000000..ccb166c2cba --- /dev/null +++ b/bundler/tests/.cache/deno/ec6e72c1b5c02205ac61be1a77f6e3dd8de7b5f2.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/std@0.81.0/io/readers.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/0452f9460f50f0f0aba18df43dc2b31906fb66cc/src/io/io.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +import { encode } from "../encoding/utf8.ts"; + +/** Reader utility for strings */ +export class StringReader extends Deno.Buffer { + constructor(s: string) { + super(encode(s).buffer); + } +} + +/** Reader utility for combining multiple readers */ +export class MultiReader implements Deno.Reader { + private readonly readers: Deno.Reader[]; + private currentIndex = 0; + + constructor(...readers: Deno.Reader[]) { + this.readers = readers; + } + + async read(p: Uint8Array): Promise { + const r = this.readers[this.currentIndex]; + if (!r) return null; + const result = await r.read(p); + if (result === null) { + this.currentIndex++; + return 0; + } + return result; + } +} + +/** + * A `LimitedReader` reads from `reader` but limits the amount of data returned to just `limit` bytes. + * Each call to `read` updates `limit` to reflect the new amount remaining. + * `read` returns `null` when `limit` <= `0` or + * when the underlying `reader` returns `null`. + */ +export class LimitedReader implements Deno.Reader { + constructor(public reader: Deno.Reader, public limit: number) {} + + async read(p: Uint8Array): Promise { + if (this.limit <= 0) { + return null; + } + + if (p.length > this.limit) { + p = p.subarray(0, this.limit); + } + const n = await this.reader.read(p); + if (n == null) { + return null; + } + + this.limit -= n; + return n; + } +} diff --git a/bundler/tests/.cache/deno/ec753304e273d1e52aaa9d1b9dfc484f5c8b85be.ts b/bundler/tests/.cache/deno/ec753304e273d1e52aaa9d1b9dfc484f5c8b85be.ts new file mode 100644 index 00000000000..436df0213b3 --- /dev/null +++ b/bundler/tests/.cache/deno/ec753304e273d1e52aaa9d1b9dfc484f5c8b85be.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_promap.js + + +export default function _promap(f, g, profunctor) { + return function(x) { + return g(profunctor(f(x))); + }; +} diff --git a/bundler/tests/.cache/deno/ececda68f08527d42336f71bf97a5c205f5afa9a.ts b/bundler/tests/.cache/deno/ececda68f08527d42336f71bf97a5c205f5afa9a.ts new file mode 100644 index 00000000000..6c5e7c87eaf --- /dev/null +++ b/bundler/tests/.cache/deno/ececda68f08527d42336f71bf97a5c205f5afa9a.ts @@ -0,0 +1,445 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/utilities/findBreakingChanges.js + + +import objectValues from '../polyfills/objectValues.js'; +import keyMap from '../jsutils/keyMap.js'; +import inspect from '../jsutils/inspect.js'; +import invariant from '../jsutils/invariant.js'; +import { print } from '../language/printer.js'; +import { visit } from '../language/visitor.js'; +import { isSpecifiedScalarType } from '../type/scalars.js'; +import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNonNullType, isListType, isNamedType, isRequiredArgument, isRequiredInputField } from '../type/definition.js'; +import { astFromValue } from './astFromValue.js'; +export const BreakingChangeType = Object.freeze({ + TYPE_REMOVED: 'TYPE_REMOVED', + TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND', + TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION', + VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM', + REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED', + IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED', + FIELD_REMOVED: 'FIELD_REMOVED', + FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND', + REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED', + ARG_REMOVED: 'ARG_REMOVED', + ARG_CHANGED_KIND: 'ARG_CHANGED_KIND', + DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED', + DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED', + REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED', + DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED', + DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED' +}); +export const DangerousChangeType = Object.freeze({ + VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM', + TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION', + OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED', + OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED', + IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED', + ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE' +}); + +/** + * Given two schemas, returns an Array containing descriptions of all the types + * of breaking changes covered by the other functions down below. + */ +export function findBreakingChanges(oldSchema, newSchema) { + const breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(change => change.type in BreakingChangeType); + return breakingChanges; +} +/** + * Given two schemas, returns an Array containing descriptions of all the types + * of potentially dangerous changes covered by the other functions down below. + */ + +export function findDangerousChanges(oldSchema, newSchema) { + const dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(change => change.type in DangerousChangeType); + return dangerousChanges; +} + +function findSchemaChanges(oldSchema, newSchema) { + return [...findTypeChanges(oldSchema, newSchema), ...findDirectiveChanges(oldSchema, newSchema)]; +} + +function findDirectiveChanges(oldSchema, newSchema) { + const schemaChanges = []; + const directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives()); + + for (const oldDirective of directivesDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.DIRECTIVE_REMOVED, + description: `${oldDirective.name} was removed.` + }); + } + + for (const [oldDirective, newDirective] of directivesDiff.persisted) { + const argsDiff = diff(oldDirective.args, newDirective.args); + + for (const newArg of argsDiff.added) { + if (isRequiredArgument(newArg)) { + schemaChanges.push({ + type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED, + description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.` + }); + } + } + + for (const oldArg of argsDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.DIRECTIVE_ARG_REMOVED, + description: `${oldArg.name} was removed from ${oldDirective.name}.` + }); + } + + if (oldDirective.isRepeatable && !newDirective.isRepeatable) { + schemaChanges.push({ + type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED, + description: `Repeatable flag was removed from ${oldDirective.name}.` + }); + } + + for (const location of oldDirective.locations) { + if (newDirective.locations.indexOf(location) === -1) { + schemaChanges.push({ + type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED, + description: `${location} was removed from ${oldDirective.name}.` + }); + } + } + } + + return schemaChanges; +} + +function findTypeChanges(oldSchema, newSchema) { + const schemaChanges = []; + const typesDiff = diff(objectValues(oldSchema.getTypeMap()), objectValues(newSchema.getTypeMap())); + + for (const oldType of typesDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.TYPE_REMOVED, + description: isSpecifiedScalarType(oldType) ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.` : `${oldType.name} was removed.` + }); + } + + for (const [oldType, newType] of typesDiff.persisted) { + if (isEnumType(oldType) && isEnumType(newType)) { + schemaChanges.push(...findEnumTypeChanges(oldType, newType)); + } else if (isUnionType(oldType) && isUnionType(newType)) { + schemaChanges.push(...findUnionTypeChanges(oldType, newType)); + } else if (isInputObjectType(oldType) && isInputObjectType(newType)) { + schemaChanges.push(...findInputObjectTypeChanges(oldType, newType)); + } else if (isObjectType(oldType) && isObjectType(newType)) { + schemaChanges.push(...findFieldChanges(oldType, newType), ...findImplementedInterfacesChanges(oldType, newType)); + } else if (isInterfaceType(oldType) && isInterfaceType(newType)) { + schemaChanges.push(...findFieldChanges(oldType, newType), ...findImplementedInterfacesChanges(oldType, newType)); + } else if (oldType.constructor !== newType.constructor) { + schemaChanges.push({ + type: BreakingChangeType.TYPE_CHANGED_KIND, + description: `${oldType.name} changed from ` + `${typeKindName(oldType)} to ${typeKindName(newType)}.` + }); + } + } + + return schemaChanges; +} + +function findInputObjectTypeChanges(oldType, newType) { + const schemaChanges = []; + const fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields())); + + for (const newField of fieldsDiff.added) { + if (isRequiredInputField(newField)) { + schemaChanges.push({ + type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED, + description: `A required field ${newField.name} on input type ${oldType.name} was added.` + }); + } else { + schemaChanges.push({ + type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED, + description: `An optional field ${newField.name} on input type ${oldType.name} was added.` + }); + } + } + + for (const oldField of fieldsDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.FIELD_REMOVED, + description: `${oldType.name}.${oldField.name} was removed.` + }); + } + + for (const [oldField, newField] of fieldsDiff.persisted) { + const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(oldField.type, newField.type); + + if (!isSafe) { + schemaChanges.push({ + type: BreakingChangeType.FIELD_CHANGED_KIND, + description: `${oldType.name}.${oldField.name} changed type from ` + `${String(oldField.type)} to ${String(newField.type)}.` + }); + } + } + + return schemaChanges; +} + +function findUnionTypeChanges(oldType, newType) { + const schemaChanges = []; + const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes()); + + for (const newPossibleType of possibleTypesDiff.added) { + schemaChanges.push({ + type: DangerousChangeType.TYPE_ADDED_TO_UNION, + description: `${newPossibleType.name} was added to union type ${oldType.name}.` + }); + } + + for (const oldPossibleType of possibleTypesDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.TYPE_REMOVED_FROM_UNION, + description: `${oldPossibleType.name} was removed from union type ${oldType.name}.` + }); + } + + return schemaChanges; +} + +function findEnumTypeChanges(oldType, newType) { + const schemaChanges = []; + const valuesDiff = diff(oldType.getValues(), newType.getValues()); + + for (const newValue of valuesDiff.added) { + schemaChanges.push({ + type: DangerousChangeType.VALUE_ADDED_TO_ENUM, + description: `${newValue.name} was added to enum type ${oldType.name}.` + }); + } + + for (const oldValue of valuesDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM, + description: `${oldValue.name} was removed from enum type ${oldType.name}.` + }); + } + + return schemaChanges; +} + +function findImplementedInterfacesChanges(oldType, newType) { + const schemaChanges = []; + const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces()); + + for (const newInterface of interfacesDiff.added) { + schemaChanges.push({ + type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED, + description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.` + }); + } + + for (const oldInterface of interfacesDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED, + description: `${oldType.name} no longer implements interface ${oldInterface.name}.` + }); + } + + return schemaChanges; +} + +function findFieldChanges(oldType, newType) { + const schemaChanges = []; + const fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields())); + + for (const oldField of fieldsDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.FIELD_REMOVED, + description: `${oldType.name}.${oldField.name} was removed.` + }); + } + + for (const [oldField, newField] of fieldsDiff.persisted) { + schemaChanges.push(...findArgChanges(oldType, oldField, newField)); + const isSafe = isChangeSafeForObjectOrInterfaceField(oldField.type, newField.type); + + if (!isSafe) { + schemaChanges.push({ + type: BreakingChangeType.FIELD_CHANGED_KIND, + description: `${oldType.name}.${oldField.name} changed type from ` + `${String(oldField.type)} to ${String(newField.type)}.` + }); + } + } + + return schemaChanges; +} + +function findArgChanges(oldType, oldField, newField) { + const schemaChanges = []; + const argsDiff = diff(oldField.args, newField.args); + + for (const oldArg of argsDiff.removed) { + schemaChanges.push({ + type: BreakingChangeType.ARG_REMOVED, + description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.` + }); + } + + for (const [oldArg, newArg] of argsDiff.persisted) { + const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(oldArg.type, newArg.type); + + if (!isSafe) { + schemaChanges.push({ + type: BreakingChangeType.ARG_CHANGED_KIND, + description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` + `${String(oldArg.type)} to ${String(newArg.type)}.` + }); + } else if (oldArg.defaultValue !== undefined) { + if (newArg.defaultValue === undefined) { + schemaChanges.push({ + type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE, + description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.` + }); + } else { + // Since we looking only for client's observable changes we should + // compare default values in the same representation as they are + // represented inside introspection. + const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type); + const newValueStr = stringifyValue(newArg.defaultValue, newArg.type); + + if (oldValueStr !== newValueStr) { + schemaChanges.push({ + type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE, + description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.` + }); + } + } + } + } + + for (const newArg of argsDiff.added) { + if (isRequiredArgument(newArg)) { + schemaChanges.push({ + type: BreakingChangeType.REQUIRED_ARG_ADDED, + description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.` + }); + } else { + schemaChanges.push({ + type: DangerousChangeType.OPTIONAL_ARG_ADDED, + description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.` + }); + } + } + + return schemaChanges; +} + +function isChangeSafeForObjectOrInterfaceField(oldType, newType) { + if (isListType(oldType)) { + return (// if they're both lists, make sure the underlying types are compatible + isListType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe + isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType) + ); + } + + if (isNonNullType(oldType)) { + // if they're both non-null, make sure the underlying types are compatible + return isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType); + } + + return (// if they're both named types, see if their names are equivalent + isNamedType(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe + isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType) + ); +} + +function isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) { + if (isListType(oldType)) { + // if they're both lists, make sure the underlying types are compatible + return isListType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType); + } + + if (isNonNullType(oldType)) { + return (// if they're both non-null, make sure the underlying types are + // compatible + isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe + !isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType) + ); + } // if they're both named types, see if their names are equivalent + + + return isNamedType(newType) && oldType.name === newType.name; +} + +function typeKindName(type) { + if (isScalarType(type)) { + return 'a Scalar type'; + } + + if (isObjectType(type)) { + return 'an Object type'; + } + + if (isInterfaceType(type)) { + return 'an Interface type'; + } + + if (isUnionType(type)) { + return 'a Union type'; + } + + if (isEnumType(type)) { + return 'an Enum type'; + } + + if (isInputObjectType(type)) { + return 'an Input type'; + } // Not reachable. All possible named types have been considered. + + + invariant(false, 'Unexpected type: ' + inspect(type)); +} + +function stringifyValue(value, type) { + const ast = astFromValue(value, type); + invariant(ast != null); + const sortedAST = visit(ast, { + ObjectValue(objectNode) { + const fields = [...objectNode.fields].sort((fieldA, fieldB) => fieldA.name.value.localeCompare(fieldB.name.value)); + return { ...objectNode, + fields + }; + } + + }); + return print(sortedAST); +} + +function diff(oldArray, newArray) { + const added = []; + const removed = []; + const persisted = []; + const oldMap = keyMap(oldArray, ({ + name + }) => name); + const newMap = keyMap(newArray, ({ + name + }) => name); + + for (const oldItem of oldArray) { + const newItem = newMap[oldItem.name]; + + if (newItem === undefined) { + removed.push(oldItem); + } else { + persisted.push([oldItem, newItem]); + } + } + + for (const newItem of newArray) { + if (oldMap[newItem.name] === undefined) { + added.push(newItem); + } + } + + return { + added, + persisted, + removed + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ecfdb3b65ae0e8483f2ad7341b8c0f0fd3f495e3.ts b/bundler/tests/.cache/deno/ecfdb3b65ae0e8483f2ad7341b8c0f0fd3f495e3.ts new file mode 100644 index 00000000000..13f48f320c1 --- /dev/null +++ b/bundler/tests/.cache/deno/ecfdb3b65ae0e8483f2ad7341b8c0f0fd3f495e3.ts @@ -0,0 +1,87 @@ +// Loaded from https://deno.land/x/sql_builder@v1.7.0/util.ts + + +export function replaceParams(sql: string, params: any | any[]): string { + if (!params) return sql; + let paramIndex = 0; + sql = sql.replace(/('.*')|(".*")|(\?\?)|(\?)/g, (str) => { + if (paramIndex >= params.length) return str; + // ignore + if (/".*"/g.test(str) || /'.*'/g.test(str)) { + return str; + } + // identifier + if (str === "??") { + const val = params[paramIndex++]; + if (val instanceof Array) { + return `(${val.map((item) => replaceParams("??", [item])).join(",")})`; + } else if (val === "*") { + return val; + } else if (typeof val === "string" && val.includes(".")) { + // a.b => `a`.`b` + const _arr = val.split("."); + return replaceParams(_arr.map(() => "??").join("."), _arr); + } else if ( + typeof val === "string" && + (val.includes(" as ") || val.includes(" AS ")) + ) { + // a as b => `a` AS `b` + const newVal = val.replace(" as ", " AS "); + const _arr = newVal.split(" AS "); + return replaceParams(_arr.map(() => "??").join(" AS "), _arr); + } else { + return ["`", val, "`"].join(""); + } + } + // value + const val = params[paramIndex++]; + if (val === null) return "NULL"; + switch (typeof val) { + case "object": + if (val instanceof Date) return `"${formatDate(val)}"`; + if (val instanceof Array) { + return `(${val.map((item) => replaceParams("?", [item])).join(",")})`; + } + case "string": + return `"${escapeString(val)}"`; + case "undefined": + return "NULL"; + case "number": + case "boolean": + default: + return val; + } + }); + return sql; +} + +function formatDate(date: Date) { + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, "0"); + const days = date + .getDate() + .toString() + .padStart(2, "0"); + const hours = date + .getHours() + .toString() + .padStart(2, "0"); + const minutes = date + .getMinutes() + .toString() + .padStart(2, "0"); + const seconds = date + .getSeconds() + .toString() + .padStart(2, "0"); + // Date does not support microseconds precision, so we only keep the milliseconds part. + const milliseconds = date + .getMilliseconds() + .toString() + .padStart(3, "0"); + return `${year}-${month}-${days} ${hours}:${minutes}:${seconds}.${milliseconds}`; +} + +function escapeString(str: string) { + return str.replaceAll("\\", "\\\\").replaceAll('"', '\\"'); +} diff --git a/bundler/tests/.cache/deno/ed0e9841e38a9db45f76d7150cb539b43bf187bf.ts b/bundler/tests/.cache/deno/ed0e9841e38a9db45f76d7150cb539b43bf187bf.ts new file mode 100644 index 00000000000..50001555c8d --- /dev/null +++ b/bundler/tests/.cache/deno/ed0e9841e38a9db45f76d7150cb539b43bf187bf.ts @@ -0,0 +1,64 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/applySpec.js + + +import _curry1 from './internal/_curry1.js'; +import _isArray from './internal/_isArray.js'; +import apply from './apply.js'; +import curryN from './curryN.js'; +import max from './max.js'; +import pluck from './pluck.js'; +import reduce from './reduce.js'; +import keys from './keys.js'; +import values from './values.js'; + + +// Use custom mapValues function to avoid issues with specs that include a "map" key and R.map +// delegating calls to .map +function mapValues(fn, obj) { + return _isArray(obj) + ? obj.map(fn) + : keys(obj).reduce(function(acc, key) { + acc[key] = fn(obj[key]); + return acc; + }, {}); +} + +/** + * Given a spec object recursively mapping properties to functions, creates a + * function producing an object of the same structure, by mapping each property + * to the result of calling its associated function with the supplied arguments. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v}) + * @param {Object} spec an object recursively mapping properties to functions for + * producing the values for these properties. + * @return {Function} A function that returns an object of the same structure + * as `spec', with each property set to the value returned by calling its + * associated function with the supplied arguments. + * @see R.converge, R.juxt + * @example + * + * const getMetrics = R.applySpec({ + * sum: R.add, + * nested: { mul: R.multiply } + * }); + * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } + * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } } + */ +var applySpec = _curry1(function applySpec(spec) { + spec = mapValues( + function(v) { return typeof v == 'function' ? v : applySpec(v); }, + spec + ); + + return curryN( + reduce(max, 0, pluck('length', values(spec))), + function() { + var args = arguments; + return mapValues(function(f) { return apply(f, args); }, spec); + }); +}); +export default applySpec; diff --git a/bundler/tests/.cache/deno/ed19cffd14f75acca4e78146263c090a69aa1f8b.ts b/bundler/tests/.cache/deno/ed19cffd14f75acca4e78146263c090a69aa1f8b.ts new file mode 100644 index 00000000000..e24be9da2af --- /dev/null +++ b/bundler/tests/.cache/deno/ed19cffd14f75acca4e78146263c090a69aa1f8b.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_includesWith.js + + +export default function _includesWith(pred, x, list) { + var idx = 0; + var len = list.length; + + while (idx < len) { + if (pred(x, list[idx])) { + return true; + } + idx += 1; + } + return false; +} diff --git a/bundler/tests/.cache/deno/ed39c3dbed4105c56b0b567b0a9f5dcada1dd360.ts b/bundler/tests/.cache/deno/ed39c3dbed4105c56b0b567b0a9f5dcada1dd360.ts new file mode 100644 index 00000000000..f6b1e2f39ed --- /dev/null +++ b/bundler/tests/.cache/deno/ed39c3dbed4105c56b0b567b0a9f5dcada1dd360.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/case@v2.1.0/lowerFirstCase.ts + + +import lowerCase from "./lowerCase.ts"; + +export default function (str: string, locale?: string): string { + if (str == null) { + return ""; + } + + str = String(str); + + return lowerCase(str.charAt(0), locale) + str.substr(1); +} diff --git a/bundler/tests/.cache/deno/ed5e9a05651dcf1c78f42aa13d1d4670b2d3f279.ts b/bundler/tests/.cache/deno/ed5e9a05651dcf1c78f42aa13d1d4670b2d3f279.ts new file mode 100644 index 00000000000..a8d3d6e4c5a --- /dev/null +++ b/bundler/tests/.cache/deno/ed5e9a05651dcf1c78f42aa13d1d4670b2d3f279.ts @@ -0,0 +1,200 @@ +// Loaded from https://deno.land/std@0.81.0/http/http_status.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** HTTP status codes */ +export enum Status { + /** RFC 7231, 6.2.1 */ + Continue = 100, + /** RFC 7231, 6.2.2 */ + SwitchingProtocols = 101, + /** RFC 2518, 10.1 */ + Processing = 102, + /** RFC 8297 **/ + EarlyHints = 103, + /** RFC 7231, 6.3.1 */ + OK = 200, + /** RFC 7231, 6.3.2 */ + Created = 201, + /** RFC 7231, 6.3.3 */ + Accepted = 202, + /** RFC 7231, 6.3.4 */ + NonAuthoritativeInfo = 203, + /** RFC 7231, 6.3.5 */ + NoContent = 204, + /** RFC 7231, 6.3.6 */ + ResetContent = 205, + /** RFC 7233, 4.1 */ + PartialContent = 206, + /** RFC 4918, 11.1 */ + MultiStatus = 207, + /** RFC 5842, 7.1 */ + AlreadyReported = 208, + /** RFC 3229, 10.4.1 */ + IMUsed = 226, + + /** RFC 7231, 6.4.1 */ + MultipleChoices = 300, + /** RFC 7231, 6.4.2 */ + MovedPermanently = 301, + /** RFC 7231, 6.4.3 */ + Found = 302, + /** RFC 7231, 6.4.4 */ + SeeOther = 303, + /** RFC 7232, 4.1 */ + NotModified = 304, + /** RFC 7231, 6.4.5 */ + UseProxy = 305, + /** RFC 7231, 6.4.7 */ + TemporaryRedirect = 307, + /** RFC 7538, 3 */ + PermanentRedirect = 308, + + /** RFC 7231, 6.5.1 */ + BadRequest = 400, + /** RFC 7235, 3.1 */ + Unauthorized = 401, + /** RFC 7231, 6.5.2 */ + PaymentRequired = 402, + /** RFC 7231, 6.5.3 */ + Forbidden = 403, + /** RFC 7231, 6.5.4 */ + NotFound = 404, + /** RFC 7231, 6.5.5 */ + MethodNotAllowed = 405, + /** RFC 7231, 6.5.6 */ + NotAcceptable = 406, + /** RFC 7235, 3.2 */ + ProxyAuthRequired = 407, + /** RFC 7231, 6.5.7 */ + RequestTimeout = 408, + /** RFC 7231, 6.5.8 */ + Conflict = 409, + /** RFC 7231, 6.5.9 */ + Gone = 410, + /** RFC 7231, 6.5.10 */ + LengthRequired = 411, + /** RFC 7232, 4.2 */ + PreconditionFailed = 412, + /** RFC 7231, 6.5.11 */ + RequestEntityTooLarge = 413, + /** RFC 7231, 6.5.12 */ + RequestURITooLong = 414, + /** RFC 7231, 6.5.13 */ + UnsupportedMediaType = 415, + /** RFC 7233, 4.4 */ + RequestedRangeNotSatisfiable = 416, + /** RFC 7231, 6.5.14 */ + ExpectationFailed = 417, + /** RFC 7168, 2.3.3 */ + Teapot = 418, + /** RFC 7540, 9.1.2 */ + MisdirectedRequest = 421, + /** RFC 4918, 11.2 */ + UnprocessableEntity = 422, + /** RFC 4918, 11.3 */ + Locked = 423, + /** RFC 4918, 11.4 */ + FailedDependency = 424, + /** RFC 8470, 5.2 */ + TooEarly = 425, + /** RFC 7231, 6.5.15 */ + UpgradeRequired = 426, + /** RFC 6585, 3 */ + PreconditionRequired = 428, + /** RFC 6585, 4 */ + TooManyRequests = 429, + /** RFC 6585, 5 */ + RequestHeaderFieldsTooLarge = 431, + /** RFC 7725, 3 */ + UnavailableForLegalReasons = 451, + + /** RFC 7231, 6.6.1 */ + InternalServerError = 500, + /** RFC 7231, 6.6.2 */ + NotImplemented = 501, + /** RFC 7231, 6.6.3 */ + BadGateway = 502, + /** RFC 7231, 6.6.4 */ + ServiceUnavailable = 503, + /** RFC 7231, 6.6.5 */ + GatewayTimeout = 504, + /** RFC 7231, 6.6.6 */ + HTTPVersionNotSupported = 505, + /** RFC 2295, 8.1 */ + VariantAlsoNegotiates = 506, + /** RFC 4918, 11.5 */ + InsufficientStorage = 507, + /** RFC 5842, 7.2 */ + LoopDetected = 508, + /** RFC 2774, 7 */ + NotExtended = 510, + /** RFC 6585, 6 */ + NetworkAuthenticationRequired = 511, +} + +export const STATUS_TEXT = new Map([ + [Status.Continue, "Continue"], + [Status.SwitchingProtocols, "Switching Protocols"], + [Status.Processing, "Processing"], + [Status.EarlyHints, "Early Hints"], + [Status.OK, "OK"], + [Status.Created, "Created"], + [Status.Accepted, "Accepted"], + [Status.NonAuthoritativeInfo, "Non-Authoritative Information"], + [Status.NoContent, "No Content"], + [Status.ResetContent, "Reset Content"], + [Status.PartialContent, "Partial Content"], + [Status.MultiStatus, "Multi-Status"], + [Status.AlreadyReported, "Already Reported"], + [Status.IMUsed, "IM Used"], + [Status.MultipleChoices, "Multiple Choices"], + [Status.MovedPermanently, "Moved Permanently"], + [Status.Found, "Found"], + [Status.SeeOther, "See Other"], + [Status.NotModified, "Not Modified"], + [Status.UseProxy, "Use Proxy"], + [Status.TemporaryRedirect, "Temporary Redirect"], + [Status.PermanentRedirect, "Permanent Redirect"], + [Status.BadRequest, "Bad Request"], + [Status.Unauthorized, "Unauthorized"], + [Status.PaymentRequired, "Payment Required"], + [Status.Forbidden, "Forbidden"], + [Status.NotFound, "Not Found"], + [Status.MethodNotAllowed, "Method Not Allowed"], + [Status.NotAcceptable, "Not Acceptable"], + [Status.ProxyAuthRequired, "Proxy Authentication Required"], + [Status.RequestTimeout, "Request Timeout"], + [Status.Conflict, "Conflict"], + [Status.Gone, "Gone"], + [Status.LengthRequired, "Length Required"], + [Status.PreconditionFailed, "Precondition Failed"], + [Status.RequestEntityTooLarge, "Request Entity Too Large"], + [Status.RequestURITooLong, "Request URI Too Long"], + [Status.UnsupportedMediaType, "Unsupported Media Type"], + [Status.RequestedRangeNotSatisfiable, "Requested Range Not Satisfiable"], + [Status.ExpectationFailed, "Expectation Failed"], + [Status.Teapot, "I'm a teapot"], + [Status.MisdirectedRequest, "Misdirected Request"], + [Status.UnprocessableEntity, "Unprocessable Entity"], + [Status.Locked, "Locked"], + [Status.FailedDependency, "Failed Dependency"], + [Status.TooEarly, "Too Early"], + [Status.UpgradeRequired, "Upgrade Required"], + [Status.PreconditionRequired, "Precondition Required"], + [Status.TooManyRequests, "Too Many Requests"], + [Status.RequestHeaderFieldsTooLarge, "Request Header Fields Too Large"], + [Status.UnavailableForLegalReasons, "Unavailable For Legal Reasons"], + [Status.InternalServerError, "Internal Server Error"], + [Status.NotImplemented, "Not Implemented"], + [Status.BadGateway, "Bad Gateway"], + [Status.ServiceUnavailable, "Service Unavailable"], + [Status.GatewayTimeout, "Gateway Timeout"], + [Status.HTTPVersionNotSupported, "HTTP Version Not Supported"], + [Status.VariantAlsoNegotiates, "Variant Also Negotiates"], + [Status.InsufficientStorage, "Insufficient Storage"], + [Status.LoopDetected, "Loop Detected"], + [Status.NotExtended, "Not Extended"], + [Status.NetworkAuthenticationRequired, "Network Authentication Required"], +]); diff --git a/bundler/tests/.cache/deno/ed6d5c1acbb2717c8198f49ec672c9a770d7ec0c.ts b/bundler/tests/.cache/deno/ed6d5c1acbb2717c8198f49ec672c9a770d7ec0c.ts new file mode 100644 index 00000000000..f5a57a27f64 --- /dev/null +++ b/bundler/tests/.cache/deno/ed6d5c1acbb2717c8198f49ec672c9a770d7ec0c.ts @@ -0,0 +1,65 @@ +// Loaded from https://deno.land/std@0.77.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ + +let NATIVE_OS: typeof Deno.build.os = "linux"; +// deno-lint-ignore no-explicit-any +const navigator = (globalThis as any).navigator; +if (globalThis.Deno != null) { + NATIVE_OS = Deno.build.os; +} else if (navigator?.appVersion?.includes?.("Win") ?? false) { + NATIVE_OS = "windows"; +} +// TODO(nayeemrmn): Improve OS detection in browsers beyond Windows. + +export const isWindows = NATIVE_OS == "windows"; + +export { NATIVE_OS }; diff --git a/bundler/tests/.cache/deno/eddcdb43b255c33e82cd5ba6b84aab5163bc53c0.ts b/bundler/tests/.cache/deno/eddcdb43b255c33e82cd5ba6b84aab5163bc53c0.ts new file mode 100644 index 00000000000..31999d1d919 --- /dev/null +++ b/bundler/tests/.cache/deno/eddcdb43b255c33e82cd5ba6b84aab5163bc53c0.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_checkForMethod.js + + +import _isArray from './_isArray.js'; + + +/** + * This checks whether a function has a [methodname] function. If it isn't an + * array it will execute that function otherwise it will default to the ramda + * implementation. + * + * @private + * @param {Function} fn ramda implementation + * @param {String} methodname property to check for a custom implementation + * @return {Object} Whatever the return value of the method is. + */ +export default function _checkForMethod(methodname, fn) { + return function() { + var length = arguments.length; + if (length === 0) { + return fn(); + } + var obj = arguments[length - 1]; + return (_isArray(obj) || typeof obj[methodname] !== 'function') ? + fn.apply(this, arguments) : + obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1)); + }; +} diff --git a/bundler/tests/.cache/deno/ede6ff4d09eade5351116ad8848614003fe79f37.ts b/bundler/tests/.cache/deno/ede6ff4d09eade5351116ad8848614003fe79f37.ts new file mode 100644 index 00000000000..d3c3597b1b4 --- /dev/null +++ b/bundler/tests/.cache/deno/ede6ff4d09eade5351116ad8848614003fe79f37.ts @@ -0,0 +1,32 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/language/directiveLocation.js + + +/** + * The set of allowed directive location values. + */ +export const DirectiveLocation = Object.freeze({ + // Request Definitions + QUERY: 'QUERY', + MUTATION: 'MUTATION', + SUBSCRIPTION: 'SUBSCRIPTION', + FIELD: 'FIELD', + FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION', + FRAGMENT_SPREAD: 'FRAGMENT_SPREAD', + INLINE_FRAGMENT: 'INLINE_FRAGMENT', + VARIABLE_DEFINITION: 'VARIABLE_DEFINITION', + // Type System Definitions + SCHEMA: 'SCHEMA', + SCALAR: 'SCALAR', + OBJECT: 'OBJECT', + FIELD_DEFINITION: 'FIELD_DEFINITION', + ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION', + INTERFACE: 'INTERFACE', + UNION: 'UNION', + ENUM: 'ENUM', + ENUM_VALUE: 'ENUM_VALUE', + INPUT_OBJECT: 'INPUT_OBJECT', + INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION' +}); +/** + * The enum type representing the directive location values. + */ \ No newline at end of file diff --git a/bundler/tests/.cache/deno/edf2d46d6a7d850911106bdde9d797d4043db0a8.ts b/bundler/tests/.cache/deno/edf2d46d6a7d850911106bdde9d797d4043db0a8.ts new file mode 100644 index 00000000000..0dc9c8ebe48 --- /dev/null +++ b/bundler/tests/.cache/deno/edf2d46d6a7d850911106bdde9d797d4043db0a8.ts @@ -0,0 +1,30 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/index.js + + +export { // Predicate +isSchema // Assertion +, assertSchema // GraphQL Schema definition +, GraphQLSchema } from './schema.js'; +export { // Predicates +isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField // Assertions +, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType // Un-modifiers +, getNullableType, getNamedType // Definitions +, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType // Type Wrappers +, GraphQLList, GraphQLNonNull } from './definition.js'; +export { // Predicate +isDirective // Assertion +, assertDirective // Directives Definition +, GraphQLDirective // Built-in Directives defined by the Spec +, isSpecifiedDirective, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective // Constant Deprecation Reason +, DEFAULT_DEPRECATION_REASON } from './directives.js'; +// Common built-in scalar instances. +export { // Predicate +isSpecifiedScalarType // Standard GraphQL Scalars +, specifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID } from './scalars.js'; +export { // Predicate +isIntrospectionType // GraphQL Types for introspection. +, introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind // "Enum" of Type Kinds +, TypeKind // Meta-field definitions. +, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from './introspection.js'; +// Validate GraphQL schema. +export { validateSchema, assertValidSchema } from './validate.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/edffdef85976f57517f47539cd7fafed508fe11f.ts b/bundler/tests/.cache/deno/edffdef85976f57517f47539cd7fafed508fe11f.ts new file mode 100644 index 00000000000..f1fb1b74ed1 --- /dev/null +++ b/bundler/tests/.cache/deno/edffdef85976f57517f47539cd7fafed508fe11f.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_reduced.js + + +export default function _reduced(x) { + return x && x['@@transducer/reduced'] ? x : + { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +} diff --git a/bundler/tests/.cache/deno/ee36f05790a94dabab7195381c49135a6395df44.ts b/bundler/tests/.cache/deno/ee36f05790a94dabab7195381c49135a6395df44.ts new file mode 100644 index 00000000000..1a3df882299 --- /dev/null +++ b/bundler/tests/.cache/deno/ee36f05790a94dabab7195381c49135a6395df44.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.67.0/_util/assert.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/ee75c362415c966a02970d3c1a67639b59e574c6.ts b/bundler/tests/.cache/deno/ee75c362415c966a02970d3c1a67639b59e574c6.ts new file mode 100644 index 00000000000..71ee0fddc96 --- /dev/null +++ b/bundler/tests/.cache/deno/ee75c362415c966a02970d3c1a67639b59e574c6.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/last.js + + +import nth from './nth.js'; + + +/** + * Returns the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.init, R.head, R.tail + * @example + * + * R.last(['fi', 'fo', 'fum']); //=> 'fum' + * R.last([]); //=> undefined + * + * R.last('abc'); //=> 'c' + * R.last(''); //=> '' + */ +var last = nth(-1); +export default last; diff --git a/bundler/tests/.cache/deno/eeb9cd4a2ad84d4eab0171ad7698d8c30bde9b3c.ts b/bundler/tests/.cache/deno/eeb9cd4a2ad84d4eab0171ad7698d8c30bde9b3c.ts new file mode 100644 index 00000000000..51eb31067f6 --- /dev/null +++ b/bundler/tests/.cache/deno/eeb9cd4a2ad84d4eab0171ad7698d8c30bde9b3c.ts @@ -0,0 +1,79 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/subscription/mapAsyncIterator.js + + +import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols.js'; + +/** + * Given an AsyncIterable and a callback function, return an AsyncIterator + * which produces values mapped via calling the callback function. + */ +export default function mapAsyncIterator(iterable, callback, rejectCallback) { + // $FlowFixMe + const iteratorMethod = iterable[SYMBOL_ASYNC_ITERATOR]; + const iterator = iteratorMethod.call(iterable); + let $return; + let abruptClose; + + if (typeof iterator.return === 'function') { + $return = iterator.return; + + abruptClose = error => { + const rethrow = () => Promise.reject(error); + + return $return.call(iterator).then(rethrow, rethrow); + }; + } + + function mapResult(result) { + return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose); + } + + let mapReject; + + if (rejectCallback) { + // Capture rejectCallback to ensure it cannot be null. + const reject = rejectCallback; + + mapReject = error => asyncMapValue(error, reject).then(iteratorResult, abruptClose); + } + /* TODO: Flow doesn't support symbols as keys: + https://github.com/facebook/flow/issues/3258 */ + + + return { + next() { + return iterator.next().then(mapResult, mapReject); + }, + + return() { + return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({ + value: undefined, + done: true + }); + }, + + throw(error) { + if (typeof iterator.throw === 'function') { + return iterator.throw(error).then(mapResult, mapReject); + } + + return Promise.reject(error).catch(abruptClose); + }, + + [SYMBOL_ASYNC_ITERATOR]() { + return this; + } + + }; +} + +function asyncMapValue(value, callback) { + return new Promise(resolve => resolve(callback(value))); +} + +function iteratorResult(value) { + return { + value, + done: false + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/eed75907032872bb5ba621789b35bd1fb7d79d7d.ts b/bundler/tests/.cache/deno/eed75907032872bb5ba621789b35bd1fb7d79d7d.ts new file mode 100644 index 00000000000..16c59a2b4d0 --- /dev/null +++ b/bundler/tests/.cache/deno/eed75907032872bb5ba621789b35bd1fb7d79d7d.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/deps.ts + + +export * as Bson from "./bson/mod.ts"; +export * from "https://deno.land/x/bytes_formater/mod.ts"; +export { BufReader } from "https://deno.land/std@0.77.0/io/mod.ts"; +export { deferred } from "https://deno.land/std@0.77.0/async/deferred.ts"; +export type { Deferred } from "https://deno.land/std@0.77.0/async/deferred.ts"; +export { + assert, + assertEquals, +} from "https://deno.land/std@0.77.0/testing/asserts.ts"; diff --git a/bundler/tests/.cache/deno/ef066e1cbefeaa6a9a59b5ec351fc9ef618459e5.ts b/bundler/tests/.cache/deno/ef066e1cbefeaa6a9a59b5ec351fc9ef618459e5.ts new file mode 100644 index 00000000000..d09703d7d5c --- /dev/null +++ b/bundler/tests/.cache/deno/ef066e1cbefeaa6a9a59b5ec351fc9ef618459e5.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/polyfills/symbols.js + + +// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator + +/* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ +export const SYMBOL_ITERATOR = typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator + +/* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ + +export const SYMBOL_ASYNC_ITERATOR = // $FlowFixMe Flow doesn't define `Symbol.asyncIterator` yet +typeof Symbol === 'function' ? Symbol.asyncIterator : '@@asyncIterator'; +/* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ + +export const SYMBOL_TO_STRING_TAG = // $FlowFixMe Flow doesn't define `Symbol.toStringTag` yet +typeof Symbol === 'function' ? Symbol.toStringTag : '@@toStringTag'; \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ef12a68c948f655914e8dc66d2f1a838897c13d7.ts b/bundler/tests/.cache/deno/ef12a68c948f655914e8dc66d2f1a838897c13d7.ts new file mode 100644 index 00000000000..6922a0cc2be --- /dev/null +++ b/bundler/tests/.cache/deno/ef12a68c948f655914e8dc66d2f1a838897c13d7.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isHsl.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +/** + * @ignore + */ +const hslcomma = /^(hsl)a?\(\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn|\s*)(\s*,\s*(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s*(,\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s*)?\)$/i; + +/** + * @ignore + */ +const hslspace = /^(hsl)a?\(\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn|\s)(\s*(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s*(\/\s*((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s*)?\)$/i; + +export const isHSL = (str: string) => { + assertString(str); + return hslcomma.test(str) || hslspace.test(str); +}; diff --git a/bundler/tests/.cache/deno/ef16c5f68bc6d92b8f58bb4046cc5f7735a24f40.ts b/bundler/tests/.cache/deno/ef16c5f68bc6d92b8f58bb4046cc5f7735a24f40.ts new file mode 100644 index 00000000000..83f3364c700 --- /dev/null +++ b/bundler/tests/.cache/deno/ef16c5f68bc6d92b8f58bb4046cc5f7735a24f40.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isJWT.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { isBase64 } from './isBase64.ts'; + +export const isJWT = (str: string) => { + assertString(str); + + const dotSplit = str.split('.'); + const len = dotSplit.length; + + if (len > 3 || len < 2) { + return false; + } + + return dotSplit.reduce( + (acc, currElem) => acc && isBase64(currElem, { urlSafe: true }), + true + ); +}; diff --git a/bundler/tests/.cache/deno/ef2702d20291c40faaef6ea5e15ae52132e12808.ts b/bundler/tests/.cache/deno/ef2702d20291c40faaef6ea5e15ae52132e12808.ts new file mode 100644 index 00000000000..d75ac737c9c --- /dev/null +++ b/bundler/tests/.cache/deno/ef2702d20291c40faaef6ea5e15ae52132e12808.ts @@ -0,0 +1,21 @@ +// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/findOne.js + + +import { matches, project } from '../../deps.ts'; +import { ReadFileStream } from '../storage.ts'; + +export default async (filename, query, projection) => { + let stream = new ReadFileStream(filename); + query = query || {}; + return new Promise((resolve, reject) => { + stream.on('document', obj => { + if (matches(query, obj)) { + obj = Object.keys(projection).length ? project(obj, projection) : obj; + resolve(obj) + } + }) + stream.on('end', () => { + return resolve(null); + }) + }) +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ef629a5e349cbbe89c05ba06c8b0f5de39d9de13.ts b/bundler/tests/.cache/deno/ef629a5e349cbbe89c05ba06c8b0f5de39d9de13.ts new file mode 100644 index 00000000000..b446116994f --- /dev/null +++ b/bundler/tests/.cache/deno/ef629a5e349cbbe89c05ba06c8b0f5de39d9de13.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/deps.ts + + +// Copyright 2018-2020 the oak authors. All rights reserved. MIT license. + +// This file contains the external dependencies that oak depends upon + +// `std` dependencies + +export { copyBytes, equal } from "https://deno.land/std@0.73.0/bytes/mod.ts"; +export { Sha1 } from "https://deno.land/std@0.73.0/hash/sha1.ts"; +export { HmacSha256 } from "https://deno.land/std@0.73.0/hash/sha256.ts"; +export { serve, serveTLS } from "https://deno.land/std@0.73.0/http/server.ts"; +export { + Status, + STATUS_TEXT, +} from "https://deno.land/std@0.73.0/http/http_status.ts"; +export { BufReader, BufWriter } from "https://deno.land/std@0.73.0/io/bufio.ts"; +export { + basename, + extname, + isAbsolute, + join, + normalize, + parse, + sep, +} from "https://deno.land/std@0.73.0/path/mod.ts"; +export { assert } from "https://deno.land/std@0.73.0/testing/asserts.ts"; +export { + acceptable, + acceptWebSocket, +} from "https://deno.land/std@0.73.0/ws/mod.ts"; +export type { WebSocket } from "https://deno.land/std@0.73.0/ws/mod.ts"; + +// 3rd party dependencies + +export { + contentType, + extension, + lookup, +} from "https://deno.land/x/media_types@v2.5.1/mod.ts"; +export { + compile, + parse as pathParse, + pathToRegexp, +} from "https://deno.land/x/path_to_regexp@v6.2.0/index.ts"; +export type { + Key, + ParseOptions, + TokensToRegexpOptions, +} from "https://deno.land/x/path_to_regexp@v6.2.0/index.ts"; diff --git a/bundler/tests/.cache/deno/efbb02dfca1ae4b1039f0c737256773e5978aac7.ts b/bundler/tests/.cache/deno/efbb02dfca1ae4b1039f0c737256773e5978aac7.ts new file mode 100644 index 00000000000..e5e94da5606 --- /dev/null +++ b/bundler/tests/.cache/deno/efbb02dfca1ae4b1039f0c737256773e5978aac7.ts @@ -0,0 +1,330 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/type/schema.js + + +import find from '../polyfills/find.js'; +import arrayFrom from '../polyfills/arrayFrom.js'; +import objectValues from '../polyfills/objectValues.js'; +import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols.js'; +import inspect from '../jsutils/inspect.js'; +import toObjMap from '../jsutils/toObjMap.js'; +import devAssert from '../jsutils/devAssert.js'; +import instanceOf from '../jsutils/instanceOf.js'; +import isObjectLike from '../jsutils/isObjectLike.js'; +import { __Schema } from './introspection.js'; +import { GraphQLDirective, isDirective, specifiedDirectives } from './directives.js'; +import { isObjectType, isInterfaceType, isUnionType, isInputObjectType, getNamedType } from './definition.js'; +/** + * Test if the given value is a GraphQL schema. + */ + +// eslint-disable-next-line no-redeclare +export function isSchema(schema) { + return instanceOf(schema, GraphQLSchema); +} +export function assertSchema(schema) { + if (!isSchema(schema)) { + throw new Error(`Expected ${inspect(schema)} to be a GraphQL schema.`); + } + + return schema; +} +/** + * Schema Definition + * + * A Schema is created by supplying the root types of each type of operation, + * query and mutation (optional). A schema definition is then supplied to the + * validator and executor. + * + * Example: + * + * const MyAppSchema = new GraphQLSchema({ + * query: MyAppQueryRootType, + * mutation: MyAppMutationRootType, + * }) + * + * Note: When the schema is constructed, by default only the types that are + * reachable by traversing the root types are included, other types must be + * explicitly referenced. + * + * Example: + * + * const characterInterface = new GraphQLInterfaceType({ + * name: 'Character', + * ... + * }); + * + * const humanType = new GraphQLObjectType({ + * name: 'Human', + * interfaces: [characterInterface], + * ... + * }); + * + * const droidType = new GraphQLObjectType({ + * name: 'Droid', + * interfaces: [characterInterface], + * ... + * }); + * + * const schema = new GraphQLSchema({ + * query: new GraphQLObjectType({ + * name: 'Query', + * fields: { + * hero: { type: characterInterface, ... }, + * } + * }), + * ... + * // Since this schema references only the `Character` interface it's + * // necessary to explicitly list the types that implement it if + * // you want them to be included in the final schema. + * types: [humanType, droidType], + * }) + * + * Note: If an array of `directives` are provided to GraphQLSchema, that will be + * the exact list of directives represented and allowed. If `directives` is not + * provided then a default set of the specified directives (e.g. @include and + * @skip) will be used. If you wish to provide *additional* directives to these + * specified directives, you must explicitly declare them. Example: + * + * const MyAppSchema = new GraphQLSchema({ + * ... + * directives: specifiedDirectives.concat([ myCustomDirective ]), + * }) + * + */ + +export class GraphQLSchema { + // Used as a cache for validateSchema(). + constructor(config) { + // If this schema was built from a source known to be valid, then it may be + // marked with assumeValid to avoid an additional type system validation. + this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors. + + devAssert(isObjectLike(config), 'Must provide configuration object.'); + devAssert(!config.types || Array.isArray(config.types), `"types" must be Array if provided but got: ${inspect(config.types)}.`); + devAssert(!config.directives || Array.isArray(config.directives), '"directives" must be Array if provided but got: ' + `${inspect(config.directives)}.`); + this.description = config.description; + this.extensions = config.extensions && toObjMap(config.extensions); + this.astNode = config.astNode; + this.extensionASTNodes = config.extensionASTNodes; + this._queryType = config.query; + this._mutationType = config.mutation; + this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default. + + this._directives = config.directives ?? specifiedDirectives; // To preserve order of user-provided types, we add first to add them to + // the set of "collected" types, so `collectReferencedTypes` ignore them. + + const allReferencedTypes = new Set(config.types); + + if (config.types != null) { + for (const type of config.types) { + // When we ready to process this type, we remove it from "collected" types + // and then add it together with all dependent types in the correct position. + allReferencedTypes.delete(type); + collectReferencedTypes(type, allReferencedTypes); + } + } + + if (this._queryType != null) { + collectReferencedTypes(this._queryType, allReferencedTypes); + } + + if (this._mutationType != null) { + collectReferencedTypes(this._mutationType, allReferencedTypes); + } + + if (this._subscriptionType != null) { + collectReferencedTypes(this._subscriptionType, allReferencedTypes); + } + + for (const directive of this._directives) { + // Directives are not validated until validateSchema() is called. + if (isDirective(directive)) { + for (const arg of directive.args) { + collectReferencedTypes(arg.type, allReferencedTypes); + } + } + } + + collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema. + + this._typeMap = Object.create(null); + this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name. + + this._implementationsMap = Object.create(null); + + for (const namedType of arrayFrom(allReferencedTypes)) { + if (namedType == null) { + continue; + } + + const typeName = namedType.name; + devAssert(typeName, 'One of the provided types for building the Schema is missing a name.'); + + if (this._typeMap[typeName] !== undefined) { + throw new Error(`Schema must contain uniquely named types but contains multiple types named "${typeName}".`); + } + + this._typeMap[typeName] = namedType; + + if (isInterfaceType(namedType)) { + // Store implementations by interface. + for (const iface of namedType.getInterfaces()) { + if (isInterfaceType(iface)) { + let implementations = this._implementationsMap[iface.name]; + + if (implementations === undefined) { + implementations = this._implementationsMap[iface.name] = { + objects: [], + interfaces: [] + }; + } + + implementations.interfaces.push(namedType); + } + } + } else if (isObjectType(namedType)) { + // Store implementations by objects. + for (const iface of namedType.getInterfaces()) { + if (isInterfaceType(iface)) { + let implementations = this._implementationsMap[iface.name]; + + if (implementations === undefined) { + implementations = this._implementationsMap[iface.name] = { + objects: [], + interfaces: [] + }; + } + + implementations.objects.push(namedType); + } + } + } + } + } + + getQueryType() { + return this._queryType; + } + + getMutationType() { + return this._mutationType; + } + + getSubscriptionType() { + return this._subscriptionType; + } + + getTypeMap() { + return this._typeMap; + } + + getType(name) { + return this.getTypeMap()[name]; + } + + getPossibleTypes(abstractType) { + return isUnionType(abstractType) ? abstractType.getTypes() : this.getImplementations(abstractType).objects; + } + + getImplementations(interfaceType) { + const implementations = this._implementationsMap[interfaceType.name]; + return implementations ?? { + objects: [], + interfaces: [] + }; + } // @deprecated: use isSubType instead - will be removed in v16. + + + isPossibleType(abstractType, possibleType) { + return this.isSubType(abstractType, possibleType); + } + + isSubType(abstractType, maybeSubType) { + let map = this._subTypeMap[abstractType.name]; + + if (map === undefined) { + map = Object.create(null); + + if (isUnionType(abstractType)) { + for (const type of abstractType.getTypes()) { + map[type.name] = true; + } + } else { + const implementations = this.getImplementations(abstractType); + + for (const type of implementations.objects) { + map[type.name] = true; + } + + for (const type of implementations.interfaces) { + map[type.name] = true; + } + } + + this._subTypeMap[abstractType.name] = map; + } + + return map[maybeSubType.name] !== undefined; + } + + getDirectives() { + return this._directives; + } + + getDirective(name) { + return find(this.getDirectives(), directive => directive.name === name); + } + + toConfig() { + return { + description: this.description, + query: this.getQueryType(), + mutation: this.getMutationType(), + subscription: this.getSubscriptionType(), + types: objectValues(this.getTypeMap()), + directives: this.getDirectives().slice(), + extensions: this.extensions, + astNode: this.astNode, + extensionASTNodes: this.extensionASTNodes ?? [], + assumeValid: this.__validationErrors !== undefined + }; + } // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'GraphQLSchema'; + } + +} + +function collectReferencedTypes(type, typeSet) { + const namedType = getNamedType(type); + + if (!typeSet.has(namedType)) { + typeSet.add(namedType); + + if (isUnionType(namedType)) { + for (const memberType of namedType.getTypes()) { + collectReferencedTypes(memberType, typeSet); + } + } else if (isObjectType(namedType) || isInterfaceType(namedType)) { + for (const interfaceType of namedType.getInterfaces()) { + collectReferencedTypes(interfaceType, typeSet); + } + + for (const field of objectValues(namedType.getFields())) { + collectReferencedTypes(field.type, typeSet); + + for (const arg of field.args) { + collectReferencedTypes(arg.type, typeSet); + } + } + } else if (isInputObjectType(namedType)) { + for (const field of objectValues(namedType.getFields())) { + collectReferencedTypes(field.type, typeSet); + } + } + } + + return typeSet; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/efed3186d8d4df111727ab07305af7c6ba8d90ea.ts b/bundler/tests/.cache/deno/efed3186d8d4df111727ab07305af7c6ba8d90ea.ts new file mode 100644 index 00000000000..cb126dcbe15 --- /dev/null +++ b/bundler/tests/.cache/deno/efed3186d8d4df111727ab07305af7c6ba8d90ea.ts @@ -0,0 +1,278 @@ +// Loaded from https://deno.land/std@0.85.0/fs/expand_glob.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { + GlobOptions, + globToRegExp, + isAbsolute, + isGlob, + joinGlobs, + normalize, + SEP_PATTERN, +} from "../path/mod.ts"; +import { + _createWalkEntry, + _createWalkEntrySync, + walk, + WalkEntry, + walkSync, +} from "./walk.ts"; +import { assert } from "../_util/assert.ts"; +import { isWindows } from "../_util/os.ts"; + +export interface ExpandGlobOptions extends Omit { + root?: string; + exclude?: string[]; + includeDirs?: boolean; +} + +interface SplitPath { + segments: string[]; + isAbsolute: boolean; + hasTrailingSep: boolean; + // Defined for any absolute Windows path. + winRoot?: string; +} + +function split(path: string): SplitPath { + const s = SEP_PATTERN.source; + const segments = path + .replace(new RegExp(`^${s}|${s}$`, "g"), "") + .split(SEP_PATTERN); + const isAbsolute_ = isAbsolute(path); + return { + segments, + isAbsolute: isAbsolute_, + hasTrailingSep: !!path.match(new RegExp(`${s}$`)), + winRoot: isWindows && isAbsolute_ ? segments.shift() : undefined, + }; +} + +function throwUnlessNotFound(error: Error): void { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } +} + +function comparePath(a: WalkEntry, b: WalkEntry): number { + if (a.path < b.path) return -1; + if (a.path > b.path) return 1; + return 0; +} + +/** Expand the glob string from the specified `root` directory and yield each + * result as a `WalkEntry` object. + * + * See [`globToRegExp()`](../path/glob.ts#globToRegExp) for details on supported + * syntax. + * + * Example: + * + * for await (const file of expandGlob("**\/*.ts")) { + * console.log(file); + * } + */ +export async function* expandGlob( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): AsyncIterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = await _createWalkEntry(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + async function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): AsyncIterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield await _createWalkEntry(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walk(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walk(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for await (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} + +/** Synchronous version of `expandGlob()`. + * + * Example: + * + * for (const file of expandGlobSync("**\/*.ts")) { + * console.log(file); + * } + */ +export function* expandGlobSync( + glob: string, + { + root = Deno.cwd(), + exclude = [], + includeDirs = true, + extended = false, + globstar = false, + }: ExpandGlobOptions = {}, +): IterableIterator { + const globOptions: GlobOptions = { extended, globstar }; + const absRoot = isAbsolute(root) + ? normalize(root) + : joinGlobs([Deno.cwd(), root], globOptions); + const resolveFromRoot = (path: string): string => + isAbsolute(path) + ? normalize(path) + : joinGlobs([absRoot, path], globOptions); + const excludePatterns = exclude + .map(resolveFromRoot) + .map((s: string): RegExp => globToRegExp(s, globOptions)); + const shouldInclude = (path: string): boolean => + !excludePatterns.some((p: RegExp): boolean => !!path.match(p)); + const { segments, hasTrailingSep, winRoot } = split(resolveFromRoot(glob)); + + let fixedRoot = winRoot != undefined ? winRoot : "/"; + while (segments.length > 0 && !isGlob(segments[0])) { + const seg = segments.shift(); + assert(seg != null); + fixedRoot = joinGlobs([fixedRoot, seg], globOptions); + } + + let fixedRootInfo: WalkEntry; + try { + fixedRootInfo = _createWalkEntrySync(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + + function* advanceMatch( + walkInfo: WalkEntry, + globSegment: string, + ): IterableIterator { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment == "..") { + const parentPath = joinGlobs([walkInfo.path, ".."], globOptions); + try { + if (shouldInclude(parentPath)) { + return yield _createWalkEntrySync(parentPath); + } + } catch (error) { + throwUnlessNotFound(error); + } + return; + } else if (globSegment == "**") { + return yield* walkSync(walkInfo.path, { + includeFiles: false, + skip: excludePatterns, + }); + } + yield* walkSync(walkInfo.path, { + maxDepth: 1, + match: [ + globToRegExp( + joinGlobs([walkInfo.path, globSegment], globOptions), + globOptions, + ), + ], + skip: excludePatterns, + }); + } + + let currentMatches: WalkEntry[] = [fixedRootInfo]; + for (const segment of segments) { + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap: Map = new Map(); + for (const currentMatch of currentMatches) { + for (const nextMatch of advanceMatch(currentMatch, segment)) { + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [...nextMatchMap.values()].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => entry.isDirectory, + ); + } + if (!includeDirs) { + currentMatches = currentMatches.filter( + (entry: WalkEntry): boolean => !entry.isDirectory, + ); + } + yield* currentMatches; +} diff --git a/bundler/tests/.cache/deno/f0106891e5e1552cae529dff7c51d6df72ac6664.ts b/bundler/tests/.cache/deno/f0106891e5e1552cae529dff7c51d6df72ac6664.ts new file mode 100644 index 00000000000..2ebc57aa5f7 --- /dev/null +++ b/bundler/tests/.cache/deno/f0106891e5e1552cae529dff7c51d6df72ac6664.ts @@ -0,0 +1,90 @@ +// Loaded from https://deno.land/x/mysql/src/packets/parsers/handshake.ts + + +import { BufferReader, BufferWriter } from "../../buffer.ts"; +import ServerCapabilities from "../../constant/capabilities.ts"; +import { PacketType } from "../../constant/packet.ts"; +import { ReceivePacket } from "../packet.ts"; + +/** @ignore */ +export interface HandshakeBody { + protocolVersion: number; + serverVersion: string; + threadId: number; + seed: Uint8Array; + serverCapabilities: number; + characterSet: number; + statusFlags: number; + authPluginName: string; +} + +/** @ignore */ +export function parseHandshake(reader: BufferReader): HandshakeBody { + const protocolVersion = reader.readUint8(); + const serverVersion = reader.readNullTerminatedString(); + const threadId = reader.readUint32(); + const seedWriter = new BufferWriter(new Uint8Array(20)); + seedWriter.writeBuffer(reader.readBuffer(8)); + reader.skip(1); + let serverCapabilities = reader.readUint16(); + + let characterSet: number = 0, + statusFlags: number = 0, + authPluginDataLength: number = 0, + authPluginName: string = ""; + + if (!reader.finished) { + characterSet = reader.readUint8(); + statusFlags = reader.readUint16(); + serverCapabilities |= reader.readUint16() << 16; + + if ((serverCapabilities & ServerCapabilities.CLIENT_PLUGIN_AUTH) != 0) { + authPluginDataLength = reader.readUint8(); + } else { + reader.skip(1); + } + reader.skip(10); + + if ( + (serverCapabilities & ServerCapabilities.CLIENT_SECURE_CONNECTION) != + 0 + ) { + seedWriter.writeBuffer( + reader.readBuffer(Math.max(13, authPluginDataLength - 8)), + ); + } + + if ((serverCapabilities & ServerCapabilities.CLIENT_PLUGIN_AUTH) != 0) { + authPluginName = reader.readNullTerminatedString(); + } + } + + return { + protocolVersion, + serverVersion, + threadId, + seed: seedWriter.buffer, + serverCapabilities, + characterSet, + statusFlags, + authPluginName, + }; +} + +export enum AuthResult { + AuthPassed, + MethodMismatch, + AuthMoreRequired, +} +export function parseAuth(packet: ReceivePacket): AuthResult { + switch (packet.type) { + case PacketType.EOF_Packet: + return AuthResult.MethodMismatch; + case PacketType.Result: + return AuthResult.AuthMoreRequired; + case PacketType.OK_Packet: + return AuthResult.AuthPassed; + default: + return AuthResult.AuthPassed; + } +} diff --git a/bundler/tests/.cache/deno/f021cf3a9bc498aef7c7438a0d7d790c0d6f9e8d.ts b/bundler/tests/.cache/deno/f021cf3a9bc498aef7c7438a0d7d790c0d6f9e8d.ts new file mode 100644 index 00000000000..613ef2ac85a --- /dev/null +++ b/bundler/tests/.cache/deno/f021cf3a9bc498aef7c7438a0d7d790c0d6f9e8d.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/std@0.77.0/io/streams.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Create a `Writer` from a `WritablseStreamDefaultReader`. */ +export function fromStreamWriter( + streamWriter: WritableStreamDefaultWriter, +): Deno.Writer { + return { + async write(p: Uint8Array): Promise { + await streamWriter.ready; + await streamWriter.write(p); + return p.length; + }, + }; +} + +/** Create a `Reader` from a `ReadableSteramDefaultReader`. */ +export function fromStreamReader( + streamReader: ReadableStreamDefaultReader, +): Deno.Reader { + const buffer = new Deno.Buffer(); + + return { + async read(p: Uint8Array): Promise { + if (buffer.empty()) { + const res = await streamReader.read(); + if (res.done) { + return null; // EOF + } + + await Deno.writeAll(buffer, res.value); + } + + return buffer.read(p); + }, + }; +} diff --git a/bundler/tests/.cache/deno/f05e1cdbd705f9212e8163dce1849842f82d9e66.ts b/bundler/tests/.cache/deno/f05e1cdbd705f9212e8163dce1849842f82d9e66.ts new file mode 100644 index 00000000000..a9911c74961 --- /dev/null +++ b/bundler/tests/.cache/deno/f05e1cdbd705f9212e8163dce1849842f82d9e66.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.82.0/flags/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/f0cf49b6b1c6ffc1b70e866f123da648c406acbc.ts b/bundler/tests/.cache/deno/f0cf49b6b1c6ffc1b70e866f123da648c406acbc.ts new file mode 100644 index 00000000000..5e3ca93ec21 --- /dev/null +++ b/bundler/tests/.cache/deno/f0cf49b6b1c6ffc1b70e866f123da648c406acbc.ts @@ -0,0 +1,26 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/length.js + + +import _curry1 from './internal/_curry1.js'; +import _isNumber from './internal/_isNumber.js'; + + +/** + * Returns the number of elements in the array by returning `list.length`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [a] -> Number + * @param {Array} list The array to inspect. + * @return {Number} The length of the array. + * @example + * + * R.length([]); //=> 0 + * R.length([1, 2, 3]); //=> 3 + */ +var length = _curry1(function length(list) { + return list != null && _isNumber(list.length) ? list.length : NaN; +}); +export default length; diff --git a/bundler/tests/.cache/deno/f0d10a65fce9496ef900f85b245f52ff507b9c60.ts b/bundler/tests/.cache/deno/f0d10a65fce9496ef900f85b245f52ff507b9c60.ts new file mode 100644 index 00000000000..a7641fc9c5c --- /dev/null +++ b/bundler/tests/.cache/deno/f0d10a65fce9496ef900f85b245f52ff507b9c60.ts @@ -0,0 +1,24 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/stringify.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { dump } from "./dumper/dumper.ts"; +import type { DumperStateOptions } from "./dumper/dumper_state.ts"; + +export type DumpOptions = DumperStateOptions; + +/** + * Serializes `object` as a YAML document. + * + * You can disable exceptions by setting the skipInvalid option to true. + */ +export function stringify( + obj: Record, + options?: DumpOptions, +): string { + return dump(obj, options); +} diff --git a/bundler/tests/.cache/deno/f0d7d04c906a624c1dc1939575abc9da396f948d.ts b/bundler/tests/.cache/deno/f0d7d04c906a624c1dc1939575abc9da396f948d.ts new file mode 100644 index 00000000000..42c039ccfbd --- /dev/null +++ b/bundler/tests/.cache/deno/f0d7d04c906a624c1dc1939575abc9da396f948d.ts @@ -0,0 +1,191 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/int.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; +import { Any, isNegativeZero } from "../utils.ts"; + +function isHexCode(c: number): boolean { + return ( + (0x30 <= /* 0 */ c && c <= 0x39) /* 9 */ || + (0x41 <= /* A */ c && c <= 0x46) /* F */ || + (0x61 <= /* a */ c && c <= 0x66) /* f */ + ); +} + +function isOctCode(c: number): boolean { + return 0x30 <= /* 0 */ c && c <= 0x37 /* 7 */; +} + +function isDecCode(c: number): boolean { + return 0x30 <= /* 0 */ c && c <= 0x39 /* 9 */; +} + +function resolveYamlInteger(data: string): boolean { + const max = data.length; + let index = 0; + let hasDigits = false; + + if (!max) return false; + + let ch = data[index]; + + // sign + if (ch === "-" || ch === "+") { + ch = data[++index]; + } + + if (ch === "0") { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === "b") { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (ch !== "0" && ch !== "1") return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + if (ch === "x") { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + + // base 10 (except 0) or base 60 + + // value should not start with `_`; + if (ch === "_") return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === "_") continue; + if (ch === ":") break; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === "_") return false; + + // if !base60 - done; + if (ch !== ":") return true; + + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} + +function constructYamlInteger(data: string): number { + let value = data; + const digits: number[] = []; + + if (value.indexOf("_") !== -1) { + value = value.replace(/_/g, ""); + } + + let sign = 1; + let ch = value[0]; + if (ch === "-" || ch === "+") { + if (ch === "-") sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === "0") return 0; + + if (ch === "0") { + if (value[1] === "b") return sign * parseInt(value.slice(2), 2); + if (value[1] === "x") return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + + if (value.indexOf(":") !== -1) { + value.split(":").forEach((v): void => { + digits.unshift(parseInt(v, 10)); + }); + + let valueInt = 0; + let base = 1; + + digits.forEach((d): void => { + valueInt += d * base; + base *= 60; + }); + + return sign * valueInt; + } + + return sign * parseInt(value, 10); +} + +function isInteger(object: Any): boolean { + return ( + Object.prototype.toString.call(object) === "[object Number]" && + object % 1 === 0 && + !isNegativeZero(object) + ); +} + +export const int = new Type("tag:yaml.org,2002:int", { + construct: constructYamlInteger, + defaultStyle: "decimal", + kind: "scalar", + predicate: isInteger, + represent: { + binary(obj: number): string { + return obj >= 0 + ? `0b${obj.toString(2)}` + : `-0b${obj.toString(2).slice(1)}`; + }, + octal(obj: number): string { + return obj >= 0 ? `0${obj.toString(8)}` : `-0${obj.toString(8).slice(1)}`; + }, + decimal(obj: number): string { + return obj.toString(10); + }, + hexadecimal(obj: number): string { + return obj >= 0 + ? `0x${obj.toString(16).toUpperCase()}` + : `-0x${obj.toString(16).toUpperCase().slice(1)}`; + }, + }, + resolve: resolveYamlInteger, + styleAliases: { + binary: [2, "bin"], + decimal: [10, "dec"], + hexadecimal: [16, "hex"], + octal: [8, "oct"], + }, +}); diff --git a/bundler/tests/.cache/deno/f12d86e54fc893b9d275f17892a2962f70e7b169.ts b/bundler/tests/.cache/deno/f12d86e54fc893b9d275f17892a2962f70e7b169.ts new file mode 100644 index 00000000000..3953c43f4a6 --- /dev/null +++ b/bundler/tests/.cache/deno/f12d86e54fc893b9d275f17892a2962f70e7b169.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/abc@v1.2.4/vendor/https/deno.land/std/http/server.ts + + +export * from "https://deno.land/std@0.81.0/http/server.ts"; diff --git a/bundler/tests/.cache/deno/f182768bd362127278228ab5beef4074f8cd52f6.ts b/bundler/tests/.cache/deno/f182768bd362127278228ab5beef4074f8cd52f6.ts new file mode 100644 index 00000000000..c40ac3f7bad --- /dev/null +++ b/bundler/tests/.cache/deno/f182768bd362127278228ab5beef4074f8cd52f6.ts @@ -0,0 +1,200 @@ +// Loaded from https://deno.land/std@0.73.0/http/http_status.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** HTTP status codes */ +export enum Status { + /** RFC 7231, 6.2.1 */ + Continue = 100, + /** RFC 7231, 6.2.2 */ + SwitchingProtocols = 101, + /** RFC 2518, 10.1 */ + Processing = 102, + /** RFC 8297 **/ + EarlyHints = 103, + /** RFC 7231, 6.3.1 */ + OK = 200, + /** RFC 7231, 6.3.2 */ + Created = 201, + /** RFC 7231, 6.3.3 */ + Accepted = 202, + /** RFC 7231, 6.3.4 */ + NonAuthoritativeInfo = 203, + /** RFC 7231, 6.3.5 */ + NoContent = 204, + /** RFC 7231, 6.3.6 */ + ResetContent = 205, + /** RFC 7233, 4.1 */ + PartialContent = 206, + /** RFC 4918, 11.1 */ + MultiStatus = 207, + /** RFC 5842, 7.1 */ + AlreadyReported = 208, + /** RFC 3229, 10.4.1 */ + IMUsed = 226, + + /** RFC 7231, 6.4.1 */ + MultipleChoices = 300, + /** RFC 7231, 6.4.2 */ + MovedPermanently = 301, + /** RFC 7231, 6.4.3 */ + Found = 302, + /** RFC 7231, 6.4.4 */ + SeeOther = 303, + /** RFC 7232, 4.1 */ + NotModified = 304, + /** RFC 7231, 6.4.5 */ + UseProxy = 305, + /** RFC 7231, 6.4.7 */ + TemporaryRedirect = 307, + /** RFC 7538, 3 */ + PermanentRedirect = 308, + + /** RFC 7231, 6.5.1 */ + BadRequest = 400, + /** RFC 7235, 3.1 */ + Unauthorized = 401, + /** RFC 7231, 6.5.2 */ + PaymentRequired = 402, + /** RFC 7231, 6.5.3 */ + Forbidden = 403, + /** RFC 7231, 6.5.4 */ + NotFound = 404, + /** RFC 7231, 6.5.5 */ + MethodNotAllowed = 405, + /** RFC 7231, 6.5.6 */ + NotAcceptable = 406, + /** RFC 7235, 3.2 */ + ProxyAuthRequired = 407, + /** RFC 7231, 6.5.7 */ + RequestTimeout = 408, + /** RFC 7231, 6.5.8 */ + Conflict = 409, + /** RFC 7231, 6.5.9 */ + Gone = 410, + /** RFC 7231, 6.5.10 */ + LengthRequired = 411, + /** RFC 7232, 4.2 */ + PreconditionFailed = 412, + /** RFC 7231, 6.5.11 */ + RequestEntityTooLarge = 413, + /** RFC 7231, 6.5.12 */ + RequestURITooLong = 414, + /** RFC 7231, 6.5.13 */ + UnsupportedMediaType = 415, + /** RFC 7233, 4.4 */ + RequestedRangeNotSatisfiable = 416, + /** RFC 7231, 6.5.14 */ + ExpectationFailed = 417, + /** RFC 7168, 2.3.3 */ + Teapot = 418, + /** RFC 7540, 9.1.2 */ + MisdirectedRequest = 421, + /** RFC 4918, 11.2 */ + UnprocessableEntity = 422, + /** RFC 4918, 11.3 */ + Locked = 423, + /** RFC 4918, 11.4 */ + FailedDependency = 424, + /** RFC 8470, 5.2 */ + TooEarly = 425, + /** RFC 7231, 6.5.15 */ + UpgradeRequired = 426, + /** RFC 6585, 3 */ + PreconditionRequired = 428, + /** RFC 6585, 4 */ + TooManyRequests = 429, + /** RFC 6585, 5 */ + RequestHeaderFieldsTooLarge = 431, + /** RFC 7725, 3 */ + UnavailableForLegalReasons = 451, + + /** RFC 7231, 6.6.1 */ + InternalServerError = 500, + /** RFC 7231, 6.6.2 */ + NotImplemented = 501, + /** RFC 7231, 6.6.3 */ + BadGateway = 502, + /** RFC 7231, 6.6.4 */ + ServiceUnavailable = 503, + /** RFC 7231, 6.6.5 */ + GatewayTimeout = 504, + /** RFC 7231, 6.6.6 */ + HTTPVersionNotSupported = 505, + /** RFC 2295, 8.1 */ + VariantAlsoNegotiates = 506, + /** RFC 4918, 11.5 */ + InsufficientStorage = 507, + /** RFC 5842, 7.2 */ + LoopDetected = 508, + /** RFC 2774, 7 */ + NotExtended = 510, + /** RFC 6585, 6 */ + NetworkAuthenticationRequired = 511, +} + +export const STATUS_TEXT = new Map([ + [Status.Continue, "Continue"], + [Status.SwitchingProtocols, "Switching Protocols"], + [Status.Processing, "Processing"], + [Status.EarlyHints, "Early Hints"], + [Status.OK, "OK"], + [Status.Created, "Created"], + [Status.Accepted, "Accepted"], + [Status.NonAuthoritativeInfo, "Non-Authoritative Information"], + [Status.NoContent, "No Content"], + [Status.ResetContent, "Reset Content"], + [Status.PartialContent, "Partial Content"], + [Status.MultiStatus, "Multi-Status"], + [Status.AlreadyReported, "Already Reported"], + [Status.IMUsed, "IM Used"], + [Status.MultipleChoices, "Multiple Choices"], + [Status.MovedPermanently, "Moved Permanently"], + [Status.Found, "Found"], + [Status.SeeOther, "See Other"], + [Status.NotModified, "Not Modified"], + [Status.UseProxy, "Use Proxy"], + [Status.TemporaryRedirect, "Temporary Redirect"], + [Status.PermanentRedirect, "Permanent Redirect"], + [Status.BadRequest, "Bad Request"], + [Status.Unauthorized, "Unauthorized"], + [Status.PaymentRequired, "Payment Required"], + [Status.Forbidden, "Forbidden"], + [Status.NotFound, "Not Found"], + [Status.MethodNotAllowed, "Method Not Allowed"], + [Status.NotAcceptable, "Not Acceptable"], + [Status.ProxyAuthRequired, "Proxy Authentication Required"], + [Status.RequestTimeout, "Request Timeout"], + [Status.Conflict, "Conflict"], + [Status.Gone, "Gone"], + [Status.LengthRequired, "Length Required"], + [Status.PreconditionFailed, "Precondition Failed"], + [Status.RequestEntityTooLarge, "Request Entity Too Large"], + [Status.RequestURITooLong, "Request URI Too Long"], + [Status.UnsupportedMediaType, "Unsupported Media Type"], + [Status.RequestedRangeNotSatisfiable, "Requested Range Not Satisfiable"], + [Status.ExpectationFailed, "Expectation Failed"], + [Status.Teapot, "I'm a teapot"], + [Status.MisdirectedRequest, "Misdirected Request"], + [Status.UnprocessableEntity, "Unprocessable Entity"], + [Status.Locked, "Locked"], + [Status.FailedDependency, "Failed Dependency"], + [Status.TooEarly, "Too Early"], + [Status.UpgradeRequired, "Upgrade Required"], + [Status.PreconditionRequired, "Precondition Required"], + [Status.TooManyRequests, "Too Many Requests"], + [Status.RequestHeaderFieldsTooLarge, "Request Header Fields Too Large"], + [Status.UnavailableForLegalReasons, "Unavailable For Legal Reasons"], + [Status.InternalServerError, "Internal Server Error"], + [Status.NotImplemented, "Not Implemented"], + [Status.BadGateway, "Bad Gateway"], + [Status.ServiceUnavailable, "Service Unavailable"], + [Status.GatewayTimeout, "Gateway Timeout"], + [Status.HTTPVersionNotSupported, "HTTP Version Not Supported"], + [Status.VariantAlsoNegotiates, "Variant Also Negotiates"], + [Status.InsufficientStorage, "Insufficient Storage"], + [Status.LoopDetected, "Loop Detected"], + [Status.NotExtended, "Not Extended"], + [Status.NetworkAuthenticationRequired, "Network Authentication Required"], +]); diff --git a/bundler/tests/.cache/deno/f1859871f9151fabaedbb685dc3ed931daad3b94.ts b/bundler/tests/.cache/deno/f1859871f9151fabaedbb685dc3ed931daad3b94.ts new file mode 100644 index 00000000000..1dde753c7b4 --- /dev/null +++ b/bundler/tests/.cache/deno/f1859871f9151fabaedbb685dc3ed931daad3b94.ts @@ -0,0 +1,50 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/anyPass.js + + +import _curry1 from './internal/_curry1.js'; +import curryN from './curryN.js'; +import max from './max.js'; +import pluck from './pluck.js'; +import reduce from './reduce.js'; + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if at least one of the provided predicates is + * satisfied by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.allPass + * @example + * + * const isClub = R.propEq('suit', '♣'); + * const isSpade = R.propEq('suit', '♠'); + * const isBlackCard = R.anyPass([isClub, isSpade]); + * + * isBlackCard({rank: '10', suit: '♣'}); //=> true + * isBlackCard({rank: 'Q', suit: '♠'}); //=> true + * isBlackCard({rank: 'Q', suit: '♦'}); //=> false + */ +var anyPass = _curry1(function anyPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function() { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (preds[idx].apply(this, arguments)) { + return true; + } + idx += 1; + } + return false; + }); +}); +export default anyPass; diff --git a/bundler/tests/.cache/deno/f195ae14bfe1b07bbe964b4d60ad7f2e90532dac.ts b/bundler/tests/.cache/deno/f195ae14bfe1b07bbe964b4d60ad7f2e90532dac.ts new file mode 100644 index 00000000000..7103c9a4b1d --- /dev/null +++ b/bundler/tests/.cache/deno/f195ae14bfe1b07bbe964b4d60ad7f2e90532dac.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/std@0.73.0/async/deferred.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// TODO(ry) It'd be better to make Deferred a class that inherits from +// Promise, rather than an interface. This is possible in ES2016, however +// typescript produces broken code when targeting ES5 code. +// See https://github.com/Microsoft/TypeScript/issues/15202 +// At the time of writing, the github issue is closed but the problem remains. +export interface Deferred extends Promise { + resolve: (value?: T | PromiseLike) => void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + reject: (reason?: any) => void; +} + +/** Creates a Promise with the `reject` and `resolve` functions + * placed as methods on the promise object itself. It allows you to do: + * + * const p = deferred(); + * // ... + * p.resolve(42); + */ +export function deferred(): Deferred { + let methods; + const promise = new Promise((resolve, reject): void => { + methods = { resolve, reject }; + }); + return Object.assign(promise, methods) as Deferred; +} diff --git a/bundler/tests/.cache/deno/f20637e84a37a448be2af5fef8d4677c3c6cfc51.ts b/bundler/tests/.cache/deno/f20637e84a37a448be2af5fef8d4677c3c6cfc51.ts new file mode 100644 index 00000000000..462e8c2f672 --- /dev/null +++ b/bundler/tests/.cache/deno/f20637e84a37a448be2af5fef8d4677c3c6cfc51.ts @@ -0,0 +1,51 @@ +// Loaded from https://deno.land/std@0.81.0/path/_constants.ts + + +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +/** This module is browser compatible. */ + +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ + +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ + +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ diff --git a/bundler/tests/.cache/deno/f2113260c45138c2949f38ba6fbe55627a0f9253.ts b/bundler/tests/.cache/deno/f2113260c45138c2949f38ba6fbe55627a0f9253.ts new file mode 100644 index 00000000000..98cf546a11a --- /dev/null +++ b/bundler/tests/.cache/deno/f2113260c45138c2949f38ba6fbe55627a0f9253.ts @@ -0,0 +1,12 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xchain.js + + +import _curry2 from './_curry2.js'; +import _flatCat from './_flatCat.js'; +import map from '../map.js'; + + +var _xchain = _curry2(function _xchain(f, xf) { + return map(f, _flatCat(xf)); +}); +export default _xchain; diff --git a/bundler/tests/.cache/deno/f23b63af8d11297d01a07776c5436bc350feb168.ts b/bundler/tests/.cache/deno/f23b63af8d11297d01a07776c5436bc350feb168.ts new file mode 100644 index 00000000000..1e93e3ffccf --- /dev/null +++ b/bundler/tests/.cache/deno/f23b63af8d11297d01a07776c5436bc350feb168.ts @@ -0,0 +1,1042 @@ +// Loaded from https://deno.land/x/jpegts@1.1/lib/decoder.ts + + +/* tslint:disable */ + +import { Image } from "./image.ts" + +const JpegImage = (function jpegImage() { + "use strict"; + const dctZigZag = new Int32Array([ + 0, + 1, 8, + 16, 9, 2, + 3, 10, 17, 24, + 32, 25, 18, 11, 4, + 5, 12, 19, 26, 33, 40, + 48, 41, 34, 27, 20, 13, 6, + 7, 14, 21, 28, 35, 42, 49, 56, + 57, 50, 43, 36, 29, 22, 15, + 23, 30, 37, 44, 51, 58, + 59, 52, 45, 38, 31, + 39, 46, 53, 60, + 61, 54, 47, + 55, 62, + 63 + ]); + + const dctCos1 = 4017 // cos(pi/16) + const dctSin1 = 799 // sin(pi/16) + const dctCos3 = 3406 // cos(3*pi/16) + const dctSin3 = 2276 // sin(3*pi/16) + const dctCos6 = 1567 // cos(6*pi/16) + const dctSin6 = 3784 // sin(6*pi/16) + const dctSqrt2 = 5793 // sqrt(2) + const dctSqrt1d2 = 2896 // sqrt(2) / 2 + + function constructor() { + } + + // @ts-ignore + function buildHuffmanTable(codeLengths, values) { + let k = 0 + const code = [] + let i, j, length = 16; + while (length > 0 && !codeLengths[length - 1]) { + length--; + } + code.push({children: [], index: 0}); + let p = code[0], q; + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + // @ts-ignore + p = code.pop(); + // @ts-ignore + p.children[p.index] = values[k]; + while (p.index > 0) { + // @ts-ignore + p = code.pop(); + } + p.index++; + code.push(p); + while (code.length <= i) { + code.push(q = {children: [], index: 0}); + // @ts-ignore + p.children[p.index] = q.children; + p = q; + } + k++; + } + if (i + 1 < length) { + // p here points to last code + code.push(q = {children: [], index: 0}); + // @ts-ignore + p.children[p.index] = q.children; + p = q; + } + } + return code[0].children; + } + + // @ts-ignore + function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) { + + const mcusPerLine = frame.mcusPerLine; + const progressive = frame.progressive; + + const startOffset = offset + let bitsData = 0, bitsCount = 0; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return (bitsData >> bitsCount) & 1; + } + bitsData = data[offset++]; + if (bitsData === 0xFF) { + const nextByte = data[offset++]; + if (nextByte) { + throw new Error("unexpected marker: " + ((bitsData << 8) | nextByte).toString(16)); + } + // unstuff 0 + } + bitsCount = 7; + return bitsData >>> 7; + } + // @ts-ignore + function decodeHuffman(tree) { + let node = tree, bit; + while ((bit = readBit()) !== null) { + node = node[bit]; + if (typeof node === "number") { + return node; + } + if (typeof node !== "object") { + throw new Error("invalid huffman sequence"); + } + } + return null; + } + // @ts-ignore + function receive(length) { + let n = 0; + while (length > 0) { + const bit = readBit(); + if (bit === null) { return; } + n = (n << 1) | bit; + length--; + } + return n; + } + // @ts-ignore + function receiveAndExtend(length) { + const n = receive(length); + // @ts-ignore + if (n >= 1 << (length - 1)) { + return n; + } + // @ts-ignore + return n + (-1 << length) + 1; + } + // @ts-ignore + function decodeBaseline(component, zz) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t); + zz[0] = (component.pred += diff); + let k = 1; + while (k < 64) { + const rs = decodeHuffman(component.huffmanTableAC); + // @ts-ignore + const s = rs & 15, r = rs >> 4; + if (s === 0) { + if (r < 15) { + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + zz[z] = receiveAndExtend(s); + k++; + } + } + // @ts-ignore + function decodeDCFirst(component, zz) { + const t = decodeHuffman(component.huffmanTableDC); + // @ts-ignore + const diff = t === 0 ? 0 : (receiveAndExtend(t) << successive); + zz[0] = (component.pred += diff); + } + // @ts-ignore + function decodeDCSuccessive(component, zz) { + zz[0] |= readBit() << successive; + } + let eobrun = 0; + // @ts-ignore + function decodeACFirst(component, zz) { + if (eobrun > 0) { + eobrun--; + return; + } + let k = spectralStart, e = spectralEnd; + while (k <= e) { + const rs = decodeHuffman(component.huffmanTableAC); + // @ts-ignore + const s = rs & 15, r = rs >> 4; + if (s === 0) { + if (r < 15) { + // @ts-ignore + eobrun = receive(r) + (1 << r) - 1; + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + // @ts-ignore + zz[z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + // @ts-ignore + let successiveACState = 0, successiveACNextValue; + // @ts-ignore + function decodeACSuccessive(component, zz) { + let k = spectralStart, e = spectralEnd, r = 0; + while (k <= e) { + const z = dctZigZag[k]; + const direction = zz[z] < 0 ? -1 : 1; + switch (successiveACState) { + case 0: // initial state + const rs = decodeHuffman(component.huffmanTableAC); + // @ts-ignore + const s = rs & 15; + // @ts-ignore + r = rs >> 4 + if (s === 0) { + if (r < 15) { + // @ts-ignore + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) { + throw new Error("invalid ACn encoding"); + } + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; + } + continue; + case 1: // skipping r zero items + case 2: + if (zz[z]) { + zz[z] += (readBit() << successive) * direction; + } else { + r--; + if (r === 0) { + successiveACState = successiveACState == 2 ? 3 : 0; + } + } + break; + case 3: // set value for a zero item + if (zz[z]) { + zz[z] += (readBit() << successive) * direction; + } else { + // @ts-ignore + zz[z] = successiveACNextValue << successive; + successiveACState = 0; + } + break; + case 4: // eob + if (zz[z]) { + zz[z] += (readBit() << successive) * direction; + } + break; + } + k++; + } + if (successiveACState === 4) { + eobrun--; + if (eobrun === 0) { + successiveACState = 0; + } + } + } + // @ts-ignore + function decodeMcu(component, decode, mcu, row, col) { + const mcuRow = (mcu / mcusPerLine) | 0; + const mcuCol = mcu % mcusPerLine; + const blockRow = mcuRow * component.v + row; + const blockCol = mcuCol * component.h + col; + decode(component, component.blocks[blockRow][blockCol]); + } + // @ts-ignore + function decodeBlock(component, decode, mcu) { + const blockRow = (mcu / component.blocksPerLine) | 0; + const blockCol = mcu % component.blocksPerLine; + decode(component, component.blocks[blockRow][blockCol]); + } + + const componentsLength = components.length; + let component, i, j, k, n; + let decodeFn; + if (progressive) { + if (spectralStart === 0) { + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; + } else { + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; + } + } else { + decodeFn = decodeBaseline; + } + + let mcu = 0, marker; + let mcuExpected; + if (componentsLength == 1) { + mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; + } else { + mcuExpected = mcusPerLine * frame.mcusPerColumn; + } + if (!resetInterval) { resetInterval = mcuExpected; } + + let h, v; + while (mcu < mcuExpected) { + // reset interval stuff + for (i = 0; i < componentsLength; i++) { + components[i].pred = 0; + } + eobrun = 0; + + if (componentsLength == 1) { + component = components[0]; + for (n = 0; n < resetInterval; n++) { + decodeBlock(component, decodeFn, mcu); + mcu++; + } + } else { + for (n = 0; n < resetInterval; n++) { + for (i = 0; i < componentsLength; i++) { + component = components[i]; + h = component.h; + v = component.v; + for (j = 0; j < v; j++) { + for (k = 0; k < h; k++) { + decodeMcu(component, decodeFn, mcu, j, k); + } + } + } + mcu++; + + // If we've reached our expected MCU's, stop decoding + if (mcu === mcuExpected) { break; } + } + } + + // find marker + bitsCount = 0; + marker = (data[offset] << 8) | data[offset + 1]; + if (marker < 0xFF00) { + throw new Error("marker was not found"); + } + + if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx + offset += 2; + } else { + break; + } + } + + return offset - startOffset; + } +// @ts-ignore + function buildComponentData(frame, component) { + const lines = []; + const blocksPerLine = component.blocksPerLine; + const blocksPerColumn = component.blocksPerColumn; + const samplesPerLine = blocksPerLine << 3; + const R = new Int32Array(64), r = new Uint8Array(64); + + // @ts-ignore + function quantizeAndInverse(zz, dataOut, dataIn) { + const qt = component.quantizationTable; + let v0, v1, v2, v3, v4, v5, v6, v7, t; + const p = dataIn; + let i; + + // dequant + for (i = 0; i < 64; i++) { + p[i] = zz[i] * qt[i]; + } + + // inverse DCT on rows + for (i = 0; i < 8; ++i) { + const row = 8 * i; + + // check for all-zero AC coefficients + if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 && + p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 && + p[7 + row] == 0) { + t = (dctSqrt2 * p[0 + row] + 512) >> 10; + p[0 + row] = t; + p[1 + row] = t; + p[2 + row] = t; + p[3 + row] = t; + p[4 + row] = t; + p[5 + row] = t; + p[6 + row] = t; + p[7 + row] = t; + continue; + } + + // stage 4 + v0 = (dctSqrt2 * p[0 + row] + 128) >> 8; + v1 = (dctSqrt2 * p[4 + row] + 128) >> 8; + v2 = p[2 + row]; + v3 = p[6 + row]; + v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8; + v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8; + v5 = p[3 + row] << 4; + v6 = p[5 + row] << 4; + + // stage 3 + t = (v0 - v1 + 1) >> 1; + v0 = (v0 + v1 + 1) >> 1; + v1 = t; + t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8; + v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8; + v3 = t; + t = (v4 - v6 + 1) >> 1; + v4 = (v4 + v6 + 1) >> 1; + v6 = t; + t = (v7 + v5 + 1) >> 1; + v5 = (v7 - v5 + 1) >> 1; + v7 = t; + + // stage 2 + t = (v0 - v3 + 1) >> 1; + v0 = (v0 + v3 + 1) >> 1; + v3 = t; + t = (v1 - v2 + 1) >> 1; + v1 = (v1 + v2 + 1) >> 1; + v2 = t; + t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; + v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; + v7 = t; + t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; + v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; + v6 = t; + + // stage 1 + p[0 + row] = v0 + v7; + p[7 + row] = v0 - v7; + p[1 + row] = v1 + v6; + p[6 + row] = v1 - v6; + p[2 + row] = v2 + v5; + p[5 + row] = v2 - v5; + p[3 + row] = v3 + v4; + p[4 + row] = v3 - v4; + } + + // inverse DCT on columns + for (i = 0; i < 8; ++i) { + const col = i; + + // check for all-zero AC coefficients + if (p[1 * 8 + col] == 0 && p[2 * 8 + col] == 0 && p[3 * 8 + col] == 0 && + p[4 * 8 + col] == 0 && p[5 * 8 + col] == 0 && p[6 * 8 + col] == 0 && + p[7 * 8 + col] == 0) { + t = (dctSqrt2 * dataIn[i + 0] + 8192) >> 14; + p[0 * 8 + col] = t; + p[1 * 8 + col] = t; + p[2 * 8 + col] = t; + p[3 * 8 + col] = t; + p[4 * 8 + col] = t; + p[5 * 8 + col] = t; + p[6 * 8 + col] = t; + p[7 * 8 + col] = t; + continue; + } + + // stage 4 + v0 = (dctSqrt2 * p[0 * 8 + col] + 2048) >> 12; + v1 = (dctSqrt2 * p[4 * 8 + col] + 2048) >> 12; + v2 = p[2 * 8 + col]; + v3 = p[6 * 8 + col]; + v4 = (dctSqrt1d2 * (p[1 * 8 + col] - p[7 * 8 + col]) + 2048) >> 12; + v7 = (dctSqrt1d2 * (p[1 * 8 + col] + p[7 * 8 + col]) + 2048) >> 12; + v5 = p[3 * 8 + col]; + v6 = p[5 * 8 + col]; + + // stage 3 + t = (v0 - v1 + 1) >> 1; + v0 = (v0 + v1 + 1) >> 1; + v1 = t; + t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12; + v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12; + v3 = t; + t = (v4 - v6 + 1) >> 1; + v4 = (v4 + v6 + 1) >> 1; + v6 = t; + t = (v7 + v5 + 1) >> 1; + v5 = (v7 - v5 + 1) >> 1; + v7 = t; + + // stage 2 + t = (v0 - v3 + 1) >> 1; + v0 = (v0 + v3 + 1) >> 1; + v3 = t; + t = (v1 - v2 + 1) >> 1; + v1 = (v1 + v2 + 1) >> 1; + v2 = t; + t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; + v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; + v7 = t; + t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; + v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; + v6 = t; + + // stage 1 + p[0 * 8 + col] = v0 + v7; + p[7 * 8 + col] = v0 - v7; + p[1 * 8 + col] = v1 + v6; + p[6 * 8 + col] = v1 - v6; + p[2 * 8 + col] = v2 + v5; + p[5 * 8 + col] = v2 - v5; + p[3 * 8 + col] = v3 + v4; + p[4 * 8 + col] = v3 - v4; + } + + // convert to 8-bit integers + for (i = 0; i < 64; ++i) { + const sample = 128 + ((p[i] + 8) >> 4); + dataOut[i] = sample < 0 ? 0 : sample > 0xFF ? 0xFF : sample; + } + } + + let i, j; + for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + const scanLine = blockRow << 3; + for (i = 0; i < 8; i++) { + lines.push(new Uint8Array(samplesPerLine)); + } + for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) { + quantizeAndInverse(component.blocks[blockRow][blockCol], r, R); + + let offset = 0, sample = blockCol << 3; + for (j = 0; j < 8; j++) { + const line = lines[scanLine + j]; + for (i = 0; i < 8; i++) { + line[sample + i] = r[offset++]; + } + } + } + } + return lines; + } + + // @ts-ignore + function clampTo8bit(a) { + return a < 0 ? 0 : a > 255 ? 255 : a; + } + + constructor.prototype = { + // @ts-ignore + load: function load(path) { + // let xhr = new XMLHttpRequest(); + // xhr.open("GET", path, true); + // xhr.responseType = "arraybuffer"; + // xhr.onload = (function() { + // // TODO catch parse error + // let data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer); + // this.parse(data); + // if (this.onload) + // this.onload(); + // }).bind(this); + // xhr.send(null); + }, + parse: function parse(data: Uint8Array) { + let offset = 0; + function readUint16() { + const value = (data[offset] << 8) | data[offset + 1]; + offset += 2; + return value; + } + function readDataBlock() { + const length = readUint16(); + const array = data.subarray(offset, offset + length - 2); + offset += array.length; + return array; + } + // @ts-ignore + function prepareComponents(frame) { + let maxH = 0, maxV = 0; + let component, componentId; + for (componentId in frame.components) { + if (frame.components.hasOwnProperty(componentId)) { + component = frame.components[componentId]; + if (maxH < component.h) { maxH = component.h; } + if (maxV < component.v) { maxV = component.v; } + } + } + const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH); + const mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV); + for (componentId in frame.components) { + if (frame.components.hasOwnProperty(componentId)) { + component = frame.components[componentId]; + const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH); + const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / maxV); + const blocksPerLineForMcu = mcusPerLine * component.h; + const blocksPerColumnForMcu = mcusPerColumn * component.v; + const blocks = []; + for (let i = 0; i < blocksPerColumnForMcu; i++) { + const row = []; + for (let j = 0; j < blocksPerLineForMcu; j++) { + row.push(new Int32Array(64)); + } + blocks.push(row); + } + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; + component.blocks = blocks; + } + } + frame.maxH = maxH; + frame.maxV = maxV; + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; + } + let jfif = null; + let adobe = null; + let frame, resetInterval; + const quantizationTables = [], frames = []; + // @ts-ignore + const huffmanTablesAC = [], huffmanTablesDC = []; + let fileMarker = readUint16(); + if (fileMarker != 0xFFD8) { // SOI (Start of Image) + throw new Error("SOI not found"); + } + + fileMarker = readUint16(); + while (fileMarker != 0xFFD9) { // EOI (End of image) + let i, j, l; + switch (fileMarker) { + case 0xFF00: break; + case 0xFFE0: // APP0 (Application Specific) + case 0xFFE1: // APP1 + case 0xFFE2: // APP2 + case 0xFFE3: // APP3 + case 0xFFE4: // APP4 + case 0xFFE5: // APP5 + case 0xFFE6: // APP6 + case 0xFFE7: // APP7 + case 0xFFE8: // APP8 + case 0xFFE9: // APP9 + case 0xFFEA: // APP10 + case 0xFFEB: // APP11 + case 0xFFEC: // APP12 + case 0xFFED: // APP13 + case 0xFFEE: // APP14 + case 0xFFEF: // APP15 + case 0xFFFE: // COM (Comment) + const appData = readDataBlock(); + + if (fileMarker === 0xFFE0) { + if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && + appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\x00' + jfif = { + version: { major: appData[5], minor: appData[6] }, + densityUnits: appData[7], + xDensity: (appData[8] << 8) | appData[9], + yDensity: (appData[10] << 8) | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + // TODO APP1 - Exif + if (fileMarker === 0xFFEE) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && + appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\x00' + adobe = { + version: appData[6], + flags0: (appData[7] << 8) | appData[8], + flags1: (appData[9] << 8) | appData[10], + transformCode: appData[11] + }; + } + } + break; + + case 0xFFDB: // DQT (Define Quantization Tables) + const quantizationTablesLength = readUint16(); + const quantizationTablesEnd = quantizationTablesLength + offset - 2; + while (offset < quantizationTablesEnd) { + const quantizationTableSpec = data[offset++]; + const tableData = new Int32Array(64); + if ((quantizationTableSpec >> 4) === 0) { // 8 bit values + for (j = 0; j < 64; j++) { + const z = dctZigZag[j]; + tableData[z] = data[offset++]; + } + } else if ((quantizationTableSpec >> 4) === 1) { // 16 bit + for (j = 0; j < 64; j++) { + const z = dctZigZag[j]; + tableData[z] = readUint16(); + } + } else { + throw new Error("DQT: invalid table spec"); + } + quantizationTables[quantizationTableSpec & 15] = tableData; + } + break; + + case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT) + case 0xFFC1: // SOF1 (Start of Frame, Extended DCT) + case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT) + readUint16(); // skip data length + frame = {}; + // @ts-ignore + frame.extended = (fileMarker === 0xFFC1); + // @ts-ignore + frame.progressive = (fileMarker === 0xFFC2); + // @ts-ignore + frame.precision = data[offset++]; + // @ts-ignore + frame.scanLines = readUint16(); + // @ts-ignore + frame.samplesPerLine = readUint16(); + // @ts-ignore + frame.components = {}; + // @ts-ignore + frame.componentsOrder = []; + let componentsCount = data[offset++], componentId; + for (i = 0; i < componentsCount; i++) { + componentId = data[offset]; + const h = data[offset + 1] >> 4; + const v = data[offset + 1] & 15; + const qId = data[offset + 2]; + // @ts-ignore + frame.componentsOrder.push(componentId); + // @ts-ignore + frame.components[componentId] = { + h: h, + v: v, + quantizationIdx: qId + }; + offset += 3; + } + prepareComponents(frame); + frames.push(frame); + break; + + case 0xFFC4: // DHT (Define Huffman Tables) + const huffmanLength = readUint16(); + for (i = 2; i < huffmanLength;) { + const huffmanTableSpec = data[offset++]; + const codeLengths = new Uint8Array(16); + let codeLengthSum = 0; + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += (codeLengths[j] = data[offset]); + } + const huffmanValues = new Uint8Array(codeLengthSum); + for (j = 0; j < codeLengthSum; j++, offset++) { + huffmanValues[j] = data[offset]; + } + i += 17 + codeLengthSum; + + ((huffmanTableSpec >> 4) === 0 ? + // @ts-ignore + huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = + buildHuffmanTable(codeLengths, huffmanValues); + } + break; + + case 0xFFDD: // DRI (Define Restart Interval) + readUint16(); // skip data length + resetInterval = readUint16(); + break; + + case 0xFFDA: // SOS (Start of Scan) + readUint16(); + const selectorsCount = data[offset++]; + let components = [], component; + for (i = 0; i < selectorsCount; i++) { + // @ts-ignore + component = frame.components[data[offset++]]; + const tableSpec = data[offset++]; + // @ts-ignore + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + // @ts-ignore + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + const spectralStart = data[offset++]; + const spectralEnd = data[offset++]; + const successiveApproximation = data[offset++]; + const processed = decodeScan(data, offset, + frame, components, resetInterval, + spectralStart, spectralEnd, + successiveApproximation >> 4, successiveApproximation & 15); + offset += processed; + break; + + case 0xFFFF: // Fill bytes + if (data[offset] !== 0xFF) { // Avoid skipping a valid marker. + offset--; + } + break; + + default: + if (data[offset - 3] == 0xFF && + data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { + // could be incorrect encoding -- last 0xFF byte of the previous + // block was eaten by the encoder + offset -= 3; + break; + } + throw new Error("unknown JPEG marker " + fileMarker.toString(16)); + } + fileMarker = readUint16(); + } + if (frames.length != 1) { + throw new Error("only single frame JPEGs supported"); + } + + // set each frame's components quantization table + for (let i = 0; i < frames.length; i++) { + // @ts-ignore + const cp = frames[i].components; + for (const j in cp) { + cp[j].quantizationTable = quantizationTables[cp[j].quantizationIdx]; + delete cp[j].quantizationIdx; + } + } + // @ts-ignore + this.width = frame.samplesPerLine; + // @ts-ignore + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; + // @ts-ignore + for (let i = 0; i < frame.componentsOrder.length; i++) { + // @ts-ignore + const component = frame.components[frame.componentsOrder[i]]; + this.components.push({ + lines: buildComponentData(frame, component), + // @ts-ignore + scaleX: component.h / frame.maxH, + // @ts-ignore + scaleY: component.v / frame.maxV + }); + } + }, + // @ts-ignore + getData: function getData(width, height) { + const scaleX = this.width / width, scaleY = this.height / height; + + let component1, component2, component3, component4; + let component1Line, component2Line, component3Line, component4Line; + let x, y; + let offset = 0; + let Y, Cb, Cr, K, C, M, Ye, R, G, B; + let colorTransform; + const dataLength = width * height * this.components.length; + const data = new Uint8Array(dataLength); + switch (this.components.length) { + case 1: + component1 = this.components[0]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + + data[offset++] = Y; + } + } + break; + case 2: + // PDF might compress two component data in custom colorspace + component1 = this.components[0]; + component2 = this.components[1]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + data[offset++] = Y; + Y = component2Line[0 | (x * component2.scaleX * scaleX)]; + data[offset++] = Y; + } + } + break; + case 3: + // The default transform for three components is true + colorTransform = true; + // The adobe transform marker overrides any previous setting + if (this.adobe && this.adobe.transformCode) { + colorTransform = true; + } else if (typeof this.colorTransform !== "undefined") { + colorTransform = !!this.colorTransform; + } + + component1 = this.components[0]; + component2 = this.components[1]; + component3 = this.components[2]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + if (!colorTransform) { + R = component1Line[0 | (x * component1.scaleX * scaleX)]; + G = component2Line[0 | (x * component2.scaleX * scaleX)]; + B = component3Line[0 | (x * component3.scaleX * scaleX)]; + } else { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + Cb = component2Line[0 | (x * component2.scaleX * scaleX)]; + Cr = component3Line[0 | (x * component3.scaleX * scaleX)]; + + R = clampTo8bit(Y + 1.402 * (Cr - 128)); + G = clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128)); + B = clampTo8bit(Y + 1.772 * (Cb - 128)); + } + + data[offset++] = R; + data[offset++] = G; + data[offset++] = B; + } + } + break; + case 4: + if (!this.adobe) { + throw new Error("Unsupported color mode (4 components)"); + } + // The default transform for four components is false + colorTransform = false; + // The adobe transform marker overrides any previous setting + if (this.adobe && this.adobe.transformCode) { + colorTransform = true; + } else if (typeof this.colorTransform !== "undefined") { + colorTransform = !!this.colorTransform; + } + + component1 = this.components[0]; + component2 = this.components[1]; + component3 = this.components[2]; + component4 = this.components[3]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)]; + component4Line = component4.lines[0 | (y * component4.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + if (!colorTransform) { + C = component1Line[0 | (x * component1.scaleX * scaleX)]; + M = component2Line[0 | (x * component2.scaleX * scaleX)]; + Ye = component3Line[0 | (x * component3.scaleX * scaleX)]; + K = component4Line[0 | (x * component4.scaleX * scaleX)]; + } else { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + Cb = component2Line[0 | (x * component2.scaleX * scaleX)]; + Cr = component3Line[0 | (x * component3.scaleX * scaleX)]; + K = component4Line[0 | (x * component4.scaleX * scaleX)]; + + C = 255 - clampTo8bit(Y + 1.402 * (Cr - 128)); + M = 255 - clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128)); + Ye = 255 - clampTo8bit(Y + 1.772 * (Cb - 128)); + } + data[offset++] = 255 - C; + data[offset++] = 255 - M; + data[offset++] = 255 - Ye; + data[offset++] = 255 - K; + } + } + break; + default: + throw new Error("Unsupported color mode"); + } + return data; + }, + // @ts-ignore + copyToImageData: function copyToImageData(imageData) { + const width = imageData.width, height = imageData.height; + const imageDataArray = imageData.data; + const data = this.getData(width, height); + let i = 0, j = 0, x, y; + let Y, K, C, M, R, G, B; + switch (this.components.length) { + case 1: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + Y = data[i++]; + + imageDataArray[j++] = Y; + imageDataArray[j++] = Y; + imageDataArray[j++] = Y; + imageDataArray[j++] = 255; + } + } + break; + case 3: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + R = data[i++]; + G = data[i++]; + B = data[i++]; + + imageDataArray[j++] = R; + imageDataArray[j++] = G; + imageDataArray[j++] = B; + imageDataArray[j++] = 255; + } + } + break; + case 4: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + C = data[i++]; + M = data[i++]; + Y = data[i++]; + K = data[i++]; + + R = 255 - clampTo8bit(C * (1 - K / 255) + K); + G = 255 - clampTo8bit(M * (1 - K / 255) + K); + B = 255 - clampTo8bit(Y * (1 - K / 255) + K); + + imageDataArray[j++] = R; + imageDataArray[j++] = G; + imageDataArray[j++] = B; + imageDataArray[j++] = 255; + } + } + break; + default: + throw new Error("Unsupported color mode"); + } + } + }; + + return constructor; +})(); + +export const decode = function (jpegData: Uint8Array, colorTransform: boolean = true): Image { + + const arr = new Uint8Array(jpegData); + // @ts-ignore + const decoder = new JpegImage(); + decoder.parse(arr); + decoder.colorTransform = colorTransform; + + const image = new Image(); + image.height = decoder.height + image.width = decoder.width + image.data = new Uint8Array(decoder.width * decoder.height * 4) + decoder.copyToImageData(image); + return image; +} diff --git a/bundler/tests/.cache/deno/f24663bf6bc39d346498c12b1236261ea6b2aefd.ts b/bundler/tests/.cache/deno/f24663bf6bc39d346498c12b1236261ea6b2aefd.ts new file mode 100644 index 00000000000..930055cc632 --- /dev/null +++ b/bundler/tests/.cache/deno/f24663bf6bc39d346498c12b1236261ea6b2aefd.ts @@ -0,0 +1,226 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/error/GraphQLError.js + + +// FIXME: +// flowlint uninitialized-instance-property:off +import isObjectLike from '../jsutils/isObjectLike.js'; +import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols.js'; +import { getLocation } from '../language/location.js'; +import { printLocation, printSourceLocation } from '../language/printLocation.js'; +/** + * A GraphQLError describes an Error found during the parse, validate, or + * execute phases of performing a GraphQL operation. In addition to a message + * and stack trace, it also includes information about the locations in a + * GraphQL document and/or execution result that correspond to the Error. + */ + +export class GraphQLError extends Error { + /** + * A message describing the Error for debugging purposes. + * + * Enumerable, and appears in the result of JSON.stringify(). + * + * Note: should be treated as readonly, despite invariant usage. + */ + + /** + * An array of { line, column } locations within the source GraphQL document + * which correspond to this error. + * + * Errors during validation often contain multiple locations, for example to + * point out two things with the same name. Errors during execution include a + * single location, the field which produced the error. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ + + /** + * An array describing the JSON-path into the execution response which + * corresponds to this error. Only included for errors during execution. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ + + /** + * An array of GraphQL AST Nodes corresponding to this error. + */ + + /** + * The source GraphQL document for the first location of this error. + * + * Note that if this Error represents more than one node, the source may not + * represent nodes after the first node. + */ + + /** + * An array of character offsets within the source GraphQL document + * which correspond to this error. + */ + + /** + * The original error thrown from a field resolver during execution. + */ + + /** + * Extension fields to add to the formatted error. + */ + constructor(message, nodes, source, positions, path, originalError, extensions) { + super(message); // Compute list of blame nodes. + + const _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions. + + + let _source = source; + + if (!_source && _nodes) { + _source = _nodes[0].loc?.source; + } + + let _positions = positions; + + if (!_positions && _nodes) { + _positions = _nodes.reduce((list, node) => { + if (node.loc) { + list.push(node.loc.start); + } + + return list; + }, []); + } + + if (_positions && _positions.length === 0) { + _positions = undefined; + } + + let _locations; + + if (positions && source) { + _locations = positions.map(pos => getLocation(source, pos)); + } else if (_nodes) { + _locations = _nodes.reduce((list, node) => { + if (node.loc) { + list.push(getLocation(node.loc.source, node.loc.start)); + } + + return list; + }, []); + } + + let _extensions = extensions; + + if (_extensions == null && originalError != null) { + const originalExtensions = originalError.extensions; + + if (isObjectLike(originalExtensions)) { + _extensions = originalExtensions; + } + } + + Object.defineProperties(this, { + name: { + value: 'GraphQLError' + }, + message: { + value: message, + // By being enumerable, JSON.stringify will include `message` in the + // resulting output. This ensures that the simplest possible GraphQL + // service adheres to the spec. + enumerable: true, + writable: true + }, + locations: { + // Coercing falsy values to undefined ensures they will not be included + // in JSON.stringify() when not provided. + value: _locations ?? undefined, + // By being enumerable, JSON.stringify will include `locations` in the + // resulting output. This ensures that the simplest possible GraphQL + // service adheres to the spec. + enumerable: _locations != null + }, + path: { + // Coercing falsy values to undefined ensures they will not be included + // in JSON.stringify() when not provided. + value: path ?? undefined, + // By being enumerable, JSON.stringify will include `path` in the + // resulting output. This ensures that the simplest possible GraphQL + // service adheres to the spec. + enumerable: path != null + }, + nodes: { + value: _nodes ?? undefined + }, + source: { + value: _source ?? undefined + }, + positions: { + value: _positions ?? undefined + }, + originalError: { + value: originalError + }, + extensions: { + // Coercing falsy values to undefined ensures they will not be included + // in JSON.stringify() when not provided. + value: _extensions ?? undefined, + // By being enumerable, JSON.stringify will include `path` in the + // resulting output. This ensures that the simplest possible GraphQL + // service adheres to the spec. + enumerable: _extensions != null + } + }); // Include (non-enumerable) stack trace. + + if (originalError?.stack) { + Object.defineProperty(this, 'stack', { + value: originalError.stack, + writable: true, + configurable: true + }); + return; + } + /* istanbul ignore next (See: https://github.com/graphql/graphql-js/issues/2317) */ + + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, GraphQLError); + } else { + Object.defineProperty(this, 'stack', { + value: Error().stack, + writable: true, + configurable: true + }); + } + } + + toString() { + return printError(this); + } // FIXME: workaround to not break chai comparisons, should be remove in v16 + // $FlowFixMe Flow doesn't support computed properties yet + + + get [SYMBOL_TO_STRING_TAG]() { + return 'Object'; + } + +} +/** + * Prints a GraphQLError to a string, representing useful location information + * about the error's position in the source. + */ + +export function printError(error) { + let output = error.message; + + if (error.nodes) { + for (const node of error.nodes) { + if (node.loc) { + output += '\n\n' + printLocation(node.loc); + } + } + } else if (error.source && error.locations) { + for (const location of error.locations) { + output += '\n\n' + printSourceLocation(error.source, location); + } + } + + return output; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/f2ab55592a01b67ce2a240bafd09d5b932fe8c25.ts b/bundler/tests/.cache/deno/f2ab55592a01b67ce2a240bafd09d5b932fe8c25.ts new file mode 100644 index 00000000000..dbd6408c32f --- /dev/null +++ b/bundler/tests/.cache/deno/f2ab55592a01b67ce2a240bafd09d5b932fe8c25.ts @@ -0,0 +1,162 @@ +// Loaded from https://deno.land/std@0.77.0/bytes/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** Find first index of binary pattern from a. If not found, then return -1 + * @param source source array + * @param pat pattern to find in source array + */ +export function findIndex(source: Uint8Array, pat: Uint8Array): number { + const s = pat[0]; + for (let i = 0; i < source.length; i++) { + if (source[i] !== s) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j++; + if (source[j] !== pat[j - pin]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin; + } + } + return -1; +} + +/** Find last index of binary pattern from a. If not found, then return -1. + * @param source source array + * @param pat pattern to find in source array + */ +export function findLastIndex(source: Uint8Array, pat: Uint8Array): number { + const e = pat[pat.length - 1]; + for (let i = source.length - 1; i >= 0; i--) { + if (source[i] !== e) continue; + const pin = i; + let matched = 1; + let j = i; + while (matched < pat.length) { + j--; + if (source[j] !== pat[pat.length - 1 - (pin - j)]) { + break; + } + matched++; + } + if (matched === pat.length) { + return pin - pat.length + 1; + } + } + return -1; +} + +/** Check whether binary arrays are equal to each other. + * @param source first array to check equality + * @param match second array to check equality + */ +export function equal(source: Uint8Array, match: Uint8Array): boolean { + if (source.length !== match.length) return false; + for (let i = 0; i < match.length; i++) { + if (source[i] !== match[i]) return false; + } + return true; +} + +/** Check whether binary array starts with prefix. + * @param source srouce array + * @param prefix prefix array to check in source + */ +export function hasPrefix(source: Uint8Array, prefix: Uint8Array): boolean { + for (let i = 0, max = prefix.length; i < max; i++) { + if (source[i] !== prefix[i]) return false; + } + return true; +} + +/** Check whether binary array ends with suffix. + * @param source source array + * @param suffix suffix array to check in source + */ +export function hasSuffix(source: Uint8Array, suffix: Uint8Array): boolean { + for ( + let srci = source.length - 1, sfxi = suffix.length - 1; + sfxi >= 0; + srci--, sfxi-- + ) { + if (source[srci] !== suffix[sfxi]) return false; + } + return true; +} + +/** Repeat bytes. returns a new byte slice consisting of `count` copies of `b`. + * @param origin The origin bytes + * @param count The count you want to repeat. + */ +export function repeat(origin: Uint8Array, count: number): Uint8Array { + if (count === 0) { + return new Uint8Array(); + } + + if (count < 0) { + throw new Error("bytes: negative repeat count"); + } else if ((origin.length * count) / count !== origin.length) { + throw new Error("bytes: repeat count causes overflow"); + } + + const int = Math.floor(count); + + if (int !== count) { + throw new Error("bytes: repeat count must be an integer"); + } + + const nb = new Uint8Array(origin.length * count); + + let bp = copyBytes(origin, nb); + + for (; bp < nb.length; bp *= 2) { + copyBytes(nb.slice(0, bp), nb, bp); + } + + return nb; +} + +/** Concatenate two binary arrays and return new one. + * @param origin origin array to concatenate + * @param b array to concatenate with origin + */ +export function concat(origin: Uint8Array, b: Uint8Array): Uint8Array { + const output = new Uint8Array(origin.length + b.length); + output.set(origin, 0); + output.set(b, origin.length); + return output; +} + +/** Check source array contains pattern array. + * @param source source array + * @param pat patter array + */ +export function contains(source: Uint8Array, pat: Uint8Array): boolean { + return findIndex(source, pat) != -1; +} + +/** + * Copy bytes from one Uint8Array to another. Bytes from `src` which don't fit + * into `dst` will not be copied. + * + * @param src Source byte array + * @param dst Destination byte array + * @param off Offset into `dst` at which to begin writing values from `src`. + * @return number of bytes copied + */ +export function copyBytes(src: Uint8Array, dst: Uint8Array, off = 0): number { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} diff --git a/bundler/tests/.cache/deno/f2d74c15d40f7f8179ca4947d83479e4bdc9c399.ts b/bundler/tests/.cache/deno/f2d74c15d40f7f8179ca4947d83479e4bdc9c399.ts new file mode 100644 index 00000000000..c8327da63e7 --- /dev/null +++ b/bundler/tests/.cache/deno/f2d74c15d40f7f8179ca4947d83479e4bdc9c399.ts @@ -0,0 +1,1801 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/loader/loader.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { YAMLError } from "../error.ts"; +import { Mark } from "../mark.ts"; +import type { Type } from "../type.ts"; +import * as common from "../utils.ts"; +import { LoaderState, LoaderStateOptions, ResultType } from "./loader_state.ts"; + +type Any = common.Any; +type ArrayObject = common.ArrayObject; + +const _hasOwnProperty = Object.prototype.hasOwnProperty; + +const CONTEXT_FLOW_IN = 1; +const CONTEXT_FLOW_OUT = 2; +const CONTEXT_BLOCK_IN = 3; +const CONTEXT_BLOCK_OUT = 4; + +const CHOMPING_CLIP = 1; +const CHOMPING_STRIP = 2; +const CHOMPING_KEEP = 3; + +const PATTERN_NON_PRINTABLE = + // deno-lint-ignore no-control-regex + /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +const PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +const PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +const PATTERN_TAG_URI = + /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + +function _class(obj: unknown): string { + return Object.prototype.toString.call(obj); +} + +function isEOL(c: number): boolean { + return c === 0x0a || /* LF */ c === 0x0d /* CR */; +} + +function isWhiteSpace(c: number): boolean { + return c === 0x09 || /* Tab */ c === 0x20 /* Space */; +} + +function isWsOrEol(c: number): boolean { + return ( + c === 0x09 /* Tab */ || + c === 0x20 /* Space */ || + c === 0x0a /* LF */ || + c === 0x0d /* CR */ + ); +} + +function isFlowIndicator(c: number): boolean { + return ( + c === 0x2c /* , */ || + c === 0x5b /* [ */ || + c === 0x5d /* ] */ || + c === 0x7b /* { */ || + c === 0x7d /* } */ + ); +} + +function fromHexCode(c: number): number { + if (0x30 <= /* 0 */ c && c <= 0x39 /* 9 */) { + return c - 0x30; + } + + const lc = c | 0x20; + + if (0x61 <= /* a */ lc && lc <= 0x66 /* f */) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c: number): number { + if (c === 0x78 /* x */) { + return 2; + } + if (c === 0x75 /* u */) { + return 4; + } + if (c === 0x55 /* U */) { + return 8; + } + return 0; +} + +function fromDecimalCode(c: number): number { + if (0x30 <= /* 0 */ c && c <= 0x39 /* 9 */) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c: number): string { + /* eslint:disable:prettier */ + return c === 0x30 /* 0 */ + ? "\x00" + : c === 0x61 /* a */ + ? "\x07" + : c === 0x62 /* b */ + ? "\x08" + : c === 0x74 /* t */ + ? "\x09" + : c === 0x09 /* Tab */ + ? "\x09" + : c === 0x6e /* n */ + ? "\x0A" + : c === 0x76 /* v */ + ? "\x0B" + : c === 0x66 /* f */ + ? "\x0C" + : c === 0x72 /* r */ + ? "\x0D" + : c === 0x65 /* e */ + ? "\x1B" + : c === 0x20 /* Space */ + ? " " + : c === 0x22 /* " */ + ? "\x22" + : c === 0x2f /* / */ + ? "/" + : c === 0x5c /* \ */ + ? "\x5C" + : c === 0x4e /* N */ + ? "\x85" + : c === 0x5f /* _ */ + ? "\xA0" + : c === 0x4c /* L */ + ? "\u2028" + : c === 0x50 /* P */ + ? "\u2029" + : ""; + /* eslint:enable:prettier */ +} + +function charFromCodepoint(c: number): string { + if (c <= 0xffff) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xd800, + ((c - 0x010000) & 0x03ff) + 0xdc00, + ); +} + +const simpleEscapeCheck = new Array(256); // integer, for fast access +const simpleEscapeMap = new Array(256); +for (let i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + +function generateError(state: LoaderState, message: string): YAMLError { + return new YAMLError( + message, + new Mark( + state.filename as string, + state.input, + state.position, + state.line, + state.position - state.lineStart, + ), + ); +} + +function throwError(state: LoaderState, message: string): never { + throw generateError(state, message); +} + +function throwWarning(state: LoaderState, message: string): void { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + +interface DirectiveHandlers { + [directive: string]: ( + state: LoaderState, + name: string, + ...args: string[] + ) => void; +} + +const directiveHandlers: DirectiveHandlers = { + YAML(state, _name, ...args: string[]) { + if (state.version !== null) { + return throwError(state, "duplication of %YAML directive"); + } + + if (args.length !== 1) { + return throwError(state, "YAML directive accepts exactly one argument"); + } + + const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + if (match === null) { + return throwError(state, "ill-formed argument of the YAML directive"); + } + + const major = parseInt(match[1], 10); + const minor = parseInt(match[2], 10); + if (major !== 1) { + return throwError(state, "unacceptable YAML version of the document"); + } + + state.version = args[0]; + state.checkLineBreaks = minor < 2; + if (minor !== 1 && minor !== 2) { + return throwWarning(state, "unsupported YAML version of the document"); + } + }, + + TAG(state, _name, ...args: string[]): void { + if (args.length !== 2) { + return throwError(state, "TAG directive accepts exactly two arguments"); + } + + const handle = args[0]; + const prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + return throwError( + state, + "ill-formed tag handle (first argument) of the TAG directive", + ); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + return throwError( + state, + `there is a previously declared suffix for "${handle}" tag handle`, + ); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + return throwError( + state, + "ill-formed tag prefix (second argument) of the TAG directive", + ); + } + + if (typeof state.tagMap === "undefined") { + state.tagMap = {}; + } + state.tagMap[handle] = prefix; + }, +}; + +function captureSegment( + state: LoaderState, + start: number, + end: number, + checkJson: boolean, +): void { + let result: string; + if (start < end) { + result = state.input.slice(start, end); + + if (checkJson) { + for ( + let position = 0, length = result.length; + position < length; + position++ + ) { + const character = result.charCodeAt(position); + if ( + !(character === 0x09 || (0x20 <= character && character <= 0x10ffff)) + ) { + return throwError(state, "expected valid JSON character"); + } + } + } else if (PATTERN_NON_PRINTABLE.test(result)) { + return throwError(state, "the stream contains non-printable characters"); + } + + state.result += result; + } +} + +function mergeMappings( + state: LoaderState, + destination: ArrayObject, + source: ArrayObject, + overridableKeys: ArrayObject, +): void { + if (!common.isObject(source)) { + return throwError( + state, + "cannot merge mappings; the provided source object is unacceptable", + ); + } + + const keys = Object.keys(source); + for (let i = 0, len = keys.length; i < len; i++) { + const key = keys[i]; + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = (source as ArrayObject)[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair( + state: LoaderState, + result: ArrayObject | null, + overridableKeys: ArrayObject, + keyTag: string | null, + keyNode: Any, + valueNode: unknown, + startLine?: number, + startPos?: number, +): ArrayObject { + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (let index = 0, quantity = keyNode.length; index < quantity; index++) { + if (Array.isArray(keyNode[index])) { + return throwError(state, "nested arrays are not supported inside keys"); + } + + if ( + typeof keyNode === "object" && + _class(keyNode[index]) === "[object Object]" + ) { + keyNode[index] = "[object Object]"; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") { + keyNode = "[object Object]"; + } + + keyNode = String(keyNode); + + if (result === null) { + result = {}; + } + + if (keyTag === "tag:yaml.org,2002:merge") { + if (Array.isArray(valueNode)) { + for ( + let index = 0, quantity = valueNode.length; + index < quantity; + index++ + ) { + mergeMappings(state, result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, result, valueNode as ArrayObject, overridableKeys); + } + } else { + if ( + !state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(result, keyNode) + ) { + state.line = startLine || state.line; + state.position = startPos || state.position; + return throwError(state, "duplicated mapping key"); + } + result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return result; +} + +function readLineBreak(state: LoaderState): void { + const ch = state.input.charCodeAt(state.position); + + if (ch === 0x0a /* LF */) { + state.position++; + } else if (ch === 0x0d /* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0a /* LF */) { + state.position++; + } + } else { + return throwError(state, "a line break is expected"); + } + + state.line += 1; + state.lineStart = state.position; +} + +function skipSeparationSpace( + state: LoaderState, + allowComments: boolean, + checkIndent: number, +): number { + let lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0a && /* LF */ ch !== 0x0d && /* CR */ ch !== 0); + } + + if (isEOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20 /* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if ( + checkIndent !== -1 && + lineBreaks !== 0 && + state.lineIndent < checkIndent + ) { + throwWarning(state, "deficient indentation"); + } + + return lineBreaks; +} + +function testDocumentSeparator(state: LoaderState): boolean { + let _position = state.position; + let ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ( + (ch === 0x2d || /* - */ ch === 0x2e) /* . */ && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2) + ) { + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || isWsOrEol(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state: LoaderState, count: number): void { + if (count === 1) { + state.result += " "; + } else if (count > 1) { + state.result += common.repeat("\n", count - 1); + } +} + +function readPlainScalar( + state: LoaderState, + nodeIndent: number, + withinFlowCollection: boolean, +): boolean { + const kind = state.kind; + const result = state.result; + let ch = state.input.charCodeAt(state.position); + + if ( + isWsOrEol(ch) || + isFlowIndicator(ch) || + ch === 0x23 /* # */ || + ch === 0x26 /* & */ || + ch === 0x2a /* * */ || + ch === 0x21 /* ! */ || + ch === 0x7c /* | */ || + ch === 0x3e /* > */ || + ch === 0x27 /* ' */ || + ch === 0x22 /* " */ || + ch === 0x25 /* % */ || + ch === 0x40 /* @ */ || + ch === 0x60 /* ` */ + ) { + return false; + } + + let following: number; + if (ch === 0x3f || /* ? */ ch === 0x2d /* - */) { + following = state.input.charCodeAt(state.position + 1); + + if ( + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) + ) { + return false; + } + } + + state.kind = "scalar"; + state.result = ""; + let captureEnd: number, + captureStart = (captureEnd = state.position); + let hasPendingContent = false; + let line = 0; + while (ch !== 0) { + if (ch === 0x3a /* : */) { + following = state.input.charCodeAt(state.position + 1); + + if ( + isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following)) + ) { + break; + } + } else if (ch === 0x23 /* # */) { + const preceding = state.input.charCodeAt(state.position - 1); + + if (isWsOrEol(preceding)) { + break; + } + } else if ( + (state.position === state.lineStart && testDocumentSeparator(state)) || + (withinFlowCollection && isFlowIndicator(ch)) + ) { + break; + } else if (isEOL(ch)) { + line = state.line; + const lineStart = state.lineStart; + const lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = line; + state.lineStart = lineStart; + state.lineIndent = lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!isWhiteSpace(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = kind; + state.result = result; + return false; +} + +function readSingleQuotedScalar( + state: LoaderState, + nodeIndent: number, +): boolean { + let ch, captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27 /* ' */) { + return false; + } + + state.kind = "scalar"; + state.result = ""; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27 /* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27 /* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (isEOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if ( + state.position === state.lineStart && + testDocumentSeparator(state) + ) { + return throwError( + state, + "unexpected end of the document within a single quoted scalar", + ); + } else { + state.position++; + captureEnd = state.position; + } + } + + return throwError( + state, + "unexpected end of the stream within a single quoted scalar", + ); +} + +function readDoubleQuotedScalar( + state: LoaderState, + nodeIndent: number, +): boolean { + let ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22 /* " */) { + return false; + } + + state.kind = "scalar"; + state.result = ""; + state.position++; + let captureEnd: number, + captureStart = (captureEnd = state.position); + let tmp: number; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22 /* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + } + if (ch === 0x5c /* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (isEOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + let hexLength = tmp; + let hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + return throwError(state, "expected hexadecimal character"); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + } else { + return throwError(state, "unknown escape sequence"); + } + + captureStart = captureEnd = state.position; + } else if (isEOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if ( + state.position === state.lineStart && + testDocumentSeparator(state) + ) { + return throwError( + state, + "unexpected end of the document within a double quoted scalar", + ); + } else { + state.position++; + captureEnd = state.position; + } + } + + return throwError( + state, + "unexpected end of the stream within a double quoted scalar", + ); +} + +function readFlowCollection(state: LoaderState, nodeIndent: number): boolean { + let ch = state.input.charCodeAt(state.position); + let terminator: number; + let isMapping = true; + let result: ResultType = {}; + if (ch === 0x5b /* [ */) { + terminator = 0x5d; /* ] */ + isMapping = false; + result = []; + } else if (ch === 0x7b /* { */) { + terminator = 0x7d; /* } */ + } else { + return false; + } + + if ( + state.anchor !== null && + typeof state.anchor != "undefined" && + typeof state.anchorMap != "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(++state.position); + + const tag = state.tag, + anchor = state.anchor; + let readNext = true; + let valueNode, + keyNode, + keyTag: string | null = (keyNode = valueNode = null), + isExplicitPair: boolean, + isPair = (isExplicitPair = false); + let following = 0, + line = 0; + const overridableKeys: ArrayObject = {}; + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = tag; + state.anchor = anchor; + state.kind = isMapping ? "mapping" : "sequence"; + state.result = result; + return true; + } + if (!readNext) { + return throwError(state, "missed comma between flow collection entries"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3f /* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (isWsOrEol(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + line = state.line; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag || null; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === line) && ch === 0x3a /* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag, + keyNode, + valueNode, + ); + } else if (isPair) { + (result as ArrayObject[]).push( + storeMappingPair( + state, + null, + overridableKeys, + keyTag, + keyNode, + valueNode, + ), + ); + } else { + (result as ResultType[]).push(keyNode as ResultType); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2c /* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + return throwError( + state, + "unexpected end of the stream within a flow collection", + ); +} + +function readBlockScalar(state: LoaderState, nodeIndent: number): boolean { + let chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false; + + let ch = state.input.charCodeAt(state.position); + + let folding = false; + if (ch === 0x7c /* | */) { + folding = false; + } else if (ch === 0x3e /* > */) { + folding = true; + } else { + return false; + } + + state.kind = "scalar"; + state.result = ""; + + let tmp = 0; + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2b || /* + */ ch === 0x2d /* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 0x2b /* + */ ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + return throwError(state, "repeat of a chomping mode identifier"); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + return throwError( + state, + "bad explicit indentation width of a block scalar; it cannot be less than one", + ); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + return throwError(state, "repeat of an indentation width identifier"); + } + } else { + break; + } + } + + if (isWhiteSpace(ch)) { + do { + ch = state.input.charCodeAt(++state.position); + } while (isWhiteSpace(ch)); + + if (ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!isEOL(ch) && ch !== 0); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ( + (!detectedIndent || state.lineIndent < textIndent) && + ch === 0x20 /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (isEOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + // i.e. only if the scalar is not empty. + state.result += "\n"; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (isWhiteSpace(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat("\n", emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { + // i.e. only if we have already read some scalar content. + state.result += " "; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat("\n", emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat( + "\n", + didReadContent ? 1 + emptyLines : emptyLines, + ); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + const captureStart = state.position; + + while (!isEOL(ch) && ch !== 0) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state: LoaderState, nodeIndent: number): boolean { + let line: number, + following: number, + detected = false, + ch: number; + const tag = state.tag, + anchor = state.anchor, + result: unknown[] = []; + + if ( + state.anchor !== null && + typeof state.anchor !== "undefined" && + typeof state.anchorMap !== "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (ch !== 0x2d /* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!isWsOrEol(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + line = state.line; + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === line || state.lineIndent > nodeIndent) && ch !== 0) { + return throwError(state, "bad indentation of a sequence entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = tag; + state.anchor = anchor; + state.kind = "sequence"; + state.result = result; + return true; + } + return false; +} + +function readBlockMapping( + state: LoaderState, + nodeIndent: number, + flowIndent: number, +): boolean { + const tag = state.tag, + anchor = state.anchor, + result = {}, + overridableKeys = {}; + let following: number, + allowCompact = false, + line: number, + pos: number, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch: number; + + if ( + state.anchor !== null && + typeof state.anchor !== "undefined" && + typeof state.anchorMap !== "undefined" + ) { + state.anchorMap[state.anchor] = result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + line = state.line; // Save the current line. + pos = state.position; + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3f || /* ? */ ch === 0x3a) && /* : */ isWsOrEol(following)) { + if (ch === 0x3f /* ? */) { + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + } else { + return throwError( + state, + "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line", + ); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + // eslint-disable-next-line @typescript-eslint/no-use-before-define + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + if (state.line === line) { + ch = state.input.charCodeAt(state.position); + + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3a /* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!isWsOrEol(ch)) { + return throwError( + state, + "a whitespace character is expected after the key-value separator within a block mapping", + ); + } + + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { + return throwError( + state, + "can not read an implicit mapping pair; a colon is missed", + ); + } else { + state.tag = tag; + state.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else if (detected) { + return throwError( + state, + "can not read a block mapping entry; a multiline key may not be an implicit key", + ); + } else { + state.tag = tag; + state.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else { + break; // Reading is done. Go to the epilogue. + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === line || state.lineIndent > nodeIndent) { + if ( + // eslint-disable-next-line @typescript-eslint/no-use-before-define + composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact) + ) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + valueNode, + line, + pos, + ); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && ch !== 0) { + return throwError(state, "bad indentation of a mapping entry"); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair( + state, + result, + overridableKeys, + keyTag as string, + keyNode, + null, + ); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = tag; + state.anchor = anchor; + state.kind = "mapping"; + state.result = result; + } + + return detected; +} + +function readTagProperty(state: LoaderState): boolean { + let position: number, + isVerbatim = false, + isNamed = false, + tagHandle = "", + tagName: string, + ch: number; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21 /* ! */) return false; + + if (state.tag !== null) { + return throwError(state, "duplication of a tag property"); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3c /* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 0x21 /* ! */) { + isNamed = true; + tagHandle = "!!"; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = "!"; + } + + position = state.position; + + if (isVerbatim) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 0x3e /* > */); + + if (state.position < state.length) { + tagName = state.input.slice(position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + return throwError( + state, + "unexpected end of the stream within a verbatim tag", + ); + } + } else { + while (ch !== 0 && !isWsOrEol(ch)) { + if (ch === 0x21 /* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + return throwError( + state, + "named tag handle cannot contain such characters", + ); + } + + isNamed = true; + position = state.position + 1; + } else { + return throwError( + state, + "tag suffix cannot contain exclamation marks", + ); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + return throwError( + state, + "tag suffix cannot contain flow indicator characters", + ); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + return throwError( + state, + `tag name cannot contain such characters: ${tagName}`, + ); + } + + if (isVerbatim) { + state.tag = tagName; + } else if ( + typeof state.tagMap !== "undefined" && + _hasOwnProperty.call(state.tagMap, tagHandle) + ) { + state.tag = state.tagMap[tagHandle] + tagName; + } else if (tagHandle === "!") { + state.tag = `!${tagName}`; + } else if (tagHandle === "!!") { + state.tag = `tag:yaml.org,2002:${tagName}`; + } else { + return throwError(state, `undeclared tag handle "${tagHandle}"`); + } + + return true; +} + +function readAnchorProperty(state: LoaderState): boolean { + let ch = state.input.charCodeAt(state.position); + if (ch !== 0x26 /* & */) return false; + + if (state.anchor !== null) { + return throwError(state, "duplication of an anchor property"); + } + ch = state.input.charCodeAt(++state.position); + + const position = state.position; + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === position) { + return throwError( + state, + "name of an anchor node must contain at least one character", + ); + } + + state.anchor = state.input.slice(position, state.position); + return true; +} + +function readAlias(state: LoaderState): boolean { + let ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2a /* * */) return false; + + ch = state.input.charCodeAt(++state.position); + const _position = state.position; + + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + return throwError( + state, + "name of an alias node must contain at least one character", + ); + } + + const alias = state.input.slice(_position, state.position); + if ( + typeof state.anchorMap !== "undefined" && + !Object.prototype.hasOwnProperty.call(state.anchorMap, alias) + ) { + return throwError(state, `unidentified alias "${alias}"`); + } + + if (typeof state.anchorMap !== "undefined") { + state.result = state.anchorMap[alias]; + } + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode( + state: LoaderState, + parentIndent: number, + nodeContext: number, + allowToSeek: boolean, + allowCompact: boolean, +): boolean { + let allowBlockScalars: boolean, + allowBlockCollections: boolean, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + const cond = CONTEXT_FLOW_IN === nodeContext || + CONTEXT_FLOW_OUT === nodeContext; + flowIndent = cond ? parentIndent : parentIndent + 1; + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if ( + (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent))) || + readFlowCollection(state, flowIndent) + ) { + hasContent = true; + } else { + if ( + (allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent) + ) { + hasContent = true; + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + return throwError( + state, + "alias node should not have Any properties", + ); + } + } else if ( + readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext) + ) { + hasContent = true; + + if (state.tag === null) { + state.tag = "?"; + } + } + + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && + readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== "!") { + if (state.tag === "?") { + for ( + let typeIndex = 0, typeQuantity = state.implicitTypes.length; + typeIndex < typeQuantity; + typeIndex++ + ) { + type = state.implicitTypes[typeIndex]; + + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only assigned to plain scalars. So, it isn't + // needed to check for 'kind' conformity. + + if (type.resolve(state.result)) { + // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if ( + _hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag) + ) { + type = state.typeMap[state.kind || "fallback"][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + return throwError( + state, + `unacceptable node kind for !<${state.tag}> tag; it should be "${type.kind}", not "${state.kind}"`, + ); + } + + if (!type.resolve(state.result)) { + // `state.result` updated in resolver if matched + return throwError( + state, + `cannot resolve a node with !<${state.tag}> explicit tag`, + ); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null && typeof state.anchorMap !== "undefined") { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + return throwError(state, `unknown tag !<${state.tag}>`); + } + } + + if (state.listener && state.listener !== null) { + state.listener("close", state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state: LoaderState): void { + const documentStart = state.position; + let position: number, + directiveName: string, + directiveArgs: string[], + hasDirectives = false, + ch: number; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25 /* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + position = state.position; + + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + return throwError( + state, + "directive name must not be less than one character in length", + ); + } + + while (ch !== 0) { + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23 /* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !isEOL(ch)); + break; + } + + if (isEOL(ch)) break; + + position = state.position; + + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, ...directiveArgs); + } else { + throwWarning(state, `unknown document directive "${directiveName}"`); + } + } + + skipSeparationSpace(state, true, -1); + + if ( + state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2d /* - */ && + state.input.charCodeAt(state.position + 1) === 0x2d /* - */ && + state.input.charCodeAt(state.position + 2) === 0x2d /* - */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { + return throwError(state, "directives end mark is expected"); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if ( + state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test( + state.input.slice(documentStart, state.position), + ) + ) { + throwWarning(state, "non-ASCII line breaks are interpreted as content"); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 0x2e /* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < state.length - 1) { + return throwError( + state, + "end of the stream or a document separator is expected", + ); + } else { + return; + } +} + +function loadDocuments(input: string, options?: LoaderStateOptions): unknown[] { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + // Add tailing `\n` if not exists + if ( + input.charCodeAt(input.length - 1) !== 0x0a /* LF */ && + input.charCodeAt(input.length - 1) !== 0x0d /* CR */ + ) { + input += "\n"; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xfeff) { + input = input.slice(1); + } + } + + const state = new LoaderState(input, options); + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += "\0"; + + while (state.input.charCodeAt(state.position) === 0x20 /* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < state.length - 1) { + readDocument(state); + } + + return state.documents; +} + +export type CbFunction = (doc: unknown) => void; +function isCbFunction(fn: unknown): fn is CbFunction { + return typeof fn === "function"; +} + +export function loadAll( + input: string, + iteratorOrOption?: T, + options?: LoaderStateOptions, +): T extends CbFunction ? void : unknown[] { + if (!isCbFunction(iteratorOrOption)) { + return loadDocuments(input, iteratorOrOption as LoaderStateOptions) as Any; + } + + const documents = loadDocuments(input, options); + const iterator = iteratorOrOption; + for (let index = 0, length = documents.length; index < length; index++) { + iterator(documents[index]); + } + + return void 0 as Any; +} + +export function load(input: string, options?: LoaderStateOptions): unknown { + const documents = loadDocuments(input, options); + + if (documents.length === 0) { + return; + } + if (documents.length === 1) { + return documents[0]; + } + throw new YAMLError( + "expected a single document in the stream, but found more", + ); +} diff --git a/bundler/tests/.cache/deno/f2f815fe98af39816a6b27070eeb2b9709944f2c.ts b/bundler/tests/.cache/deno/f2f815fe98af39816a6b27070eeb2b9709944f2c.ts new file mode 100644 index 00000000000..73cf4a14e53 --- /dev/null +++ b/bundler/tests/.cache/deno/f2f815fe98af39816a6b27070eeb2b9709944f2c.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/std@0.73.0/encoding/utf8.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +/** A default TextEncoder instance */ +export const encoder = new TextEncoder(); + +/** Shorthand for new TextEncoder().encode() */ +export function encode(input?: string): Uint8Array { + return encoder.encode(input); +} + +/** A default TextDecoder instance */ +export const decoder = new TextDecoder(); + +/** Shorthand for new TextDecoder().decode() */ +export function decode(input?: Uint8Array): string { + return decoder.decode(input); +} diff --git a/bundler/tests/.cache/deno/f33ab8033b02d812ab4aaeead09b0e7dc1a8a75d.ts b/bundler/tests/.cache/deno/f33ab8033b02d812ab4aaeead09b0e7dc1a8a75d.ts new file mode 100644 index 00000000000..82c549a1634 --- /dev/null +++ b/bundler/tests/.cache/deno/f33ab8033b02d812ab4aaeead09b0e7dc1a8a75d.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.84.0/path/glob.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { osType } from "../_util/os.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = osType }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/f37a3a0bb73875ad1e9c87067442fc1e595d2d3c.ts b/bundler/tests/.cache/deno/f37a3a0bb73875ad1e9c87067442fc1e595d2d3c.ts new file mode 100644 index 00000000000..6c835310a5d --- /dev/null +++ b/bundler/tests/.cache/deno/f37a3a0bb73875ad1e9c87067442fc1e595d2d3c.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.80.0/path/_interface.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/f3940634e1db5312cb35d8936773a13aa8f5862e.ts b/bundler/tests/.cache/deno/f3940634e1db5312cb35d8936773a13aa8f5862e.ts new file mode 100644 index 00000000000..13f9c23d206 --- /dev/null +++ b/bundler/tests/.cache/deno/f3940634e1db5312cb35d8936773a13aa8f5862e.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isDecimal.ts + + +// @ts-ignore allowing typedoc to build +import { decimal } from '../helpers/alpha.ts'; +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { includes } from '../helpers/includes.ts'; + +type DecimalOptions = { + forceDecimal?: boolean; + decimalDigits?: string; + locale?: string; +}; + +/** + * @ignore + */ +const decimalRegExp = (options: Required) => { + const regExp = new RegExp( + `^[-+]?([0-9]+)?(\\${(decimal as any)[options.locale]}[0-9]{${ + options.decimalDigits + }})${options.forceDecimal ? '' : '?'}$` + ); + return regExp; +}; + +/** + * @ignore + */ +const defaultDecimalOptions = { + forceDecimal: false, + decimalDigits: '1,', + locale: 'en-US', +}; + +/** + * @ignore + */ +const blacklist = ['', '-', '+']; + +export const isDecimal = (str: string, options?: DecimalOptions) => { + assertString(str); + + options = { + ...defaultDecimalOptions, + ...options, + }; + + if ((options as Required).locale in decimal) { + return ( + !includes(blacklist, str.replace(/ /g, '')) && + decimalRegExp(options as Required).test(str) + ); + } + throw new Error(`Invalid locale '${options.locale}'`); +}; diff --git a/bundler/tests/.cache/deno/f3da55a6de8a63adcc73ce1f6f6af3b68e1c78f3.ts b/bundler/tests/.cache/deno/f3da55a6de8a63adcc73ce1f6f6af3b68e1c78f3.ts new file mode 100644 index 00000000000..cf8a32690eb --- /dev/null +++ b/bundler/tests/.cache/deno/f3da55a6de8a63adcc73ce1f6f6af3b68e1c78f3.ts @@ -0,0 +1,59 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/transduce.js + + +import _reduce from './internal/_reduce.js'; +import _xwrap from './internal/_xwrap.js'; +import curryN from './curryN.js'; + + +/** + * Initializes a transducer using supplied iterator function. Returns a single + * item by iterating through the list, successively calling the transformed + * iterator function and passing it an accumulator value and the current value + * from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It will be + * wrapped as a transformer to initialize the transducer. A transformer can be + * passed directly in place of an iterator function. In both cases, iteration + * may be stopped early with the [`R.reduced`](#reduced) function. + * + * A transducer is a function that accepts a transformer and returns a + * transformer and can be composed directly. + * + * A transformer is an object that provides a 2-arity reducing iterator + * function, step, 0-arity initial value function, init, and 1-arity result + * extraction function, result. The step function is used as the iterator + * function in reduce. The result function is used to convert the final + * accumulator into the return type and in most cases is + * [`R.identity`](#identity). The init function can be used to provide an + * initial accumulator, but is ignored by transduce. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. Wrapped as transformer, if necessary, and used to + * initialize the transducer + * @param {*} acc The initial accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced, R.into + * @example + * + * const numbers = [1, 2, 3, 4]; + * const transducer = R.compose(R.map(R.add(1)), R.take(2)); + * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] + * + * const isOdd = (x) => x % 2 === 1; + * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); + * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] + */ +var transduce = curryN(4, function transduce(xf, fn, acc, list) { + return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list); +}); +export default transduce; diff --git a/bundler/tests/.cache/deno/f3e1e2fd01c19702b6c9e8e1d10f65992bc2f99e.ts b/bundler/tests/.cache/deno/f3e1e2fd01c19702b6c9e8e1d10f65992bc2f99e.ts new file mode 100644 index 00000000000..a67a234eedb --- /dev/null +++ b/bundler/tests/.cache/deno/f3e1e2fd01c19702b6c9e8e1d10f65992bc2f99e.ts @@ -0,0 +1,166 @@ +// Loaded from https://deno.land/std@0.73.0/textproto/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/tree/master/src/net/textproto +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +import type { BufReader } from "../io/bufio.ts"; +import { concat } from "../bytes/mod.ts"; +import { decode } from "../encoding/utf8.ts"; + +// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9 +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g; + +function str(buf: Uint8Array | null | undefined): string { + if (buf == null) { + return ""; + } else { + return decode(buf); + } +} + +function charCode(s: string): number { + return s.charCodeAt(0); +} + +export class TextProtoReader { + constructor(readonly r: BufReader) {} + + /** readLine() reads a single line from the TextProtoReader, + * eliding the final \n or \r\n from the returned string. + */ + async readLine(): Promise { + const s = await this.readLineSlice(); + if (s === null) return null; + return str(s); + } + + /** ReadMIMEHeader reads a MIME-style header from r. + * The header is a sequence of possibly continued Key: Value lines + * ending in a blank line. + * The returned map m maps CanonicalMIMEHeaderKey(key) to a + * sequence of values in the same order encountered in the input. + * + * For example, consider this input: + * + * My-Key: Value 1 + * Long-Key: Even + * Longer Value + * My-Key: Value 2 + * + * Given that input, ReadMIMEHeader returns the map: + * + * map[string][]string{ + * "My-Key": {"Value 1", "Value 2"}, + * "Long-Key": {"Even Longer Value"}, + * } + */ + async readMIMEHeader(): Promise { + const m = new Headers(); + let line: Uint8Array | undefined; + + // The first line cannot start with a leading space. + let buf = await this.r.peek(1); + if (buf === null) { + return null; + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + line = (await this.readLineSlice()) as Uint8Array; + } + + buf = await this.r.peek(1); + if (buf === null) { + throw new Deno.errors.UnexpectedEof(); + } else if (buf[0] == charCode(" ") || buf[0] == charCode("\t")) { + throw new Deno.errors.InvalidData( + `malformed MIME header initial line: ${str(line)}`, + ); + } + + while (true) { + const kv = await this.readLineSlice(); // readContinuedLineSlice + if (kv === null) throw new Deno.errors.UnexpectedEof(); + if (kv.byteLength === 0) return m; + + // Key ends at first colon + let i = kv.indexOf(charCode(":")); + if (i < 0) { + throw new Deno.errors.InvalidData( + `malformed MIME header line: ${str(kv)}`, + ); + } + + //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey)); + const key = str(kv.subarray(0, i)); + + // As per RFC 7230 field-name is a token, + // tokens consist of one or more chars. + // We could throw `Deno.errors.InvalidData` here, + // but better to be liberal in what we + // accept, so if we get an empty key, skip it. + if (key == "") { + continue; + } + + // Skip initial spaces in value. + i++; // skip colon + while ( + i < kv.byteLength && + (kv[i] == charCode(" ") || kv[i] == charCode("\t")) + ) { + i++; + } + const value = str(kv.subarray(i)).replace( + invalidHeaderCharRegex, + encodeURI, + ); + + // In case of invalid header we swallow the error + // example: "Audio Mode" => invalid due to space in the key + try { + m.append(key, value); + } catch { + // Pass + } + } + } + + async readLineSlice(): Promise { + // this.closeDot(); + let line: Uint8Array | undefined; + while (true) { + const r = await this.r.readLine(); + if (r === null) return null; + const { line: l, more } = r; + + // Avoid the copy if the first call produced a full line. + if (!line && !more) { + // TODO(ry): + // This skipSpace() is definitely misplaced, but I don't know where it + // comes from nor how to fix it. + if (this.skipSpace(l) === 0) { + return new Uint8Array(0); + } + return l; + } + line = line ? concat(line, l) : l; + if (!more) { + break; + } + } + return line; + } + + skipSpace(l: Uint8Array): number { + let n = 0; + for (let i = 0; i < l.length; i++) { + if (l[i] === charCode(" ") || l[i] === charCode("\t")) { + continue; + } + n++; + } + return n; + } +} diff --git a/bundler/tests/.cache/deno/f3e64f9b72d453b4164078933576d2f70995ca8e.ts b/bundler/tests/.cache/deno/f3e64f9b72d453b4164078933576d2f70995ca8e.ts new file mode 100644 index 00000000000..d6a8e88fc4e --- /dev/null +++ b/bundler/tests/.cache/deno/f3e64f9b72d453b4164078933576d2f70995ca8e.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { Any, ArrayObject } from "./utils.ts"; + +export type KindType = "sequence" | "scalar" | "mapping"; +export type StyleVariant = "lowercase" | "uppercase" | "camelcase" | "decimal"; +export type RepresentFn = (data: Any, style?: StyleVariant) => Any; + +const DEFAULT_RESOLVE = (): boolean => true; +const DEFAULT_CONSTRUCT = (data: Any): Any => data; + +interface TypeOptions { + kind: KindType; + resolve?: (data: Any) => boolean; + construct?: (data: string) => Any; + instanceOf?: Any; + predicate?: (data: Record) => boolean; + represent?: RepresentFn | ArrayObject; + defaultStyle?: StyleVariant; + styleAliases?: ArrayObject; +} + +function checkTagFormat(tag: string): string { + return tag; +} + +export class Type { + public tag: string; + public kind: KindType | null = null; + public instanceOf: Any; + public predicate?: (data: Record) => boolean; + public represent?: RepresentFn | ArrayObject; + public defaultStyle?: StyleVariant; + public styleAliases?: ArrayObject; + public loadKind?: KindType; + + constructor(tag: string, options?: TypeOptions) { + this.tag = checkTagFormat(tag); + if (options) { + this.kind = options.kind; + this.resolve = options.resolve || DEFAULT_RESOLVE; + this.construct = options.construct || DEFAULT_CONSTRUCT; + this.instanceOf = options.instanceOf; + this.predicate = options.predicate; + this.represent = options.represent; + this.defaultStyle = options.defaultStyle; + this.styleAliases = options.styleAliases; + } + } + public resolve: (data?: Any) => boolean = (): boolean => true; + public construct: (data?: Any) => Any = (data): Any => data; +} diff --git a/bundler/tests/.cache/deno/f3f9e891c25758f49962fd90d39838ce511dd3c7.ts b/bundler/tests/.cache/deno/f3f9e891c25758f49962fd90d39838ce511dd3c7.ts new file mode 100644 index 00000000000..de280ea7716 --- /dev/null +++ b/bundler/tests/.cache/deno/f3f9e891c25758f49962fd90d39838ce511dd3c7.ts @@ -0,0 +1,36 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/splitEvery.js + + +import _curry2 from './internal/_curry2.js'; +import slice from './slice.js'; + + +/** + * Splits a collection into slices of the specified length. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @sig Number -> String -> [String] + * @param {Number} n + * @param {Array} list + * @return {Array} + * @example + * + * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] + * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz'] + */ +var splitEvery = _curry2(function splitEvery(n, list) { + if (n <= 0) { + throw new Error('First argument to splitEvery must be a positive integer'); + } + var result = []; + var idx = 0; + while (idx < list.length) { + result.push(slice(idx, idx += n, list)); + } + return result; +}); +export default splitEvery; diff --git a/bundler/tests/.cache/deno/f3fc479f331dd963cd2b96063df6bf047890f887.ts b/bundler/tests/.cache/deno/f3fc479f331dd963cd2b96063df6bf047890f887.ts new file mode 100644 index 00000000000..792410f62c3 --- /dev/null +++ b/bundler/tests/.cache/deno/f3fc479f331dd963cd2b96063df6bf047890f887.ts @@ -0,0 +1,569 @@ +// Loaded from https://deno.land/std/node/events.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Copyright (c) 2019 Denolibs authors. All rights reserved. MIT license. +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +import { validateIntegerRange } from "./_utils.ts"; +import { assert } from "../_util/assert.ts"; + +// deno-lint-ignore no-explicit-any +export type GenericFunction = (...args: any[]) => any; + +export interface WrappedFunction extends Function { + listener: GenericFunction; +} + +// deno-lint-ignore no-explicit-any +function createIterResult(value: any, done: boolean): IteratorResult { + return { value, done }; +} + +interface AsyncIterable { + // deno-lint-ignore no-explicit-any + next(): Promise>; + // deno-lint-ignore no-explicit-any + return(): Promise>; + throw(err: Error): void; + // deno-lint-ignore no-explicit-any + [Symbol.asyncIterator](): any; +} + +export let defaultMaxListeners = 10; + +/** + * See also https://nodejs.org/api/events.html + */ +export default class EventEmitter { + public static captureRejectionSymbol = Symbol.for("nodejs.rejection"); + public static errorMonitor = Symbol("events.errorMonitor"); + public static get defaultMaxListeners() { + return defaultMaxListeners; + } + public static set defaultMaxListeners(value: number) { + defaultMaxListeners = value; + } + + private maxListeners: number | undefined; + private _events: Map< + string | symbol, + Array + >; + + public constructor() { + this._events = new Map(); + } + + private _addListener( + eventName: string | symbol, + listener: GenericFunction | WrappedFunction, + prepend: boolean, + ): this { + this.emit("newListener", eventName, listener); + if (this._events.has(eventName)) { + const listeners = this._events.get(eventName) as Array< + GenericFunction | WrappedFunction + >; + if (prepend) { + listeners.unshift(listener); + } else { + listeners.push(listener); + } + } else { + this._events.set(eventName, [listener]); + } + const max = this.getMaxListeners(); + if (max > 0 && this.listenerCount(eventName) > max) { + const warning = new Error( + `Possible EventEmitter memory leak detected. + ${this.listenerCount(eventName)} ${eventName.toString()} listeners. + Use emitter.setMaxListeners() to increase limit`, + ); + warning.name = "MaxListenersExceededWarning"; + console.warn(warning); + } + + return this; + } + + /** Alias for emitter.on(eventName, listener). */ + public addListener( + eventName: string | symbol, + listener: GenericFunction | WrappedFunction, + ): this { + return this._addListener(eventName, listener, false); + } + + /** + * Synchronously calls each of the listeners registered for the event named + * eventName, in the order they were registered, passing the supplied + * arguments to each. + * @return true if the event had listeners, false otherwise + */ + // deno-lint-ignore no-explicit-any + public emit(eventName: string | symbol, ...args: any[]): boolean { + if (this._events.has(eventName)) { + if ( + eventName === "error" && + this._events.get(EventEmitter.errorMonitor) + ) { + this.emit(EventEmitter.errorMonitor, ...args); + } + const listeners = (this._events.get( + eventName, + ) as GenericFunction[]).slice(); // We copy with slice() so array is not mutated during emit + for (const listener of listeners) { + try { + listener.apply(this, args); + } catch (err) { + this.emit("error", err); + } + } + return true; + } else if (eventName === "error") { + if (this._events.get(EventEmitter.errorMonitor)) { + this.emit(EventEmitter.errorMonitor, ...args); + } + const errMsg = args.length > 0 ? args[0] : Error("Unhandled error."); + throw errMsg; + } + return false; + } + + /** + * Returns an array listing the events for which the emitter has + * registered listeners. + */ + public eventNames(): [string | symbol] { + return Array.from(this._events.keys()) as [string | symbol]; + } + + /** + * Returns the current max listener value for the EventEmitter which is + * either set by emitter.setMaxListeners(n) or defaults to + * EventEmitter.defaultMaxListeners. + */ + public getMaxListeners(): number { + return this.maxListeners || EventEmitter.defaultMaxListeners; + } + + /** + * Returns the number of listeners listening to the event named + * eventName. + */ + public listenerCount(eventName: string | symbol): number { + if (this._events.has(eventName)) { + return (this._events.get(eventName) as GenericFunction[]).length; + } else { + return 0; + } + } + + static listenerCount( + emitter: EventEmitter, + eventName: string | symbol, + ): number { + return emitter.listenerCount(eventName); + } + + private _listeners( + target: EventEmitter, + eventName: string | symbol, + unwrap: boolean, + ): GenericFunction[] { + if (!target._events.has(eventName)) { + return []; + } + const eventListeners = target._events.get(eventName) as GenericFunction[]; + + return unwrap + ? this.unwrapListeners(eventListeners) + : eventListeners.slice(0); + } + + private unwrapListeners(arr: GenericFunction[]): GenericFunction[] { + const unwrappedListeners = new Array(arr.length) as GenericFunction[]; + for (let i = 0; i < arr.length; i++) { + // deno-lint-ignore no-explicit-any + unwrappedListeners[i] = (arr[i] as any)["listener"] || arr[i]; + } + return unwrappedListeners; + } + + /** Returns a copy of the array of listeners for the event named eventName.*/ + public listeners(eventName: string | symbol): GenericFunction[] { + return this._listeners(this, eventName, true); + } + + /** + * Returns a copy of the array of listeners for the event named eventName, + * including any wrappers (such as those created by .once()). + */ + public rawListeners( + eventName: string | symbol, + ): Array { + return this._listeners(this, eventName, false); + } + + /** Alias for emitter.removeListener(). */ + public off(eventName: string | symbol, listener: GenericFunction): this { + return this.removeListener(eventName, listener); + } + + /** + * Adds the listener function to the end of the listeners array for the event + * named eventName. No checks are made to see if the listener has already + * been added. Multiple calls passing the same combination of eventName and + * listener will result in the listener being added, and called, multiple + * times. + */ + public on( + eventName: string | symbol, + listener: GenericFunction | WrappedFunction, + ): this { + return this._addListener(eventName, listener, false); + } + + /** + * Adds a one-time listener function for the event named eventName. The next + * time eventName is triggered, this listener is removed and then invoked. + */ + public once(eventName: string | symbol, listener: GenericFunction): this { + const wrapped: WrappedFunction = this.onceWrap(eventName, listener); + this.on(eventName, wrapped); + return this; + } + + // Wrapped function that calls EventEmitter.removeListener(eventName, self) on execution. + private onceWrap( + eventName: string | symbol, + listener: GenericFunction, + ): WrappedFunction { + const wrapper = function ( + this: { + eventName: string | symbol; + listener: GenericFunction; + rawListener: GenericFunction | WrappedFunction; + context: EventEmitter; + }, + // deno-lint-ignore no-explicit-any + ...args: any[] + ): void { + this.context.removeListener( + this.eventName, + this.rawListener as GenericFunction, + ); + this.listener.apply(this.context, args); + }; + const wrapperContext = { + eventName: eventName, + listener: listener, + rawListener: (wrapper as unknown) as WrappedFunction, + context: this, + }; + const wrapped = (wrapper.bind( + wrapperContext, + ) as unknown) as WrappedFunction; + wrapperContext.rawListener = wrapped; + wrapped.listener = listener; + return wrapped as WrappedFunction; + } + + /** + * Adds the listener function to the beginning of the listeners array for the + * event named eventName. No checks are made to see if the listener has + * already been added. Multiple calls passing the same combination of + * eventName and listener will result in the listener being added, and + * called, multiple times. + */ + public prependListener( + eventName: string | symbol, + listener: GenericFunction | WrappedFunction, + ): this { + return this._addListener(eventName, listener, true); + } + + /** + * Adds a one-time listener function for the event named eventName to the + * beginning of the listeners array. The next time eventName is triggered, + * this listener is removed, and then invoked. + */ + public prependOnceListener( + eventName: string | symbol, + listener: GenericFunction, + ): this { + const wrapped: WrappedFunction = this.onceWrap(eventName, listener); + this.prependListener(eventName, wrapped); + return this; + } + + /** Removes all listeners, or those of the specified eventName. */ + public removeAllListeners(eventName?: string | symbol): this { + if (this._events === undefined) { + return this; + } + + if (eventName) { + if (this._events.has(eventName)) { + const listeners = (this._events.get(eventName) as Array< + GenericFunction | WrappedFunction + >).slice(); // Create a copy; We use it AFTER it's deleted. + this._events.delete(eventName); + for (const listener of listeners) { + this.emit("removeListener", eventName, listener); + } + } + } else { + const eventList: [string | symbol] = this.eventNames(); + eventList.map((value: string | symbol) => { + this.removeAllListeners(value); + }); + } + + return this; + } + + /** + * Removes the specified listener from the listener array for the event + * named eventName. + */ + public removeListener( + eventName: string | symbol, + listener: GenericFunction, + ): this { + if (this._events.has(eventName)) { + const arr: + | Array + | undefined = this._events.get(eventName); + + assert(arr); + + let listenerIndex = -1; + for (let i = arr.length - 1; i >= 0; i--) { + // arr[i]["listener"] is the reference to the listener inside a bound 'once' wrapper + if ( + arr[i] == listener || + (arr[i] && (arr[i] as WrappedFunction)["listener"] == listener) + ) { + listenerIndex = i; + break; + } + } + + if (listenerIndex >= 0) { + arr.splice(listenerIndex, 1); + this.emit("removeListener", eventName, listener); + if (arr.length === 0) { + this._events.delete(eventName); + } + } + } + return this; + } + + /** + * By default EventEmitters will print a warning if more than 10 listeners + * are added for a particular event. This is a useful default that helps + * finding memory leaks. Obviously, not all events should be limited to just + * 10 listeners. The emitter.setMaxListeners() method allows the limit to be + * modified for this specific EventEmitter instance. The value can be set to + * Infinity (or 0) to indicate an unlimited number of listeners. + */ + public setMaxListeners(n: number): this { + if (n !== Infinity) { + if (n === 0) { + n = Infinity; + } else { + validateIntegerRange(n, "maxListeners", 0); + } + } + + this.maxListeners = n; + return this; + } + + /** + * Creates a Promise that is fulfilled when the EventEmitter emits the given + * event or that is rejected when the EventEmitter emits 'error'. The Promise + * will resolve with an array of all the arguments emitted to the given event. + */ + public static once( + emitter: EventEmitter | EventTarget, + name: string, + // deno-lint-ignore no-explicit-any + ): Promise { + return new Promise((resolve, reject) => { + if (emitter instanceof EventTarget) { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen to `error` events here. + emitter.addEventListener( + name, + (...args) => { + resolve(args); + }, + { once: true, passive: false, capture: false }, + ); + return; + } else if (emitter instanceof EventEmitter) { + // deno-lint-ignore no-explicit-any + const eventListener = (...args: any[]): void => { + if (errorListener !== undefined) { + emitter.removeListener("error", errorListener); + } + resolve(args); + }; + let errorListener: GenericFunction; + + // Adding an error listener is not optional because + // if an error is thrown on an event emitter we cannot + // guarantee that the actual event we are waiting will + // be fired. The result could be a silent way to create + // memory or file descriptor leaks, which is something + // we should avoid. + if (name !== "error") { + // deno-lint-ignore no-explicit-any + errorListener = (err: any): void => { + emitter.removeListener(name, eventListener); + reject(err); + }; + + emitter.once("error", errorListener); + } + + emitter.once(name, eventListener); + return; + } + }); + } + + /** + * Returns an AsyncIterator that iterates eventName events. It will throw if + * the EventEmitter emits 'error'. It removes all listeners when exiting the + * loop. The value returned by each iteration is an array composed of the + * emitted event arguments. + */ + public static on( + emitter: EventEmitter, + event: string | symbol, + ): AsyncIterable { + // deno-lint-ignore no-explicit-any + const unconsumedEventValues: any[] = []; + // deno-lint-ignore no-explicit-any + const unconsumedPromises: any[] = []; + let error: Error | null = null; + let finished = false; + + const iterator = { + // deno-lint-ignore no-explicit-any + next(): Promise> { + // First, we consume all unread events + // deno-lint-ignore no-explicit-any + const value: any = unconsumedEventValues.shift(); + if (value) { + return Promise.resolve(createIterResult(value, false)); + } + + // Then we error, if an error happened + // This happens one time if at all, because after 'error' + // we stop listening + if (error) { + const p: Promise = Promise.reject(error); + // Only the first element errors + error = null; + return p; + } + + // If the iterator is finished, resolve to done + if (finished) { + return Promise.resolve(createIterResult(undefined, true)); + } + + // Wait until an event happens + return new Promise(function (resolve, reject) { + unconsumedPromises.push({ resolve, reject }); + }); + }, + + // deno-lint-ignore no-explicit-any + return(): Promise> { + emitter.removeListener(event, eventHandler); + emitter.removeListener("error", errorHandler); + finished = true; + + for (const promise of unconsumedPromises) { + promise.resolve(createIterResult(undefined, true)); + } + + return Promise.resolve(createIterResult(undefined, true)); + }, + + throw(err: Error): void { + error = err; + emitter.removeListener(event, eventHandler); + emitter.removeListener("error", errorHandler); + }, + + // deno-lint-ignore no-explicit-any + [Symbol.asyncIterator](): any { + return this; + }, + }; + + emitter.on(event, eventHandler); + emitter.on("error", errorHandler); + + return iterator; + + // deno-lint-ignore no-explicit-any + function eventHandler(...args: any[]): void { + const promise = unconsumedPromises.shift(); + if (promise) { + promise.resolve(createIterResult(args, false)); + } else { + unconsumedEventValues.push(args); + } + } + + // deno-lint-ignore no-explicit-any + function errorHandler(err: any): void { + finished = true; + + const toError = unconsumedPromises.shift(); + if (toError) { + toError.reject(err); + } else { + // The next time we call next() + error = err; + } + + iterator.return(); + } + } +} + +export { EventEmitter }; +export const captureRejectionSymbol = EventEmitter.captureRejectionSymbol; +export const errorMonitor = EventEmitter.errorMonitor; +export const listenerCount = EventEmitter.listenerCount; +export const on = EventEmitter.on; +export const once = EventEmitter.once; diff --git a/bundler/tests/.cache/deno/f40c5a3c54fb7a4f9bee9c63f2076a54bc3dbdf6.ts b/bundler/tests/.cache/deno/f40c5a3c54fb7a4f9bee9c63f2076a54bc3dbdf6.ts new file mode 100644 index 00000000000..53234bc3cd0 --- /dev/null +++ b/bundler/tests/.cache/deno/f40c5a3c54fb7a4f9bee9c63f2076a54bc3dbdf6.ts @@ -0,0 +1,358 @@ +// Loaded from https://deno.land/std@0.86.0/flags/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { assert } from "../_util/assert.ts"; + +export interface Args { + /** Contains all the arguments that didn't have an option associated with + * them. */ + _: Array; + // deno-lint-ignore no-explicit-any + [key: string]: any; +} + +export interface ArgParsingOptions { + /** When `true`, populate the result `_` with everything before the `--` and + * the result `['--']` with everything after the `--`. Here's an example: + * + * // $ deno run example.ts -- a arg1 + * import { parse } from "https://deno.land/std/flags/mod.ts"; + * console.dir(parse(Deno.args, { "--": false })); + * // output: { _: [ "a", "arg1" ] } + * console.dir(parse(Deno.args, { "--": true })); + * // output: { _: [], --: [ "a", "arg1" ] } + * + * Defaults to `false`. + */ + "--"?: boolean; + + /** An object mapping string names to strings or arrays of string argument + * names to use as aliases */ + alias?: Record; + + /** A boolean, string or array of strings to always treat as booleans. If + * `true` will treat all double hyphenated arguments without equal signs as + * `boolean` (e.g. affects `--foo`, not `-f` or `--foo=bar`) */ + boolean?: boolean | string | string[]; + + /** An object mapping string argument names to default values. */ + default?: Record; + + /** When `true`, populate the result `_` with everything after the first + * non-option. */ + stopEarly?: boolean; + + /** A string or array of strings argument names to always treat as strings. */ + string?: string | string[]; + + /** A function which is invoked with a command line parameter not defined in + * the `options` configuration object. If the function returns `false`, the + * unknown option is not added to `parsedArgs`. */ + unknown?: (arg: string, key?: string, value?: unknown) => unknown; +} + +interface Flags { + bools: Record; + strings: Record; + unknownFn: (arg: string, key?: string, value?: unknown) => unknown; + allBools: boolean; +} + +interface NestedMapping { + [key: string]: NestedMapping | unknown; +} + +function get(obj: Record, key: string): T | undefined { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + return obj[key]; + } +} + +function getForce(obj: Record, key: string): T { + const v = get(obj, key); + assert(v != null); + return v; +} + +function isNumber(x: unknown): boolean { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} + +function hasKey(obj: NestedMapping, keys: string[]): boolean { + let o = obj; + keys.slice(0, -1).forEach((key) => { + o = (get(o, key) ?? {}) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + return key in o; +} + +/** Take a set of command line arguments, with an optional set of options, and + * return an object representation of those argument. + * + * const parsedArgs = parse(Deno.args); + */ +export function parse( + args: string[], + { + "--": doubleDash = false, + alias = {}, + boolean = false, + default: defaults = {}, + stopEarly = false, + string = [], + unknown = (i: string): unknown => i, + }: ArgParsingOptions = {}, +): Args { + const flags: Flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + }; + + if (boolean !== undefined) { + if (typeof boolean === "boolean") { + flags.allBools = !!boolean; + } else { + const booleanArgs = typeof boolean === "string" ? [boolean] : boolean; + + for (const key of booleanArgs.filter(Boolean)) { + flags.bools[key] = true; + } + } + } + + const aliases: Record = {}; + if (alias !== undefined) { + for (const key in alias) { + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [val]; + } else { + aliases[key] = val; + } + for (const alias of getForce(aliases, key)) { + aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y)); + } + } + } + + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [string] : string; + + for (const key of stringArgs.filter(Boolean)) { + flags.strings[key] = true; + const alias = get(aliases, key); + if (alias) { + for (const al of alias) { + flags.strings[al] = true; + } + } + } + } + + const argv: Args = { _: [] }; + + function argDefined(key: string, arg: string): boolean { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + get(flags.bools, key) || + !!get(flags.strings, key) || + !!get(aliases, key) + ); + } + + function setKey(obj: NestedMapping, keys: string[], value: unknown): void { + let o = obj; + keys.slice(0, -1).forEach(function (key): void { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key) as NestedMapping; + }); + + const key = keys[keys.length - 1]; + if ( + get(o, key) === undefined || + get(flags.bools, key) || + typeof get(o, key) === "boolean" + ) { + o[key] = value; + } else if (Array.isArray(get(o, key))) { + (o[key] as unknown[]).push(value); + } else { + o[key] = [get(o, key), value]; + } + } + + function setArg( + key: string, + val: unknown, + arg: string | undefined = undefined, + ): void { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + const alias = get(aliases, key); + if (alias) { + for (const x of alias) { + setKey(argv, x.split("."), value); + } + } + } + + function aliasIsBoolean(key: string): boolean { + return getForce(aliases, key).some( + (x) => typeof get(flags.bools, x) === "boolean", + ); + } + + for (const key of Object.keys(flags.bools)) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + } + + let notFlags: string[] = []; + + // all args after "--" are not parsed + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key, value] = m; + + if (flags.bools[key]) { + const booleanValue = value !== "false"; + setArg(key, booleanValue, arg); + } else { + setArg(key, value, arg); + } + } else if (/^--no-.+/.test(arg)) { + const m = arg.match(/^--no-(.+)/); + assert(m != null); + setArg(m[1], false, arg); + } else if (/^--.+/.test(arg)) { + const m = arg.match(/^--(.+)/); + assert(m != null); + const [, key] = m; + const next = args[i + 1]; + if ( + next !== undefined && + !/^-/.test(next) && + !get(flags.bools, key) && + !flags.allBools && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + + let broken = false; + for (let j = 0; j < letters.length; j++) { + const next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split(/=(.+)/)[1], arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + + const [key] = arg.slice(-1); + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !get(flags.bools, key) && + (get(aliases, key) ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i++; + } else { + setArg(key, get(flags.strings, key) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + + for (const key of Object.keys(defaults)) { + if (!hasKey(argv, key.split("."))) { + setKey(argv, key.split("."), defaults[key]); + + if (aliases[key]) { + for (const x of aliases[key]) { + setKey(argv, x.split("."), defaults[key]); + } + } + } + } + + if (doubleDash) { + argv["--"] = []; + for (const key of notFlags) { + argv["--"].push(key); + } + } else { + for (const key of notFlags) { + argv._.push(key); + } + } + + return argv; +} diff --git a/bundler/tests/.cache/deno/f4164aff01e96a80a3d439b3f8e665836444e7ef.ts b/bundler/tests/.cache/deno/f4164aff01e96a80a3d439b3f8e665836444e7ef.ts new file mode 100644 index 00000000000..f05372a6bc1 --- /dev/null +++ b/bundler/tests/.cache/deno/f4164aff01e96a80a3d439b3f8e665836444e7ef.ts @@ -0,0 +1,58 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/curryN.js + + +import _arity from './internal/_arity.js'; +import _curry1 from './internal/_curry1.js'; +import _curry2 from './internal/_curry2.js'; +import _curryN from './internal/_curryN.js'; + + +/** + * Returns a curried equivalent of the provided function, with the specified + * arity. The curried function has two unusual capabilities. First, its + * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.5.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curry + * @example + * + * const sumArgs = (...args) => R.sum(args); + * + * const curriedAddFourNumbers = R.curryN(4, sumArgs); + * const f = curriedAddFourNumbers(1, 2); + * const g = f(3); + * g(4); //=> 10 + */ +var curryN = _curry2(function curryN(length, fn) { + if (length === 1) { + return _curry1(fn); + } + return _arity(length, _curryN(length, [], fn)); +}); +export default curryN; diff --git a/bundler/tests/.cache/deno/f451b711a14917283d138f2916e827d24744f455.ts b/bundler/tests/.cache/deno/f451b711a14917283d138f2916e827d24744f455.ts new file mode 100644 index 00000000000..e9986b8644a --- /dev/null +++ b/bundler/tests/.cache/deno/f451b711a14917283d138f2916e827d24744f455.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/protocol/header.ts + + +export enum OpCode { + REPLAY = 1, + UPDATE = 2001, + INSERT = 2002, + RESERVED = 2003, + QUERY = 2004, + GET_MORE = 2005, + DELETE = 2006, + KILL_CURSORS = 2007, + MSG = 2013, +} + +export interface MessageHeader { + messageLength: number; + requestId: number; + responseTo: number; + opCode: OpCode; +} + +export function serializeHeader(header: MessageHeader): Uint8Array { + const view = new DataView(new ArrayBuffer(16)); + view.setInt32(0, header.messageLength, true); + view.setInt32(4, header.requestId, true); + view.setInt32(8, header.responseTo, true); + view.setInt32(12, header.opCode, true); + return new Uint8Array(view.buffer); +} + +export function parseHeader(buffer: Uint8Array): MessageHeader { + const view = new DataView(buffer.buffer); + return { + messageLength: view.getUint32(0, true), + requestId: view.getUint32(4, true), + responseTo: view.getUint32(8, true), + opCode: view.getUint32(12, true), + }; +} diff --git a/bundler/tests/.cache/deno/f5148cb5ed654f7a17e5486c6eb668bef01a6f61.ts b/bundler/tests/.cache/deno/f5148cb5ed654f7a17e5486c6eb668bef01a6f61.ts new file mode 100644 index 00000000000..05517fa6483 --- /dev/null +++ b/bundler/tests/.cache/deno/f5148cb5ed654f7a17e5486c6eb668bef01a6f61.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/test.js + + +import _cloneRegExp from './internal/_cloneRegExp.js'; +import _curry2 from './internal/_curry2.js'; +import _isRegExp from './internal/_isRegExp.js'; +import toString from './toString.js'; + + +/** + * Determines whether a given string matches a given regular expression. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category String + * @sig RegExp -> String -> Boolean + * @param {RegExp} pattern + * @param {String} str + * @return {Boolean} + * @see R.match + * @example + * + * R.test(/^x/, 'xyz'); //=> true + * R.test(/^y/, 'xyz'); //=> false + */ +var test = _curry2(function test(pattern, str) { + if (!_isRegExp(pattern)) { + throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern)); + } + return _cloneRegExp(pattern).test(str); +}); +export default test; diff --git a/bundler/tests/.cache/deno/f572afe664d128054d9f0d85fa85f6b5a2d30fcf.ts b/bundler/tests/.cache/deno/f572afe664d128054d9f0d85fa85f6b5a2d30fcf.ts new file mode 100644 index 00000000000..4533838a562 --- /dev/null +++ b/bundler/tests/.cache/deno/f572afe664d128054d9f0d85fa85f6b5a2d30fcf.ts @@ -0,0 +1,78 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/loader/loader_state.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import type { YAMLError } from "../error.ts"; +import type { Schema, SchemaDefinition, TypeMap } from "../schema.ts"; +import { State } from "../state.ts"; +import type { Type } from "../type.ts"; +import type { Any, ArrayObject } from "../utils.ts"; + +export interface LoaderStateOptions { + legacy?: boolean; + listener?: ((...args: Any[]) => void) | null; + /** string to be used as a file path in error/warning messages. */ + filename?: string; + /** specifies a schema to use. */ + schema?: SchemaDefinition; + /** compatibility with JSON.parse behaviour. */ + json?: boolean; + /** function to call on warning messages. */ + onWarning?(this: null, e?: YAMLError): void; +} + +// deno-lint-ignore no-explicit-any +export type ResultType = any[] | Record | string; + +export class LoaderState extends State { + public documents: Any[] = []; + public length: number; + public lineIndent = 0; + public lineStart = 0; + public position = 0; + public line = 0; + public filename?: string; + public onWarning?: (...args: Any[]) => void; + public legacy: boolean; + public json: boolean; + public listener?: ((...args: Any[]) => void) | null; + public implicitTypes: Type[]; + public typeMap: TypeMap; + + public version?: string | null; + public checkLineBreaks?: boolean; + public tagMap?: ArrayObject; + public anchorMap?: ArrayObject; + public tag?: string | null; + public anchor?: string | null; + public kind?: string | null; + public result: ResultType | null = ""; + + constructor( + public input: string, + { + filename, + schema, + onWarning, + legacy = false, + json = false, + listener = null, + }: LoaderStateOptions, + ) { + super(schema); + this.filename = filename; + this.onWarning = onWarning; + this.legacy = legacy; + this.json = json; + this.listener = listener; + + this.implicitTypes = (this.schema as Schema).compiledImplicit; + this.typeMap = (this.schema as Schema).compiledTypeMap; + + this.length = input.length; + } +} diff --git a/bundler/tests/.cache/deno/f5e9f8e3047eefc39748a281b603987f4dc61107.ts b/bundler/tests/.cache/deno/f5e9f8e3047eefc39748a281b603987f4dc61107.ts new file mode 100644 index 00000000000..26891e0017a --- /dev/null +++ b/bundler/tests/.cache/deno/f5e9f8e3047eefc39748a281b603987f4dc61107.ts @@ -0,0 +1,183 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isURL.ts + + +/* +options for isURL method + +requireProtocol - if set as true isURL will return false if protocol is not present in the URL +requireValidProtocol - isURL will check if the URL's protocol is present in the protocols option +protocols - valid protocols can be modified with this option +requireHost - if set as false isURL will not check if host is present in the URL +allowProtocolRelativeURLs - if set as true protocol relative URLs will be allowed + +*/ + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { isIP } from './isIP.ts'; +// @ts-ignore allowing typedoc to build +import { isFQDN } from './isFQDN.ts'; + +type URLOptions = { + protocols?: string[]; + requireTLD?: boolean; + requireProtocol?: boolean; + requireHost?: boolean; + requireValidProtocol?: boolean; + allowUnderscores?: boolean; + allowTrailingDot?: boolean; + allowProtocolRelativeURLs?: boolean; + disallowAuth?: boolean; + hostWhitelist?: boolean; + hostBlacklist?: boolean; + validateLength?: boolean; +}; + +/** + * @ignore + */ +const defaultURLOptions = { + protocols: ['http', 'https', 'ftp'], + requireTLD: true, + requireProtocol: false, + requireHost: true, + requireValidProtocol: true, + allowUnderscores: false, + allowTrailingDot: false, + allowProtocolRelativeURLs: false, + validateLength: true, +}; + +/** + * @ignore + */ +const wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/; + +/** + * @ignore + */ +const isRegExp = (obj: any) => { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +/** + * @ignore + */ +const checkHost = (host: string, matches: any) => { + for (let i = 0; i < matches.length; i++) { + let match = matches[i]; + if (host === match || (isRegExp(match) && match.test(host))) { + return true; + } + } + return false; +}; + +export const isURL = (url: string, options?: URLOptions) => { + assertString(url); + + if (!url || /[\s<>]/.test(url)) { + return false; + } + + if (url.indexOf('mailto:') === 0) { + return false; + } + + options = { + ...defaultURLOptions, + ...options, + }; + + if (options.validateLength && url.length >= 2083) { + return false; + } + + let protocol, auth, host, hostname, port, port_str, split, ipv6; + + split = url.split('#'); + url = split.shift() as string; + + split = url.split('?'); + url = split.shift() as string; + + split = url.split('://'); + if (split.length > 1) { + protocol = (split.shift() as string).toLowerCase(); + if ( + options.requireValidProtocol && + options?.protocols?.indexOf(protocol) === -1 + ) { + return false; + } + } else if (options.requireProtocol) { + return false; + } else if (url.substr(0, 2) === '//') { + if (!options.allowProtocolRelativeURLs) { + return false; + } + split[0] = url.substr(2); + } + url = split.join('://'); + + if (url === '') { + return false; + } + + split = url.split('/'); + url = split.shift() as string; + + if (url === '' && !options.requireHost) { + return true; + } + + split = url.split('@'); + if (split.length > 1) { + if (options.disallowAuth) { + return false; + } + auth = split.shift() as string; + if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) { + return false; + } + } + hostname = split.join('@'); + + port_str = null; + ipv6 = null; + const ipv6_match = hostname.match(wrapped_ipv6); + if (ipv6_match) { + host = ''; + ipv6 = ipv6_match[1]; + port_str = ipv6_match[2] || null; + } else { + split = hostname.split(':'); + host = split.shift() as string; + if (split.length) { + port_str = split.join(':'); + } + } + + if (port_str !== null) { + port = parseInt(port_str, 10); + if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) { + return false; + } + } + + if (!isIP(host) && !isFQDN(host, options) && (!ipv6 || !isIP(ipv6, 6))) { + return false; + } + + host = (host || ipv6) as string; + + if (options.hostWhitelist && !checkHost(host, options.hostWhitelist)) { + return false; + } + if (options.hostBlacklist && checkHost(host, options.hostBlacklist)) { + return false; + } + + return true; +}; diff --git a/bundler/tests/.cache/deno/f5ea2e64a33d3b89171d7e97b5a3da5f7e35c842.ts b/bundler/tests/.cache/deno/f5ea2e64a33d3b89171d7e97b5a3da5f7e35c842.ts new file mode 100644 index 00000000000..6fcf4b6ea19 --- /dev/null +++ b/bundler/tests/.cache/deno/f5ea2e64a33d3b89171d7e97b5a3da5f7e35c842.ts @@ -0,0 +1,4 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/version.ts + + +export const version = "1.11.0"; diff --git a/bundler/tests/.cache/deno/f609961b5238d3311e10ded9ca571259424ed9c7.ts b/bundler/tests/.cache/deno/f609961b5238d3311e10ded9ca571259424ed9c7.ts new file mode 100644 index 00000000000..8c6ca57334b --- /dev/null +++ b/bundler/tests/.cache/deno/f609961b5238d3311e10ded9ca571259424ed9c7.ts @@ -0,0 +1,48 @@ +// Loaded from https://deno.land/x/case/upperCase.ts + + +import { LanguageSpecific } from "./types.ts"; + +const LANGUAGES: LanguageSpecific = { + tr: { + regexp: /[\u0069]/g, + map: { + i: "\u0130", + }, + }, + az: { + regexp: /[\u0069]/g, + map: { + i: "\u0130", + }, + }, + lt: { + regexp: /[\u0069\u006A\u012F]\u0307|\u0069\u0307[\u0300\u0301\u0303]/g, + map: { + i̇: "\u0049", + j̇: "\u004A", + į̇: "\u012E", + i̇̀: "\u00CC", + i̇́: "\u00CD", + i̇̃: "\u0128", + }, + }, +}; + +export default function (str: string, locale?: string): string { + str = str == null ? "" : String(str); + + if (!locale) { + return str.toUpperCase(); + } + + const lang = LANGUAGES[locale]; + + if (lang) { + str = str.replace(lang.regexp, function (m) { + return lang.map[m]; + }); + } + + return str.toUpperCase(); +} diff --git a/bundler/tests/.cache/deno/f61b66c032f511a7681d30d9aef6d0f2d2857c29.ts b/bundler/tests/.cache/deno/f61b66c032f511a7681d30d9aef6d0f2d2857c29.ts new file mode 100644 index 00000000000..b47c9d89d12 --- /dev/null +++ b/bundler/tests/.cache/deno/f61b66c032f511a7681d30d9aef6d0f2d2857c29.ts @@ -0,0 +1,127 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/PossibleTypeExtensionsRule.js + + +import inspect from '../../jsutils/inspect.js'; +import invariant from '../../jsutils/invariant.js'; +import didYouMean from '../../jsutils/didYouMean.js'; +import suggestionList from '../../jsutils/suggestionList.js'; +import { GraphQLError } from '../../error/GraphQLError.js'; +import { Kind } from '../../language/kinds.js'; +import { isTypeDefinitionNode } from '../../language/predicates.js'; +import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../../type/definition.js'; + +/** + * Possible type extension + * + * A type extension is only valid if the type is defined and has the same kind. + */ +export function PossibleTypeExtensionsRule(context) { + const schema = context.getSchema(); + const definedTypes = Object.create(null); + + for (const def of context.getDocument().definitions) { + if (isTypeDefinitionNode(def)) { + definedTypes[def.name.value] = def; + } + } + + return { + ScalarTypeExtension: checkExtension, + ObjectTypeExtension: checkExtension, + InterfaceTypeExtension: checkExtension, + UnionTypeExtension: checkExtension, + EnumTypeExtension: checkExtension, + InputObjectTypeExtension: checkExtension + }; + + function checkExtension(node) { + const typeName = node.name.value; + const defNode = definedTypes[typeName]; + const existingType = schema?.getType(typeName); + let expectedKind; + + if (defNode) { + expectedKind = defKindToExtKind[defNode.kind]; + } else if (existingType) { + expectedKind = typeToExtKind(existingType); + } + + if (expectedKind) { + if (expectedKind !== node.kind) { + const kindStr = extensionKindToTypeName(node.kind); + context.reportError(new GraphQLError(`Cannot extend non-${kindStr} type "${typeName}".`, defNode ? [defNode, node] : node)); + } + } else { + let allTypeNames = Object.keys(definedTypes); + + if (schema) { + allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap())); + } + + const suggestedTypes = suggestionList(typeName, allTypeNames); + context.reportError(new GraphQLError(`Cannot extend type "${typeName}" because it is not defined.` + didYouMean(suggestedTypes), node.name)); + } + } +} +const defKindToExtKind = { + [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION, + [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION, + [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION, + [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION, + [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION, + [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION +}; + +function typeToExtKind(type) { + if (isScalarType(type)) { + return Kind.SCALAR_TYPE_EXTENSION; + } + + if (isObjectType(type)) { + return Kind.OBJECT_TYPE_EXTENSION; + } + + if (isInterfaceType(type)) { + return Kind.INTERFACE_TYPE_EXTENSION; + } + + if (isUnionType(type)) { + return Kind.UNION_TYPE_EXTENSION; + } + + if (isEnumType(type)) { + return Kind.ENUM_TYPE_EXTENSION; + } + + if (isInputObjectType(type)) { + return Kind.INPUT_OBJECT_TYPE_EXTENSION; + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected type: ' + inspect(type)); +} + +function extensionKindToTypeName(kind) { + switch (kind) { + case Kind.SCALAR_TYPE_EXTENSION: + return 'scalar'; + + case Kind.OBJECT_TYPE_EXTENSION: + return 'object'; + + case Kind.INTERFACE_TYPE_EXTENSION: + return 'interface'; + + case Kind.UNION_TYPE_EXTENSION: + return 'union'; + + case Kind.ENUM_TYPE_EXTENSION: + return 'enum'; + + case Kind.INPUT_OBJECT_TYPE_EXTENSION: + return 'input object'; + } // Not reachable. All possible types have been considered. + + + invariant(false, 'Unexpected kind: ' + inspect(kind)); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/f65330432ecfd22d93c10effa85a2590e4276026.ts b/bundler/tests/.cache/deno/f65330432ecfd22d93c10effa85a2590e4276026.ts new file mode 100644 index 00000000000..308f251d7c5 --- /dev/null +++ b/bundler/tests/.cache/deno/f65330432ecfd22d93c10effa85a2590e4276026.ts @@ -0,0 +1,60 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/empty.js + + +import _curry1 from './internal/_curry1.js'; +import _isArguments from './internal/_isArguments.js'; +import _isArray from './internal/_isArray.js'; +import _isObject from './internal/_isObject.js'; +import _isString from './internal/_isString.js'; +import _isTypedArray from './internal/_isTypedArray.js'; + + +/** + * Returns the empty value of its argument's type. Ramda defines the empty + * value of Array (`[]`), Object (`{}`), String (`''`), + * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other + * types are supported if they define `.empty`, + * `.prototype.empty` or implement the + * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid). + * + * Dispatches to the `empty` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> a + * @param {*} x + * @return {*} + * @example + * + * R.empty(Just(42)); //=> Nothing() + * R.empty([1, 2, 3]); //=> [] + * R.empty('unicorns'); //=> '' + * R.empty({x: 1, y: 2}); //=> {} + * R.empty(Uint8Array.from('123')); //=> Uint8Array [] + */ +var empty = _curry1(function empty(x) { + return ( + (x != null && typeof x['fantasy-land/empty'] === 'function') + ? x['fantasy-land/empty']() + : (x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function') + ? x.constructor['fantasy-land/empty']() + : (x != null && typeof x.empty === 'function') + ? x.empty() + : (x != null && x.constructor != null && typeof x.constructor.empty === 'function') + ? x.constructor.empty() + : _isArray(x) + ? [] + : _isString(x) + ? '' + : _isObject(x) + ? {} + : _isArguments(x) + ? (function() { return arguments; }()) + : _isTypedArray(x) + ? x.constructor.from('') + : void 0 // else + ); +}); +export default empty; diff --git a/bundler/tests/.cache/deno/f66539bb982f09dd135ffd55f9bb479dad8b59ac.ts b/bundler/tests/.cache/deno/f66539bb982f09dd135ffd55f9bb479dad8b59ac.ts new file mode 100644 index 00000000000..d70a9e06312 --- /dev/null +++ b/bundler/tests/.cache/deno/f66539bb982f09dd135ffd55f9bb479dad8b59ac.ts @@ -0,0 +1,22 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/F.js + + + + +/** + * A function that always returns `false`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.T + * @example + * + * R.F(); //=> false + */ +var F = function() {return false;}; +export default F; diff --git a/bundler/tests/.cache/deno/f672e815afb2a3ff8781497b2d765f83fe1e3b54.ts b/bundler/tests/.cache/deno/f672e815afb2a3ff8781497b2d765f83fe1e3b54.ts new file mode 100644 index 00000000000..b03afbd604e --- /dev/null +++ b/bundler/tests/.cache/deno/f672e815afb2a3ff8781497b2d765f83fe1e3b54.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.81.0/path/common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +import { SEP } from "./separator.ts"; + +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * import { common } from "https://deno.land/std/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * + */ +export function common(paths: string[], sep = SEP): string { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + + let endOfPrefix = parts.length; + for (const path of remaining) { + const compare = path.split(sep); + for (let i = 0; i < endOfPrefix; i++) { + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} diff --git a/bundler/tests/.cache/deno/f69c5fe18f144545ed62ed05bf508f0f48197cf8.ts b/bundler/tests/.cache/deno/f69c5fe18f144545ed62ed05bf508f0f48197cf8.ts new file mode 100644 index 00000000000..b5c3162062a --- /dev/null +++ b/bundler/tests/.cache/deno/f69c5fe18f144545ed62ed05bf508f0f48197cf8.ts @@ -0,0 +1,146 @@ +// Loaded from https://deno.land/x/oak@v6.3.1/content_disposition.ts + + +/** + * Adapted directly from content-disposition.js at + * https://github.com/Rob--W/open-in-browser/blob/master/extension/content-disposition.js + * which is licensed as: + * + * (c) 2017 Rob Wu (https://robwu.nl) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { toParamRegExp, unquote } from "./headers.ts"; + +let needsEncodingFixup = false; + +function fixupEncoding(value: string): string { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textDecode("utf-8", value); + if (needsEncodingFixup) { + value = textDecode("iso-8859-1", value); + } + } + return value; +} + +const FILENAME_STAR_REGEX = toParamRegExp("filename\\*", "i"); +const FILENAME_START_ITER_REGEX = toParamRegExp( + "filename\\*((?!0\\d)\\d+)(\\*?)", + "ig", +); +const FILENAME_REGEX = toParamRegExp("filename", "i"); + +function rfc2047decode(value: string): string { + // deno-lint-ignore no-control-regex + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + return value.replace( + /=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, + (_: string, charset: string, encoding: string, text: string) => { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace( + /=([0-9a-fA-F]{2})/g, + (_, hex) => String.fromCharCode(parseInt(hex, 16)), + ); + return textDecode(charset, text); + } + try { + text = atob(text); + // deno-lint-ignore no-empty + } catch {} + return textDecode(charset, text); + }, + ); +} + +function rfc2231getParam(header: string): string { + const matches: [string, string][] = []; + let match: RegExpExecArray | null; + while ((match = FILENAME_START_ITER_REGEX.exec(header))) { + const [, ns, quote, part] = match; + const n = parseInt(ns, 10); + if (n in matches) { + if (n === 0) { + break; + } + continue; + } + matches[n] = [quote, part]; + } + const parts: string[] = []; + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + let [quote, part] = matches[n]; + part = unquote(part); + if (quote) { + part = unescape(part); + if (n === 0) { + part = rfc5987decode(part); + } + } + parts.push(part); + } + return parts.join(""); +} + +function rfc5987decode(value: string): string { + const encodingEnd = value.indexOf(`'`); + if (encodingEnd === -1) { + return value; + } + const encoding = value.slice(0, encodingEnd); + const langValue = value.slice(encodingEnd + 1); + return textDecode(encoding, langValue.replace(/^[^']*'/, "")); +} + +function textDecode(encoding: string, value: string): string { + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { fatal: true }); + const bytes = Array.from(value, (c) => c.charCodeAt(0)); + if (bytes.every((code) => code <= 0xFF)) { + value = decoder.decode(new Uint8Array(bytes)); + needsEncodingFixup = false; + } + // deno-lint-ignore no-empty + } catch {} + } + return value; +} + +export function getFilename(header: string): string { + needsEncodingFixup = true; + + // filename*=ext-value ("ext-value" from RFC 5987, referenced by RFC 6266). + let matches = FILENAME_STAR_REGEX.exec(header); + if (matches) { + const [, filename] = matches; + return fixupEncoding( + rfc2047decode(rfc5987decode(unescape(unquote(filename)))), + ); + } + + // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1). + // filename*n*=part + // filename*n=part + const filename = rfc2231getParam(header); + if (filename) { + return fixupEncoding(rfc2047decode(filename)); + } + + // filename=value (RFC 5987, section 4.1). + matches = FILENAME_REGEX.exec(header); + if (matches) { + const [, filename] = matches; + return fixupEncoding(rfc2047decode(unquote(filename))); + } + + return ""; +} diff --git a/bundler/tests/.cache/deno/f6b67896830a42fe1517a5f9c1bc677006d5472e.ts b/bundler/tests/.cache/deno/f6b67896830a42fe1517a5f9c1bc677006d5472e.ts new file mode 100644 index 00000000000..8e5bfa695ec --- /dev/null +++ b/bundler/tests/.cache/deno/f6b67896830a42fe1517a5f9c1bc677006d5472e.ts @@ -0,0 +1,53 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/invoker.js + + +import _curry2 from './internal/_curry2.js'; +import _isFunction from './internal/_isFunction.js'; +import curryN from './curryN.js'; +import toString from './toString.js'; + + +/** + * Turns a named method with a specified arity into a function that can be + * called directly supplied with arguments and a target object. + * + * The returned function is curried and accepts `arity + 1` parameters where + * the final parameter is the target object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *) + * @param {Number} arity Number of arguments the returned function should take + * before the target object. + * @param {String} method Name of any of the target object's methods to call. + * @return {Function} A new curried function. + * @see R.construct + * @example + * + * const sliceFrom = R.invoker(1, 'slice'); + * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm' + * const sliceFrom6 = R.invoker(2, 'slice')(6); + * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh' + * + * const dog = { + * speak: async () => 'Woof!' + * }; + * const speak = R.invoker(0, 'speak'); + * speak(dog).then(console.log) //~> 'Woof!' + * + * @symb R.invoker(0, 'method')(o) = o['method']() + * @symb R.invoker(1, 'method')(a, o) = o['method'](a) + * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b) + */ +var invoker = _curry2(function invoker(arity, method) { + return curryN(arity + 1, function() { + var target = arguments[arity]; + if (target != null && _isFunction(target[method])) { + return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity)); + } + throw new TypeError(toString(target) + ' does not have a method named "' + method + '"'); + }); +}); +export default invoker; diff --git a/bundler/tests/.cache/deno/f6bdf95cd37a0b5b9820816b6e042c39c1fa8ac6.ts b/bundler/tests/.cache/deno/f6bdf95cd37a0b5b9820816b6e042c39c1fa8ac6.ts new file mode 100644 index 00000000000..876bec4707a --- /dev/null +++ b/bundler/tests/.cache/deno/f6bdf95cd37a0b5b9820816b6e042c39c1fa8ac6.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/std/hash/mod.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +import { Hash } from "./_wasm/hash.ts"; +import type { Hasher } from "./hasher.ts"; + +export type { Hasher } from "./hasher.ts"; +export type SupportedAlgorithm = + | "md2" + | "md4" + | "md5" + | "ripemd160" + | "ripemd320" + | "sha1" + | "sha224" + | "sha256" + | "sha384" + | "sha512" + | "sha3-224" + | "sha3-256" + | "sha3-384" + | "sha3-512" + | "keccak224" + | "keccak256" + | "keccak384" + | "keccak512"; + +/** + * Creates a new `Hash` instance. + * + * @param algorithm name of hash algorithm to use + */ +export function createHash(algorithm: SupportedAlgorithm): Hasher { + return new Hash(algorithm as string); +} diff --git a/bundler/tests/.cache/deno/f70b1bcdeb0360ba6e7371ddc1e91e4c08e8bc01.ts b/bundler/tests/.cache/deno/f70b1bcdeb0360ba6e7371ddc1e91e4c08e8bc01.ts new file mode 100644 index 00000000000..b0916735976 --- /dev/null +++ b/bundler/tests/.cache/deno/f70b1bcdeb0360ba6e7371ddc1e91e4c08e8bc01.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/view.js + + +import _curry2 from './internal/_curry2.js'; + + +// `Const` is a functor that effectively ignores the function given to `map`. +var Const = function(x) { + return {value: x, 'fantasy-land/map': function() { return this; }}; +}; + +/** + * Returns a "view" of the given data structure, determined by the given lens. + * The lens's focus determines which portion of the data structure is visible. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> s -> a + * @param {Lens} lens + * @param {*} x + * @return {*} + * @see R.set, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath + * @example + * + * const xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.view(xLens, {x: 4, y: 2}); //=> 4 + */ +var view = _curry2(function view(lens, x) { + // Using `Const` effectively ignores the setter function of the `lens`, + // leaving the value returned by the getter function unmodified. + return lens(Const)(x).value; +}); +export default view; diff --git a/bundler/tests/.cache/deno/f71263719ffed2b2db7e81311a16b493aa383f2c.ts b/bundler/tests/.cache/deno/f71263719ffed2b2db7e81311a16b493aa383f2c.ts new file mode 100644 index 00000000000..0655574cdaa --- /dev/null +++ b/bundler/tests/.cache/deno/f71263719ffed2b2db7e81311a16b493aa383f2c.ts @@ -0,0 +1,114 @@ +// Loaded from https://deno.land/std@0.77.0/encoding/hex.ts + + +// Ported from Go +// https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +const hextable = new TextEncoder().encode("0123456789abcdef"); + +/** + * ErrInvalidByte takes an invalid byte and returns an Error. + * @param byte + */ +export function errInvalidByte(byte: number): Error { + return new Error( + "encoding/hex: invalid byte: " + + new TextDecoder().decode(new Uint8Array([byte])), + ); +} + +/** ErrLength returns an error about odd string length. */ +export function errLength(): Error { + return new Error("encoding/hex: odd length hex string"); +} + +// fromHexChar converts a hex character into its value. +function fromHexChar(byte: number): number { + // '0' <= byte && byte <= '9' + if (48 <= byte && byte <= 57) return byte - 48; + // 'a' <= byte && byte <= 'f' + if (97 <= byte && byte <= 102) return byte - 97 + 10; + // 'A' <= byte && byte <= 'F' + if (65 <= byte && byte <= 70) return byte - 65 + 10; + + throw errInvalidByte(byte); +} + +/** + * EncodedLen returns the length of an encoding of n source bytes. Specifically, + * it returns n * 2. + * @param n + */ +export function encodedLen(n: number): number { + return n * 2; +} + +/** + * Encode encodes `src` into `encodedLen(src.length)` bytes. + * @param src + */ +export function encode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(encodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const v = src[i]; + dst[i * 2] = hextable[v >> 4]; + dst[i * 2 + 1] = hextable[v & 0x0f]; + } + return dst; +} + +/** + * EncodeToString returns the hexadecimal encoding of `src`. + * @param src + */ +export function encodeToString(src: Uint8Array): string { + return new TextDecoder().decode(encode(src)); +} + +/** + * Decode decodes `src` into `decodedLen(src.length)` bytes + * If the input is malformed an error will be thrown + * the error. + * @param src + */ +export function decode(src: Uint8Array): Uint8Array { + const dst = new Uint8Array(decodedLen(src.length)); + for (let i = 0; i < dst.length; i++) { + const a = fromHexChar(src[i * 2]); + const b = fromHexChar(src[i * 2 + 1]); + dst[i] = (a << 4) | b; + } + + if (src.length % 2 == 1) { + // Check for invalid char before reporting bad length, + // since the invalid char (if present) is an earlier problem. + fromHexChar(src[dst.length * 2]); + throw errLength(); + } + + return dst; +} + +/** + * DecodedLen returns the length of decoding `x` source bytes. + * Specifically, it returns `x / 2`. + * @param x + */ +export function decodedLen(x: number): number { + return x >>> 1; +} + +/** + * DecodeString returns the bytes represented by the hexadecimal string `s`. + * DecodeString expects that src contains only hexadecimal characters and that + * src has even length. + * If the input is malformed, DecodeString will throw an error. + * @param s the `string` to decode to `Uint8Array` + */ +export function decodeString(s: string): Uint8Array { + return decode(new TextEncoder().encode(s)); +} diff --git a/bundler/tests/.cache/deno/f77bca47ddef1fcb5c0f6a204c98106198b772bf.ts b/bundler/tests/.cache/deno/f77bca47ddef1fcb5c0f6a204c98106198b772bf.ts new file mode 100644 index 00000000000..255ee5c4f75 --- /dev/null +++ b/bundler/tests/.cache/deno/f77bca47ddef1fcb5c0f6a204c98106198b772bf.ts @@ -0,0 +1,35 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_curry2.js + + +import _curry1 from './_curry1.js'; +import _isPlaceholder from './_isPlaceholder.js'; + + +/** + * Optimized internal two-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +export default function _curry2(fn) { + return function f2(a, b) { + switch (arguments.length) { + case 0: + return f2; + case 1: + return _isPlaceholder(a) + ? f2 + : _curry1(function(_b) { return fn(a, _b); }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) + ? f2 + : _isPlaceholder(a) + ? _curry1(function(_a) { return fn(_a, b); }) + : _isPlaceholder(b) + ? _curry1(function(_b) { return fn(a, _b); }) + : fn(a, b); + } + }; +} diff --git a/bundler/tests/.cache/deno/f7a288137584b146ff370328a50b3f52efb7036f.ts b/bundler/tests/.cache/deno/f7a288137584b146ff370328a50b3f52efb7036f.ts new file mode 100644 index 00000000000..11ab21320ee --- /dev/null +++ b/bundler/tests/.cache/deno/f7a288137584b146ff370328a50b3f52efb7036f.ts @@ -0,0 +1,721 @@ +// Loaded from https://deno.land/std@0.86.0/io/bufio.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// Based on https://github.com/golang/go/blob/891682/src/bufio/bufio.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +type Reader = Deno.Reader; +type Writer = Deno.Writer; +type WriterSync = Deno.WriterSync; +import { copy } from "../bytes/mod.ts"; +import { assert } from "../_util/assert.ts"; + +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const MAX_CONSECUTIVE_EMPTY_READS = 100; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); + +export class BufferFullError extends Error { + name = "BufferFullError"; + constructor(public partial: Uint8Array) { + super("Buffer full"); + } +} + +export class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + partial?: Uint8Array; + constructor() { + super("Encountered UnexpectedEof, data only partially read"); + } +} + +/** Result type returned by of BufReader.readLine(). */ +export interface ReadLineResult { + line: Uint8Array; + more: boolean; +} + +/** BufReader implements buffering for a Reader object. */ +export class BufReader implements Reader { + private buf!: Uint8Array; + private rd!: Reader; // Reader provided by caller. + private r = 0; // buf read position. + private w = 0; // buf write position. + private eof = false; + // private lastByte: number; + // private lastCharSize: number; + + /** return new BufReader unless r is BufReader */ + static create(r: Reader, size: number = DEFAULT_BUF_SIZE): BufReader { + return r instanceof BufReader ? r : new BufReader(r, size); + } + + constructor(rd: Reader, size: number = DEFAULT_BUF_SIZE) { + if (size < MIN_BUF_SIZE) { + size = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size), rd); + } + + /** Returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + buffered(): number { + return this.w - this.r; + } + + // Reads a new chunk into the buffer. + private async _fill(): Promise { + // Slide existing data to beginning. + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + + // Read new data: try a limited number of times. + for (let i = MAX_CONSECUTIVE_EMPTY_READS; i > 0; i--) { + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + + throw new Error( + `No progress after ${MAX_CONSECUTIVE_EMPTY_READS} read() calls`, + ); + } + + /** Discards any buffered data, resets all state, and switches + * the buffered reader to read from r. + */ + reset(r: Reader): void { + this._reset(this.buf, r); + } + + private _reset(buf: Uint8Array, rd: Reader): void { + this.buf = buf; + this.rd = rd; + this.eof = false; + // this.lastByte = -1; + // this.lastCharSize = -1; + } + + /** reads data into p. + * It returns the number of bytes read into p. + * The bytes are taken from at most one Read on the underlying Reader, + * hence n may be less than len(p). + * To read exactly len(p) bytes, use io.ReadFull(b, p). + */ + async read(p: Uint8Array): Promise { + let rr: number | null = p.byteLength; + if (p.byteLength === 0) return rr; + + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + // Large read, empty buffer. + // Read directly into p to avoid copy. + const rr = await this.rd.read(p); + const nread = rr ?? 0; + assert(nread >= 0, "negative read"); + // if (rr.nread > 0) { + // this.lastByte = p[rr.nread - 1]; + // this.lastCharSize = -1; + // } + return rr; + } + + // One read. + // Do not use this.fill, which will loop. + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert(rr >= 0, "negative read"); + this.w += rr; + } + + // copy as much as we can + const copied = copy(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + // this.lastByte = this.buf[this.r - 1]; + // this.lastCharSize = -1; + return copied; + } + + /** reads exactly `p.length` bytes into `p`. + * + * If successful, `p` is returned. + * + * If the end of the underlying stream has been reached, and there are no more + * bytes available in the buffer, `readFull()` returns `null` instead. + * + * An error is thrown if some bytes could be read, but not enough to fill `p` + * entirely before the underlying stream reported an error or EOF. Any error + * thrown will have a `partial` property that indicates the slice of the + * buffer that has been successfully filled with data. + * + * Ported from https://golang.org/pkg/io/#ReadFull + */ + async readFull(p: Uint8Array): Promise { + let bytesRead = 0; + while (bytesRead < p.length) { + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + + /** Returns the next byte [0, 255] or `null`. */ + async readByte(): Promise { + while (this.r === this.w) { + if (this.eof) return null; + await this._fill(); // buffer is empty. + } + const c = this.buf[this.r]; + this.r++; + // this.lastByte = c; + return c; + } + + /** readString() reads until the first occurrence of delim in the input, + * returning a string containing the data up to and including the delimiter. + * If ReadString encounters an error before finding a delimiter, + * it returns the data read before the error and the error itself + * (often `null`). + * ReadString returns err != nil if and only if the returned data does not end + * in delim. + * For simple uses, a Scanner may be more convenient. + */ + async readString(delim: string): Promise { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + + /** `readLine()` is a low-level line-reading primitive. Most callers should + * use `readString('\n')` instead or use a Scanner. + * + * `readLine()` tries to return a single line, not including the end-of-line + * bytes. If the line was too long for the buffer then `more` is set and the + * beginning of the line is returned. The rest of the line will be returned + * from future calls. `more` will be false when returning the last fragment + * of the line. The returned buffer is only valid until the next call to + * `readLine()`. + * + * The text returned from ReadLine does not include the line end ("\r\n" or + * "\n"). + * + * When the end of the underlying stream is reached, the final bytes in the + * stream are returned. No indication or error is given if the input ends + * without a final line end. When there are no more trailing bytes to read, + * `readLine()` returns `null`. + * + * Calling `unreadByte()` after `readLine()` will always unread the last byte + * read (possibly a character belonging to the line end) even if that byte is + * not part of the line returned by `readLine()`. + */ + async readLine(): Promise { + let line: Uint8Array | null; + + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial } = err; + assert( + partial instanceof Uint8Array, + "bufio: caught error from `readSlice()` without `partial` property", + ); + + // Don't throw if `readSlice()` failed with `BufferFullError`, instead we + // just return whatever is available and set the `more` flag. + if (!(err instanceof BufferFullError)) { + throw err; + } + + // Handle the case where "\r\n" straddles the buffer. + if ( + !this.eof && + partial.byteLength > 0 && + partial[partial.byteLength - 1] === CR + ) { + // Put the '\r' back on buf and drop it from line. + // Let the next call to ReadLine check for "\r\n". + assert(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial = partial.subarray(0, partial.byteLength - 1); + } + + return { line: partial, more: !this.eof }; + } + + if (line === null) { + return null; + } + + if (line.byteLength === 0) { + return { line, more: false }; + } + + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { line, more: false }; + } + + /** `readSlice()` reads until the first occurrence of `delim` in the input, + * returning a slice pointing at the bytes in the buffer. The bytes stop + * being valid at the next read. + * + * If `readSlice()` encounters an error before finding a delimiter, or the + * buffer fills without finding a delimiter, it throws an error with a + * `partial` property that contains the entire buffer. + * + * If `readSlice()` encounters the end of the underlying stream and there are + * any bytes left in the buffer, the rest of the buffer is returned. In other + * words, EOF is always treated as a delimiter. Once the buffer is empty, + * it returns `null`. + * + * Because the data returned from `readSlice()` will be overwritten by the + * next I/O operation, most clients should use `readString()` instead. + */ + async readSlice(delim: number): Promise { + let s = 0; // search start index + let slice: Uint8Array | undefined; + + while (true) { + // Search buffer. + let i = this.buf.subarray(this.r + s, this.w).indexOf(delim); + if (i >= 0) { + i += s; + slice = this.buf.subarray(this.r, this.r + i + 1); + this.r += i + 1; + break; + } + + // EOF? + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + + // Buffer full? + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + // #4521 The internal buffer should not be reused across reads because it causes corruption of data. + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + + s = this.w - this.r; // do not rescan area we scanned before + + // Buffer is not full. + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + + // Handle last byte, if any. + // const i = slice.byteLength - 1; + // if (i >= 0) { + // this.lastByte = slice[i]; + // this.lastCharSize = -1 + // } + + return slice; + } + + /** `peek()` returns the next `n` bytes without advancing the reader. The + * bytes stop being valid at the next read call. + * + * When the end of the underlying stream is reached, but there are unread + * bytes left in the buffer, those bytes are returned. If there are no bytes + * left in the buffer, it returns `null`. + * + * If an error is encountered before `n` bytes are available, `peek()` throws + * an error with the `partial` property set to a slice of the buffer that + * contains the bytes that were available before the error occurred. + */ + async peek(n: number): Promise { + if (n < 0) { + throw Error("negative count"); + } + + let avail = this.w - this.r; + while (avail < n && avail < this.buf.byteLength && !this.eof) { + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + + return this.buf.subarray(this.r, this.r + n); + } +} + +abstract class AbstractBufBase { + buf!: Uint8Array; + usedBufferBytes = 0; + err: Error | null = null; + + /** Size returns the size of the underlying buffer in bytes. */ + size(): number { + return this.buf.byteLength; + } + + /** Returns how many bytes are unused in the buffer. */ + available(): number { + return this.buf.byteLength - this.usedBufferBytes; + } + + /** buffered returns the number of bytes that have been written into the + * current buffer. + */ + buffered(): number { + return this.usedBufferBytes; + } +} + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter extends AbstractBufBase implements Writer { + /** return new BufWriter unless writer is BufWriter */ + static create(writer: Writer, size: number = DEFAULT_BUF_SIZE): BufWriter { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + + constructor(private writer: Writer, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: Writer): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.Writer. */ + async flush(): Promise { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + await Deno.writeAll( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + async write(data: Uint8Array): Promise { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** BufWriterSync implements buffering for a deno.WriterSync object. + * If an error occurs writing to a WriterSync, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.WriterSync. + */ +export class BufWriterSync extends AbstractBufBase implements WriterSync { + /** return new BufWriterSync unless writer is BufWriterSync */ + static create( + writer: WriterSync, + size: number = DEFAULT_BUF_SIZE, + ): BufWriterSync { + return writer instanceof BufWriterSync + ? writer + : new BufWriterSync(writer, size); + } + + constructor(private writer: WriterSync, size: number = DEFAULT_BUF_SIZE) { + super(); + if (size <= 0) { + size = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size); + } + + /** Discards any unflushed buffered data, clears any error, and + * resets buffer to write its output to w. + */ + reset(w: WriterSync): void { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + + /** Flush writes any buffered data to the underlying io.WriterSync. */ + flush(): void { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + + try { + Deno.writeAllSync( + this.writer, + this.buf.subarray(0, this.usedBufferBytes), + ); + } catch (e) { + this.err = e; + throw e; + } + + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + + /** Writes the contents of `data` into the buffer. If the contents won't fully + * fit into the buffer, those bytes that can are copied into the buffer, the + * buffer is the flushed to the writer and the remaining bytes are copied into + * the now empty buffer. + * + * @return the number of bytes written to the buffer. + */ + writeSync(data: Uint8Array): number { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + + let totalBytesWritten = 0; + let numBytesWritten = 0; + while (data.byteLength > this.available()) { + if (this.buffered() === 0) { + // Large write, empty buffer. + // Write directly from data to avoid copy. + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + + numBytesWritten = copy(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} + +/** Generate longest proper prefix which is also suffix array. */ +function createLPS(pat: Uint8Array): Uint8Array { + const lps = new Uint8Array(pat.length); + lps[0] = 0; + let prefixEnd = 0; + let i = 1; + while (i < lps.length) { + if (pat[i] == pat[prefixEnd]) { + prefixEnd++; + lps[i] = prefixEnd; + i++; + } else if (prefixEnd === 0) { + lps[i] = 0; + i++; + } else { + prefixEnd = pat[prefixEnd - 1]; + } + } + return lps; +} + +/** Read delimited bytes from a Reader. */ +export async function* readDelim( + reader: Reader, + delim: Uint8Array, +): AsyncIterableIterator { + // Avoid unicode problems + const delimLen = delim.length; + const delimLPS = createLPS(delim); + + let inputBuffer = new Deno.Buffer(); + const inspectArr = new Uint8Array(Math.max(1024, delimLen + 1)); + + // Modified KMP + let inspectIndex = 0; + let matchIndex = 0; + while (true) { + const result = await reader.read(inspectArr); + if (result === null) { + // Yield last chunk. + yield inputBuffer.bytes(); + return; + } + if ((result as number) < 0) { + // Discard all remaining and silently fail. + return; + } + const sliceRead = inspectArr.subarray(0, result as number); + await Deno.writeAll(inputBuffer, sliceRead); + + let sliceToProcess = inputBuffer.bytes(); + while (inspectIndex < sliceToProcess.length) { + if (sliceToProcess[inspectIndex] === delim[matchIndex]) { + inspectIndex++; + matchIndex++; + if (matchIndex === delimLen) { + // Full match + const matchEnd = inspectIndex - delimLen; + const readyBytes = sliceToProcess.subarray(0, matchEnd); + // Copy + const pendingBytes = sliceToProcess.slice(inspectIndex); + yield readyBytes; + // Reset match, different from KMP. + sliceToProcess = pendingBytes; + inspectIndex = 0; + matchIndex = 0; + } + } else { + if (matchIndex === 0) { + inspectIndex++; + } else { + matchIndex = delimLPS[matchIndex - 1]; + } + } + } + // Keep inspectIndex and matchIndex. + inputBuffer = new Deno.Buffer(sliceToProcess); + } +} + +/** Read delimited strings from a Reader. */ +export async function* readStringDelim( + reader: Reader, + delim: string, +): AsyncIterableIterator { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + for await (const chunk of readDelim(reader, encoder.encode(delim))) { + yield decoder.decode(chunk); + } +} + +/** Read strings line-by-line from a Reader. */ +export async function* readLines( + reader: Reader, +): AsyncIterableIterator { + for await (let chunk of readStringDelim(reader, "\n")) { + // Finding a CR at the end of the line is evidence of a + // "\r\n" at the end of the line. The "\r" part should be + // removed too. + if (chunk.endsWith("\r")) { + chunk = chunk.slice(0, -1); + } + yield chunk; + } +} diff --git a/bundler/tests/.cache/deno/f8075f908e7e00e3eeb3c41f7b28b4424ef83e42.ts b/bundler/tests/.cache/deno/f8075f908e7e00e3eeb3c41f7b28b4424ef83e42.ts new file mode 100644 index 00000000000..c4932d93543 --- /dev/null +++ b/bundler/tests/.cache/deno/f8075f908e7e00e3eeb3c41f7b28b4424ef83e42.ts @@ -0,0 +1,8 @@ +// Loaded from https://deno.land/x/case@v2.1.0/pathCase.ts + + +import normalCase from "./normalCase.ts"; + +export default function (value: string, locale?: string): string { + return normalCase(value, locale, "/"); +} diff --git a/bundler/tests/.cache/deno/f847494aa9da71deb1b07cc642be3516d6bc2ffb.ts b/bundler/tests/.cache/deno/f847494aa9da71deb1b07cc642be3516d6bc2ffb.ts new file mode 100644 index 00000000000..30f1c27a02a --- /dev/null +++ b/bundler/tests/.cache/deno/f847494aa9da71deb1b07cc642be3516d6bc2ffb.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/validation/rules/VariablesAreInputTypesRule.js + + +import { GraphQLError } from '../../error/GraphQLError.js'; +import { print } from '../../language/printer.js'; +import { isInputType } from '../../type/definition.js'; +import { typeFromAST } from '../../utilities/typeFromAST.js'; + +/** + * Variables are input types + * + * A GraphQL operation is only valid if all the variables it defines are of + * input types (scalar, enum, or input object). + */ +export function VariablesAreInputTypesRule(context) { + return { + VariableDefinition(node) { + const type = typeFromAST(context.getSchema(), node.type); + + if (type && !isInputType(type)) { + const variableName = node.variable.name.value; + const typeName = print(node.type); + context.reportError(new GraphQLError(`Variable "$${variableName}" cannot be non-input type "${typeName}".`, node.type)); + } + } + + }; +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/f87cd8105f83d28a9715932f46a1ef3699df5d69.ts b/bundler/tests/.cache/deno/f87cd8105f83d28a9715932f46a1ef3699df5d69.ts new file mode 100644 index 00000000000..dfe14a8b4da --- /dev/null +++ b/bundler/tests/.cache/deno/f87cd8105f83d28a9715932f46a1ef3699df5d69.ts @@ -0,0 +1,11 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_assertPromise.js + + +import _isFunction from './_isFunction.js'; +import _toString from './_toString.js'; + +export default function _assertPromise(name, p) { + if (p == null || !_isFunction(p.then)) { + throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, [])); + } +} diff --git a/bundler/tests/.cache/deno/f88af64c689473291055effbedab4343850440f1.ts b/bundler/tests/.cache/deno/f88af64c689473291055effbedab4343850440f1.ts new file mode 100644 index 00000000000..39525ec4cab --- /dev/null +++ b/bundler/tests/.cache/deno/f88af64c689473291055effbedab4343850440f1.ts @@ -0,0 +1,13 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_aperture.js + + +export default function _aperture(n, list) { + var idx = 0; + var limit = list.length - (n - 1); + var acc = new Array(limit >= 0 ? limit : 0); + while (idx < limit) { + acc[idx] = Array.prototype.slice.call(list, idx, idx + n); + idx += 1; + } + return acc; +} diff --git a/bundler/tests/.cache/deno/f8bb53835a776e1b7a50418681bd5406cccbb02c.ts b/bundler/tests/.cache/deno/f8bb53835a776e1b7a50418681bd5406cccbb02c.ts new file mode 100644 index 00000000000..338b5be76c6 --- /dev/null +++ b/bundler/tests/.cache/deno/f8bb53835a776e1b7a50418681bd5406cccbb02c.ts @@ -0,0 +1,7 @@ +// Loaded from https://deno.land/x/case@v2.1.0/vendor/camelCaseUpperRegexp.ts + + +const camelCaseUpperRegexp: RegExp = + /([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A])([A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A][a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A])/g; + +export default camelCaseUpperRegexp; diff --git a/bundler/tests/.cache/deno/f8c2a47022ff45cc5caa70c4e2f3a11b1bdda24e.ts b/bundler/tests/.cache/deno/f8c2a47022ff45cc5caa70c4e2f3a11b1bdda24e.ts new file mode 100644 index 00000000000..391868e3b2b --- /dev/null +++ b/bundler/tests/.cache/deno/f8c2a47022ff45cc5caa70c4e2f3a11b1bdda24e.ts @@ -0,0 +1,16 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isISRC.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; + +// see http://isrc.ifpi.org/en/isrc-standard/code-syntax +/** + * @ignore + */ +const isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/; + +export const isISRC = (str: string) => { + assertString(str); + return isrc.test(str); +}; diff --git a/bundler/tests/.cache/deno/f8c4d5e8bbdc6be52b26d6a88107512351d67064.ts b/bundler/tests/.cache/deno/f8c4d5e8bbdc6be52b26d6a88107512351d67064.ts new file mode 100644 index 00000000000..b8e188d50ee --- /dev/null +++ b/bundler/tests/.cache/deno/f8c4d5e8bbdc6be52b26d6a88107512351d67064.ts @@ -0,0 +1,522 @@ +// Loaded from https://deno.land/std@0.73.0/ws/mod.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { decode, encode } from "../encoding/utf8.ts"; +import { hasOwnProperty } from "../_util/has_own_property.ts"; +import { BufReader, BufWriter } from "../io/bufio.ts"; +import { readLong, readShort, sliceLongToBytes } from "../io/ioutil.ts"; +import { Sha1 } from "../hash/sha1.ts"; +import { writeResponse } from "../http/_io.ts"; +import { TextProtoReader } from "../textproto/mod.ts"; +import { Deferred, deferred } from "../async/deferred.ts"; +import { assert } from "../_util/assert.ts"; +import { concat } from "../bytes/mod.ts"; + +export enum OpCode { + Continue = 0x0, + TextFrame = 0x1, + BinaryFrame = 0x2, + Close = 0x8, + Ping = 0x9, + Pong = 0xa, +} + +export type WebSocketEvent = + | string + | Uint8Array + | WebSocketCloseEvent // Received after closing connection finished. + | WebSocketPingEvent // Received after pong frame responded. + | WebSocketPongEvent; + +export interface WebSocketCloseEvent { + code: number; + reason?: string; +} + +export function isWebSocketCloseEvent( + a: WebSocketEvent, +): a is WebSocketCloseEvent { + return hasOwnProperty(a, "code"); +} + +export type WebSocketPingEvent = ["ping", Uint8Array]; + +export function isWebSocketPingEvent( + a: WebSocketEvent, +): a is WebSocketPingEvent { + return Array.isArray(a) && a[0] === "ping" && a[1] instanceof Uint8Array; +} + +export type WebSocketPongEvent = ["pong", Uint8Array]; + +export function isWebSocketPongEvent( + a: WebSocketEvent, +): a is WebSocketPongEvent { + return Array.isArray(a) && a[0] === "pong" && a[1] instanceof Uint8Array; +} + +export type WebSocketMessage = string | Uint8Array; + +export interface WebSocketFrame { + isLastFrame: boolean; + opcode: OpCode; + mask?: Uint8Array; + payload: Uint8Array; +} + +export interface WebSocket extends AsyncIterable { + readonly conn: Deno.Conn; + readonly isClosed: boolean; + + [Symbol.asyncIterator](): AsyncIterableIterator; + + /** + * @throws `Deno.errors.ConnectionReset` + */ + send(data: WebSocketMessage): Promise; + + /** + * @param data + * @throws `Deno.errors.ConnectionReset` + */ + ping(data?: WebSocketMessage): Promise; + + /** Close connection after sending close frame to peer. + * This is canonical way of disconnection but it may hang because of peer's response delay. + * Default close code is 1000 (Normal Closure) + * @throws `Deno.errors.ConnectionReset` + */ + close(): Promise; + close(code: number): Promise; + close(code: number, reason: string): Promise; + + /** Close connection forcely without sending close frame to peer. + * This is basically undesirable way of disconnection. Use carefully. */ + closeForce(): void; +} + +/** Unmask masked websocket payload */ +export function unmask(payload: Uint8Array, mask?: Uint8Array): void { + if (mask) { + for (let i = 0, len = payload.length; i < len; i++) { + payload[i] ^= mask[i & 3]; + } + } +} + +/** Write websocket frame to given writer */ +export async function writeFrame( + frame: WebSocketFrame, + writer: Deno.Writer, +): Promise { + const payloadLength = frame.payload.byteLength; + let header: Uint8Array; + const hasMask = frame.mask ? 0x80 : 0; + if (frame.mask && frame.mask.byteLength !== 4) { + throw new Error( + "invalid mask. mask must be 4 bytes: length=" + frame.mask.byteLength, + ); + } + if (payloadLength < 126) { + header = new Uint8Array([0x80 | frame.opcode, hasMask | payloadLength]); + } else if (payloadLength < 0xffff) { + header = new Uint8Array([ + 0x80 | frame.opcode, + hasMask | 0b01111110, + payloadLength >>> 8, + payloadLength & 0x00ff, + ]); + } else { + header = new Uint8Array([ + 0x80 | frame.opcode, + hasMask | 0b01111111, + ...sliceLongToBytes(payloadLength), + ]); + } + if (frame.mask) { + header = concat(header, frame.mask); + } + unmask(frame.payload, frame.mask); + header = concat(header, frame.payload); + const w = BufWriter.create(writer); + await w.write(header); + await w.flush(); +} + +/** Read websocket frame from given BufReader + * @throws `Deno.errors.UnexpectedEof` When peer closed connection without close frame + * @throws `Error` Frame is invalid + */ +export async function readFrame(buf: BufReader): Promise { + let b = await buf.readByte(); + assert(b !== null); + let isLastFrame = false; + switch (b >>> 4) { + case 0b1000: + isLastFrame = true; + break; + case 0b0000: + isLastFrame = false; + break; + default: + throw new Error("invalid signature"); + } + const opcode = b & 0x0f; + // has_mask & payload + b = await buf.readByte(); + assert(b !== null); + const hasMask = b >>> 7; + let payloadLength = b & 0b01111111; + if (payloadLength === 126) { + const l = await readShort(buf); + assert(l !== null); + payloadLength = l; + } else if (payloadLength === 127) { + const l = await readLong(buf); + assert(l !== null); + payloadLength = Number(l); + } + // mask + let mask: Uint8Array | undefined; + if (hasMask) { + mask = new Uint8Array(4); + assert((await buf.readFull(mask)) !== null); + } + // payload + const payload = new Uint8Array(payloadLength); + assert((await buf.readFull(payload)) !== null); + return { + isLastFrame, + opcode, + mask, + payload, + }; +} + +class WebSocketImpl implements WebSocket { + readonly conn: Deno.Conn; + private readonly mask?: Uint8Array; + private readonly bufReader: BufReader; + private readonly bufWriter: BufWriter; + private sendQueue: Array<{ + frame: WebSocketFrame; + d: Deferred; + }> = []; + + constructor({ + conn, + bufReader, + bufWriter, + mask, + }: { + conn: Deno.Conn; + bufReader?: BufReader; + bufWriter?: BufWriter; + mask?: Uint8Array; + }) { + this.conn = conn; + this.mask = mask; + this.bufReader = bufReader || new BufReader(conn); + this.bufWriter = bufWriter || new BufWriter(conn); + } + + async *[Symbol.asyncIterator](): AsyncIterableIterator { + let frames: WebSocketFrame[] = []; + let payloadsLength = 0; + while (!this._isClosed) { + let frame: WebSocketFrame; + try { + frame = await readFrame(this.bufReader); + } catch (e) { + this.ensureSocketClosed(); + break; + } + unmask(frame.payload, frame.mask); + switch (frame.opcode) { + case OpCode.TextFrame: + case OpCode.BinaryFrame: + case OpCode.Continue: + frames.push(frame); + payloadsLength += frame.payload.length; + if (frame.isLastFrame) { + const concat = new Uint8Array(payloadsLength); + let offs = 0; + for (const frame of frames) { + concat.set(frame.payload, offs); + offs += frame.payload.length; + } + if (frames[0].opcode === OpCode.TextFrame) { + // text + yield decode(concat); + } else { + // binary + yield concat; + } + frames = []; + payloadsLength = 0; + } + break; + case OpCode.Close: { + // [0x12, 0x34] -> 0x1234 + const code = (frame.payload[0] << 8) | frame.payload[1]; + const reason = decode( + frame.payload.subarray(2, frame.payload.length), + ); + await this.close(code, reason); + yield { code, reason }; + return; + } + case OpCode.Ping: + await this.enqueue({ + opcode: OpCode.Pong, + payload: frame.payload, + isLastFrame: true, + }); + yield ["ping", frame.payload] as WebSocketPingEvent; + break; + case OpCode.Pong: + yield ["pong", frame.payload] as WebSocketPongEvent; + break; + default: + } + } + } + + private dequeue(): void { + const [entry] = this.sendQueue; + if (!entry) return; + if (this._isClosed) return; + const { d, frame } = entry; + writeFrame(frame, this.bufWriter) + .then(() => d.resolve()) + .catch((e) => d.reject(e)) + .finally(() => { + this.sendQueue.shift(); + this.dequeue(); + }); + } + + private enqueue(frame: WebSocketFrame): Promise { + if (this._isClosed) { + throw new Deno.errors.ConnectionReset("Socket has already been closed"); + } + const d = deferred(); + this.sendQueue.push({ d, frame }); + if (this.sendQueue.length === 1) { + this.dequeue(); + } + return d; + } + + send(data: WebSocketMessage): Promise { + const opcode = typeof data === "string" + ? OpCode.TextFrame + : OpCode.BinaryFrame; + const payload = typeof data === "string" ? encode(data) : data; + const isLastFrame = true; + const frame = { + isLastFrame, + opcode, + payload, + mask: this.mask, + }; + return this.enqueue(frame); + } + + ping(data: WebSocketMessage = ""): Promise { + const payload = typeof data === "string" ? encode(data) : data; + const frame = { + isLastFrame: true, + opcode: OpCode.Ping, + mask: this.mask, + payload, + }; + return this.enqueue(frame); + } + + private _isClosed = false; + get isClosed(): boolean { + return this._isClosed; + } + + async close(code = 1000, reason?: string): Promise { + try { + const header = [code >>> 8, code & 0x00ff]; + let payload: Uint8Array; + if (reason) { + const reasonBytes = encode(reason); + payload = new Uint8Array(2 + reasonBytes.byteLength); + payload.set(header); + payload.set(reasonBytes, 2); + } else { + payload = new Uint8Array(header); + } + await this.enqueue({ + isLastFrame: true, + opcode: OpCode.Close, + mask: this.mask, + payload, + }); + } catch (e) { + throw e; + } finally { + this.ensureSocketClosed(); + } + } + + closeForce(): void { + this.ensureSocketClosed(); + } + + private ensureSocketClosed(): void { + if (this.isClosed) return; + try { + this.conn.close(); + } catch (e) { + console.error(e); + } finally { + this._isClosed = true; + const rest = this.sendQueue; + this.sendQueue = []; + rest.forEach((e) => + e.d.reject( + new Deno.errors.ConnectionReset("Socket has already been closed"), + ) + ); + } + } +} + +/** Return whether given headers is acceptable for websocket */ +export function acceptable(req: { headers: Headers }): boolean { + const upgrade = req.headers.get("upgrade"); + if (!upgrade || upgrade.toLowerCase() !== "websocket") { + return false; + } + const secKey = req.headers.get("sec-websocket-key"); + return ( + req.headers.has("sec-websocket-key") && + typeof secKey === "string" && + secKey.length > 0 + ); +} + +const kGUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +/** Create sec-websocket-accept header value with given nonce */ +export function createSecAccept(nonce: string): string { + const sha1 = new Sha1(); + sha1.update(nonce + kGUID); + const bytes = sha1.digest(); + return btoa(String.fromCharCode(...bytes)); +} + +/** Upgrade given TCP connection into websocket connection */ +export async function acceptWebSocket(req: { + conn: Deno.Conn; + bufWriter: BufWriter; + bufReader: BufReader; + headers: Headers; +}): Promise { + const { conn, headers, bufReader, bufWriter } = req; + if (acceptable(req)) { + const sock = new WebSocketImpl({ conn, bufReader, bufWriter }); + const secKey = headers.get("sec-websocket-key"); + if (typeof secKey !== "string") { + throw new Error("sec-websocket-key is not provided"); + } + const secAccept = createSecAccept(secKey); + await writeResponse(bufWriter, { + status: 101, + headers: new Headers({ + Upgrade: "websocket", + Connection: "Upgrade", + "Sec-WebSocket-Accept": secAccept, + }), + }); + return sock; + } + throw new Error("request is not acceptable"); +} + +const kSecChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.~_"; + +/** Create WebSocket-Sec-Key. Base64 encoded 16 bytes string */ +export function createSecKey(): string { + let key = ""; + for (let i = 0; i < 16; i++) { + const j = Math.floor(Math.random() * kSecChars.length); + key += kSecChars[j]; + } + return btoa(key); +} + +export async function handshake( + url: URL, + headers: Headers, + bufReader: BufReader, + bufWriter: BufWriter, +): Promise { + const { hostname, pathname, search } = url; + const key = createSecKey(); + + if (!headers.has("host")) { + headers.set("host", hostname); + } + headers.set("upgrade", "websocket"); + headers.set("connection", "upgrade"); + headers.set("sec-websocket-key", key); + headers.set("sec-websocket-version", "13"); + + let headerStr = `GET ${pathname}${search} HTTP/1.1\r\n`; + for (const [key, value] of headers) { + headerStr += `${key}: ${value}\r\n`; + } + headerStr += "\r\n"; + + await bufWriter.write(encode(headerStr)); + await bufWriter.flush(); + + const tpReader = new TextProtoReader(bufReader); + const statusLine = await tpReader.readLine(); + if (statusLine === null) { + throw new Deno.errors.UnexpectedEof(); + } + const m = statusLine.match(/^(?\S+) (?\S+) /); + if (!m) { + throw new Error("ws: invalid status line: " + statusLine); + } + + assert(m.groups); + const { version, statusCode } = m.groups; + if (version !== "HTTP/1.1" || statusCode !== "101") { + throw new Error( + `ws: server didn't accept handshake: ` + + `version=${version}, statusCode=${statusCode}`, + ); + } + + const responseHeaders = await tpReader.readMIMEHeader(); + if (responseHeaders === null) { + throw new Deno.errors.UnexpectedEof(); + } + + const expectedSecAccept = createSecAccept(key); + const secAccept = responseHeaders.get("sec-websocket-accept"); + if (secAccept !== expectedSecAccept) { + throw new Error( + `ws: unexpected sec-websocket-accept header: ` + + `expected=${expectedSecAccept}, actual=${secAccept}`, + ); + } +} + +export function createWebSocket(params: { + conn: Deno.Conn; + bufWriter?: BufWriter; + bufReader?: BufReader; + mask?: Uint8Array; +}): WebSocket { + return new WebSocketImpl(params); +} diff --git a/bundler/tests/.cache/deno/f91daf3f8133eff220b094d690b446bbc14739c2.ts b/bundler/tests/.cache/deno/f91daf3f8133eff220b094d690b446bbc14739c2.ts new file mode 100644 index 00000000000..00349cee9de --- /dev/null +++ b/bundler/tests/.cache/deno/f91daf3f8133eff220b094d690b446bbc14739c2.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/std/path/separator.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { isWindows } from "../_util/os.ts"; + +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; diff --git a/bundler/tests/.cache/deno/f97a47df59b9002adeeb2fa1f11cf389ada1b1c6.ts b/bundler/tests/.cache/deno/f97a47df59b9002adeeb2fa1f11cf389ada1b1c6.ts new file mode 100644 index 00000000000..001c9d21557 --- /dev/null +++ b/bundler/tests/.cache/deno/f97a47df59b9002adeeb2fa1f11cf389ada1b1c6.ts @@ -0,0 +1,38 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/dropLastWhile.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _dropLastWhile from './internal/_dropLastWhile.js'; +import _xdropLastWhile from './internal/_xdropLastWhile.js'; + + +/** + * Returns a new list excluding all the tailing elements of a given list which + * satisfy the supplied predicate function. It passes each value from the right + * to the supplied predicate function, skipping elements until the predicate + * function returns a `falsy` value. The predicate function is applied to one argument: + * *(value)*. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} predicate The function to be called on each element + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`. + * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile + * @example + * + * const lteThree = x => x <= 3; + * + * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] + * + * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd' + */ +var dropLastWhile = _curry2(_dispatchable([], _xdropLastWhile, _dropLastWhile)); +export default dropLastWhile; diff --git a/bundler/tests/.cache/deno/f9f21d25b654bd4c86619cabdec3c0d45b4ef019.ts b/bundler/tests/.cache/deno/f9f21d25b654bd4c86619cabdec3c0d45b4ef019.ts new file mode 100644 index 00000000000..005ac06b260 --- /dev/null +++ b/bundler/tests/.cache/deno/f9f21d25b654bd4c86619cabdec3c0d45b4ef019.ts @@ -0,0 +1,63 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_reduce.js + + +import _isArrayLike from './_isArrayLike.js'; +import _xwrap from './_xwrap.js'; +import bind from '../bind.js'; + + +function _arrayReduce(xf, acc, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + acc = xf['@@transducer/step'](acc, list[idx]); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + idx += 1; + } + return xf['@@transducer/result'](acc); +} + +function _iterableReduce(xf, acc, iter) { + var step = iter.next(); + while (!step.done) { + acc = xf['@@transducer/step'](acc, step.value); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + step = iter.next(); + } + return xf['@@transducer/result'](acc); +} + +function _methodReduce(xf, acc, obj, methodName) { + return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc)); +} + +var symIterator = (typeof Symbol !== 'undefined') ? Symbol.iterator : '@@iterator'; + +export default function _reduce(fn, acc, list) { + if (typeof fn === 'function') { + fn = _xwrap(fn); + } + if (_isArrayLike(list)) { + return _arrayReduce(fn, acc, list); + } + if (typeof list['fantasy-land/reduce'] === 'function') { + return _methodReduce(fn, acc, list, 'fantasy-land/reduce'); + } + if (list[symIterator] != null) { + return _iterableReduce(fn, acc, list[symIterator]()); + } + if (typeof list.next === 'function') { + return _iterableReduce(fn, acc, list); + } + if (typeof list.reduce === 'function') { + return _methodReduce(fn, acc, list, 'reduce'); + } + + throw new TypeError('reduce: list must be array or iterable'); +} diff --git a/bundler/tests/.cache/deno/fa12a97e0eea5f7ff4cca4685863a82f6d6198a3.ts b/bundler/tests/.cache/deno/fa12a97e0eea5f7ff4cca4685863a82f6d6198a3.ts new file mode 100644 index 00000000000..dcc91d74b85 --- /dev/null +++ b/bundler/tests/.cache/deno/fa12a97e0eea5f7ff4cca4685863a82f6d6198a3.ts @@ -0,0 +1,37 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/reverse.js + + +import _curry1 from './internal/_curry1.js'; +import _isString from './internal/_isString.js'; + + +/** + * Returns a new list or string with the elements or characters in reverse + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {Array|String} list + * @return {Array|String} + * @example + * + * R.reverse([1, 2, 3]); //=> [3, 2, 1] + * R.reverse([1, 2]); //=> [2, 1] + * R.reverse([1]); //=> [1] + * R.reverse([]); //=> [] + * + * R.reverse('abc'); //=> 'cba' + * R.reverse('ab'); //=> 'ba' + * R.reverse('a'); //=> 'a' + * R.reverse(''); //=> '' + */ +var reverse = _curry1(function reverse(list) { + return _isString(list) + ? list.split('').reverse().join('') + : Array.prototype.slice.call(list, 0).reverse(); +}); +export default reverse; diff --git a/bundler/tests/.cache/deno/fa25816f309cddef2a346d753305c16d34053aed.ts b/bundler/tests/.cache/deno/fa25816f309cddef2a346d753305c16d34053aed.ts new file mode 100644 index 00000000000..5e3bb51a641 --- /dev/null +++ b/bundler/tests/.cache/deno/fa25816f309cddef2a346d753305c16d34053aed.ts @@ -0,0 +1,99 @@ +// Loaded from https://deno.land/std@0.78.0/encoding/_yaml/type/timestamp.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { Type } from "../type.ts"; + +const YAML_DATE_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])" + // [1] year + "-([0-9][0-9])" + // [2] month + "-([0-9][0-9])$", // [3] day +); + +const YAML_TIMESTAMP_REGEXP = new RegExp( + "^([0-9][0-9][0-9][0-9])" + // [1] year + "-([0-9][0-9]?)" + // [2] month + "-([0-9][0-9]?)" + // [3] day + "(?:[Tt]|[ \\t]+)" + // ... + "([0-9][0-9]?)" + // [4] hour + ":([0-9][0-9])" + // [5] minute + ":([0-9][0-9])" + // [6] second + "(?:\\.([0-9]*))?" + // [7] fraction + "(?:[ \\t]*(Z|([-+])([0-9][0-9]?)" + // [8] tz [9] tz_sign [10] tz_hour + "(?::([0-9][0-9]))?))?$", // [11] tz_minute +); + +function resolveYamlTimestamp(data: string): boolean { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data: string): Date { + let match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error("Date resolve error"); + + // match: [1] year [2] month [3] day + + const year = +match[1]; + const month = +match[2] - 1; // JS month starts with 0 + const day = +match[3]; + + if (!match[4]) { + // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + const hour = +match[4]; + const minute = +match[5]; + const second = +match[6]; + + let fraction = 0; + if (match[7]) { + let partFraction = match[7].slice(0, 3); + while (partFraction.length < 3) { + // milli-seconds + partFraction += "0"; + } + fraction = +partFraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + let delta = null; + if (match[9]) { + const tzHour = +match[10]; + const tzMinute = +(match[11] || 0); + delta = (tzHour * 60 + tzMinute) * 60000; // delta in milli-seconds + if (match[9] === "-") delta = -delta; + } + + const date = new Date( + Date.UTC(year, month, day, hour, minute, second, fraction), + ); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(date: Date): string { + return date.toISOString(); +} + +export const timestamp = new Type("tag:yaml.org,2002:timestamp", { + construct: constructYamlTimestamp, + instanceOf: Date, + kind: "scalar", + represent: representYamlTimestamp, + resolve: resolveYamlTimestamp, +}); diff --git a/bundler/tests/.cache/deno/fa5bd8d675520a5bc705a1f96e4b85ed9b0edd69.ts b/bundler/tests/.cache/deno/fa5bd8d675520a5bc705a1f96e4b85ed9b0edd69.ts new file mode 100644 index 00000000000..45589b2ca5b --- /dev/null +++ b/bundler/tests/.cache/deno/fa5bd8d675520a5bc705a1f96e4b85ed9b0edd69.ts @@ -0,0 +1,10 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_cloneRegExp.js + + +export default function _cloneRegExp(pattern) { + return new RegExp(pattern.source, (pattern.global ? 'g' : '') + + (pattern.ignoreCase ? 'i' : '') + + (pattern.multiline ? 'm' : '') + + (pattern.sticky ? 'y' : '') + + (pattern.unicode ? 'u' : '')); +} diff --git a/bundler/tests/.cache/deno/fa715edf303af3b4386d042f774b0f864b3938b0.ts b/bundler/tests/.cache/deno/fa715edf303af3b4386d042f774b0f864b3938b0.ts new file mode 100644 index 00000000000..77e06f62bfd --- /dev/null +++ b/bundler/tests/.cache/deno/fa715edf303af3b4386d042f774b0f864b3938b0.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/unless.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is not satisfied, the function will return the result of + * calling the `whenFalseFn` function with the same argument. If the predicate + * is satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates + * to a falsy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenFalseFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`. + * @see R.ifElse, R.when, R.cond + * @example + * + * let safeInc = R.unless(R.isNil, R.inc); + * safeInc(null); //=> null + * safeInc(1); //=> 2 + */ +var unless = _curry3(function unless(pred, whenFalseFn, x) { + return pred(x) ? x : whenFalseFn(x); +}); +export default unless; diff --git a/bundler/tests/.cache/deno/fb76fe5b3790c291801543be78d0405b0f19ed78.ts b/bundler/tests/.cache/deno/fb76fe5b3790c291801543be78d0405b0f19ed78.ts new file mode 100644 index 00000000000..e3fd113284b --- /dev/null +++ b/bundler/tests/.cache/deno/fb76fe5b3790c291801543be78d0405b0f19ed78.ts @@ -0,0 +1,72 @@ +// Loaded from https://deno.land/x/mysql/src/auth_plugin/caching_sha2_password.ts + + +import { xor } from "../util.ts"; +import { ReceivePacket } from "../packets/packet.ts"; +import { encryptWithPublicKey } from "./crypt.ts"; + +interface handler { + done: boolean; + quickRead?: boolean; + next?: (packet: ReceivePacket) => any; + data?: Uint8Array; +} + +let scramble: Uint8Array, password: string; +function start(scramble_: Uint8Array, password_: string): handler { + scramble = scramble_; + password = password_; + return { done: false, next: authMoreResponse }; +} +function authMoreResponse(packet: ReceivePacket): handler { + const enum AuthStatusFlags { + FullAuth = 0x04, + FastPath = 0x03, + } + const REQUEST_PUBLIC_KEY = 0x02; + const statusFlag = packet.body.skip(1).readUint8(); + let authMoreData, done = true, next, quickRead = false; + if (statusFlag === AuthStatusFlags.FullAuth) { + authMoreData = new Uint8Array([REQUEST_PUBLIC_KEY]); + done = false; + next = encryptWithKey; + } + if (statusFlag === AuthStatusFlags.FastPath) { + done = false; + quickRead = true; + next = terminate; + } + return { done, next, quickRead, data: authMoreData }; +} + +function encryptWithKey(packet: ReceivePacket): handler { + const publicKey = parsePublicKey(packet); + const len = password.length; + let passwordBuffer: Uint8Array = new Uint8Array(len + 1); + for (let n = 0; n < len; n++) { + passwordBuffer[n] = password.charCodeAt(n); + } + passwordBuffer[len] = 0x00; + + const encryptedPassword = encrypt(passwordBuffer, scramble, publicKey); + return { done: false, next: terminate, data: encryptedPassword }; +} + +function parsePublicKey(packet: ReceivePacket): string { + return packet.body.skip(1).readNullTerminatedString(); +} +function encrypt( + password: Uint8Array, + scramble: Uint8Array, + key: string, +): Uint8Array { + const stage1 = xor(password, scramble); + const encrypted = encryptWithPublicKey(key, stage1); + return encrypted; +} + +function terminate() { + return { done: true }; +} + +export { start }; diff --git a/bundler/tests/.cache/deno/fba9ab0a8e3a433e8169fe3db7945664bd79de68.ts b/bundler/tests/.cache/deno/fba9ab0a8e3a433e8169fe3db7945664bd79de68.ts new file mode 100644 index 00000000000..97d58ccab8b --- /dev/null +++ b/bundler/tests/.cache/deno/fba9ab0a8e3a433e8169fe3db7945664bd79de68.ts @@ -0,0 +1,390 @@ +// Loaded from https://deno.land/std@0.77.0/path/glob.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { NATIVE_OS } from "./_constants.ts"; +import { join, normalize } from "./mod.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; + +export interface GlobOptions { + /** Extended glob syntax. + * See https://www.linuxjournal.com/content/bash-extended-globbing. Defaults + * to true. */ + extended?: boolean; + /** Globstar syntax. + * See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * If false, `**` is treated like `*`. Defaults to true. */ + globstar?: boolean; + /** Operating system. Defaults to the native OS. */ + os?: typeof Deno.build.os; +} + +export type GlobToRegExpOptions = GlobOptions; + +// deno-fmt-ignore +const regExpEscapeChars = ["!", "$", "(", ")", "*", "+", ".", "=", "?", "[", "\\", "^", "{", "|"]; +const rangeEscapeChars = ["-", "\\", "]"]; + +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[::]]` - Matches any character belonging to ``. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precendence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occured. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ +export function globToRegExp( + glob: string, + { extended = true, globstar: globstarOption = true, os = NATIVE_OS }: + GlobToRegExpOptions = {}, +): RegExp { + if (glob == "") { + return /(?!)/; + } + + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? ["\\", "/"] : ["/"]; + const globstar = os == "windows" + ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" + : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + + // Remove trailing separators. + let newLength = glob.length; + for (; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + + let regExpString = ""; + + // Terminates correctly. Trust that `j` is incremented every iteration. + for (let j = 0; j < glob.length;) { + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + + // Terminates with `i` at the non-inclusive end of the current segment. + for (; i < glob.length && !seps.includes(glob[i]); i++) { + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while (glob[k + 1] != null && glob[k + 1] != ":") { + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + + if ( + glob[i] == ")" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += ")"; + const type = groupStack.pop()!; + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + + if ( + glob[i] == "|" && groupStack.length > 0 && + groupStack[groupStack.length - 1] != "BRACE" + ) { + segment += "|"; + continue; + } + + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while (glob[i + 1] == "*") { + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if ( + globstarOption && numStars == 2 && + [...seps, undefined].includes(prevChar) && + [...seps, undefined].includes(nextChar) + ) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)) { + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + + // Terminates with `i` at the start of the next segment. + while (seps.includes(glob[i])) i++; + + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + + regExpString = `^${regExpString}$`; + return new RegExp(regExpString); +} + +/** Test whether the given string is a glob */ +export function isGlob(str: string): boolean { + const chars: Record = { "{": "}", "(": ")", "[": "]" }; + const regex = + /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + + if (str === "") { + return false; + } + + let match: RegExpExecArray | null; + + while ((match = regex.exec(str))) { + if (match[2]) return true; + let idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + + return false; +} + +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function normalizeGlob( + glob: string, + { globstar = false }: GlobOptions = {}, +): string { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp( + `(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, + "g", + ); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} + +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ +export function joinGlobs( + globs: string[], + { extended = false, globstar = false }: GlobOptions = {}, +): string { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined: string | undefined; + for (const glob of globs) { + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { extended, globstar }); +} diff --git a/bundler/tests/.cache/deno/fbbd951977a8ad31538f05f6c7ec04894c2e3acf.ts b/bundler/tests/.cache/deno/fbbd951977a8ad31538f05f6c7ec04894c2e3acf.ts new file mode 100644 index 00000000000..499922aa8e8 --- /dev/null +++ b/bundler/tests/.cache/deno/fbbd951977a8ad31538f05f6c7ec04894c2e3acf.ts @@ -0,0 +1,28 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/split.js + + +import invoker from './invoker.js'; + + +/** + * Splits a string into an array of strings based on the given + * separator. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig (String | RegExp) -> String -> [String] + * @param {String|RegExp} sep The pattern. + * @param {String} str The string to separate into an array. + * @return {Array} The array of strings from `str` separated by `sep`. + * @see R.join + * @example + * + * const pathComponents = R.split('/'); + * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node'] + * + * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] + */ +var split = invoker(1, 'split'); +export default split; diff --git a/bundler/tests/.cache/deno/fbf6021d68f594c20f3f8783fafa2d429520b30b.ts b/bundler/tests/.cache/deno/fbf6021d68f594c20f3f8783fafa2d429520b30b.ts new file mode 100644 index 00000000000..8c65c90f4a0 --- /dev/null +++ b/bundler/tests/.cache/deno/fbf6021d68f594c20f3f8783fafa2d429520b30b.ts @@ -0,0 +1,128 @@ +// Loaded from https://deno.land/std@0.80.0/encoding/_yaml/type/float.ts + + +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +import { StyleVariant, Type } from "../type.ts"; +import { Any, isNegativeZero } from "../utils.ts"; + +const YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + "^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?" + + // .2e4, .2 + // special case, seems not from spec + "|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?" + + // 20:59 + "|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*" + + // .inf + "|[-+]?\\.(?:inf|Inf|INF)" + + // .nan + "|\\.(?:nan|NaN|NAN))$", +); + +function resolveYamlFloat(data: string): boolean { + if ( + !YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === "_" + ) { + return false; + } + + return true; +} + +function constructYamlFloat(data: string): number { + let value = data.replace(/_/g, "").toLowerCase(); + const sign = value[0] === "-" ? -1 : 1; + const digits: number[] = []; + + if ("+-".indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === ".inf") { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } + if (value === ".nan") { + return NaN; + } + if (value.indexOf(":") >= 0) { + value.split(":").forEach((v): void => { + digits.unshift(parseFloat(v)); + }); + + let valueNb = 0.0; + let base = 1; + + digits.forEach((d): void => { + valueNb += d * base; + base *= 60; + }); + + return sign * valueNb; + } + return sign * parseFloat(value); +} + +const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object: Any, style?: StyleVariant): Any { + if (isNaN(object)) { + switch (style) { + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + } else if (isNegativeZero(object)) { + return "-0.0"; + } + + const res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; +} + +function isFloat(object: Any): boolean { + return ( + Object.prototype.toString.call(object) === "[object Number]" && + (object % 1 !== 0 || isNegativeZero(object)) + ); +} + +export const float = new Type("tag:yaml.org,2002:float", { + construct: constructYamlFloat, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isFloat, + represent: representYamlFloat, + resolve: resolveYamlFloat, +}); diff --git a/bundler/tests/.cache/deno/fc017a41bd63bc3b49e8cbdd0be35d392ce75701.ts b/bundler/tests/.cache/deno/fc017a41bd63bc3b49e8cbdd0be35d392ce75701.ts new file mode 100644 index 00000000000..07d722fabf7 --- /dev/null +++ b/bundler/tests/.cache/deno/fc017a41bd63bc3b49e8cbdd0be35d392ce75701.ts @@ -0,0 +1,546 @@ +// Loaded from https://deno.land/std/hash/sha256.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/* + * Adapted to deno from: + * + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +export type Message = string | number[] | ArrayBuffer; + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128] as const; +const SHIFT = [24, 16, 8, 0] as const; +// deno-fmt-ignore +const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, +] as const; + +const blocks: number[] = []; + +export class Sha256 { + #block!: number; + #blocks!: number[]; + #bytes!: number; + #finalized!: boolean; + #first!: boolean; + #h0!: number; + #h1!: number; + #h2!: number; + #h3!: number; + #h4!: number; + #h5!: number; + #h6!: number; + #h7!: number; + #hashed!: boolean; + #hBytes!: number; + #is224!: boolean; + #lastByteIndex = 0; + #start!: number; + + constructor(is224 = false, sharedMemory = false) { + this.init(is224, sharedMemory); + } + + protected init(is224: boolean, sharedMemory: boolean): void { + if (sharedMemory) { + // deno-fmt-ignore + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + this.#blocks = blocks; + } else { + this.#blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + if (is224) { + this.#h0 = 0xc1059ed8; + this.#h1 = 0x367cd507; + this.#h2 = 0x3070dd17; + this.#h3 = 0xf70e5939; + this.#h4 = 0xffc00b31; + this.#h5 = 0x68581511; + this.#h6 = 0x64f98fa7; + this.#h7 = 0xbefa4fa4; + } else { + // 256 + this.#h0 = 0x6a09e667; + this.#h1 = 0xbb67ae85; + this.#h2 = 0x3c6ef372; + this.#h3 = 0xa54ff53a; + this.#h4 = 0x510e527f; + this.#h5 = 0x9b05688c; + this.#h6 = 0x1f83d9ab; + this.#h7 = 0x5be0cd19; + } + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + this.#first = true; + this.#is224 = is224; + } + + /** Update hash + * + * @param message The message you want to hash. + */ + update(message: Message): this { + if (this.#finalized) { + return this; + } + + let msg: string | number[] | Uint8Array | undefined; + if (message instanceof ArrayBuffer) { + msg = new Uint8Array(message); + } else { + msg = message; + } + + let index = 0; + const length = msg.length; + const blocks = this.#blocks; + + while (index < length) { + let i: number; + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + + if (typeof msg !== "string") { + for (i = this.#start; index < length && i < 64; ++index) { + blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.#start; index < length && i < 64; ++index) { + let code = msg.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (msg.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - this.#start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) << 0; + this.#bytes = this.#bytes % 4294967296; + } + return this; + } + + protected finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + // deno-fmt-ignore + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + protected hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f = this.#h5; + let g = this.#h6; + let h = this.#h7; + const blocks = this.#blocks; + let s0: number; + let s1: number; + let maj: number; + let t1: number; + let t2: number; + let ch: number; + let ab: number; + let da: number; + let cd: number; + let bc: number; + + for (let j = 16; j < 64; ++j) { + // rightrotate + t1 = blocks[j - 15]; + s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3); + t1 = blocks[j - 2]; + s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ + (t1 >>> 10); + blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0; + } + + bc = b & c; + for (let j = 0; j < 64; j += 4) { + if (this.#first) { + if (this.#is224) { + ab = 300032; + t1 = blocks[0] - 1413257819; + h = (t1 - 150054599) << 0; + d = (t1 + 24177077) << 0; + } else { + ab = 704751109; + t1 = blocks[0] - 210244248; + h = (t1 - 1521486534) << 0; + d = (t1 + 143694565) << 0; + } + this.#first = false; + } else { + s0 = ((a >>> 2) | (a << 30)) ^ + ((a >>> 13) | (a << 19)) ^ + ((a >>> 22) | (a << 10)); + s1 = ((e >>> 6) | (e << 26)) ^ + ((e >>> 11) | (e << 21)) ^ + ((e >>> 25) | (e << 7)); + ab = a & b; + maj = ab ^ (a & c) ^ bc; + ch = (e & f) ^ (~e & g); + t1 = h + s1 + ch + K[j] + blocks[j]; + t2 = s0 + maj; + h = (d + t1) << 0; + d = (t1 + t2) << 0; + } + s0 = ((d >>> 2) | (d << 30)) ^ + ((d >>> 13) | (d << 19)) ^ + ((d >>> 22) | (d << 10)); + s1 = ((h >>> 6) | (h << 26)) ^ + ((h >>> 11) | (h << 21)) ^ + ((h >>> 25) | (h << 7)); + da = d & a; + maj = da ^ (d & b) ^ ab; + ch = (h & e) ^ (~h & f); + t1 = g + s1 + ch + K[j + 1] + blocks[j + 1]; + t2 = s0 + maj; + g = (c + t1) << 0; + c = (t1 + t2) << 0; + s0 = ((c >>> 2) | (c << 30)) ^ + ((c >>> 13) | (c << 19)) ^ + ((c >>> 22) | (c << 10)); + s1 = ((g >>> 6) | (g << 26)) ^ + ((g >>> 11) | (g << 21)) ^ + ((g >>> 25) | (g << 7)); + cd = c & d; + maj = cd ^ (c & a) ^ da; + ch = (g & h) ^ (~g & e); + t1 = f + s1 + ch + K[j + 2] + blocks[j + 2]; + t2 = s0 + maj; + f = (b + t1) << 0; + b = (t1 + t2) << 0; + s0 = ((b >>> 2) | (b << 30)) ^ + ((b >>> 13) | (b << 19)) ^ + ((b >>> 22) | (b << 10)); + s1 = ((f >>> 6) | (f << 26)) ^ + ((f >>> 11) | (f << 21)) ^ + ((f >>> 25) | (f << 7)); + bc = b & c; + maj = bc ^ (b & d) ^ cd; + ch = (f & g) ^ (~f & h); + t1 = e + s1 + ch + K[j + 3] + blocks[j + 3]; + t2 = s0 + maj; + e = (a + t1) << 0; + a = (t1 + t2) << 0; + } + + this.#h0 = (this.#h0 + a) << 0; + this.#h1 = (this.#h1 + b) << 0; + this.#h2 = (this.#h2 + c) << 0; + this.#h3 = (this.#h3 + d) << 0; + this.#h4 = (this.#h4 + e) << 0; + this.#h5 = (this.#h5 + f) << 0; + this.#h6 = (this.#h6 + g) << 0; + this.#h7 = (this.#h7 + h) << 0; + } + + /** Return hash in hex string. */ + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + let hex = HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + + HEX_CHARS[(h5 >> 28) & 0x0f] + + HEX_CHARS[(h5 >> 24) & 0x0f] + + HEX_CHARS[(h5 >> 20) & 0x0f] + + HEX_CHARS[(h5 >> 16) & 0x0f] + + HEX_CHARS[(h5 >> 12) & 0x0f] + + HEX_CHARS[(h5 >> 8) & 0x0f] + + HEX_CHARS[(h5 >> 4) & 0x0f] + + HEX_CHARS[h5 & 0x0f] + + HEX_CHARS[(h6 >> 28) & 0x0f] + + HEX_CHARS[(h6 >> 24) & 0x0f] + + HEX_CHARS[(h6 >> 20) & 0x0f] + + HEX_CHARS[(h6 >> 16) & 0x0f] + + HEX_CHARS[(h6 >> 12) & 0x0f] + + HEX_CHARS[(h6 >> 8) & 0x0f] + + HEX_CHARS[(h6 >> 4) & 0x0f] + + HEX_CHARS[h6 & 0x0f]; + if (!this.#is224) { + hex += HEX_CHARS[(h7 >> 28) & 0x0f] + + HEX_CHARS[(h7 >> 24) & 0x0f] + + HEX_CHARS[(h7 >> 20) & 0x0f] + + HEX_CHARS[(h7 >> 16) & 0x0f] + + HEX_CHARS[(h7 >> 12) & 0x0f] + + HEX_CHARS[(h7 >> 8) & 0x0f] + + HEX_CHARS[(h7 >> 4) & 0x0f] + + HEX_CHARS[h7 & 0x0f]; + } + return hex; + } + + /** Return hash in hex string. */ + toString(): string { + return this.hex(); + } + + /** Return hash in integer array. */ + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + const h5 = this.#h5; + const h6 = this.#h6; + const h7 = this.#h7; + + const arr = [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + (h5 >> 24) & 0xff, + (h5 >> 16) & 0xff, + (h5 >> 8) & 0xff, + h5 & 0xff, + (h6 >> 24) & 0xff, + (h6 >> 16) & 0xff, + (h6 >> 8) & 0xff, + h6 & 0xff, + ]; + if (!this.#is224) { + arr.push( + (h7 >> 24) & 0xff, + (h7 >> 16) & 0xff, + (h7 >> 8) & 0xff, + h7 & 0xff, + ); + } + return arr; + } + + /** Return hash in integer array. */ + array(): number[] { + return this.digest(); + } + + /** Return hash in ArrayBuffer. */ + arrayBuffer(): ArrayBuffer { + this.finalize(); + + const buffer = new ArrayBuffer(this.#is224 ? 28 : 32); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.#h0); + dataView.setUint32(4, this.#h1); + dataView.setUint32(8, this.#h2); + dataView.setUint32(12, this.#h3); + dataView.setUint32(16, this.#h4); + dataView.setUint32(20, this.#h5); + dataView.setUint32(24, this.#h6); + if (!this.#is224) { + dataView.setUint32(28, this.#h7); + } + return buffer; + } +} + +export class HmacSha256 extends Sha256 { + #inner: boolean; + #is224: boolean; + #oKeyPad: number[]; + #sharedMemory: boolean; + + constructor(secretKey: Message, is224 = false, sharedMemory = false) { + super(is224, sharedMemory); + + let key: number[] | Uint8Array | undefined; + if (typeof secretKey === "string") { + const bytes: number[] = []; + const length = secretKey.length; + let index = 0; + for (let i = 0; i < length; ++i) { + let code = secretKey.charCodeAt(i); + if (code < 0x80) { + bytes[index++] = code; + } else if (code < 0x800) { + bytes[index++] = 0xc0 | (code >> 6); + bytes[index++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + bytes[index++] = 0xe0 | (code >> 12); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } else { + code = 0x10000 + + (((code & 0x3ff) << 10) | (secretKey.charCodeAt(++i) & 0x3ff)); + bytes[index++] = 0xf0 | (code >> 18); + bytes[index++] = 0x80 | ((code >> 12) & 0x3f); + bytes[index++] = 0x80 | ((code >> 6) & 0x3f); + bytes[index++] = 0x80 | (code & 0x3f); + } + } + key = bytes; + } else { + if (secretKey instanceof ArrayBuffer) { + key = new Uint8Array(secretKey); + } else { + key = secretKey; + } + } + + if (key.length > 64) { + key = new Sha256(is224, true).update(key).array(); + } + + const oKeyPad: number[] = []; + const iKeyPad: number[] = []; + for (let i = 0; i < 64; ++i) { + const b = key[i] || 0; + oKeyPad[i] = 0x5c ^ b; + iKeyPad[i] = 0x36 ^ b; + } + + this.update(iKeyPad); + this.#oKeyPad = oKeyPad; + this.#inner = true; + this.#is224 = is224; + this.#sharedMemory = sharedMemory; + } + + protected finalize(): void { + super.finalize(); + if (this.#inner) { + this.#inner = false; + const innerHash = this.array(); + super.init(this.#is224, this.#sharedMemory); + this.update(this.#oKeyPad); + this.update(innerHash); + super.finalize(); + } + } +} diff --git a/bundler/tests/.cache/deno/fc286d9e2cc76292ceab3b84df5a486bb0494346.ts b/bundler/tests/.cache/deno/fc286d9e2cc76292ceab3b84df5a486bb0494346.ts new file mode 100644 index 00000000000..c5f07b74063 --- /dev/null +++ b/bundler/tests/.cache/deno/fc286d9e2cc76292ceab3b84df5a486bb0494346.ts @@ -0,0 +1,41 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/zipWith.js + + +import _curry3 from './internal/_curry3.js'; + + +/** + * Creates a new list out of the two supplied by applying the function to each + * equally-positioned pair in the lists. The returned list is truncated to the + * length of the shorter of the two input lists. + * + * @function + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> c) -> [a] -> [b] -> [c] + * @param {Function} fn The function used to combine the two elements into one value. + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by combining same-indexed elements of `list1` and `list2` + * using `fn`. + * @example + * + * const f = (x, y) => { + * // ... + * }; + * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']); + * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')] + * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)] + */ +var zipWith = _curry3(function zipWith(fn, a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = fn(a[idx], b[idx]); + idx += 1; + } + return rv; +}); +export default zipWith; diff --git a/bundler/tests/.cache/deno/fc576bc5246af922b4fd960cbebb1bedb3be0d31.ts b/bundler/tests/.cache/deno/fc576bc5246af922b4fd960cbebb1bedb3be0d31.ts new file mode 100644 index 00000000000..1bdb8858322 --- /dev/null +++ b/bundler/tests/.cache/deno/fc576bc5246af922b4fd960cbebb1bedb3be0d31.ts @@ -0,0 +1,62 @@ +// Loaded from https://deno.land/std@0.83.0/log/levels.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** Get log level numeric values through enum constants + */ +export enum LogLevels { + NOTSET = 0, + DEBUG = 10, + INFO = 20, + WARNING = 30, + ERROR = 40, + CRITICAL = 50, +} + +/** Permitted log level names */ +export const LogLevelNames = Object.keys(LogLevels).filter((key) => + isNaN(Number(key)) +); + +/** Union of valid log level strings */ +export type LevelName = keyof typeof LogLevels; + +const byLevel: Record = { + [String(LogLevels.NOTSET)]: "NOTSET", + [String(LogLevels.DEBUG)]: "DEBUG", + [String(LogLevels.INFO)]: "INFO", + [String(LogLevels.WARNING)]: "WARNING", + [String(LogLevels.ERROR)]: "ERROR", + [String(LogLevels.CRITICAL)]: "CRITICAL", +}; + +/** Returns the numeric log level associated with the passed, + * stringy log level name. + */ +export function getLevelByName(name: LevelName): number { + switch (name) { + case "NOTSET": + return LogLevels.NOTSET; + case "DEBUG": + return LogLevels.DEBUG; + case "INFO": + return LogLevels.INFO; + case "WARNING": + return LogLevels.WARNING; + case "ERROR": + return LogLevels.ERROR; + case "CRITICAL": + return LogLevels.CRITICAL; + default: + throw new Error(`no log level found for "${name}"`); + } +} + +/** Returns the stringy log level name provided the numeric log level */ +export function getLevelName(level: number): LevelName { + const levelName = byLevel[level]; + if (levelName) { + return levelName; + } + throw new Error(`no level name found for level: ${level}`); +} diff --git a/bundler/tests/.cache/deno/fcd062d2444d67ad282c10a84a4d704da08a2744.ts b/bundler/tests/.cache/deno/fcd062d2444d67ad282c10a84a4d704da08a2744.ts new file mode 100644 index 00000000000..dcdb849c91e --- /dev/null +++ b/bundler/tests/.cache/deno/fcd062d2444d67ad282c10a84a4d704da08a2744.ts @@ -0,0 +1,33 @@ +// Loaded from https://deno.land/std@0.81.0/path/_interface.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +/** This module is browser compatible. */ + +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +export interface ParsedPath { + /** + * The root of the path such as '/' or 'c:\' + */ + root: string; + /** + * The full directory path such as '/home/user/dir' or 'c:\path\dir' + */ + dir: string; + /** + * The file name including extension (if any) such as 'index.html' + */ + base: string; + /** + * The file extension (if any) such as '.html' + */ + ext: string; + /** + * The file name without extension (if any) such as 'index' + */ + name: string; +} + +export type FormatInputPathObject = Partial; diff --git a/bundler/tests/.cache/deno/fce1bfacd0b55d73787f8630d4f88041e8cfcd6f.ts b/bundler/tests/.cache/deno/fce1bfacd0b55d73787f8630d4f88041e8cfcd6f.ts new file mode 100644 index 00000000000..e4731a948e2 --- /dev/null +++ b/bundler/tests/.cache/deno/fce1bfacd0b55d73787f8630d4f88041e8cfcd6f.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/hasPath.js + + +import _curry2 from './internal/_curry2.js'; +import _has from './internal/_has.js'; + +import isNil from './isNil.js'; + + +/** + * Returns whether or not a path exists in an object. Only the object's + * own properties are checked. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Object + * @typedefn Idx = String | Int | Symbol + * @sig [Idx] -> {a} -> Boolean + * @param {Array} path The path to use. + * @param {Object} obj The object to check the path in. + * @return {Boolean} Whether the path exists. + * @see R.has + * @example + * + * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true + * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true + * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false + * R.hasPath(['a', 'b'], {}); // => false + */ +var hasPath = _curry2(function hasPath(_path, obj) { + if (_path.length === 0 || isNil(obj)) { + return false; + } + var val = obj; + var idx = 0; + while (idx < _path.length) { + if (!isNil(val) && _has(_path[idx], val)) { + val = val[_path[idx]]; + idx += 1; + } else { + return false; + } + } + return true; +}); +export default hasPath; diff --git a/bundler/tests/.cache/deno/fcf896e3589f50e963c2723a443b9cca9dc5538e.ts b/bundler/tests/.cache/deno/fcf896e3589f50e963c2723a443b9cca9dc5538e.ts new file mode 100644 index 00000000000..3c047994ddb --- /dev/null +++ b/bundler/tests/.cache/deno/fcf896e3589f50e963c2723a443b9cca9dc5538e.ts @@ -0,0 +1,19 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/error/locatedError.js + + +import { GraphQLError } from './GraphQLError.js'; +/** + * Given an arbitrary Error, presumably thrown while attempting to execute a + * GraphQL operation, produce a new GraphQLError aware of the location in the + * document responsible for the original Error. + */ + +export function locatedError(originalError, nodes, path) { + // Note: this uses a brand-check to support GraphQL errors originating from + // other contexts. + if (Array.isArray(originalError.path)) { + return originalError; + } + + return new GraphQLError(originalError.message, originalError.nodes ?? nodes, originalError.source, originalError.positions, path, originalError); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/fd15bc013d4193c11121d419363a38f336be6c8e.ts b/bundler/tests/.cache/deno/fd15bc013d4193c11121d419363a38f336be6c8e.ts new file mode 100644 index 00000000000..dd22b539d20 --- /dev/null +++ b/bundler/tests/.cache/deno/fd15bc013d4193c11121d419363a38f336be6c8e.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/findIndex.js + + +import _curry2 from './internal/_curry2.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _xfindIndex from './internal/_xfindIndex.js'; + + +/** + * Returns the index of the first element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * const xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.findIndex(R.propEq('a', 2))(xs); //=> 1 + * R.findIndex(R.propEq('a', 4))(xs); //=> -1 + */ +var findIndex = _curry2(_dispatchable([], _xfindIndex, function findIndex(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return idx; + } + idx += 1; + } + return -1; +})); +export default findIndex; diff --git a/bundler/tests/.cache/deno/fd72ddc09bf0f35aee37f2c93afe50696af3776f.ts b/bundler/tests/.cache/deno/fd72ddc09bf0f35aee37f2c93afe50696af3776f.ts new file mode 100644 index 00000000000..491f4457894 --- /dev/null +++ b/bundler/tests/.cache/deno/fd72ddc09bf0f35aee37f2c93afe50696af3776f.ts @@ -0,0 +1,14 @@ +// Loaded from https://deno.land/x/mysql/src/packets/builders/query.ts + + +import { encode, replaceParams } from "../../../deps.ts"; +import { BufferWriter } from "../../buffer.ts"; + +/** @ignore */ +export function buildQuery(sql: string, params: any[] = []): Uint8Array { + const data = encode(replaceParams(sql, params)); + const writer = new BufferWriter(new Uint8Array(data.length + 1)); + writer.write(0x03); + writer.writeBuffer(data); + return writer.buffer; +} diff --git a/bundler/tests/.cache/deno/fd90537fe0028554aa6e1519cf352e1fba78a793.ts b/bundler/tests/.cache/deno/fd90537fe0028554aa6e1519cf352e1fba78a793.ts new file mode 100644 index 00000000000..02feb5d8b09 --- /dev/null +++ b/bundler/tests/.cache/deno/fd90537fe0028554aa6e1519cf352e1fba78a793.ts @@ -0,0 +1,15 @@ +// Loaded from https://deno.land/x/graphql_deno@v15.0.0/lib/jsutils/promiseReduce.js + + +import isPromise from './isPromise.js'; + +/** + * Similar to Array.prototype.reduce(), however the reducing callback may return + * a Promise, in which case reduction will continue after each promise resolves. + * + * If the callback does not return a Promise, then this function will also not + * return a Promise. + */ +export default function promiseReduce(values, callback, initialValue) { + return values.reduce((previous, value) => isPromise(previous) ? previous.then(resolved => callback(resolved, value)) : callback(previous, value), initialValue); +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/fdf0d2e399f8d7c793709070de508e24f2062649.ts b/bundler/tests/.cache/deno/fdf0d2e399f8d7c793709070de508e24f2062649.ts new file mode 100644 index 00000000000..43fb2b3b5be --- /dev/null +++ b/bundler/tests/.cache/deno/fdf0d2e399f8d7c793709070de508e24f2062649.ts @@ -0,0 +1,20 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_xtakeWhile.js + + +import _curry2 from './_curry2.js'; +import _reduced from './_reduced.js'; +import _xfBase from './_xfBase.js'; + + +function XTakeWhile(f, xf) { + this.xf = xf; + this.f = f; +} +XTakeWhile.prototype['@@transducer/init'] = _xfBase.init; +XTakeWhile.prototype['@@transducer/result'] = _xfBase.result; +XTakeWhile.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result); +}; + +var _xtakeWhile = _curry2(function _xtakeWhile(f, xf) { return new XTakeWhile(f, xf); }); +export default _xtakeWhile; diff --git a/bundler/tests/.cache/deno/fdf87e565ee7a426282f93a7ec28ea663c7e5db4.ts b/bundler/tests/.cache/deno/fdf87e565ee7a426282f93a7ec28ea663c7e5db4.ts new file mode 100644 index 00000000000..84ff32e0e72 --- /dev/null +++ b/bundler/tests/.cache/deno/fdf87e565ee7a426282f93a7ec28ea663c7e5db4.ts @@ -0,0 +1,29 @@ +// Loaded from https://deno.land/x/segno@v1.1.0/lib/validations/isIn.ts + + +// @ts-ignore allowing typedoc to build +import { assertString } from '../helpers/assertString.ts'; +// @ts-ignore allowing typedoc to build +import { toString } from '../helpers/toString.ts'; + +//! change later +export const isIn = (str: string, options?: any) => { + assertString(str); + let i; + if (Object.prototype.toString.call(options) === '[object Array]') { + const array: any = []; + for (i in options) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if ({}.hasOwnProperty.call(options, i)) { + array[i] = toString(options[i]); + } + } + return array.indexOf(str) >= 0; + } else if (typeof options === 'object') { + return options.hasOwnProperty(str); + } else if (options && typeof options.indexOf === 'function') { + return options.indexOf(str) >= 0; + } + return false; +}; diff --git a/bundler/tests/.cache/deno/fe1fb10b588091a929436de10f3fc075e55f88d4.ts b/bundler/tests/.cache/deno/fe1fb10b588091a929436de10f3fc075e55f88d4.ts new file mode 100644 index 00000000000..6153a6aa87a --- /dev/null +++ b/bundler/tests/.cache/deno/fe1fb10b588091a929436de10f3fc075e55f88d4.ts @@ -0,0 +1,47 @@ +// Loaded from https://deno.land/x/mongo@v0.20.0/src/collection/commands/find.ts + + +import { CommandCursor, WireProtocol } from "../../protocol/mod.ts"; +import { Document, FindOptions } from "../../types.ts"; + +interface FindCursorContext { + dbName: string; + collectionName: string; + protocol: WireProtocol; + options: FindOptions; + filter?: Document; +} + +export class FindCursor extends CommandCursor { + #context: FindCursorContext; + + private async executor() { + const { protocol, filter, dbName, collectionName, options } = this.#context; + const { cursor } = await protocol.commandSingle(dbName, { + find: collectionName, + filter, + batchSize: 1, + noCursorTimeout: true, + ...options, + }); + return { + ...cursor, + id: cursor.id.toString(), + }; + } + + constructor(context: FindCursorContext) { + super(context.protocol, () => this.executor()); + this.#context = context; + } + + limit(limit: number): this { + this.#context.options.limit = limit; + return this; + } + + skip(skip: number): this { + this.#context.options.skip = skip; + return this; + } +} diff --git a/bundler/tests/.cache/deno/fe797042693c0b5c88a1ca99ac035871c81a2b86.ts b/bundler/tests/.cache/deno/fe797042693c0b5c88a1ca99ac035871c81a2b86.ts new file mode 100644 index 00000000000..5f191f18f52 --- /dev/null +++ b/bundler/tests/.cache/deno/fe797042693c0b5c88a1ca99ac035871c81a2b86.ts @@ -0,0 +1,296 @@ +// Loaded from https://deno.land/x/denodb@v1.0.18/lib/query-builder.ts + + +import type { SQLQueryBuilder } from "../deps.ts"; +import type { FieldAlias, FieldValue, Values } from "./data-types.ts"; +import { Model, ModelDefaults, ModelFields, ModelSchema } from "./model.ts"; + +export type Query = string; +export type Operator = ">" | ">=" | "<" | "<=" | "="; +export type OrderDirection = "desc" | "asc"; +export type QueryType = + | "create" + | "drop" + | "select" + | "insert" + | "update" + | "delete" + | "count" + | "min" + | "max" + | "avg" + | "sum"; + +export type JoinClause = { + joinTable: string; + originField: string; + targetField: string; +}; + +export type WhereClause = { + field: string; + operator: Operator; + value: FieldValue; +}; + +export type WhereInClause = { + field: string; + possibleValues: FieldValue[]; +}; + +export type OrderByClauses = { + [field: string]: OrderDirection; +}; + +export type QueryDescription = { + schema: ModelSchema; + type?: QueryType; + table?: string; + select?: (string | FieldAlias)[]; + orderBy?: OrderByClauses; + groupBy?: string; + wheres?: WhereClause[]; + whereIn?: WhereInClause; + joins?: JoinClause[]; + leftOuterJoins?: JoinClause[]; + leftJoins?: JoinClause[]; + aggregatorField?: string; + limit?: number; + offset?: number; + ifExists?: boolean; + fields?: ModelFields; + fieldsDefaults?: ModelDefaults; + timestamps?: boolean; + values?: Values | Values[]; +}; + +export type QueryResult = {}; + +export type Builder = typeof SQLQueryBuilder; + +/** Create queries descriptions. */ +export class QueryBuilder { + _query: QueryDescription = { schema: Model }; + + /** Create a fresh new query. */ + queryForSchema(schema: ModelSchema): QueryBuilder { + return new QueryBuilder().schema(schema); + } + + schema(schema: ModelSchema) { + this._query.schema = schema; + return this; + } + + toDescription(): QueryDescription { + return this._query; + } + + table(table: string) { + this._query.table = table; + return this; + } + + get() { + this._query.type = "select"; + return this; + } + + all() { + return this.get(); + } + + createTable( + fields: ModelFields, + fieldsDefaults: ModelDefaults, + { + withTimestamps, + ifNotExists, + }: { + withTimestamps: boolean; + ifNotExists: boolean; + }, + ) { + this._query.type = "create"; + this._query.ifExists = ifNotExists ? false : true; + this._query.fields = fields; + this._query.fieldsDefaults = fieldsDefaults; + this._query.timestamps = withTimestamps; + return this; + } + + dropIfExists() { + this._query.type = "drop"; + this._query.ifExists = true; + return this; + } + + select(...fields: (string | FieldAlias)[]) { + this._query.select = fields; + return this; + } + + create(values: Values[]) { + this._query.type = "insert"; + this._query.values = values; + return this; + } + + find(field: string, possibleValues: FieldValue[]) { + this._query.type = "select"; + this._query.whereIn = { + field, + possibleValues, + }; + return this; + } + + orderBy( + field: string, + orderDirection: OrderDirection, + ) { + if (!this._query.orderBy) { + this._query.orderBy = {}; + } + this._query.orderBy[field] = orderDirection; + return this; + } + + groupBy(field: string) { + this._query.groupBy = field; + return this; + } + + limit(limit: number) { + this._query.limit = limit; + return this; + } + + offset(offset: number) { + this._query.offset = offset; + return this; + } + + where( + field: string, + operator: Operator, + value: FieldValue, + ) { + if (!this._query.wheres) { + this._query.wheres = []; + } + + const whereClause = { + field, + operator, + value, + }; + + const existingWhereForFieldIndex = this._query.wheres.findIndex((where) => + where.field === field + ); + + if (existingWhereForFieldIndex === -1) { + this._query.wheres.push(whereClause); + } else { + this._query.wheres[existingWhereForFieldIndex] = whereClause; + } + + return this; + } + + update(values: Values) { + this._query.type = "update"; + this._query.values = values; + return this; + } + + delete() { + this._query.type = "delete"; + return this; + } + + join( + joinTable: string, + originField: string, + targetField: string, + ) { + if (!this._query.joins) { + this._query.joins = []; + } + + this._query.joins.push({ + joinTable, + originField, + targetField, + }); + + return this; + } + + leftOuterJoin( + joinTable: string, + originField: string, + targetField: string, + ) { + if (!this._query.leftOuterJoins) { + this._query.leftOuterJoins = []; + } + + this._query.leftOuterJoins.push({ + joinTable, + originField, + targetField, + }); + + return this; + } + + leftJoin( + joinTable: string, + originField: string, + targetField: string, + ) { + if (!this._query.leftJoins) { + this._query.leftJoins = []; + } + + this._query.leftJoins.push({ + joinTable, + originField, + targetField, + }); + + return this; + } + + count(field: string) { + this._query.type = "count"; + this._query.aggregatorField = field; + return this; + } + + min(field: string) { + this._query.type = "min"; + this._query.aggregatorField = field; + return this; + } + + max(field: string) { + this._query.type = "max"; + this._query.aggregatorField = field; + return this; + } + + sum(field: string) { + this._query.type = "sum"; + this._query.aggregatorField = field; + return this; + } + + avg(field: string) { + this._query.type = "avg"; + this._query.aggregatorField = field; + return this; + } +} diff --git a/bundler/tests/.cache/deno/fee2452e02044e29c1091ffcbc1987bfc1f26590.ts b/bundler/tests/.cache/deno/fee2452e02044e29c1091ffcbc1987bfc1f26590.ts new file mode 100644 index 00000000000..256f1ef5dfb --- /dev/null +++ b/bundler/tests/.cache/deno/fee2452e02044e29c1091ffcbc1987bfc1f26590.ts @@ -0,0 +1,23 @@ +// Loaded from https://deno.land/x/case@v2.1.0/camelCase.ts + + +import upperCase from "./upperCase.ts"; +import normalCase from "./normalCase.ts"; + +export default function camelCase( + value: string, + locale?: string, + mergeNumbers?: boolean, +): string { + let result = normalCase(value, locale); + + // Replace periods between numeric entities with an underscore. + if (!mergeNumbers) { + result = result.replace(/ (?=\d)/g, "_"); + } + + // Replace spaces between words with an upper cased character. + return result.replace(/ (.)/g, function (m: string, $1: string): string { + return upperCase($1, locale); + }); +} diff --git a/bundler/tests/.cache/deno/ff087d5051889a6d69f23afbd21a71b5404cb489.ts b/bundler/tests/.cache/deno/ff087d5051889a6d69f23afbd21a71b5404cb489.ts new file mode 100644 index 00000000000..f0230d62e3a --- /dev/null +++ b/bundler/tests/.cache/deno/ff087d5051889a6d69f23afbd21a71b5404cb489.ts @@ -0,0 +1,18 @@ +// Loaded from https://deno.land/std@0.84.0/_util/assert.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +export class DenoStdInternalError extends Error { + constructor(message: string) { + super(message); + this.name = "DenoStdInternalError"; + } +} + +/** Make an assertion, if not `true`, then throw. */ +export function assert(expr: unknown, msg = ""): asserts expr { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} diff --git a/bundler/tests/.cache/deno/ff26180a7209b57254c13de13162caa8e19bf704.ts b/bundler/tests/.cache/deno/ff26180a7209b57254c13de13162caa8e19bf704.ts new file mode 100644 index 00000000000..dbc3da3de8b --- /dev/null +++ b/bundler/tests/.cache/deno/ff26180a7209b57254c13de13162caa8e19bf704.ts @@ -0,0 +1,40 @@ +// Loaded from https://deno.land/x/ramda@v0.27.2/source/promap.js + + +import _curry3 from './internal/_curry3.js'; +import _dispatchable from './internal/_dispatchable.js'; +import _promap from './internal/_promap.js'; +import _xpromap from './internal/_xpromap.js'; + + +/** + * Takes two functions as pre- and post- processors respectively for a third function, + * i.e. `promap(f, g, h)(x) === g(h(f(x)))`. + * + * Dispatches to the `promap` method of the third argument, if present, + * according to the [FantasyLand Profunctor spec](https://github.com/fantasyland/fantasy-land#profunctor). + * + * Acts as a transducer if a transformer is given in profunctor position. + * + * @func + * @memberOf R + * @category Function + * @sig (a -> b) -> (c -> d) -> (b -> c) -> (a -> d) + * @sig Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d + * @param {Function} f The preprocessor function, a -> b + * @param {Function} g The postprocessor function, c -> d + * @param {Profunctor} profunctor The profunctor instance to be promapped, e.g. b -> c + * @return {Profunctor} The new profunctor instance, e.g. a -> d + * @see R.transduce + * @example + * + * const decodeChar = R.promap(s => s.charCodeAt(), String.fromCharCode, R.add(-8)) + * const decodeString = R.promap(R.split(''), R.join(''), R.map(decodeChar)) + * decodeString("ziuli") //=> "ramda" + * + * @symb R.promap(f, g, h) = x => g(h(f(x))) + * @symb R.promap(f, g, profunctor) = profunctor.promap(f, g) + */ +var promap = _curry3(_dispatchable(['fantasy-land/promap', 'promap'], _xpromap, _promap)); + +export default promap; diff --git a/bundler/tests/.cache/deno/ff2a37ef07e3e8a83b6530d4386673abbb219336.ts b/bundler/tests/.cache/deno/ff2a37ef07e3e8a83b6530d4386673abbb219336.ts new file mode 100644 index 00000000000..7dbe390c214 --- /dev/null +++ b/bundler/tests/.cache/deno/ff2a37ef07e3e8a83b6530d4386673abbb219336.ts @@ -0,0 +1,34 @@ +// Loaded from https://deno.land/std/fs/exists.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +/** + * Test whether or not the given path exists by checking with the file system + */ +export async function exists(filePath: string): Promise { + try { + await Deno.lstat(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + + throw err; + } +} + +/** + * Test whether or not the given path exists by checking with the file system + */ +export function existsSync(filePath: string): boolean { + try { + Deno.lstatSync(filePath); + return true; + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return false; + } + throw err; + } +} diff --git a/bundler/tests/.cache/deno/ff663c1664c07d528fb8fc022f62fb8160f51cc4.ts b/bundler/tests/.cache/deno/ff663c1664c07d528fb8fc022f62fb8160f51cc4.ts new file mode 100644 index 00000000000..601e4256855 --- /dev/null +++ b/bundler/tests/.cache/deno/ff663c1664c07d528fb8fc022f62fb8160f51cc4.ts @@ -0,0 +1,42 @@ +// Loaded from https://deno.land/std@0.77.0/fs/_util.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import * as path from "../path/mod.ts"; + +/** + * Test whether or not `dest` is a sub-directory of `src` + * @param src src file path + * @param dest dest file path + * @param sep path separator + */ +export function isSubdir( + src: string, + dest: string, + sep: string = path.sep, +): boolean { + if (src === dest) { + return false; + } + const srcArray = src.split(sep); + const destArray = dest.split(sep); + return srcArray.every((current, i) => destArray[i] === current); +} + +export type PathType = "file" | "dir" | "symlink"; + +/** + * Get a human readable file type string. + * + * @param fileInfo A FileInfo describes a file and is returned by `stat`, + * `lstat` + */ +export function getFileInfoType(fileInfo: Deno.FileInfo): PathType | undefined { + return fileInfo.isFile + ? "file" + : fileInfo.isDirectory + ? "dir" + : fileInfo.isSymlink + ? "symlink" + : undefined; +} diff --git a/bundler/tests/.cache/deno/ff9df7e6f822bf022b8ed7e294f3f3a73d81c315.ts b/bundler/tests/.cache/deno/ff9df7e6f822bf022b8ed7e294f3f3a73d81c315.ts new file mode 100644 index 00000000000..b5096fe11e3 --- /dev/null +++ b/bundler/tests/.cache/deno/ff9df7e6f822bf022b8ed7e294f3f3a73d81c315.ts @@ -0,0 +1,76 @@ +// Loaded from https://deno.land/x/god_crypto@v0.2.0/rsa.ts + + +import { rsa_oaep_encrypt, rsa_pkcs1_encrypt, rsa_oaep_decrypt, rsa_pkcs1_decrypt } from "./src/rsa.ts"; +import { ber_decode, ber_simple } from "./src/basic_encoding_rule.ts"; +import { base64_to_binary, get_key_size, str2bytes } from "./src/helper.ts"; + +interface RSAKey { + n: bigint; + e?: bigint; + d?: bigint; + length: number; +} + +interface RSAOption { + hash: "sha1" | "sha256", + padding: "oaep" | "pkcs1", +} + +type RSAPublicKeyFormat = [[string, null], [[bigint, bigint]]] + +export class RSA { + static encrypt(message: Uint8Array | string, key: RSAKey, options?: Partial): Uint8Array { + if (!key.e) throw "Invalid RSA key"; + + const computedOptions: RSAOption = { hash: "sha1", padding: "oaep", ...options }; + const computedMessage = typeof message === "string" ? str2bytes(message) : message; + + if (computedOptions.padding === "oaep") { + return rsa_oaep_encrypt(key.length, key.n, key.e, computedMessage, computedOptions.hash); + } else if (computedOptions.padding === "pkcs1") { + return rsa_pkcs1_encrypt(key.length, key.n, key.e, computedMessage); + } + + throw "Invalid parameters"; + } + + static decrypt(ciper: Uint8Array, key: RSAKey, options?: Partial): Uint8Array { + if (!key.d) throw "Invalid RSA key"; + + const computedOptions: RSAOption = { hash: "sha1", padding: "oaep", ...options }; + + if (computedOptions.padding === "oaep") { + return rsa_oaep_decrypt(key.length, key.n, key.d, ciper, computedOptions.hash); + } else if (computedOptions.padding === "pkcs1") { + return rsa_pkcs1_decrypt(key.length, key.n, key.d, ciper); + } + + throw "Invalid parameters"; + } + + static parseKey(key: string): RSAKey { + if (key.indexOf("-----BEGIN RSA PRIVATE KEY-----") === 0) { + const trimmedKey = key.substr(31, key.length - 61); + const parseKey = ber_simple(ber_decode(base64_to_binary(trimmedKey))) as bigint[]; + + return { + n: parseKey[1], + d: parseKey[3], + e: parseKey[2], + length: get_key_size(parseKey[1]) + } + } else if (key.indexOf("-----BEGIN PUBLIC KEY-----") === 0) { + const trimmedKey = key.substr(26, key.length - 51) + const parseKey = ber_simple(ber_decode(base64_to_binary(trimmedKey))) as RSAPublicKeyFormat; + + return { + length: get_key_size(parseKey[1][0][0]), + n: parseKey[1][0][0], + e: parseKey[1][0][1], + } + } + + throw "Invalid key format"; + } +} \ No newline at end of file diff --git a/bundler/tests/.cache/deno/ffc94379e2d25f12bc541b9d31eede397fab8ff4.ts b/bundler/tests/.cache/deno/ffc94379e2d25f12bc541b9d31eede397fab8ff4.ts new file mode 100644 index 00000000000..b13a1c0e2a8 --- /dev/null +++ b/bundler/tests/.cache/deno/ffc94379e2d25f12bc541b9d31eede397fab8ff4.ts @@ -0,0 +1,136 @@ +// Loaded from https://deno.land/x/dnit@dnit-v1.11.0/adl-gen/dnit/manifest.ts + + +/* @generated from adl module dnit.manifest */ + +import type * as ADL from "./../runtime/adl.ts"; +import type * as sys_types from "./../sys/types.ts"; + +export type TaskName = ADL.Flavored0; + +const TaskName_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":[],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"String"},"parameters":[]}}},"name":"TaskName","version":{"kind":"nothing"}}}; + +export const snTaskName: ADL.ScopedName = {moduleName:"dnit.manifest", name:"TaskName"}; + +export function texprTaskName(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTaskName}, parameters : []}}; +} + +export type TrackedFileName = ADL.Flavored0; + +const TrackedFileName_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":[],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"String"},"parameters":[]}}},"name":"TrackedFileName","version":{"kind":"nothing"}}}; + +export const snTrackedFileName: ADL.ScopedName = {moduleName:"dnit.manifest", name:"TrackedFileName"}; + +export function texprTrackedFileName(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTrackedFileName}, parameters : []}}; +} + +export type TrackedFileHash = ADL.Flavored0; + +const TrackedFileHash_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":[],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"String"},"parameters":[]}}},"name":"TrackedFileHash","version":{"kind":"nothing"}}}; + +export const snTrackedFileHash: ADL.ScopedName = {moduleName:"dnit.manifest", name:"TrackedFileHash"}; + +export function texprTrackedFileHash(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTrackedFileHash}, parameters : []}}; +} + +export type Timestamp = ADL.Flavored0; + +const Timestamp_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"newtype_","value":{"typeParams":[],"default":{"kind":"nothing"},"typeExpr":{"typeRef":{"kind":"primitive","value":"String"},"parameters":[]}}},"name":"Timestamp","version":{"kind":"nothing"}}}; + +export const snTimestamp: ADL.ScopedName = {moduleName:"dnit.manifest", name:"Timestamp"}; + +export function texprTimestamp(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTimestamp}, parameters : []}}; +} + +export interface TaskData { + lastExecution: (Timestamp|null); + trackedFiles: sys_types.Map; +} + +export function makeTaskData( + input: { + lastExecution?: (Timestamp|null), + trackedFiles: sys_types.Map, + } +): TaskData { + return { + lastExecution: input.lastExecution === undefined ? null : input.lastExecution, + trackedFiles: input.trackedFiles, + }; +} + +const TaskData_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"struct_","value":{"typeParams":[],"fields":[{"annotations":[],"serializedName":"lastExecution","default":{"kind":"just","value":null},"name":"lastExecution","typeExpr":{"typeRef":{"kind":"primitive","value":"Nullable"},"parameters":[{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"Timestamp"}},"parameters":[]}]}},{"annotations":[],"serializedName":"trackedFiles","default":{"kind":"nothing"},"name":"trackedFiles","typeExpr":{"typeRef":{"kind":"reference","value":{"moduleName":"sys.types","name":"Map"}},"parameters":[{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"TrackedFileName"}},"parameters":[]},{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"TrackedFileData"}},"parameters":[]}]}}]}},"name":"TaskData","version":{"kind":"nothing"}}}; + +export const snTaskData: ADL.ScopedName = {moduleName:"dnit.manifest", name:"TaskData"}; + +export function texprTaskData(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTaskData}, parameters : []}}; +} + +export interface TrackedFileData { + hash: TrackedFileHash; + timestamp: Timestamp; +} + +export function makeTrackedFileData( + input: { + hash: TrackedFileHash, + timestamp: Timestamp, + } +): TrackedFileData { + return { + hash: input.hash, + timestamp: input.timestamp, + }; +} + +const TrackedFileData_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"struct_","value":{"typeParams":[],"fields":[{"annotations":[],"serializedName":"hash","default":{"kind":"nothing"},"name":"hash","typeExpr":{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"TrackedFileHash"}},"parameters":[]}},{"annotations":[],"serializedName":"timestamp","default":{"kind":"nothing"},"name":"timestamp","typeExpr":{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"Timestamp"}},"parameters":[]}}]}},"name":"TrackedFileData","version":{"kind":"nothing"}}}; + +export const snTrackedFileData: ADL.ScopedName = {moduleName:"dnit.manifest", name:"TrackedFileData"}; + +export function texprTrackedFileData(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snTrackedFileData}, parameters : []}}; +} + +export interface Manifest { + tasks: sys_types.Map; +} + +export function makeManifest( + input: { + tasks?: sys_types.Map, + } +): Manifest { + return { + tasks: input.tasks === undefined ? [] : input.tasks, + }; +} + +const Manifest_AST : ADL.ScopedDecl = + {"moduleName":"dnit.manifest","decl":{"annotations":[],"type_":{"kind":"struct_","value":{"typeParams":[],"fields":[{"annotations":[],"serializedName":"tasks","default":{"kind":"just","value":[]},"name":"tasks","typeExpr":{"typeRef":{"kind":"reference","value":{"moduleName":"sys.types","name":"Map"}},"parameters":[{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"TaskName"}},"parameters":[]},{"typeRef":{"kind":"reference","value":{"moduleName":"dnit.manifest","name":"TaskData"}},"parameters":[]}]}}]}},"name":"Manifest","version":{"kind":"nothing"}}}; + +export const snManifest: ADL.ScopedName = {moduleName:"dnit.manifest", name:"Manifest"}; + +export function texprManifest(): ADL.ATypeExpr { + return {value : {typeRef : {kind: "reference", value : snManifest}, parameters : []}}; +} + +export const _AST_MAP: { [key: string]: ADL.ScopedDecl } = { + "dnit.manifest.TaskName" : TaskName_AST, + "dnit.manifest.TrackedFileName" : TrackedFileName_AST, + "dnit.manifest.TrackedFileHash" : TrackedFileHash_AST, + "dnit.manifest.Timestamp" : Timestamp_AST, + "dnit.manifest.TaskData" : TaskData_AST, + "dnit.manifest.TrackedFileData" : TrackedFileData_AST, + "dnit.manifest.Manifest" : Manifest_AST +}; diff --git a/bundler/tests/.cache/deno/ffd3a1b4f79d3dcf88d272eaebea420121f8317a.ts b/bundler/tests/.cache/deno/ffd3a1b4f79d3dcf88d272eaebea420121f8317a.ts new file mode 100644 index 00000000000..8d25022a19a --- /dev/null +++ b/bundler/tests/.cache/deno/ffd3a1b4f79d3dcf88d272eaebea420121f8317a.ts @@ -0,0 +1,39 @@ +// Loaded from https://deno.land/x/oak/tssCompare.ts + + +// Copyright 2018-2021 the oak authors. All rights reserved. MIT license. + +// This was inspired by https://github.com/suryagh/tsscmp which provides a +// timing safe string comparison to avoid timing attacks as described in +// https://codahale.com/a-lesson-in-timing-attacks/. + +import { assert, HmacSha256 } from "./deps.ts"; + +function compareArrayBuffer(a: ArrayBuffer, b: ArrayBuffer): boolean { + assert(a.byteLength === b.byteLength, "ArrayBuffer lengths must match."); + const va = new DataView(a); + const vb = new DataView(b); + const length = va.byteLength; + let out = 0; + let i = -1; + while (++i < length) { + out |= va.getUint8(i) ^ vb.getUint8(i); + } + return out === 0; +} + +/** Compare two strings, Uint8Arrays, ArrayBuffers, or arrays of numbers in a + * way that avoids timing based attacks on the comparisons on the values. + * + * The function will return `true` if the values match, or `false`, if they + * do not match. */ +export function compare( + a: string | number[] | ArrayBuffer | Uint8Array, + b: string | number[] | ArrayBuffer | Uint8Array, +): boolean { + const key = new Uint8Array(32); + globalThis.crypto.getRandomValues(key); + const ah = (new HmacSha256(key)).update(a).arrayBuffer(); + const bh = (new HmacSha256(key)).update(b).arrayBuffer(); + return compareArrayBuffer(ah, bh); +} diff --git a/bundler/tests/.cache/untrusted/00b8210b83aefc04b73ee9fa1d1ebc8de9391a85.ts b/bundler/tests/.cache/untrusted/00b8210b83aefc04b73ee9fa1d1ebc8de9391a85.ts new file mode 100644 index 00000000000..74885182420 --- /dev/null +++ b/bundler/tests/.cache/untrusted/00b8210b83aefc04b73ee9fa1d1ebc8de9391a85.ts @@ -0,0 +1,97 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/zones/fixedOffsetZone.js + + +import { formatOffset, signedOffset } from "../impl/util.js"; +import Zone from "../zone.js"; + +let singleton = null; + +/** + * A zone with a fixed offset (meaning no DST) + * @implements {Zone} + */ +export default class FixedOffsetZone extends Zone { + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + static get utcInstance() { + if (singleton === null) { + singleton = new FixedOffsetZone(0); + } + return singleton; + } + + /** + * Get an instance with a specified offset + * @param {number} offset - The offset in minutes + * @return {FixedOffsetZone} + */ + static instance(offset) { + return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset); + } + + /** + * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" + * @param {string} s - The offset string to parse + * @example FixedOffsetZone.parseSpecifier("UTC+6") + * @example FixedOffsetZone.parseSpecifier("UTC+06") + * @example FixedOffsetZone.parseSpecifier("UTC-6:00") + * @return {FixedOffsetZone} + */ + static parseSpecifier(s) { + if (s) { + const r = s.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + if (r) { + return new FixedOffsetZone(signedOffset(r[1], r[2])); + } + } + return null; + } + + constructor(offset) { + super(); + /** @private **/ + this.fixed = offset; + } + + /** @override **/ + get type() { + return "fixed"; + } + + /** @override **/ + get name() { + return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`; + } + + /** @override **/ + offsetName() { + return this.name; + } + + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.fixed, format); + } + + /** @override **/ + get universal() { + return true; + } + + /** @override **/ + offset() { + return this.fixed; + } + + /** @override **/ + equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + + /** @override **/ + get isValid() { + return true; + } +} diff --git a/bundler/tests/.cache/untrusted/018661d7eb643f6104206b420eb0ac8a46bebb79.ts b/bundler/tests/.cache/untrusted/018661d7eb643f6104206b420eb0ac8a46bebb79.ts new file mode 100644 index 00000000000..cd89e3ad431 --- /dev/null +++ b/bundler/tests/.cache/untrusted/018661d7eb643f6104206b420eb0ac8a46bebb79.ts @@ -0,0 +1,184 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/blake2s.ts + + +// Blake2S in pure Javascript +// Adapted from the reference implementation in RFC7693 +// Ported to Javascript by DC - https://github.com/dcposch + +import { ByteArray, WordArray } from './array.ts'; + +export interface Blake2S { + h: WordArray; // hash state + b: WordArray; // input block + c: number; // pointer within block + t: number; // input count + outlen: number; // output length in bytes +} + +// Computes the BLAKE2S hash of a string or byte array, and returns a ByteArray +// +// Returns a n-byte ByteArray +// +// Parameters: +// - input - the input bytes, as a string, Buffer, or Uint8Array +// - key - optional key ByteArray, up to 32 bytes +// - outlen - optional output length in bytes, default 64 +export function blake2s(input: ByteArray, key?: ByteArray, outlen: number = 32) { + const ctx: Blake2S = blake2s_init(outlen, key); + + blake2s_update(ctx, input); + + return blake2s_final(ctx); +} + +// Creates a BLAKE2s hashing context +// Requires an output length between 1 and 32 bytes +// Takes an optional Uint8Array key +export function blake2s_init(outlen: number, key?: ByteArray): Blake2S { + if (!(outlen > 0 && outlen <= 32)) { + throw new Error('Incorrect output length, should be in [1, 32]') + } + + const keylen = key ? key.length : 0; + + if (key && !(keylen > 0 && keylen <= 32)) { + throw new Error('Incorrect key length, should be in [1, 32]') + } + + const ctx: Blake2S = { + h: WordArray(BLAKE2S_IV), // hash state + b: WordArray(64), // input block + c: 0, // pointer within block + t: 0, // input count + outlen: outlen // output length in bytes + }; + + ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen; + + if (keylen) { + blake2s_update(ctx, key as ByteArray); + ctx.c = 64; // at the end + } + + return ctx; +} + +// Updates a BLAKE2s streaming hash +// Requires hash context and Uint8Array (byte array) +export function blake2s_update(ctx: Blake2S, input: ByteArray) { + for (let i = 0; i < input.length; i++) { + if (ctx.c === 64) { // buffer full ? + ctx.t += ctx.c; // add counters + blake2s_compress(ctx, false); // compress (not last) + ctx.c = 0; // counter to zero + } + ctx.b[ctx.c++] = input[i]; + } +} + +// Completes a BLAKE2s streaming hash +// Returns a Uint8Array containing the message digest +export function blake2s_final(ctx: Blake2S): ByteArray { + ctx.t += ctx.c; // mark last block offset + + while (ctx.c < 64) { // fill up with zeros + ctx.b[ctx.c++] = 0; + } + + blake2s_compress(ctx, true); // final block flag = 1 + + // little endian convert and store + const out = ByteArray(ctx.outlen) + + for (var i = 0; i < ctx.outlen; i++) { + out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xFF; + } + + return out; +} + +// Initialization Vector. +const BLAKE2S_IV = WordArray([ + 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, + 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19]) + +const SIGMA = ByteArray([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, + 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, + 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, + 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, + 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, + 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, + 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, + 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, + 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 +]); + +// Compression function. "last" flag indicates last block +const v = WordArray(16); +const m = WordArray(16); + +function blake2s_compress(ctx: Blake2S, last: boolean) { + let i = 0; + + for (i = 0; i < 8; i++) { // init work variables + v[i] = ctx.h[i]; + v[i + 8] = BLAKE2S_IV[i]; + } + + v[12] ^= ctx.t; // low 32 bits of offset + v[13] ^= (ctx.t / 0x100000000); // high 32 bits + + if (last) { // last block flag set ? + v[14] = ~v[14]; + } + + for (i = 0; i < 16; i++) { // get little-endian words + m[i] = B2S_GET32(ctx.b, 4 * i); + } + + // ten rounds of mixing + // uncomment the DebugPrint calls to log the computation + // and match the RFC sample documentation + for (i = 0; i < 10; i++) { + B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]]); + B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]]); + B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]]); + B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]]); + B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]]); + B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]]); + B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]]); + B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]]); + } + + for (i = 0; i < 8; i++) { + ctx.h[i] ^= v[i] ^ v[i + 8]; + } +} + +// Little-endian byte access. +// Expects a ByteArray and an index +// Returns the little-endian uint32 at v[i..i+3] +function B2S_GET32(v: WordArray, i: number) { + return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24); +} + +// Mixing function G. +function B2S_G(a: number, b: number, c: number, d: number, x: number, y: number) { + v[a] = v[a] + v[b] + x; + v[d] = ROTR32(v[d] ^ v[a], 16); + v[c] = v[c] + v[d]; + v[b] = ROTR32(v[b] ^ v[c], 12); + v[a] = v[a] + v[b] + y; + v[d] = ROTR32(v[d] ^ v[a], 8); + v[c] = v[c] + v[d]; + v[b] = ROTR32(v[b] ^ v[c], 7); +} + +// 32-bit right rotation +// x should be a uint32 +// y must be between 1 and 31, inclusive +function ROTR32(x: number, y: number): number { + return (x >>> y) ^ (x << (32 - y)); +} diff --git a/bundler/tests/.cache/untrusted/037969bff548aa0c0a1b73a5ca5e291f5d4c4af4.ts b/bundler/tests/.cache/untrusted/037969bff548aa0c0a1b73a5ca5e291f5d4c4af4.ts new file mode 100644 index 00000000000..71f0f6488b9 --- /dev/null +++ b/bundler/tests/.cache/untrusted/037969bff548aa0c0a1b73a5ca5e291f5d4c4af4.ts @@ -0,0 +1,4 @@ +// Loaded from https://dev.jspm.io/npm:ngraph.events@1?dew + + +export { dew } from "/npm:ngraph.events@1.2.1/index.dew.js"; diff --git a/bundler/tests/.cache/untrusted/0438b5f961de03f95a53a53af23c718a3d18c57a.ts b/bundler/tests/.cache/untrusted/0438b5f961de03f95a53a53af23c718a3d18c57a.ts new file mode 100644 index 00000000000..861ac662544 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0438b5f961de03f95a53a53af23c718a3d18c57a.ts @@ -0,0 +1,209 @@ +// Loaded from https://cdn.skypack.dev/-/universal-user-agent@v6.0.0-fUAPE3UH5QP7qG0fd0dH/dist=es2020,mode=imports/optimized/universal-user-agent.js + + +function defaultSetTimout() { + throw new Error("setTimeout has not been defined"); +} +function defaultClearTimeout() { + throw new Error("clearTimeout has not been defined"); +} +var cachedSetTimeout = defaultSetTimout; +var cachedClearTimeout = defaultClearTimeout; +var globalContext; +if (typeof window !== "undefined") { + globalContext = window; +} else if (typeof self !== "undefined") { + globalContext = self; +} else { + globalContext = {}; +} +if (typeof globalContext.setTimeout === "function") { + cachedSetTimeout = setTimeout; +} +if (typeof globalContext.clearTimeout === "function") { + cachedClearTimeout = clearTimeout; +} +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + return cachedSetTimeout(fun, 0); + } catch (e) { + try { + return cachedSetTimeout.call(null, fun, 0); + } catch (e2) { + return cachedSetTimeout.call(this, fun, 0); + } + } +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + return clearTimeout(marker); + } + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + return cachedClearTimeout(marker); + } catch (e) { + try { + return cachedClearTimeout.call(null, marker); + } catch (e2) { + return cachedClearTimeout.call(this, marker); + } + } +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + var len = queue.length; + while (len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +function nextTick(fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +} +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function() { + this.fun.apply(null, this.array); +}; +var title = "browser"; +var platform = "browser"; +var browser = true; +var argv = []; +var version = ""; +var versions = {}; +var release = {}; +var config = {}; +function noop() { +} +var on = noop; +var addListener = noop; +var once = noop; +var off = noop; +var removeListener = noop; +var removeAllListeners = noop; +var emit = noop; +function binding(name) { + throw new Error("process.binding is not supported"); +} +function cwd() { + return "/"; +} +function chdir(dir) { + throw new Error("process.chdir is not supported"); +} +function umask() { + return 0; +} +var performance = globalContext.performance || {}; +var performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function() { + return new Date().getTime(); +}; +function hrtime(previousTimestamp) { + var clocktime = performanceNow.call(performance) * 1e-3; + var seconds = Math.floor(clocktime); + var nanoseconds = Math.floor(clocktime % 1 * 1e9); + if (previousTimestamp) { + seconds = seconds - previousTimestamp[0]; + nanoseconds = nanoseconds - previousTimestamp[1]; + if (nanoseconds < 0) { + seconds--; + nanoseconds += 1e9; + } + } + return [seconds, nanoseconds]; +} +var startTime = new Date(); +function uptime() { + var currentTime = new Date(); + var dif = currentTime - startTime; + return dif / 1e3; +} +var process = { + nextTick, + title, + browser, + env: {NODE_ENV: "production"}, + argv, + version, + versions, + on, + addListener, + once, + off, + removeListener, + removeAllListeners, + emit, + binding, + cwd, + chdir, + umask, + hrtime, + platform, + release, + config, + uptime +}; +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + return ""; +} +export {getUserAgent}; +export default null; diff --git a/bundler/tests/.cache/untrusted/05c34e6c84ca8541e96f7338d016abe200bac381.ts b/bundler/tests/.cache/untrusted/05c34e6c84ca8541e96f7338d016abe200bac381.ts new file mode 100644 index 00000000000..e1ca4c9b959 --- /dev/null +++ b/bundler/tests/.cache/untrusted/05c34e6c84ca8541e96f7338d016abe200bac381.ts @@ -0,0 +1,4 @@ +// Loaded from https://dev.jspm.io/npm:set-immediate-shim@1.0?dew + + +export { dew } from "/npm:set-immediate-shim@1.0.1/index.dew.js"; diff --git a/bundler/tests/.cache/untrusted/0636c695d4f8dbbc30ef08154bfd9abaa99c79ec.ts b/bundler/tests/.cache/untrusted/0636c695d4f8dbbc30ef08154bfd9abaa99c79ec.ts new file mode 100644 index 00000000000..73f97b9a344 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0636c695d4f8dbbc30ef08154bfd9abaa99c79ec.ts @@ -0,0 +1,83 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/reader/ArrayReader.dew.js + + +import { dew as _DataReaderDewDew } from "./DataReader.dew.js"; +import { dew as _utilsDewDew } from "../utils.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var DataReader = _DataReaderDewDew(); + + var utils = _utilsDewDew(); + + function ArrayReader(data) { + DataReader.call(this, data); + + for (var i = 0; i < this.data.length; i++) { + data[i] = data[i] & 0xFF; + } + } + + utils.inherits(ArrayReader, DataReader); + /** + * @see DataReader.byteAt + */ + + ArrayReader.prototype.byteAt = function (i) { + return this.data[this.zero + i]; + }; + /** + * @see DataReader.lastIndexOfSignature + */ + + + ArrayReader.prototype.lastIndexOfSignature = function (sig) { + var sig0 = sig.charCodeAt(0), + sig1 = sig.charCodeAt(1), + sig2 = sig.charCodeAt(2), + sig3 = sig.charCodeAt(3); + + for (var i = this.length - 4; i >= 0; --i) { + if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) { + return i - this.zero; + } + } + + return -1; + }; + /** + * @see DataReader.readAndCheckSignature + */ + + + ArrayReader.prototype.readAndCheckSignature = function (sig) { + var sig0 = sig.charCodeAt(0), + sig1 = sig.charCodeAt(1), + sig2 = sig.charCodeAt(2), + sig3 = sig.charCodeAt(3), + data = this.readData(4); + return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3]; + }; + /** + * @see DataReader.readData + */ + + + ArrayReader.prototype.readData = function (size) { + this.checkOffset(size); + + if (size === 0) { + return []; + } + + var result = this.data.slice(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; + }; + + exports = ArrayReader; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/06847255afcede06bfbae89a4a9fe97bb5f660d6.ts b/bundler/tests/.cache/untrusted/06847255afcede06bfbae89a4a9fe97bb5f660d6.ts new file mode 100644 index 00000000000..53341945d4f --- /dev/null +++ b/bundler/tests/.cache/untrusted/06847255afcede06bfbae89a4a9fe97bb5f660d6.ts @@ -0,0 +1,105 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/migrate/MigrationGenerator.js + + +import * as path from "../deps/path/mod.ts"; +import { writeJsFileUsingTemplate } from '../util/template.js'; +import { getMergedConfig } from './configuration-merger.js'; +import { ensureDirectoryExists } from '../util/fs.js'; + +class MigrationGenerator { + constructor(migrationConfig) { + this.config = getMergedConfig(migrationConfig); + } + + // Creates a new migration, with a given name. + async make(name, config) { + this.config = getMergedConfig(config, this.config); + if (!name) { + return Promise.reject( + new Error('A name must be specified for the generated migration') + ); + } + await this._ensureFolder(); + const createdMigrationFilePath = await this._writeNewMigration(name); + return createdMigrationFilePath; + } + + // Ensures a folder for the migrations exist, dependent on the migration + // config settings. + _ensureFolder() { + const dirs = this._absoluteConfigDirs(); + + const promises = dirs.map(ensureDirectoryExists); + + return Promise.all(promises); + } + + _getStubPath() { + return ( + this.config.stub || + path.join(__dirname, 'stub', this.config.extension + '.stub') + ); + } + + _getNewMigrationName(name) { + if (name[0] === '-') name = name.slice(1); + return yyyymmddhhmmss() + '_' + name + '.' + this.config.extension; + } + + _getNewMigrationPath(name) { + const fileName = this._getNewMigrationName(name); + const dirs = this._absoluteConfigDirs(); + const dir = dirs.slice(-1)[0]; // Get last specified directory + return path.join(dir, fileName); + } + + // Write a new migration to disk, using the config and generated filename, + // passing any `variables` given in the config to the template. + async _writeNewMigration(name) { + const migrationPath = this._getNewMigrationPath(name); + await writeJsFileUsingTemplate( + migrationPath, + this._getStubPath(), + { variable: 'd' }, + this.config.variables || {} + ); + return migrationPath; + } + + _absoluteConfigDirs() { + const directories = Array.isArray(this.config.directory) + ? this.config.directory + : [this.config.directory]; + return directories.map((directory) => { + if (!directory) { + // eslint-disable-next-line no-console + console.warn( + 'Failed to resolve config file, knex cannot determine where to generate migrations' + ); + } + return path.resolve(process.cwd(), directory); + }); + } +} + +// Ensure that we have 2 places for each of the date segments. +function padDate(segment) { + segment = segment.toString(); + return segment[1] ? segment : `0${segment}`; +} + +// Get a date object in the correct format, without requiring a full out library +// like "moment.js". +function yyyymmddhhmmss() { + const d = new Date(); + return ( + d.getFullYear().toString() + + padDate(d.getMonth() + 1) + + padDate(d.getDate()) + + padDate(d.getHours()) + + padDate(d.getMinutes()) + + padDate(d.getSeconds()) + ); +} + +export default MigrationGenerator; diff --git a/bundler/tests/.cache/untrusted/078a29dba312ca58834f62aef5bd1655878de18f.ts b/bundler/tests/.cache/untrusted/078a29dba312ca58834f62aef5bd1655878de18f.ts new file mode 100644 index 00000000000..a57bb5c5615 --- /dev/null +++ b/bundler/tests/.cache/untrusted/078a29dba312ca58834f62aef5bd1655878de18f.ts @@ -0,0 +1,60 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/reader/StringReader.dew.js + + +import { dew as _DataReaderDewDew } from "./DataReader.dew.js"; +import { dew as _utilsDewDew } from "../utils.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var DataReader = _DataReaderDewDew(); + + var utils = _utilsDewDew(); + + function StringReader(data) { + DataReader.call(this, data); + } + + utils.inherits(StringReader, DataReader); + /** + * @see DataReader.byteAt + */ + + StringReader.prototype.byteAt = function (i) { + return this.data.charCodeAt(this.zero + i); + }; + /** + * @see DataReader.lastIndexOfSignature + */ + + + StringReader.prototype.lastIndexOfSignature = function (sig) { + return this.data.lastIndexOf(sig) - this.zero; + }; + /** + * @see DataReader.readAndCheckSignature + */ + + + StringReader.prototype.readAndCheckSignature = function (sig) { + var data = this.readData(4); + return sig === data; + }; + /** + * @see DataReader.readData + */ + + + StringReader.prototype.readData = function (size) { + this.checkOffset(size); // this will work because the constructor applied the "& 0xff" mask. + + var result = this.data.slice(this.zero + this.index, this.zero + this.index + size); + this.index += size; + return result; + }; + + exports = StringReader; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/07a53727cdbc1107e8941e8e5325070abb27294c.ts b/bundler/tests/.cache/untrusted/07a53727cdbc1107e8941e8e5325070abb27294c.ts new file mode 100644 index 00000000000..e0989baab04 --- /dev/null +++ b/bundler/tests/.cache/untrusted/07a53727cdbc1107e8941e8e5325070abb27294c.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/buffer.js + + +for(var r={byteLength:function(r){var t=u(r),e=t[0],n=t[1];return 3*(e+n)/4-n},toByteArray:function(r){var t,o,a=u(r),h=a[0],c=a[1],d=new n(function(r,t,e){return 3*(t+e)/4-e}(0,h,c)),f=0,A=c>0?h-4:h;for(o=0;o>16&255,d[f++]=t>>8&255,d[f++]=255&t;2===c&&(t=e[r.charCodeAt(o)]<<2|e[r.charCodeAt(o+1)]>>4,d[f++]=255&t);1===c&&(t=e[r.charCodeAt(o)]<<10|e[r.charCodeAt(o+1)]<<4|e[r.charCodeAt(o+2)]>>2,d[f++]=t>>8&255,d[f++]=255&t);return d},fromByteArray:function(r){for(var e,n=r.length,o=n%3,a=[],h=0,u=n-o;hu?u:h+16383));1===o?(e=r[n-1],a.push(t[e>>2]+t[e<<4&63]+"==")):2===o&&(e=(r[n-2]<<8)+r[n-1],a.push(t[e>>10]+t[e>>4&63]+t[e<<2&63]+"="));return a.join("")}},t=[],e=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return -1===e&&(e=t),[e,e===t?0:4-e%4]}function c(r,e,n){for(var o,a,h=[],u=e;u>18&63]+t[a>>12&63]+t[a>>6&63]+t[63&a]);return h.join("")}e["-".charCodeAt(0)]=62,e["_".charCodeAt(0)]=63;var a$1={read:function(a,t,o,r,h){var M,f,p=8*h-r-1,w=(1<>1,i=-7,N=o?h-1:0,n=o?-1:1,u=a[t+N];for(N+=n,M=u&(1<<-i)-1,u>>=-i,i+=p;i>0;M=256*M+a[t+N],N+=n,i-=8);for(f=M&(1<<-i)-1,M>>=-i,i+=r;i>0;f=256*f+a[t+N],N+=n,i-=8);if(0===M)M=1-e;else {if(M===w)return f?NaN:1/0*(u?-1:1);f+=Math.pow(2,r),M-=e;}return (u?-1:1)*f*Math.pow(2,M-r)},write:function(a,t,o,r,h,M){var f,p,w,e=8*M-h-1,i=(1<>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,u=r?0:M-1,l=r?1:-1,s=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(p=isNaN(t)?1:0,f=i):(f=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-f))<1&&(f--,w*=2),(t+=f+N>=1?n/w:n*Math.pow(2,1-N))*w>=2&&(f++,w/=2),f+N>=i?(p=0,f=i):f+N>=1?(p=(t*w-1)*Math.pow(2,h),f+=N):(p=t*Math.pow(2,N-1)*Math.pow(2,h),f=0));h>=8;a[o+u]=255&p,u+=l,p/=256,h-=8);for(f=f<0;a[o+u]=255&f,u+=l,f/=256,e-=8);a[o+u-l]|=128*s;}};var e$1={},n$1=r,i=a$1,o$1="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e$1.Buffer=u$1,e$1.SlowBuffer=function(t){+t!=t&&(t=0);return u$1.alloc(+t)},e$1.INSPECT_MAX_BYTES=50;function f(t){if(t>2147483647)throw new RangeError('The value "'+t+'" is invalid for option "size"');var r=new Uint8Array(t);return Object.setPrototypeOf(r,u$1.prototype),r}function u$1(t,r,e){if("number"==typeof t){if("string"==typeof r)throw new TypeError('The "string" argument must be of type string. Received type number');return a$2(t)}return s(t,r,e)}function s(t,r,e){if("string"==typeof t)return function(t,r){"string"==typeof r&&""!==r||(r="utf8");if(!u$1.isEncoding(r))throw new TypeError("Unknown encoding: "+r);var e=0|y(t,r),n=f(e),i=n.write(t,r);i!==e&&(n=n.slice(0,i));return n}(t,r);if(ArrayBuffer.isView(t))return p(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return c$1(t,r,e);if("undefined"!=typeof SharedArrayBuffer&&(F(t,SharedArrayBuffer)||t&&F(t.buffer,SharedArrayBuffer)))return c$1(t,r,e);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return u$1.from(n,r,e);var i=function(t){if(u$1.isBuffer(t)){var r=0|l(t.length),e=f(r);return 0===e.length||t.copy(e,0,0,r),e}if(void 0!==t.length)return "number"!=typeof t.length||N(t.length)?f(0):p(t);if("Buffer"===t.type&&Array.isArray(t.data))return p(t.data)}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return u$1.from(t[Symbol.toPrimitive]("string"),r,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function h$1(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function a$2(t){return h$1(t),f(t<0?0:0|l(t))}function p(t){for(var r=t.length<0?0:0|l(t.length),e=f(r),n=0;n=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|t}function y(t,r){if(u$1.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var e=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===e)return 0;for(var i=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return z(t).length;default:if(i)return n?-1:_(t).length;r=(""+r).toLowerCase(),i=!0;}}function g(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return "";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return "";if((e>>>=0)<=(r>>>=0))return "";for(t||(t="utf8");;)switch(t){case"hex":return O(this,r,e);case"utf8":case"utf-8":return I(this,r,e);case"ascii":return S(this,r,e);case"latin1":case"binary":return R(this,r,e);case"base64":return T(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0;}}function w(t,r,e){var n=t[r];t[r]=t[e],t[e]=n;}function d(t,r,e,n,i){if(0===t.length)return -1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),N(e=+e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return -1;e=t.length-1;}else if(e<0){if(!i)return -1;e=0;}if("string"==typeof r&&(r=u$1.from(r,n)),u$1.isBuffer(r))return 0===r.length?-1:v(t,r,e,n,i);if("number"==typeof r)return r&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):v(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,r,e,n,i){var o,f=1,u=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return -1;f=2,u/=2,s/=2,e/=2;}function h(t,r){return 1===f?t[r]:t.readUInt16BE(r*f)}if(i){var a=-1;for(o=e;ou&&(e=u-s),o=e;o>=0;o--){for(var p=!0,c=0;ci&&(n=i):n=i;var o=r.length;n>o/2&&(n=o/2);for(var f=0;f>8,i=e%256,o.push(i),o.push(n);return o}(r,t.length-e),t,e,n)}function T(t,r,e){return 0===r&&e===t.length?n$1.fromByteArray(t):n$1.fromByteArray(t.slice(r,e))}function I(t,r,e){e=Math.min(t.length,e);for(var n=[],i=r;i239?4:h>223?3:h>191?2:1;if(i+p<=e)switch(p){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],f=t[i+2],128==(192&o)&&128==(192&f)&&(s=(15&h)<<12|(63&o)<<6|63&f)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],f=t[i+2],u=t[i+3],128==(192&o)&&128==(192&f)&&128==(192&u)&&(s=(15&h)<<18|(63&o)<<12|(63&f)<<6|63&u)>65535&&s<1114112&&(a=s);}null===a?(a=65533,p=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=p;}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;nr&&(t+=" ... "),""},o$1&&(u$1.prototype[o$1]=u$1.prototype.inspect),u$1.prototype.compare=function(t,r,e,n,i){if(F(t,Uint8Array)&&(t=u$1.from(t,t.offset,t.byteLength)),!u$1.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&r>=e)return 0;if(n>=i)return -1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),f=(e>>>=0)-(r>>>=0),s=Math.min(o,f),h=this.slice(n,i),a=t.slice(r,e),p=0;p>>=0,isFinite(e)?(e>>>=0,void 0===n&&(n="utf8")):(n=e,e=void 0);}var i=this.length-r;if((void 0===e||e>i)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return b(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return E(this,t,r,e);case"latin1":case"binary":return B(this,t,r,e);case"base64":return A(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r,e);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0;}},u$1.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function S(t,r,e){var n="";e=Math.min(t.length,e);for(var i=r;in)&&(e=n);for(var i="",o=r;oe)throw new RangeError("Trying to access beyond buffer length")}function C(t,r,e,n,i,o){if(!u$1.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>i||rt.length)throw new RangeError("Index out of range")}function P(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function k(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,4),i.write(t,r,e,n,23,4),e+4}function M(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,8),i.write(t,r,e,n,52,8),e+8}u$1.prototype.slice=function(t,r){var e=this.length;(t=~~t)<0?(t+=e)<0&&(t=0):t>e&&(t=e),(r=void 0===r?e:~~r)<0?(r+=e)<0&&(r=0):r>e&&(r=e),r>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t+--r],i=1;r>0&&(i*=256);)n+=this[t+--r]*i;return n},u$1.prototype.readUInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),this[t]},u$1.prototype.readUInt16LE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]|this[t+1]<<8},u$1.prototype.readUInt16BE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]<<8|this[t+1]},u$1.prototype.readUInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u$1.prototype.readUInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u$1.prototype.readIntLE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*r)),n},u$1.prototype.readIntBE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},u$1.prototype.readInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u$1.prototype.readInt16LE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},u$1.prototype.readInt16BE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},u$1.prototype.readInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u$1.prototype.readInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u$1.prototype.readFloatLE=function(t,r){return t>>>=0,r||x(t,4,this.length),i.read(this,t,!0,23,4)},u$1.prototype.readFloatBE=function(t,r){return t>>>=0,r||x(t,4,this.length),i.read(this,t,!1,23,4)},u$1.prototype.readDoubleLE=function(t,r){return t>>>=0,r||x(t,8,this.length),i.read(this,t,!0,52,8)},u$1.prototype.readDoubleBE=function(t,r){return t>>>=0,r||x(t,8,this.length),i.read(this,t,!1,52,8)},u$1.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r>>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=e-1,o=1;for(this[r+i]=255&t;--i>=0&&(o*=256);)this[r+i]=t/o&255;return r+e},u$1.prototype.writeUInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,255,0),this[r]=255&t,r+1},u$1.prototype.writeUInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1.prototype.writeUInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1.prototype.writeUInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t,r+4},u$1.prototype.writeUInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=0,f=1,u=0;for(this[r]=255&t;++o>0)-u&255;return r+e},u$1.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=e-1,f=1,u=0;for(this[r+o]=255&t;--o>=0&&(f*=256);)t<0&&0===u&&0!==this[r+o+1]&&(u=1),this[r+o]=(t/f>>0)-u&255;return r+e},u$1.prototype.writeInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=255&t,r+1},u$1.prototype.writeInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1.prototype.writeInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1.prototype.writeInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4},u$1.prototype.writeInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1.prototype.writeFloatLE=function(t,r,e){return k(this,t,r,!0,e)},u$1.prototype.writeFloatBE=function(t,r,e){return k(this,t,r,!1,e)},u$1.prototype.writeDoubleLE=function(t,r,e){return M(this,t,r,!0,e)},u$1.prototype.writeDoubleBE=function(t,r,e){return M(this,t,r,!1,e)},u$1.prototype.copy=function(t,r,e,n){if(!u$1.isBuffer(t))throw new TypeError("argument should be a Buffer");if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r=0;--o)t[o+r]=this[o+e];else Uint8Array.prototype.set.call(t,this.subarray(e,n),r);return i},u$1.prototype.fill=function(t,r,e,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,e=this.length):"string"==typeof e&&(n=e,e=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!u$1.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i);}}else "number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(r<0||this.length>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(o=r;o55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320);}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e);}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128);}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128);}else {if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128);}}return o}function z(t){return n$1.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(j,"")).length<2)return "";for(;t.length%4!=0;)t+="=";return t}(t))}function D(t,r,e,n){for(var i=0;i=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function F(t,r){return t instanceof r||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===r.name}function N(t){return t!=t}var Y=function(){for(var t=new Array(256),r=0;r<16;++r)for(var e=16*r,n=0;n<16;++n)t[e+n]="0123456789abcdef"[r]+"0123456789abcdef"[n];return t}();var Buffer=e$1.Buffer;var INSPECT_MAX_BYTES=e$1.INSPECT_MAX_BYTES;var kMaxLength=e$1.kMaxLength;export default e$1;export{Buffer,INSPECT_MAX_BYTES,kMaxLength}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/07d9f109d30943a7c7a7fd03f70f69c3f425f357.ts b/bundler/tests/.cache/untrusted/07d9f109d30943a7c7a7fd03f70f69c3f425f357.ts new file mode 100644 index 00000000000..cb82fa52133 --- /dev/null +++ b/bundler/tests/.cache/untrusted/07d9f109d30943a7c7a7fd03f70f69c3f425f357.ts @@ -0,0 +1,5 @@ +// Loaded from https://dev.jspm.io/npm:@jspm/core@1/nodelibs/buffer.js + + +export * from "/npm:@jspm/core@1.1.1/nodelibs/buffer.js"; +export { default } from "/npm:@jspm/core@1.1.1/nodelibs/buffer.js"; diff --git a/bundler/tests/.cache/untrusted/0822d0e538627ec12c0decc6466807dd1f53d079.ts b/bundler/tests/.cache/untrusted/0822d0e538627ec12c0decc6466807dd1f53d079.ts new file mode 100644 index 00000000000..2c73975309d --- /dev/null +++ b/bundler/tests/.cache/untrusted/0822d0e538627ec12c0decc6466807dd1f53d079.ts @@ -0,0 +1,112 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/array.ts + + +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; +import { ZodIssueCode } from "../ZodError.ts"; +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; + +export interface ZodArrayDef + extends ZodTypeDef { + t: ZodTypes.array; + type: T; + nonempty: boolean; +} + +export class ZodArray extends ZodType< + T["_output"][], + ZodArrayDef, + T["_input"][] +> { + toJSON = () => { + return { + t: this._def.t, + nonempty: this._def.nonempty, + type: this._def.type.toJSON(), + }; + }; + + get element() { + return this._def.type; + } + + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + min = (minLength: number, message?: string | { message?: string }) => + this.refinement((data) => data.length >= minLength, { + code: ZodIssueCode.too_small, + type: "array", + inclusive: true, + minimum: minLength, + ...(typeof message === "string" ? { message } : message), + }); + + max = (maxLength: number, message?: string | { message?: string }) => + this.refinement((data) => data.length <= maxLength, { + // check: data => data.length <= maxLength, + code: ZodIssueCode.too_big, + type: "array", + inclusive: true, + maximum: maxLength, + ...(typeof message === "string" ? { message } : message), + }); + + length = (len: number, message?: string) => + this.min(len, { message }).max(len, { message }); + + nonempty: () => ZodNonEmptyArray = () => { + return new ZodNonEmptyArray({ ...this._def, nonempty: true }); + }; + + static create = (schema: T): ZodArray => { + return new ZodArray({ + t: ZodTypes.array, + type: schema, + nonempty: false, + }); + }; +} + +export class ZodNonEmptyArray extends ZodType< + [T["_output"], ...T["_output"][]], + ZodArrayDef, + [T["_input"], ...T["_input"][]] +> { + toJSON = () => { + return { + t: this._def.t, + type: this._def.type.toJSON(), + }; + }; + + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + min = (minLength: number, message?: string | { message?: string }) => + this.refinement((data) => data.length >= minLength, { + // check: data => data.length >= minLength, + code: ZodIssueCode.too_small, + minimum: minLength, + type: "array", + inclusive: true, + ...(typeof message === "string" ? { message } : message), + }); + + max = (maxLength: number, message?: string | { message?: string }) => + this.refinement((data) => data.length <= maxLength, { + // check: + code: ZodIssueCode.too_big, + maximum: maxLength, + type: "array", + inclusive: true, + ...(typeof message === "string" ? { message } : message), + }); + + length = (len: number, message?: string) => + this.min(len, { message }).max(len, { message }); +} diff --git a/bundler/tests/.cache/untrusted/084fa13af44f1ecfeaff67a699ba7dedf9ae7a88.ts b/bundler/tests/.cache/untrusted/084fa13af44f1ecfeaff67a699ba7dedf9ae7a88.ts new file mode 100644 index 00000000000..d925c90152e --- /dev/null +++ b/bundler/tests/.cache/untrusted/084fa13af44f1ecfeaff67a699ba7dedf9ae7a88.ts @@ -0,0 +1,74 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/base32.ts + + +/* + * Copyright 2018-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Fork of https://github.com/LinusU/base32-encode +// and https://github.com/LinusU/base32-decode to support returning +// buffers without padding. +/** + * @ignore + */ +const b32Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; + +/** + * @ignore + */ +export class base32 { + static encode(src: Uint8Array): Uint8Array { + let bits = 0; + let value = 0; + let a = new Uint8Array(src); + let buf = new Uint8Array(src.byteLength * 2); + let j = 0; + for (let i = 0; i < a.byteLength; i++) { + value = (value << 8) | a[i]; + bits += 8; + while (bits >= 5) { + let index = (value >>> (bits - 5)) & 31; + buf[j++] = b32Alphabet.charAt(index).charCodeAt(0); + bits -= 5; + } + } + if (bits > 0) { + let index = (value << (5 - bits)) & 31; + buf[j++] = b32Alphabet.charAt(index).charCodeAt(0); + } + return buf.slice(0, j); + } + + static decode(src: Uint8Array): Uint8Array { + let bits = 0; + let byte = 0; + let j = 0; + let a = new Uint8Array(src); + let out = new Uint8Array(a.byteLength * 5 / 8 | 0); + for (let i = 0; i < a.byteLength; i++) { + let v = String.fromCharCode(a[i]); + let vv = b32Alphabet.indexOf(v); + if (vv === -1) { + throw new Error("Illegal Base32 character: " + a[i]); + } + byte = (byte << 5) | vv; + bits += 5; + if (bits >= 8) { + out[j++] = (byte >>> (bits - 8)) & 255; + bits -= 8; + } + } + return out.slice(0, j); + } +} diff --git a/bundler/tests/.cache/untrusted/0987430dbb3b0ef91e6bc4ca3a679ffd66ec1912.ts b/bundler/tests/.cache/untrusted/0987430dbb3b0ef91e6bc4ca3a679ffd66ec1912.ts new file mode 100644 index 00000000000..4386cf3e808 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0987430dbb3b0ef91e6bc4ca3a679ffd66ec1912.ts @@ -0,0 +1,126 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/knex.js + + +import Raw from './raw.js'; +import Client from './client.js'; +import QueryBuilder from './query/builder.js'; +import QueryInterface from './query/methods.js'; + +import makeKnex from './util/make-knex.js'; +import parseConnection from './util/parse-connection.js'; +import { KnexTimeoutError } from './util/timeout.js'; +import fakeClient from './util/fake-client.js'; +import { SUPPORTED_CLIENTS } from './constants.js'; +import { resolveClientNameWithAliases } from './helpers.js'; + +// Importing all dialects as there are no sync imports in ESM. Whenever a new +// dialect is completed, add its import here +import mssqlDialect from './dialects/mssql/index.js'; +import mysqlDialect from './dialects/mysql/index.js'; +import mysql2Dialect from './dialects/mysql2/index.js'; +import oracledbDialect from './dialects/oracledb/index.js'; +import postgresDialect from './dialects/postgres/index.js'; +import redshiftDialect from './dialects/redshift/index.js'; +import sqlite3Dialect from './dialects/sqlite3/index.js'; + +function Knex(config) { + // If config is a string, try to parse it + if (typeof config === 'string') { + const parsedConfig = Object.assign(parseConnection(config), arguments[2]); + return new Knex(parsedConfig); + } + + let Dialect; + // If user provided no relevant parameters, use generic client + if (arguments.length === 0 || (!config.client && !config.dialect)) { + Dialect = Client; + } + + // If user provided Client constructor as a parameter, use it + else if ( + typeof config.client === 'function' && + config.client.prototype instanceof Client + ) { + Dialect = config.client; + } + + // If neither applies, let's assume user specified name of a client or dialect as a string + else { + const clientName = config.client || config.dialect; + if (!SUPPORTED_CLIENTS.includes(clientName)) { + throw new Error( + `knex: Unknown configuration option 'client' value ${clientName}. Note that it is case-sensitive, check documentation for supported values.` + ); + } + + const resolvedClientName = resolveClientNameWithAliases(clientName); + + // As more dialects are added, add them here. + switch (resolvedClientName) { + case 'mssql': + Dialect = mssqlDialect; + break; + + case 'mysql': + Dialect = mysqlDialect; + break; + + case 'mysql2': + Dialect = mysql2Dialect; + break; + + case 'oracledb': + Dialect = oracledbDialect; + break; + + case 'postgres': + Dialect = postgresDialect; + break; + + case 'redshift': + Dialect = redshiftDialect; + break; + + case 'sqlite3': + Dialect = sqlite3Dialect; + break; + } + } + + // If config connection parameter is passed as string, try to parse it + if (typeof config.connection === 'string') { + config = Object.assign({}, config, { + connection: parseConnection(config.connection).connection, + }); + } + const newKnex = makeKnex(new Dialect(config)); + if (config.userParams) { + newKnex.userParams = config.userParams; + } + return newKnex; +} + +// Expose Client on the main Knex namespace. +Knex.Client = Client; + +Knex.KnexTimeoutError = KnexTimeoutError; + +Knex.QueryBuilder = { + extend: function (methodName, fn) { + QueryBuilder.extend(methodName, fn); + QueryInterface.push(methodName); + }, +}; + +/* eslint no-console:0 */ + +// Run a "raw" query, though we can't do anything with it other than put +// it in a query statement. +Knex.raw = (sql, bindings) => { + console.warn( + 'global Knex.raw is deprecated, use knex.raw (chain off an initialized knex object)' + ); + return new Raw(fakeClient).set(sql, bindings); +}; + +export default Knex; diff --git a/bundler/tests/.cache/untrusted/0b0ba553d848641fc04f090eee16e2bf1cf6f74e.ts b/bundler/tests/.cache/untrusted/0b0ba553d848641fc04f090eee16e2bf1cf6f74e.ts new file mode 100644 index 00000000000..0d759ba86c0 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0b0ba553d848641fc04f090eee16e2bf1cf6f74e.ts @@ -0,0 +1,88 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/kp.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Codec } from "./codec.ts"; +import { KeyPair, NKeysError, NKeysErrorCode, Prefix } from "./nkeys.ts"; +import { getEd25519Helper } from "./helper.ts"; + +/** + * @ignore + */ +export class KP implements KeyPair { + seed?: Uint8Array; + constructor(seed: Uint8Array) { + this.seed = seed; + } + + getRawSeed(): Uint8Array { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + let sd = Codec.decodeSeed(this.seed); + return sd.buf; + } + + getSeed(): Uint8Array { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + return this.seed; + } + + getPublicKey(): string { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + const sd = Codec.decodeSeed(this.seed); + const kp = getEd25519Helper().fromSeed(this.getRawSeed()); + const buf = Codec.encode(sd.prefix, kp.publicKey); + return new TextDecoder().decode(buf); + } + + getPrivateKey(): Uint8Array { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + const kp = getEd25519Helper().fromSeed(this.getRawSeed()); + return Codec.encode(Prefix.Private, kp.secretKey); + } + + sign(input: Uint8Array): Uint8Array { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + const kp = getEd25519Helper().fromSeed(this.getRawSeed()); + return getEd25519Helper().sign(input, kp.secretKey); + } + + verify(input: Uint8Array, sig: Uint8Array): boolean { + if (!this.seed) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + const kp = getEd25519Helper().fromSeed(this.getRawSeed()); + return getEd25519Helper().verify(input, sig, kp.publicKey); + } + + clear(): void { + if (!this.seed) { + return; + } + this.seed.fill(0); + this.seed = undefined; + } +} diff --git a/bundler/tests/.cache/untrusted/0b1675bc124cde8a4a7f97964efab5a393f8b9dd.ts b/bundler/tests/.cache/untrusted/0b1675bc124cde8a4a7f97964efab5a393f8b9dd.ts new file mode 100644 index 00000000000..50cd26c444d --- /dev/null +++ b/bundler/tests/.cache/untrusted/0b1675bc124cde8a4a7f97964efab5a393f8b9dd.ts @@ -0,0 +1,298 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/zipEntries.dew.js + + +import { dew as _readerForDewDew } from "./reader/readerFor.dew.js"; +import { dew as _utilsDewDew } from "./utils.dew.js"; +import { dew as _signatureDewDew } from "./signature.dew.js"; +import { dew as _zipEntryDewDew } from "./zipEntry.dew.js"; +import { dew as _utf8DewDew } from "./utf8.dew.js"; +import { dew as _supportDewDew } from "./support.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var readerFor = _readerForDewDew(); + + var utils = _utilsDewDew(); + + var sig = _signatureDewDew(); + + var ZipEntry = _zipEntryDewDew(); + + var utf8 = _utf8DewDew(); + + var support = _supportDewDew(); // class ZipEntries {{{ + + /** + * All the entries in the zip file. + * @constructor + * @param {Object} loadOptions Options for loading the stream. + */ + + + function ZipEntries(loadOptions) { + this.files = []; + this.loadOptions = loadOptions; + } + + ZipEntries.prototype = { + /** + * Check that the reader is on the specified signature. + * @param {string} expectedSignature the expected signature. + * @throws {Error} if it is an other signature. + */ + checkSignature: function (expectedSignature) { + if (!this.reader.readAndCheckSignature(expectedSignature)) { + this.reader.index -= 4; + var signature = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")"); + } + }, + + /** + * Check if the given signature is at the given index. + * @param {number} askedIndex the index to check. + * @param {string} expectedSignature the signature to expect. + * @return {boolean} true if the signature is here, false otherwise. + */ + isSignature: function (askedIndex, expectedSignature) { + var currentIndex = this.reader.index; + this.reader.setIndex(askedIndex); + var signature = this.reader.readString(4); + var result = signature === expectedSignature; + this.reader.setIndex(currentIndex); + return result; + }, + + /** + * Read the end of the central directory. + */ + readBlockEndOfCentral: function () { + this.diskNumber = this.reader.readInt(2); + this.diskWithCentralDirStart = this.reader.readInt(2); + this.centralDirRecordsOnThisDisk = this.reader.readInt(2); + this.centralDirRecords = this.reader.readInt(2); + this.centralDirSize = this.reader.readInt(4); + this.centralDirOffset = this.reader.readInt(4); + this.zipCommentLength = this.reader.readInt(2); // warning : the encoding depends of the system locale + // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded. + // On a windows machine, this field is encoded with the localized windows code page. + + var zipComment = this.reader.readData(this.zipCommentLength); + var decodeParamType = support.uint8array ? "uint8array" : "array"; // To get consistent behavior with the generation part, we will assume that + // this is utf8 encoded unless specified otherwise. + + var decodeContent = utils.transformTo(decodeParamType, zipComment); + this.zipComment = this.loadOptions.decodeFileName(decodeContent); + }, + + /** + * Read the end of the Zip 64 central directory. + * Not merged with the method readEndOfCentral : + * The end of central can coexist with its Zip64 brother, + * I don't want to read the wrong number of bytes ! + */ + readBlockZip64EndOfCentral: function () { + this.zip64EndOfCentralSize = this.reader.readInt(8); + this.reader.skip(4); // this.versionMadeBy = this.reader.readString(2); + // this.versionNeeded = this.reader.readInt(2); + + this.diskNumber = this.reader.readInt(4); + this.diskWithCentralDirStart = this.reader.readInt(4); + this.centralDirRecordsOnThisDisk = this.reader.readInt(8); + this.centralDirRecords = this.reader.readInt(8); + this.centralDirSize = this.reader.readInt(8); + this.centralDirOffset = this.reader.readInt(8); + this.zip64ExtensibleData = {}; + var extraDataSize = this.zip64EndOfCentralSize - 44, + index = 0, + extraFieldId, + extraFieldLength, + extraFieldValue; + + while (index < extraDataSize) { + extraFieldId = this.reader.readInt(2); + extraFieldLength = this.reader.readInt(4); + extraFieldValue = this.reader.readData(extraFieldLength); + this.zip64ExtensibleData[extraFieldId] = { + id: extraFieldId, + length: extraFieldLength, + value: extraFieldValue + }; + } + }, + + /** + * Read the end of the Zip 64 central directory locator. + */ + readBlockZip64EndOfCentralLocator: function () { + this.diskWithZip64CentralDirStart = this.reader.readInt(4); + this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8); + this.disksCount = this.reader.readInt(4); + + if (this.disksCount > 1) { + throw new Error("Multi-volumes zip are not supported"); + } + }, + + /** + * Read the local files, based on the offset read in the central part. + */ + readLocalFiles: function () { + var i, file; + + for (i = 0; i < this.files.length; i++) { + file = this.files[i]; + this.reader.setIndex(file.localHeaderOffset); + this.checkSignature(sig.LOCAL_FILE_HEADER); + file.readLocalPart(this.reader); + file.handleUTF8(); + file.processAttributes(); + } + }, + + /** + * Read the central directory. + */ + readCentralDir: function () { + var file; + this.reader.setIndex(this.centralDirOffset); + + while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) { + file = new ZipEntry({ + zip64: this.zip64 + }, this.loadOptions); + file.readCentralPart(this.reader); + this.files.push(file); + } + + if (this.centralDirRecords !== this.files.length) { + if (this.centralDirRecords !== 0 && this.files.length === 0) { + // We expected some records but couldn't find ANY. + // This is really suspicious, as if something went wrong. + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + } else {// We found some records but not all. + // Something is wrong but we got something for the user: no error here. + // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length); + } + } + }, + + /** + * Read the end of central directory. + */ + readEndOfCentral: function () { + var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END); + + if (offset < 0) { + // Check if the content is a truncated zip or complete garbage. + // A "LOCAL_FILE_HEADER" is not required at the beginning (auto + // extractible zip for example) but it can give a good hint. + // If an ajax request was used without responseType, we will also + // get unreadable data. + var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER); + + if (isGarbage) { + throw new Error("Can't find end of central directory : is this a zip file ? " + "If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"); + } else { + throw new Error("Corrupted zip: can't find end of central directory"); + } + } + + this.reader.setIndex(offset); + var endOfCentralDirOffset = offset; + this.checkSignature(sig.CENTRAL_DIRECTORY_END); + this.readBlockEndOfCentral(); + /* extract from the zip spec : + 4) If one of the fields in the end of central directory + record is too small to hold required data, the field + should be set to -1 (0xFFFF or 0xFFFFFFFF) and the + ZIP64 format record should be created. + 5) The end of central directory record and the + Zip64 end of central directory locator record must + reside on the same disk when splitting or spanning + an archive. + */ + + if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) { + this.zip64 = true; + /* + Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from + the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents + all numbers as 64-bit double precision IEEE 754 floating point numbers. + So, we have 53bits for integers and bitwise operations treat everything as 32bits. + see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators + and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5 + */ + // should look for a zip64 EOCD locator + + offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR); + + if (offset < 0) { + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + } + + this.reader.setIndex(offset); + this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR); + this.readBlockZip64EndOfCentralLocator(); // now the zip64 EOCD record + + if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) { + // console.warn("ZIP64 end of central directory not where expected."); + this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END); + + if (this.relativeOffsetEndOfZip64CentralDir < 0) { + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + } + } + + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir); + this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END); + this.readBlockZip64EndOfCentral(); + } + + var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize; + + if (this.zip64) { + expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator + + expectedEndOfCentralDirOffset += 12 + /* should not include the leading 12 bytes */ + + this.zip64EndOfCentralSize; + } + + var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset; + + if (extraBytes > 0) { + // console.warn(extraBytes, "extra bytes at beginning or within zipfile"); + if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {// The offsets seem wrong, but we have something at the specified offset. + // So… we keep it. + } else { + // the offset is wrong, update the "zero" of the reader + // this happens if data has been prepended (crx files for example) + this.reader.zero = extraBytes; + } + } else if (extraBytes < 0) { + throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes."); + } + }, + prepareReader: function (data) { + this.reader = readerFor(data); + }, + + /** + * Read a zip file and create ZipEntries. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file. + */ + load: function (data) { + this.prepareReader(data); + this.readEndOfCentral(); + this.readCentralDir(); + this.readLocalFiles(); + } + }; // }}} end of ZipEntries + + exports = ZipEntries; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/0b7e941fba0142ef7b838db3cfd99370b9047b22.ts b/bundler/tests/.cache/untrusted/0b7e941fba0142ef7b838db3cfd99370b9047b22.ts new file mode 100644 index 00000000000..7d646081346 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0b7e941fba0142ef7b838db3cfd99370b9047b22.ts @@ -0,0 +1,51 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/connection/deferred.ts + + +import { Deferred, deferred } from "../deps.ts"; + +export class DeferredStack { + private _array: Array; + private _queue: Array>; + private _maxSize: number; + private _size: number; + + constructor( + max?: number, + ls?: Iterable, + private _creator?: () => Promise, + ) { + this._maxSize = max || 10; + this._array = ls ? [...ls] : []; + this._size = this._array.length; + this._queue = []; + } + + async pop(): Promise { + if (this._array.length > 0) { + return this._array.pop()!; + } else if (this._size < this._maxSize && this._creator) { + this._size++; + return await this._creator(); + } + const d = deferred(); + this._queue.push(d); + await d; + return this._array.pop()!; + } + + push(value: T): void { + this._array.push(value); + if (this._queue.length > 0) { + const d = this._queue.shift()!; + d.resolve(); + } + } + + get size(): number { + return this._size; + } + + get available(): number { + return this._array.length; + } +} diff --git a/bundler/tests/.cache/untrusted/0b998262153d42604549524eae443e05d967244e.ts b/bundler/tests/.cache/untrusted/0b998262153d42604549524eae443e05d967244e.ts new file mode 100644 index 00000000000..2cb25fa416c --- /dev/null +++ b/bundler/tests/.cache/untrusted/0b998262153d42604549524eae443e05d967244e.ts @@ -0,0 +1,4 @@ +// Loaded from https://dev.jspm.io/npm:@jspm/core@1.1.1/nodelibs/buffer.js + + +for(var r={byteLength:function(r){var t=u(r),e=t[0],n=t[1];return 3*(e+n)/4-n},toByteArray:function(r){var t,o,a=u(r),h=a[0],c=a[1],d=new n(function(r,t,e){return 3*(t+e)/4-e}(0,h,c)),f=0,A=c>0?h-4:h;for(o=0;o>16&255,d[f++]=t>>8&255,d[f++]=255&t;2===c&&(t=e[r.charCodeAt(o)]<<2|e[r.charCodeAt(o+1)]>>4,d[f++]=255&t);1===c&&(t=e[r.charCodeAt(o)]<<10|e[r.charCodeAt(o+1)]<<4|e[r.charCodeAt(o+2)]>>2,d[f++]=t>>8&255,d[f++]=255&t);return d},fromByteArray:function(r){for(var e,n=r.length,o=n%3,a=[],h=0,u=n-o;hu?u:h+16383));1===o?(e=r[n-1],a.push(t[e>>2]+t[e<<4&63]+"==")):2===o&&(e=(r[n-2]<<8)+r[n-1],a.push(t[e>>10]+t[e>>4&63]+t[e<<2&63]+"="));return a.join("")}},t=[],e=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=o.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return -1===e&&(e=t),[e,e===t?0:4-e%4]}function c(r,e,n){for(var o,a,h=[],u=e;u>18&63]+t[a>>12&63]+t[a>>6&63]+t[63&a]);return h.join("")}e["-".charCodeAt(0)]=62,e["_".charCodeAt(0)]=63;var a$1={read:function(a,t,o,r,h){var M,f,p=8*h-r-1,w=(1<>1,i=-7,N=o?h-1:0,n=o?-1:1,u=a[t+N];for(N+=n,M=u&(1<<-i)-1,u>>=-i,i+=p;i>0;M=256*M+a[t+N],N+=n,i-=8);for(f=M&(1<<-i)-1,M>>=-i,i+=r;i>0;f=256*f+a[t+N],N+=n,i-=8);if(0===M)M=1-e;else {if(M===w)return f?NaN:1/0*(u?-1:1);f+=Math.pow(2,r),M-=e;}return (u?-1:1)*f*Math.pow(2,M-r)},write:function(a,t,o,r,h,M){var f,p,w,e=8*M-h-1,i=(1<>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,u=r?0:M-1,l=r?1:-1,s=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(p=isNaN(t)?1:0,f=i):(f=Math.floor(Math.log(t)/Math.LN2),t*(w=Math.pow(2,-f))<1&&(f--,w*=2),(t+=f+N>=1?n/w:n*Math.pow(2,1-N))*w>=2&&(f++,w/=2),f+N>=i?(p=0,f=i):f+N>=1?(p=(t*w-1)*Math.pow(2,h),f+=N):(p=t*Math.pow(2,N-1)*Math.pow(2,h),f=0));h>=8;a[o+u]=255&p,u+=l,p/=256,h-=8);for(f=f<0;a[o+u]=255&f,u+=l,f/=256,e-=8);a[o+u-l]|=128*s;}};var e$1={},n$1=r,i=a$1,o$1="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e$1.Buffer=u$1,e$1.SlowBuffer=function(t){+t!=t&&(t=0);return u$1.alloc(+t)},e$1.INSPECT_MAX_BYTES=50;function f(t){if(t>2147483647)throw new RangeError('The value "'+t+'" is invalid for option "size"');var r=new Uint8Array(t);return Object.setPrototypeOf(r,u$1.prototype),r}function u$1(t,r,e){if("number"==typeof t){if("string"==typeof r)throw new TypeError('The "string" argument must be of type string. Received type number');return a$2(t)}return s(t,r,e)}function s(t,r,e){if("string"==typeof t)return function(t,r){"string"==typeof r&&""!==r||(r="utf8");if(!u$1.isEncoding(r))throw new TypeError("Unknown encoding: "+r);var e=0|y(t,r),n=f(e),i=n.write(t,r);i!==e&&(n=n.slice(0,i));return n}(t,r);if(ArrayBuffer.isView(t))return p(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return c$1(t,r,e);if("undefined"!=typeof SharedArrayBuffer&&(F(t,SharedArrayBuffer)||t&&F(t.buffer,SharedArrayBuffer)))return c$1(t,r,e);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return u$1.from(n,r,e);var i=function(t){if(u$1.isBuffer(t)){var r=0|l(t.length),e=f(r);return 0===e.length||t.copy(e,0,0,r),e}if(void 0!==t.length)return "number"!=typeof t.length||N(t.length)?f(0):p(t);if("Buffer"===t.type&&Array.isArray(t.data))return p(t.data)}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return u$1.from(t[Symbol.toPrimitive]("string"),r,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function h$1(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function a$2(t){return h$1(t),f(t<0?0:0|l(t))}function p(t){for(var r=t.length<0?0:0|l(t.length),e=f(r),n=0;n=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|t}function y(t,r){if(u$1.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var e=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===e)return 0;for(var i=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return z(t).length;default:if(i)return n?-1:_(t).length;r=(""+r).toLowerCase(),i=!0;}}function g(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return "";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return "";if((e>>>=0)<=(r>>>=0))return "";for(t||(t="utf8");;)switch(t){case"hex":return O(this,r,e);case"utf8":case"utf-8":return I(this,r,e);case"ascii":return S(this,r,e);case"latin1":case"binary":return R(this,r,e);case"base64":return T(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0;}}function w(t,r,e){var n=t[r];t[r]=t[e],t[e]=n;}function d(t,r,e,n,i){if(0===t.length)return -1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),N(e=+e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return -1;e=t.length-1;}else if(e<0){if(!i)return -1;e=0;}if("string"==typeof r&&(r=u$1.from(r,n)),u$1.isBuffer(r))return 0===r.length?-1:v(t,r,e,n,i);if("number"==typeof r)return r&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):v(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,r,e,n,i){var o,f=1,u=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return -1;f=2,u/=2,s/=2,e/=2;}function h(t,r){return 1===f?t[r]:t.readUInt16BE(r*f)}if(i){var a=-1;for(o=e;ou&&(e=u-s),o=e;o>=0;o--){for(var p=!0,c=0;ci&&(n=i):n=i;var o=r.length;n>o/2&&(n=o/2);for(var f=0;f>8,i=e%256,o.push(i),o.push(n);return o}(r,t.length-e),t,e,n)}function T(t,r,e){return 0===r&&e===t.length?n$1.fromByteArray(t):n$1.fromByteArray(t.slice(r,e))}function I(t,r,e){e=Math.min(t.length,e);for(var n=[],i=r;i239?4:h>223?3:h>191?2:1;if(i+p<=e)switch(p){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],f=t[i+2],128==(192&o)&&128==(192&f)&&(s=(15&h)<<12|(63&o)<<6|63&f)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],f=t[i+2],u=t[i+3],128==(192&o)&&128==(192&f)&&128==(192&u)&&(s=(15&h)<<18|(63&o)<<12|(63&f)<<6|63&u)>65535&&s<1114112&&(a=s);}null===a?(a=65533,p=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=p;}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;nr&&(t+=" ... "),""},o$1&&(u$1.prototype[o$1]=u$1.prototype.inspect),u$1.prototype.compare=function(t,r,e,n,i){if(F(t,Uint8Array)&&(t=u$1.from(t,t.offset,t.byteLength)),!u$1.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&r>=e)return 0;if(n>=i)return -1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),f=(e>>>=0)-(r>>>=0),s=Math.min(o,f),h=this.slice(n,i),a=t.slice(r,e),p=0;p>>=0,isFinite(e)?(e>>>=0,void 0===n&&(n="utf8")):(n=e,e=void 0);}var i=this.length-r;if((void 0===e||e>i)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return b(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return E(this,t,r,e);case"latin1":case"binary":return B(this,t,r,e);case"base64":return A(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r,e);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0;}},u$1.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function S(t,r,e){var n="";e=Math.min(t.length,e);for(var i=r;in)&&(e=n);for(var i="",o=r;oe)throw new RangeError("Trying to access beyond buffer length")}function C(t,r,e,n,i,o){if(!u$1.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>i||rt.length)throw new RangeError("Index out of range")}function P(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function k(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,4),i.write(t,r,e,n,23,4),e+4}function M(t,r,e,n,o){return r=+r,e>>>=0,o||P(t,0,e,8),i.write(t,r,e,n,52,8),e+8}u$1.prototype.slice=function(t,r){var e=this.length;(t=~~t)<0?(t+=e)<0&&(t=0):t>e&&(t=e),(r=void 0===r?e:~~r)<0?(r+=e)<0&&(r=0):r>e&&(r=e),r>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t+--r],i=1;r>0&&(i*=256);)n+=this[t+--r]*i;return n},u$1.prototype.readUInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),this[t]},u$1.prototype.readUInt16LE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]|this[t+1]<<8},u$1.prototype.readUInt16BE=function(t,r){return t>>>=0,r||x(t,2,this.length),this[t]<<8|this[t+1]},u$1.prototype.readUInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u$1.prototype.readUInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u$1.prototype.readIntLE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*r)),n},u$1.prototype.readIntBE=function(t,r,e){t>>>=0,r>>>=0,e||x(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},u$1.prototype.readInt8=function(t,r){return t>>>=0,r||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u$1.prototype.readInt16LE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},u$1.prototype.readInt16BE=function(t,r){t>>>=0,r||x(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},u$1.prototype.readInt32LE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u$1.prototype.readInt32BE=function(t,r){return t>>>=0,r||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u$1.prototype.readFloatLE=function(t,r){return t>>>=0,r||x(t,4,this.length),i.read(this,t,!0,23,4)},u$1.prototype.readFloatBE=function(t,r){return t>>>=0,r||x(t,4,this.length),i.read(this,t,!1,23,4)},u$1.prototype.readDoubleLE=function(t,r){return t>>>=0,r||x(t,8,this.length),i.read(this,t,!0,52,8)},u$1.prototype.readDoubleBE=function(t,r){return t>>>=0,r||x(t,8,this.length),i.read(this,t,!1,52,8)},u$1.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r>>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o>>=0,e>>>=0,n)||C(this,t,r,e,Math.pow(2,8*e)-1,0);var i=e-1,o=1;for(this[r+i]=255&t;--i>=0&&(o*=256);)this[r+i]=t/o&255;return r+e},u$1.prototype.writeUInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,255,0),this[r]=255&t,r+1},u$1.prototype.writeUInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1.prototype.writeUInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1.prototype.writeUInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t,r+4},u$1.prototype.writeUInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=0,f=1,u=0;for(this[r]=255&t;++o>0)-u&255;return r+e},u$1.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r>>>=0,!n){var i=Math.pow(2,8*e-1);C(this,t,r,e,i-1,-i);}var o=e-1,f=1,u=0;for(this[r+o]=255&t;--o>=0&&(f*=256);)t<0&&0===u&&0!==this[r+o+1]&&(u=1),this[r+o]=(t/f>>0)-u&255;return r+e},u$1.prototype.writeInt8=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=255&t,r+1},u$1.prototype.writeInt16LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=255&t,this[r+1]=t>>>8,r+2},u$1.prototype.writeInt16BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=255&t,r+2},u$1.prototype.writeInt32LE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4},u$1.prototype.writeInt32BE=function(t,r,e){return t=+t,r>>>=0,e||C(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t,r+4},u$1.prototype.writeFloatLE=function(t,r,e){return k(this,t,r,!0,e)},u$1.prototype.writeFloatBE=function(t,r,e){return k(this,t,r,!1,e)},u$1.prototype.writeDoubleLE=function(t,r,e){return M(this,t,r,!0,e)},u$1.prototype.writeDoubleBE=function(t,r,e){return M(this,t,r,!1,e)},u$1.prototype.copy=function(t,r,e,n){if(!u$1.isBuffer(t))throw new TypeError("argument should be a Buffer");if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r=0;--o)t[o+r]=this[o+e];else Uint8Array.prototype.set.call(t,this.subarray(e,n),r);return i},u$1.prototype.fill=function(t,r,e,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,e=this.length):"string"==typeof e&&(n=e,e=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!u$1.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i);}}else "number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(r<0||this.length>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(o=r;o55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320);}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e);}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128);}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128);}else {if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128);}}return o}function z(t){return n$1.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(j,"")).length<2)return "";for(;t.length%4!=0;)t+="=";return t}(t))}function D(t,r,e,n){for(var i=0;i=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function F(t,r){return t instanceof r||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===r.name}function N(t){return t!=t}var Y=function(){for(var t=new Array(256),r=0;r<16;++r)for(var e=16*r,n=0;n<16;++n)t[e+n]="0123456789abcdef"[r]+"0123456789abcdef"[n];return t}();var Buffer=e$1.Buffer;var INSPECT_MAX_BYTES=e$1.INSPECT_MAX_BYTES;var kMaxLength=e$1.kMaxLength;export default e$1;export{Buffer,INSPECT_MAX_BYTES,kMaxLength}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/0b9b5f7b4bff03c021f0565ff5908780a92b6923.ts b/bundler/tests/.cache/untrusted/0b9b5f7b4bff03c021f0565ff5908780a92b6923.ts new file mode 100644 index 00000000000..be24e587519 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0b9b5f7b4bff03c021f0565ff5908780a92b6923.ts @@ -0,0 +1,203 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/client.ts + + +import { Connection, ResultType } from "./connection/connection.ts"; +import { + ConnectionOptions, + ConnectionString, + createParams, +} from "./connection/connection_params.ts"; +import { + Query, + QueryArguments, + QueryArrayResult, + QueryConfig, + QueryObjectConfig, + QueryObjectResult, + QueryResult, + templateStringToQuery, +} from "./query/query.ts"; +import { isTemplateString } from "./utils.ts"; + +export class QueryClient { + /** + * This function is meant to be replaced when being extended + * + * It's sole purpose is to be a common interface implementations can use + * regardless of their internal structure + */ + _executeQuery(_query: Query, _result: ResultType): Promise { + throw new Error( + `"${this._executeQuery.name}" hasn't been implemented for class "${this.constructor.name}"`, + ); + } + + /** + * This method allows executed queries to be retrieved as array entries. + * It supports a generic interface in order to type the entries retrieved by the query + * + * ```ts + * const {rows} = await my_client.queryArray( + * "SELECT ID, NAME FROM CLIENTS" + * ); // Array + * + * const {rows} = await my_client.queryArray<[number, string]>( + * "SELECT ID, NAME FROM CLIENTS" + * ); // Array<[number, string]> + * ``` + * + * It also allows you to execute prepared stamements with template strings + * + * ```ts + * const id = 12; + * // Array<[number, string]> + * const {rows} = await my_client.queryArray<[number, string]>`SELECT ID, NAME FROM CLIENTS WHERE ID = ${id}`; + * ``` + */ + queryArray>( + query: string, + ...args: QueryArguments + ): Promise>; + queryArray>( + config: QueryConfig, + ): Promise>; + queryArray>( + strings: TemplateStringsArray, + ...args: QueryArguments + ): Promise>; + queryArray = Array>( + // deno-lint-ignore camelcase + query_template_or_config: TemplateStringsArray | string | QueryConfig, + ...args: QueryArguments + ): Promise> { + let query; + if (typeof query_template_or_config === "string") { + query = new Query(query_template_or_config, ...args); + } else if (isTemplateString(query_template_or_config)) { + query = templateStringToQuery(query_template_or_config, args); + } else { + query = new Query(query_template_or_config); + } + + return this._executeQuery( + query, + ResultType.ARRAY, + ) as Promise>; + } + + /** + * This method allows executed queries to be retrieved as object entries. + * It supports a generic interface in order to type the entries retrieved by the query + * + * ```ts + * const {rows} = await my_client.queryObject( + * "SELECT ID, NAME FROM CLIENTS" + * ); // Record + * + * const {rows} = await my_client.queryObject<{id: number, name: string}>( + * "SELECT ID, NAME FROM CLIENTS" + * ); // Array<{id: number, name: string}> + * ``` + * + * You can also map the expected results to object fields using the configuration interface. + * This will be assigned in the order they were provided + * + * ```ts + * const {rows} = await my_client.queryObject( + * "SELECT ID, NAME FROM CLIENTS" + * ); + * + * console.log(rows); // [{id: 78, name: "Frank"}, {id: 15, name: "Sarah"}] + * + * const {rows} = await my_client.queryObject({ + * text: "SELECT ID, NAME FROM CLIENTS", + * fields: ["personal_id", "complete_name"], + * }); + * + * console.log(rows); // [{personal_id: 78, complete_name: "Frank"}, {personal_id: 15, complete_name: "Sarah"}] + * ``` + * + * It also allows you to execute prepared stamements with template strings + * + * ```ts + * const id = 12; + * // Array<{id: number, name: string}> + * const {rows} = await my_client.queryObject<{id: number, name: string}>`SELECT ID, NAME FROM CLIENTS WHERE ID = ${id}`; + * ``` + */ + queryObject>( + query: string, + ...args: QueryArguments + ): Promise>; + queryObject>( + config: QueryObjectConfig, + ): Promise>; + queryObject>( + query: TemplateStringsArray, + ...args: QueryArguments + ): Promise>; + queryObject< + T extends Record = Record, + >( + // deno-lint-ignore camelcase + query_template_or_config: + | string + | QueryObjectConfig + | TemplateStringsArray, + ...args: QueryArguments + ): Promise> { + let query; + if (typeof query_template_or_config === "string") { + query = new Query(query_template_or_config, ...args); + } else if (isTemplateString(query_template_or_config)) { + query = templateStringToQuery(query_template_or_config, args); + } else { + query = new Query(query_template_or_config as QueryObjectConfig); + } + + return this._executeQuery( + query, + ResultType.OBJECT, + ) as Promise>; + } +} + +export class Client extends QueryClient { + protected _connection: Connection; + + constructor(config?: ConnectionOptions | ConnectionString) { + super(); + this._connection = new Connection(createParams(config)); + } + + _executeQuery(query: Query, result: ResultType): Promise { + return this._connection.query(query, result); + } + + async connect(): Promise { + await this._connection.startup(); + } + + async end(): Promise { + await this._connection.end(); + } +} + +export class PoolClient extends QueryClient { + protected _connection: Connection; + private _releaseCallback: () => void; + + constructor(connection: Connection, releaseCallback: () => void) { + super(); + this._connection = connection; + this._releaseCallback = releaseCallback; + } + + _executeQuery(query: Query, result: ResultType): Promise { + return this._connection.query(query, result); + } + + async release(): Promise { + await this._releaseCallback(); + } +} diff --git a/bundler/tests/.cache/untrusted/0ba37bfe765e3bfc21bd6a965bf07ba28d2f1be7.ts b/bundler/tests/.cache/untrusted/0ba37bfe765e3bfc21bd6a965bf07ba28d2f1be7.ts new file mode 100644 index 00000000000..d53f974fcf1 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0ba37bfe765e3bfc21bd6a965bf07ba28d2f1be7.ts @@ -0,0 +1,85 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/muxsubscription.ts + + +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import type { Request } from "./request.ts"; +import type { Msg } from "./types.ts"; +import { ErrorCode, NatsError } from "./error.ts"; +import { createInbox } from "./protocol.ts"; +import { isRequestError } from "./msg.ts"; + +export class MuxSubscription { + baseInbox!: string; + reqs: Map; + + constructor() { + this.reqs = new Map(); + } + + size(): number { + return this.reqs.size; + } + + init(prefix?: string): string { + this.baseInbox = `${createInbox(prefix)}.`; + return this.baseInbox; + } + + add(r: Request) { + if (!isNaN(r.received)) { + r.received = 0; + } + this.reqs.set(r.token, r); + } + + get(token: string): Request | undefined { + return this.reqs.get(token); + } + + cancel(r: Request): void { + this.reqs.delete(r.token); + } + + getToken(m: Msg): string | null { + const s = m.subject || ""; + if (s.indexOf(this.baseInbox) === 0) { + return s.substring(this.baseInbox.length); + } + return null; + } + + dispatcher() { + return (err: NatsError | null, m: Msg) => { + const token = this.getToken(m); + if (token) { + const r = this.get(token); + if (r) { + if (err === null && m.headers) { + err = isRequestError(m); + } + r.resolver(err, m); + } + } + }; + } + + close() { + const err = NatsError.errorForCode(ErrorCode.TIMEOUT); + this.reqs.forEach((req) => { + req.resolver(err, {} as Msg); + }); + } +} diff --git a/bundler/tests/.cache/untrusted/0c2021cc246c0238a4b0b37981aacf7dfe8d57ee.ts b/bundler/tests/.cache/untrusted/0c2021cc246c0238a4b0b37981aacf7dfe8d57ee.ts new file mode 100644 index 00000000000..a99f540f476 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0c2021cc246c0238a4b0b37981aacf7dfe8d57ee.ts @@ -0,0 +1,165 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/authenticator.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { nkeys } from "./nkeys.ts"; +import type { ConnectionOptions } from "./types.ts"; +import { ErrorCode, NatsError } from "./mod.ts"; +import { TD, TE } from "./encoders.ts"; + +export type NoAuth = void; + +export interface TokenAuth { + auth_token: string; +} + +export interface UserPass { + user: string; + pass?: string; +} + +export interface NKeyAuth { + nkey: string; + sig: string; +} + +export interface JwtAuth { + jwt: string; + nkey?: string; + sig?: string; +} + +type Auth = NoAuth | TokenAuth | UserPass | NKeyAuth | JwtAuth; + +/** + * Authenticator is an interface that returns credentials + */ +export interface Authenticator { + (nonce?: string): Auth; +} + +export function buildAuthenticator( + opts: ConnectionOptions, +): Authenticator { + // jwtAuthenticator is created by the user, since it + // will require possibly reading files which + // some of the clients are simply unable to do + if (opts.authenticator) { + return opts.authenticator; + } + if (opts.token) { + return tokenFn(opts.token); + } + if (opts.user) { + return passFn(opts.user, opts.pass); + } + return noAuthFn(); +} + +export function noAuthFn(): Authenticator { + return (): NoAuth => { + return; + }; +} + +/** + * Returns a user/pass authenticator + * @param { string }user + * @param {string } pass + * @return {UserPass} + */ +function passFn(user: string, pass?: string): Authenticator { + return (): UserPass => { + return { user, pass }; + }; +} + +/** + * Returns a token authenticator + * @param {string } token + * @return {TokenAuth} + */ +function tokenFn(token: string): Authenticator { + return (): TokenAuth => { + return { auth_token: token }; + }; +} + +/** + * Returns an nkey authenticator that returns a public key + * @param {Uint8Array | (() => Uint8Array)} seed + * @return {NKeyAuth} + */ +export function nkeyAuthenticator( + seed?: Uint8Array | (() => Uint8Array), +): Authenticator { + return (nonce?: string): NKeyAuth => { + seed = typeof seed === "function" ? seed() : seed; + const kp = seed ? nkeys.fromSeed(seed) : undefined; + const nkey = kp ? kp.getPublicKey() : ""; + const challenge = TE.encode(nonce || ""); + const sigBytes = kp !== undefined && nonce ? kp.sign(challenge) : undefined; + const sig = sigBytes ? nkeys.encode(sigBytes) : ""; + return { nkey, sig }; + }; +} + +/** + * Returns a jwt authenticator. If a seed is provided, the public + * key, and signature are calculated. Note if a signature is provided + * the returned value should be a base64 encoded string. + * + * @return {JwtAuth} + * @param ajwt + * @param seed + */ +export function jwtAuthenticator( + ajwt: string | (() => string), + seed?: Uint8Array | (() => Uint8Array), +): Authenticator { + return ( + nonce?: string, + ): JwtAuth => { + const jwt = typeof ajwt === "function" ? ajwt() : ajwt; + const fn = nkeyAuthenticator(seed); + const { nkey, sig } = fn(nonce) as NKeyAuth; + return { jwt, nkey, sig }; + }; +} + +/** + * Returns a jwt authenticator configured from the specified creds file contents. + * @param creds + * @returns {JwtAuth} + */ +export function credsAuthenticator(creds: Uint8Array): Authenticator { + const CREDS = + /\s*(?:(?:[-]{3,}[^\n]*[-]{3,}\n)(.+)(?:\n\s*[-]{3,}[^\n]*[-]{3,}\n))/ig; + const s = TD.decode(creds); + // get the JWT + let m = CREDS.exec(s); + if (!m) { + throw NatsError.errorForCode(ErrorCode.BAD_CREDS); + } + const jwt = m[1].trim(); + // get the nkey + m = CREDS.exec(s); + if (!m) { + throw NatsError.errorForCode(ErrorCode.BAD_CREDS); + } + const seed = TE.encode(m[1].trim()); + return jwtAuthenticator(jwt, seed); +} diff --git a/bundler/tests/.cache/untrusted/0c34b330f5a123d3464419f60d906110491b7b62.ts b/bundler/tests/.cache/untrusted/0c34b330f5a123d3464419f60d906110491b7b62.ts new file mode 100644 index 00000000000..002eef866ff --- /dev/null +++ b/bundler/tests/.cache/untrusted/0c34b330f5a123d3464419f60d906110491b7b62.ts @@ -0,0 +1,37 @@ +// Loaded from https://raw.githubusercontent.com/czabaj/stringify-replacers/main/replacers.ts + + +import { Replacer } from "./types.d.ts"; +import { printType } from "./utils.ts"; + +export const identityReplacer: Replacer = (k, v) => v; + +/** + * Prints deep objects only to certain depth + */ +export const maxDepthReplacer = (maxDepth: number): Replacer => { + if (maxDepth === 0) { + return identityReplacer; + } + if (maxDepth === 1) { + return (k, v) => + k !== `` && v && typeof v === `object` ? printType.call(v) : v; + } + const depthTrack = new Map, number>(); + return function (k, v) { + const currentDepth = depthTrack.get(this) || 0; + if (v && typeof v === `object`) { + if (currentDepth >= maxDepth) { + return printType.call(v); + } + depthTrack.set(v, currentDepth + 1); + } + return v; + }; +}; + +/** + * Add support to serialize ES6 Map + */ +export const serializeMapReplacer: Replacer = (k, v) => + v && v instanceof Map ? Object.fromEntries(v.entries()) : v; diff --git a/bundler/tests/.cache/untrusted/0c9650fcecfa652181a675ba86188f925726d09b.ts b/bundler/tests/.cache/untrusted/0c9650fcecfa652181a675ba86188f925726d09b.ts new file mode 100644 index 00000000000..f2c88d722d0 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0c9650fcecfa652181a675ba86188f925726d09b.ts @@ -0,0 +1,89 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/nodejs/NodejsStreamInputAdapter.dew.js + + +import { dew as _utilsDewDew } from "../utils.dew.js"; +import { dew as _GenericWorkerDewDew } from "../stream/GenericWorker.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utils = _utilsDewDew(); + + var GenericWorker = _GenericWorkerDewDew(); + /** + * A worker that use a nodejs stream as source. + * @constructor + * @param {String} filename the name of the file entry for this stream. + * @param {Readable} stream the nodejs stream. + */ + + + function NodejsStreamInputAdapter(filename, stream) { + GenericWorker.call(this, "Nodejs stream input adapter for " + filename); + this._upstreamEnded = false; + + this._bindStream(stream); + } + + utils.inherits(NodejsStreamInputAdapter, GenericWorker); + /** + * Prepare the stream and bind the callbacks on it. + * Do this ASAP on node 0.10 ! A lazy binding doesn't always work. + * @param {Stream} stream the nodejs stream to use. + */ + + NodejsStreamInputAdapter.prototype._bindStream = function (stream) { + var self = this; + this._stream = stream; + stream.pause(); + stream.on("data", function (chunk) { + self.push({ + data: chunk, + meta: { + percent: 0 + } + }); + }).on("error", function (e) { + if (self.isPaused) { + this.generatedError = e; + } else { + self.error(e); + } + }).on("end", function () { + if (self.isPaused) { + self._upstreamEnded = true; + } else { + self.end(); + } + }); + }; + + NodejsStreamInputAdapter.prototype.pause = function () { + if (!GenericWorker.prototype.pause.call(this)) { + return false; + } + + this._stream.pause(); + + return true; + }; + + NodejsStreamInputAdapter.prototype.resume = function () { + if (!GenericWorker.prototype.resume.call(this)) { + return false; + } + + if (this._upstreamEnded) { + this.end(); + } else { + this._stream.resume(); + } + + return true; + }; + + exports = NodejsStreamInputAdapter; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/0d631cd2bf9b4650d9afbd6a2b60adc3b91acbbd.ts b/bundler/tests/.cache/untrusted/0d631cd2bf9b4650d9afbd6a2b60adc3b91acbbd.ts new file mode 100644 index 00000000000..7f1fe813eaf --- /dev/null +++ b/bundler/tests/.cache/untrusted/0d631cd2bf9b4650d9afbd6a2b60adc3b91acbbd.ts @@ -0,0 +1,59 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/ZodDef.ts + + +import { ZodAnyDef } from "./types/any.ts"; +import { ZodArrayDef } from "./types/array.ts"; +import { ZodBigIntDef } from "./types/bigint.ts"; +import { ZodBooleanDef } from "./types/boolean.ts"; +import { ZodDateDef } from "./types/date.ts"; +import { ZodEnumDef } from "./types/enum.ts"; +import { ZodFunctionDef } from "./types/function.ts"; +import { ZodIntersectionDef } from "./types/intersection.ts"; +import { ZodLazyDef } from "./types/lazy.ts"; +import { ZodLiteralDef } from "./types/literal.ts"; +import { ZodMapDef } from "./types/map.ts"; +import { ZodNativeEnumDef } from "./types/nativeEnum.ts"; +import { ZodNeverDef } from "./types/never.ts"; +import { ZodNullDef } from "./types/null.ts"; +import { ZodNullableDef } from "./types/nullable.ts"; +import { ZodNumberDef } from "./types/number.ts"; +import { ZodObjectDef } from "./types/object.ts"; +import { ZodOptionalDef } from "./types/optional.ts"; +import { ZodPromiseDef } from "./types/promise.ts"; +import { ZodRecordDef } from "./types/record.ts"; +import { ZodStringDef } from "./types/string.ts"; +import { ZodTransformerDef } from "./types/transformer.ts"; +import { ZodTupleDef } from "./types/tuple.ts"; +import { ZodUndefinedDef } from "./types/undefined.ts"; +import { ZodUnionDef } from "./types/union.ts"; +import { ZodUnknownDef } from "./types/unknown.ts"; +import { ZodVoidDef } from "./types/void.ts"; + +export type ZodDef = + | ZodStringDef + | ZodNumberDef + | ZodBigIntDef + | ZodBooleanDef + | ZodDateDef + | ZodUndefinedDef + | ZodNullDef + | ZodAnyDef + | ZodUnknownDef + | ZodNeverDef + | ZodVoidDef + | ZodArrayDef + | ZodObjectDef + | ZodUnionDef + | ZodIntersectionDef + | ZodTupleDef + | ZodRecordDef + | ZodMapDef + | ZodFunctionDef + | ZodLazyDef + | ZodLiteralDef + | ZodEnumDef + | ZodTransformerDef + | ZodNativeEnumDef + | ZodOptionalDef + | ZodNullableDef + | ZodPromiseDef; diff --git a/bundler/tests/.cache/untrusted/0e641f3fabd0df971676b1bd5a13f5e9ae1ea172.ts b/bundler/tests/.cache/untrusted/0e641f3fabd0df971676b1bd5a13f5e9ae1ea172.ts new file mode 100644 index 00000000000..c01bd1f145f --- /dev/null +++ b/bundler/tests/.cache/untrusted/0e641f3fabd0df971676b1bd5a13f5e9ae1ea172.ts @@ -0,0 +1,218 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/ipparser.ts + + +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// JavaScript port of go net/ip/ParseIP +// https://github.com/golang/go/blob/master/src/net/ip.go +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +const IPv4LEN = 4; +const IPv6LEN = 16; +const ASCII0 = 48; +const ASCII9 = 57; +const ASCIIA = 65; +const ASCIIF = 70; +const ASCIIa = 97; +const ASCIIf = 102; +const big = 0xFFFFFF; + +export function ipV4(a: number, b: number, c: number, d: number): Uint8Array { + const ip = new Uint8Array(IPv6LEN); + const prefix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff]; + prefix.forEach((v, idx) => { + ip[idx] = v; + }); + ip[12] = a; + ip[13] = b; + ip[14] = c; + ip[15] = d; + + return ip; +} + +export function isIP(h: string) { + return parseIP(h) !== undefined; +} + +export function parseIP(h: string): (Uint8Array | undefined) { + for (let i = 0; i < h.length; i++) { + switch (h[i]) { + case ".": + return parseIPv4(h); + case ":": + return parseIPv6(h); + } + } + return; +} + +function parseIPv4(s: string): (Uint8Array | undefined) { + const ip = new Uint8Array(IPv4LEN); + for (let i = 0; i < IPv4LEN; i++) { + if (s.length === 0) { + return undefined; + } + if (i > 0) { + if (s[0] !== ".") { + return undefined; + } + s = s.substring(1); + } + const { n, c, ok } = dtoi(s); + if (!ok || n > 0xFF) { + return undefined; + } + s = s.substring(c); + ip[i] = n; + } + return ipV4(ip[0], ip[1], ip[2], ip[3]); +} + +function parseIPv6(s: string): (Uint8Array | undefined) { + const ip = new Uint8Array(IPv6LEN); + let ellipsis = -1; + + if (s.length >= 2 && s[0] === ":" && s[1] === ":") { + ellipsis = 0; + s = s.substring(2); + if (s.length === 0) { + return ip; + } + } + + let i = 0; + while (i < IPv6LEN) { + const { n, c, ok } = xtoi(s); + if (!ok || n > 0xFFFF) { + return undefined; + } + + if (c < s.length && s[c] === ".") { + if (ellipsis < 0 && i != IPv6LEN - IPv4LEN) { + return undefined; + } + if (i + IPv4LEN > IPv6LEN) { + return undefined; + } + const ip4 = parseIPv4(s); + if (ip4 === undefined) { + return undefined; + } + ip[i] = ip4[12]; + ip[i + 1] = ip4[13]; + ip[i + 2] = ip4[14]; + ip[i + 3] = ip4[15]; + s = ""; + i += IPv4LEN; + break; + } + + ip[i] = n >> 8; + ip[i + 1] = n; + i += 2; + + s = s.substring(c); + if (s.length === 0) { + break; + } + + if (s[0] !== ":" || s.length == 1) { + return undefined; + } + + s = s.substring(1); + + if (s[0] === ":") { + if (ellipsis >= 0) { + return undefined; + } + ellipsis = i; + s = s.substring(1); + if (s.length === 0) { + break; + } + } + } + + if (s.length !== 0) { + return undefined; + } + + if (i < IPv6LEN) { + if (ellipsis < 0) { + return undefined; + } + + const n = IPv6LEN - i; + for (let j = i - 1; j >= ellipsis; j--) { + ip[j + n] = ip[j]; + } + for (let j = ellipsis + n - 1; j >= ellipsis; j--) { + ip[j] = 0; + } + } else if (ellipsis >= 0) { + return undefined; + } + return ip; +} + +function dtoi(s: string): { n: number; c: number; ok: boolean } { + let i = 0; + let n = 0; + for ( + i = 0; + i < s.length && ASCII0 <= s.charCodeAt(i) && s.charCodeAt(i) <= ASCII9; + i++ + ) { + n = n * 10 + (s.charCodeAt(i) - ASCII0); + if (n >= big) { + return { n: big, c: i, ok: false }; + } + } + if (i === 0) { + return { n: 0, c: 0, ok: false }; + } + return { n: n, c: i, ok: true }; +} + +function xtoi(s: string): { n: number; c: number; ok: boolean } { + let n = 0; + let i = 0; + for (i = 0; i < s.length; i++) { + if (ASCII0 <= s.charCodeAt(i) && s.charCodeAt(i) <= ASCII9) { + n *= 16; + n += (s.charCodeAt(i) - ASCII0); + } else if (ASCIIa <= s.charCodeAt(i) && s.charCodeAt(i) <= ASCIIf) { + n *= 16; + n += (s.charCodeAt(i) - ASCIIa) + 10; + } else if (ASCIIA <= s.charCodeAt(i) && s.charCodeAt(i) <= ASCIIF) { + n *= 16; + n += (s.charCodeAt(i) - ASCIIA) + 10; + } else { + break; + } + if (n >= big) { + return { n: 0, c: i, ok: false }; + } + } + if (i === 0) { + return { n: 0, c: i, ok: false }; + } + return { n: n, c: i, ok: true }; +} diff --git a/bundler/tests/.cache/untrusted/0f7c1025d0d543650d1126fa957c1d763d771649.ts b/bundler/tests/.cache/untrusted/0f7c1025d0d543650d1126fa957c1d763d771649.ts new file mode 100644 index 00000000000..b25d9908523 --- /dev/null +++ b/bundler/tests/.cache/untrusted/0f7c1025d0d543650d1126fa957c1d763d771649.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/nkeys.ts + + +export * as nkeys from "https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/modules/esm/mod.ts"; diff --git a/bundler/tests/.cache/untrusted/106a306d511b1605d7b0e43c7c52563168fc1bec.ts b/bundler/tests/.cache/untrusted/106a306d511b1605d7b0e43c7c52563168fc1bec.ts new file mode 100644 index 00000000000..e1b49ff3138 --- /dev/null +++ b/bundler/tests/.cache/untrusted/106a306d511b1605d7b0e43c7c52563168fc1bec.ts @@ -0,0 +1,20 @@ +// Loaded from https://raw.githubusercontent.com/lodash/lodash/master/.internal/getTag.js + + +const toString = Object.prototype.toString + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function getTag(value) { + if (value == null) { + return value === undefined ? '[object Undefined]' : '[object Null]' + } + return toString.call(value) +} + +export default getTag diff --git a/bundler/tests/.cache/untrusted/113e1ad4c4e50d91d7299a272016ba2794aa92bf.ts b/bundler/tests/.cache/untrusted/113e1ad4c4e50d91d7299a272016ba2794aa92bf.ts new file mode 100644 index 00000000000..eba138971d3 --- /dev/null +++ b/bundler/tests/.cache/untrusted/113e1ad4c4e50d91d7299a272016ba2794aa92bf.ts @@ -0,0 +1,26 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/luxon.js + + +import DateTime from "./datetime.js"; +import Duration from "./duration.js"; +import Interval from "./interval.js"; +import Info from "./info.js"; +import Zone from "./zone.js"; +import FixedOffsetZone from "./zones/fixedOffsetZone.js"; +import IANAZone from "./zones/IANAZone.js"; +import InvalidZone from "./zones/invalidZone.js"; +import LocalZone from "./zones/localZone.js"; +import Settings from "./settings.js"; + +export { + DateTime, + Duration, + Interval, + Info, + Zone, + FixedOffsetZone, + IANAZone, + InvalidZone, + LocalZone, + Settings +}; diff --git a/bundler/tests/.cache/untrusted/11740d766bccaa7cacf6cf9e2aef2d4a0333ddd5.ts b/bundler/tests/.cache/untrusted/11740d766bccaa7cacf6cf9e2aef2d4a0333ddd5.ts new file mode 100644 index 00000000000..8903cfa7fc6 --- /dev/null +++ b/bundler/tests/.cache/untrusted/11740d766bccaa7cacf6cf9e2aef2d4a0333ddd5.ts @@ -0,0 +1,344 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/query/decoders.ts + + +import { parseArray } from "./array_parser.ts"; +import { + Box, + Circle, + Float8, + Line, + LineSegment, + Path, + Point, + Polygon, + TID, +} from "./types.ts"; + +// Datetime parsing based on: +// https://github.com/bendrucker/postgres-date/blob/master/index.js +// Copyright (c) Ben Drucker (bendrucker.me). MIT License. +const BACKSLASH_BYTE_VALUE = 92; +const BC_RE = /BC$/; +const DATE_RE = /^(\d{1,})-(\d{2})-(\d{2})$/; +const DATETIME_RE = + /^(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?/; +const HEX = 16; +const HEX_PREFIX_REGEX = /^\\x/; +const TIMEZONE_RE = /([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/; + +export function decodeBigint(value: string): BigInt { + return BigInt(value); +} + +export function decodeBigintArray(value: string) { + return parseArray(value, (x) => BigInt(x)); +} + +export function decodeBoolean(value: string): boolean { + return value[0] === "t"; +} + +export function decodeBooleanArray(value: string) { + return parseArray(value, (x) => x[0] === "t"); +} + +export function decodeBox(value: string): Box { + const [a, b] = value.match(/\(.*?\)/g) || []; + + return { + a: decodePoint(a), + b: decodePoint(b), + }; +} + +export function decodeBoxArray(value: string) { + return parseArray(value, decodeBox); +} + +export function decodeBytea(byteaStr: string): Uint8Array { + if (HEX_PREFIX_REGEX.test(byteaStr)) { + return decodeByteaHex(byteaStr); + } else { + return decodeByteaEscape(byteaStr); + } +} + +export function decodeByteaArray(value: string): unknown[] { + return parseArray(value, decodeBytea); +} + +function decodeByteaEscape(byteaStr: string): Uint8Array { + const bytes = []; + let i = 0; + let k = 0; + while (i < byteaStr.length) { + if (byteaStr[i] !== "\\") { + bytes.push(byteaStr.charCodeAt(i)); + ++i; + } else { + if (/[0-7]{3}/.test(byteaStr.substr(i + 1, 3))) { + bytes.push(parseInt(byteaStr.substr(i + 1, 3), 8)); + i += 4; + } else { + let backslashes = 1; + while ( + i + backslashes < byteaStr.length && + byteaStr[i + backslashes] === "\\" + ) { + backslashes++; + } + for (k = 0; k < Math.floor(backslashes / 2); ++k) { + bytes.push(BACKSLASH_BYTE_VALUE); + } + i += Math.floor(backslashes / 2) * 2; + } + } + } + return new Uint8Array(bytes); +} + +function decodeByteaHex(byteaStr: string): Uint8Array { + const bytesStr = byteaStr.slice(2); + const bytes = new Uint8Array(bytesStr.length / 2); + for (let i = 0, j = 0; i < bytesStr.length; i += 2, j++) { + bytes[j] = parseInt(bytesStr[i] + bytesStr[i + 1], HEX); + } + return bytes; +} + +export function decodeCircle(value: string): Circle { + const [point, radius] = value.substring(1, value.length - 1).split( + /,(?![^(]*\))/, + ); + + return { + point: decodePoint(point), + radius: radius as Float8, + }; +} + +export function decodeCircleArray(value: string) { + return parseArray(value, decodeCircle); +} + +export function decodeDate(dateStr: string): Date | number { + // there are special `infinity` and `-infinity` + // cases representing out-of-range dates + if (dateStr === "infinity") { + return Number(Infinity); + } else if (dateStr === "-infinity") { + return Number(-Infinity); + } + + const matches = DATE_RE.exec(dateStr); + + if (!matches) { + throw new Error(`"${dateStr}" could not be parsed to date`); + } + + const year = parseInt(matches[1], 10); + // remember JS dates are 0-based + const month = parseInt(matches[2], 10) - 1; + const day = parseInt(matches[3], 10); + const date = new Date(year, month, day); + // use `setUTCFullYear` because if date is from first + // century `Date`'s compatibility for millenium bug + // would set it as 19XX + date.setUTCFullYear(year); + + return date; +} + +export function decodeDateArray(value: string) { + return parseArray(value, decodeDate); +} + +export function decodeDatetime(dateStr: string): number | Date { + /** + * Postgres uses ISO 8601 style date output by default: + * 1997-12-17 07:37:16-08 + */ + + const matches = DATETIME_RE.exec(dateStr); + + if (!matches) { + return decodeDate(dateStr); + } + + const isBC = BC_RE.test(dateStr); + + const year = parseInt(matches[1], 10) * (isBC ? -1 : 1); + // remember JS dates are 0-based + const month = parseInt(matches[2], 10) - 1; + const day = parseInt(matches[3], 10); + const hour = parseInt(matches[4], 10); + const minute = parseInt(matches[5], 10); + const second = parseInt(matches[6], 10); + // ms are written as .007 + const msMatch = matches[7]; + const ms = msMatch ? 1000 * parseFloat(msMatch) : 0; + + let date: Date; + + const offset = decodeTimezoneOffset(dateStr); + if (offset === null) { + date = new Date(year, month, day, hour, minute, second, ms); + } else { + // This returns miliseconds from 1 January, 1970, 00:00:00, + // adding decoded timezone offset will construct proper date object. + const utc = Date.UTC(year, month, day, hour, minute, second, ms); + date = new Date(utc + offset); + } + + // use `setUTCFullYear` because if date is from first + // century `Date`'s compatibility for millenium bug + // would set it as 19XX + date.setUTCFullYear(year); + return date; +} + +export function decodeDatetimeArray(value: string) { + return parseArray(value, decodeDatetime); +} + +export function decodeInt(value: string): number { + return parseInt(value, 10); +} + +// deno-lint-ignore no-explicit-any +export function decodeIntArray(value: string): any { + if (!value) return null; + return parseArray(value, decodeInt); +} + +export function decodeJson(value: string): unknown { + return JSON.parse(value); +} + +export function decodeJsonArray(value: string): unknown[] { + return parseArray(value, JSON.parse); +} + +export function decodeLine(value: string): Line { + const [a, b, c] = value.substring(1, value.length - 1).split(","); + + return { + a: a as Float8, + b: b as Float8, + c: c as Float8, + }; +} + +export function decodeLineArray(value: string) { + return parseArray(value, decodeLine); +} + +export function decodeLineSegment(value: string): LineSegment { + const [a, b] = value + .substring(1, value.length - 1) + .match(/\(.*?\)/g) || []; + + return { + a: decodePoint(a), + b: decodePoint(b), + }; +} + +export function decodeLineSegmentArray(value: string) { + return parseArray(value, decodeLineSegment); +} + +export function decodePath(value: string): Path { + // Split on commas that are not inside parantheses + // since encapsulated commas are separators for the point coordinates + const points = value.substring(1, value.length - 1).split(/,(?![^(]*\))/); + + return points.map(decodePoint); +} + +export function decodePathArray(value: string) { + return parseArray(value, decodePath); +} + +export function decodePoint(value: string): Point { + const [x, y] = value.substring(1, value.length - 1).split(","); + + if (Number.isNaN(parseFloat(x)) || Number.isNaN(parseFloat(y))) { + throw new Error( + `Invalid point value: "${Number.isNaN(parseFloat(x)) ? x : y}"`, + ); + } + + return { + x: x as Float8, + y: y as Float8, + }; +} + +export function decodePointArray(value: string) { + return parseArray(value, decodePoint); +} + +export function decodePolygon(value: string): Polygon { + return decodePath(value); +} + +export function decodePolygonArray(value: string) { + return parseArray(value, decodePolygon); +} + +export function decodeStringArray(value: string) { + if (!value) return null; + return parseArray(value); +} + +/** + * Decode numerical timezone offset from provided date string. + * + * Matched these kinds: + * - `Z (UTC)` + * - `-05` + * - `+06:30` + * - `+06:30:10` + * + * Returns offset in miliseconds. + */ +function decodeTimezoneOffset(dateStr: string): null | number { + // get rid of date part as TIMEZONE_RE would match '-MM` part + const timeStr = dateStr.split(" ")[1]; + const matches = TIMEZONE_RE.exec(timeStr); + + if (!matches) { + return null; + } + + const type = matches[1]; + + if (type === "Z") { + // Zulu timezone === UTC === 0 + return 0; + } + + // in JS timezone offsets are reversed, ie. timezones + // that are "positive" (+01:00) are represented as negative + // offsets and vice-versa + const sign = type === "-" ? 1 : -1; + + const hours = parseInt(matches[2], 10); + const minutes = parseInt(matches[3] || "0", 10); + const seconds = parseInt(matches[4] || "0", 10); + + const offset = hours * 3600 + minutes * 60 + seconds; + + return sign * offset * 1000; +} + +export function decodeTid(value: string): TID { + const [x, y] = value.substring(1, value.length - 1).split(","); + + return [BigInt(x), BigInt(y)]; +} + +export function decodeTidArray(value: string) { + return parseArray(value, decodeTid); +} diff --git a/bundler/tests/.cache/untrusted/11966db5b707f204e2655160f272fec1c6365342.ts b/bundler/tests/.cache/untrusted/11966db5b707f204e2655160f272fec1c6365342.ts new file mode 100644 index 00000000000..2d6b026e77c --- /dev/null +++ b/bundler/tests/.cache/untrusted/11966db5b707f204e2655160f272fec1c6365342.ts @@ -0,0 +1,57 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/zlib/messages.dew.js + + +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + exports = { + 2: 'need dictionary', + + /* Z_NEED_DICT 2 */ + 1: 'stream end', + + /* Z_STREAM_END 1 */ + 0: '', + + /* Z_OK 0 */ + '-1': 'file error', + + /* Z_ERRNO (-1) */ + '-2': 'stream error', + + /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', + + /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', + + /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', + + /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' + /* Z_VERSION_ERROR (-6) */ + + }; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/12ba289fb703720c2c235a7062bc5794e18b8fb1.ts b/bundler/tests/.cache/untrusted/12ba289fb703720c2c235a7062bc5794e18b8fb1.ts new file mode 100644 index 00000000000..6d594b84267 --- /dev/null +++ b/bundler/tests/.cache/untrusted/12ba289fb703720c2c235a7062bc5794e18b8fb1.ts @@ -0,0 +1,137 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/nuid.ts + + +/* +* Copyright 2016-2021 The NATS Authors +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +"use strict"; + +const digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +const base = 36; +const preLen = 12; +const seqLen = 10; +const maxSeq = 3656158440062976; // base^seqLen == 36^10 +const minInc = 33; +const maxInc = 333; +const totalLen = preLen + seqLen; + +const cryptoObj = initCrypto(); + +function initCrypto() { + let cryptoObj = null; + if (typeof globalThis !== "undefined") { + if ("crypto" in globalThis && globalThis.crypto.getRandomValues) { + cryptoObj = globalThis.crypto; + } + } + if (!cryptoObj) { + // shim it + cryptoObj = { + getRandomValues: function (array: Uint8Array) { + for (let i = 0; i < array.length; i++) { + array[i] = Math.floor(Math.random() * 255); + } + }, + }; + } + return cryptoObj; +} + +/** + * Create and initialize a nuid. + * + * @api private + */ +export class Nuid { + buf: Uint8Array; + seq!: number; + inc!: number; + + constructor() { + this.buf = new Uint8Array(totalLen); + this.init(); + } + + /** + * Initializes a nuid with a crypto random prefix, + * and pseudo-random sequence and increment. + * + * @api private + */ + private init() { + this.setPre(); + this.initSeqAndInc(); + this.fillSeq(); + } + + /** + * Initializes the pseudo randmon sequence number and the increment range. + * + * @api private + */ + private initSeqAndInc() { + this.seq = Math.floor(Math.random() * maxSeq); + this.inc = Math.floor(Math.random() * (maxInc - minInc) + minInc); + } + + /** + * Sets the prefix from crypto random bytes. Converts to base36. + * + * @api private + */ + private setPre() { + const cbuf = new Uint8Array(preLen); + cryptoObj.getRandomValues(cbuf); + for (let i = 0; i < preLen; i++) { + const di = cbuf[i] % base; + this.buf[i] = digits.charCodeAt(di); + } + } + + /** + * Fills the sequence part of the nuid as base36 from this.seq. + * + * @api private + */ + private fillSeq() { + let n = this.seq; + for (let i = totalLen - 1; i >= preLen; i--) { + this.buf[i] = digits.charCodeAt(n % base); + n = Math.floor(n / base); + } + } + + /** + * Returns the next nuid. + * + * @api private + */ + next(): string { + this.seq += this.inc; + if (this.seq > maxSeq) { + this.setPre(); + this.initSeqAndInc(); + } + this.fillSeq(); + // @ts-ignore - Uint8Arrays can be an argument + return String.fromCharCode.apply(String, this.buf); + } + + reset() { + this.init(); + } +} + +export const nuid = new Nuid(); diff --git a/bundler/tests/.cache/untrusted/12e2da4b9419041e1115f75894c9fe453bd518e2.ts b/bundler/tests/.cache/untrusted/12e2da4b9419041e1115f75894c9fe453bd518e2.ts new file mode 100644 index 00000000000..0939318630c --- /dev/null +++ b/bundler/tests/.cache/untrusted/12e2da4b9419041e1115f75894c9fe453bd518e2.ts @@ -0,0 +1,472 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/impl/locale.js + + +import { hasFormatToParts, hasIntl, padStart, roundTo, hasRelative } from "./util.js"; +import * as English from "./english.js"; +import Settings from "../settings.js"; +import DateTime from "../datetime.js"; +import Formatter from "./formatter.js"; + +let intlDTCache = {}; +function getCachedDTF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlDTCache[key]; + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache[key] = dtf; + } + return dtf; +} + +let intlNumCache = {}; +function getCachedINF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let inf = intlNumCache[key]; + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache[key] = inf; + } + return inf; +} + +let intlRelCache = {}; +function getCachedRTF(locString, opts = {}) { + const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options + const key = JSON.stringify([locString, cacheKeyOpts]); + let inf = intlRelCache[key]; + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache[key] = inf; + } + return inf; +} + +let sysLocaleCache = null; +function systemLocale() { + if (sysLocaleCache) { + return sysLocaleCache; + } else if (hasIntl()) { + const computedSys = new Intl.DateTimeFormat().resolvedOptions().locale; + // node sometimes defaults to "und". Override that because that is dumb + sysLocaleCache = !computedSys || computedSys === "und" ? "en-US" : computedSys; + return sysLocaleCache; + } else { + sysLocaleCache = "en-US"; + return sysLocaleCache; + } +} + +function parseLocaleString(localeStr) { + // I really want to avoid writing a BCP 47 parser + // see, e.g. https://github.com/wooorm/bcp-47 + // Instead, we'll do this: + + // a) if the string has no -u extensions, just leave it alone + // b) if it does, use Intl to resolve everything + // c) if Intl fails, try again without the -u + + const uIndex = localeStr.indexOf("-u-"); + if (uIndex === -1) { + return [localeStr]; + } else { + let options; + const smaller = localeStr.substring(0, uIndex); + try { + options = getCachedDTF(localeStr).resolvedOptions(); + } catch (e) { + options = getCachedDTF(smaller).resolvedOptions(); + } + + const { numberingSystem, calendar } = options; + // return the smaller one so that we can append the calendar and numbering overrides to it + return [smaller, numberingSystem, calendar]; + } +} + +function intlConfigString(localeStr, numberingSystem, outputCalendar) { + if (hasIntl()) { + if (outputCalendar || numberingSystem) { + localeStr += "-u"; + + if (outputCalendar) { + localeStr += `-ca-${outputCalendar}`; + } + + if (numberingSystem) { + localeStr += `-nu-${numberingSystem}`; + } + return localeStr; + } else { + return localeStr; + } + } else { + return []; + } +} + +function mapMonths(f) { + const ms = []; + for (let i = 1; i <= 12; i++) { + const dt = DateTime.utc(2016, i, 1); + ms.push(f(dt)); + } + return ms; +} + +function mapWeekdays(f) { + const ms = []; + for (let i = 1; i <= 7; i++) { + const dt = DateTime.utc(2016, 11, 13 + i); + ms.push(f(dt)); + } + return ms; +} + +function listStuff(loc, length, defaultOK, englishFn, intlFn) { + const mode = loc.listingMode(defaultOK); + + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } +} + +function supportsFastNumbers(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return ( + loc.numberingSystem === "latn" || + !loc.locale || + loc.locale.startsWith("en") || + (hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn") + ); + } +} + +/** + * @private + */ + +class PolyNumberFormatter { + constructor(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + + if (!forceSimple && hasIntl()) { + const intlOpts = { useGrouping: false }; + if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF(intl, intlOpts); + } + } + + format(i) { + if (this.inf) { + const fixed = this.floor ? Math.floor(i) : i; + return this.inf.format(fixed); + } else { + // to match the browser's numberformatter defaults + const fixed = this.floor ? Math.floor(i) : roundTo(i, 3); + return padStart(fixed, this.padTo); + } + } +} + +/** + * @private + */ + +class PolyDateFormatter { + constructor(dt, intl, opts) { + this.opts = opts; + this.hasIntl = hasIntl(); + + let z; + if (dt.zone.universal && this.hasIntl) { + // Chromium doesn't support fixed-offset zones like Etc/GMT+8 in its formatter, + // See https://bugs.chromium.org/p/chromium/issues/detail?id=364374. + // So we have to make do. Two cases: + // 1. The format options tell us to show the zone. We can't do that, so the best + // we can do is format the date in UTC. + // 2. The format options don't tell us to show the zone. Then we can adjust them + // the time and tell the formatter to show it to us in UTC, so that the time is right + // and the bad zone doesn't show up. + // We can clean all this up when Chrome fixes this. + z = "UTC"; + if (opts.timeZoneName) { + this.dt = dt; + } else { + this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000); + } + } else if (dt.zone.type === "local") { + this.dt = dt; + } else { + this.dt = dt; + z = dt.zone.name; + } + + if (this.hasIntl) { + const intlOpts = Object.assign({}, this.opts); + if (z) { + intlOpts.timeZone = z; + } + this.dtf = getCachedDTF(intl, intlOpts); + } + } + + format() { + if (this.hasIntl) { + return this.dtf.format(this.dt.toJSDate()); + } else { + const tokenFormat = English.formatString(this.opts), + loc = Locale.create("en-US"); + return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat); + } + } + + formatToParts() { + if (this.hasIntl && hasFormatToParts()) { + return this.dtf.formatToParts(this.dt.toJSDate()); + } else { + // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings + // and IMO it's too weird to have an uncanny valley like that + return []; + } + } + + resolvedOptions() { + if (this.hasIntl) { + return this.dtf.resolvedOptions(); + } else { + return { + locale: "en-US", + numberingSystem: "latn", + outputCalendar: "gregory" + }; + } + } +} + +/** + * @private + */ +class PolyRelFormatter { + constructor(intl, isEnglish, opts) { + this.opts = Object.assign({ style: "long" }, opts); + if (!isEnglish && hasRelative()) { + this.rtf = getCachedRTF(intl, opts); + } + } + + format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + } + + formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + } +} + +/** + * @private + */ + +export default class Locale { + static fromOpts(opts) { + return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); + } + + static create(locale, numberingSystem, outputCalendar, defaultToEN = false) { + const specifiedLocale = locale || Settings.defaultLocale, + // the system locale is useful for human readable strings but annoying for parsing/formatting known formats + localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()), + numberingSystemR = numberingSystem || Settings.defaultNumberingSystem, + outputCalendarR = outputCalendar || Settings.defaultOutputCalendar; + return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); + } + + static resetCache() { + sysLocaleCache = null; + intlDTCache = {}; + intlNumCache = {}; + intlRelCache = {}; + } + + static fromObject({ locale, numberingSystem, outputCalendar } = {}) { + return Locale.create(locale, numberingSystem, outputCalendar); + } + + constructor(locale, numbering, outputCalendar, specifiedLocale) { + const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale); + + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); + + this.weekdaysCache = { format: {}, standalone: {} }; + this.monthsCache = { format: {}, standalone: {} }; + this.meridiemCache = null; + this.eraCache = {}; + + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + + get fastNumbers() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers(this); + } + + return this.fastNumbersCached; + } + + listingMode(defaultOK = true) { + const intl = hasIntl(), + hasFTP = intl && hasFormatToParts(), + isActuallyEn = this.isEnglish(), + hasNoWeirdness = + (this.numberingSystem === null || this.numberingSystem === "latn") && + (this.outputCalendar === null || this.outputCalendar === "gregory"); + + if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) { + return "error"; + } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) { + return "en"; + } else { + return "intl"; + } + } + + clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return Locale.create( + alts.locale || this.specifiedLocale, + alts.numberingSystem || this.numberingSystem, + alts.outputCalendar || this.outputCalendar, + alts.defaultToEN || false + ); + } + } + + redefaultToEN(alts = {}) { + return this.clone(Object.assign({}, alts, { defaultToEN: true })); + } + + redefaultToSystem(alts = {}) { + return this.clone(Object.assign({}, alts, { defaultToEN: false })); + } + + months(length, format = false, defaultOK = true) { + return listStuff(this, length, defaultOK, English.months, () => { + const intl = format ? { month: length, day: "numeric" } : { month: length }, + formatStr = format ? "format" : "standalone"; + if (!this.monthsCache[formatStr][length]) { + this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, "month")); + } + return this.monthsCache[formatStr][length]; + }); + } + + weekdays(length, format = false, defaultOK = true) { + return listStuff(this, length, defaultOK, English.weekdays, () => { + const intl = format + ? { weekday: length, year: "numeric", month: "long", day: "numeric" } + : { weekday: length }, + formatStr = format ? "format" : "standalone"; + if (!this.weekdaysCache[formatStr][length]) { + this.weekdaysCache[formatStr][length] = mapWeekdays(dt => + this.extract(dt, intl, "weekday") + ); + } + return this.weekdaysCache[formatStr][length]; + }); + } + + meridiems(defaultOK = true) { + return listStuff( + this, + undefined, + defaultOK, + () => English.meridiems, + () => { + // In theory there could be aribitrary day periods. We're gonna assume there are exactly two + // for AM and PM. This is probably wrong, but it's makes parsing way easier. + if (!this.meridiemCache) { + const intl = { hour: "numeric", hour12: true }; + this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map( + dt => this.extract(dt, intl, "dayperiod") + ); + } + + return this.meridiemCache; + } + ); + } + + eras(length, defaultOK = true) { + return listStuff(this, length, defaultOK, English.eras, () => { + const intl = { era: length }; + + // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates + // to definitely enumerate them. + if (!this.eraCache[length]) { + this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt => + this.extract(dt, intl, "era") + ); + } + + return this.eraCache[length]; + }); + } + + extract(dt, intlOpts, field) { + const df = this.dtFormatter(dt, intlOpts), + results = df.formatToParts(), + matching = results.find(m => m.type.toLowerCase() === field); + return matching ? matching.value : null; + } + + numberFormatter(opts = {}) { + // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave) + // (in contrast, the rest of the condition is used heavily) + return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); + } + + dtFormatter(dt, intlOpts = {}) { + return new PolyDateFormatter(dt, this.intl, intlOpts); + } + + relFormatter(opts = {}) { + return new PolyRelFormatter(this.intl, this.isEnglish(), opts); + } + + isEnglish() { + return ( + this.locale === "en" || + this.locale.toLowerCase() === "en-us" || + (hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")) + ); + } + + equals(other) { + return ( + this.locale === other.locale && + this.numberingSystem === other.numberingSystem && + this.outputCalendar === other.outputCalendar + ); + } +} diff --git a/bundler/tests/.cache/untrusted/134015516d9f972086858ac38d5477d52d538a84.ts b/bundler/tests/.cache/untrusted/134015516d9f972086858ac38d5477d52d538a84.ts new file mode 100644 index 00000000000..36abb7af889 --- /dev/null +++ b/bundler/tests/.cache/untrusted/134015516d9f972086858ac38d5477d52d538a84.ts @@ -0,0 +1,49 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-7/src/helper.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @ignore + */ +interface SignPair { + publicKey: Uint8Array; + secretKey: Uint8Array; +} +/** + * @ignore + */ +export interface Ed25519Helper { + fromSeed(seed: Uint8Array): SignPair; + sign(data: Uint8Array, key: Uint8Array): Uint8Array; + verify(data: Uint8Array, sig: Uint8Array, pub: Uint8Array): boolean; + randomBytes(len: number): Uint8Array; +} +/** + * @ignore + */ +let helper: Ed25519Helper; +/** + * @ignore + */ +export function setEd25519Helper(lib: Ed25519Helper) { + helper = lib; +} +/** + * @ignore + */ +export function getEd25519Helper() { + return helper; +} diff --git a/bundler/tests/.cache/untrusted/142b2239f926b005f8667efd1c8a857c472e1c67.ts b/bundler/tests/.cache/untrusted/142b2239f926b005f8667efd1c8a857c472e1c67.ts new file mode 100644 index 00000000000..13ca7fa2c0f --- /dev/null +++ b/bundler/tests/.cache/untrusted/142b2239f926b005f8667efd1c8a857c472e1c67.ts @@ -0,0 +1,232 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/utils/strings.dew.js + + +import { dew as _commonDewDew } from "./common.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utils = _commonDewDew(); // Quick check if we can use fast array to bin string conversion + // + // - apply(Array) can fail on Android 2.2 + // - apply(Uint8Array) can fail on iOS 5.1 Safari + // + + + var STR_APPLY_OK = true; + var STR_APPLY_UIA_OK = true; + + try { + String.fromCharCode.apply(null, [0]); + } catch (__) { + STR_APPLY_OK = false; + } + + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (__) { + STR_APPLY_UIA_OK = false; + } // Table with utf8 lengths (calculated by first byte of sequence) + // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, + // because max possible codepoint is 0x10ffff + + + var _utf8len = new utils.Buf8(256); + + for (var q = 0; q < 256; q++) { + _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; + } + + _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start + // convert string to array (typed, when possible) + + exports.string2buf = function (str) { + var buf, + c, + c2, + m_pos, + i, + str_len = str.length, + buf_len = 0; // count binary size + + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + + if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) { + c2 = str.charCodeAt(m_pos + 1); + + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00); + m_pos++; + } + } + + buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; + } // allocate buffer + + + buf = new utils.Buf8(buf_len); // convert + + for (i = 0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + + if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) { + c2 = str.charCodeAt(m_pos + 1); + + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00); + m_pos++; + } + } + + if (c < 0x80) { + /* one byte */ + buf[i++] = c; + } else if (c < 0x800) { + /* two bytes */ + buf[i++] = 0xC0 | c >>> 6; + buf[i++] = 0x80 | c & 0x3f; + } else if (c < 0x10000) { + /* three bytes */ + buf[i++] = 0xE0 | c >>> 12; + buf[i++] = 0x80 | c >>> 6 & 0x3f; + buf[i++] = 0x80 | c & 0x3f; + } else { + /* four bytes */ + buf[i++] = 0xf0 | c >>> 18; + buf[i++] = 0x80 | c >>> 12 & 0x3f; + buf[i++] = 0x80 | c >>> 6 & 0x3f; + buf[i++] = 0x80 | c & 0x3f; + } + } + + return buf; + }; // Helper (used in 2 places) + + + function buf2binstring(buf, len) { + // On Chrome, the arguments in a function call that are allowed is `65534`. + // If the length of the buffer is smaller than that, we can use this optimization, + // otherwise we will take a slower path. + if (len < 65534) { + if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) { + return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len)); + } + } + + var result = ''; + + for (var i = 0; i < len; i++) { + result += String.fromCharCode(buf[i]); + } + + return result; + } // Convert byte array to binary string + + + exports.buf2binstring = function (buf) { + return buf2binstring(buf, buf.length); + }; // Convert binary string (typed, when possible) + + + exports.binstring2buf = function (str) { + var buf = new utils.Buf8(str.length); + + for (var i = 0, len = buf.length; i < len; i++) { + buf[i] = str.charCodeAt(i); + } + + return buf; + }; // convert array to string + + + exports.buf2string = function (buf, max) { + var i, out, c, c_len; + var len = max || buf.length; // Reserve max possible length (2 words per char) + // NB: by unknown reasons, Array is significantly faster for + // String.fromCharCode.apply than Uint16Array. + + var utf16buf = new Array(len * 2); + + for (out = 0, i = 0; i < len;) { + c = buf[i++]; // quick process ascii + + if (c < 0x80) { + utf16buf[out++] = c; + continue; + } + + c_len = _utf8len[c]; // skip 5 & 6 byte codes + + if (c_len > 4) { + utf16buf[out++] = 0xfffd; + i += c_len - 1; + continue; + } // apply mask on first byte + + + c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; // join the rest + + while (c_len > 1 && i < len) { + c = c << 6 | buf[i++] & 0x3f; + c_len--; + } // terminated by end of string? + + + if (c_len > 1) { + utf16buf[out++] = 0xfffd; + continue; + } + + if (c < 0x10000) { + utf16buf[out++] = c; + } else { + c -= 0x10000; + utf16buf[out++] = 0xd800 | c >> 10 & 0x3ff; + utf16buf[out++] = 0xdc00 | c & 0x3ff; + } + } + + return buf2binstring(utf16buf, out); + }; // Calculate max possible position in utf8 buffer, + // that will not break sequence. If that's not possible + // - (very small limits) return max size as is. + // + // buf[] - utf8 bytes array + // max - length limit (mandatory); + + + exports.utf8border = function (buf, max) { + var pos; + max = max || buf.length; + + if (max > buf.length) { + max = buf.length; + } // go back from last position, until start of sequence found + + + pos = max - 1; + + while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { + pos--; + } // Very small and broken sequence, + // return max, because we should return something anyway. + + + if (pos < 0) { + return max; + } // If we came to start of buffer - that means buffer is too small, + // return max too. + + + if (pos === 0) { + return max; + } + + return pos + _utf8len[buf[pos]] > max ? pos : max; + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/147da43907c0f6b94f24dee646a4469387c22bad.ts b/bundler/tests/.cache/untrusted/147da43907c0f6b94f24dee646a4469387c22bad.ts new file mode 100644 index 00000000000..b8bb4c4a7c0 --- /dev/null +++ b/bundler/tests/.cache/untrusted/147da43907c0f6b94f24dee646a4469387c22bad.ts @@ -0,0 +1,157 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/zipObject.dew.js + + +import { dew as _StreamHelperDewDew } from "./stream/StreamHelper.dew.js"; +import { dew as _DataWorkerDewDew } from "./stream/DataWorker.dew.js"; +import { dew as _utf8DewDew } from "./utf8.dew.js"; +import { dew as _compressedObjectDewDew } from "./compressedObject.dew.js"; +import { dew as _GenericWorkerDewDew } from "./stream/GenericWorker.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var StreamHelper = _StreamHelperDewDew(); + + var DataWorker = _DataWorkerDewDew(); + + var utf8 = _utf8DewDew(); + + var CompressedObject = _compressedObjectDewDew(); + + var GenericWorker = _GenericWorkerDewDew(); + /** + * A simple object representing a file in the zip file. + * @constructor + * @param {string} name the name of the file + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data + * @param {Object} options the options of the file + */ + + + var ZipObject = function (name, data, options) { + this.name = name; + this.dir = options.dir; + this.date = options.date; + this.comment = options.comment; + this.unixPermissions = options.unixPermissions; + this.dosPermissions = options.dosPermissions; + this._data = data; + this._dataBinary = options.binary; // keep only the compression + + this.options = { + compression: options.compression, + compressionOptions: options.compressionOptions + }; + }; + + ZipObject.prototype = { + /** + * Create an internal stream for the content of this object. + * @param {String} type the type of each chunk. + * @return StreamHelper the stream. + */ + internalStream: function (type) { + var result = null, + outputType = "string"; + + try { + if (!type) { + throw new Error("No output type specified."); + } + + outputType = type.toLowerCase(); + var askUnicodeString = outputType === "string" || outputType === "text"; + + if (outputType === "binarystring" || outputType === "text") { + outputType = "string"; + } + + result = this._decompressWorker(); + var isUnicodeString = !this._dataBinary; + + if (isUnicodeString && !askUnicodeString) { + result = result.pipe(new utf8.Utf8EncodeWorker()); + } + + if (!isUnicodeString && askUnicodeString) { + result = result.pipe(new utf8.Utf8DecodeWorker()); + } + } catch (e) { + result = new GenericWorker("error"); + result.error(e); + } + + return new StreamHelper(result, outputType, ""); + }, + + /** + * Prepare the content in the asked type. + * @param {String} type the type of the result. + * @param {Function} onUpdate a function to call on each internal update. + * @return Promise the promise of the result. + */ + async: function (type, onUpdate) { + return this.internalStream(type).accumulate(onUpdate); + }, + + /** + * Prepare the content as a nodejs stream. + * @param {String} type the type of each chunk. + * @param {Function} onUpdate a function to call on each internal update. + * @return Stream the stream. + */ + nodeStream: function (type, onUpdate) { + return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate); + }, + + /** + * Return a worker for the compressed content. + * @private + * @param {Object} compression the compression object to use. + * @param {Object} compressionOptions the options to use when compressing. + * @return Worker the worker. + */ + _compressWorker: function (compression, compressionOptions) { + if (this._data instanceof CompressedObject && this._data.compression.magic === compression.magic) { + return this._data.getCompressedWorker(); + } else { + var result = this._decompressWorker(); + + if (!this._dataBinary) { + result = result.pipe(new utf8.Utf8EncodeWorker()); + } + + return CompressedObject.createWorkerFrom(result, compression, compressionOptions); + } + }, + + /** + * Return a worker for the decompressed content. + * @private + * @return Worker the worker. + */ + _decompressWorker: function () { + if (this._data instanceof CompressedObject) { + return this._data.getContentWorker(); + } else if (this._data instanceof GenericWorker) { + return this._data; + } else { + return new DataWorker(this._data); + } + } + }; + var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"]; + + var removedFn = function () { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }; + + for (var i = 0; i < removedMethods.length; i++) { + ZipObject.prototype[removedMethods[i]] = removedFn; + } + + exports = ZipObject; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/16637f5c74200df1d1a9610b4ae6fbe83b2749fb.ts b/bundler/tests/.cache/untrusted/16637f5c74200df1d1a9610b4ae6fbe83b2749fb.ts new file mode 100644 index 00000000000..b3a184e60cf --- /dev/null +++ b/bundler/tests/.cache/untrusted/16637f5c74200df1d1a9610b4ae6fbe83b2749fb.ts @@ -0,0 +1,29 @@ +// Loaded from https://cdn.skypack.dev/-/is-plain-object@v5.0.0-8mrVMp9y5RYdpZYGe1Tt/dist=es2020,mode=imports/optimized/is-plain-object.js + + +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +function isObject(o) { + return Object.prototype.toString.call(o) === "[object Object]"; +} +function isPlainObject(o) { + var ctor, prot; + if (isObject(o) === false) + return false; + ctor = o.constructor; + if (ctor === void 0) + return true; + prot = ctor.prototype; + if (isObject(prot) === false) + return false; + if (prot.hasOwnProperty("isPrototypeOf") === false) { + return false; + } + return true; +} +export {isPlainObject}; +export default null; diff --git a/bundler/tests/.cache/untrusted/170d6d69b2fe9111d507d4c00eb437fc151f4e13.ts b/bundler/tests/.cache/untrusted/170d6d69b2fe9111d507d4c00eb437fc151f4e13.ts new file mode 100644 index 00000000000..2d8cbd05cb0 --- /dev/null +++ b/bundler/tests/.cache/untrusted/170d6d69b2fe9111d507d4c00eb437fc151f4e13.ts @@ -0,0 +1,36 @@ +// Loaded from https://raw.githubusercontent.com/lodash/lodash/master/snakeCase.js + + +import words from './words.js' +import toString from './toString.js' + +/** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @see camelCase, lowerCase, kebabCase, startCase, upperCase, upperFirst + * @example + * + * snakeCase('Foo Bar') + * // => 'foo_bar' + * + * snakeCase('fooBar') + * // => 'foo_bar' + * + * snakeCase('--FOO-BAR--') + * // => 'foo_bar' + * + * snakeCase('foo2bar') + * // => 'foo_2_bar' + */ +const snakeCase = (string) => ( + words(toString(string).replace(/['\u2019]/g, '')).reduce((result, word, index) => ( + result + (index ? '_' : '') + word.toLowerCase() + ), '') +) + +export default snakeCase diff --git a/bundler/tests/.cache/untrusted/175d2db63c2a8d0b904c4ce191066ef9c9fd76e8.ts b/bundler/tests/.cache/untrusted/175d2db63c2a8d0b904c4ce191066ef9c9fd76e8.ts new file mode 100644 index 00000000000..30665d20d1b --- /dev/null +++ b/bundler/tests/.cache/untrusted/175d2db63c2a8d0b904c4ce191066ef9c9fd76e8.ts @@ -0,0 +1,174 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/sqlite3/index.js + + +// SQLite3 +// ------- +import inherits from '../../deps/inherits@2.0.4/inherits.js'; +import _ from '../../deps/lodash@4.17.15/index.js'; +const defaults = _.defaults; +const map = _.map; +import { promisify } from '../../deps/@jspm/core@1.1.0/nodelibs/util.js'; + +import Client from '../../client.js'; + +import QueryCompiler from './query/compiler.js'; +import SchemaCompiler from './schema/compiler.js'; +import ColumnCompiler from './schema/columncompiler.js'; +import TableCompiler from './schema/tablecompiler.js'; +import SQLite3_DDL from './schema/ddl.js'; +import SQLite3_Formatter from './formatter.js'; + +function Client_SQLite3(config) { + Client.call(this, config); + if (config.useNullAsDefault === undefined) { + this.logger.warn( + 'sqlite does not support inserting default values. Set the ' + + '`useNullAsDefault` flag to hide this warning. ' + + '(see docs http://knexjs.org/#Builder-insert).' + ); + } +} + +inherits(Client_SQLite3, Client); + +Object.assign(Client_SQLite3.prototype, { + dialect: 'sqlite3', + + driverName: 'sqlite3', + + _driver() { + return require('sqlite3'); + }, + + schemaCompiler() { + return new SchemaCompiler(this, ...arguments); + }, + + queryCompiler() { + return new QueryCompiler(this, ...arguments); + }, + + columnCompiler() { + return new ColumnCompiler(this, ...arguments); + }, + + tableCompiler() { + return new TableCompiler(this, ...arguments); + }, + + ddl(compiler, pragma, connection) { + return new SQLite3_DDL(this, compiler, pragma, connection); + }, + + wrapIdentifierImpl(value) { + return value !== '*' ? `\`${value.replace(/`/g, '``')}\`` : '*'; + }, + + // Get a raw connection from the database, returning a promise with the connection object. + acquireRawConnection() { + return new Promise((resolve, reject) => { + const db = new this.driver.Database( + this.connectionSettings.filename, + (err) => { + if (err) { + return reject(err); + } + resolve(db); + } + ); + }); + }, + + // Used to explicitly close a connection, called internally by the pool when + // a connection times out or the pool is shutdown. + async destroyRawConnection(connection) { + const close = promisify((cb) => connection.close(cb)); + return close(); + }, + + // Runs the query on the specified connection, providing the bindings and any + // other necessary prep work. + _query(connection, obj) { + const { method } = obj; + let callMethod; + switch (method) { + case 'insert': + case 'update': + case 'counter': + case 'del': + callMethod = 'run'; + break; + default: + callMethod = 'all'; + } + return new Promise(function (resolver, rejecter) { + if (!connection || !connection[callMethod]) { + return rejecter( + new Error(`Error calling ${callMethod} on connection.`) + ); + } + connection[callMethod](obj.sql, obj.bindings, function (err, response) { + if (err) return rejecter(err); + obj.response = response; + + // We need the context here, as it contains + // the "this.lastID" or "this.changes" + obj.context = this; + return resolver(obj); + }); + }); + }, + + _stream(connection, sql, stream) { + const client = this; + return new Promise(function (resolver, rejecter) { + stream.on('error', rejecter); + stream.on('end', resolver); + return client + ._query(connection, sql) + .then((obj) => obj.response) + .then((rows) => rows.forEach((row) => stream.write(row))) + .catch(function (err) { + stream.emit('error', err); + }) + .then(function () { + stream.end(); + }); + }); + }, + + // Ensures the response is returned in the same format as other clients. + processResponse(obj, runner) { + const ctx = obj.context; + let { response } = obj; + if (obj.output) return obj.output.call(runner, response); + switch (obj.method) { + case 'select': + case 'pluck': + case 'first': + if (obj.method === 'pluck') response = map(response, obj.pluck); + return obj.method === 'first' ? response[0] : response; + case 'insert': + return [ctx.lastID]; + case 'del': + case 'update': + case 'counter': + return ctx.changes; + default: + return response; + } + }, + + poolDefaults() { + return defaults( + { min: 1, max: 1 }, + Client.prototype.poolDefaults.call(this) + ); + }, + + formatter() { + return new SQLite3_Formatter(this, ...arguments); + }, +}); + +export default Client_SQLite3; diff --git a/bundler/tests/.cache/untrusted/17b45bf76e1540114c4d09d98eadbc0c53ac8fe5.ts b/bundler/tests/.cache/untrusted/17b45bf76e1540114c4d09d98eadbc0c53ac8fe5.ts new file mode 100644 index 00000000000..b51a54bc098 --- /dev/null +++ b/bundler/tests/.cache/untrusted/17b45bf76e1540114c4d09d98eadbc0c53ac8fe5.ts @@ -0,0 +1,35 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-7/src/mod.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type { + KeyPair, +} from "./nkeys.ts"; +export { + createPair, + createAccount, + createUser, + createOperator, + fromPublic, + fromSeed, + NKeysError, + NKeysErrorCode, +} from "./nkeys.ts"; + +export { + encode, + decode, +} from "./util.ts"; diff --git a/bundler/tests/.cache/untrusted/1978d01125b05890423e00306e689c9eb0cf9fda.ts b/bundler/tests/.cache/untrusted/1978d01125b05890423e00306e689c9eb0cf9fda.ts new file mode 100644 index 00000000000..f411775ddae --- /dev/null +++ b/bundler/tests/.cache/untrusted/1978d01125b05890423e00306e689c9eb0cf9fda.ts @@ -0,0 +1,40 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/lazy.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { input, output, ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; + +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodLazyDef + extends ZodTypeDef { + t: ZodTypes.lazy; + getter: () => T; +} + +export class ZodLazy extends ZodType< + output, + ZodLazyDef, + input +> { + get schema(): T { + return this._def.getter(); + } + + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + toJSON = () => { + throw new Error("Can't JSONify recursive structure"); + }; + + static create = (getter: () => T): ZodLazy => { + return new ZodLazy({ + t: ZodTypes.lazy, + getter: getter, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/198dd6cb0a59550eebb01b996eae14941667c319.ts b/bundler/tests/.cache/untrusted/198dd6cb0a59550eebb01b996eae14941667c319.ts new file mode 100644 index 00000000000..7ad6e418be7 --- /dev/null +++ b/bundler/tests/.cache/untrusted/198dd6cb0a59550eebb01b996eae14941667c319.ts @@ -0,0 +1,253 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/nkeys.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { KP } from "./kp.ts"; +import { PublicKey } from "./public.ts"; +import { Codec } from "./codec.ts"; +import { getEd25519Helper } from "./helper.ts"; + +/** + * @ignore + */ +export function createPair(prefix: Prefix): KeyPair { + const rawSeed = getEd25519Helper().randomBytes(32); + let str = Codec.encodeSeed(prefix, new Uint8Array(rawSeed)); + return new KP(str); +} + +/** + * Creates a KeyPair with an operator prefix + * @returns {KeyPair} Returns the created KeyPair. + */ +export function createOperator(): KeyPair { + return createPair(Prefix.Operator); +} + +/** + * Creates a KeyPair with an account prefix + * @returns {KeyPair} Returns the created KeyPair. + */ +export function createAccount(): KeyPair { + return createPair(Prefix.Account); +} + +/** + * Creates a KeyPair with an user prefix + * @returns {KeyPair} Returns the created KeyPair. + */ +export function createUser(): KeyPair { + return createPair(Prefix.User); +} + +/** + * @ignore + */ +export function createCluster(): KeyPair { + return createPair(Prefix.Cluster); +} + +/** + * @ignore + */ +export function createServer(): KeyPair { + return createPair(Prefix.Server); +} + +/** + * Creates a KeyPair from a specified public key + * @param {string} Public key in string format + * @returns {KeyPair} Returns the created KeyPair. + * @see KeyPair#getPublicKey + */ +export function fromPublic(src: string): KeyPair { + const ba = new TextEncoder().encode(src); + const raw = Codec._decode(ba); + const prefix = Prefixes.parsePrefix(raw[0]); + if (Prefixes.isValidPublicPrefix(prefix)) { + return new PublicKey(ba); + } + throw new NKeysError(NKeysErrorCode.InvalidPublicKey); +} + +/** + * Creates a KeyPair from a specified seed. + * @param {Uint8Array} The seed key in Uint8Array + * @returns {KeyPair} Returns the created KeyPair. + * @see KeyPair#getSeed + */ +export function fromSeed(src: Uint8Array): KeyPair { + Codec.decodeSeed(src); + // if we are here it decoded + return new KP(src); +} + +export interface KeyPair { + /** + * Returns the public key associated with the KeyPair + * @returns {string} + * @throws NKeysError + */ + getPublicKey(): string; + + /** + * Returns the private key associated with the KeyPair + * @returns Uint8Array + * @throws NKeysError + */ + getPrivateKey(): Uint8Array; + + /** + * Returns the PrivateKey's seed. + * @returns Uint8Array + * @throws NKeysError + */ + getSeed(): Uint8Array; + + /** + * Returns the digital signature of signing the input with the + * the KeyPair's private key. + * @param {Uint8Array} input + * @returns Uint8Array + * @throws NKeysError + */ + sign(input: Uint8Array): Uint8Array; + + /** + * Returns true if the signature can be verified with the KeyPair + * @param {Uint8Array} input + * @param {Uint8Array} sig + * @returns {boolean} + * @throws NKeysError + */ + verify(input: Uint8Array, sig: Uint8Array): boolean; + + /** + * Clears the secret stored in the keypair. After clearing + * a keypair cannot be used or recovered. + */ + clear(): void; +} + +/** + * @ignore + */ +export enum Prefix { + //Seed is the version byte used for encoded NATS Seeds + Seed = 18 << 3, // Base32-encodes to 'S...' + + //PrefixBytePrivate is the version byte used for encoded NATS Private keys + Private = 15 << 3, // Base32-encodes to 'P...' + + //PrefixByteOperator is the version byte used for encoded NATS Operators + Operator = 14 << 3, // Base32-encodes to 'O...' + + //PrefixByteServer is the version byte used for encoded NATS Servers + Server = 13 << 3, // Base32-encodes to 'N...' + + //PrefixByteCluster is the version byte used for encoded NATS Clusters + Cluster = 2 << 3, // Base32-encodes to 'C...' + + //PrefixByteAccount is the version byte used for encoded NATS Accounts + Account = 0, // Base32-encodes to 'A...' + + //PrefixByteUser is the version byte used for encoded NATS Users + User = 20 << 3, // Base32-encodes to 'U...' +} + +/** + * @private + */ +export class Prefixes { + static isValidPublicPrefix(prefix: Prefix): boolean { + return prefix == Prefix.Server || + prefix == Prefix.Operator || + prefix == Prefix.Cluster || + prefix == Prefix.Account || + prefix == Prefix.User; + } + + static startsWithValidPrefix(s: string) { + let c = s[0]; + return c == "S" || c == "P" || c == "O" || c == "N" || c == "C" || + c == "A" || c == "U"; + } + + static isValidPrefix(prefix: Prefix): boolean { + let v = this.parsePrefix(prefix); + return v != -1; + } + + static parsePrefix(v: number): Prefix { + switch (v) { + case Prefix.Seed: + return Prefix.Seed; + case Prefix.Private: + return Prefix.Private; + case Prefix.Operator: + return Prefix.Operator; + case Prefix.Server: + return Prefix.Server; + case Prefix.Cluster: + return Prefix.Cluster; + case Prefix.Account: + return Prefix.Account; + case Prefix.User: + return Prefix.User; + default: + return -1; + } + } +} + +/** + * Possible error codes on exceptions thrown by the library. + */ +export enum NKeysErrorCode { + InvalidPrefixByte = "nkeys: invalid prefix byte", + InvalidKey = "nkeys: invalid key", + InvalidPublicKey = "nkeys: invalid public key", + InvalidSeedLen = "nkeys: invalid seed length", + InvalidSeed = "nkeys: invalid seed", + InvalidEncoding = "nkeys: invalid encoded key", + InvalidSignature = "nkeys: signature verification failed", + CannotSign = "nkeys: cannot sign, no private key available", + PublicKeyOnly = "nkeys: no seed or private key available", + InvalidChecksum = "nkeys: invalid checksum", + SerializationError = "nkeys: serialization error", + ApiError = "nkeys: api error", + ClearedPair = "nkeys: pair is cleared", +} + +export class NKeysError extends Error { + name: string; + code: string; + chainedError?: Error; + + /** + * @param {NKeysErrorCode} code + * @param {Error} [chainedError] + * @constructor + * + * @api private + */ + constructor(code: NKeysErrorCode, chainedError?: Error) { + super(code); + this.name = "NKeysError"; + this.code = code; + this.chainedError = chainedError; + } +} diff --git a/bundler/tests/.cache/untrusted/19ab3eea15211f07b82720d7ad0f087bc94dc709.ts b/bundler/tests/.cache/untrusted/19ab3eea15211f07b82720d7ad0f087bc94dc709.ts new file mode 100644 index 00000000000..98b43f469fb --- /dev/null +++ b/bundler/tests/.cache/untrusted/19ab3eea15211f07b82720d7ad0f087bc94dc709.ts @@ -0,0 +1,56 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/zones/invalidZone.js + + +import Zone from "../zone.js"; + +/** + * A zone that failed to parse. You should never need to instantiate this. + * @implements {Zone} + */ +export default class InvalidZone extends Zone { + constructor(zoneName) { + super(); + /** @private */ + this.zoneName = zoneName; + } + + /** @override **/ + get type() { + return "invalid"; + } + + /** @override **/ + get name() { + return this.zoneName; + } + + /** @override **/ + get universal() { + return false; + } + + /** @override **/ + offsetName() { + return null; + } + + /** @override **/ + formatOffset() { + return ""; + } + + /** @override **/ + offset() { + return NaN; + } + + /** @override **/ + equals() { + return false; + } + + /** @override **/ + get isValid() { + return false; + } +} diff --git a/bundler/tests/.cache/untrusted/1c58971a21fd1158df4e5f738d1700405298ee3e.ts b/bundler/tests/.cache/untrusted/1c58971a21fd1158df4e5f738d1700405298ee3e.ts new file mode 100644 index 00000000000..717bcbd421b --- /dev/null +++ b/bundler/tests/.cache/untrusted/1c58971a21fd1158df4e5f738d1700405298ee3e.ts @@ -0,0 +1,50 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/uuid/_common.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export function bytesToUuid(bytes: number[] | Uint8Array): string { + const bits: string[] = [...bytes].map((bit): string => { + const s: string = bit.toString(16); + return bit < 0x10 ? "0" + s : s; + }); + return [ + ...bits.slice(0, 4), + "-", + ...bits.slice(4, 6), + "-", + ...bits.slice(6, 8), + "-", + ...bits.slice(8, 10), + "-", + ...bits.slice(10, 16), + ].join(""); +} + +export function uuidToBytes(uuid: string): number[] { + const bytes: number[] = []; + + uuid.replace(/[a-fA-F0-9]{2}/g, (hex: string): string => { + bytes.push(parseInt(hex, 16)); + return ""; + }); + + return bytes; +} + +export function stringToBytes(str: string): number[] { + str = unescape(encodeURIComponent(str)); + const bytes = new Array(str.length); + for (let i = 0; i < str.length; i++) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} + +export function createBuffer(content: number[]): ArrayBuffer { + const arrayBuffer = new ArrayBuffer(content.length); + const uint8Array = new Uint8Array(arrayBuffer); + for (let i = 0; i < content.length; i++) { + uint8Array[i] = content[i]; + } + return arrayBuffer; +} diff --git a/bundler/tests/.cache/untrusted/1c807e0060c40efc5fc37fe64857cfa3984fb58a.ts b/bundler/tests/.cache/untrusted/1c807e0060c40efc5fc37fe64857cfa3984fb58a.ts new file mode 100644 index 00000000000..f7abfa3ae69 --- /dev/null +++ b/bundler/tests/.cache/untrusted/1c807e0060c40efc5fc37fe64857cfa3984fb58a.ts @@ -0,0 +1,377 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/hash/sha1.ts + + +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ + +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = Uint32Array.of(-2147483648, 8388608, 32768, 128); +const SHIFT = Uint32Array.of(24, 16, 8, 0); + +const blocks = new Uint32Array(80); + +export class Sha1 { + #blocks: Uint32Array; + #block: number; + #start: number; + #bytes: number; + #hBytes: number; + #finalized: boolean; + #hashed: boolean; + + #h0 = 0x67452301; + #h1 = 0xefcdab89; + #h2 = 0x98badcfe; + #h3 = 0x10325476; + #h4 = 0xc3d2e1f0; + #lastByteIndex = 0; + + constructor(sharedMemory = false) { + if (sharedMemory) { + this.#blocks = blocks.fill(0, 0, 17); + } else { + this.#blocks = new Uint32Array(80); + } + + this.#h0 = 0x67452301; + this.#h1 = 0xefcdab89; + this.#h2 = 0x98badcfe; + this.#h3 = 0x10325476; + this.#h4 = 0xc3d2e1f0; + + this.#block = this.#start = this.#bytes = this.#hBytes = 0; + this.#finalized = this.#hashed = false; + } + + update(data: string | ArrayBuffer | ArrayBufferView): Sha1 { + if (this.#finalized) { + return this; + } + let notString = true; + let message; + if (data instanceof ArrayBuffer) { + message = new Uint8Array(data); + } else if (ArrayBuffer.isView(data)) { + message = new Uint8Array(data.buffer); + } else { + notString = false; + message = String(data); + } + let code; + let index = 0; + let i; + const start = this.#start; + const length = message.length || 0; + const blocks = this.#blocks; + + while (index < length) { + if (this.#hashed) { + this.#hashed = false; + blocks[0] = this.#block; + blocks.fill(0, 1, 17); + } + + if (notString) { + for (i = start; index < length && i < 64; ++index) { + blocks[i >> 2] |= (message[index] as number) << SHIFT[i++ & 3]; + } + } else { + for (i = start; index < length && i < 64; ++index) { + code = (message as string).charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = + 0x10000 + + (((code & 0x3ff) << 10) | + ((message as string).charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + + this.#lastByteIndex = i; + this.#bytes += i - start; + if (i >= 64) { + this.#block = blocks[16]; + this.#start = i - 64; + this.hash(); + this.#hashed = true; + } else { + this.#start = i; + } + } + if (this.#bytes > 4294967295) { + this.#hBytes += (this.#bytes / 4294967296) >>> 0; + this.#bytes = this.#bytes >>> 0; + } + return this; + } + + finalize(): void { + if (this.#finalized) { + return; + } + this.#finalized = true; + const blocks = this.#blocks; + const i = this.#lastByteIndex; + blocks[16] = this.#block; + blocks[i >> 2] |= EXTRA[i & 3]; + this.#block = blocks[16]; + if (i >= 56) { + if (!this.#hashed) { + this.hash(); + } + blocks[0] = this.#block; + blocks.fill(0, 1, 17); + } + blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29); + blocks[15] = this.#bytes << 3; + this.hash(); + } + + hash(): void { + let a = this.#h0; + let b = this.#h1; + let c = this.#h2; + let d = this.#h3; + let e = this.#h4; + let f, j, t; + const blocks = this.#blocks; + + for (j = 16; j < 80; ++j) { + t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16]; + blocks[j] = (t << 1) | (t >>> 31); + } + + for (j = 0; j < 20; j += 5) { + f = (b & c) | (~b & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1518500249 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (~a & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1518500249 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (~e & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1518500249 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (~d & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1518500249 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (~c & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1518500249 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 40; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e + 1859775393 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d + 1859775393 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c + 1859775393 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b + 1859775393 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a + 1859775393 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 60; j += 5) { + f = (b & c) | (b & d) | (c & d); + t = (a << 5) | (a >>> 27); + e = (t + f + e - 1894007588 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = (a & b) | (a & c) | (b & c); + t = (e << 5) | (e >>> 27); + d = (t + f + d - 1894007588 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = (e & a) | (e & b) | (a & b); + t = (d << 5) | (d >>> 27); + c = (t + f + c - 1894007588 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = (d & e) | (d & a) | (e & a); + t = (c << 5) | (c >>> 27); + b = (t + f + b - 1894007588 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = (c & d) | (c & e) | (d & e); + t = (b << 5) | (b >>> 27); + a = (t + f + a - 1894007588 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + for (; j < 80; j += 5) { + f = b ^ c ^ d; + t = (a << 5) | (a >>> 27); + e = (t + f + e - 899497514 + blocks[j]) >>> 0; + b = (b << 30) | (b >>> 2); + + f = a ^ b ^ c; + t = (e << 5) | (e >>> 27); + d = (t + f + d - 899497514 + blocks[j + 1]) >>> 0; + a = (a << 30) | (a >>> 2); + + f = e ^ a ^ b; + t = (d << 5) | (d >>> 27); + c = (t + f + c - 899497514 + blocks[j + 2]) >>> 0; + e = (e << 30) | (e >>> 2); + + f = d ^ e ^ a; + t = (c << 5) | (c >>> 27); + b = (t + f + b - 899497514 + blocks[j + 3]) >>> 0; + d = (d << 30) | (d >>> 2); + + f = c ^ d ^ e; + t = (b << 5) | (b >>> 27); + a = (t + f + a - 899497514 + blocks[j + 4]) >>> 0; + c = (c << 30) | (c >>> 2); + } + + this.#h0 = (this.#h0 + a) >>> 0; + this.#h1 = (this.#h1 + b) >>> 0; + this.#h2 = (this.#h2 + c) >>> 0; + this.#h3 = (this.#h3 + d) >>> 0; + this.#h4 = (this.#h4 + e) >>> 0; + } + + hex(): string { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return ( + HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h4 >> 28) & 0x0f] + + HEX_CHARS[(h4 >> 24) & 0x0f] + + HEX_CHARS[(h4 >> 20) & 0x0f] + + HEX_CHARS[(h4 >> 16) & 0x0f] + + HEX_CHARS[(h4 >> 12) & 0x0f] + + HEX_CHARS[(h4 >> 8) & 0x0f] + + HEX_CHARS[(h4 >> 4) & 0x0f] + + HEX_CHARS[h4 & 0x0f] + ); + } + + toString(): string { + return this.hex(); + } + + digest(): number[] { + this.finalize(); + + const h0 = this.#h0; + const h1 = this.#h1; + const h2 = this.#h2; + const h3 = this.#h3; + const h4 = this.#h4; + + return [ + (h0 >> 24) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 8) & 0xff, + h0 & 0xff, + (h1 >> 24) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 8) & 0xff, + h1 & 0xff, + (h2 >> 24) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 8) & 0xff, + h2 & 0xff, + (h3 >> 24) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 8) & 0xff, + h3 & 0xff, + (h4 >> 24) & 0xff, + (h4 >> 16) & 0xff, + (h4 >> 8) & 0xff, + h4 & 0xff, + ]; + } + + array(): number[] { + return this.digest(); + } + + arrayBuffer(): ArrayBuffer { + this.finalize(); + return Uint32Array.of(this.#h0, this.#h1, this.#h2, this.#h3, this.#h4) + .buffer; + } +} diff --git a/bundler/tests/.cache/untrusted/1d374f59907afdca696482cad7600ffef57418fd.ts b/bundler/tests/.cache/untrusted/1d374f59907afdca696482cad7600ffef57418fd.ts new file mode 100644 index 00000000000..a9b49c8f21e --- /dev/null +++ b/bundler/tests/.cache/untrusted/1d374f59907afdca696482cad7600ffef57418fd.ts @@ -0,0 +1,26 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/nacl.ts + + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ +// +// Ported to TypeScript in 2018 by K. +// + +export * from './array.ts'; +export * from './validate.ts'; +export * from './convert.ts'; +export * from './verify.ts'; +export * from './random.ts'; +export * from './scalarmult.ts'; +export * from './secretbox.ts'; +export * from './box.ts'; +export * from './sign.ts'; +export * from './hash.ts'; +export * from './auth.ts'; +export * from './blake2s.ts'; +export * from './blake2b.ts'; +export * from './sealedbox.ts'; diff --git a/bundler/tests/.cache/untrusted/1db0504f968b651bfd0ac4c66d1cef23af711459.ts b/bundler/tests/.cache/untrusted/1db0504f968b651bfd0ac4c66d1cef23af711459.ts new file mode 100644 index 00000000000..e077f49eb9a --- /dev/null +++ b/bundler/tests/.cache/untrusted/1db0504f968b651bfd0ac4c66d1cef23af711459.ts @@ -0,0 +1,751 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/parser.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Dispatcher } from "./queued_iterator.ts"; +import { DenoBuffer } from "./denobuffer.ts"; +import { TD } from "./encoders.ts"; + +export enum Kind { + OK, + ERR, + MSG, + INFO, + PING, + PONG, +} + +export interface ParserEvent { + kind: Kind; + msg?: MsgArg; + data?: Uint8Array; +} + +export function describe(e: ParserEvent): string { + let ks: string; + let data = ""; + + switch (e.kind) { + case Kind.MSG: + ks = "MSG"; + break; + case Kind.OK: + ks = "OK"; + break; + case Kind.ERR: + ks = "ERR"; + data = TD.decode(e.data); + break; + case Kind.PING: + ks = "PING"; + break; + case Kind.PONG: + ks = "PONG"; + break; + case Kind.INFO: + ks = "INFO"; + data = TD.decode(e.data); + } + return `${ks}: ${data}`; +} + +export interface MsgArg { + subject: Uint8Array; + reply?: Uint8Array; + sid: number; + hdr: number; + size: number; +} + +function newMsgArg(): MsgArg { + const ma = {} as MsgArg; + ma.sid = -1; + ma.hdr = -1; + ma.size = -1; + + return ma; +} + +const ASCII_0 = 48; +const ASCII_9 = 57; + +// This is an almost verbatim port of the Go NATS parser +// https://github.com/nats-io/nats.go/blob/master/parser.go +export class Parser { + dispatcher: Dispatcher; + state = State.OP_START; + as = 0; + drop = 0; + hdr = 0; + ma!: MsgArg; + argBuf?: DenoBuffer; + msgBuf?: DenoBuffer; + + constructor(dispatcher: Dispatcher) { + this.dispatcher = dispatcher; + this.state = State.OP_START; + } + + parse(buf: Uint8Array): void { + // @ts-ignore + if (typeof module !== "undefined" && module.exports) { + // Uint8Array.slice() copies in node it doesn't and it is faster:wq + buf.subarray = buf.slice; + } + + let i: number; + for (i = 0; i < buf.length; i++) { + const b = buf[i]; + switch (this.state) { + case State.OP_START: + switch (b) { + case cc.M: + case cc.m: + this.state = State.OP_M; + this.hdr = -1; + this.ma = newMsgArg(); + break; + case cc.H: + case cc.h: + this.state = State.OP_H; + this.hdr = 0; + this.ma = newMsgArg(); + break; + case cc.P: + case cc.p: + this.state = State.OP_P; + break; + case cc.PLUS: + this.state = State.OP_PLUS; + break; + case cc.MINUS: + this.state = State.OP_MINUS; + break; + case cc.I: + case cc.i: + this.state = State.OP_I; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_H: + switch (b) { + case cc.M: + case cc.m: + this.state = State.OP_M; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_M: + switch (b) { + case cc.S: + case cc.s: + this.state = State.OP_MS; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MS: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_MSG; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MSG: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_MSG_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MSG_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.MSG_ARG; + this.as = i; + } + break; + case State.MSG_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: + const arg: Uint8Array = this.argBuf + ? this.argBuf.bytes() + : buf.subarray(this.as, i - this.drop); + this.processMsgArgs(arg); + this.drop = 0; + this.as = i + 1; + this.state = State.MSG_PAYLOAD; + + // jump ahead with the index. If this overruns + // what is left we fall out and process a split buffer. + i = this.as + this.ma.size - 1; + break; + default: + if (this.argBuf) { + this.argBuf.writeByte(b); + } + } + break; + case State.MSG_PAYLOAD: + if (this.msgBuf) { + if (this.msgBuf.length >= this.ma.size) { + const data = this.msgBuf.bytes({ copy: false }); + this.dispatcher.push( + { kind: Kind.MSG, msg: this.ma, data: data }, + ); + this.argBuf = undefined; + this.msgBuf = undefined; + this.state = State.MSG_END; + } else { + let toCopy = this.ma.size - this.msgBuf.length; + const avail = buf.length - i; + + if (avail < toCopy) { + toCopy = avail; + } + + if (toCopy > 0) { + this.msgBuf.write(buf.subarray(i, i + toCopy)); + i = (i + toCopy) - 1; + } else { + this.msgBuf.writeByte(b); + } + } + } else if (i - this.as >= this.ma.size) { + this.dispatcher.push( + { kind: Kind.MSG, msg: this.ma, data: buf.subarray(this.as, i) }, + ); + this.argBuf = undefined; + this.msgBuf = undefined; + this.state = State.MSG_END; + } + break; + case State.MSG_END: + switch (b) { + case cc.NL: + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + default: + continue; + } + break; + case State.OP_PLUS: + switch (b) { + case cc.O: + case cc.o: + this.state = State.OP_PLUS_O; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PLUS_O: + switch (b) { + case cc.K: + case cc.k: + this.state = State.OP_PLUS_OK; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PLUS_OK: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.OK }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_MINUS: + switch (b) { + case cc.E: + case cc.e: + this.state = State.OP_MINUS_E; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_E: + switch (b) { + case cc.R: + case cc.r: + this.state = State.OP_MINUS_ER; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ER: + switch (b) { + case cc.R: + case cc.r: + this.state = State.OP_MINUS_ERR; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ERR: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_MINUS_ERR_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ERR_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.MINUS_ERR_ARG; + this.as = i; + } + break; + case State.MINUS_ERR_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: + let arg: Uint8Array; + if (this.argBuf) { + arg = this.argBuf.bytes(); + this.argBuf = undefined; + } else { + arg = buf.subarray(this.as, i - this.drop); + } + this.dispatcher.push({ kind: Kind.ERR, data: arg }); + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + default: + if (this.argBuf) { + this.argBuf.write(Uint8Array.of(b)); + } + } + break; + case State.OP_P: + switch (b) { + case cc.I: + case cc.i: + this.state = State.OP_PI; + break; + case cc.O: + case cc.o: + this.state = State.OP_PO; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PO: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_PON; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PON: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_PONG; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PONG: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.PONG }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_PI: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_PIN; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PIN: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_PING; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PING: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.PING }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_I: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_IN; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_IN: + switch (b) { + case cc.F: + case cc.f: + this.state = State.OP_INF; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INF: + switch (b) { + case cc.O: + case cc.o: + this.state = State.OP_INFO; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INFO: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_INFO_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INFO_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.INFO_ARG; + this.as = i; + } + break; + case State.INFO_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: + let arg: Uint8Array; + if (this.argBuf) { + arg = this.argBuf.bytes(); + this.argBuf = undefined; + } else { + arg = buf.subarray(this.as, i - this.drop); + } + this.dispatcher.push({ kind: Kind.INFO, data: arg }); + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + default: + if (this.argBuf) { + this.argBuf.writeByte(b); + } + } + break; + default: + throw this.fail(buf.subarray(i)); + } + } + + if ( + (this.state === State.MSG_ARG || this.state === State.MINUS_ERR_ARG || + this.state === State.INFO_ARG) && !this.argBuf + ) { + this.argBuf = new DenoBuffer(buf.subarray(this.as, i - this.drop)); + } + + if (this.state === State.MSG_PAYLOAD && !this.msgBuf) { + if (!this.argBuf) { + this.cloneMsgArg(); + } + this.msgBuf = new DenoBuffer(buf.subarray(this.as)); + } + } + + cloneMsgArg() { + const s = this.ma.subject.length; + const r = this.ma.reply ? this.ma.reply.length : 0; + const buf = new Uint8Array(s + r); + buf.set(this.ma.subject); + if (this.ma.reply) { + buf.set(this.ma.reply, s); + } + this.argBuf = new DenoBuffer(buf); + this.ma.subject = buf.subarray(0, s); + if (this.ma.reply) { + this.ma.reply = buf.subarray(r); + } + } + + processMsgArgs(arg: Uint8Array): void { + if (this.hdr >= 0) { + return this.processHeaderMsgArgs(arg); + } + + const args: Uint8Array[] = []; + let start = -1; + for (let i = 0; i < arg.length; i++) { + const b = arg[i]; + switch (b) { + case cc.SPACE: + case cc.TAB: + case cc.CR: + case cc.NL: + if (start >= 0) { + args.push(arg.subarray(start, i)); + start = -1; + } + break; + default: + if (start < 0) { + start = i; + } + } + } + if (start >= 0) { + args.push(arg.subarray(start)); + } + + switch (args.length) { + case 3: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = undefined; + this.ma.size = this.protoParseInt(args[2]); + break; + case 4: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = args[2]; + this.ma.size = this.protoParseInt(args[3]); + break; + default: + throw this.fail(arg, "processMsgArgs Parse Error"); + } + + if (this.ma.sid < 0) { + throw this.fail(arg, "processMsgArgs Bad or Missing Sid Error"); + } + if (this.ma.size < 0) { + throw this.fail(arg, "processMsgArgs Bad or Missing Size Error"); + } + } + + fail(data: Uint8Array, label = ""): Error { + if (!label) { + label = `parse error [${this.state}]`; + } else { + label = `${label} [${this.state}]`; + } + + return new Error(`${label}: ${TD.decode(data)}`); + } + + processHeaderMsgArgs(arg: Uint8Array): void { + const args: Uint8Array[] = []; + let start = -1; + for (let i = 0; i < arg.length; i++) { + const b = arg[i]; + switch (b) { + case cc.SPACE: + case cc.TAB: + case cc.CR: + case cc.NL: + if (start >= 0) { + args.push(arg.subarray(start, i)); + start = -1; + } + break; + default: + if (start < 0) { + start = i; + } + } + } + if (start >= 0) { + args.push(arg.subarray(start)); + } + + switch (args.length) { + case 4: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = undefined; + this.ma.hdr = this.protoParseInt(args[2]); + this.ma.size = this.protoParseInt(args[3]); + break; + case 5: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = args[2]; + this.ma.hdr = this.protoParseInt(args[3]); + this.ma.size = this.protoParseInt(args[4]); + break; + default: + throw this.fail(arg, "processHeaderMsgArgs Parse Error"); + } + + if (this.ma.sid < 0) { + throw this.fail(arg, "processHeaderMsgArgs Bad or Missing Sid Error"); + } + if (this.ma.hdr < 0 || this.ma.hdr > this.ma.size) { + throw this.fail( + arg, + "processHeaderMsgArgs Bad or Missing Header Size Error", + ); + } + if (this.ma.size < 0) { + throw this.fail(arg, "processHeaderMsgArgs Bad or Missing Size Error"); + } + } + + protoParseInt(a: Uint8Array): number { + if (a.length === 0) { + return -1; + } + let n = 0; + for (let i = 0; i < a.length; i++) { + if (a[i] < ASCII_0 || a[i] > ASCII_9) { + return -1; + } + n = n * 10 + (a[i] - ASCII_0); + } + return n; + } +} + +export enum State { + OP_START = 0, + OP_PLUS, + OP_PLUS_O, + OP_PLUS_OK, + OP_MINUS, + OP_MINUS_E, + OP_MINUS_ER, + OP_MINUS_ERR, + OP_MINUS_ERR_SPC, + MINUS_ERR_ARG, + OP_M, + OP_MS, + OP_MSG, + OP_MSG_SPC, + MSG_ARG, + MSG_PAYLOAD, + MSG_END, + OP_H, + OP_P, + OP_PI, + OP_PIN, + OP_PING, + OP_PO, + OP_PON, + OP_PONG, + OP_I, + OP_IN, + OP_INF, + OP_INFO, + OP_INFO_SPC, + INFO_ARG, +} + +enum cc { + CR = "\r".charCodeAt(0), + E = "E".charCodeAt(0), + e = "e".charCodeAt(0), + F = "F".charCodeAt(0), + f = "f".charCodeAt(0), + G = "G".charCodeAt(0), + g = "g".charCodeAt(0), + H = "H".charCodeAt(0), + h = "h".charCodeAt(0), + I = "I".charCodeAt(0), + i = "i".charCodeAt(0), + K = "K".charCodeAt(0), + k = "k".charCodeAt(0), + M = "M".charCodeAt(0), + m = "m".charCodeAt(0), + MINUS = "-".charCodeAt(0), + N = "N".charCodeAt(0), + n = "n".charCodeAt(0), + NL = "\n".charCodeAt(0), + O = "O".charCodeAt(0), + o = "o".charCodeAt(0), + P = "P".charCodeAt(0), + p = "p".charCodeAt(0), + PLUS = "+".charCodeAt(0), + R = "R".charCodeAt(0), + r = "r".charCodeAt(0), + S = "S".charCodeAt(0), + s = "s".charCodeAt(0), + SPACE = " ".charCodeAt(0), + TAB = "\t".charCodeAt(0), +} diff --git a/bundler/tests/.cache/untrusted/1dee1ddf1a366439bf2d8063cd39c3e88409d113.ts b/bundler/tests/.cache/untrusted/1dee1ddf1a366439bf2d8063cd39c3e88409d113.ts new file mode 100644 index 00000000000..8beff7e19f5 --- /dev/null +++ b/bundler/tests/.cache/untrusted/1dee1ddf1a366439bf2d8063cd39c3e88409d113.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/lodash@4.17.15/index.dew.js + + +export { dew } from './lodash.dew.js'; diff --git a/bundler/tests/.cache/untrusted/1e2f766b093efb461039c6f091896d94c0ea0da9.ts b/bundler/tests/.cache/untrusted/1e2f766b093efb461039c6f091896d94c0ea0da9.ts new file mode 100644 index 00000000000..f75eb7f81fb --- /dev/null +++ b/bundler/tests/.cache/untrusted/1e2f766b093efb461039c6f091896d94c0ea0da9.ts @@ -0,0 +1,194 @@ +// Loaded from https://denopkg.com/chiefbiiko/sha1@v1.0.3/mod.ts + + +import { encode, decode } from "./deps.ts"; + +function rotl(x: number, n: number): number { + return (x << n) | (x >>> (32 - n)); +} + +/** Byte length of a SHA1 digest. */ +export const BYTES: number = 20; + +/** A class representation of the SHA1 algorithm. */ +export class SHA1 { + readonly hashSize: number = BYTES; + + private _buf: Uint8Array = new Uint8Array(64); + private _bufIdx!: number; + private _count!: Uint32Array; + private _K: Uint32Array = new Uint32Array([0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]); + private _H!: Uint32Array; + private _finalized!: boolean; + + /** Creates a SHA1 instance. */ + constructor() { + this.init(); + } + + /** Reduces the four input numbers to a single one. */ + protected static F(t: number, b: number, c: number, d: number): number { + if (t <= 19) { + return (b & c) | (~b & d); + } else if (t <= 39) { + return b ^ c ^ d; + } else if (t <= 59) { + return (b & c) | (b & d) | (c & d); + } else { + return b ^ c ^ d; + } + } + + /** Initializes a hash instance. */ + init(): SHA1 { + // prettier-ignore + this._H = new Uint32Array([ + 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0 + ]); + + this._bufIdx = 0; + this._count = new Uint32Array(2); + this._buf.fill(0); + this._finalized = false; + + return this; + } + + /** Updates a hash with additional message data. */ + update(msg: string | Uint8Array, inputEncoding?: string): SHA1 { + if (msg === null) { + throw new TypeError("msg must be a string or Uint8Array."); + } else if (typeof msg === "string") { + msg = encode(msg, inputEncoding) as Uint8Array; + } + + // process the msg as many times as possible, the rest is stored in the buffer + // message is processed in 512 bit (64 byte chunks) + for (let i: number = 0; i < msg.length; i++) { + this._buf[this._bufIdx++] = msg[i]; + if (this._bufIdx === 64) { + this.transform(); + this._bufIdx = 0; + } + } + + // counter update (number of message bits) + const c: Uint32Array = this._count; + + if ((c[0] += msg.length << 3) < msg.length << 3) { + c[1]++; + } + + c[1] += msg.length >>> 29; + + return this; + } + + /** Finalizes a hash with additional message data. */ + digest(outputEncoding?: string): string | Uint8Array { + if (this._finalized) { + throw new Error("digest has already been called.") + } + + this._finalized = true; + + // append '1' + const b: Uint8Array = this._buf; + let idx: number = this._bufIdx; + b[idx++] = 0x80; + + // zeropad up to byte pos 56 + while (idx !== 56) { + if (idx === 64) { + this.transform(); + idx = 0; + } + b[idx++] = 0; + } + + // append length in bits + const c: Uint32Array = this._count; + + b[56] = (c[1] >>> 24) & 0xff; + b[57] = (c[1] >>> 16) & 0xff; + b[58] = (c[1] >>> 8) & 0xff; + b[59] = (c[1] >>> 0) & 0xff; + b[60] = (c[0] >>> 24) & 0xff; + b[61] = (c[0] >>> 16) & 0xff; + b[62] = (c[0] >>> 8) & 0xff; + b[63] = (c[0] >>> 0) & 0xff; + + this.transform(); + + // return the hash as byte array (20 bytes) + const hash: Uint8Array = new Uint8Array(BYTES); + + for (let i: number = 0; i < 5; i++) { + hash[(i << 2) + 0] = (this._H[i] >>> 24) & 0xff; + hash[(i << 2) + 1] = (this._H[i] >>> 16) & 0xff; + hash[(i << 2) + 2] = (this._H[i] >>> 8) & 0xff; + hash[(i << 2) + 3] = (this._H[i] >>> 0) & 0xff; + } + + // clear internal states and prepare for new hash + this.init(); + + return outputEncoding ? decode(hash, outputEncoding) : hash; + } + + /** Performs one transformation cycle. */ + private transform(): void { + const h: Uint32Array = this._H; + let a: number = h[0]; + let b: number = h[1]; + let c: number = h[2]; + let d: number = h[3]; + let e: number = h[4]; + + // convert byte buffer to words + const w: Uint32Array = new Uint32Array(80); + + for (let i: number = 0; i < 16; i++) { + w[i] = + this._buf[(i << 2) + 3] | + (this._buf[(i << 2) + 2] << 8) | + (this._buf[(i << 2) + 1] << 16) | + (this._buf[i << 2] << 24); + } + + for (let t: number = 0; t < 80; t++) { + if (t >= 16) { + w[t] = rotl(w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16], 1); + } + + const tmp: number = + (rotl(a, 5) + + SHA1.F(t, b, c, d) + + e + + w[t] + + this._K[Math.floor(t / 20)]) | + 0; + + e = d; + d = c; + c = rotl(b, 30); + b = a; + a = tmp; + } + + h[0] = (h[0] + a) | 0; + h[1] = (h[1] + b) | 0; + h[2] = (h[2] + c) | 0; + h[3] = (h[3] + d) | 0; + h[4] = (h[4] + e) | 0; + } +} + +/** Generates a SHA1 hash of the input data. */ +export function sha1( + msg: string | Uint8Array, + inputEncoding?: string, + outputEncoding?: string +): string | Uint8Array { + return new SHA1().update(msg, inputEncoding).digest(outputEncoding); +} diff --git a/bundler/tests/.cache/untrusted/1e7d6c3f7cb4a32b71581d6d6f74c12abda508a2.ts b/bundler/tests/.cache/untrusted/1e7d6c3f7cb4a32b71581d6d6f74c12abda508a2.ts new file mode 100644 index 00000000000..ef479c36d02 --- /dev/null +++ b/bundler/tests/.cache/untrusted/1e7d6c3f7cb4a32b71581d6d6f74c12abda508a2.ts @@ -0,0 +1,119 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/subscription.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { QueuedIterator } from "./queued_iterator.ts"; +import type { Base, Msg, Subscription, SubscriptionOptions } from "./types.ts"; +import { deferred, extend, Timeout, timeout } from "./util.ts"; +import { ErrorCode, NatsError } from "./error.ts"; +import type { ProtocolHandler } from "./protocol.ts"; + +export class SubscriptionImpl extends QueuedIterator + implements Base, Subscription { + sid!: number; + queue?: string; + draining: boolean = false; + max?: number; + subject: string; + drained?: Promise; + protocol: ProtocolHandler; + timer?: Timeout; + + constructor( + protocol: ProtocolHandler, + subject: string, + opts: SubscriptionOptions = {}, + ) { + super(); + extend(this, opts); + this.protocol = protocol; + this.subject = subject; + this.noIterator = typeof opts.callback === "function"; + + if (opts.timeout) { + this.timer = timeout(opts.timeout); + this.timer + .then(() => { + // timer was cancelled + this.timer = undefined; + }) + .catch((err) => { + // timer fired + this.stop(err); + }); + } + } + + callback(err: NatsError | null, msg: Msg) { + this.cancelTimeout(); + err ? this.stop(err) : this.push(msg); + } + + close(): void { + if (!this.isClosed()) { + this.cancelTimeout(); + this.stop(); + } + } + + unsubscribe(max?: number): void { + this.protocol.unsubscribe(this, max); + } + + cancelTimeout(): void { + if (this.timer) { + this.timer.cancel(); + this.timer = undefined; + } + } + + drain(): Promise { + if (this.protocol.isClosed()) { + throw NatsError.errorForCode(ErrorCode.CONNECTION_CLOSED); + } + if (this.isClosed()) { + throw NatsError.errorForCode(ErrorCode.SUB_CLOSED); + } + if (!this.drained) { + this.protocol.unsub(this); + this.drained = this.protocol.flush(deferred()); + this.drained.then(() => { + this.protocol.subscriptions.cancel(this); + }); + } + return this.drained; + } + + isDraining(): boolean { + return this.draining; + } + + isClosed(): boolean { + return this.done; + } + + getSubject(): string { + return this.subject; + } + + getMax(): number | undefined { + return this.max; + } + + getID(): number { + return this.sid; + } +} diff --git a/bundler/tests/.cache/untrusted/1ed020d2444e619d020056c6d7da82add39648c3.ts b/bundler/tests/.cache/untrusted/1ed020d2444e619d020056c6d7da82add39648c3.ts new file mode 100644 index 00000000000..cefd66293df --- /dev/null +++ b/bundler/tests/.cache/untrusted/1ed020d2444e619d020056c6d7da82add39648c3.ts @@ -0,0 +1,25 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/compressions.dew.js + + +import { dew as _GenericWorkerDewDew } from "./stream/GenericWorker.dew.js"; +import { dew as _flateDewDew } from "./flate.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var GenericWorker = _GenericWorkerDewDew(); + + exports.STORE = { + magic: "\x00\x00", + compressWorker: function (compressionOptions) { + return new GenericWorker("STORE compression"); + }, + uncompressWorker: function () { + return new GenericWorker("STORE decompression"); + } + }; + exports.DEFLATE = _flateDewDew(); + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/1f144d37f686dd826baedea1c588e6fe9b427e56.ts b/bundler/tests/.cache/untrusted/1f144d37f686dd826baedea1c588e6fe9b427e56.ts new file mode 100644 index 00000000000..ca9f7600db7 --- /dev/null +++ b/bundler/tests/.cache/untrusted/1f144d37f686dd826baedea1c588e6fe9b427e56.ts @@ -0,0 +1,40 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/oracledb/schema/columncompiler.js + + +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import ColumnCompiler_Oracle from '../../oracle/schema/columncompiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const isObject = _.isObject; + +function ColumnCompiler_Oracledb() { + ColumnCompiler_Oracle.apply(this, arguments); +} + +inherits(ColumnCompiler_Oracledb, ColumnCompiler_Oracle); + +Object.assign(ColumnCompiler_Oracledb.prototype, { + time: 'timestamp with local time zone', + + datetime: function (withoutTz) { + let useTz; + if (isObject(withoutTz)) { + ({ useTz } = withoutTz); + } else { + useTz = !withoutTz; + } + return useTz ? 'timestamp with local time zone' : 'timestamp'; + }, + + timestamp: function (withoutTz) { + let useTz; + if (isObject(withoutTz)) { + ({ useTz } = withoutTz); + } else { + useTz = !withoutTz; + } + return useTz ? 'timestamp with local time zone' : 'timestamp'; + }, +}); + +export default ColumnCompiler_Oracledb; diff --git a/bundler/tests/.cache/untrusted/1f1f766536a6d48b3ac6e57667ac28c7c8493481.ts b/bundler/tests/.cache/untrusted/1f1f766536a6d48b3ac6e57667ac28c7c8493481.ts new file mode 100644 index 00000000000..62436f2cfbb --- /dev/null +++ b/bundler/tests/.cache/untrusted/1f1f766536a6d48b3ac6e57667ac28c7c8493481.ts @@ -0,0 +1,207 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/connection/connection_params.ts + + +import { parseDsn } from "../utils.ts"; + +/** + * The connection string must match the following URI structure + * + * ```ts + * const connection = "postgres://user:password@hostname:port/database?application_name=application_name"; + * ``` + * + * Password, port and application name are optional parameters + */ +export type ConnectionString = string; + +/** + * This function retrieves the connection options from the environmental variables + * as they are, without any extra parsing + * + * It will throw if no env permission was provided on startup + */ +function getPgEnv(): ConnectionOptions { + return { + database: Deno.env.get("PGDATABASE"), + hostname: Deno.env.get("PGHOST"), + port: Deno.env.get("PGPORT"), + user: Deno.env.get("PGUSER"), + password: Deno.env.get("PGPASSWORD"), + applicationName: Deno.env.get("PGAPPNAME"), + }; +} + +export class ConnectionParamsError extends Error { + constructor(message: string) { + super(message); + this.name = "ConnectionParamsError"; + } +} + +interface TLSOptions { + /** + * This will force the connection to run over TLS + * If the server doesn't support TLS, the connection will fail + * + * default: `false` + * */ + enforce: boolean; +} + +export interface ConnectionOptions { + applicationName?: string; + database?: string; + hostname?: string; + password?: string; + port?: string | number; + tls?: TLSOptions; + user?: string; +} + +export interface ConnectionParams { + applicationName: string; + database: string; + hostname: string; + password?: string; + port: number; + tls: TLSOptions; + user: string; +} + +function formatMissingParams(missingParams: string[]) { + return `Missing connection parameters: ${ + missingParams.join( + ", ", + ) + }`; +} + +/** + * This validates the options passed are defined and have a value other than null + * or empty string, it throws a connection error otherwise + * + * @param has_env_access This parameter will change the error message if set to true, + * telling the user to pass env permissions in order to read environmental variables + */ +function assertRequiredOptions( + options: ConnectionOptions, + requiredKeys: (keyof ConnectionOptions)[], + // deno-lint-ignore camelcase + has_env_access: boolean, +) { + const missingParams: (keyof ConnectionOptions)[] = []; + for (const key of requiredKeys) { + if ( + options[key] === "" || + options[key] === null || + options[key] === undefined + ) { + missingParams.push(key); + } + } + + if (missingParams.length) { + // deno-lint-ignore camelcase + let missing_params_message = formatMissingParams(missingParams); + if (!has_env_access) { + missing_params_message += + "\nConnection parameters can be read from environment variables only if Deno is run with env permission"; + } + + throw new ConnectionParamsError(missing_params_message); + } +} + +function parseOptionsFromDsn(connString: string): ConnectionOptions { + const dsn = parseDsn(connString); + + if (dsn.driver !== "postgres") { + throw new ConnectionParamsError( + `Supplied DSN has invalid driver: ${dsn.driver}.`, + ); + } + + return { + ...dsn, + applicationName: dsn.params.application_name, + }; +} + +const DEFAULT_OPTIONS = { + applicationName: "deno_postgres", + hostname: "127.0.0.1", + port: "5432", + tls: { + enforce: false, + }, +}; + +export function createParams( + params: string | ConnectionOptions = {}, +): ConnectionParams { + if (typeof params === "string") { + params = parseOptionsFromDsn(params); + } + + let pgEnv: ConnectionOptions = {}; + // deno-lint-ignore camelcase + let has_env_access = true; + try { + pgEnv = getPgEnv(); + } catch (e) { + if (e instanceof Deno.errors.PermissionDenied) { + has_env_access = false; + } else { + throw e; + } + } + + let port: string; + if (params.port) { + port = String(params.port); + } else if (pgEnv.port) { + port = String(pgEnv.port); + } else { + port = DEFAULT_OPTIONS.port; + } + + // TODO + // Perhaps username should be taken from the PC user as a default? + // deno-lint-ignore camelcase + const connection_options = { + applicationName: params.applicationName ?? pgEnv.applicationName ?? + DEFAULT_OPTIONS.applicationName, + database: params.database ?? pgEnv.database, + hostname: params.hostname ?? pgEnv.hostname ?? DEFAULT_OPTIONS.hostname, + password: params.password ?? pgEnv.password, + port, + tls: { + enforce: !!params?.tls?.enforce ?? DEFAULT_OPTIONS.tls.enforce, + }, + user: params.user ?? pgEnv.user, + }; + + assertRequiredOptions( + connection_options, + ["database", "hostname", "port", "user", "applicationName"], + has_env_access, + ); + + // By this point all required parameters have been checked out + // by the assert function + // deno-lint-ignore camelcase + const connection_parameters: ConnectionParams = { + ...connection_options, + database: connection_options.database as string, + port: parseInt(connection_options.port, 10), + user: connection_options.user as string, + }; + + if (isNaN(connection_parameters.port)) { + throw new ConnectionParamsError( + `Invalid port ${connection_parameters.port}`, + ); + } + + return connection_parameters; +} diff --git a/bundler/tests/.cache/untrusted/1f890880e548b3977fe905eb1b05019115125238.ts b/bundler/tests/.cache/untrusted/1f890880e548b3977fe905eb1b05019115125238.ts new file mode 100644 index 00000000000..b0525db6b4e --- /dev/null +++ b/bundler/tests/.cache/untrusted/1f890880e548b3977fe905eb1b05019115125238.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/timers.js + + +import {h}from'./chunk-0c2d1322.js';var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:global,n={},a=h;!function(e,t){if(!e.setImmediate){var n,s,o,i,c,r=1,f={},l=!1,d=e.document,u=Object.getPrototypeOf&&Object.getPrototypeOf(e);u=u&&u.setTimeout?u:e,"[object process]"==={}.toString.call(e.process)?n=function(e){a.nextTick((function(){m(e);}));}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1;},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){m(e.data);},n=function(e){o.port2.postMessage(e);}):d&&"onreadystatechange"in d.createElement("script")?(s=d.documentElement,n=function(e){var t=d.createElement("script");t.onreadystatechange=function(){m(e),t.onreadystatechange=null,s.removeChild(t),t=null;},s.appendChild(t);}):n=function(e){setTimeout(m,0,e);}:(i="setImmediate$"+Math.random()+"$",c=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&m(+t.data.slice(i.length));},e.addEventListener?e.addEventListener("message",c,!1):e.attachEvent("onmessage",c),n=function(t){e.postMessage(i+t,"*");}),u.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),a=0;a=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout();}),t));},i.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t$1&&t$1.setImmediate||i&&i.setImmediate,i.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t$1&&t$1.clearImmediate||i&&i.clearImmediate;var _unrefActive=i._unrefActive;var active=i.active;var clearImmediate=i.clearImmediate;var clearInterval$1=i.clearInterval;var clearTimeout$1=i.clearTimeout;var enroll=i.enroll;var setImmediate=i.setImmediate;var setInterval$1=i.setInterval;var setTimeout$1=i.setTimeout;var unenroll=i.unenroll;export default i;export{_unrefActive,active,clearImmediate,clearInterval$1 as clearInterval,clearTimeout$1 as clearTimeout,enroll,setImmediate,setInterval$1 as setInterval,setTimeout$1 as setTimeout,unenroll}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/1fefdc1fe0ddf8107d4eb8f6ac915f0e7ca66a74.ts b/bundler/tests/.cache/untrusted/1fefdc1fe0ddf8107d4eb8f6ac915f0e7ca66a74.ts new file mode 100644 index 00000000000..37539a69ac5 --- /dev/null +++ b/bundler/tests/.cache/untrusted/1fefdc1fe0ddf8107d4eb8f6ac915f0e7ca66a74.ts @@ -0,0 +1,24 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/any.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodAnyDef extends ZodTypeDef { + t: ZodTypes.any; +} + +export class ZodAny extends ZodType { + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + toJSON = () => this._def; + + static create = (): ZodAny => { + return new ZodAny({ + t: ZodTypes.any, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/204ee89e8707f4e11edef830494c22e89fabf72b.ts b/bundler/tests/.cache/untrusted/204ee89e8707f4e11edef830494c22e89fabf72b.ts new file mode 100644 index 00000000000..b214406d7a9 --- /dev/null +++ b/bundler/tests/.cache/untrusted/204ee89e8707f4e11edef830494c22e89fabf72b.ts @@ -0,0 +1,471 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/oracledb/index.js + + +// Oracledb Client +// ------- +import _ from '../../deps/lodash@4.17.15/index.js'; +const each = _.each; +const flatten = _.flatten; +const isEmpty = _.isEmpty; +const isString = _.isString; +const map = _.map; +const values = _.values; +import inherits from '../../deps/inherits@2.0.4/inherits.js'; +import QueryCompiler from './query/compiler.js'; +import ColumnCompiler from './schema/columncompiler.js'; +import { BlobHelper } from './utils.js'; +import Utils from './utils.js'; +const ReturningHelper = Utils.ReturningHelper; +const isConnectionError = Utils.isConnectionError; +import stream from '../../deps/@jspm/core@1.1.0/nodelibs/stream.js'; +import { promisify } from '../../deps/@jspm/core@1.1.0/nodelibs/util.js'; +import Transaction from './transaction.js'; +import Client_Oracle from '../oracle/index.js'; +import Oracle_Formatter from '../oracle/formatter.js'; + +function Client_Oracledb() { + Client_Oracle.apply(this, arguments); + // Node.js only have 4 background threads by default, oracledb needs one by connection + if (this.driver) { + process.env.UV_THREADPOOL_SIZE = process.env.UV_THREADPOOL_SIZE || 1; + process.env.UV_THREADPOOL_SIZE = + parseInt(process.env.UV_THREADPOOL_SIZE) + this.driver.poolMax; + } +} +inherits(Client_Oracledb, Client_Oracle); + +Client_Oracledb.prototype.driverName = 'oracledb'; + +Client_Oracledb.prototype._driver = function () { + const client = this; + const oracledb = require('oracledb'); + client.fetchAsString = []; + if (this.config.fetchAsString && Array.isArray(this.config.fetchAsString)) { + this.config.fetchAsString.forEach(function (type) { + if (!isString(type)) return; + type = type.toUpperCase(); + if (oracledb[type]) { + if ( + type !== 'NUMBER' && + type !== 'DATE' && + type !== 'CLOB' && + type !== 'BUFFER' + ) { + this.logger.warn( + 'Only "date", "number", "clob" and "buffer" are supported for fetchAsString' + ); + } + client.fetchAsString.push(oracledb[type]); + } + }); + } + return oracledb; +}; + +Client_Oracledb.prototype.queryCompiler = function () { + return new QueryCompiler(this, ...arguments); +}; +Client_Oracledb.prototype.columnCompiler = function () { + return new ColumnCompiler(this, ...arguments); +}; +Client_Oracledb.prototype.formatter = function () { + return new Oracledb_Formatter(this, ...arguments); +}; +Client_Oracledb.prototype.transaction = function () { + return new Transaction(this, ...arguments); +}; + +Client_Oracledb.prototype.prepBindings = function (bindings) { + return map(bindings, (value) => { + if (value instanceof BlobHelper && this.driver) { + return { type: this.driver.BLOB, dir: this.driver.BIND_OUT }; + // Returning helper always use ROWID as string + } else if (value instanceof ReturningHelper && this.driver) { + return { type: this.driver.STRING, dir: this.driver.BIND_OUT }; + } else if (typeof value === 'boolean') { + return value ? 1 : 0; + } + return value; + }); +}; + +// Get a raw connection, called by the `pool` whenever a new +// connection needs to be added to the pool. +Client_Oracledb.prototype.acquireRawConnection = function () { + const client = this; + const asyncConnection = new Promise(function (resolver, rejecter) { + // If external authentication don't have to worry about username/password and + // if not need to set the username and password + const oracleDbConfig = client.connectionSettings.externalAuth + ? { externalAuth: client.connectionSettings.externalAuth } + : { + user: client.connectionSettings.user, + password: client.connectionSettings.password, + }; + + // In the case of external authentication connection string will be given + oracleDbConfig.connectString = + client.connectionSettings.connectString || + client.connectionSettings.host + '/' + client.connectionSettings.database; + + if (client.connectionSettings.prefetchRowCount) { + oracleDbConfig.prefetchRows = client.connectionSettings.prefetchRowCount; + } + + if (client.connectionSettings.stmtCacheSize !== undefined) { + oracleDbConfig.stmtCacheSize = client.connectionSettings.stmtCacheSize; + } + + client.driver.fetchAsString = client.fetchAsString; + + client.driver.getConnection(oracleDbConfig, function (err, connection) { + if (err) { + return rejecter(err); + } + connection.commitAsync = function () { + return new Promise((commitResolve, commitReject) => { + this.commit(function (err) { + if (err) { + return commitReject(err); + } + commitResolve(); + }); + }); + }; + connection.rollbackAsync = function () { + return new Promise((rollbackResolve, rollbackReject) => { + this.rollback(function (err) { + if (err) { + return rollbackReject(err); + } + rollbackResolve(); + }); + }); + }; + const fetchAsync = promisify(function (sql, bindParams, options, cb) { + options = options || {}; + options.outFormat = + client.driver.OUT_FORMAT_OBJECT || client.driver.OBJECT; + if (!options.outFormat) { + throw new Error('not found oracledb.outFormat constants'); + } + if (options.resultSet) { + connection.execute(sql, bindParams || [], options, function ( + err, + result + ) { + if (err) { + if (isConnectionError(err)) { + connection.close().catch(function (err) {}); + connection.__knex__disposed = err; + } + return cb(err); + } + const fetchResult = { rows: [], resultSet: result.resultSet }; + const numRows = 100; + const fetchRowsFromRS = function (connection, resultSet, numRows) { + resultSet.getRows(numRows, function (err, rows) { + if (err) { + if (isConnectionError(err)) { + connection.close().catch(function (err) {}); + connection.__knex__disposed = err; + } + resultSet.close(function () { + return cb(err); + }); + } else if (rows.length === 0) { + return cb(null, fetchResult); + } else if (rows.length > 0) { + if (rows.length === numRows) { + fetchResult.rows = fetchResult.rows.concat(rows); + fetchRowsFromRS(connection, resultSet, numRows); + } else { + fetchResult.rows = fetchResult.rows.concat(rows); + return cb(null, fetchResult); + } + } + }); + }; + fetchRowsFromRS(connection, result.resultSet, numRows); + }); + } else { + connection.execute(sql, bindParams || [], options, function ( + err, + result + ) { + if (err) { + // dispose the connection on connection error + if (isConnectionError(err)) { + connection.close().catch(function (err) {}); + connection.__knex__disposed = err; + } + return cb(err); + } + + return cb(null, result); + }); + } + }); + connection.executeAsync = function (sql, bindParams, options) { + // Read all lob + return fetchAsync(sql, bindParams, options).then(async (results) => { + const closeResultSet = () => { + return results.resultSet + ? promisify(results.resultSet.close).call(results.resultSet) + : Promise.resolve(); + }; + + // Collect LOBs to read + const lobs = []; + if (results.rows) { + if (Array.isArray(results.rows)) { + for (let i = 0; i < results.rows.length; i++) { + // Iterate through the rows + const row = results.rows[i]; + for (const column in row) { + if (row[column] instanceof stream.Readable) { + lobs.push({ index: i, key: column, stream: row[column] }); + } + } + } + } + } + + try { + for (const lob of lobs) { + // todo should be fetchAsString/fetchAsBuffer polyfill only + results.rows[lob.index][lob.key] = await lobProcessing( + lob.stream + ); + } + } catch (e) { + await closeResultSet().catch(() => {}); + + throw e; + } + + await closeResultSet(); + + return results; + }); + }; + resolver(connection); + }); + }); + return asyncConnection; +}; + +// Used to explicitly close a connection, called internally by the pool +// when a connection times out or the pool is shutdown. +Client_Oracledb.prototype.destroyRawConnection = function (connection) { + return connection.release(); +}; + +// Runs the query on the specified connection, providing the bindings +// and any other necessary prep work. +Client_Oracledb.prototype._query = function (connection, obj) { + if (!obj.sql) throw new Error('The query is empty'); + + const options = { autoCommit: false }; + if (obj.method === 'select') { + options.resultSet = true; + } + return connection + .executeAsync(obj.sql, obj.bindings, options) + .then(async function (response) { + // Flatten outBinds + let outBinds = flatten(response.outBinds); + obj.response = response.rows || []; + obj.rowsAffected = response.rows + ? response.rows.rowsAffected + : response.rowsAffected; + + //added for outBind parameter + if (obj.method === 'raw' && outBinds.length > 0) { + return { + response: outBinds, + }; + } + + if (obj.method === 'update') { + const modifiedRowsCount = obj.rowsAffected.length || obj.rowsAffected; + const updatedObjOutBinding = []; + const updatedOutBinds = []; + const updateOutBinds = (i) => + function (value, index) { + const OutBindsOffset = index * modifiedRowsCount; + updatedOutBinds.push(outBinds[i + OutBindsOffset]); + }; + + for (let i = 0; i < modifiedRowsCount; i++) { + updatedObjOutBinding.push(obj.outBinding[0]); + each(obj.outBinding[0], updateOutBinds(i)); + } + outBinds = updatedOutBinds; + obj.outBinding = updatedObjOutBinding; + } + + if (!obj.returning && outBinds.length === 0) { + if (!connection.isTransaction) { + await connection.commitAsync(); + } + return obj; + } + const rowIds = []; + let offset = 0; + + for (let line = 0; line < obj.outBinding.length; line++) { + const ret = obj.outBinding[line]; + + offset = + offset + + (obj.outBinding[line - 1] ? obj.outBinding[line - 1].length : 0); + + for (let index = 0; index < ret.length; index++) { + const out = ret[index]; + + await new Promise(function (bindResolver, bindRejecter) { + if (out instanceof BlobHelper) { + const blob = outBinds[index + offset]; + if (out.returning) { + obj.response[line] = obj.response[line] || {}; + obj.response[line][out.columnName] = out.value; + } + blob.on('error', function (err) { + bindRejecter(err); + }); + blob.on('finish', function () { + bindResolver(); + }); + blob.write(out.value); + blob.end(); + } else if (obj.outBinding[line][index] === 'ROWID') { + rowIds.push(outBinds[index + offset]); + bindResolver(); + } else { + obj.response[line] = obj.response[line] || {}; + obj.response[line][out] = outBinds[index + offset]; + bindResolver(); + } + }); + } + } + if (connection.isTransaction) { + return obj; + } + await connection.commitAsync(); + if (obj.returningSql) { + const response = await connection.executeAsync( + obj.returningSql(), + rowIds, + { resultSet: true } + ); + obj.response = response.rows; + } + return obj; + }); +}; + +/** + * @param stream + * @param {'string' | 'buffer'} type + */ +function readStream(stream, type) { + return new Promise((resolve, reject) => { + let data = type === 'string' ? '' : Buffer.alloc(0); + + stream.on('error', function (err) { + reject(err); + }); + stream.on('data', function (chunk) { + if (type === 'string') { + data += chunk; + } else { + data = Buffer.concat([data, chunk]); + } + }); + stream.on('end', function () { + resolve(data); + }); + }); +} + +// Process the response as returned from the query. +Client_Oracledb.prototype.processResponse = function (obj, runner) { + let response = obj.response; + const method = obj.method; + if (obj.output) { + return obj.output.call(runner, response); + } + switch (method) { + case 'select': + case 'pluck': + case 'first': + if (obj.method === 'pluck') { + response = map(response, obj.pluck); + } + return obj.method === 'first' ? response[0] : response; + case 'insert': + case 'del': + case 'update': + case 'counter': + if (obj.returning && !isEmpty(obj.returning)) { + if (obj.returning.length === 1 && obj.returning[0] !== '*') { + return flatten(map(response, values)); + } + return response; + } else if (obj.rowsAffected !== undefined) { + return obj.rowsAffected; + } else { + return 1; + } + default: + return response; + } +}; + +const lobProcessing = function (stream) { + const oracledb = require('oracledb'); + + /** + * @type 'string' | 'buffer' + */ + let type; + + if (stream.type) { + // v1.2-v4 + if (stream.type === oracledb.BLOB) { + type = 'buffer'; + } else if (stream.type === oracledb.CLOB) { + type = 'string'; + } + } else if (stream.iLob) { + // v1 + if (stream.iLob.type === oracledb.CLOB) { + type = 'string'; + } else if (stream.iLob.type === oracledb.BLOB) { + type = 'buffer'; + } + } else { + throw new Error('Unrecognized oracledb lob stream type'); + } + if (type === 'string') { + stream.setEncoding('utf-8'); + } + return readStream(stream, type); +}; + +class Oracledb_Formatter extends Oracle_Formatter { + // Checks whether a value is a function... if it is, we compile it + // otherwise we check whether it's a raw + parameter(value) { + if (typeof value === 'function') { + return this.outputQuery(this.compileCallback(value), true); + } else if (value instanceof BlobHelper) { + return 'EMPTY_BLOB()'; + } + return this.unwrapRaw(value, true) || '?'; + } +} + +export default Client_Oracledb; diff --git a/bundler/tests/.cache/untrusted/2073dec4bd52ef2a246e1e8469ee51bb1354925d.ts b/bundler/tests/.cache/untrusted/2073dec4bd52ef2a246e1e8469ee51bb1354925d.ts new file mode 100644 index 00000000000..1114405e510 --- /dev/null +++ b/bundler/tests/.cache/untrusted/2073dec4bd52ef2a246e1e8469ee51bb1354925d.ts @@ -0,0 +1,231 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mssql/schema/tablecompiler.js + + +/* eslint max-len:0 */ + +// MSSQL Table Builder & Compiler +// ------- +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import TableCompiler from '../../../schema/tablecompiler.js'; +import helpers from '../../../helpers.js'; + +// Table Compiler +// ------ + +function TableCompiler_MSSQL() { + TableCompiler.apply(this, arguments); +} +inherits(TableCompiler_MSSQL, TableCompiler); + +Object.assign(TableCompiler_MSSQL.prototype, { + createAlterTableMethods: ['foreign', 'primary'], + createQuery(columns, ifNot) { + const createStatement = ifNot + ? `if object_id('${this.tableName()}', 'U') is null CREATE TABLE ` + : 'CREATE TABLE '; + const sql = + createStatement + + this.tableName() + + (this._formatting ? ' (\n ' : ' (') + + columns.sql.join(this._formatting ? ',\n ' : ', ') + + ')'; + + if (this.single.comment) { + const { comment } = this.single; + if (comment.length > 60) + this.client.logger.warn( + 'The max length for a table comment is 60 characters' + ); + } + + this.pushQuery(sql); + }, + + lowerCase: false, + + addColumnsPrefix: 'ADD ', + + dropColumnPrefix: 'DROP COLUMN ', + + alterColumnPrefix: 'ALTER COLUMN ', + + // Compiles column add. Multiple columns need only one ADD clause (not one ADD per column) so core addColumns doesn't work. #1348 + addColumns(columns, prefix) { + prefix = prefix || this.addColumnsPrefix; + + if (columns.sql.length > 0) { + this.pushQuery({ + sql: + (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') + + this.tableName() + + ' ' + + prefix + + columns.sql.join(', '), + bindings: columns.bindings, + }); + } + }, + + // Compiles column drop. Multiple columns need only one DROP clause (not one DROP per column) so core dropColumn doesn't work. #1348 + dropColumn() { + const _this2 = this; + const columns = helpers.normalizeArr.apply(null, arguments); + + const drops = (Array.isArray(columns) ? columns : [columns]).map((column) => + _this2.formatter.wrap(column) + ); + this.pushQuery( + (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') + + this.tableName() + + ' ' + + this.dropColumnPrefix + + drops.join(', ') + ); + }, + + // Compiles the comment on the table. + comment() {}, + + changeType() {}, + + // Renames a column on the table. + renameColumn(from, to) { + this.pushQuery( + `exec sp_rename ${this.formatter.parameter( + this.tableName() + '.' + from + )}, ${this.formatter.parameter(to)}, 'COLUMN'` + ); + }, + + dropFKRefs(runner, refs) { + const formatter = this.client.formatter(this.tableBuilder); + return Promise.all( + refs.map(function (ref) { + const constraintName = formatter.wrap(ref.CONSTRAINT_NAME); + const tableName = formatter.wrap(ref.TABLE_NAME); + return runner.query({ + sql: `ALTER TABLE ${tableName} DROP CONSTRAINT ${constraintName}`, + }); + }) + ); + }, + createFKRefs(runner, refs) { + const formatter = this.client.formatter(this.tableBuilder); + + return Promise.all( + refs.map(function (ref) { + const tableName = formatter.wrap(ref.TABLE_NAME); + const keyName = formatter.wrap(ref.CONSTRAINT_NAME); + const column = formatter.columnize(ref.COLUMN_NAME); + const references = formatter.columnize(ref.REFERENCED_COLUMN_NAME); + const inTable = formatter.wrap(ref.REFERENCED_TABLE_NAME); + const onUpdate = ` ON UPDATE ${ref.UPDATE_RULE}`; + const onDelete = ` ON DELETE ${ref.DELETE_RULE}`; + + return runner.query({ + sql: + `ALTER TABLE ${tableName} ADD CONSTRAINT ${keyName}` + + ' FOREIGN KEY (' + + column + + ') REFERENCES ' + + inTable + + ' (' + + references + + ')' + + onUpdate + + onDelete, + }); + }) + ); + }, + + index(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + this.pushQuery( + `CREATE INDEX ${indexName} ON ${this.tableName()} (${this.formatter.columnize( + columns + )})` + ); + }, + + primary(columns, constraintName) { + constraintName = constraintName + ? this.formatter.wrap(constraintName) + : this.formatter.wrap(`${this.tableNameRaw}_pkey`); + if (!this.forCreate) { + this.pushQuery( + `ALTER TABLE ${this.tableName()} ADD CONSTRAINT ${constraintName} PRIMARY KEY (${this.formatter.columnize( + columns + )})` + ); + } else { + this.pushQuery( + `CONSTRAINT ${constraintName} PRIMARY KEY (${this.formatter.columnize( + columns + )})` + ); + } + }, + + unique(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, columns); + + if (!Array.isArray(columns)) { + columns = [columns]; + } + + const whereAllTheColumnsAreNotNull = columns + .map((column) => this.formatter.columnize(column) + ' IS NOT NULL') + .join(' AND '); + + // make unique constraint that allows null https://stackoverflow.com/a/767702/360060 + // to be more or less compatible with other DBs (if any of the columns is NULL then "duplicates" are allowed) + this.pushQuery( + `CREATE UNIQUE INDEX ${indexName} ON ${this.tableName()} (${this.formatter.columnize( + columns + )}) WHERE ${whereAllTheColumnsAreNotNull}` + ); + }, + + // Compile a drop index command. + dropIndex(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + this.pushQuery(`DROP INDEX ${indexName} ON ${this.tableName()}`); + }, + + // Compile a drop foreign key command. + dropForeign(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('foreign', this.tableNameRaw, columns); + this.pushQuery( + `ALTER TABLE ${this.tableName()} DROP CONSTRAINT ${indexName}` + ); + }, + + // Compile a drop primary key command. + dropPrimary(constraintName) { + constraintName = constraintName + ? this.formatter.wrap(constraintName) + : this.formatter.wrap(`${this.tableNameRaw}_pkey`); + this.pushQuery( + `ALTER TABLE ${this.tableName()} DROP CONSTRAINT ${constraintName}` + ); + }, + + // Compile a drop unique key command. + dropUnique(column, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, column); + this.pushQuery(`DROP INDEX ${indexName} ON ${this.tableName()}`); + }, +}); + +export default TableCompiler_MSSQL; diff --git a/bundler/tests/.cache/untrusted/20cc7ed74aea77ad3291bdda5ca0d3c48acff6aa.ts b/bundler/tests/.cache/untrusted/20cc7ed74aea77ad3291bdda5ca0d3c48acff6aa.ts new file mode 100644 index 00000000000..a1acf8d9c44 --- /dev/null +++ b/bundler/tests/.cache/untrusted/20cc7ed74aea77ad3291bdda5ca0d3c48acff6aa.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/chunk-dac557ba.js + + +import {h as h$1}from'./chunk-0c2d1322.js';var t="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,e=Object.prototype.toString,o=function(o){return !(t&&o&&"object"==typeof o&&Symbol.toStringTag in o)&&"[object Arguments]"===e.call(o)},n=function(t){return !!o(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==e.call(t)&&"[object Function]"===e.call(t.callee)},r=function(){return o(arguments)}();o.isLegacyArguments=n;var l=r?o:n;var t$1=Object.prototype.toString,o$1=Function.prototype.toString,n$1=/^\s*(?:function)?\*/,e$1="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,r$1=Object.getPrototypeOf,c=function(){if(!e$1)return !1;try{return Function("return function*() {}")()}catch(t){}}(),u=c?r$1(c):{},i=function(c){return "function"==typeof c&&(!!n$1.test(o$1.call(c))||(e$1?r$1(c)===u:"[object GeneratorFunction]"===t$1.call(c)))};var t$2="function"==typeof Object.create?function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}));}:function(t,e){if(e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t;}};var i$1=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8},o$2={},u$1=i$1,f=l,a=i;function c$1(e){return e.call.bind(e)}var s="undefined"!=typeof BigInt,p="undefined"!=typeof Symbol,y=p&&void 0!==Symbol.toStringTag,l$1="undefined"!=typeof Uint8Array,d="undefined"!=typeof ArrayBuffer;if(l$1&&y)var g=Object.getPrototypeOf(Uint8Array.prototype),b=c$1(Object.getOwnPropertyDescriptor(g,Symbol.toStringTag).get);var m=c$1(Object.prototype.toString),h=c$1(Number.prototype.valueOf),j=c$1(String.prototype.valueOf),A=c$1(Boolean.prototype.valueOf);if(s)var w=c$1(BigInt.prototype.valueOf);if(p)var v=c$1(Symbol.prototype.valueOf);function O(e,t){if("object"!=typeof e)return !1;try{return t(e),!0}catch(e){return !1}}function S(e){return l$1&&y?void 0!==b(e):B(e)||k(e)||E(e)||D(e)||U(e)||P(e)||x(e)||I(e)||M(e)||z(e)||F(e)}function B(e){return l$1&&y?"Uint8Array"===b(e):"[object Uint8Array]"===m(e)||u$1(e)&&void 0!==e.buffer}function k(e){return l$1&&y?"Uint8ClampedArray"===b(e):"[object Uint8ClampedArray]"===m(e)}function E(e){return l$1&&y?"Uint16Array"===b(e):"[object Uint16Array]"===m(e)}function D(e){return l$1&&y?"Uint32Array"===b(e):"[object Uint32Array]"===m(e)}function U(e){return l$1&&y?"Int8Array"===b(e):"[object Int8Array]"===m(e)}function P(e){return l$1&&y?"Int16Array"===b(e):"[object Int16Array]"===m(e)}function x(e){return l$1&&y?"Int32Array"===b(e):"[object Int32Array]"===m(e)}function I(e){return l$1&&y?"Float32Array"===b(e):"[object Float32Array]"===m(e)}function M(e){return l$1&&y?"Float64Array"===b(e):"[object Float64Array]"===m(e)}function z(e){return l$1&&y?"BigInt64Array"===b(e):"[object BigInt64Array]"===m(e)}function F(e){return l$1&&y?"BigUint64Array"===b(e):"[object BigUint64Array]"===m(e)}function T(e){return "[object Map]"===m(e)}function N(e){return "[object Set]"===m(e)}function W(e){return "[object WeakMap]"===m(e)}function $(e){return "[object WeakSet]"===m(e)}function C(e){return "[object ArrayBuffer]"===m(e)}function V(e){return "undefined"!=typeof ArrayBuffer&&(C.working?C(e):e instanceof ArrayBuffer)}function G(e){return "[object DataView]"===m(e)}function R(e){return "undefined"!=typeof DataView&&(G.working?G(e):e instanceof DataView)}function J(e){return "[object SharedArrayBuffer]"===m(e)}function _(e){return "undefined"!=typeof SharedArrayBuffer&&(J.working?J(e):e instanceof SharedArrayBuffer)}function H(e){return O(e,h)}function Z(e){return O(e,j)}function q(e){return O(e,A)}function K(e){return s&&O(e,w)}function L(e){return p&&O(e,v)}o$2.isArgumentsObject=f,o$2.isGeneratorFunction=a,o$2.isPromise=function(e){return "undefined"!=typeof Promise&&e instanceof Promise||null!==e&&"object"==typeof e&&"function"==typeof e.then&&"function"==typeof e.catch},o$2.isArrayBufferView=function(e){return d&&ArrayBuffer.isView?ArrayBuffer.isView(e):S(e)||R(e)},o$2.isTypedArray=S,o$2.isUint8Array=B,o$2.isUint8ClampedArray=k,o$2.isUint16Array=E,o$2.isUint32Array=D,o$2.isInt8Array=U,o$2.isInt16Array=P,o$2.isInt32Array=x,o$2.isFloat32Array=I,o$2.isFloat64Array=M,o$2.isBigInt64Array=z,o$2.isBigUint64Array=F,T.working="undefined"!=typeof Map&&T(new Map),o$2.isMap=function(e){return "undefined"!=typeof Map&&(T.working?T(e):e instanceof Map)},N.working="undefined"!=typeof Set&&N(new Set),o$2.isSet=function(e){return "undefined"!=typeof Set&&(N.working?N(e):e instanceof Set)},W.working="undefined"!=typeof WeakMap&&W(new WeakMap),o$2.isWeakMap=function(e){return "undefined"!=typeof WeakMap&&(W.working?W(e):e instanceof WeakMap)},$.working="undefined"!=typeof WeakSet&&$(new WeakSet),o$2.isWeakSet=function(e){return $(e)},C.working="undefined"!=typeof ArrayBuffer&&C(new ArrayBuffer),o$2.isArrayBuffer=V,G.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&G(new DataView(new ArrayBuffer(1),0,1)),o$2.isDataView=R,J.working="undefined"!=typeof SharedArrayBuffer&&J(new SharedArrayBuffer),o$2.isSharedArrayBuffer=_,o$2.isAsyncFunction=function(e){return "[object AsyncFunction]"===m(e)},o$2.isMapIterator=function(e){return "[object Map Iterator]"===m(e)},o$2.isSetIterator=function(e){return "[object Set Iterator]"===m(e)},o$2.isGeneratorObject=function(e){return "[object Generator]"===m(e)},o$2.isWebAssemblyCompiledModule=function(e){return "[object WebAssembly.Module]"===m(e)},o$2.isNumberObject=H,o$2.isStringObject=Z,o$2.isBooleanObject=q,o$2.isBigIntObject=K,o$2.isSymbolObject=L,o$2.isBoxedPrimitive=function(e){return H(e)||Z(e)||q(e)||K(e)||L(e)},o$2.isAnyArrayBuffer=function(e){return l$1&&(V(e)||_(e))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(e){Object.defineProperty(o$2,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}});}));var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:global,X={},Y=h$1,ee=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return "[Circular]"}default:return e}})),u=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),ye(t)?r.showHidden=t:t&&X._extend(r,t),be(r.showHidden)&&(r.showHidden=!1),be(r.depth)&&(r.depth=2),be(r.colors)&&(r.colors=!1),be(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ue),ae(r,e,r.depth)}function ue(e,t){var r=oe.styles[t];return r?"["+oe.colors[r][0]+"m"+e+"["+oe.colors[r][1]+"m":e}function fe(e,t){return e}function ae(e,t,r){if(e.customInspect&&t&&we(t.inspect)&&t.inspect!==X.inspect&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return ge(n)||(n=ae(e,n,r)),n}var i=function(e,t){if(be(t))return e.stylize("undefined","undefined");if(ge(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(de(t))return e.stylize(""+t,"number");if(ye(t))return e.stylize(""+t,"boolean");if(le(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0;})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Ae(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return ce(t);if(0===o.length){if(we(t)){var f=t.name?": "+t.name:"";return e.stylize("[Function"+f+"]","special")}if(me(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(je(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Ae(t))return ce(t)}var a,c="",s=!1,p=["{","}"];(pe(t)&&(s=!0,p=["[","]"]),we(t))&&(c=" [Function"+(t.name?": "+t.name:"")+"]");return me(t)&&(c=" "+RegExp.prototype.toString.call(t)),je(t)&&(c=" "+Date.prototype.toUTCString.call(t)),Ae(t)&&(c=" "+ce(t)),0!==o.length||s&&0!=t.length?r<0?me(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),a=s?function(e,t,r,n,i){for(var o=[],u=0,f=t.length;u=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(a,c,p)):p[0]+c+p[1]}function ce(e){return "["+Error.prototype.toString.call(e)+"]"}function se(e,t,r,n,i,o){var u,f,a;if((a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?f=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(f=e.stylize("[Setter]","special")),ke(n,i)||(u="["+i+"]"),f||(e.seen.indexOf(a.value)<0?(f=le(r)?ae(e,a.value,null):ae(e,a.value,r-1)).indexOf("\n")>-1&&(f=o?f.split("\n").map((function(e){return " "+e})).join("\n").substr(2):"\n"+f.split("\n").map((function(e){return " "+e})).join("\n")):f=e.stylize("[Circular]","special")),be(u)){if(o&&i.match(/^\d+$/))return f;(u=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,"name")):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=e.stylize(u,"string"));}return u+": "+f}function pe(e){return Array.isArray(e)}function ye(e){return "boolean"==typeof e}function le(e){return null===e}function de(e){return "number"==typeof e}function ge(e){return "string"==typeof e}function be(e){return void 0===e}function me(e){return he(e)&&"[object RegExp]"===ve(e)}function he(e){return "object"==typeof e&&null!==e}function je(e){return he(e)&&"[object Date]"===ve(e)}function Ae(e){return he(e)&&("[object Error]"===ve(e)||e instanceof Error)}function we(e){return "function"==typeof e}function ve(e){return Object.prototype.toString.call(e)}function Oe(e){return e<10?"0"+e.toString(10):e.toString(10)}X.debuglog=function(e){if(e=e.toUpperCase(),!re[e])if(ne.test(e)){var t=Y.pid;re[e]=function(){var r=X.format.apply(X,arguments);console.error("%s %d: %s",e,t,r);};}else re[e]=function(){};return re[e]},X.inspect=oe,oe.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},oe.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},X.types=o$2,X.isArray=pe,X.isBoolean=ye,X.isNull=le,X.isNullOrUndefined=function(e){return null==e},X.isNumber=de,X.isString=ge,X.isSymbol=function(e){return "symbol"==typeof e},X.isUndefined=be,X.isRegExp=me,X.types.isRegExp=me,X.isObject=he,X.isDate=je,X.types.isDate=je,X.isError=Ae,X.types.isNativeError=Ae,X.isFunction=we,X.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},X.isBuffer=i$1;var Se=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Be(){var e=new Date,t=[Oe(e.getHours()),Oe(e.getMinutes()),Oe(e.getSeconds())].join(":");return [e.getDate(),Se[e.getMonth()],t].join(" ")}function ke(e,t){return Object.prototype.hasOwnProperty.call(e,t)}X.log=function(){console.log("%s - %s",Be(),X.format.apply(X,arguments));},X.inherits=t$2,X._extend=function(e,t){if(!t||!he(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var Ee="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function De(e,t){if(!e){var r=new Error("Promise was rejected with a falsy value");r.reason=e,e=r;}return t(e)}X.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(Ee&&e[Ee]){var t;if("function"!=typeof(t=e[Ee]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,Ee,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,n=new Promise((function(e,n){t=e,r=n;})),i=[],o=0;o = new Map(); + sidCounter: number = 0; + + size(): number { + return this.subs.size; + } + + add(s: SubscriptionImpl): SubscriptionImpl { + this.sidCounter++; + s.sid = this.sidCounter; + this.subs.set(s.sid, s as SubscriptionImpl); + return s; + } + + setMux(s: SubscriptionImpl): SubscriptionImpl { + this.mux = s; + return s; + } + + getMux(): SubscriptionImpl | null { + return this.mux; + } + + get(sid: number): (SubscriptionImpl | undefined) { + return this.subs.get(sid); + } + + all(): (SubscriptionImpl)[] { + let buf = []; + for (let s of this.subs.values()) { + buf.push(s); + } + return buf; + } + + cancel(s: SubscriptionImpl): void { + if (s) { + s.close(); + this.subs.delete(s.sid); + } + } + + handleError(err?: NatsError) { + if (err) { + const re = /^'Permissions Violation for Subscription to "(\S+)"'/i; + const ma = re.exec(err.message); + if (ma) { + const subj = ma[1]; + this.subs.forEach((sub) => { + if (subj == sub.subject) { + sub.callback(err, {} as Msg); + sub.close(); + } + }); + } + } + } + + close() { + this.subs.forEach((sub) => { + sub.close(); + }); + } +} diff --git a/bundler/tests/.cache/untrusted/21e13d18cc0a3d17448d2c60c6eb7e64e2035e09.ts b/bundler/tests/.cache/untrusted/21e13d18cc0a3d17448d2c60c6eb7e64e2035e09.ts new file mode 100644 index 00000000000..c7a66dd1ec9 --- /dev/null +++ b/bundler/tests/.cache/untrusted/21e13d18cc0a3d17448d2c60c6eb7e64e2035e09.ts @@ -0,0 +1,265 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mysql/schema/tablecompiler.js + + +/* eslint max-len:0 no-console:0*/ + +// MySQL Table Builder & Compiler +// ------- +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import TableCompiler from '../../../schema/tablecompiler.js'; + +// Table Compiler +// ------ + +function TableCompiler_MySQL() { + TableCompiler.apply(this, arguments); +} + +inherits(TableCompiler_MySQL, TableCompiler); + +Object.assign(TableCompiler_MySQL.prototype, { + createQuery(columns, ifNot) { + const createStatement = ifNot + ? 'create table if not exists ' + : 'create table '; + const { client } = this; + let conn = {}; + let sql = + createStatement + this.tableName() + ' (' + columns.sql.join(', ') + ')'; + + // Check if the connection settings are set. + if (client.connectionSettings) { + conn = client.connectionSettings; + } + + const charset = this.single.charset || conn.charset || ''; + const collation = this.single.collate || conn.collate || ''; + const engine = this.single.engine || ''; + + // var conn = builder.client.connectionSettings; + if (charset) sql += ` default character set ${charset}`; + if (collation) sql += ` collate ${collation}`; + if (engine) sql += ` engine = ${engine}`; + + if (this.single.comment) { + const comment = this.single.comment || ''; + if (comment.length > 60) + this.client.logger.warn( + 'The max length for a table comment is 60 characters' + ); + sql += ` comment = '${comment}'`; + } + + this.pushQuery(sql); + }, + + addColumnsPrefix: 'add ', + + alterColumnsPrefix: 'modify ', + + dropColumnPrefix: 'drop ', + + // Compiles the comment on the table. + comment(comment) { + this.pushQuery(`alter table ${this.tableName()} comment = '${comment}'`); + }, + + changeType() { + // alter table + table + ' modify ' + wrapped + '// type'; + }, + + // Renames a column on the table. + renameColumn(from, to) { + const compiler = this; + const table = this.tableName(); + const wrapped = this.formatter.wrap(from) + ' ' + this.formatter.wrap(to); + + this.pushQuery({ + sql: + `show fields from ${table} where field = ` + + this.formatter.parameter(from), + output(resp) { + const column = resp[0]; + const runner = this; + return compiler.getFKRefs(runner).then(([refs]) => + new Promise((resolve, reject) => { + try { + if (!refs.length) { + resolve(); + } + resolve(compiler.dropFKRefs(runner, refs)); + } catch (e) { + reject(e); + } + }) + .then(function () { + let sql = `alter table ${table} change ${wrapped} ${column.Type}`; + + if (String(column.Null).toUpperCase() !== 'YES') { + sql += ` NOT NULL`; + } else { + // This doesn't matter for most cases except Timestamp, where this is important + sql += ` NULL`; + } + if (column.Default !== void 0 && column.Default !== null) { + sql += ` DEFAULT '${column.Default}'`; + } + + return runner.query({ + sql, + }); + }) + .then(function () { + if (!refs.length) { + return; + } + return compiler.createFKRefs( + runner, + refs.map(function (ref) { + if (ref.REFERENCED_COLUMN_NAME === from) { + ref.REFERENCED_COLUMN_NAME = to; + } + if (ref.COLUMN_NAME === from) { + ref.COLUMN_NAME = to; + } + return ref; + }) + ); + }) + ); + }, + }); + }, + + getFKRefs(runner) { + const formatter = this.client.formatter(this.tableBuilder); + const sql = + 'SELECT KCU.CONSTRAINT_NAME, KCU.TABLE_NAME, KCU.COLUMN_NAME, ' + + ' KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, ' + + ' RC.UPDATE_RULE, RC.DELETE_RULE ' + + 'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ' + + 'JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ' + + ' USING(CONSTRAINT_NAME)' + + 'WHERE KCU.REFERENCED_TABLE_NAME = ' + + formatter.parameter(this.tableNameRaw) + + ' ' + + ' AND KCU.CONSTRAINT_SCHEMA = ' + + formatter.parameter(this.client.database()) + + ' ' + + ' AND RC.CONSTRAINT_SCHEMA = ' + + formatter.parameter(this.client.database()); + + return runner.query({ + sql, + bindings: formatter.bindings, + }); + }, + + dropFKRefs(runner, refs) { + const formatter = this.client.formatter(this.tableBuilder); + + return Promise.all( + refs.map(function (ref) { + const constraintName = formatter.wrap(ref.CONSTRAINT_NAME); + const tableName = formatter.wrap(ref.TABLE_NAME); + return runner.query({ + sql: `alter table ${tableName} drop foreign key ${constraintName}`, + }); + }) + ); + }, + createFKRefs(runner, refs) { + const formatter = this.client.formatter(this.tableBuilder); + + return Promise.all( + refs.map(function (ref) { + const tableName = formatter.wrap(ref.TABLE_NAME); + const keyName = formatter.wrap(ref.CONSTRAINT_NAME); + const column = formatter.columnize(ref.COLUMN_NAME); + const references = formatter.columnize(ref.REFERENCED_COLUMN_NAME); + const inTable = formatter.wrap(ref.REFERENCED_TABLE_NAME); + const onUpdate = ` ON UPDATE ${ref.UPDATE_RULE}`; + const onDelete = ` ON DELETE ${ref.DELETE_RULE}`; + + return runner.query({ + sql: + `alter table ${tableName} add constraint ${keyName} ` + + 'foreign key (' + + column + + ') references ' + + inTable + + ' (' + + references + + ')' + + onUpdate + + onDelete, + }); + }) + ); + }, + index(columns, indexName, indexType) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + this.pushQuery( + `alter table ${this.tableName()} add${ + indexType ? ` ${indexType}` : '' + } index ${indexName}(${this.formatter.columnize(columns)})` + ); + }, + + primary(columns, constraintName) { + constraintName = constraintName + ? this.formatter.wrap(constraintName) + : this.formatter.wrap(`${this.tableNameRaw}_pkey`); + this.pushQuery( + `alter table ${this.tableName()} add primary key ${constraintName}(${this.formatter.columnize( + columns + )})` + ); + }, + + unique(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, columns); + this.pushQuery( + `alter table ${this.tableName()} add unique ${indexName}(${this.formatter.columnize( + columns + )})` + ); + }, + + // Compile a drop index command. + dropIndex(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + this.pushQuery(`alter table ${this.tableName()} drop index ${indexName}`); + }, + + // Compile a drop foreign key command. + dropForeign(columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('foreign', this.tableNameRaw, columns); + this.pushQuery( + `alter table ${this.tableName()} drop foreign key ${indexName}` + ); + }, + + // Compile a drop primary key command. + dropPrimary() { + this.pushQuery(`alter table ${this.tableName()} drop primary key`); + }, + + // Compile a drop unique key command. + dropUnique(column, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, column); + this.pushQuery(`alter table ${this.tableName()} drop index ${indexName}`); + }, +}); + +export default TableCompiler_MySQL; diff --git a/bundler/tests/.cache/untrusted/22572aa69f00d4cd00e81c8237c5ea61da7f4577.ts b/bundler/tests/.cache/untrusted/22572aa69f00d4cd00e81c8237c5ea61da7f4577.ts new file mode 100644 index 00000000000..24fa1a0c39a --- /dev/null +++ b/bundler/tests/.cache/untrusted/22572aa69f00d4cd00e81c8237c5ea61da7f4577.ts @@ -0,0 +1,1444 @@ +// Loaded from https://cdn.skypack.dev/-/buffer@v5.7.1-Crl6ndaY0FyV50ZOgBvz/dist=es2020,mode=imports/optimized/buffer.js + + +import base64 from "/-/base64-js@v1.5.1-W9sqY0mF5INkRg7HAvxn/dist=es2020,mode=imports/optimized/base64-js.js"; +import ieee7542 from "/-/ieee754@v1.2.1-wxdRuKvQQOTpW1dpWzFI/dist=es2020,mode=imports/optimized/ieee754.js"; +function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function(path, base) { + return commonjsRequire(path, base === void 0 || base === null ? module.path : base); + } + }, fn(module, module.exports), module.exports; +} +function commonjsRequire() { + throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs"); +} +var buffer = createCommonjsModule(function(module, exports) { + var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; + exports.Buffer = Buffer2; + exports.SlowBuffer = SlowBuffer2; + exports.INSPECT_MAX_BYTES = 50; + var K_MAX_LENGTH = 2147483647; + exports.kMaxLength = K_MAX_LENGTH; + Buffer2.TYPED_ARRAY_SUPPORT = typedArraySupport(); + if (!Buffer2.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { + console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."); + } + function typedArraySupport() { + try { + var arr = new Uint8Array(1); + var proto = {foo: function() { + return 42; + }}; + Object.setPrototypeOf(proto, Uint8Array.prototype); + Object.setPrototypeOf(arr, proto); + return arr.foo() === 42; + } catch (e) { + return false; + } + } + Object.defineProperty(Buffer2.prototype, "parent", { + enumerable: true, + get: function() { + if (!Buffer2.isBuffer(this)) + return void 0; + return this.buffer; + } + }); + Object.defineProperty(Buffer2.prototype, "offset", { + enumerable: true, + get: function() { + if (!Buffer2.isBuffer(this)) + return void 0; + return this.byteOffset; + } + }); + function createBuffer(length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"'); + } + var buf = new Uint8Array(length); + Object.setPrototypeOf(buf, Buffer2.prototype); + return buf; + } + function Buffer2(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + if (typeof encodingOrOffset === "string") { + throw new TypeError('The "string" argument must be of type string. Received type number'); + } + return allocUnsafe(arg); + } + return from(arg, encodingOrOffset, length); + } + Buffer2.poolSize = 8192; + function from(value, encodingOrOffset, length) { + if (typeof value === "string") { + return fromString(value, encodingOrOffset); + } + if (ArrayBuffer.isView(value)) { + return fromArrayView(value); + } + if (value == null) { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length); + } + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type number'); + } + var valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer2.from(valueOf, encodingOrOffset, length); + } + var b = fromObject(value); + if (b) + return b; + if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { + return Buffer2.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); + } + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + Buffer2.from = function(value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length); + }; + Object.setPrototypeOf(Buffer2.prototype, Uint8Array.prototype); + Object.setPrototypeOf(Buffer2, Uint8Array); + function assertSize(size) { + if (typeof size !== "number") { + throw new TypeError('"size" argument must be of type number'); + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + } + function alloc(size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size); + } + if (fill !== void 0) { + return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); + } + return createBuffer(size); + } + Buffer2.alloc = function(size, fill, encoding) { + return alloc(size, fill, encoding); + }; + function allocUnsafe(size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0); + } + Buffer2.allocUnsafe = function(size) { + return allocUnsafe(size); + }; + Buffer2.allocUnsafeSlow = function(size) { + return allocUnsafe(size); + }; + function fromString(string, encoding) { + if (typeof encoding !== "string" || encoding === "") { + encoding = "utf8"; + } + if (!Buffer2.isEncoding(encoding)) { + throw new TypeError("Unknown encoding: " + encoding); + } + var length = byteLength(string, encoding) | 0; + var buf = createBuffer(length); + var actual = buf.write(string, encoding); + if (actual !== length) { + buf = buf.slice(0, actual); + } + return buf; + } + function fromArrayLike(array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + var buf = createBuffer(length); + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf; + } + function fromArrayView(arrayView) { + if (isInstance(arrayView, Uint8Array)) { + var copy = new Uint8Array(arrayView); + return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); + } + return fromArrayLike(arrayView); + } + function fromArrayBuffer(array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds'); + } + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds'); + } + var buf; + if (byteOffset === void 0 && length === void 0) { + buf = new Uint8Array(array); + } else if (length === void 0) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + Object.setPrototypeOf(buf, Buffer2.prototype); + return buf; + } + function fromObject(obj) { + if (Buffer2.isBuffer(obj)) { + var len = checked(obj.length) | 0; + var buf = createBuffer(len); + if (buf.length === 0) { + return buf; + } + obj.copy(buf, 0, 0, len); + return buf; + } + if (obj.length !== void 0) { + if (typeof obj.length !== "number" || numberIsNaN(obj.length)) { + return createBuffer(0); + } + return fromArrayLike(obj); + } + if (obj.type === "Buffer" && Array.isArray(obj.data)) { + return fromArrayLike(obj.data); + } + } + function checked(length) { + if (length >= K_MAX_LENGTH) { + throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes"); + } + return length | 0; + } + function SlowBuffer2(length) { + if (+length != length) { + length = 0; + } + return Buffer2.alloc(+length); + } + Buffer2.isBuffer = function isBuffer(b) { + return b != null && b._isBuffer === true && b !== Buffer2.prototype; + }; + Buffer2.compare = function compare(a, b) { + if (isInstance(a, Uint8Array)) + a = Buffer2.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) + b = Buffer2.from(b, b.offset, b.byteLength); + if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { + throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); + } + if (a === b) + return 0; + var x = a.length; + var y = b.length; + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + if (x < y) + return -1; + if (y < x) + return 1; + return 0; + }; + Buffer2.isEncoding = function isEncoding(encoding) { + switch (String(encoding).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "latin1": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return true; + default: + return false; + } + }; + Buffer2.concat = function concat(list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } + if (list.length === 0) { + return Buffer2.alloc(0); + } + var i; + if (length === void 0) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + var buffer2 = Buffer2.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (isInstance(buf, Uint8Array)) { + if (pos + buf.length > buffer2.length) { + Buffer2.from(buf).copy(buffer2, pos); + } else { + Uint8Array.prototype.set.call(buffer2, buf, pos); + } + } else if (!Buffer2.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers'); + } else { + buf.copy(buffer2, pos); + } + pos += buf.length; + } + return buffer2; + }; + function byteLength(string, encoding) { + if (Buffer2.isBuffer(string)) { + return string.length; + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength; + } + if (typeof string !== "string") { + throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string); + } + var len = string.length; + var mustMatch = arguments.length > 2 && arguments[2] === true; + if (!mustMatch && len === 0) + return 0; + var loweredCase = false; + for (; ; ) { + switch (encoding) { + case "ascii": + case "latin1": + case "binary": + return len; + case "utf8": + case "utf-8": + return utf8ToBytes(string).length; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return len * 2; + case "hex": + return len >>> 1; + case "base64": + return base64ToBytes(string).length; + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length; + } + encoding = ("" + encoding).toLowerCase(); + loweredCase = true; + } + } + } + Buffer2.byteLength = byteLength; + function slowToString(encoding, start, end) { + var loweredCase = false; + if (start === void 0 || start < 0) { + start = 0; + } + if (start > this.length) { + return ""; + } + if (end === void 0 || end > this.length) { + end = this.length; + } + if (end <= 0) { + return ""; + } + end >>>= 0; + start >>>= 0; + if (end <= start) { + return ""; + } + if (!encoding) + encoding = "utf8"; + while (true) { + switch (encoding) { + case "hex": + return hexSlice(this, start, end); + case "utf8": + case "utf-8": + return utf8Slice(this, start, end); + case "ascii": + return asciiSlice(this, start, end); + case "latin1": + case "binary": + return latin1Slice(this, start, end); + case "base64": + return base64Slice(this, start, end); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return utf16leSlice(this, start, end); + default: + if (loweredCase) + throw new TypeError("Unknown encoding: " + encoding); + encoding = (encoding + "").toLowerCase(); + loweredCase = true; + } + } + } + Buffer2.prototype._isBuffer = true; + function swap(b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; + } + Buffer2.prototype.swap16 = function swap16() { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError("Buffer size must be a multiple of 16-bits"); + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this; + }; + Buffer2.prototype.swap32 = function swap32() { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError("Buffer size must be a multiple of 32-bits"); + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this; + }; + Buffer2.prototype.swap64 = function swap64() { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError("Buffer size must be a multiple of 64-bits"); + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this; + }; + Buffer2.prototype.toString = function toString() { + var length = this.length; + if (length === 0) + return ""; + if (arguments.length === 0) + return utf8Slice(this, 0, length); + return slowToString.apply(this, arguments); + }; + Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; + Buffer2.prototype.equals = function equals(b) { + if (!Buffer2.isBuffer(b)) + throw new TypeError("Argument must be a Buffer"); + if (this === b) + return true; + return Buffer2.compare(this, b) === 0; + }; + Buffer2.prototype.inspect = function inspect() { + var str = ""; + var max = exports.INSPECT_MAX_BYTES; + str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); + if (this.length > max) + str += " ... "; + return ""; + }; + if (customInspectSymbol) { + Buffer2.prototype[customInspectSymbol] = Buffer2.prototype.inspect; + } + Buffer2.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer2.from(target, target.offset, target.byteLength); + } + if (!Buffer2.isBuffer(target)) { + throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target); + } + if (start === void 0) { + start = 0; + } + if (end === void 0) { + end = target ? target.length : 0; + } + if (thisStart === void 0) { + thisStart = 0; + } + if (thisEnd === void 0) { + thisEnd = this.length; + } + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError("out of range index"); + } + if (thisStart >= thisEnd && start >= end) { + return 0; + } + if (thisStart >= thisEnd) { + return -1; + } + if (start >= end) { + return 1; + } + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + if (this === target) + return 0; + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break; + } + } + if (x < y) + return -1; + if (y < x) + return 1; + return 0; + }; + function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) { + if (buffer2.length === 0) + return -1; + if (typeof byteOffset === "string") { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 2147483647) { + byteOffset = 2147483647; + } else if (byteOffset < -2147483648) { + byteOffset = -2147483648; + } + byteOffset = +byteOffset; + if (numberIsNaN(byteOffset)) { + byteOffset = dir ? 0 : buffer2.length - 1; + } + if (byteOffset < 0) + byteOffset = buffer2.length + byteOffset; + if (byteOffset >= buffer2.length) { + if (dir) + return -1; + else + byteOffset = buffer2.length - 1; + } else if (byteOffset < 0) { + if (dir) + byteOffset = 0; + else + return -1; + } + if (typeof val === "string") { + val = Buffer2.from(val, encoding); + } + if (Buffer2.isBuffer(val)) { + if (val.length === 0) { + return -1; + } + return arrayIndexOf(buffer2, val, byteOffset, encoding, dir); + } else if (typeof val === "number") { + val = val & 255; + if (typeof Uint8Array.prototype.indexOf === "function") { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset); + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset); + } + } + return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir); + } + throw new TypeError("val must be string, number or Buffer"); + } + function arrayIndexOf(arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + if (encoding !== void 0) { + encoding = String(encoding).toLowerCase(); + if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") { + if (arr.length < 2 || val.length < 2) { + return -1; + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + function read(buf, i2) { + if (indexSize === 1) { + return buf[i2]; + } else { + return buf.readUInt16BE(i2 * indexSize); + } + } + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) + foundIndex = i; + if (i - foundIndex + 1 === valLength) + return foundIndex * indexSize; + } else { + if (foundIndex !== -1) + i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) + byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break; + } + } + if (found) + return i; + } + } + return -1; + } + Buffer2.prototype.includes = function includes(val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1; + }; + Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true); + }; + Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false); + }; + function hexWrite(buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + var strLen = string.length; + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) + return i; + buf[offset + i] = parsed; + } + return i; + } + function utf8Write(buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); + } + function asciiWrite(buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length); + } + function base64Write(buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length); + } + function ucs2Write(buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); + } + Buffer2.prototype.write = function write(string, offset, length, encoding) { + if (offset === void 0) { + encoding = "utf8"; + length = this.length; + offset = 0; + } else if (length === void 0 && typeof offset === "string") { + encoding = offset; + length = this.length; + offset = 0; + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === void 0) + encoding = "utf8"; + } else { + encoding = length; + length = void 0; + } + } else { + throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + } + var remaining = this.length - offset; + if (length === void 0 || length > remaining) + length = remaining; + if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { + throw new RangeError("Attempt to write outside buffer bounds"); + } + if (!encoding) + encoding = "utf8"; + var loweredCase = false; + for (; ; ) { + switch (encoding) { + case "hex": + return hexWrite(this, string, offset, length); + case "utf8": + case "utf-8": + return utf8Write(this, string, offset, length); + case "ascii": + case "latin1": + case "binary": + return asciiWrite(this, string, offset, length); + case "base64": + return base64Write(this, string, offset, length); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return ucs2Write(this, string, offset, length); + default: + if (loweredCase) + throw new TypeError("Unknown encoding: " + encoding); + encoding = ("" + encoding).toLowerCase(); + loweredCase = true; + } + } + }; + Buffer2.prototype.toJSON = function toJSON() { + return { + type: "Buffer", + data: Array.prototype.slice.call(this._arr || this, 0) + }; + }; + function base64Slice(buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf); + } else { + return base64.fromByteArray(buf.slice(start, end)); + } + } + function utf8Slice(buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + switch (bytesPerSequence) { + case 1: + if (firstByte < 128) { + codePoint = firstByte; + } + break; + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 192) === 128) { + tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; + if (tempCodePoint > 127) { + codePoint = tempCodePoint; + } + } + break; + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; + if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { + codePoint = tempCodePoint; + } + } + break; + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { + tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; + if (tempCodePoint > 65535 && tempCodePoint < 1114112) { + codePoint = tempCodePoint; + } + } + } + } + if (codePoint === null) { + codePoint = 65533; + bytesPerSequence = 1; + } else if (codePoint > 65535) { + codePoint -= 65536; + res.push(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; + } + res.push(codePoint); + i += bytesPerSequence; + } + return decodeCodePointsArray(res); + } + var MAX_ARGUMENTS_LENGTH = 4096; + function decodeCodePointsArray(codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints); + } + var res = ""; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); + } + return res; + } + function asciiSlice(buf, start, end) { + var ret = ""; + end = Math.min(buf.length, end); + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 127); + } + return ret; + } + function latin1Slice(buf, start, end) { + var ret = ""; + end = Math.min(buf.length, end); + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret; + } + function hexSlice(buf, start, end) { + var len = buf.length; + if (!start || start < 0) + start = 0; + if (!end || end < 0 || end > len) + end = len; + var out = ""; + for (var i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]]; + } + return out; + } + function utf16leSlice(buf, start, end) { + var bytes = buf.slice(start, end); + var res = ""; + for (var i = 0; i < bytes.length - 1; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res; + } + Buffer2.prototype.slice = function slice(start, end) { + var len = this.length; + start = ~~start; + end = end === void 0 ? len : ~~end; + if (start < 0) { + start += len; + if (start < 0) + start = 0; + } else if (start > len) { + start = len; + } + if (end < 0) { + end += len; + if (end < 0) + end = 0; + } else if (end > len) { + end = len; + } + if (end < start) + end = start; + var newBuf = this.subarray(start, end); + Object.setPrototypeOf(newBuf, Buffer2.prototype); + return newBuf; + }; + function checkOffset(offset, ext, length) { + if (offset % 1 !== 0 || offset < 0) + throw new RangeError("offset is not uint"); + if (offset + ext > length) + throw new RangeError("Trying to access beyond buffer length"); + } + Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) + checkOffset(offset, byteLength2, this.length); + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + return val; + }; + Buffer2.prototype.readUintBE = Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength2, this.length); + } + var val = this[offset + --byteLength2]; + var mul = 1; + while (byteLength2 > 0 && (mul *= 256)) { + val += this[offset + --byteLength2] * mul; + } + return val; + }; + Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 1, this.length); + return this[offset]; + }; + Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 2, this.length); + return this[offset] | this[offset + 1] << 8; + }; + Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 2, this.length); + return this[offset] << 8 | this[offset + 1]; + }; + Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; + }; + Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); + }; + Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) + checkOffset(offset, byteLength2, this.length); + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength2 && (mul *= 256)) { + val += this[offset + i] * mul; + } + mul *= 128; + if (val >= mul) + val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) + checkOffset(offset, byteLength2, this.length); + var i = byteLength2; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 256)) { + val += this[offset + --i] * mul; + } + mul *= 128; + if (val >= mul) + val -= Math.pow(2, 8 * byteLength2); + return val; + }; + Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 1, this.length); + if (!(this[offset] & 128)) + return this[offset]; + return (255 - this[offset] + 1) * -1; + }; + Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 2, this.length); + var val = this[offset] | this[offset + 1] << 8; + return val & 32768 ? val | 4294901760 : val; + }; + Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 2, this.length); + var val = this[offset + 1] | this[offset] << 8; + return val & 32768 ? val | 4294901760 : val; + }; + Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; + }; + Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; + }; + Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return ieee7542.read(this, offset, true, 23, 4); + }; + Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 4, this.length); + return ieee7542.read(this, offset, false, 23, 4); + }; + Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 8, this.length); + return ieee7542.read(this, offset, true, 52, 8); + }; + Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) + checkOffset(offset, 8, this.length); + return ieee7542.read(this, offset, false, 52, 8); + }; + function checkInt(buf, value, offset, ext, max, min) { + if (!Buffer2.isBuffer(buf)) + throw new TypeError('"buffer" argument must be a Buffer instance'); + if (value > max || value < min) + throw new RangeError('"value" argument is out of bounds'); + if (offset + ext > buf.length) + throw new RangeError("Index out of range"); + } + Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + var mul = 1; + var i = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer2.prototype.writeUintBE = Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength2 = byteLength2 >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength2) - 1; + checkInt(this, value, offset, byteLength2, maxBytes, 0); + } + var i = byteLength2 - 1; + var mul = 1; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + this[offset + i] = value / mul & 255; + } + return offset + byteLength2; + }; + Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 1, 255, 0); + this[offset] = value & 255; + return offset + 1; + }; + Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 2, 65535, 0); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 2, 65535, 0); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + return offset + 2; + }; + Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 4, 4294967295, 0); + this[offset + 3] = value >>> 24; + this[offset + 2] = value >>> 16; + this[offset + 1] = value >>> 8; + this[offset] = value & 255; + return offset + 4; + }; + Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 4, 4294967295, 0); + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + return offset + 4; + }; + Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 255; + while (++i < byteLength2 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength2 - 1); + checkInt(this, value, offset, byteLength2, limit - 1, -limit); + } + var i = byteLength2 - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 255; + while (--i >= 0 && (mul *= 256)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = (value / mul >> 0) - sub & 255; + } + return offset + byteLength2; + }; + Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 1, 127, -128); + if (value < 0) + value = 255 + value + 1; + this[offset] = value & 255; + return offset + 1; + }; + Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 2, 32767, -32768); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + return offset + 2; + }; + Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 2, 32767, -32768); + this[offset] = value >>> 8; + this[offset + 1] = value & 255; + return offset + 2; + }; + Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 4, 2147483647, -2147483648); + this[offset] = value & 255; + this[offset + 1] = value >>> 8; + this[offset + 2] = value >>> 16; + this[offset + 3] = value >>> 24; + return offset + 4; + }; + Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) + checkInt(this, value, offset, 4, 2147483647, -2147483648); + if (value < 0) + value = 4294967295 + value + 1; + this[offset] = value >>> 24; + this[offset + 1] = value >>> 16; + this[offset + 2] = value >>> 8; + this[offset + 3] = value & 255; + return offset + 4; + }; + function checkIEEE754(buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) + throw new RangeError("Index out of range"); + if (offset < 0) + throw new RangeError("Index out of range"); + } + function writeFloat(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + ieee7542.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4; + } + Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert); + }; + Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert); + }; + function writeDouble(buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + ieee7542.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8; + } + Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert); + }; + Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert); + }; + Buffer2.prototype.copy = function copy(target, targetStart, start, end) { + if (!Buffer2.isBuffer(target)) + throw new TypeError("argument should be a Buffer"); + if (!start) + start = 0; + if (!end && end !== 0) + end = this.length; + if (targetStart >= target.length) + targetStart = target.length; + if (!targetStart) + targetStart = 0; + if (end > 0 && end < start) + end = start; + if (end === start) + return 0; + if (target.length === 0 || this.length === 0) + return 0; + if (targetStart < 0) { + throw new RangeError("targetStart out of bounds"); + } + if (start < 0 || start >= this.length) + throw new RangeError("Index out of range"); + if (end < 0) + throw new RangeError("sourceEnd out of bounds"); + if (end > this.length) + end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + var len = end - start; + if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { + this.copyWithin(targetStart, start, end); + } else { + Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); + } + return len; + }; + Buffer2.prototype.fill = function fill(val, start, end, encoding) { + if (typeof val === "string") { + if (typeof start === "string") { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === "string") { + encoding = end; + end = this.length; + } + if (encoding !== void 0 && typeof encoding !== "string") { + throw new TypeError("encoding must be a string"); + } + if (typeof encoding === "string" && !Buffer2.isEncoding(encoding)) { + throw new TypeError("Unknown encoding: " + encoding); + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (encoding === "utf8" && code < 128 || encoding === "latin1") { + val = code; + } + } + } else if (typeof val === "number") { + val = val & 255; + } else if (typeof val === "boolean") { + val = Number(val); + } + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError("Out of range index"); + } + if (end <= start) { + return this; + } + start = start >>> 0; + end = end === void 0 ? this.length : end >>> 0; + if (!val) + val = 0; + var i; + if (typeof val === "number") { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = Buffer2.isBuffer(val) ? val : Buffer2.from(val, encoding); + var len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + '" is invalid for argument "value"'); + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + return this; + }; + var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + function base64clean(str) { + str = str.split("=")[0]; + str = str.trim().replace(INVALID_BASE64_RE, ""); + if (str.length < 2) + return ""; + while (str.length % 4 !== 0) { + str = str + "="; + } + return str; + } + function utf8ToBytes(string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + if (codePoint > 55295 && codePoint < 57344) { + if (!leadSurrogate) { + if (codePoint > 56319) { + if ((units -= 3) > -1) + bytes.push(239, 191, 189); + continue; + } else if (i + 1 === length) { + if ((units -= 3) > -1) + bytes.push(239, 191, 189); + continue; + } + leadSurrogate = codePoint; + continue; + } + if (codePoint < 56320) { + if ((units -= 3) > -1) + bytes.push(239, 191, 189); + leadSurrogate = codePoint; + continue; + } + codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; + } else if (leadSurrogate) { + if ((units -= 3) > -1) + bytes.push(239, 191, 189); + } + leadSurrogate = null; + if (codePoint < 128) { + if ((units -= 1) < 0) + break; + bytes.push(codePoint); + } else if (codePoint < 2048) { + if ((units -= 2) < 0) + break; + bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128); + } else if (codePoint < 65536) { + if ((units -= 3) < 0) + break; + bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + } else if (codePoint < 1114112) { + if ((units -= 4) < 0) + break; + bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128); + } else { + throw new Error("Invalid code point"); + } + } + return bytes; + } + function asciiToBytes(str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + byteArray.push(str.charCodeAt(i) & 255); + } + return byteArray; + } + function utf16leToBytes(str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) + break; + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + return byteArray; + } + function base64ToBytes(str) { + return base64.toByteArray(base64clean(str)); + } + function blitBuffer(src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if (i + offset >= dst.length || i >= src.length) + break; + dst[i + offset] = src[i]; + } + return i; + } + function isInstance(obj, type) { + return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; + } + function numberIsNaN(obj) { + return obj !== obj; + } + var hexSliceLookupTable = function() { + var alphabet = "0123456789abcdef"; + var table = new Array(256); + for (var i = 0; i < 16; ++i) { + var i16 = i * 16; + for (var j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j]; + } + } + return table; + }(); +}); +var Buffer = buffer.Buffer; +var INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES; +var SlowBuffer = buffer.SlowBuffer; +export default buffer; +var kMaxLength = buffer.kMaxLength; +export {Buffer, INSPECT_MAX_BYTES, SlowBuffer, buffer as __moduleExports, kMaxLength}; diff --git a/bundler/tests/.cache/untrusted/23560df076797cf873fc1e6a358a47e6b8496a3b.ts b/bundler/tests/.cache/untrusted/23560df076797cf873fc1e6a358a47e6b8496a3b.ts new file mode 100644 index 00000000000..b212f3a0f3d --- /dev/null +++ b/bundler/tests/.cache/untrusted/23560df076797cf873fc1e6a358a47e6b8496a3b.ts @@ -0,0 +1,76 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/public.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Codec } from "./codec.ts"; +import { KeyPair, NKeysError, NKeysErrorCode } from "./nkeys.ts"; +import { getEd25519Helper } from "./helper.ts"; + +/** + * @ignore + */ +export class PublicKey implements KeyPair { + publicKey?: Uint8Array; + + constructor(publicKey: Uint8Array) { + this.publicKey = publicKey; + } + + getPublicKey(): string { + if (!this.publicKey) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + return new TextDecoder().decode(this.publicKey); + } + + getPrivateKey(): Uint8Array { + if (!this.publicKey) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + throw new NKeysError(NKeysErrorCode.PublicKeyOnly); + } + + getSeed(): Uint8Array { + if (!this.publicKey) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + throw new NKeysError(NKeysErrorCode.PublicKeyOnly); + } + + sign(_: Uint8Array): Uint8Array { + if (!this.publicKey) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + throw new NKeysError(NKeysErrorCode.CannotSign); + } + + verify(input: Uint8Array, sig: Uint8Array): boolean { + if (!this.publicKey) { + throw new NKeysError(NKeysErrorCode.ClearedPair); + } + let buf = Codec._decode(this.publicKey); + return getEd25519Helper().verify(input, sig, buf.slice(1)); + } + + clear(): void { + if (!this.publicKey) { + return; + } + this.publicKey.fill(0); + this.publicKey = undefined; + } +} diff --git a/bundler/tests/.cache/untrusted/23bcdf59f6d6ef51b1971f745ae4c55a749c15b8.ts b/bundler/tests/.cache/untrusted/23bcdf59f6d6ef51b1971f745ae4c55a749c15b8.ts new file mode 100644 index 00000000000..0e33c6efc70 --- /dev/null +++ b/bundler/tests/.cache/untrusted/23bcdf59f6d6ef51b1971f745ae4c55a749c15b8.ts @@ -0,0 +1,104 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/schema/compiler.js + + +import { pushQuery, pushAdditional, unshiftQuery } from './helpers.js'; + +// The "SchemaCompiler" takes all of the query statements which have been +// gathered in the "SchemaBuilder" and turns them into an array of +// properly formatted / bound query strings. +function SchemaCompiler(client, builder) { + this.builder = builder; + this._commonBuilder = this.builder; + this.client = client; + this.schema = builder._schema; + this.formatter = client.formatter(builder); + this.sequence = []; +} + +function throwOnlyPGError(operationName) { + throw new Error( + `${operationName} is not supported for this dialect (only PostgreSQL supports it currently).` + ); +} + +Object.assign(SchemaCompiler.prototype, { + pushQuery: pushQuery, + + pushAdditional: pushAdditional, + + unshiftQuery: unshiftQuery, + + createTable: buildTable('create'), + + createTableIfNotExists: buildTable('createIfNot'), + + createSchema: () => { + throwOnlyPGError('createSchema'); + }, + createSchemaIfNotExists: () => { + throwOnlyPGError('createSchemaIfNotExists'); + }, + dropSchema: () => { + throwOnlyPGError('dropSchema'); + }, + dropSchemaIfExists: () => { + throwOnlyPGError('dropSchemaIfExists'); + }, + + alterTable: buildTable('alter'), + + dropTablePrefix: 'drop table ', + + dropTable(tableName) { + this.pushQuery( + this.dropTablePrefix + + this.formatter.wrap(prefixedTableName(this.schema, tableName)) + ); + }, + + dropTableIfExists(tableName) { + this.pushQuery( + this.dropTablePrefix + + 'if exists ' + + this.formatter.wrap(prefixedTableName(this.schema, tableName)) + ); + }, + + raw(sql, bindings) { + this.sequence.push(this.client.raw(sql, bindings).toSQL()); + }, + + toSQL() { + const sequence = this.builder._sequence; + for (let i = 0, l = sequence.length; i < l; i++) { + const query = sequence[i]; + this[query.method].apply(this, query.args); + } + return this.sequence; + }, +}); + +function buildTable(type) { + return function (tableName, fn) { + const builder = this.client.tableBuilder(type, tableName, fn); + + // pass queryContext down to tableBuilder but do not overwrite it if already set + const queryContext = this.builder.queryContext(); + if (queryContext !== undefined && builder.queryContext() === undefined) { + builder.queryContext(queryContext); + } + + builder.setSchema(this.schema); + const sql = builder.toSQL(); + + for (let i = 0, l = sql.length; i < l; i++) { + this.sequence.push(sql[i]); + } + }; +} + +function prefixedTableName(prefix, table) { + return prefix ? `${prefix}.${table}` : table; +} + +export default SchemaCompiler; diff --git a/bundler/tests/.cache/untrusted/23ce8ab4a87f8211822f180cfff031243cb062c9.ts b/bundler/tests/.cache/untrusted/23ce8ab4a87f8211822f180cfff031243cb062c9.ts new file mode 100644 index 00000000000..a1be2058df4 --- /dev/null +++ b/bundler/tests/.cache/untrusted/23ce8ab4a87f8211822f180cfff031243cb062c9.ts @@ -0,0 +1,12 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/util/save-async-stack.js + + +export default function saveAsyncStack(instance, lines) { + if (instance.client.config.asyncStackTraces) { + // a hack to get a callstack into the client code despite this + // node.js bug https://github.com/nodejs/node/issues/11865 + const stackByLines = new Error().stack.split('\n'); + stackByLines.splice(0, lines); + instance._asyncStack = stackByLines; + } +}; diff --git a/bundler/tests/.cache/untrusted/23e14537266a75e92df9bc1b8813f243d1e6d4d3.ts b/bundler/tests/.cache/untrusted/23e14537266a75e92df9bc1b8813f243d1e6d4d3.ts new file mode 100644 index 00000000000..c5a6e7e1902 --- /dev/null +++ b/bundler/tests/.cache/untrusted/23e14537266a75e92df9bc1b8813f243d1e6d4d3.ts @@ -0,0 +1,12 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/mod.ts + + +// Dex +// -------------- +// (c) 2020-present Anthony Mancini +// Dex may be freely distributed under the MIT license. +// For details and documentation: +// http://knexjs.org + +import dex from './lib/index.js'; +export default dex; diff --git a/bundler/tests/.cache/untrusted/251a32a6bfaa8180caebb02d6f627cf52510ca3b.ts b/bundler/tests/.cache/untrusted/251a32a6bfaa8180caebb02d6f627cf52510ca3b.ts new file mode 100644 index 00000000000..b8fdda11e6f --- /dev/null +++ b/bundler/tests/.cache/untrusted/251a32a6bfaa8180caebb02d6f627cf52510ca3b.ts @@ -0,0 +1,285 @@ +// Loaded from https://cdn.skypack.dev/-/@octokit/endpoint@v6.0.11-srDmNWrALHw5STKLaFHD/dist=es2020,mode=imports/optimized/@octokit/endpoint.js + + +import {isPlainObject} from "/-/is-plain-object@v5.0.0-8mrVMp9y5RYdpZYGe1Tt/dist=es2020,mode=imports/optimized/is-plain-object.js"; +import {getUserAgent} from "/-/universal-user-agent@v6.0.0-fUAPE3UH5QP7qG0fd0dH/dist=es2020,mode=imports/optimized/universal-user-agent.js"; +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach((key) => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) + Object.assign(result, {[key]: options[key]}); + else + result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, {[key]: options[key]}); + } + }); + return result; +} +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? {method, url} : {url: method}, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter((preview) => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, "")); + return mergedOptions; +} +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map((name) => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} +const urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} +function omit(object, keysToOmit) { + return Object.keys(object).filter((option) => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + return part; + }).join(""); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context, operator, key, modifier) { + var value = context[key], result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function(_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function(variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); +} +function parse(options) { + let method = options.method.toUpperCase(); + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, [ + "method", + "baseUrl", + "url", + "headers", + "request", + "mediaType" + ]); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map((preview) => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } else { + headers["content-length"] = 0; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign({method, url, headers}, typeof body !== "undefined" ? {body} : null, options.request ? {request: options.request} : null); +} +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); +} +const VERSION = "6.0.11"; +const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; +const endpoint = withDefaults(null, DEFAULTS); +export {endpoint}; +export default null; diff --git a/bundler/tests/.cache/untrusted/259884233b63423f7426c41adef49eb8b6612351.ts b/bundler/tests/.cache/untrusted/259884233b63423f7426c41adef49eb8b6612351.ts new file mode 100644 index 00000000000..9ce71f80c32 --- /dev/null +++ b/bundler/tests/.cache/untrusted/259884233b63423f7426c41adef49eb8b6612351.ts @@ -0,0 +1,31 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/mod.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type { KeyPair } from "./nkeys.ts"; +export { + createAccount, + createOperator, + createPair, + createUser, + fromPublic, + fromSeed, + NKeysError, + NKeysErrorCode, + Prefix, +} from "./nkeys.ts"; + +export { decode, encode } from "./util.ts"; diff --git a/bundler/tests/.cache/untrusted/26571d4047976698c61fed52c748398c855dd6ca.ts b/bundler/tests/.cache/untrusted/26571d4047976698c61fed52c748398c855dd6ca.ts new file mode 100644 index 00000000000..ba144fd7a0e --- /dev/null +++ b/bundler/tests/.cache/untrusted/26571d4047976698c61fed52c748398c855dd6ca.ts @@ -0,0 +1,63 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/redshift/schema/columncompiler.js + + +// Redshift Column Compiler +// ------- + +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import ColumnCompiler_PG from '../../postgres/schema/columncompiler.js'; + +function ColumnCompiler_Redshift() { + ColumnCompiler_PG.apply(this, arguments); +} +inherits(ColumnCompiler_Redshift, ColumnCompiler_PG); + +Object.assign(ColumnCompiler_Redshift.prototype, { + // Types: + // ------ + bigincrements: 'bigint identity(1,1) primary key not null', + binary: 'varchar(max)', + bit(column) { + return column.length !== false ? `char(${column.length})` : 'char(1)'; + }, + blob: 'varchar(max)', + enu: 'varchar(255)', + enum: 'varchar(255)', + increments: 'integer identity(1,1) primary key not null', + json: 'varchar(max)', + jsonb: 'varchar(max)', + longblob: 'varchar(max)', + mediumblob: 'varchar(16777218)', + set: 'text', + text: 'varchar(max)', + datetime(without) { + return without ? 'timestamp' : 'timestamptz'; + }, + timestamp(without) { + return without ? 'timestamp' : 'timestamptz'; + }, + tinyblob: 'varchar(256)', + uuid: 'char(36)', + varbinary: 'varchar(max)', + bigint: 'bigint', + bool: 'boolean', + double: 'double precision', + floating: 'real', + smallint: 'smallint', + tinyint: 'smallint', + + // Modifiers: + // ------ + comment(comment) { + this.pushAdditional(function () { + this.pushQuery( + `comment on column ${this.tableCompiler.tableName()}.` + + this.formatter.wrap(this.args[0]) + + ' is ' + + (comment ? `'${comment}'` : 'NULL') + ); + }, comment); + }, +}); + +export default ColumnCompiler_Redshift; diff --git a/bundler/tests/.cache/untrusted/26c8b319b17ce4a1d86ae8cc656ab38c3afe3669.ts b/bundler/tests/.cache/untrusted/26c8b319b17ce4a1d86ae8cc656ab38c3afe3669.ts new file mode 100644 index 00000000000..ac96ac82d64 --- /dev/null +++ b/bundler/tests/.cache/untrusted/26c8b319b17ce4a1d86ae8cc656ab38c3afe3669.ts @@ -0,0 +1,87 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/schema/builder.js + + +import inherits from '../deps/inherits@2.0.4/inherits.js'; +import { EventEmitter } from '../deps/@jspm/core@1.1.0/nodelibs/events.js'; +import _ from '../deps/lodash@4.17.15/index.js'; +const toArray = _.toArray; +import { addQueryContext } from '../helpers.js'; +import saveAsyncStack from '../util/save-async-stack.js'; + +// Constructor for the builder instance, typically called from +// `knex.builder`, accepting the current `knex` instance, +// and pulling out the `client` and `grammar` from the current +// knex instance. +function SchemaBuilder(client) { + this.client = client; + this._sequence = []; + + if (client.config) { + this._debug = client.config.debug; + saveAsyncStack(this, 4); + } +} + +inherits(SchemaBuilder, EventEmitter); + +// Each of the schema builder methods just add to the +// "_sequence" array for consistency. +[ + 'createTable', + 'createTableIfNotExists', + 'createSchema', + 'createSchemaIfNotExists', + 'dropSchema', + 'dropSchemaIfExists', + 'createExtension', + 'createExtensionIfNotExists', + 'dropExtension', + 'dropExtensionIfExists', + 'table', + 'alterTable', + 'hasTable', + 'hasColumn', + 'dropTable', + 'renameTable', + 'dropTableIfExists', + 'raw', +].forEach(function (method) { + SchemaBuilder.prototype[method] = function () { + if (method === 'createTableIfNotExists') { + this.client.logger.warn( + [ + 'Use async .hasTable to check if table exists and then use plain .createTable. Since ', + '.createTableIfNotExists actually just generates plain "CREATE TABLE IF NOT EXIST..." ', + 'query it will not work correctly if there are any alter table queries generated for ', + 'columns afterwards. To not break old migrations this function is left untouched for now', + ', but it should not be used when writing new code and it is removed from documentation.', + ].join('') + ); + } + if (method === 'table') method = 'alterTable'; + this._sequence.push({ + method, + args: toArray(arguments), + }); + return this; + }; +}); + +import interfacelib from '../interface.js'; +interfacelib(SchemaBuilder); +addQueryContext(SchemaBuilder); + +SchemaBuilder.prototype.withSchema = function (schemaName) { + this._schema = schemaName; + return this; +}; + +SchemaBuilder.prototype.toString = function () { + return this.toQuery(); +}; + +SchemaBuilder.prototype.toSQL = function () { + return this.client.schemaCompiler(this).toSQL(); +}; + +export default SchemaBuilder; diff --git a/bundler/tests/.cache/untrusted/26f07536ceb03d5c6b1b7cb116a8acfe4a1ebcf3.ts b/bundler/tests/.cache/untrusted/26f07536ceb03d5c6b1b7cb116a8acfe4a1ebcf3.ts new file mode 100644 index 00000000000..055c337e31d --- /dev/null +++ b/bundler/tests/.cache/untrusted/26f07536ceb03d5c6b1b7cb116a8acfe4a1ebcf3.ts @@ -0,0 +1,404 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/poly1305.ts + + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +* +* Ported to TypeScript in 2018 by K. +*/ + +import { ByteArray, HalfArray } from './array.ts'; + +export interface Poly1305 { + buffer: ByteArray; + r: HalfArray + h: HalfArray; + pad: HalfArray; + leftover: number; + fin: number; +} + +export function poly1305_init(key: ByteArray): Poly1305 { + const r = HalfArray(10); + const pad = HalfArray(8); + + let t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[0] & 0xff | (key[1] & 0xff) << 8; r[0] = (t0) & 0x1fff; + t1 = key[2] & 0xff | (key[3] & 0xff) << 8; r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[4] & 0xff | (key[5] & 0xff) << 8; r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[6] & 0xff | (key[7] & 0xff) << 8; r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[8] & 0xff | (key[9] & 0xff) << 8; r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + + r[5] = ((t4 >>> 1)) & 0x1ffe; + + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + + r[9] = ((t7 >>> 5)) & 0x007f; + + pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; + + return { + buffer: ByteArray(16), + r, + h: HalfArray(10), + pad, + leftover: 0, + fin: 0, + }; +}; + +export function poly1305_blocks(self: Poly1305, m: ByteArray, mpos: number, bytes: number) { + const hibit = self.fin ? 0 : (1 << 11); + + let t0, t1, t2, t3, t4, t5, t6, t7, c; + let d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + const { h, r } = self; + + let h0 = h[0], + h1 = h[1], + h2 = h[2], + h3 = h[3], + h4 = h[4], + h5 = h[5], + h6 = h[6], + h7 = h[7], + h8 = h[8], + h9 = h[9]; + + const r0 = r[0], + r1 = r[1], + r2 = r[2], + r3 = r[3], + r4 = r[4], + r5 = r[5], + r6 = r[6], + r7 = r[7], + r8 = r[8], + r9 = r[9]; + + while (bytes >= 16) { + t0 = m[mpos + 0] & 0xff | (m[mpos + 1] & 0xff) << 8; h0 += (t0) & 0x1fff; + t1 = m[mpos + 2] & 0xff | (m[mpos + 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos + 4] & 0xff | (m[mpos + 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos + 6] & 0xff | (m[mpos + 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos + 8] & 0xff | (m[mpos + 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos + 10] & 0xff | (m[mpos + 11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos + 12] & 0xff | (m[mpos + 13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos + 14] & 0xff | (m[mpos + 15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +}; + +export function poly1305_finish(self: Poly1305, mac: ByteArray, macpos: number) { + const g = HalfArray(10); + let c, mask, f, i; + + const { buffer, h, pad, leftover } = self; + + if (leftover) { + i = leftover; + buffer[i++] = 1; + for (; i < 16; i++) buffer[i] = 0; + self.fin = 1; + poly1305_blocks(self, buffer, 0, 16); + } + + c = h[1] >>> 13; + h[1] &= 0x1fff; + + for (i = 2; i < 10; i++) { + h[i] += c; + c = h[i] >>> 13; + h[i] &= 0x1fff; + } + + h[0] += (c * 5); + + c = h[0] >>> 13; + + h[0] &= 0x1fff; + h[1] += c; + + c = h[1] >>> 13; + + h[1] &= 0x1fff; + h[2] += c; + + g[0] = h[0] + 5; + + c = g[0] >>> 13; + + g[0] &= 0x1fff; + + for (i = 1; i < 10; i++) { + g[i] = h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + + for (i = 0; i < 10; i++) g[i] &= mask; + + mask = ~mask; + + for (i = 0; i < 10; i++) h[i] = (h[i] & mask) | g[i]; + + h[0] = ((h[0]) | (h[1] << 13)) & 0xffff; + h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff; + h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff; + h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff; + h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff; + h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff; + h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff; + h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff; + + f = h[0] + pad[0]; + + h[0] = f & 0xffff; + + for (i = 1; i < 8; i++) { + f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0; + h[i] = f & 0xffff; + } + + mac[macpos + 0] = (h[0] >>> 0) & 0xff; + mac[macpos + 1] = (h[0] >>> 8) & 0xff; + mac[macpos + 2] = (h[1] >>> 0) & 0xff; + mac[macpos + 3] = (h[1] >>> 8) & 0xff; + mac[macpos + 4] = (h[2] >>> 0) & 0xff; + mac[macpos + 5] = (h[2] >>> 8) & 0xff; + mac[macpos + 6] = (h[3] >>> 0) & 0xff; + mac[macpos + 7] = (h[3] >>> 8) & 0xff; + mac[macpos + 8] = (h[4] >>> 0) & 0xff; + mac[macpos + 9] = (h[4] >>> 8) & 0xff; + mac[macpos + 10] = (h[5] >>> 0) & 0xff; + mac[macpos + 11] = (h[5] >>> 8) & 0xff; + mac[macpos + 12] = (h[6] >>> 0) & 0xff; + mac[macpos + 13] = (h[6] >>> 8) & 0xff; + mac[macpos + 14] = (h[7] >>> 0) & 0xff; + mac[macpos + 15] = (h[7] >>> 8) & 0xff; +}; + +export function poly1305_update(self: Poly1305, m: ByteArray, mpos: number, bytes: number) { + let i, want; + + const { buffer } = self; + + if (self.leftover) { + want = (16 - self.leftover); + if (want > bytes) want = bytes; + + for (i = 0; i < want; i++) buffer[self.leftover + i] = m[mpos + i]; + + bytes -= want; + mpos += want; + self.leftover += want; + + if (self.leftover < 16) return; + + poly1305_blocks(self, buffer, 0, 16); + + self.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + poly1305_blocks(self, m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) buffer[self.leftover + i] = m[mpos + i]; + self.leftover += bytes; + } +} diff --git a/bundler/tests/.cache/untrusted/26fabd47cc843bca963ac54628ac9cb949146d47.ts b/bundler/tests/.cache/untrusted/26fabd47cc843bca963ac54628ac9cb949146d47.ts new file mode 100644 index 00000000000..f29d153a5cb --- /dev/null +++ b/bundler/tests/.cache/untrusted/26fabd47cc843bca963ac54628ac9cb949146d47.ts @@ -0,0 +1,87 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/muxsubscription.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import type { Request } from "./request.ts"; +import type { Msg } from "./types.ts"; +import { ErrorCode, NatsError } from "./error.ts"; +import type { MsgHdrsImpl } from "./headers.ts"; +import { createInbox } from "./protocol.ts"; + +export class MuxSubscription { + baseInbox!: string; + reqs: Map = new Map(); + + size(): number { + return this.reqs.size; + } + + init(): string { + this.baseInbox = `${createInbox()}.`; + return this.baseInbox; + } + + add(r: Request) { + if (!isNaN(r.received)) { + r.received = 0; + } + this.reqs.set(r.token, r); + } + + get(token: string): Request | undefined { + return this.reqs.get(token); + } + + cancel(r: Request): void { + this.reqs.delete(r.token); + } + + getToken(m: Msg): string | null { + let s = m.subject || ""; + if (s.indexOf(this.baseInbox) === 0) { + return s.substring(this.baseInbox.length); + } + return null; + } + + dispatcher() { + return (err: NatsError | null, m: Msg) => { + let token = this.getToken(m); + if (token) { + let r = this.get(token); + if (r) { + if (err === null && m.headers) { + const headers = m.headers as MsgHdrsImpl; + if (headers.error) { + err = new NatsError( + headers.error.toString(), + ErrorCode.REQUEST_ERROR, + ); + } + } + r.resolver(err, m); + } + } + }; + } + + close() { + const err = NatsError.errorForCode(ErrorCode.TIMEOUT); + this.reqs.forEach((req) => { + req.resolver(err, {} as Msg); + }); + } +} diff --git a/bundler/tests/.cache/untrusted/28a4511b80f0953b21f5a12cfc0f965379f984d4.ts b/bundler/tests/.cache/untrusted/28a4511b80f0953b21f5a12cfc0f965379f984d4.ts new file mode 100644 index 00000000000..f272da16ee2 --- /dev/null +++ b/bundler/tests/.cache/untrusted/28a4511b80f0953b21f5a12cfc0f965379f984d4.ts @@ -0,0 +1,206 @@ +// Loaded from https://dev.jspm.io/npm:@jspm/core@1.1.1/nodelibs/chunk-6e68c801.js + + +import t$1 from "./buffer.js"; +var e = {}, + n = t$1, + o = n.Buffer; + +function t(r, e) { + for (var n in r) e[n] = r[n]; +} + +function f(r, e, n) { + return o(r, e, n); +} + +o.from && o.alloc && o.allocUnsafe && o.allocUnsafeSlow ? e = n : (t(n, e), e.Buffer = f), f.prototype = Object.create(o.prototype), t(o, f), f.from = function (r, e, n) { + if ("number" == typeof r) throw new TypeError("Argument must not be a number"); + return o(r, e, n); +}, f.alloc = function (r, e, n) { + if ("number" != typeof r) throw new TypeError("Argument must be a number"); + var t = o(r); + return void 0 !== e ? "string" == typeof n ? t.fill(e, n) : t.fill(e) : t.fill(0), t; +}, f.allocUnsafe = function (r) { + if ("number" != typeof r) throw new TypeError("Argument must be a number"); + return o(r); +}, f.allocUnsafeSlow = function (r) { + if ("number" != typeof r) throw new TypeError("Argument must be a number"); + return n.SlowBuffer(r); +}; +var u = e; + +var e$1 = {}, + s = u.Buffer, + i = s.isEncoding || function (t) { + switch ((t = "" + t) && t.toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + case "raw": + return !0; + + default: + return !1; + } +}; + +function a(t) { + var e; + + switch (this.encoding = function (t) { + var e = function (t) { + if (!t) return "utf8"; + + for (var e;;) switch (t) { + case "utf8": + case "utf-8": + return "utf8"; + + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return "utf16le"; + + case "latin1": + case "binary": + return "latin1"; + + case "base64": + case "ascii": + case "hex": + return t; + + default: + if (e) return; + t = ("" + t).toLowerCase(), e = !0; + } + }(t); + + if ("string" != typeof e && (s.isEncoding === i || !i(t))) throw new Error("Unknown encoding: " + t); + return e || t; + }(t), this.encoding) { + case "utf16le": + this.text = h, this.end = l, e = 4; + break; + + case "utf8": + this.fillLast = n$1, e = 4; + break; + + case "base64": + this.text = u$1, this.end = o$1, e = 3; + break; + + default: + return this.write = f$1, this.end = c, void 0; + } + + this.lastNeed = 0, this.lastTotal = 0, this.lastChar = s.allocUnsafe(e); +} + +function r(t) { + return t <= 127 ? 0 : t >> 5 == 6 ? 2 : t >> 4 == 14 ? 3 : t >> 3 == 30 ? 4 : t >> 6 == 2 ? -1 : -2; +} + +function n$1(t) { + var e = this.lastTotal - this.lastNeed, + s = function (t, e, s) { + if (128 != (192 & e[0])) return t.lastNeed = 0, "�"; + + if (t.lastNeed > 1 && e.length > 1) { + if (128 != (192 & e[1])) return t.lastNeed = 1, "�"; + if (t.lastNeed > 2 && e.length > 2 && 128 != (192 & e[2])) return t.lastNeed = 2, "�"; + } + }(this, t); + + return void 0 !== s ? s : this.lastNeed <= t.length ? (t.copy(this.lastChar, e, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (t.copy(this.lastChar, e, 0, t.length), this.lastNeed -= t.length, void 0); +} + +function h(t, e) { + if ((t.length - e) % 2 == 0) { + var s = t.toString("utf16le", e); + + if (s) { + var i = s.charCodeAt(s.length - 1); + if (i >= 55296 && i <= 56319) return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = t[t.length - 2], this.lastChar[1] = t[t.length - 1], s.slice(0, -1); + } + + return s; + } + + return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = t[t.length - 1], t.toString("utf16le", e, t.length - 1); +} + +function l(t) { + var e = t && t.length ? this.write(t) : ""; + + if (this.lastNeed) { + var s = this.lastTotal - this.lastNeed; + return e + this.lastChar.toString("utf16le", 0, s); + } + + return e; +} + +function u$1(t, e) { + var s = (t.length - e) % 3; + return 0 === s ? t.toString("base64", e) : (this.lastNeed = 3 - s, this.lastTotal = 3, 1 === s ? this.lastChar[0] = t[t.length - 1] : (this.lastChar[0] = t[t.length - 2], this.lastChar[1] = t[t.length - 1]), t.toString("base64", e, t.length - s)); +} + +function o$1(t) { + var e = t && t.length ? this.write(t) : ""; + return this.lastNeed ? e + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : e; +} + +function f$1(t) { + return t.toString(this.encoding); +} + +function c(t) { + return t && t.length ? this.write(t) : ""; +} + +e$1.StringDecoder = a, a.prototype.write = function (t) { + if (0 === t.length) return ""; + var e, s; + + if (this.lastNeed) { + if (void 0 === (e = this.fillLast(t))) return ""; + s = this.lastNeed, this.lastNeed = 0; + } else s = 0; + + return s < t.length ? e ? e + this.text(t, s) : this.text(t, s) : e || ""; +}, a.prototype.end = function (t) { + var e = t && t.length ? this.write(t) : ""; + return this.lastNeed ? e + "�" : e; +}, a.prototype.text = function (t, e) { + var s = function (t, e, s) { + var i = e.length - 1; + if (i < s) return 0; + var a = r(e[i]); + if (a >= 0) return a > 0 && (t.lastNeed = a - 1), a; + if (--i < s || -2 === a) return 0; + if ((a = r(e[i])) >= 0) return a > 0 && (t.lastNeed = a - 2), a; + if (--i < s || -2 === a) return 0; + if ((a = r(e[i])) >= 0) return a > 0 && (2 === a ? a = 0 : t.lastNeed = a - 3), a; + return 0; + }(this, t, e); + + if (!this.lastNeed) return t.toString("utf8", e); + this.lastTotal = s; + var i = t.length - (s - this.lastNeed); + return t.copy(this.lastChar, 0, i), t.toString("utf8", e, i); +}, a.prototype.fillLast = function (t) { + if (this.lastNeed <= t.length) return t.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal); + t.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, t.length), this.lastNeed -= t.length; +}; +export { u as r, e$1 as s }; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/2905e9578fdebe1cb10781e564d3f5095c01667e.ts b/bundler/tests/.cache/untrusted/2905e9578fdebe1cb10781e564d3f5095c01667e.ts new file mode 100644 index 00000000000..4fe9dc2c629 --- /dev/null +++ b/bundler/tests/.cache/untrusted/2905e9578fdebe1cb10781e564d3f5095c01667e.ts @@ -0,0 +1,95 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/query/methods.js + + +// All properties we can use to start a query chain +// from the `knex` object, e.g. `knex.select('*').from(...` +export default [ + 'with', + 'withRecursive', + 'select', + 'as', + 'columns', + 'column', + 'from', + 'fromJS', + 'into', + 'withSchema', + 'table', + 'distinct', + 'join', + 'joinRaw', + 'innerJoin', + 'leftJoin', + 'leftOuterJoin', + 'rightJoin', + 'rightOuterJoin', + 'outerJoin', + 'fullOuterJoin', + 'crossJoin', + 'where', + 'andWhere', + 'orWhere', + 'whereNot', + 'orWhereNot', + 'whereRaw', + 'whereWrapped', + 'havingWrapped', + 'orWhereRaw', + 'whereExists', + 'orWhereExists', + 'whereNotExists', + 'orWhereNotExists', + 'whereIn', + 'orWhereIn', + 'whereNotIn', + 'orWhereNotIn', + 'whereNull', + 'orWhereNull', + 'whereNotNull', + 'orWhereNotNull', + 'whereBetween', + 'whereNotBetween', + 'andWhereBetween', + 'andWhereNotBetween', + 'orWhereBetween', + 'orWhereNotBetween', + 'groupBy', + 'groupByRaw', + 'orderBy', + 'orderByRaw', + 'union', + 'unionAll', + 'intersect', + 'having', + 'havingRaw', + 'orHaving', + 'orHavingRaw', + 'offset', + 'limit', + 'count', + 'countDistinct', + 'min', + 'max', + 'sum', + 'sumDistinct', + 'avg', + 'avgDistinct', + 'increment', + 'decrement', + 'first', + 'debug', + 'pluck', + 'clearSelect', + 'clearWhere', + 'clearGroup', + 'clearOrder', + 'clearHaving', + 'insert', + 'update', + 'returning', + 'del', + 'delete', + 'truncate', + 'transacting', + 'connection', +]; diff --git a/bundler/tests/.cache/untrusted/29729d1269b68a56a2ca9466fb236602c0a923fd.ts b/bundler/tests/.cache/untrusted/29729d1269b68a56a2ca9466fb236602c0a923fd.ts new file mode 100644 index 00000000000..6913f411301 --- /dev/null +++ b/bundler/tests/.cache/untrusted/29729d1269b68a56a2ca9466fb236602c0a923fd.ts @@ -0,0 +1,86 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/msg.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Empty, Msg } from "./types.ts"; +import { MsgHdrs, MsgHdrsImpl } from "./headers.ts"; +import type { Publisher } from "./protocol.ts"; +import type { MsgArg } from "./parser.ts"; +import { TD } from "./encoders.ts"; + +export class MsgImpl implements Msg { + _headers?: MsgHdrs; + _msg: MsgArg; + _rdata: Uint8Array; + _reply!: string; + _subject!: string; + publisher: Publisher; + + constructor(msg: MsgArg, data: Uint8Array, publisher: Publisher) { + this._msg = msg; + this._rdata = data; + this.publisher = publisher; + } + + get subject(): string { + if (this._subject) { + return this._subject; + } + this._subject = TD.decode(this._msg.subject); + return this._subject; + } + + get reply(): string { + if (this._reply) { + return this._reply; + } + this._reply = TD.decode(this._msg.reply); + return this._reply; + } + + get sid(): number { + return this._msg.sid; + } + + get headers(): (MsgHdrs | undefined) { + if (this._msg.hdr > -1 && !this._headers) { + const buf = this._rdata.subarray(0, this._msg.hdr); + this._headers = MsgHdrsImpl.decode(buf); + } + return this._headers; + } + + get data(): Uint8Array { + if (!this._rdata) { + return new Uint8Array(0); + } + return this._msg.hdr > -1 + ? this._rdata.subarray(this._msg.hdr) + : this._rdata; + } + + // eslint-ignore-next-line @typescript-eslint/no-explicit-any + respond( + data: Uint8Array = Empty, + opts?: { headers?: MsgHdrs; reply?: string }, + ): boolean { + if (this.reply) { + this.publisher.publish(this.reply, data, opts); + return true; + } + return false; + } +} diff --git a/bundler/tests/.cache/untrusted/2999f16a48186b3c66dbeb316fb75dc9b2a5c801.ts b/bundler/tests/.cache/untrusted/2999f16a48186b3c66dbeb316fb75dc9b2a5c801.ts new file mode 100644 index 00000000000..84099fdab51 --- /dev/null +++ b/bundler/tests/.cache/untrusted/2999f16a48186b3c66dbeb316fb75dc9b2a5c801.ts @@ -0,0 +1,241 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/query/query.ts + + +import type { RowDescription } from "../connection/connection.ts"; +import { encode, EncodedArg } from "./encode.ts"; +import { decode } from "./decode.ts"; +import { WarningFields } from "../connection/warning.ts"; + +const commandTagRegexp = /^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/; + +type CommandType = ( + | "INSERT" + | "DELETE" + | "UPDATE" + | "SELECT" + | "MOVE" + | "FETCH" + | "COPY" +); + +export function templateStringToQuery( + template: TemplateStringsArray, + args: QueryArguments, +): Query { + const text = template.reduce((curr, next, index) => { + return `${curr}$${index}${next}`; + }); + + return new Query(text, ...args); +} + +export interface QueryConfig { + args?: Array; + encoder?: (arg: unknown) => EncodedArg; + name?: string; + text: string; +} + +export interface QueryObjectConfig extends QueryConfig { + /** + * This parameter superseeds query column names + * + * When specified, this names will be asigned to the results + * of the query in the order they were provided + * + * Fields must be unique (case is not taken into consideration) + */ + fields?: string[]; +} + +// TODO +// Limit the type of parameters that can be passed +// to a query +/** + * https://www.postgresql.org/docs/current/sql-prepare.html + * + * This arguments will be appended to the prepared statement passed + * as query + * + * They will take the position according to the order in which they were provided + * + * ```ts + * await my_client.queryArray( + * "SELECT ID, NAME FROM PEOPLE WHERE AGE > $1 AND AGE < $2", + * 10, // $1 + * 20, // $2 + * ); + * ``` + * */ +// deno-lint-ignore no-explicit-any +export type QueryArguments = any[]; + +export class QueryResult { + // TODO + // This should be private for real + public _done = false; + public command!: CommandType; + public rowCount?: number; + public rowDescription?: RowDescription; + public warnings: WarningFields[] = []; + + constructor(public query: Query) {} + + /** + * This function is required to parse each column + * of the results + */ + loadColumnDescriptions(description: RowDescription) { + this.rowDescription = description; + } + + handleCommandComplete(commandTag: string): void { + const match = commandTagRegexp.exec(commandTag); + if (match) { + this.command = match[1] as CommandType; + if (match[3]) { + // COMMAND OID ROWS + this.rowCount = parseInt(match[3], 10); + } else { + // COMMAND ROWS + this.rowCount = parseInt(match[2], 10); + } + } + } + + insertRow(_row: Uint8Array[]): void { + throw new Error("No implementation for insertRow is defined"); + } + + done() { + this._done = true; + } +} + +export class QueryArrayResult> extends QueryResult { + public rows: T[] = []; + + // deno-lint-ignore camelcase + insertRow(row_data: Uint8Array[]) { + if (this._done) { + throw new Error( + "Tried to add a new row to the result after the result is done reading", + ); + } + + if (!this.rowDescription) { + throw new Error( + "The row descriptions required to parse the result data weren't initialized", + ); + } + + // Row description won't be modified after initialization + const row = row_data.map((raw_value, index) => { + const column = this.rowDescription!.columns[index]; + + if (raw_value === null) { + return null; + } + return decode(raw_value, column); + }) as T; + + this.rows.push(row); + } +} + +export class QueryObjectResult> + extends QueryResult { + public rows: T[] = []; + + // deno-lint-ignore camelcase + insertRow(row_data: Uint8Array[]) { + if (this._done) { + throw new Error( + "Tried to add a new row to the result after the result is done reading", + ); + } + + if (!this.rowDescription) { + throw new Error( + "The row descriptions required to parse the result data weren't initialized", + ); + } + + if ( + this.query.fields && + this.rowDescription.columns.length !== this.query.fields.length + ) { + throw new RangeError( + "The fields provided for the query don't match the ones returned as a result " + + `(${this.rowDescription.columns.length} expected, ${this.query.fields.length} received)`, + ); + } + + // Row description won't be modified after initialization + const row = row_data.reduce((row, raw_value, index) => { + const column = this.rowDescription!.columns[index]; + + // Find the field name provided by the user + // default to database provided name + const name = this.query.fields?.[index] ?? column.name; + + if (raw_value === null) { + row[name] = null; + } else { + row[name] = decode(raw_value, column); + } + + return row; + }, {} as Record) as T; + + this.rows.push(row); + } +} + +export class Query { + public text: string; + public args: EncodedArg[]; + public fields?: string[]; + + constructor(config: QueryObjectConfig); + constructor(text: string, ...args: unknown[]); + //deno-lint-ignore camelcase + constructor(config_or_text: string | QueryObjectConfig, ...args: unknown[]) { + let config: QueryConfig; + if (typeof config_or_text === "string") { + config = { text: config_or_text, args }; + } else { + const { + fields, + //deno-lint-ignore camelcase + ...query_config + } = config_or_text; + + // Check that the fields passed are valid and can be used to map + // the result of the query + if (fields) { + //deno-lint-ignore camelcase + const clean_fields = fields.map((field) => + field.toString().toLowerCase() + ); + + if ((new Set(clean_fields)).size !== clean_fields.length) { + throw new TypeError( + "The fields provided for the query must be unique", + ); + } + + this.fields = clean_fields; + } + + config = query_config; + } + this.text = config.text; + this.args = this._prepareArgs(config); + } + + private _prepareArgs(config: QueryConfig): EncodedArg[] { + const encodingFn = config.encoder ? config.encoder : encode; + return (config.args || []).map(encodingFn); + } +} diff --git a/bundler/tests/.cache/untrusted/299e747f60e1163ac5ac447a93d65b7b2077bbbc.ts b/bundler/tests/.cache/untrusted/299e747f60e1163ac5ac447a93d65b7b2077bbbc.ts new file mode 100644 index 00000000000..b7972158daf --- /dev/null +++ b/bundler/tests/.cache/untrusted/299e747f60e1163ac5ac447a93d65b7b2077bbbc.ts @@ -0,0 +1,91 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/tarn@3.0.0/dist/utils.dew.js + + +import { dew as _PromiseInspectionDewDew } from "./PromiseInspection.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + Object.defineProperty(exports, "__esModule", { + value: true + }); + + const PromiseInspection_1 = _PromiseInspectionDewDew(); + + function defer() { + let resolve = null; + let reject = null; + const promise = new Promise((resolver, rejecter) => { + resolve = resolver; + reject = rejecter; + }); + return { + promise, + resolve, + reject + }; + } + + exports.defer = defer; + + function now() { + return Date.now(); + } + + exports.now = now; + + function duration(t1, t2) { + return Math.abs(t2 - t1); + } + + exports.duration = duration; + + function checkOptionalTime(time) { + if (typeof time === 'undefined') { + return true; + } + + return checkRequiredTime(time); + } + + exports.checkOptionalTime = checkOptionalTime; + + function checkRequiredTime(time) { + return typeof time === 'number' && time === Math.round(time) && time > 0; + } + + exports.checkRequiredTime = checkRequiredTime; + + function delay(millis) { + return new Promise(resolve => setTimeout(resolve, millis)); + } + + exports.delay = delay; + + function reflect(promise) { + return promise.then(value => { + return new PromiseInspection_1.PromiseInspection({ + value + }); + }).catch(error => { + return new PromiseInspection_1.PromiseInspection({ + error + }); + }); + } + + exports.reflect = reflect; + + function tryPromise(cb) { + try { + const result = cb(); + return Promise.resolve(result); + } catch (err) { + return Promise.reject(err); + } + } + + exports.tryPromise = tryPromise; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/2a1f6c7c77d0cbed3a9e788ef2e17c9f8534ea47.ts b/bundler/tests/.cache/untrusted/2a1f6c7c77d0cbed3a9e788ef2e17c9f8534ea47.ts new file mode 100644 index 00000000000..13902dc4c38 --- /dev/null +++ b/bundler/tests/.cache/untrusted/2a1f6c7c77d0cbed3a9e788ef2e17c9f8534ea47.ts @@ -0,0 +1,20 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/never.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; + +export interface ZodNeverDef extends ZodTypeDef { + t: ZodTypes.never; +} + +export class ZodNever extends ZodType { + __class = "ZodNever"; + toJSON = () => this._def; + + static create = (): ZodNever => { + return new ZodNever({ + t: ZodTypes.never, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/2b8a686167d0b335381beb945b46fd348eb81c1d.ts b/bundler/tests/.cache/untrusted/2b8a686167d0b335381beb945b46fd348eb81c1d.ts new file mode 100644 index 00000000000..ee4505c0f21 --- /dev/null +++ b/bundler/tests/.cache/untrusted/2b8a686167d0b335381beb945b46fd348eb81c1d.ts @@ -0,0 +1,390 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/bench.ts + + +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Empty, NatsConnection } from "./types.ts"; +import { nuid } from "./nuid.ts"; +import { deferred, Perf } from "./util.ts"; +import { ErrorCode, NatsError } from "./error.ts"; +import type { NatsConnectionImpl } from "./nats.ts"; + +export class Metric { + name: string; + duration: number; + date: number; + payload: number; + msgs: number; + lang!: string; + version!: string; + bytes: number; + asyncRequests?: boolean; + min?: number; + max?: number; + + constructor(name: string, duration: number) { + this.name = name; + this.duration = duration; + this.date = Date.now(); + this.payload = 0; + this.msgs = 0; + this.bytes = 0; + } + + toString(): string { + const sec = (this.duration) / 1000; + const mps = Math.round(this.msgs / sec); + const label = this.asyncRequests ? "asyncRequests" : ""; + let minmax = ""; + if (this.max) { + minmax = `${this.min}/${this.max}`; + } + + return `${this.name}${label ? " [asyncRequests]" : ""} ${ + humanizeNumber(mps) + } msgs/sec - [${sec.toFixed(2)} secs] ~ ${ + throughput(this.bytes, sec) + } ${minmax}`; + } + + toCsv(): string { + return `"${this.name}",${ + new Date(this.date).toISOString() + },${this.lang},${this.version},${this.msgs},${this.payload},${this.bytes},${this.duration},${ + this.asyncRequests ? this.asyncRequests : false + }\n`; + } + + static header(): string { + return `Test,Date,Lang,Version,Count,MsgPayload,Bytes,Millis,Async\n`; + } +} + +export interface BenchOpts { + callbacks?: boolean; + msgs?: number; + size?: number; + subject?: string; + asyncRequests?: boolean; + pub?: boolean; + sub?: boolean; + rep?: boolean; + req?: boolean; +} + +export class Bench { + nc: NatsConnection; + callbacks: boolean; + msgs: number; + size: number; + subject: string; + asyncRequests?: boolean; + pub?: boolean; + sub?: boolean; + req?: boolean; + rep?: boolean; + perf: Perf; + payload: Uint8Array; + + constructor( + nc: NatsConnection, + opts: BenchOpts = { + msgs: 100000, + size: 128, + subject: "", + asyncRequests: false, + pub: false, + sub: false, + req: false, + rep: false, + }, + ) { + this.nc = nc; + this.callbacks = opts.callbacks || false; + this.msgs = opts.msgs || 0; + this.size = opts.size || 0; + this.subject = opts.subject || nuid.next(); + this.asyncRequests = opts.asyncRequests || false; + this.pub = opts.pub || false; + this.sub = opts.sub || false; + this.req = opts.req || false; + this.rep = opts.rep || false; + this.perf = new Perf(); + this.payload = this.size ? new Uint8Array(this.size) : Empty; + + if (!this.pub && !this.sub && !this.req && !this.rep) { + throw new Error("No bench option selected"); + } + } + + async run(): Promise { + this.nc.closed() + .then((err) => { + if (err) { + throw new NatsError( + `bench closed with an error: ${err.message}`, + ErrorCode.UNKNOWN, + err, + ); + } + }); + + if (this.callbacks) { + await this.runCallbacks(); + } else { + await this.runAsync(); + } + return this.processMetrics(); + } + + processMetrics(): Metric[] { + const nc = this.nc as NatsConnectionImpl; + const { lang, version } = nc.protocol.transport; + + if (this.pub && this.sub) { + this.perf.measure("pubsub", "pubStart", "subStop"); + } + + const measures = this.perf.getEntries(); + const pubsub = measures.find((m) => m.name === "pubsub"); + const req = measures.find((m) => m.name === "req"); + const pub = measures.find((m) => m.name === "pub"); + const sub = measures.find((m) => m.name === "sub"); + + const stats = this.nc.stats(); + + const metrics: Metric[] = []; + if (pubsub) { + const { name, duration } = pubsub; + const m = new Metric(name, duration); + m.msgs = this.msgs * 2; + m.bytes = stats.inBytes + stats.outBytes; + m.lang = lang; + m.version = version; + m.payload = this.payload.length; + metrics.push(m); + } + + if (pub) { + const { name, duration } = pub; + const m = new Metric(name, duration); + m.msgs = this.msgs; + m.bytes = stats.outBytes; + m.lang = lang; + m.version = version; + m.payload = this.payload.length; + metrics.push(m); + } + + if (sub) { + const { name, duration } = sub; + const m = new Metric(name, duration); + m.msgs = this.msgs; + m.bytes = stats.inBytes; + m.lang = lang; + m.version = version; + m.payload = this.payload.length; + metrics.push(m); + } + + if (req) { + const { name, duration } = req; + const m = new Metric(name, duration); + m.msgs = this.msgs * 2; + m.bytes = stats.inBytes + stats.outBytes; + m.lang = lang; + m.version = version; + m.payload = this.payload.length; + metrics.push(m); + } + + return metrics; + } + + async runCallbacks(): Promise { + const jobs: Promise[] = []; + + if (this.req) { + const d = deferred(); + jobs.push(d); + const sub = this.nc.subscribe( + this.subject, + { + max: this.msgs, + callback: (_, m) => { + m.respond(this.payload); + if (sub.getProcessed() === this.msgs) { + d.resolve(); + } + }, + }, + ); + } + + if (this.sub) { + const d = deferred(); + jobs.push(d); + let i = 0; + const sub = this.nc.subscribe(this.subject, { + max: this.msgs, + callback: (_, msg) => { + i++; + if (i === 1) { + this.perf.mark("subStart"); + } + if (i === this.msgs) { + this.perf.mark("subStop"); + this.perf.measure("sub", "subStart", "subStop"); + d.resolve(); + } + }, + }); + } + + if (this.pub) { + const job = (async () => { + this.perf.mark("pubStart"); + for (let i = 0; i < this.msgs; i++) { + this.nc.publish(this.subject, this.payload); + } + await this.nc.flush(); + this.perf.mark("pubStop"); + this.perf.measure("pub", "pubStart", "pubStop"); + })(); + jobs.push(job); + } + + if (this.req) { + const job = (async () => { + if (this.asyncRequests) { + this.perf.mark("reqStart"); + const a = []; + for (let i = 0; i < this.msgs; i++) { + a.push( + this.nc.request(this.subject, this.payload, { timeout: 20000 }), + ); + } + await Promise.all(a); + this.perf.mark("reqStop"); + this.perf.measure("req", "reqStart", "reqStop"); + } else { + this.perf.mark("reqStart"); + for (let i = 0; i < this.msgs; i++) { + await this.nc.request(this.subject); + } + this.perf.mark("reqStop"); + this.perf.measure("req", "reqStart", "reqStop"); + } + })(); + jobs.push(job); + } + + await Promise.all(jobs); + } + + async runAsync(): Promise { + const jobs: Promise[] = []; + + if (this.req) { + const sub = this.nc.subscribe(this.subject, { max: this.msgs }); + const job = (async () => { + for await (const m of sub) { + m.respond(this.payload); + } + })(); + jobs.push(job); + } + + if (this.sub) { + let first = false; + const sub = this.nc.subscribe(this.subject, { max: this.msgs }); + const job = (async () => { + for await (const m of sub) { + if (!first) { + this.perf.mark("subStart"); + first = true; + } + } + this.perf.mark("subStop"); + this.perf.measure("sub", "subStart", "subStop"); + })(); + jobs.push(job); + } + + if (this.pub) { + const job = (async () => { + this.perf.mark("pubStart"); + for (let i = 0; i < this.msgs; i++) { + this.nc.publish(this.subject, this.payload); + } + await this.nc.flush(); + this.perf.mark("pubStop"); + this.perf.measure("pub", "pubStart", "pubStop"); + })(); + jobs.push(job); + } + + if (this.req) { + const job = (async () => { + if (this.asyncRequests) { + this.perf.mark("reqStart"); + const a = []; + for (let i = 0; i < this.msgs; i++) { + a.push( + this.nc.request(this.subject, this.payload, { timeout: 20000 }), + ); + } + await Promise.all(a); + this.perf.mark("reqStop"); + this.perf.measure("req", "reqStart", "reqStop"); + } else { + this.perf.mark("reqStart"); + for (let i = 0; i < this.msgs; i++) { + await this.nc.request(this.subject); + } + this.perf.mark("reqStop"); + this.perf.measure("req", "reqStart", "reqStop"); + } + })(); + jobs.push(job); + } + + await Promise.all(jobs); + } +} + +function throughput(bytes: number, seconds: number): string { + return humanizeBytes(bytes / seconds); +} + +function humanizeBytes(bytes: number, si = false): string { + const base = si ? 1000 : 1024; + const pre = si + ? ["k", "M", "G", "T", "P", "E"] + : ["K", "M", "G", "T", "P", "E"]; + const post = si ? "iB" : "B"; + + if (bytes < base) { + return `${bytes.toFixed(2)} ${post}/sec`; + } + const exp = parseInt(Math.log(bytes) / Math.log(base) + ""); + const index = parseInt((exp - 1) + ""); + return `${(bytes / Math.pow(base, exp)).toFixed(2)} ${pre[index]}${post}/sec`; +} + +function humanizeNumber(n: number) { + return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} diff --git a/bundler/tests/.cache/untrusted/2c63594727d9c1762b381f4a6d45c71634539950.ts b/bundler/tests/.cache/untrusted/2c63594727d9c1762b381f4a6d45c71634539950.ts new file mode 100644 index 00000000000..9ebaf85623a --- /dev/null +++ b/bundler/tests/.cache/untrusted/2c63594727d9c1762b381f4a6d45c71634539950.ts @@ -0,0 +1,289 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/impl/util.js + + +/* + This is just a junk drawer, containing anything used across multiple classes. + Because Luxon is small(ish), this should stay small and we won't worry about splitting + it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area. +*/ + +import { InvalidArgumentError } from "../errors.js"; + +/** + * @private + */ + +// TYPES + +export function isUndefined(o) { + return typeof o === "undefined"; +} + +export function isNumber(o) { + return typeof o === "number"; +} + +export function isInteger(o) { + return typeof o === "number" && o % 1 === 0; +} + +export function isString(o) { + return typeof o === "string"; +} + +export function isDate(o) { + return Object.prototype.toString.call(o) === "[object Date]"; +} + +// CAPABILITIES + +export function hasIntl() { + try { + return typeof Intl !== "undefined" && Intl.DateTimeFormat; + } catch (e) { + return false; + } +} + +export function hasFormatToParts() { + return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts); +} + +export function hasRelative() { + try { + return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat; + } catch (e) { + return false; + } +} + +// OBJECTS AND ARRAYS + +export function maybeArray(thing) { + return Array.isArray(thing) ? thing : [thing]; +} + +export function bestBy(arr, by, compare) { + if (arr.length === 0) { + return undefined; + } + return arr.reduce((best, next) => { + const pair = [by(next), next]; + if (!best) { + return pair; + } else if (compare(best[0], pair[0]) === best[0]) { + return best; + } else { + return pair; + } + }, null)[1]; +} + +export function pick(obj, keys) { + return keys.reduce((a, k) => { + a[k] = obj[k]; + return a; + }, {}); +} + +export function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +// NUMBERS AND STRINGS + +export function integerBetween(thing, bottom, top) { + return isInteger(thing) && thing >= bottom && thing <= top; +} + +// x % n but takes the sign of n instead of x +export function floorMod(x, n) { + return x - n * Math.floor(x / n); +} + +export function padStart(input, n = 2) { + if (input.toString().length < n) { + return ("0".repeat(n) + input).slice(-n); + } else { + return input.toString(); + } +} + +export function parseInteger(string) { + if (isUndefined(string) || string === null || string === "") { + return undefined; + } else { + return parseInt(string, 10); + } +} + +export function parseMillis(fraction) { + // Return undefined (instead of 0) in these cases, where fraction is not set + if (isUndefined(fraction) || fraction === null || fraction === "") { + return undefined; + } else { + const f = parseFloat("0." + fraction) * 1000; + return Math.floor(f); + } +} + +export function roundTo(number, digits, towardZero = false) { + const factor = 10 ** digits, + rounder = towardZero ? Math.trunc : Math.round; + return rounder(number * factor) / factor; +} + +// DATE BASICS + +export function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +export function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +export function daysInMonth(year, month) { + const modMonth = floorMod(month - 1, 12) + 1, + modYear = year + (month - modMonth) / 12; + + if (modMonth === 2) { + return isLeapYear(modYear) ? 29 : 28; + } else { + return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1]; + } +} + +// covert a calendar object to a local timestamp (epoch, but with the offset baked in) +export function objToLocalTS(obj) { + let d = Date.UTC( + obj.year, + obj.month - 1, + obj.day, + obj.hour, + obj.minute, + obj.second, + obj.millisecond + ); + + // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that + if (obj.year < 100 && obj.year >= 0) { + d = new Date(d); + d.setUTCFullYear(d.getUTCFullYear() - 1900); + } + return +d; +} + +export function weeksInWeekYear(weekYear) { + const p1 = + (weekYear + + Math.floor(weekYear / 4) - + Math.floor(weekYear / 100) + + Math.floor(weekYear / 400)) % + 7, + last = weekYear - 1, + p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7; + return p1 === 4 || p2 === 3 ? 53 : 52; +} + +export function untruncateYear(year) { + if (year > 99) { + return year; + } else return year > 60 ? 1900 + year : 2000 + year; +} + +// PARSING + +export function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) { + const date = new Date(ts), + intlOpts = { + hour12: false, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" + }; + + if (timeZone) { + intlOpts.timeZone = timeZone; + } + + const modified = Object.assign({ timeZoneName: offsetFormat }, intlOpts), + intl = hasIntl(); + + if (intl && hasFormatToParts()) { + const parsed = new Intl.DateTimeFormat(locale, modified) + .formatToParts(date) + .find(m => m.type.toLowerCase() === "timezonename"); + return parsed ? parsed.value : null; + } else if (intl) { + // this probably doesn't work for all locales + const without = new Intl.DateTimeFormat(locale, intlOpts).format(date), + included = new Intl.DateTimeFormat(locale, modified).format(date), + diffed = included.substring(without.length), + trimmed = diffed.replace(/^[, \u200e]+/, ""); + return trimmed; + } else { + return null; + } +} + +// signedOffset('-5', '30') -> -330 +export function signedOffset(offHourStr, offMinuteStr) { + let offHour = parseInt(offHourStr, 10); + + // don't || this because we want to preserve -0 + if (Number.isNaN(offHour)) { + offHour = 0; + } + + const offMin = parseInt(offMinuteStr, 10) || 0, + offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin; + return offHour * 60 + offMinSigned; +} + +// COERCION + +export function asNumber(value) { + const numericValue = Number(value); + if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) + throw new InvalidArgumentError(`Invalid unit value ${value}`); + return numericValue; +} + +export function normalizeObject(obj, normalizer, nonUnitKeys) { + const normalized = {}; + for (const u in obj) { + if (hasOwnProperty(obj, u)) { + if (nonUnitKeys.indexOf(u) >= 0) continue; + const v = obj[u]; + if (v === undefined || v === null) continue; + normalized[normalizer(u)] = asNumber(v); + } + } + return normalized; +} + +export function formatOffset(offset, format) { + const hours = Math.trunc(Math.abs(offset / 60)), + minutes = Math.trunc(Math.abs(offset % 60)), + sign = offset >= 0 ? "+" : "-"; + + switch (format) { + case "short": + return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`; + case "narrow": + return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`; + case "techie": + return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`; + default: + throw new RangeError(`Value format ${format} is out of range for property format`); + } +} + +export function timeObject(obj) { + return pick(obj, ["hour", "minute", "second", "millisecond"]); +} + +export const ianaRegex = /[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/; diff --git a/bundler/tests/.cache/untrusted/2c7d5ae163c86f14e28e338b6e96e7a18893c63c.ts b/bundler/tests/.cache/untrusted/2c7d5ae163c86f14e28e338b6e96e7a18893c63c.ts new file mode 100644 index 00000000000..27720ef33ad --- /dev/null +++ b/bundler/tests/.cache/untrusted/2c7d5ae163c86f14e28e338b6e96e7a18893c63c.ts @@ -0,0 +1,88 @@ +// Loaded from https://dev.jspm.io/npm:immediate@3.0.6/lib/browser.dew.js + + +var exports = {}, + _dewExec = false; + +var _global = typeof self !== "undefined" ? self : global; + +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + var Mutation = _global.MutationObserver || _global.WebKitMutationObserver; + var scheduleDrain; + { + if (Mutation) { + var called = 0; + var observer = new Mutation(nextTick); + + var element = _global.document.createTextNode(''); + + observer.observe(element, { + characterData: true + }); + + scheduleDrain = function () { + element.data = called = ++called % 2; + }; + } else if (!_global.setImmediate && typeof _global.MessageChannel !== 'undefined') { + var channel = new _global.MessageChannel(); + channel.port1.onmessage = nextTick; + + scheduleDrain = function () { + channel.port2.postMessage(0); + }; + } else if ('document' in _global && 'onreadystatechange' in _global.document.createElement('script')) { + scheduleDrain = function () { + // Create a ",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(t,{is:r.is}):(e=o.createElement(t),t==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,t),e[je]=n,e[gr]=r,js(e,n,!1,!1),n.stateNode=e,o=Ll(t,r),t){case"dialog":z("cancel",e),z("close",e),l=r;break;case"iframe":case"object":case"embed":z("load",e),l=r;break;case"video":case"audio":for(l=0;lWi&&(n.flags|=64,i=!0,Ot(r,!1),n.lanes=33554432)}else{if(!i)if(e=Mr(o),e!==null){if(n.flags|=64,i=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),Ot(r,!0),r.tail===null&&r.tailMode==="hidden"&&!o.alternate&&!ve)return n=n.lastEffect=r.lastEffect,n!==null&&(n.nextEffect=null),null}else 2*$()-r.renderingStartTime>Wi&&t!==1073741824&&(n.flags|=64,i=!0,Ot(r,!1),n.lanes=33554432);r.isBackwards?(o.sibling=n.child,n.child=o):(t=r.last,t!==null?t.sibling=o:n.child=o,r.last=o)}return r.tail!==null?(t=r.tail,r.rendering=t,r.tail=t.sibling,r.lastEffect=n.lastEffect,r.renderingStartTime=$(),t.sibling=null,n=I.current,j(I,i?n&1|2:n&1),t):null;case 23:case 24:return Hi(),e!==null&&e.memoizedState!==null!=(n.memoizedState!==null)&&r.mode!=="unstable-defer-without-hiding"&&(n.flags|=4),null}throw Error(v(156,n.tag))}function Zf(e){switch(e.tag){case 1:J(e.type)&&wr();var n=e.flags;return n&4096?(e.flags=n&-4097|64,e):null;case 3:if(Rn(),M(Z),M(Q),Pi(),n=e.flags,(n&64)!=0)throw Error(v(285));return e.flags=n&-4097|64,e;case 5:return _i(e),null;case 13:return M(I),n=e.flags,n&4096?(e.flags=n&-4097|64,e):null;case 19:return M(I),null;case 4:return Rn(),null;case 10:return gi(e),null;case 23:case 24:return Hi(),null;default:return null}}function Ai(e,n){try{var t="",r=n;do t+=La(r),r=r.return;while(r);var l=t}catch(i){l=` +Error generating stack: `+i.message+` +`+i.stack}return{value:e,source:n,stack:l}}function Qi(e,n){try{console.error(n.value)}catch(t){setTimeout(function(){throw t})}}var Jf=typeof WeakMap=="function"?WeakMap:Map;function Fs(e,n,t){t=Ue(-1,t),t.tag=3,t.payload={element:null};var r=n.value;return t.callback=function(){Wr||(Wr=!0,$i=r),Qi(e,n)},t}function Us(e,n,t){t=Ue(-1,t),t.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=n.value;t.payload=function(){return Qi(e,n),r(l)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(t.callback=function(){typeof r!="function"&&(ge===null?ge=new Set([this]):ge.add(this),Qi(e,n));var o=n.stack;this.componentDidCatch(n.value,{componentStack:o!==null?o:""})}),t}var qf=typeof WeakSet=="function"?WeakSet:Set;function Vs(e){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(t){Qe(e,t)}else n.current=null}function bf(e,n){switch(n.tag){case 0:case 11:case 15:case 22:return;case 1:if(n.flags&256&&e!==null){var t=e.memoizedProps,r=e.memoizedState;e=n.stateNode,n=e.getSnapshotBeforeUpdate(n.elementType===n.type?t:fe(n.type,t),r),e.__reactInternalSnapshotBeforeUpdate=n}return;case 3:n.flags&256&&si(n.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(v(163))}function nc(e,n,t){switch(t.tag){case 0:case 11:case 15:case 22:if(n=t.updateQueue,n=n!==null?n.lastEffect:null,n!==null){e=n=n.next;do{if((e.tag&3)==3){var r=e.create;e.destroy=r()}e=e.next}while(e!==n)}if(n=t.updateQueue,n=n!==null?n.lastEffect:null,n!==null){e=n=n.next;do{var l=e;r=l.next,l=l.tag,(l&4)!=0&&(l&1)!=0&&(Bs(t,e),ec(t,e)),e=r}while(e!==n)}return;case 1:e=t.stateNode,t.flags&4&&(n===null?e.componentDidMount():(r=t.elementType===t.type?n.memoizedProps:fe(t.type,n.memoizedProps),e.componentDidUpdate(r,n.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),n=t.updateQueue,n!==null&&ns(t,n,e);return;case 3:if(n=t.updateQueue,n!==null){if(e=null,t.child!==null)switch(t.child.tag){case 5:e=t.child.stateNode;break;case 1:e=t.child.stateNode}ns(t,n,e)}return;case 5:e=t.stateNode,n===null&&t.flags&4&&Fu(t.type,t.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:t.memoizedState===null&&(t=t.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&qo(t))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(v(163))}function Ws(e,n){for(var t=e;;){if(t.tag===5){var r=t.stateNode;if(n)r=r.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{r=t.stateNode;var l=t.memoizedProps.style;l=l!=null&&l.hasOwnProperty("display")?l.display:null,r.style.display=Io("display",l)}}else if(t.tag===6)t.stateNode.nodeValue=n?"":t.memoizedProps;else if((t.tag!==23&&t.tag!==24||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}}function As(e,n){if(nn&&typeof nn.onCommitFiberUnmount=="function")try{nn.onCommitFiberUnmount(ci,n)}catch(i){}switch(n.tag){case 0:case 11:case 14:case 15:case 22:if(e=n.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var t=e=e.next;do{var r=t,l=r.destroy;if(r=r.tag,l!==void 0)if((r&4)!=0)Bs(n,t);else{r=n;try{l()}catch(i){Qe(r,i)}}t=t.next}while(t!==e)}break;case 1:if(Vs(n),e=n.stateNode,typeof e.componentWillUnmount=="function")try{e.props=n.memoizedProps,e.state=n.memoizedState,e.componentWillUnmount()}catch(i){Qe(n,i)}break;case 5:Vs(n);break;case 4:Hs(e,n)}}function Qs(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function $s(e){return e.tag===5||e.tag===3||e.tag===4}function Ys(e){e:{for(var n=e.return;n!==null;){if($s(n))break e;n=n.return}throw Error(v(160))}var t=n;switch(n=t.stateNode,t.tag){case 5:var r=!1;break;case 3:n=n.containerInfo,r=!0;break;case 4:n=n.containerInfo,r=!0;break;default:throw Error(v(161))}t.flags&16&&(Jn(n,""),t.flags&=-17);e:n:for(t=e;;){for(;t.sibling===null;){if(t.return===null||$s(t.return)){t=null;break e}t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue n;t.child.return=t,t=t.child}if(!(t.flags&2)){t=t.stateNode;break e}}r?Yi(e,t,n):Xi(e,t,n)}function Yi(e,n,t){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=vr));else if(r!==4&&(e=e.child,e!==null))for(Yi(e,n,t),e=e.sibling;e!==null;)Yi(e,n,t),e=e.sibling}function Xi(e,n,t){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Xi(e,n,t),e=e.sibling;e!==null;)Xi(e,n,t),e=e.sibling}function Hs(e,n){for(var t=n,r=!1,l,i;;){if(!r){r=t.return;e:for(;;){if(r===null)throw Error(v(160));switch(l=r.stateNode,r.tag){case 5:i=!1;break e;case 3:l=l.containerInfo,i=!0;break e;case 4:l=l.containerInfo,i=!0;break e}r=r.return}r=!0}if(t.tag===5||t.tag===6){e:for(var o=e,u=t,s=u;;)if(As(o,s),s.child!==null&&s.tag!==4)s.child.return=s,s=s.child;else{if(s===u)break e;for(;s.sibling===null;){if(s.return===null||s.return===u)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}i?(o=l,u=t.stateNode,o.nodeType===8?o.parentNode.removeChild(u):o.removeChild(u)):l.removeChild(t.stateNode)}else if(t.tag===4){if(t.child!==null){l=t.stateNode.containerInfo,i=!0,t.child.return=t,t=t.child;continue}}else if(As(e,t),t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break;for(;t.sibling===null;){if(t.return===null||t.return===n)return;t=t.return,t.tag===4&&(r=!1)}t.sibling.return=t.return,t=t.sibling}}function Gi(e,n){switch(n.tag){case 0:case 11:case 14:case 15:case 22:var t=n.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do(r.tag&3)==3&&(e=r.destroy,r.destroy=void 0,e!==void 0&&e()),r=r.next;while(r!==t)}return;case 1:return;case 5:if(t=n.stateNode,t!=null){r=n.memoizedProps;var l=e!==null?e.memoizedProps:r;e=n.type;var i=n.updateQueue;if(n.updateQueue=null,i!==null){for(t[gr]=r,e==="input"&&r.type==="radio"&&r.name!=null&&To(t,r),Ll(e,l),n=Ll(e,r),l=0;ll&&(l=o),t&=~i}if(t=l,t=$()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*lc(t/1960))-t,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}H!==5&&(H=2),s=Ai(s,u),h=o;do{switch(h.tag){case 3:i=s,h.flags|=4096,n&=-n,h.lanes|=n;var C=Fs(h,i,n);es(h,C);break e;case 1:i=s;var w=h.type,N=h.stateNode;if((h.flags&64)==0&&(typeof w.getDerivedStateFromError=="function"||N!==null&&typeof N.componentDidCatch=="function"&&(ge===null||!ge.has(N)))){h.flags|=4096,n&=-n,h.lanes|=n;var T=Us(h,i,n);es(h,T);break e}}h=h.return}while(h!==null)}bs(t)}catch(P){n=P,U===t&&t!==null&&(U=t=t.return);continue}break}while(1)}function Zs(){var e=Hr.current;return Hr.current=Ir,e===null?Ir:e}function It(e,n){var t=x;x|=16;var r=Zs();G===e&&X===n||Vn(e,n);do try{sc();break}catch(l){Gs(e,l)}while(1);if(yi(),x=t,Hr.current=r,U!==null)throw Error(v(261));return G=null,X=0,H}function sc(){for(;U!==null;)ea(U)}function ic(){for(;U!==null&&!Bf();)ea(U)}function ea(e){var n=na(e.alternate,e,un);e.memoizedProps=e.pendingProps,n===null?bs(e):U=n,Zi.current=null}function bs(e){var n=e;do{var t=n.alternate;if(e=n.return,(n.flags&2048)==0){if(t=Gf(t,n,un),t!==null){U=t;return}if(t=n,t.tag!==24&&t.tag!==23||t.memoizedState===null||(un&1073741824)!=0||(t.mode&4)==0){for(var r=0,l=t.child;l!==null;)r|=l.lanes|l.childLanes,l=l.sibling;t.childLanes=r}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=n.firstEffect),n.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=n.firstEffect),e.lastEffect=n.lastEffect),1o&&(u=o,o=C,C=u),u=_u(f,C),i=_u(f,o),u&&i&&(m.rangeCount!==1||m.anchorNode!==u.node||m.anchorOffset!==u.offset||m.focusNode!==i.node||m.focusOffset!==i.offset)&&(p=p.createRange(),p.setStart(u.node,u.offset),m.removeAllRanges(),C>o?(m.addRange(p),m.extend(i.node,i.offset)):(p.setEnd(i.node,i.offset),m.addRange(p)))))),p=[],m=f;m=m.parentNode;)m.nodeType===1&&p.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;f$()-Ki?Vn(e,0):qi|=t),se(e,n)}function tc(e,n){var t=e.stateNode;t!==null&&t.delete(n),n=0,n===0&&(n=e.mode,(n&2)==0?n=1:(n&4)==0?n=Ln()===99?1:2:(_e===0&&(_e=Fn),n=wn(62914560&~_e),n===0&&(n=4194304))),t=ne(),e=Xr(e,n),e!==null&&(or(e,n,t),se(e,t))}var na;na=function(e,n,t){var r=n.lanes;if(e!==null)if(e.memoizedProps!==n.pendingProps||Z.current)ce=!0;else if((t&r)!=0)ce=(e.flags&16384)!=0;else{switch(ce=!1,n.tag){case 3:Ps(n),Ni();break;case 5:ss(n);break;case 1:J(n.type)&&kr(n);break;case 4:xi(n,n.stateNode.containerInfo);break;case 10:r=n.memoizedProps.value;var l=n.type._context;j(xr,l._currentValue),l._currentValue=r;break;case 13:if(n.memoizedState!==null)return(t&n.child.childLanes)!=0?zs(e,n,t):(j(I,I.current&1),n=Ee(e,n,t),n!==null?n.sibling:null);j(I,I.current&1);break;case 19:if(r=(t&n.childLanes)!=0,(e.flags&64)!=0){if(r)return Rs(e,n,t);n.flags|=64}if(l=n.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),j(I,I.current),r)break;return null;case 23:case 24:return n.lanes=0,Di(e,n,t)}return Ee(e,n,t)}else ce=!1;switch(n.lanes=0,n.tag){case 2:if(r=n.type,e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2),e=n.pendingProps,l=Tn(n,Q.current),zn(n,t),l=Li(null,n,r,e,l,t),n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0){if(n.tag=1,n.memoizedState=null,n.updateQueue=null,J(r)){var i=!0;kr(n)}else i=!1;n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,wi(n);var o=r.getDerivedStateFromProps;typeof o=="function"&&Nr(n,r,o,e),l.updater=Pr,n.stateNode=l,l._reactInternals=n,ki(n,r,e,t),n=Fi(null,n,r,!0,i,t)}else n.tag=0,b(null,n,l,t),n=n.child;return n;case 16:l=n.elementType;e:{switch(e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2),e=n.pendingProps,i=l._init,l=i(l._payload),n.type=l,i=n.tag=dc(l),e=fe(l,e),i){case 0:n=Ii(null,n,l,e,t);break e;case 1:n=Ns(null,n,l,e,t);break e;case 11:n=Es(null,n,l,e,t);break e;case 14:n=_s(null,n,l,fe(l.type,e),r,t);break e}throw Error(v(306,l,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:fe(r,l),Ii(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:fe(r,l),Ns(e,n,r,l,t);case 3:if(Ps(n),r=n.updateQueue,e===null||r===null)throw Error(v(282));if(r=n.pendingProps,l=n.memoizedState,l=l!==null?l.element:null,bu(e,n),wt(n,r,null,t),r=n.memoizedState.element,r===l)Ni(),n=Ee(e,n,t);else{if(l=n.stateNode,(i=l.hydrate)&&(Ae=Nn(n.stateNode.containerInfo.firstChild),Se=n,i=ve=!0),i){if(e=l.mutableSourceEagerHydrationData,e!=null)for(l=0;l{"use strict";function ua(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ua)}catch(e){console.error(e)}}ua(),oa.exports=ia()});var aa=ga(sa()),{__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:kc,createPortal:Sc,findDOMNode:Ec,flushSync:xc,hydrate:_c,render:Cc,unmountComponentAtNode:Nc,unstable_batchedUpdates:Pc,unstable_createPortal:Tc,unstable_renderSubtreeIntoContainer:Lc,version:Oc}=aa,zc=aa;export{kc as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Sc as createPortal,zc as default,Ec as findDOMNode,xc as flushSync,_c as hydrate,Cc as render,Nc as unmountComponentAtNode,Pc as unstable_batchedUpdates,Tc as unstable_createPortal,Lc as unstable_renderSubtreeIntoContainer,Oc as version}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/cb963f74fa9fd0e6ebe6d1915569a2905f99777f.ts b/bundler/tests/.cache/untrusted/cb963f74fa9fd0e6ebe6d1915569a2905f99777f.ts new file mode 100644 index 00000000000..e8edb22d250 --- /dev/null +++ b/bundler/tests/.cache/untrusted/cb963f74fa9fd0e6ebe6d1915569a2905f99777f.ts @@ -0,0 +1,181 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/schema/columncompiler.js + + +// Column Compiler +// Used for designating column definitions +// during the table "create" / "alter" statements. +// ------- +import Raw from '../raw.js'; +import helpers from './helpers.js'; +import _ from '../deps/lodash@4.17.15/index.js'; +const groupBy = _.groupBy; +const first = _.first; +const has = _.has; +const isObject = _.isObject; +const tail = _.tail; + +function ColumnCompiler(client, tableCompiler, columnBuilder) { + this.client = client; + this.tableCompiler = tableCompiler; + this.columnBuilder = columnBuilder; + this._commonBuilder = this.columnBuilder; + this.args = columnBuilder._args; + this.type = columnBuilder._type.toLowerCase(); + this.grouped = groupBy(columnBuilder._statements, 'grouping'); + this.modified = columnBuilder._modifiers; + this.isIncrements = this.type.indexOf('increments') !== -1; + this.formatter = client.formatter(columnBuilder); + this.sequence = []; + this.modifiers = []; +} + +ColumnCompiler.prototype.pushQuery = helpers.pushQuery; + +ColumnCompiler.prototype.pushAdditional = helpers.pushAdditional; + +ColumnCompiler.prototype.unshiftQuery = helpers.unshiftQuery; + +ColumnCompiler.prototype._defaultMap = { + columnName: function () { + if (!this.isIncrements) { + throw new Error( + `You did not specify a column name for the ${this.type} column.` + ); + } + return 'id'; + }, +}; + +ColumnCompiler.prototype.defaults = function (label) { + if (Object.prototype.hasOwnProperty.call(this._defaultMap, label)) { + return this._defaultMap[label].bind(this)(); + } else { + throw new Error( + `There is no default for the specified identifier ${label}` + ); + } +}; + +// To convert to sql, we first go through and build the +// column as it would be in the insert statement +ColumnCompiler.prototype.toSQL = function () { + this.pushQuery(this.compileColumn()); + if (this.sequence.additional) { + this.sequence = this.sequence.concat(this.sequence.additional); + } + return this.sequence; +}; + +// Compiles a column. +ColumnCompiler.prototype.compileColumn = function () { + return ( + this.formatter.wrap(this.getColumnName()) + + ' ' + + this.getColumnType() + + this.getModifiers() + ); +}; + +// Assumes the autoincrementing key is named `id` if not otherwise specified. +ColumnCompiler.prototype.getColumnName = function () { + const value = first(this.args); + return value || this.defaults('columnName'); +}; + +ColumnCompiler.prototype.getColumnType = function () { + const type = this[this.type]; + return typeof type === 'function' ? type.apply(this, tail(this.args)) : type; +}; + +ColumnCompiler.prototype.getModifiers = function () { + const modifiers = []; + + for (let i = 0, l = this.modifiers.length; i < l; i++) { + const modifier = this.modifiers[i]; + + //Cannot allow 'nullable' modifiers on increments types + if (!this.isIncrements || (this.isIncrements && modifier === 'comment')) { + if (has(this.modified, modifier)) { + const val = this[modifier].apply(this, this.modified[modifier]); + if (val) modifiers.push(val); + } + } + } + + return modifiers.length > 0 ? ` ${modifiers.join(' ')}` : ''; +}; + +// Types +// ------ + +ColumnCompiler.prototype.increments = + 'integer not null primary key autoincrement'; +ColumnCompiler.prototype.bigincrements = + 'integer not null primary key autoincrement'; +ColumnCompiler.prototype.integer = ColumnCompiler.prototype.smallint = ColumnCompiler.prototype.mediumint = + 'integer'; +ColumnCompiler.prototype.biginteger = 'bigint'; +ColumnCompiler.prototype.varchar = function (length) { + return `varchar(${this._num(length, 255)})`; +}; +ColumnCompiler.prototype.text = 'text'; +ColumnCompiler.prototype.tinyint = 'tinyint'; +ColumnCompiler.prototype.floating = function (precision, scale) { + return `float(${this._num(precision, 8)}, ${this._num(scale, 2)})`; +}; +ColumnCompiler.prototype.decimal = function (precision, scale) { + if (precision === null) { + throw new Error( + 'Specifying no precision on decimal columns is not supported for that SQL dialect.' + ); + } + return `decimal(${this._num(precision, 8)}, ${this._num(scale, 2)})`; +}; +ColumnCompiler.prototype.binary = 'blob'; +ColumnCompiler.prototype.bool = 'boolean'; +ColumnCompiler.prototype.date = 'date'; +ColumnCompiler.prototype.datetime = 'datetime'; +ColumnCompiler.prototype.time = 'time'; +ColumnCompiler.prototype.timestamp = 'timestamp'; +ColumnCompiler.prototype.enu = 'varchar'; + +ColumnCompiler.prototype.bit = ColumnCompiler.prototype.json = 'text'; + +ColumnCompiler.prototype.uuid = 'char(36)'; +ColumnCompiler.prototype.specifictype = (type) => type; + +// Modifiers +// ------- + +ColumnCompiler.prototype.nullable = (nullable) => + nullable === false ? 'not null' : 'null'; +ColumnCompiler.prototype.notNullable = function () { + return this.nullable(false); +}; +ColumnCompiler.prototype.defaultTo = function (value) { + if (value === void 0) { + return ''; + } else if (value === null) { + value = 'null'; + } else if (value instanceof Raw) { + value = value.toQuery(); + } else if (this.type === 'bool') { + if (value === 'false') value = 0; + value = `'${value ? 1 : 0}'`; + } else if ( + (this.type === 'json' || this.type === 'jsonb') && + isObject(value) + ) { + value = `'${JSON.stringify(value)}'`; + } else { + value = `'${value}'`; + } + return `default ${value}`; +}; +ColumnCompiler.prototype._num = function (val, fallback) { + if (val === undefined || val === null) return fallback; + const number = parseInt(val, 10); + return isNaN(number) ? fallback : number; +}; + +export default ColumnCompiler; diff --git a/bundler/tests/.cache/untrusted/cc5ce8cfeb1a3c4d5b6efa758497f2032f611b72.ts b/bundler/tests/.cache/untrusted/cc5ce8cfeb1a3c4d5b6efa758497f2032f611b72.ts new file mode 100644 index 00000000000..c6b12c5f421 --- /dev/null +++ b/bundler/tests/.cache/untrusted/cc5ce8cfeb1a3c4d5b6efa758497f2032f611b72.ts @@ -0,0 +1,364 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/oracledb/query/compiler.js + + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const clone = _.clone; +const each = _.each; +const isEmpty = _.isEmpty; +const isPlainObject = _.isPlainObject; +const isString = _.isString; +import Oracle_Compiler from '../../oracle/query/compiler.js'; +import utils from '../utils.js'; +const ReturningHelper = utils.ReturningHelper; +const BlobHelper = utils.BlobHelper; + +class Oracledb_Compiler extends Oracle_Compiler { + constructor(client, builder) { + super(client, builder); + } + + // Compiles an "insert" query, allowing for multiple + // inserts using a single query statement. + insert() { + const self = this; + const outBindPrep = this._prepOutbindings( + this.single.insert, + this.single.returning + ); + const outBinding = outBindPrep.outBinding; + const returning = outBindPrep.returning; + const insertValues = outBindPrep.values; + + if ( + Array.isArray(insertValues) && + insertValues.length === 1 && + isEmpty(insertValues[0]) + ) { + return this._addReturningToSqlAndConvert( + 'insert into ' + + this.tableName + + ' (' + + this.formatter.wrap(this.single.returning) + + ') values (default)', + outBinding[0], + this.tableName, + returning + ); + } + + if ( + isEmpty(this.single.insert) && + typeof this.single.insert !== 'function' + ) { + return ''; + } + + const insertData = this._prepInsert(insertValues); + + const sql = {}; + + if (isString(insertData)) { + return this._addReturningToSqlAndConvert( + 'insert into ' + this.tableName + ' ' + insertData, + outBinding[0], + this.tableName, + returning + ); + } + + if (insertData.values.length === 1) { + return this._addReturningToSqlAndConvert( + 'insert into ' + + this.tableName + + ' (' + + this.formatter.columnize(insertData.columns) + + ') values (' + + this.formatter.parameterize(insertData.values[0]) + + ')', + outBinding[0], + this.tableName, + returning + ); + } + + const insertDefaultsOnly = insertData.columns.length === 0; + sql.returning = returning; + sql.sql = + 'begin ' + + insertData.values + .map(function (value, index) { + const parameterizedValues = !insertDefaultsOnly + ? self.formatter.parameterize(value, self.client.valueForUndefined) + : ''; + let subSql = 'insert into ' + self.tableName; + + if (insertDefaultsOnly) { + // No columns given so only the default value + subSql += + ' (' + + self.formatter.wrap(self.single.returning) + + ') values (default)'; + } else { + subSql += + ' (' + + self.formatter.columnize(insertData.columns) + + ') values (' + + parameterizedValues + + ')'; + } + + let returningClause = ''; + let intoClause = ''; + // ToDo review if this code is still needed or could be dropped + // eslint-disable-next-line no-unused-vars + let usingClause = ''; + let outClause = ''; + + each(value, function (val) { + if (!(val instanceof BlobHelper)) { + usingClause += ' ?,'; + } + }); + usingClause = usingClause.slice(0, -1); + + // Build returning and into clauses + outBinding[index].forEach(function (ret) { + const columnName = ret.columnName || ret; + returningClause += self.formatter.wrap(columnName) + ','; + intoClause += ' ?,'; + outClause += ' out ?,'; + + // Add Helpers to bindings + if (ret instanceof BlobHelper) { + return self.formatter.bindings.push(ret); + } + self.formatter.bindings.push(new ReturningHelper(columnName)); + }); + + // Strip last comma + returningClause = returningClause.slice(0, -1); + intoClause = intoClause.slice(0, -1); + outClause = outClause.slice(0, -1); + + if (returningClause && intoClause) { + subSql += ' returning ' + returningClause + ' into' + intoClause; + } + + // Pre bind position because subSql is an execute immediate parameter + // later position binding will only convert the ? params + subSql = self.formatter.client.positionBindings(subSql); + const parameterizedValuesWithoutDefaultAndBlob = parameterizedValues + .replace('DEFAULT, ', '') + .replace(', DEFAULT', '') + .replace('EMPTY_BLOB(), ', '') + .replace(', EMPTY_BLOB()', ''); + return ( + "execute immediate '" + + subSql.replace(/'/g, "''") + + (parameterizedValuesWithoutDefaultAndBlob || value + ? "' using " + : '') + + parameterizedValuesWithoutDefaultAndBlob + + (parameterizedValuesWithoutDefaultAndBlob && outClause ? ',' : '') + + outClause + + ';' + ); + }) + .join(' ') + + 'end;'; + + sql.outBinding = outBinding; + if (returning[0] === '*') { + // Generate select statement with special order by + // to keep the order because 'in (..)' may change the order + sql.returningSql = function () { + return ( + 'select * from ' + + self.tableName + + ' where ROWID in (' + + this.outBinding + .map(function (v, i) { + return ':' + (i + 1); + }) + .join(', ') + + ')' + + ' order by case ROWID ' + + this.outBinding + .map(function (v, i) { + return 'when CHARTOROWID(:' + (i + 1) + ') then ' + i; + }) + .join(' ') + + ' end' + ); + }; + } + + return sql; + } + + _addReturningToSqlAndConvert(sql, outBinding, tableName, returning) { + const self = this; + const res = { + sql: sql, + }; + + if (!outBinding) { + return res; + } + const returningValues = Array.isArray(outBinding) + ? outBinding + : [outBinding]; + let returningClause = ''; + let intoClause = ''; + // Build returning and into clauses + returningValues.forEach(function (ret) { + const columnName = ret.columnName || ret; + returningClause += self.formatter.wrap(columnName) + ','; + intoClause += '?,'; + + // Add Helpers to bindings + if (ret instanceof BlobHelper) { + return self.formatter.bindings.push(ret); + } + self.formatter.bindings.push(new ReturningHelper(columnName)); + }); + res.sql = sql; + + // Strip last comma + returningClause = returningClause.slice(0, -1); + intoClause = intoClause.slice(0, -1); + if (returningClause && intoClause) { + res.sql += ' returning ' + returningClause + ' into ' + intoClause; + } + res.outBinding = [outBinding]; + if (returning[0] === '*') { + res.returningSql = function () { + return 'select * from ' + self.tableName + ' where ROWID = :1'; + }; + } + res.returning = returning; + + return res; + } + + _prepOutbindings(paramValues, paramReturning) { + const result = {}; + let params = paramValues || []; + let returning = paramReturning || []; + if (!Array.isArray(params) && isPlainObject(paramValues)) { + params = [params]; + } + // Always wrap returning argument in array + if (returning && !Array.isArray(returning)) { + returning = [returning]; + } + + const outBinding = []; + // Handle Buffer value as Blob + each(params, function (values, index) { + if (returning[0] === '*') { + outBinding[index] = ['ROWID']; + } else { + outBinding[index] = clone(returning); + } + each(values, function (value, key) { + if (value instanceof Buffer) { + values[key] = new BlobHelper(key, value); + + // Delete blob duplicate in returning + const blobIndex = outBinding[index].indexOf(key); + if (blobIndex >= 0) { + outBinding[index].splice(blobIndex, 1); + values[key].returning = true; + } + outBinding[index].push(values[key]); + } + if (value === undefined) { + delete params[index][key]; + } + }); + }); + result.returning = returning; + result.outBinding = outBinding; + result.values = params; + return result; + } + + update() { + const self = this; + const sql = {}; + const outBindPrep = this._prepOutbindings( + this.single.update || this.single.counter, + this.single.returning + ); + const outBinding = outBindPrep.outBinding; + const returning = outBindPrep.returning; + + const updates = this._prepUpdate(this.single.update); + const where = this.where(); + + let returningClause = ''; + let intoClause = ''; + + if (isEmpty(updates) && typeof this.single.update !== 'function') { + return ''; + } + + // Build returning and into clauses + outBinding.forEach(function (out) { + out.forEach(function (ret) { + const columnName = ret.columnName || ret; + returningClause += self.formatter.wrap(columnName) + ','; + intoClause += ' ?,'; + + // Add Helpers to bindings + if (ret instanceof BlobHelper) { + return self.formatter.bindings.push(ret); + } + self.formatter.bindings.push(new ReturningHelper(columnName)); + }); + }); + // Strip last comma + returningClause = returningClause.slice(0, -1); + intoClause = intoClause.slice(0, -1); + + sql.outBinding = outBinding; + sql.returning = returning; + sql.sql = + 'update ' + + this.tableName + + ' set ' + + updates.join(', ') + + (where ? ' ' + where : ''); + if (outBinding.length && !isEmpty(outBinding[0])) { + sql.sql += ' returning ' + returningClause + ' into' + intoClause; + } + if (returning[0] === '*') { + sql.returningSql = function () { + let sql = 'select * from ' + self.tableName; + const modifiedRowsCount = this.rowsAffected.length || this.rowsAffected; + let returningSqlIn = ' where ROWID in ('; + let returningSqlOrderBy = ') order by case ROWID '; + + // Needs special order by because in(...) change result order + for (let i = 0; i < modifiedRowsCount; i++) { + if (this.returning[0] === '*') { + returningSqlIn += ':' + (i + 1) + ', '; + returningSqlOrderBy += + 'when CHARTOROWID(:' + (i + 1) + ') then ' + i + ' '; + } + } + if (this.returning[0] === '*') { + this.returning = this.returning.slice(0, -1); + returningSqlIn = returningSqlIn.slice(0, -2); + returningSqlOrderBy = returningSqlOrderBy.slice(0, -1); + } + return (sql += returningSqlIn + returningSqlOrderBy + ' end'); + }; + } + + return sql; + } +} + +export default Oracledb_Compiler; diff --git a/bundler/tests/.cache/untrusted/cc785a9248deb8c72cc9d05e4d0b027e7ac2c706.ts b/bundler/tests/.cache/untrusted/cc785a9248deb8c72cc9d05e4d0b027e7ac2c706.ts new file mode 100644 index 00000000000..ffccd071f22 --- /dev/null +++ b/bundler/tests/.cache/untrusted/cc785a9248deb8c72cc9d05e4d0b027e7ac2c706.ts @@ -0,0 +1,25 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/undefined.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; +// import { ZodUnion } from './union'; +// import { ZodNull } from './null'; + +export interface ZodUndefinedDef extends ZodTypeDef { + t: ZodTypes.undefined; +} + +export class ZodUndefined extends ZodType { + toJSON = () => this._def; + + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + static create = (): ZodUndefined => { + return new ZodUndefined({ + t: ZodTypes.undefined, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/cd080cfd599e44a9e7f1c8578360398ee838c856.ts b/bundler/tests/.cache/untrusted/cd080cfd599e44a9e7f1c8578360398ee838c856.ts new file mode 100644 index 00000000000..3db3472466c --- /dev/null +++ b/bundler/tests/.cache/untrusted/cd080cfd599e44a9e7f1c8578360398ee838c856.ts @@ -0,0 +1,429 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/object.ts + + +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; +import { objectUtil } from "../helpers/objectUtil.ts"; +// import { mergeShapes } from "../helpers/objectUtil/merge"; +import { partialUtil } from "../helpers/partialUtil.ts"; +import { Scalars } from "../helpers/primitive.ts"; +import { isScalar } from "../isScalar.ts"; +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodRawShape, ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; + +import { ZodNever } from "./never.ts"; + +export const mergeObjects = (first: First) => < + Second extends AnyZodObject +>( + second: Second +): ZodObject< + First["_shape"] & Second["_shape"], + First["_unknownKeys"], + First["_catchall"] + // MergeObjectParams, + // First['_input'] & Second['_input'], + // First['_output'] & Second['_output'] +> => { + const mergedShape = objectUtil.mergeShapes( + first._def.shape(), + second._def.shape() + ); + const merged: any = new ZodObject({ + t: ZodTypes.object, + effects: [...(first._def.effects || []), ...(second._def.effects || [])], + unknownKeys: first._def.unknownKeys, + catchall: first._def.catchall, + // params: { + // strict: first.params.strict && second.params.strict, + // }, + shape: () => mergedShape, + }) as any; + return merged; +}; + +const AugmentFactory = (def: Def) => < + Augmentation extends ZodRawShape +>( + augmentation: Augmentation +): ZodObject< + { + [k in Exclude< + keyof ReturnType, + keyof Augmentation + >]: ReturnType[k]; + } & + { [k in keyof Augmentation]: Augmentation[k] }, + Def["unknownKeys"], + Def["catchall"] +> => { + return new ZodObject({ + ...def, + shape: () => ({ + ...def.shape(), + ...augmentation, + }), + }) as any; +}; + +type UnknownKeysParam = "passthrough" | "strict" | "strip"; + +export interface ZodObjectDef< + T extends ZodRawShape = ZodRawShape, + UnknownKeys extends UnknownKeysParam = UnknownKeysParam, + Catchall extends ZodTypeAny = ZodTypeAny + // Params extends ZodObjectParams = ZodObjectParams +> extends ZodTypeDef { + t: ZodTypes.object; + shape: () => T; + catchall: Catchall; + unknownKeys: UnknownKeys; + // params: Params; +} + +export type baseObjectOutputType< + Shape extends ZodRawShape + // Catchall extends ZodTypeAny +> = objectUtil.flatten< + objectUtil.addQuestionMarks< + { + [k in keyof Shape]: Shape[k]["_output"]; + } + > //{ [k: string]: Catchall['_output'] } +>; + +export type objectOutputType< + Shape extends ZodRawShape, + Catchall extends ZodTypeAny +> = ZodTypeAny extends Catchall + ? baseObjectOutputType + : objectUtil.flatten< + baseObjectOutputType & { [k: string]: Catchall["_output"] } + >; + +export type baseObjectInputType = objectUtil.flatten< + objectUtil.addQuestionMarks< + { + [k in keyof Shape]: Shape[k]["_input"]; + } + > +>; + +export type objectInputType< + Shape extends ZodRawShape, + Catchall extends ZodTypeAny +> = ZodTypeAny extends Catchall + ? baseObjectInputType + : objectUtil.flatten< + baseObjectInputType & { [k: string]: Catchall["_input"] } + >; + +const objectDefToJson = (def: ZodObjectDef) => ({ + t: def.t, + shape: Object.assign( + {}, + ...Object.keys(def.shape()).map((k) => ({ + [k]: def.shape()[k].toJSON(), + })) + ), +}); + +// interface ZodObjectParams { +// strict: boolean; +// } + +// type SetKey< +// Target extends object, +// Key extends string, +// Value extends any +// > = objectUtil.Flatten< +// { [k in Exclude]: Target[k] } & { [k in Key]: Value } +// >; + +// type makeKeysRequired> = T extends ZodObject< +// infer U, +// infer P, +// infer C +// > +// ? ZodObject }>, P, C> +// : never; + +// type makeRequired> = T extends ZodUnion +// ? U extends [infer Y, ZodUndefined] +// ? Y +// : U extends [ZodUndefined, infer Z] +// ? Z +// : T +// : T; + +// type ZodObjectType< +// T extends ZodRawShape, +// Params extends ZodObjectParams +// > = Params['strict'] extends true +// ? objectUtil.ObjectType +// : objectUtil.Flatten & { [k: string]: any }>; + +export class ZodObject< + T extends ZodRawShape, + UnknownKeys extends UnknownKeysParam = "strip", + Catchall extends ZodTypeAny = ZodTypeAny, + // Params extends ZodObjectParams = { strict: true }, + // Type extends ZodObjectType = ZodObjectType + Output = objectOutputType, + Input = objectInputType +> extends ZodType< + // objectUtil.objectOutputType, + Output, + ZodObjectDef, + Input +> { + readonly _shape!: T; + readonly _unknownKeys!: UnknownKeys; + readonly _catchall!: Catchall; + + get shape() { + return this._def.shape(); + } + + // get params() { + // return this._def.params; + // } + + // get t() { + // return this; + // } + + toJSON = () => objectDefToJson(this._def); + + strict = (): ZodObject => + new ZodObject({ + ...this._def, + unknownKeys: "strict", + }); + + strip = (): ZodObject => + new ZodObject({ + ...this._def, + unknownKeys: "strip", + }); + + passthrough = (): ZodObject => + new ZodObject({ + ...this._def, + unknownKeys: "passthrough", + }); + + nonstrict = this.passthrough; + + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + augment = AugmentFactory>(this._def); + extend = AugmentFactory>(this._def); + + setKey = ( + key: Key, + schema: Schema + ): ZodObject => { + return this.augment({ [key]: schema }) as any; + }; + + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge: ( + other: Incoming + ) => ZodObject< + T & Incoming["_shape"], + UnknownKeys, + Catchall + // objectUtil.MergeObjectParams + > = mergeObjects(this as any) as any; + + catchall = ( + index: Index + ): ZodObject< + T, + UnknownKeys, + Index + // objectUtil.MergeObjectParams + > => { + return new ZodObject({ + ...this._def, + // unknownKeys: 'passthrough', + catchall: index, + }); + }; + + pick = ( + mask: Mask + ): ZodObject< + objectUtil.NoNever<{ [k in keyof Mask]: k extends keyof T ? T[k] : never }>, + UnknownKeys, + Catchall + > => { + const shape: any = {}; + Object.keys(mask).map((key) => { + shape[key] = this.shape[key]; + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + }; + + omit = ( + mask: Mask + ): ZodObject< + objectUtil.NoNever<{ [k in keyof T]: k extends keyof Mask ? never : T[k] }>, + UnknownKeys, + Catchall + > => { + const shape: any = {}; + Object.keys(this.shape).map((key) => { + if (Object.keys(mask).indexOf(key) === -1) { + shape[key] = this.shape[key]; + } + }); + return new ZodObject({ + ...this._def, + shape: () => shape, + }); + }; + + partial = (): ZodObject< + { [k in keyof T]: ReturnType }, + UnknownKeys, + Catchall + > => { + const newShape: any = {}; + for (const key in this.shape) { + const fieldSchema = this.shape[key]; + newShape[key] = fieldSchema.isOptional() + ? fieldSchema + : fieldSchema.optional(); + } + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + }; + + // require: () => makeKeysRequired = () => { + // const newShape: any = {}; + // for (const key in this.shape) { + // const val = this.shape[key]; + // if (val instanceof ZodUnion) { + // const options = (val as ZodUnion)._def.options; + // if (options.length === 2) { + // // .length === 2; + // if (options[0] instanceof ZodUndefined) { + // newShape[key] = options[1]; + // } else if (options[1] instanceof ZodUndefined) { + // newShape[key] = options[0]; + // } + // } else { + // newShape[key] = val; + // } + // } else { + // newShape[key] = val; + // } + // } + // return new ZodObject({ + // ...this._def, + // shape: () => newShape, + // }) as any; + // }; + + primitives = (): ZodObject< + objectUtil.NoNever< + { + [k in keyof T]: [T[k]["_output"]] extends [Scalars] ? T[k] : never; + } + >, + UnknownKeys, + Catchall + > => { + const newShape: any = {}; + for (const key in this.shape) { + if (isScalar(this.shape[key])) { + newShape[key] = this.shape[key]; + } + } + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + }; + + nonprimitives = (): ZodObject< + objectUtil.NoNever< + { + [k in keyof T]: [T[k]["_output"]] extends [Scalars] ? never : T[k]; + } + >, + UnknownKeys, + Catchall + > => { + const newShape: any = {}; + for (const key in this.shape) { + if (!isScalar(this.shape[key])) { + newShape[key] = this.shape[key]; + } + } + return new ZodObject({ + ...this._def, + shape: () => newShape, + }); + }; + + deepPartial: () => partialUtil.RootDeepPartial = () => { + const newShape: any = {}; + + for (const key in this.shape) { + const fieldSchema = this.shape[key]; + if (fieldSchema instanceof ZodObject) { + newShape[key] = fieldSchema.isOptional() + ? fieldSchema + : (fieldSchema.deepPartial() as any).optional(); + } else { + newShape[key] = fieldSchema.isOptional() + ? fieldSchema + : fieldSchema.optional(); + } + } + return new ZodObject({ + ...this._def, + shape: () => newShape, + }) as any; + }; + + // keyof: ()=>ZodEnum<{[k in T]: k}> + + static create = (shape: T): ZodObject => { + return new ZodObject({ + t: ZodTypes.object, + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + // params: { + // strict: true, + // }, + }) as any; + }; + + static lazycreate = (shape: () => T): ZodObject => { + return new ZodObject({ + t: ZodTypes.object, + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + }) as any; + }; +} + +export type AnyZodObject = ZodObject; diff --git a/bundler/tests/.cache/untrusted/cd7d3577ecd1b3a10741a02bc8430e7b3639512c.ts b/bundler/tests/.cache/untrusted/cd7d3577ecd1b3a10741a02bc8430e7b3639512c.ts new file mode 100644 index 00000000000..3daa0354dbd --- /dev/null +++ b/bundler/tests/.cache/untrusted/cd7d3577ecd1b3a10741a02bc8430e7b3639512c.ts @@ -0,0 +1,71 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/generate/index.dew.js + + +import { dew as _compressionsDewDew } from "../compressions.dew.js"; +import { dew as _ZipFileWorkerDewDew } from "./ZipFileWorker.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var compressions = _compressionsDewDew(); + + var ZipFileWorker = _ZipFileWorkerDewDew(); + /** + * Find the compression to use. + * @param {String} fileCompression the compression defined at the file level, if any. + * @param {String} zipCompression the compression defined at the load() level. + * @return {Object} the compression object to use. + */ + + + var getCompression = function (fileCompression, zipCompression) { + var compressionName = fileCompression || zipCompression; + var compression = compressions[compressionName]; + + if (!compression) { + throw new Error(compressionName + " is not a valid compression method !"); + } + + return compression; + }; + /** + * Create a worker to generate a zip file. + * @param {JSZip} zip the JSZip instance at the right root level. + * @param {Object} options to generate the zip file. + * @param {String} comment the comment to use. + */ + + + exports.generateWorker = function (zip, options, comment) { + var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName); + var entriesCount = 0; + + try { + zip.forEach(function (relativePath, file) { + entriesCount++; + var compression = getCompression(file.options.compression, options.compression); + var compressionOptions = file.options.compressionOptions || options.compressionOptions || {}; + var dir = file.dir, + date = file.date; + + file._compressWorker(compression, compressionOptions).withStreamInfo("file", { + name: relativePath, + dir: dir, + date: date, + comment: file.comment || "", + unixPermissions: file.unixPermissions, + dosPermissions: file.dosPermissions + }).pipe(zipFileWorker); + }); + zipFileWorker.entriesCount = entriesCount; + } catch (e) { + zipFileWorker.error(e); + } + + return zipFileWorker; + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/cd9b667fba1bf7d4096ee99267de0aa25d536d5b.ts b/bundler/tests/.cache/untrusted/cd9b667fba1bf7d4096ee99267de0aa25d536d5b.ts new file mode 100644 index 00000000000..b65834aa8e1 --- /dev/null +++ b/bundler/tests/.cache/untrusted/cd9b667fba1bf7d4096ee99267de0aa25d536d5b.ts @@ -0,0 +1,5 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/tarn@3.0.0/dist/tarn.js + + +import { dew } from './tarn.dew.js'; +export default dew(); diff --git a/bundler/tests/.cache/untrusted/cdcb229d89721de36ee0db28f9c112b9ccf24d6a.ts b/bundler/tests/.cache/untrusted/cdcb229d89721de36ee0db28f9c112b9ccf24d6a.ts new file mode 100644 index 00000000000..c0e49ed0482 --- /dev/null +++ b/bundler/tests/.cache/untrusted/cdcb229d89721de36ee0db28f9c112b9ccf24d6a.ts @@ -0,0 +1,33 @@ +// Loaded from https://cdn.skypack.dev/-/@octokit/request-error@v2.0.5-M484dtcgyBZagFjx2PkF/dist=es2020,mode=imports/optimized/@octokit/request-error.js + + +import {Deprecation} from "/-/deprecation@v2.3.1-uvOjAQiALAZPHmrlznlP/dist=es2020,mode=imports/optimized/deprecation.js"; +import once2 from "/-/once@v1.4.0-dZva3nt1fLBY6vpXF5Hj/dist=es2020,mode=imports/optimized/once.js"; +const logOnce = once2((deprecation2) => console.warn(deprecation2)); +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "HttpError"; + this.status = statusCode; + Object.defineProperty(this, "code", { + get() { + logOnce(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } + }); + this.headers = options.headers || {}; + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); + } + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + } +} +export {RequestError}; +export default null; diff --git a/bundler/tests/.cache/untrusted/ce1b9ec1933f38d497dfda83435040793ceb5847.ts b/bundler/tests/.cache/untrusted/ce1b9ec1933f38d497dfda83435040793ceb5847.ts new file mode 100644 index 00000000000..e8b675949e6 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ce1b9ec1933f38d497dfda83435040793ceb5847.ts @@ -0,0 +1,327 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/sqlite3/schema/ddl.js + + +// SQLite3_DDL +// +// All of the SQLite3 specific DDL helpers for renaming/dropping +// columns and changing datatypes. +// ------- + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const assign = _.assign; +const chunk = _.chunk; +const find = _.find; +const fromPairs = _.fromPairs; +const identity = _.identity; +const invert = _.invert; +const isEmpty = _.isEmpty; +const negate = _.negate; +const omit = _.omit; +const uniqueId = _.uniqueId; + +// So altering the schema in SQLite3 is a major pain. +// We have our own object to deal with the renaming and altering the types +// for sqlite3 things. +function SQLite3_DDL(client, tableCompiler, pragma, connection) { + this.client = client; + this.tableCompiler = tableCompiler; + this.pragma = pragma; + this.tableNameRaw = this.tableCompiler.tableNameRaw; + this.alteredName = uniqueId('_knex_temp_alter'); + this.connection = connection; + this.formatter = + client && client.config && client.config.wrapIdentifier + ? client.config.wrapIdentifier + : (value) => value; +} + +assign(SQLite3_DDL.prototype, { + tableName() { + return this.formatter(this.tableNameRaw, (value) => value); + }, + + getColumn: async function (column) { + const currentCol = find(this.pragma, (col) => { + return ( + this.client.wrapIdentifier(col.name).toLowerCase() === + this.client.wrapIdentifier(column).toLowerCase() + ); + }); + if (!currentCol) + throw new Error( + `The column ${column} is not in the ${this.tableName()} table` + ); + return currentCol; + }, + + getTableSql() { + this.trx.disableProcessing(); + return this.trx + .raw( + `SELECT name, sql FROM sqlite_master WHERE type="table" AND name="${this.tableName()}"` + ) + .then((result) => { + this.trx.enableProcessing(); + return result; + }); + }, + + renameTable: async function () { + return this.trx.raw( + `ALTER TABLE "${this.tableName()}" RENAME TO "${this.alteredName}"` + ); + }, + + dropOriginal() { + return this.trx.raw(`DROP TABLE "${this.tableName()}"`); + }, + + dropTempTable() { + return this.trx.raw(`DROP TABLE "${this.alteredName}"`); + }, + + copyData() { + return this.trx + .raw(`SELECT * FROM "${this.tableName()}"`) + .then((result) => + this.insertChunked(20, this.alteredName, identity, result) + ); + }, + + reinsertData(iterator) { + return this.trx + .raw(`SELECT * FROM "${this.alteredName}"`) + .then((result) => + this.insertChunked(20, this.tableName(), iterator, result) + ); + }, + + async insertChunked(chunkSize, target, iterator, result) { + iterator = iterator || identity; + const chunked = chunk(result, chunkSize); + for (const batch of chunked) { + await this.trx.queryBuilder().table(target).insert(batch.map(iterator)); + } + }, + + createTempTable(createTable) { + return this.trx.raw( + createTable.sql.replace(this.tableName(), this.alteredName) + ); + }, + + _doReplace(sql, from, to) { + const oneLineSql = sql.replace(/\s+/g, ' '); + const matched = oneLineSql.match(/^CREATE TABLE\s+(\S+)\s*\((.*)\)/); + + const tableName = matched[1]; + const defs = matched[2]; + + if (!defs) { + throw new Error('No column definitions in this statement!'); + } + + let parens = 0, + args = [], + ptr = 0; + let i = 0; + const x = defs.length; + for (i = 0; i < x; i++) { + switch (defs[i]) { + case '(': + parens++; + break; + case ')': + parens--; + break; + case ',': + if (parens === 0) { + args.push(defs.slice(ptr, i)); + ptr = i + 1; + } + break; + case ' ': + if (ptr === i) { + ptr = i + 1; + } + break; + } + } + args.push(defs.slice(ptr, i)); + + const fromIdentifier = from.replace(/[`"'[\]]/g, ''); + + args = args.map((item) => { + let split = item.trim().split(' '); + + // SQLite supports all quoting mechanisms prevalent in all major dialects of SQL + // and preserves the original quoting in sqlite_master. + // + // Also, identifiers are never case sensitive, not even when quoted. + // + // Ref: https://www.sqlite.org/lang_keywords.html + const fromMatchCandidates = [ + new RegExp(`\`${fromIdentifier}\``, 'i'), + new RegExp(`"${fromIdentifier}"`, 'i'), + new RegExp(`'${fromIdentifier}'`, 'i'), + new RegExp(`\\[${fromIdentifier}\\]`, 'i'), + ]; + if (fromIdentifier.match(/^\S+$/)) { + fromMatchCandidates.push(new RegExp(`\\b${fromIdentifier}\\b`, 'i')); + } + + const doesMatchFromIdentifier = (target) => + fromMatchCandidates.some((c) => target.match(c)); + + const replaceFromIdentifier = (target) => + fromMatchCandidates.reduce( + (result, candidate) => result.replace(candidate, to), + target + ); + + if (doesMatchFromIdentifier(split[0])) { + // column definition + if (to) { + split[0] = to; + return split.join(' '); + } + return ''; // for deletions + } + + // skip constraint name + const idx = /constraint/i.test(split[0]) ? 2 : 0; + + // primary key and unique constraints have one or more + // columns from this table listed between (); replace + // one if it matches + if (/primary|unique/i.test(split[idx])) { + const ret = item.replace(/\(.*\)/, replaceFromIdentifier); + // If any member columns are dropped then uniqueness/pk constraint + // can not be retained + if (ret !== item && isEmpty(to)) return ''; + return ret; + } + + // foreign keys have one or more columns from this table + // listed between (); replace one if it matches + // foreign keys also have a 'references' clause + // which may reference THIS table; if it does, replace + // column references in that too! + if (/foreign/.test(split[idx])) { + split = item.split(/ references /i); + // the quoted column names save us from having to do anything + // other than a straight replace here + const replacedKeySpec = replaceFromIdentifier(split[0]); + + if (split[0] !== replacedKeySpec) { + // If we are removing one or more columns of a foreign + // key, then we should not retain the key at all + if (isEmpty(to)) return ''; + else split[0] = replacedKeySpec; + } + + if (split[1].slice(0, tableName.length) === tableName) { + // self-referential foreign key + const replacedKeyTargetSpec = split[1].replace( + /\(.*\)/, + replaceFromIdentifier + ); + if (split[1] !== replacedKeyTargetSpec) { + // If we are removing one or more columns of a foreign + // key, then we should not retain the key at all + if (isEmpty(to)) return ''; + else split[1] = replacedKeyTargetSpec; + } + } + return split.join(' references '); + } + + return item; + }); + + args = args.filter(negate(isEmpty)); + + if (args.length === 0) { + throw new Error('Unable to drop last column from table'); + } + + return oneLineSql + .replace(/\(.*\)/, () => `(${args.join(', ')})`) + .replace(/,\s*([,)])/, '$1'); + }, + + // Boy, this is quite a method. + renameColumn: async function (from, to) { + return this.client.transaction( + async (trx) => { + this.trx = trx; + const column = await this.getColumn(from); + const sql = await this.getTableSql(column); + const a = this.client.wrapIdentifier(from); + const b = this.client.wrapIdentifier(to); + const createTable = sql[0]; + const newSql = this._doReplace(createTable.sql, a, b); + if (sql === newSql) { + throw new Error('Unable to find the column to change'); + } + + const { from: mappedFrom, to: mappedTo } = invert( + this.client.postProcessResponse( + invert({ + from, + to, + }) + ) + ); + + return this.reinsertMapped(createTable, newSql, (row) => { + row[mappedTo] = row[mappedFrom]; + return omit(row, mappedFrom); + }); + }, + { connection: this.connection } + ); + }, + + dropColumn: async function (columns) { + return this.client.transaction( + (trx) => { + this.trx = trx; + return Promise.all(columns.map((column) => this.getColumn(column))) + .then(() => this.getTableSql()) + .then((sql) => { + const createTable = sql[0]; + let newSql = createTable.sql; + columns.forEach((column) => { + const a = this.client.wrapIdentifier(column); + newSql = this._doReplace(newSql, a, ''); + }); + if (sql === newSql) { + throw new Error('Unable to find the column to change'); + } + const mappedColumns = Object.keys( + this.client.postProcessResponse( + fromPairs(columns.map((column) => [column, column])) + ) + ); + return this.reinsertMapped(createTable, newSql, (row) => + omit(row, ...mappedColumns) + ); + }); + }, + { connection: this.connection } + ); + }, + + reinsertMapped(createTable, newSql, mapRow) { + return Promise.resolve() + .then(() => this.createTempTable(createTable)) + .then(() => this.copyData()) + .then(() => this.dropOriginal()) + .then(() => this.trx.raw(newSql)) + .then(() => this.reinsertData(mapRow)) + .then(() => this.dropTempTable()); + }, +}); + +export default SQLite3_DDL; diff --git a/bundler/tests/.cache/untrusted/ce8b89a1d59e22168d5bc2b0b0b87a8dab54f62a.ts b/bundler/tests/.cache/untrusted/ce8b89a1d59e22168d5bc2b0b0b87a8dab54f62a.ts new file mode 100644 index 00000000000..4309b5fed10 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ce8b89a1d59e22168d5bc2b0b0b87a8dab54f62a.ts @@ -0,0 +1,604 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/interval.js + + +import DateTime, { friendlyDateTime } from "./datetime.js"; +import Duration, { friendlyDuration } from "./duration.js"; +import Settings from "./settings.js"; +import { InvalidArgumentError, InvalidIntervalError } from "./errors.js"; +import Invalid from "./impl/invalid.js"; + +const INVALID = "Invalid Interval"; + +// checks if the start is equal to or before the end +function validateStartEnd(start, end) { + if (!start || !start.isValid) { + return Interval.invalid("missing or invalid start"); + } else if (!end || !end.isValid) { + return Interval.invalid("missing or invalid end"); + } else if (end < start) { + return Interval.invalid( + "end before start", + `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}` + ); + } else { + return null; + } +} + +/** + * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them. + * + * Here is a brief overview of the most commonly used methods and getters in Interval: + * + * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}. + * * **Accessors** Use {@link start} and {@link end} to get the start and end. + * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}. + * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}. + * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}. + * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}. + */ +export default class Interval { + /** + * @private + */ + constructor(config) { + /** + * @access private + */ + this.s = config.start; + /** + * @access private + */ + this.e = config.end; + /** + * @access private + */ + this.invalid = config.invalid || null; + /** + * @access private + */ + this.isLuxonInterval = true; + } + + /** + * Create an invalid Interval. + * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Interval} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Interval is invalid"); + } + + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + + if (Settings.throwOnInvalid) { + throw new InvalidIntervalError(invalid); + } else { + return new Interval({ invalid }); + } + } + + /** + * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end. + * @param {DateTime|Date|Object} start + * @param {DateTime|Date|Object} end + * @return {Interval} + */ + static fromDateTimes(start, end) { + const builtStart = friendlyDateTime(start), + builtEnd = friendlyDateTime(end); + + const validateError = validateStartEnd(builtStart, builtEnd); + + if (validateError == null) { + return new Interval({ + start: builtStart, + end: builtEnd + }); + } else { + return validateError; + } + } + + /** + * Create an Interval from a start DateTime and a Duration to extend to. + * @param {DateTime|Date|Object} start + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static after(start, duration) { + const dur = friendlyDuration(duration), + dt = friendlyDateTime(start); + return Interval.fromDateTimes(dt, dt.plus(dur)); + } + + /** + * Create an Interval from an end DateTime and a Duration to extend backwards to. + * @param {DateTime|Date|Object} end + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static before(end, duration) { + const dur = friendlyDuration(duration), + dt = friendlyDateTime(end); + return Interval.fromDateTimes(dt.minus(dur), dt); + } + + /** + * Create an Interval from an ISO 8601 string. + * Accepts `/`, `/`, and `/` formats. + * @param {string} text - the ISO string to parse + * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO} + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {Interval} + */ + static fromISO(text, opts) { + const [s, e] = (text || "").split("/", 2); + if (s && e) { + let start, startIsValid; + try { + start = DateTime.fromISO(s, opts); + startIsValid = start.isValid; + } catch (e) { + startIsValid = false; + } + + let end, endIsValid; + try { + end = DateTime.fromISO(e, opts); + endIsValid = end.isValid; + } catch (e) { + endIsValid = false; + } + + if (startIsValid && endIsValid) { + return Interval.fromDateTimes(start, end); + } + + if (startIsValid) { + const dur = Duration.fromISO(e, opts); + if (dur.isValid) { + return Interval.after(start, dur); + } + } else if (endIsValid) { + const dur = Duration.fromISO(s, opts); + if (dur.isValid) { + return Interval.before(end, dur); + } + } + } + return Interval.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`); + } + + /** + * Check if an object is an Interval. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isInterval(o) { + return (o && o.isLuxonInterval) || false; + } + + /** + * Returns the start of the Interval + * @type {DateTime} + */ + get start() { + return this.isValid ? this.s : null; + } + + /** + * Returns the end of the Interval + * @type {DateTime} + */ + get end() { + return this.isValid ? this.e : null; + } + + /** + * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'. + * @type {boolean} + */ + get isValid() { + return this.invalidReason === null; + } + + /** + * Returns an error code if this Interval is invalid, or null if the Interval is valid + * @type {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + + /** + * Returns an explanation of why this Interval became invalid, or null if the Interval is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + + /** + * Returns the length of the Interval in the specified unit. + * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in. + * @return {number} + */ + length(unit = "milliseconds") { + return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN; + } + + /** + * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part. + * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day' + * asks 'what dates are included in this interval?', not 'how many days long is this interval?' + * @param {string} [unit='milliseconds'] - the unit of time to count. + * @return {number} + */ + count(unit = "milliseconds") { + if (!this.isValid) return NaN; + const start = this.start.startOf(unit), + end = this.end.startOf(unit); + return Math.floor(end.diff(start, unit).get(unit)) + 1; + } + + /** + * Returns whether this Interval's start and end are both in the same unit of time + * @param {string} unit - the unit of time to check sameness on + * @return {boolean} + */ + hasSame(unit) { + return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false; + } + + /** + * Return whether this Interval has the same start and end DateTimes. + * @return {boolean} + */ + isEmpty() { + return this.s.valueOf() === this.e.valueOf(); + } + + /** + * Return whether this Interval's start is after the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isAfter(dateTime) { + if (!this.isValid) return false; + return this.s > dateTime; + } + + /** + * Return whether this Interval's end is before the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isBefore(dateTime) { + if (!this.isValid) return false; + return this.e <= dateTime; + } + + /** + * Return whether this Interval contains the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + contains(dateTime) { + if (!this.isValid) return false; + return this.s <= dateTime && this.e > dateTime; + } + + /** + * "Sets" the start and/or end dates. Returns a newly-constructed Interval. + * @param {Object} values - the values to set + * @param {DateTime} values.start - the starting DateTime + * @param {DateTime} values.end - the ending DateTime + * @return {Interval} + */ + set({ start, end } = {}) { + if (!this.isValid) return this; + return Interval.fromDateTimes(start || this.s, end || this.e); + } + + /** + * Split this Interval at each of the specified DateTimes + * @param {...[DateTime]} dateTimes - the unit of time to count. + * @return {[Interval]} + */ + splitAt(...dateTimes) { + if (!this.isValid) return []; + const sorted = dateTimes + .map(friendlyDateTime) + .filter(d => this.contains(d)) + .sort(), + results = []; + let { s } = this, + i = 0; + + while (s < this.e) { + const added = sorted[i] || this.e, + next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s, next)); + s = next; + i += 1; + } + + return results; + } + + /** + * Split this Interval into smaller Intervals, each of the specified length. + * Left over time is grouped into a smaller interval + * @param {Duration|Object|number} duration - The length of each resulting interval. + * @return {[Interval]} + */ + splitBy(duration) { + const dur = friendlyDuration(duration); + + if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) { + return []; + } + + let { s } = this, + added, + next; + + const results = []; + while (s < this.e) { + added = s.plus(dur); + next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s, next)); + s = next; + } + + return results; + } + + /** + * Split this Interval into the specified number of smaller intervals. + * @param {number} numberOfParts - The number of Intervals to divide the Interval into. + * @return {[Interval]} + */ + divideEqually(numberOfParts) { + if (!this.isValid) return []; + return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts); + } + + /** + * Return whether this Interval overlaps with the specified Interval + * @param {Interval} other + * @return {boolean} + */ + overlaps(other) { + return this.e > other.s && this.s < other.e; + } + + /** + * Return whether this Interval's end is adjacent to the specified Interval's start. + * @param {Interval} other + * @return {boolean} + */ + abutsStart(other) { + if (!this.isValid) return false; + return +this.e === +other.s; + } + + /** + * Return whether this Interval's start is adjacent to the specified Interval's end. + * @param {Interval} other + * @return {boolean} + */ + abutsEnd(other) { + if (!this.isValid) return false; + return +other.e === +this.s; + } + + /** + * Return whether this Interval engulfs the start and end of the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + engulfs(other) { + if (!this.isValid) return false; + return this.s <= other.s && this.e >= other.e; + } + + /** + * Return whether this Interval has the same start and end as the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + + return this.s.equals(other.s) && this.e.equals(other.e); + } + + /** + * Return an Interval representing the intersection of this Interval and the specified Interval. + * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals. + * Returns null if the intersection is empty, meaning, the intervals don't intersect. + * @param {Interval} other + * @return {Interval} + */ + intersection(other) { + if (!this.isValid) return this; + const s = this.s > other.s ? this.s : other.s, + e = this.e < other.e ? this.e : other.e; + + if (s > e) { + return null; + } else { + return Interval.fromDateTimes(s, e); + } + } + + /** + * Return an Interval representing the union of this Interval and the specified Interval. + * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals. + * @param {Interval} other + * @return {Interval} + */ + union(other) { + if (!this.isValid) return this; + const s = this.s < other.s ? this.s : other.s, + e = this.e > other.e ? this.e : other.e; + return Interval.fromDateTimes(s, e); + } + + /** + * Merge an array of Intervals into a equivalent minimal set of Intervals. + * Combines overlapping and adjacent Intervals. + * @param {[Interval]} intervals + * @return {[Interval]} + */ + static merge(intervals) { + const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce( + ([sofar, current], item) => { + if (!current) { + return [sofar, item]; + } else if (current.overlaps(item) || current.abutsStart(item)) { + return [sofar, current.union(item)]; + } else { + return [sofar.concat([current]), item]; + } + }, + [[], null] + ); + if (final) { + found.push(final); + } + return found; + } + + /** + * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals. + * @param {[Interval]} intervals + * @return {[Interval]} + */ + static xor(intervals) { + let start = null, + currentCount = 0; + const results = [], + ends = intervals.map(i => [{ time: i.s, type: "s" }, { time: i.e, type: "e" }]), + flattened = Array.prototype.concat(...ends), + arr = flattened.sort((a, b) => a.time - b.time); + + for (const i of arr) { + currentCount += i.type === "s" ? 1 : -1; + + if (currentCount === 1) { + start = i.time; + } else { + if (start && +start !== +i.time) { + results.push(Interval.fromDateTimes(start, i.time)); + } + + start = null; + } + } + + return Interval.merge(results); + } + + /** + * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals. + * @param {...Interval} intervals + * @return {[Interval]} + */ + difference(...intervals) { + return Interval.xor([this].concat(intervals)) + .map(i => this.intersection(i)) + .filter(i => i && !i.isEmpty()); + } + + /** + * Returns a string representation of this Interval appropriate for debugging. + * @return {string} + */ + toString() { + if (!this.isValid) return INVALID; + return `[${this.s.toISO()} – ${this.e.toISO()})`; + } + + /** + * Returns an ISO 8601-compliant string representation of this Interval. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime.toISO} + * @return {string} + */ + toISO(opts) { + if (!this.isValid) return INVALID; + return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`; + } + + /** + * Returns an ISO 8601-compliant string representation of date of this Interval. + * The time components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {string} + */ + toISODate() { + if (!this.isValid) return INVALID; + return `${this.s.toISODate()}/${this.e.toISODate()}`; + } + + /** + * Returns an ISO 8601-compliant string representation of time of this Interval. + * The date components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime.toISO} + * @return {string} + */ + toISOTime(opts) { + if (!this.isValid) return INVALID; + return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`; + } + + /** + * Returns a string representation of this Interval formatted according to the specified format string. + * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details. + * @param {Object} opts - options + * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations + * @return {string} + */ + toFormat(dateFormat, { separator = " – " } = {}) { + if (!this.isValid) return INVALID; + return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`; + } + + /** + * Return a Duration representing the time spanned by this interval. + * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 } + * @return {Duration} + */ + toDuration(unit, opts) { + if (!this.isValid) { + return Duration.invalid(this.invalidReason); + } + return this.e.diff(this.s, unit, opts); + } + + /** + * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes + * @param {function} mapFn + * @return {Interval} + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC()) + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 })) + */ + mapEndpoints(mapFn) { + return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + } +} diff --git a/bundler/tests/.cache/untrusted/cec4b2759b5b06c11e27ea29959f27f61265f796.ts b/bundler/tests/.cache/untrusted/cec4b2759b5b06c11e27ea29959f27f61265f796.ts new file mode 100644 index 00000000000..15cf0a49e8d --- /dev/null +++ b/bundler/tests/.cache/untrusted/cec4b2759b5b06c11e27ea29959f27f61265f796.ts @@ -0,0 +1,9 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/deps.ts + + +export { BufReader, BufWriter } from "https://deno.land/std@0.85.0/io/bufio.ts"; +export { copy } from "https://deno.land/std@0.85.0/bytes/mod.ts"; +export { createHash } from "https://deno.land/std@0.85.0/hash/mod.ts"; +export { deferred, delay } from "https://deno.land/std@0.85.0/async/mod.ts"; +export { bold, yellow } from "https://deno.land/std@0.85.0/fmt/colors.ts"; +export type { Deferred } from "https://deno.land/std@0.85.0/async/mod.ts"; diff --git a/bundler/tests/.cache/untrusted/cfbde5fb116f1fad0f708259e8d11efc4be56a90.ts b/bundler/tests/.cache/untrusted/cfbde5fb116f1fad0f708259e8d11efc4be56a90.ts new file mode 100644 index 00000000000..3aa497e174b --- /dev/null +++ b/bundler/tests/.cache/untrusted/cfbde5fb116f1fad0f708259e8d11efc4be56a90.ts @@ -0,0 +1,25 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/debug@4.1.1/src/index.dew.js + + +import { dew as _browserDewDew } from "./browser.dew.js"; +import { dew as _nodeDewDew } from "./node.dew.js"; +import _process from "../../@jspm/core@1.1.0/nodelibs/process.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + var process = _process; + + /** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + exports = _browserDewDew(); + } else { + exports = _nodeDewDew(); + } + + return exports; +} diff --git a/bundler/tests/.cache/untrusted/d0413bedcb835122ee1bf5e116888c88d587d8a5.ts b/bundler/tests/.cache/untrusted/d0413bedcb835122ee1bf5e116888c88d587d8a5.ts new file mode 100644 index 00000000000..b1c16c44cc7 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d0413bedcb835122ee1bf5e116888c88d587d8a5.ts @@ -0,0 +1,162 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/seed/Seeder.js + + +// Seeder +// ------- + +import * as path from "../deps/path/mod.ts"; +import _ from '../deps/lodash@4.17.15/index.js'; +const extend = _.extend; +const includes = _.includes; +import { readdir, ensureDirectoryExists } from '../util/fs.js'; +import { writeJsFileUsingTemplate } from '../util/template.js'; + +// The new seeds we're performing, typically called from the `knex.seed` +// interface on the main `knex` object. Passes the `knex` instance performing +// the seeds. +class Seeder { + constructor(knex) { + this.knex = knex; + this.config = this.setConfig(knex.client.config.seeds); + } + + // Runs seed files for the given environment. + async run(config) { + this.config = this.setConfig(config); + const all = await this._listAll(); + const files = + config && config.specific + ? all.filter((file) => file === config.specific) + : all; + return this._runSeeds(files); + } + + // Creates a new seed file, with a given name. + async make(name, config) { + this.config = this.setConfig(config); + if (!name) + throw new Error('A name must be specified for the generated seed'); + await this._ensureFolder(config); + const seedPath = await this._writeNewSeed(name); + return seedPath; + } + + // Lists all available seed files as a sorted array. + async _listAll(config) { + this.config = this.setConfig(config); + const loadExtensions = this.config.loadExtensions; + return readdir(this._absoluteConfigDir()).then((seeds) => + seeds + .filter((value) => { + const extension = path.extname(value); + return includes(loadExtensions, extension); + }) + .sort() + ); + } + + // Ensures a folder for the seeds exist, dependent on the + // seed config settings. + async _ensureFolder() { + const dir = this._absoluteConfigDir(); + + await ensureDirectoryExists(dir); + } + + // Run seed files, in sequence. + _runSeeds(seeds) { + seeds.forEach((seed) => this._validateSeedStructure(seed)); + return this._waterfallBatch(seeds); + } + + // Validates seed files by requiring and checking for a `seed` function. + _validateSeedStructure(name) { + const seed = require(path.join(this._absoluteConfigDir(), name)); + if (typeof seed.seed !== 'function') { + throw new Error(`Invalid seed file: ${name} must have a seed function`); + } + return name; + } + + _getStubPath() { + return ( + this.config.stub || + path.join(__dirname, 'stub', this.config.extension + '.stub') + ); + } + + _getNewStubFileName(name) { + if (name[0] === '-') name = name.slice(1); + return name + '.' + this.config.extension; + } + + _getNewStubFilePath(name) { + return path.join(this._absoluteConfigDir(), this._getNewStubFileName(name)); + } + + // Write a new seed to disk, using the config and generated filename, + // passing any `variables` given in the config to the template. + async _writeNewSeed(name) { + const seedPath = this._getNewStubFilePath(name); + await writeJsFileUsingTemplate( + seedPath, + this._getStubPath(), + { variable: 'd' }, + this.config.variables || {} + ); + return seedPath; + } + + // Runs a batch of seed files. + async _waterfallBatch(seeds) { + const { knex } = this; + const seedDirectory = this._absoluteConfigDir(); + const log = []; + for (const seedName of seeds) { + const seedPath = path.join(seedDirectory, seedName); + const seed = require(seedPath); + try { + await seed.seed(knex); + log.push(seedPath); + } catch (originalError) { + const error = new Error( + `Error while executing "${seedPath}" seed: ${originalError.message}` + ); + error.original = originalError; + error.stack = + error.stack.split('\n').slice(0, 2).join('\n') + + '\n' + + originalError.stack; + throw error; + } + } + return [log]; + } + + _absoluteConfigDir() { + return path.resolve(process.cwd(), this.config.directory); + } + + setConfig(config) { + return extend( + { + extension: 'js', + directory: './seeds', + loadExtensions: [ + '.co', + '.coffee', + '.eg', + '.iced', + '.js', + '.litcoffee', + '.ls', + '.ts', + ], + }, + this.config || {}, + config + ); + } +} + +export default Seeder; diff --git a/bundler/tests/.cache/untrusted/d2e3b78a3908640a6731a68db739ec353b5b4b52.ts b/bundler/tests/.cache/untrusted/d2e3b78a3908640a6731a68db739ec353b5b4b52.ts new file mode 100644 index 00000000000..ffb88d337ed --- /dev/null +++ b/bundler/tests/.cache/untrusted/d2e3b78a3908640a6731a68db739ec353b5b4b52.ts @@ -0,0 +1,663 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/protocol.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ConnectionOptions, + DebugEvents, + DEFAULT_MAX_PING_OUT, + DEFAULT_PING_INTERVAL, + DEFAULT_RECONNECT_TIME_WAIT, + Empty, + Events, + PublishOptions, + Status, + Subscription, +} from "./types.ts"; +import { newTransport, Transport } from "./transport.ts"; +import { ErrorCode, NatsError } from "./error.ts"; +import { + CR_LF, + CRLF, + Deferred, + deferred, + delay, + extend, + timeout, +} from "./util.ts"; +import { nuid } from "./nuid.ts"; +import { DataBuffer } from "./databuffer.ts"; +import { ServerImpl, Servers } from "./servers.ts"; +import { Dispatcher, QueuedIterator } from "./queued_iterator.ts"; +import type { MsgHdrs, MsgHdrsImpl } from "./headers.ts"; +import { SubscriptionImpl } from "./subscription.ts"; +import { Subscriptions } from "./subscriptions.ts"; +import { MuxSubscription } from "./muxsubscription.ts"; +import type { Request } from "./request.ts"; +import { Heartbeat, PH } from "./heartbeats.ts"; +import { Kind, MsgArg, Parser, ParserEvent } from "./parser.ts"; +import { MsgImpl } from "./msg.ts"; +import { fastDecoder, fastEncoder } from "./encoders.ts"; + +const FLUSH_THRESHOLD = 1024 * 32; + +export const INFO = /^INFO\s+([^\r\n]+)\r\n/i; + +export function createInbox(): string { + return `_INBOX.${nuid.next()}`; +} + +const PONG_CMD = fastEncoder("PONG\r\n"); +const PING_CMD = fastEncoder("PING\r\n"); + +export class Connect { + echo?: boolean; + no_responders?: boolean; + protocol: number = 1; + verbose?: boolean; + pedantic?: boolean; + jwt?: string; + nkey?: string; + sig?: string; + user?: string; + pass?: string; + auth_token?: string; + tls_required?: boolean; + name?: string; + lang: string; + version: string; + headers?: boolean; + + constructor( + transport: { version: string; lang: string }, + opts: ConnectionOptions, + nonce?: string, + ) { + this.version = transport.version; + this.lang = transport.lang; + this.echo = opts.noEcho ? false : undefined; + this.no_responders = opts.noResponders ? true : undefined; + this.verbose = opts.verbose; + this.pedantic = opts.pedantic; + this.tls_required = opts.tls ? true : undefined; + this.name = opts.name; + this.headers = opts.headers; + + const creds = + (opts && opts.authenticator ? opts.authenticator(nonce) : {}) || {}; + extend(this, creds); + } +} + +export interface Publisher { + publish( + subject: string, + data: any, + options?: { reply?: string; headers?: MsgHdrs }, + ): void; +} + +export class ProtocolHandler implements Dispatcher { + connected = false; + connectedOnce = false; + infoReceived = false; + info?: any; + muxSubscriptions: MuxSubscription; + options: ConnectionOptions; + outbound: DataBuffer; + pongs: Array>; + pout = 0; + subscriptions: Subscriptions; + transport!: Transport; + noMorePublishing = false; + connectError?: Function; + publisher: Publisher; + _closed = false; + closed: Deferred; + listeners: QueuedIterator[] = []; + heartbeats: Heartbeat; + parser: Parser; + outMsgs = 0; + inMsgs = 0; + outBytes = 0; + inBytes = 0; + pendingLimit = FLUSH_THRESHOLD; + + private servers: Servers; + private server!: ServerImpl; + + constructor(options: ConnectionOptions, publisher: Publisher) { + this.options = options; + this.publisher = publisher; + this.subscriptions = new Subscriptions(); + this.muxSubscriptions = new MuxSubscription(); + this.outbound = new DataBuffer(); + this.pongs = []; + //@ts-ignore + this.pendingLimit = options.pendingLimit || this.pendingLimit; + this.servers = new Servers( + !options.noRandomize, + //@ts-ignore + options.servers, + ); + this.closed = deferred(); + this.parser = new Parser(this); + + this.heartbeats = new Heartbeat( + this as PH, + this.options.pingInterval || DEFAULT_PING_INTERVAL, + this.options.maxPingOut || DEFAULT_MAX_PING_OUT, + ); + } + + resetOutbound(): void { + this.outbound.reset(); + const pongs = this.pongs; + this.pongs = []; + // reject the pongs + pongs.forEach((p) => { + p.reject(NatsError.errorForCode(ErrorCode.DISCONNECT)); + }); + this.parser = new Parser(this); + this.infoReceived = false; + } + + dispatchStatus(status: Status): void { + this.listeners.forEach((q) => { + q.push(status); + }); + } + + status(): AsyncIterable { + const iter = new QueuedIterator(); + this.listeners.push(iter); + return iter; + } + + private prepare(): Deferred { + this.info = undefined; + this.resetOutbound(); + + const pong = deferred(); + this.pongs.unshift(pong); + + this.connectError = undefined; + + this.connectError = (err: NatsError) => { + pong.reject(err); + }; + + this.transport = newTransport(); + this.transport.closed() + .then(async (err?) => { + this.connected = false; + if (!this.isClosed()) { + await this.disconnected(this.transport.closeError); + return; + } + }); + + return pong; + } + + public disconnect(): void { + this.dispatchStatus({ type: DebugEvents.STALE_CONNECTION, data: "" }); + this.transport.disconnect(); + } + + async disconnected(err?: Error): Promise { + this.dispatchStatus( + { + type: Events.DISCONNECT, + data: this.servers.getCurrentServer().toString(), + }, + ); + if (this.options.reconnect) { + await this.dialLoop() + .then(() => { + this.dispatchStatus( + { + type: Events.RECONNECT, + data: this.servers.getCurrentServer().toString(), + }, + ); + }) + .catch((err) => { + this._close(err); + }); + } else { + await this._close(); + } + } + + async dial(srv: ServerImpl): Promise { + const pong = this.prepare(); + const timer = timeout(this.options.timeout || 20000); + try { + await this.transport.connect(srv, this.options); + (async () => { + try { + for await (const b of this.transport) { + this.parser.parse(b); + } + } catch (err) { + console.log("reader closed", err); + } + })().then(); + } catch (err) { + pong.reject(err); + } + + try { + await Promise.race([timer, pong]); + timer.cancel(); + this.connected = true; + this.connectError = undefined; + this.sendSubscriptions(); + this.connectedOnce = true; + this.server.didConnect = true; + this.server.reconnects = 0; + this.flushPending(); + this.heartbeats.start(); + } catch (err) { + timer.cancel(); + await this.transport.close(err); + throw err; + } + } + + async dialLoop(): Promise { + let lastError: Error | undefined; + while (true) { + let wait = this.options.reconnectDelayHandler + ? this.options.reconnectDelayHandler() + : DEFAULT_RECONNECT_TIME_WAIT; + let maxWait = wait; + const srv = this.selectServer(); + if (!srv) { + throw lastError || NatsError.errorForCode(ErrorCode.CONNECTION_REFUSED); + } + const now = Date.now(); + if (srv.lastConnect === 0 || srv.lastConnect + wait <= now) { + srv.lastConnect = Date.now(); + try { + this.dispatchStatus( + { type: DebugEvents.RECONNECTING, data: srv.toString() }, + ); + await this.dial(srv); + break; + } catch (err) { + lastError = err; + if (!this.connectedOnce) { + if (!this.options.waitOnFirstConnect) { + this.servers.removeCurrentServer(); + } + continue; + } + srv.reconnects++; + const mra = this.options.maxReconnectAttempts || 0; + if (mra !== -1 && srv.reconnects >= mra) { + this.servers.removeCurrentServer(); + } + } + } else { + maxWait = Math.min(maxWait, srv.lastConnect + wait - now); + await delay(maxWait); + } + } + } + + public static async connect( + options: ConnectionOptions, + publisher: Publisher, + ): Promise { + const h = new ProtocolHandler(options, publisher); + await h.dialLoop(); + return h; + } + + static toError(s: string) { + let t = s ? s.toLowerCase() : ""; + if (t.indexOf("permissions violation") !== -1) { + return new NatsError(s, ErrorCode.PERMISSIONS_VIOLATION); + } else if (t.indexOf("authorization violation") !== -1) { + return new NatsError(s, ErrorCode.AUTHORIZATION_VIOLATION); + } else { + return new NatsError(s, ErrorCode.NATS_PROTOCOL_ERR); + } + } + + processMsg(msg: MsgArg, data: Uint8Array) { + this.inMsgs++; + this.inBytes += data.length; + if (!this.subscriptions.sidCounter) { + return; + } + + let sub = this.subscriptions.get(msg.sid) as SubscriptionImpl; + if (!sub) { + return; + } + sub.received += 1; + + if (sub.callback) { + sub.callback(null, new MsgImpl(msg, data, this)); + } + + if (sub.max !== undefined && sub.received >= sub.max) { + sub.unsubscribe(); + } + } + + async processError(m: Uint8Array) { + const s = fastDecoder(m); + const err = ProtocolHandler.toError(s); + this.subscriptions.handleError(err); + await this._close(err); + } + + processPing() { + this.transport.send(PONG_CMD); + } + + processPong() { + this.pout = 0; + const cb = this.pongs.shift(); + if (cb) { + cb.resolve(); + } + } + + processInfo(m: Uint8Array) { + this.info = JSON.parse(fastDecoder(m)); + const updates = this.options && this.options.ignoreClusterUpdates + ? undefined + : this.servers.update(this.info); + if (!this.infoReceived) { + this.infoReceived = true; + if (this.transport.isEncrypted()) { + this.servers.updateTLSName(); + } + // send connect + const { version, lang } = this.transport; + try { + const c = new Connect( + { version, lang }, + this.options, + this.info.nonce, + ); + + const cs = JSON.stringify(c); + this.transport.send( + fastEncoder(`CONNECT ${cs}${CR_LF}`), + ); + this.transport.send(PING_CMD); + } catch (err) { + this._close( + NatsError.errorForCode(ErrorCode.BAD_AUTHENTICATION, err), + ); + } + } + if (updates) { + this.dispatchStatus({ type: Events.UPDATE, data: updates }); + } + const ldm = this.info.ldm !== undefined ? this.info.ldm : false; + if (ldm) { + this.dispatchStatus( + { + type: Events.LDM, + data: this.servers.getCurrentServer().toString(), + }, + ); + } + } + + push(e: ParserEvent): void { + switch (e.kind) { + case Kind.MSG: + const { msg, data } = e; + this.processMsg(msg!, data!); + break; + case Kind.OK: + break; + case Kind.ERR: + this.processError(e.data!); + break; + case Kind.PING: + this.processPing(); + break; + case Kind.PONG: + this.processPong(); + break; + case Kind.INFO: + this.processInfo(e.data!); + break; + } + } + + sendCommand(cmd: (string | Uint8Array), ...payloads: Uint8Array[]) { + const len = this.outbound.length(); + let buf: Uint8Array; + if (typeof cmd === "string") { + buf = fastEncoder(cmd); + } else { + buf = cmd as Uint8Array; + } + this.outbound.fill(buf, ...payloads); + + if (len === 0) { + setTimeout(() => { + this.flushPending(); + }); + } else if (this.outbound.size() >= this.pendingLimit) { + this.flushPending(); + } + } + + publish( + subject: string, + data: Uint8Array, + options?: PublishOptions, + ) { + if (this.isClosed()) { + throw NatsError.errorForCode(ErrorCode.CONNECTION_CLOSED); + } + if (this.noMorePublishing) { + throw NatsError.errorForCode(ErrorCode.CONNECTION_DRAINING); + } + + let len = data.length; + options = options || {}; + options.reply = options.reply || ""; + + let headers = Empty; + let hlen = 0; + if (options.headers) { + if (!this.options.headers) { + throw new NatsError("headers", ErrorCode.SERVER_OPTION_NA); + } + const hdrs = options.headers as MsgHdrsImpl; + headers = hdrs.encode(); + hlen = headers.length; + len = data.length + hlen; + } + + if (len > this.info.max_payload) { + throw NatsError.errorForCode((ErrorCode.MAX_PAYLOAD_EXCEEDED)); + } + this.outBytes += len; + this.outMsgs++; + + let proto: string; + if (options.headers) { + if (options.reply) { + proto = `HPUB ${subject} ${options.reply} ${hlen} ${len}${CR_LF}`; + } else { + proto = `HPUB ${subject} ${hlen} ${len}\r\n`; + } + this.sendCommand(proto, headers, data, CRLF); + } else { + if (options.reply) { + proto = `PUB ${subject} ${options.reply} ${len}\r\n`; + } else { + proto = `PUB ${subject} ${len}\r\n`; + } + this.sendCommand(proto, data, CRLF); + } + } + + request(r: Request): Request { + this.initMux(); + this.muxSubscriptions.add(r); + return r; + } + + subscribe(s: SubscriptionImpl): Subscription { + this.subscriptions.add(s); + if (s.queue) { + this.sendCommand(`SUB ${s.subject} ${s.queue} ${s.sid}\r\n`); + } else { + this.sendCommand(`SUB ${s.subject} ${s.sid}\r\n`); + } + if (s.max) { + this.unsubscribe(s, s.max); + } + return s; + } + + unsubscribe(s: SubscriptionImpl, max?: number) { + this.unsub(s, max); + if (s.max === undefined || s.received >= s.max) { + this.subscriptions.cancel(s); + } + } + + unsub(s: SubscriptionImpl, max?: number) { + if (!s || this.isClosed()) { + return; + } + if (max) { + this.sendCommand(`UNSUB ${s.sid} ${max}${CR_LF}`); + } else { + this.sendCommand(`UNSUB ${s.sid}${CR_LF}`); + } + s.max = max; + } + + flush(p?: Deferred): Promise { + if (!p) { + p = deferred(); + } + this.pongs.push(p); + this.sendCommand(PING_CMD); + return p; + } + + sendSubscriptions() { + let cmds: string[] = []; + this.subscriptions.all().forEach((s) => { + const sub = s as SubscriptionImpl; + if (sub.queue) { + cmds.push(`SUB ${sub.subject} ${sub.queue} ${sub.sid}${CR_LF}`); + } else { + cmds.push(`SUB ${sub.subject} ${sub.sid}${CR_LF}`); + } + }); + if (cmds.length) { + this.transport.send(fastEncoder(cmds.join(""))); + } + } + + private async _close(err?: Error): Promise { + if (this._closed) { + return; + } + this.heartbeats.cancel(); + if (this.connectError) { + this.connectError(err); + this.connectError = undefined; + } + this.muxSubscriptions.close(); + this.subscriptions.close(); + this.listeners.forEach((l) => { + l.stop(); + }); + this._closed = true; + await this.transport.close(err); + await this.closed.resolve(err); + } + + close(): Promise { + return this._close(); + } + + isClosed(): boolean { + return this._closed; + } + + drain(): Promise { + let subs = this.subscriptions.all(); + let promises: Promise[] = []; + subs.forEach((sub: Subscription) => { + promises.push(sub.drain()); + }); + return Promise.all(promises) + .then(async () => { + this.noMorePublishing = true; + return this.close(); + }) + .catch(() => { + // cannot happen + }); + } + + private flushPending() { + if (!this.infoReceived || !this.connected) { + return; + } + + if (this.outbound.size()) { + let d = this.outbound.drain(); + this.transport.send(d); + } + } + + private initMux(): void { + let mux = this.subscriptions.getMux(); + if (!mux) { + let inbox = this.muxSubscriptions.init(); + // dot is already part of mux + const sub = new SubscriptionImpl(this, `${inbox}*`); + sub.callback = this.muxSubscriptions.dispatcher(); + this.subscriptions.setMux(sub); + this.subscribe(sub); + } + } + + private selectServer(): ServerImpl | undefined { + let server = this.servers.selectServer(); + if (server === undefined) { + return undefined; + } + // Place in client context. + this.server = server; + return this.server; + } + + getServer(): ServerImpl | undefined { + return this.server; + } +} diff --git a/bundler/tests/.cache/untrusted/d2e9d14e56bf338a81afeac1e91b2dcc65c29b49.ts b/bundler/tests/.cache/untrusted/d2e9d14e56bf338a81afeac1e91b2dcc65c29b49.ts new file mode 100644 index 00000000000..e6dc9b6b8de --- /dev/null +++ b/bundler/tests/.cache/untrusted/d2e9d14e56bf338a81afeac1e91b2dcc65c29b49.ts @@ -0,0 +1,271 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/runner.js + + +import { KnexTimeoutError } from './util/timeout.js'; +import { timeout } from './util/timeout.js'; + +let PassThrough; + +// The "Runner" constructor takes a "builder" (query, schema, or raw) +// and runs through each of the query statements, calling any additional +// "output" method provided alongside the query and bindings. +function Runner(client, builder) { + this.client = client; + this.builder = builder; + this.queries = []; + + // The "connection" object is set on the runner when + // "run" is called. + this.connection = void 0; +} + +Object.assign(Runner.prototype, { + // "Run" the target, calling "toSQL" on the builder, returning + // an object or array of queries to run, each of which are run on + // a single connection. + run() { + const runner = this; + return ( + this.ensureConnection(function (connection) { + runner.connection = connection; + + runner.client.emit('start', runner.builder); + runner.builder.emit('start', runner.builder); + const sql = runner.builder.toSQL(); + + if (runner.builder._debug) { + runner.client.logger.debug(sql); + } + + if (Array.isArray(sql)) { + return runner.queryArray(sql); + } + return runner.query(sql); + }) + + // If there are any "error" listeners, we fire an error event + // and then re-throw the error to be eventually handled by + // the promise chain. Useful if you're wrapping in a custom `Promise`. + .catch(function (err) { + if (runner.builder._events && runner.builder._events.error) { + runner.builder.emit('error', err); + } + throw err; + }) + + // Fire a single "end" event on the builder when + // all queries have successfully completed. + .then(function (res) { + runner.builder.emit('end'); + return res; + }) + ); + }, + + // Stream the result set, by passing through to the dialect's streaming + // capabilities. If the options are + stream(options, handler) { + // If we specify stream(handler).then(... + if (arguments.length === 1) { + if (typeof options === 'function') { + handler = options; + options = {}; + } + } + + // Determines whether we emit an error or throw here. + const hasHandler = typeof handler === 'function'; + + // Lazy-load the "PassThrough" dependency. + PassThrough = PassThrough || require('stream').PassThrough; + + const runner = this; + const stream = new PassThrough({ objectMode: true }); + + let hasConnection = false; + const promise = this.ensureConnection(function (connection) { + hasConnection = true; + runner.connection = connection; + try { + const sql = runner.builder.toSQL(); + + if (Array.isArray(sql) && hasHandler) { + throw new Error( + 'The stream may only be used with a single query statement.' + ); + } + + return runner.client.stream(runner.connection, sql, stream, options); + } catch (e) { + stream.emit('error', e); + throw e; + } + }); + + // If a function is passed to handle the stream, send the stream + // there and return the promise, otherwise just return the stream + // and the promise will take care of itself. + if (hasHandler) { + handler(stream); + return promise; + } + + // Emit errors on the stream if the error occurred before a connection + // could be acquired. + // If the connection was acquired, assume the error occurred in the client + // code and has already been emitted on the stream. Don't emit it twice. + promise.catch(function (err) { + if (!hasConnection) stream.emit('error', err); + }); + return stream; + }, + + // Allow you to pipe the stream to a writable stream. + pipe(writable, options) { + return this.stream(options).pipe(writable); + }, + + // "Runs" a query, returning a promise. All queries specified by the builder are guaranteed + // to run in sequence, and on the same connection, especially helpful when schema building + // and dealing with foreign key constraints, etc. + query: async function (obj) { + const { __knexUid, __knexTxId } = this.connection; + + this.builder.emit('query', Object.assign({ __knexUid, __knexTxId }, obj)); + + const runner = this; + let queryPromise = this.client.query(this.connection, obj); + + if (obj.timeout) { + queryPromise = timeout(queryPromise, obj.timeout); + } + + // Await the return value of client.processResponse; in the case of sqlite3's + // dropColumn()/renameColumn(), it will be a Promise for the transaction + // containing the complete rename procedure. + return queryPromise + .then((resp) => this.client.processResponse(resp, runner)) + .then((processedResponse) => { + const queryContext = this.builder.queryContext(); + const postProcessedResponse = this.client.postProcessResponse( + processedResponse, + queryContext + ); + + this.builder.emit( + 'query-response', + postProcessedResponse, + Object.assign({ __knexUid: this.connection.__knexUid }, obj), + this.builder + ); + + this.client.emit( + 'query-response', + postProcessedResponse, + Object.assign({ __knexUid: this.connection.__knexUid }, obj), + this.builder + ); + + return postProcessedResponse; + }) + .catch((error) => { + if (!(error instanceof KnexTimeoutError)) { + return Promise.reject(error); + } + const { timeout, sql, bindings } = obj; + + let cancelQuery; + if (obj.cancelOnTimeout) { + cancelQuery = this.client.cancelQuery(this.connection); + } else { + // If we don't cancel the query, we need to mark the connection as disposed so that + // it gets destroyed by the pool and is never used again. If we don't do this and + // return the connection to the pool, it will be useless until the current operation + // that timed out, finally finishes. + this.connection.__knex__disposed = error; + cancelQuery = Promise.resolve(); + } + + return cancelQuery + .catch((cancelError) => { + // If the cancellation failed, we need to mark the connection as disposed so that + // it gets destroyed by the pool and is never used again. If we don't do this and + // return the connection to the pool, it will be useless until the current operation + // that timed out, finally finishes. + this.connection.__knex__disposed = error; + + // cancellation failed + throw Object.assign(cancelError, { + message: `After query timeout of ${timeout}ms exceeded, cancelling of query failed.`, + sql, + bindings, + timeout, + }); + }) + .then(() => { + // cancellation succeeded, rethrow timeout error + throw Object.assign(error, { + message: `Defined query timeout of ${timeout}ms exceeded when running query.`, + sql, + bindings, + timeout, + }); + }); + }) + .catch((error) => { + this.builder.emit( + 'query-error', + error, + Object.assign({ __knexUid: this.connection.__knexUid }, obj) + ); + throw error; + }); + }, + + // In the case of the "schema builder" we call `queryArray`, which runs each + // of the queries in sequence. + async queryArray(queries) { + if (queries.length === 1) { + return this.query(queries[0]); + } + + const results = []; + for (const query of queries) { + results.push(await this.query(query)); + } + return results; + }, + + // Check whether there's a transaction flag, and that it has a connection. + async ensureConnection(cb) { + // Use override from a builder if passed + if (this.builder._connection) { + return cb(this.builder._connection); + } + + if (this.connection) { + return cb(this.connection); + } + return this.client + .acquireConnection() + .catch((error) => { + if (!(error instanceof KnexTimeoutError)) { + return Promise.reject(error); + } + if (this.builder) { + error.sql = this.builder.sql; + error.bindings = this.builder.bindings; + } + throw error; + }) + .then(async (connection) => { + try { + return await cb(connection); + } finally { + await this.client.releaseConnection(this.connection); + } + }); + }, +}); + +export default Runner; diff --git a/bundler/tests/.cache/untrusted/d307962d9748235d16269a1d835624ef7af5f405.ts b/bundler/tests/.cache/untrusted/d307962d9748235d16269a1d835624ef7af5f405.ts new file mode 100644 index 00000000000..74db4b8f347 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d307962d9748235d16269a1d835624ef7af5f405.ts @@ -0,0 +1,137 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/nuid.ts + + +/* +* Copyright 2016-2020 The NATS Authors +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +"use strict"; + +const digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +const base = 36; +const preLen = 12; +const seqLen = 10; +const maxSeq = 3656158440062976; // base^seqLen == 36^10 +const minInc = 33; +const maxInc = 333; +const totalLen = preLen + seqLen; + +const cryptoObj = initCrypto(); + +function initCrypto() { + let cryptoObj = null; + if (typeof globalThis !== "undefined") { + if ("crypto" in globalThis && globalThis.crypto.getRandomValues) { + cryptoObj = globalThis.crypto; + } + } + if (!cryptoObj) { + // shim it + cryptoObj = { + getRandomValues: function (array: Uint8Array) { + for (let i = 0; i < array.length; i++) { + array[i] = Math.floor(Math.random() * 255); + } + }, + }; + } + return cryptoObj; +} + +/** + * Create and initialize a nuid. + * + * @api private + */ +export class Nuid { + buf: Uint8Array; + seq!: number; + inc!: number; + + constructor() { + this.buf = new Uint8Array(totalLen); + this.init(); + } + + /** + * Initializes a nuid with a crypto random prefix, + * and pseudo-random sequence and increment. + * + * @api private + */ + private init() { + this.setPre(); + this.initSeqAndInc(); + this.fillSeq(); + } + + /** + * Initializes the pseudo randmon sequence number and the increment range. + * + * @api private + */ + private initSeqAndInc() { + this.seq = Math.floor(Math.random() * maxSeq); + this.inc = Math.floor(Math.random() * (maxInc - minInc) + minInc); + } + + /** + * Sets the prefix from crypto random bytes. Converts to base36. + * + * @api private + */ + private setPre() { + let cbuf = new Uint8Array(preLen); + cryptoObj.getRandomValues(cbuf); + for (let i = 0; i < preLen; i++) { + let di = cbuf[i] % base; + this.buf[i] = digits.charCodeAt(di); + } + } + + /** + * Fills the sequence part of the nuid as base36 from this.seq. + * + * @api private + */ + private fillSeq() { + let n = this.seq; + for (let i = totalLen - 1; i >= preLen; i--) { + this.buf[i] = digits.charCodeAt(n % base); + n = Math.floor(n / base); + } + } + + /** + * Returns the next nuid. + * + * @api private + */ + next(): string { + this.seq += this.inc; + if (this.seq > maxSeq) { + this.setPre(); + this.initSeqAndInc(); + } + this.fillSeq(); + //@ts-ignore + return String.fromCharCode.apply(String, this.buf); + } + + reset() { + this.init(); + } +} + +export const nuid = new Nuid(); diff --git a/bundler/tests/.cache/untrusted/d321032dec4f3bd721809f27c4d482ebf223b99b.ts b/bundler/tests/.cache/untrusted/d321032dec4f3bd721809f27c4d482ebf223b99b.ts new file mode 100644 index 00000000000..638e307943a --- /dev/null +++ b/bundler/tests/.cache/untrusted/d321032dec4f3bd721809f27c4d482ebf223b99b.ts @@ -0,0 +1,33 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/mod.ts + + +export { + Bench, + createInbox, + credsAuthenticator, + Empty, + ErrorCode, + Events, + headers, + JSONCodec, + jwtAuthenticator, + NatsError, + nkeyAuthenticator, + Nuid, + StringCodec, +} from "./internal_mod.ts"; + +export type { + Authenticator, + Codec, + ConnectionOptions, + Msg, + MsgHdrs, + NatsConnection, + PublishOptions, + RequestOptions, + ServersChanged, + Status, + Subscription, + SubscriptionOptions, +} from "./internal_mod.ts"; diff --git a/bundler/tests/.cache/untrusted/d33af3cab44d8e86467293236ccb17a811d156d0.ts b/bundler/tests/.cache/untrusted/d33af3cab44d8e86467293236ccb17a811d156d0.ts new file mode 100644 index 00000000000..1eb8c43c3b4 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d33af3cab44d8e86467293236ccb17a811d156d0.ts @@ -0,0 +1,443 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/inflate.dew.js + + +import { dew as _inflateDewDew } from "./zlib/inflate.dew.js"; +import { dew as _commonDewDew } from "./utils/common.dew.js"; +import { dew as _stringsDewDew } from "./utils/strings.dew.js"; +import { dew as _constantsDewDew } from "./zlib/constants.dew.js"; +import { dew as _messagesDewDew } from "./zlib/messages.dew.js"; +import { dew as _zstreamDewDew } from "./zlib/zstream.dew.js"; +import { dew as _gzheaderDewDew } from "./zlib/gzheader.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var zlib_inflate = _inflateDewDew(); + + var utils = _commonDewDew(); + + var strings = _stringsDewDew(); + + var c = _constantsDewDew(); + + var msg = _messagesDewDew(); + + var ZStream = _zstreamDewDew(); + + var GZheader = _gzheaderDewDew(); + + var toString = Object.prototype.toString; + /** + * class Inflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[inflate]] + * and [[inflateRaw]]. + **/ + + /* internal + * inflate.chunks -> Array + * + * Chunks of output data, if [[Inflate#onData]] not overridden. + **/ + + /** + * Inflate.result -> Uint8Array|Array|String + * + * Uncompressed result, generated by default [[Inflate#onData]] + * and [[Inflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Inflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + + /** + * Inflate.err -> Number + * + * Error code after inflate finished. 0 (Z_OK) on success. + * Should be checked if broken data possible. + **/ + + /** + * Inflate.msg -> String + * + * Error message, if [[Inflate.err]] != 0 + **/ + + /** + * new Inflate(options) + * - options (Object): zlib inflate options. + * + * Creates new inflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `windowBits` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw inflate + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * By default, when no options set, autodetect deflate/gzip data format via + * wrapper header. + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var inflate = new pako.Inflate({ level: 3}); + * + * inflate.push(chunk1, false); + * inflate.push(chunk2, true); // true -> last chunk + * + * if (inflate.err) { throw new Error(inflate.err); } + * + * console.log(inflate.result); + * ``` + **/ + + function Inflate(options) { + if (!(this instanceof Inflate)) return new Inflate(options); + this.options = utils.assign({ + chunkSize: 16384, + windowBits: 0, + to: '' + }, options || {}); + var opt = this.options; // Force window size for `raw` data, if not set directly, + // because we have no header for autodetect. + + if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { + opt.windowBits = -opt.windowBits; + + if (opt.windowBits === 0) { + opt.windowBits = -15; + } + } // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate + + + if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { + opt.windowBits += 32; + } // Gzip header has no info about windows size, we can do autodetect only + // for deflate. So, if window size not set, force it to max when gzip possible + + + if (opt.windowBits > 15 && opt.windowBits < 48) { + // bit 3 (16) -> gzipped data + // bit 4 (32) -> autodetect gzip/deflate + if ((opt.windowBits & 15) === 0) { + opt.windowBits |= 15; + } + } + + this.err = 0; // error code, if happens (0 = Z_OK) + + this.msg = ''; // error message + + this.ended = false; // used to avoid multiple onEnd() calls + + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + var status = zlib_inflate.inflateInit2(this.strm, opt.windowBits); + + if (status !== c.Z_OK) { + throw new Error(msg[status]); + } + + this.header = new GZheader(); + zlib_inflate.inflateGetHeader(this.strm, this.header); // Setup dictionary + + if (opt.dictionary) { + // Convert data if needed + if (typeof opt.dictionary === 'string') { + opt.dictionary = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + opt.dictionary = new Uint8Array(opt.dictionary); + } + + if (opt.raw) { + //In raw mode we need to set the dictionary early + status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary); + + if (status !== c.Z_OK) { + throw new Error(msg[status]); + } + } + } + } + /** + * Inflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with + * new output chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the decompression context. + * + * On fail call [[Inflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ + + + Inflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + var dictionary = this.options.dictionary; + + var status, _mode; + + var next_out_utf8, tail, utf8str; // Flag to properly process Z_BUF_ERROR on testing inflate call + // when we check that all output data was flushed. + + var allowBufError = false; + + if (this.ended) { + return false; + } + + _mode = mode === ~~mode ? mode : mode === true ? c.Z_FINISH : c.Z_NO_FLUSH; // Convert data if needed + + if (typeof data === 'string') { + // Only binary strings can be decompressed on practice + strm.input = strings.binstring2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); + /* no bad return value */ + + if (status === c.Z_NEED_DICT && dictionary) { + status = zlib_inflate.inflateSetDictionary(this.strm, dictionary); + } + + if (status === c.Z_BUF_ERROR && allowBufError === true) { + status = c.Z_OK; + allowBufError = false; + } + + if (status !== c.Z_STREAM_END && status !== c.Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + + if (strm.next_out) { + if (strm.avail_out === 0 || status === c.Z_STREAM_END || strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH)) { + if (this.options.to === 'string') { + next_out_utf8 = strings.utf8border(strm.output, strm.next_out); + tail = strm.next_out - next_out_utf8; + utf8str = strings.buf2string(strm.output, next_out_utf8); // move tail + + strm.next_out = tail; + strm.avail_out = chunkSize - tail; + + if (tail) { + utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); + } + + this.onData(utf8str); + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } // When no more input data, we should check that internal inflate buffers + // are flushed. The only way to do it when avail_out = 0 - run one more + // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR. + // Here we set flag to process this error properly. + // + // NOTE. Deflate does not return error in this case and does not needs such + // logic. + + + if (strm.avail_in === 0 && strm.avail_out === 0) { + allowBufError = true; + } + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END); + + if (status === c.Z_STREAM_END) { + _mode = c.Z_FINISH; + } // Finalize on the last chunk. + + + if (_mode === c.Z_FINISH) { + status = zlib_inflate.inflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === c.Z_OK; + } // callback interim results if Z_SYNC_FLUSH. + + + if (_mode === c.Z_SYNC_FLUSH) { + this.onEnd(c.Z_OK); + strm.avail_out = 0; + return true; + } + + return true; + }; + /** + * Inflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ + + + Inflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); + }; + /** + * Inflate#onEnd(status) -> Void + * - status (Number): inflate status. 0 (Z_OK) on success, + * other if not. + * + * Called either after you tell inflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ + + + Inflate.prototype.onEnd = function (status) { + // On success - join + if (status === c.Z_OK) { + if (this.options.to === 'string') { + // Glue & convert here, until we teach pako to send + // utf8 aligned strings to onData + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; + }; + /** + * inflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Decompress `data` with inflate/ungzip and `options`. Autodetect + * format via wrapper header by default. That's why we don't provide + * separate `ungzip` method. + * + * Supported options are: + * + * - windowBits + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , input = pako.deflate([1,2,3,4,5,6,7,8,9]) + * , output; + * + * try { + * output = pako.inflate(input); + * } catch (err) + * console.log(err); + * } + * ``` + **/ + + + function inflate(input, options) { + var inflator = new Inflate(options); + inflator.push(input, true); // That will never happens, if you don't cheat with options :) + + if (inflator.err) { + throw inflator.msg || msg[inflator.err]; + } + + return inflator.result; + } + /** + * inflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * The same as [[inflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ + + + function inflateRaw(input, options) { + options = options || {}; + options.raw = true; + return inflate(input, options); + } + /** + * ungzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Just shortcut to [[inflate]], because it autodetects format + * by header.content. Done for convenience. + **/ + + + exports.Inflate = Inflate; + exports.inflate = inflate; + exports.inflateRaw = inflateRaw; + exports.ungzip = inflate; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d45d45c512189b9b62e5f98f9bd39be63c004ee5.ts b/bundler/tests/.cache/untrusted/d45d45c512189b9b62e5f98f9bd39be63c004ee5.ts new file mode 100644 index 00000000000..301690f15bd --- /dev/null +++ b/bundler/tests/.cache/untrusted/d45d45c512189b9b62e5f98f9bd39be63c004ee5.ts @@ -0,0 +1,70 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/zlib/zstream.dew.js + + +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + + this.next_in = 0; + /* number of bytes available at input */ + + this.avail_in = 0; + /* total number of input bytes read so far */ + + this.total_in = 0; + /* next output byte should be put there */ + + this.output = null; // JS specific, because we have no pointers + + this.next_out = 0; + /* remaining free space at output */ + + this.avail_out = 0; + /* total number of bytes output so far */ + + this.total_out = 0; + /* last error message, NULL if no error */ + + this.msg = '' + /*Z_NULL*/ + ; + /* not visible by applications */ + + this.state = null; + /* best guess about the data type: binary or text */ + + this.data_type = 2 + /*Z_UNKNOWN*/ + ; + /* adler32 value of the uncompressed data */ + + this.adler = 0; + } + + exports = ZStream; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d4e5f6eda1c62073f81bf908d7d2305f17a833eb.ts b/bundler/tests/.cache/untrusted/d4e5f6eda1c62073f81bf908d7d2305f17a833eb.ts new file mode 100644 index 00000000000..936fe9a75e7 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d4e5f6eda1c62073f81bf908d7d2305f17a833eb.ts @@ -0,0 +1,136 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/reader/DataReader.dew.js + + +import { dew as _utilsDewDew } from "../utils.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utils = _utilsDewDew(); + + function DataReader(data) { + this.data = data; // type : see implementation + + this.length = data.length; + this.index = 0; + this.zero = 0; + } + + DataReader.prototype = { + /** + * Check that the offset will not go too far. + * @param {string} offset the additional offset to check. + * @throws {Error} an Error if the offset is out of bounds. + */ + checkOffset: function (offset) { + this.checkIndex(this.index + offset); + }, + + /** + * Check that the specified index will not be too far. + * @param {string} newIndex the index to check. + * @throws {Error} an Error if the index is out of bounds. + */ + checkIndex: function (newIndex) { + if (this.length < this.zero + newIndex || newIndex < 0) { + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + newIndex + "). Corrupted zip ?"); + } + }, + + /** + * Change the index. + * @param {number} newIndex The new index. + * @throws {Error} if the new index is out of the data. + */ + setIndex: function (newIndex) { + this.checkIndex(newIndex); + this.index = newIndex; + }, + + /** + * Skip the next n bytes. + * @param {number} n the number of bytes to skip. + * @throws {Error} if the new index is out of the data. + */ + skip: function (n) { + this.setIndex(this.index + n); + }, + + /** + * Get the byte at the specified index. + * @param {number} i the index to use. + * @return {number} a byte. + */ + byteAt: function (i) {// see implementations + }, + + /** + * Get the next number with a given byte size. + * @param {number} size the number of bytes to read. + * @return {number} the corresponding number. + */ + readInt: function (size) { + var result = 0, + i; + this.checkOffset(size); + + for (i = this.index + size - 1; i >= this.index; i--) { + result = (result << 8) + this.byteAt(i); + } + + this.index += size; + return result; + }, + + /** + * Get the next string with a given byte size. + * @param {number} size the number of bytes to read. + * @return {string} the corresponding string. + */ + readString: function (size) { + return utils.transformTo("string", this.readData(size)); + }, + + /** + * Get raw data without conversion, bytes. + * @param {number} size the number of bytes to read. + * @return {Object} the raw data, implementation specific. + */ + readData: function (size) {// see implementations + }, + + /** + * Find the last occurrence of a zip signature (4 bytes). + * @param {string} sig the signature to find. + * @return {number} the index of the last occurrence, -1 if not found. + */ + lastIndexOfSignature: function (sig) {// see implementations + }, + + /** + * Read the signature (4 bytes) at the current position and compare it with sig. + * @param {string} sig the expected signature + * @return {boolean} true if the signature matches, false otherwise. + */ + readAndCheckSignature: function (sig) {// see implementations + }, + + /** + * Get the next date. + * @return {Date} the date. + */ + readDate: function () { + var dostime = this.readInt(4); + return new Date(Date.UTC((dostime >> 25 & 0x7f) + 1980, // year + (dostime >> 21 & 0x0f) - 1, // month + dostime >> 16 & 0x1f, // day + dostime >> 11 & 0x1f, // hour + dostime >> 5 & 0x3f, // minute + (dostime & 0x1f) << 1)); // second + } + }; + exports = DataReader; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d5a62e923eee97ee972c850f5b4dceab58c85758.ts b/bundler/tests/.cache/untrusted/d5a62e923eee97ee972c850f5b4dceab58c85758.ts new file mode 100644 index 00000000000..59985531305 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d5a62e923eee97ee972c850f5b4dceab58c85758.ts @@ -0,0 +1,78 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/util/fs.js + + +import * as path from "../deps/path/mod.ts"; + +export const stat = Deno.stat; +export const readFile = Deno.readFile; +export const writeFile = Deno.writeFile; +export const readdir = Deno.readdir; + + +/** + * Converts a file path to a Windows file path. The version of deno I was using + * returned unix-style paths on Windows systems instead Windows style + * @todo check if the current version of Deno corrects this issue + * + * @param {string} filePath is the file path that will be converted + * @returns {string} the modified file path + */ +function crossPlatformPathConversion(filePath) { + if (Deno.build.os === "win") { + filePath = filePath.split("/").join("\\"); + filePath = filePath.substr(1, filePath.length - 1); + } + + return filePath +} + + +/** + * Modified mkdirp function using Deno APIs. The NPM mkdirp package creates + * directories recursively and then returns the first new one created. This + * function instead returns the absolute path of the directory created or + * not created. When a directory already exists, mkdirp returns undefined. Given + * knex is using this function mainly to check if a directory exists and then + * create one if it doesn't, this function should work as a substitute for mkdirp, + * despite not having the exact same API. + * + * @param {string} dir is the directory that will be created (recursivly) + * @returns {Promise} returns a Promise with the string of the directory created + */ +function mkdirp(dir) { + const __dirname = crossPlatformPathConversion(new URL(".", import.meta.url).pathname); + + let newDir = path.join(__dirname, startDir); + + return Deno.mkdir(dir, {recursive: true}).then(() => newDir); +} + +/** + * Creates a temporary directory and returns it path. + * + * @returns {Promise} + */ +function createTemp() { + return Deno.makeTempDir(); +} + +/** + * Ensures the given path exists. + * - If the path already exist, it's fine - it does nothing. + * - If the path doesn't exist, it will create it. + * + * @param {string} path + * @returns {Promise} + */ +export function ensureDirectoryExists(dir) { + return stat(dir).catch(() => mkdirp(dir)); +} + +export default { + stat, + readdir, + readFile, + writeFile, + createTemp, + ensureDirectoryExists, +}; diff --git a/bundler/tests/.cache/untrusted/d5c81ee6c1901190498bea9018afe930b2b28113.ts b/bundler/tests/.cache/untrusted/d5c81ee6c1901190498bea9018afe930b2b28113.ts new file mode 100644 index 00000000000..d30d70dc533 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d5c81ee6c1901190498bea9018afe930b2b28113.ts @@ -0,0 +1,31 @@ +// Loaded from https://dev.jspm.io/npm:@jspm/core@1.1.1/nodelibs/util.js + + +import { u as util } from "./chunk-dac557ba.js"; +import "./chunk-0c2d1322.js"; +var _extend = util._extend; +var callbackify = util.callbackify; +var debuglog = util.debuglog; +var deprecate = util.deprecate; +var format = util.format; +var inherits = util.inherits; +var inspect = util.inspect; +var isArray = util.isArray; +var isBoolean = util.isBoolean; +var isBuffer = util.isBuffer; +var isDate = util.isDate; +var isError = util.isError; +var isFunction = util.isFunction; +var isNull = util.isNull; +var isNullOrUndefined = util.isNullOrUndefined; +var isNumber = util.isNumber; +var isObject = util.isObject; +var isPrimitive = util.isPrimitive; +var isRegExp = util.isRegExp; +var isString = util.isString; +var isSymbol = util.isSymbol; +var isUndefined = util.isUndefined; +var log = util.log; +var promisify = util.promisify; +export default util; +export { _extend, callbackify, debuglog, deprecate, format, inherits, inspect, isArray, isBoolean, isBuffer, isDate, isError, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isUndefined, log, promisify }; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d5f76fa6e25f4d319ceb52aefc8e28cc43062e2b.ts b/bundler/tests/.cache/untrusted/d5f76fa6e25f4d319ceb52aefc8e28cc43062e2b.ts new file mode 100644 index 00000000000..907bc35116f --- /dev/null +++ b/bundler/tests/.cache/untrusted/d5f76fa6e25f4d319ceb52aefc8e28cc43062e2b.ts @@ -0,0 +1,83 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/logger.js + + +/* eslint no-console:0 */ + +import * as colors from "./deps/colors/colors.ts"; +import { inspect } from './deps/@jspm/core@1.1.0/nodelibs/util.js'; +import _ from './deps/lodash@4.17.15/index.js'; +const isFunction = _.isFunction; +const isString = _.isString; + +class Logger { + constructor(config) { + const { + log: { + debug, + warn, + error, + deprecate, + inspectionDepth, + enableColors, + } = {}, + } = config; + this._inspectionDepth = inspectionDepth || 5; + this._enableColors = resolveIsEnabledColors(enableColors); + this._debug = debug; + this._warn = warn; + this._error = error; + this._deprecate = deprecate; + } + + _log(message, userFn, colorFn) { + if (userFn != null && !isFunction(userFn)) { + throw new TypeError('Extensions to knex logger must be functions!'); + } + + if (isFunction(userFn)) { + userFn(message); + return; + } + + if (!isString(message)) { + message = inspect(message, { + depth: this._inspectionDepth, + colors: this._enableColors, + }); + } + + console.log(colorFn ? colorFn(message) : message); + } + + debug(message) { + this._log(message, this._debug); + } + + warn(message) { + this._log(message, this._warn, colors.yellow); + } + + error(message) { + this._log(message, this._error, colors.red); + } + + deprecate(method, alternative) { + const message = `${method} is deprecated, please use ${alternative}`; + + this._log(message, this._deprecate, colors.yellow); + } +} + +function resolveIsEnabledColors(enableColorsParam) { + if (enableColorsParam != null) { + return enableColorsParam; + } +/* + if (process && process.stdout) { + return process.stdout.isTTY; + } +*/ + return false; +} + +export default Logger; diff --git a/bundler/tests/.cache/untrusted/d64dbe569e0e33fc4a00c430319854deae4ded62.ts b/bundler/tests/.cache/untrusted/d64dbe569e0e33fc4a00c430319854deae4ded62.ts new file mode 100644 index 00000000000..c6e7d420867 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d64dbe569e0e33fc4a00c430319854deae4ded62.ts @@ -0,0 +1,88 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/secretbox.ts + + +import { ByteArray } from './array.ts'; +import { _verify_16 } from './verify.ts'; +import { _stream_xor, _stream } from './salsa20.ts'; +import { poly1305_init, poly1305_update, poly1305_finish } from './poly1305.ts'; +import { checkArrayTypes, checkLengths } from './check.ts'; + +export const enum SecretBoxLength { + Key = 32, // key bytes + Nonce = 24, // nonce bytes + Overhead = 16, // box zero bytes + Zero = 32, // zero bytes +} + +export function secretbox(msg: ByteArray, nonce: ByteArray, key: ByteArray): ByteArray { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + + const m = ByteArray(SecretBoxLength.Zero + msg.length); + const c = ByteArray(m.length); + + for (let i = 0; i < msg.length; i++) m[i + SecretBoxLength.Zero] = msg[i]; + + _secretbox(c, m, m.length, nonce, key); + + return c.subarray(SecretBoxLength.Overhead); +} + +export function secretbox_open(box: ByteArray, nonce: ByteArray, key: ByteArray): ByteArray | undefined { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + + const c = ByteArray(SecretBoxLength.Overhead + box.length); + const m = ByteArray(c.length); + + for (let i = 0; i < box.length; i++) c[i + SecretBoxLength.Overhead] = box[i]; + + if (c.length < SecretBoxLength.Zero || _secretbox_open(m, c, c.length, nonce, key) !== 0) return; + + return m.subarray(SecretBoxLength.Zero); +} + +// low level +function _secretbox(c: ByteArray, m: ByteArray, d: number, n: ByteArray, k: ByteArray): -1 | 0 { + if (d < 32) return -1; + + _stream_xor(c, 0, m, 0, d, n, k); + _onetimeauth(c, 16, c, 32, d - 32, c); + + for (let i = 0; i < 16; i++) c[i] = 0; + + return 0; +} + +function _secretbox_open(m: ByteArray, c: ByteArray, d: number, n: ByteArray, k: ByteArray): -1 | 0 { + const x = ByteArray(32); + + if (d < 32) return -1; + + _stream(x, 0, 32, n, k); + + if (_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1; + + _stream_xor(m, 0, c, 0, d, n, k); + + for (let i = 0; i < 32; i++) m[i] = 0; + + return 0; +} + +export function _onetimeauth(out: ByteArray, outpos: number, m: ByteArray, mpos: number, n: number, k: ByteArray): 0 { + const s = poly1305_init(k); + + poly1305_update(s, m, mpos, n); + poly1305_finish(s, out, outpos); + + return 0; +} + +function _onetimeauth_verify(h: ByteArray, hpos: number, m: ByteArray, mpos: number, n: number, k: ByteArray): number { + const x = ByteArray(16); + + _onetimeauth(x, 0, m, mpos, n, k); + + return _verify_16(h, hpos, x, 0); +} diff --git a/bundler/tests/.cache/untrusted/d6a8f475ed08b6497d7f096dbf3ec68e7fd78c8f.ts b/bundler/tests/.cache/untrusted/d6a8f475ed08b6497d7f096dbf3ec68e7fd78c8f.ts new file mode 100644 index 00000000000..216cf537c19 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d6a8f475ed08b6497d7f096dbf3ec68e7fd78c8f.ts @@ -0,0 +1,478 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/hash.ts + + +import { ByteArray, IntArray } from './array.ts'; +import { checkArrayTypes } from './check.ts'; + +export const enum HashLength { + Hash = 64, // hash bytes +} + +export function hash(msg: ByteArray, len?: number): ByteArray { + checkArrayTypes(msg); + + const h = ByteArray(len || HashLength.Hash); + + _hash(h, msg, msg.length); + + return h; +} + +export function _hash(out: ByteArray, m: ByteArray, n: number) { + const hh = IntArray(8), + hl = IntArray(8), + x = ByteArray(256); + let i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + _hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b - n + i]; + x[n] = 128; + + n = 256 - 128 * (n < 112 ? 1 : 0); + x[n - 9] = 0; + + _ts64(x, n - 8, (b / 0x20000000) | 0, b << 3); + _hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) _ts64(out, 8 * i, hh[i], hl[i]); + + return 0; +} + +const _K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function _hashblocks_hl(hh: IntArray, hl: IntArray, m: ByteArray, n: number): number { + const wh = IntArray(16), wl = IntArray(16); + + let bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + let ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + let pos = 0; + + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j + 0] << 24) | (m[j + 1] << 16) | (m[j + 2] << 8) | m[j + 3]; + wl[i] = (m[j + 4] << 24) | (m[j + 5] << 16) | (m[j + 6] << 8) | m[j + 7]; + } + + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) | (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32)))); + l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) | (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = _K[i * 2]; + l = _K[i * 2 + 1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i % 16]; + l = wl[i % 16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) | (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32)))); + l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) | (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i % 16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j + 9) % 16]; + l = wl[(j + 9) % 16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j + 1) % 16]; + tl = wl[(j + 1) % 16]; + h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) | (tl << (32 - 8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) | (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j + 14) % 16]; + tl = wl[(j + 14) % 16]; + h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) | (th << (32 - (61 - 32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) | (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function _ts64(x: ByteArray, i: number, h: number, l: number) { + x[i] = (h >> 24) & 0xff; + x[i + 1] = (h >> 16) & 0xff; + x[i + 2] = (h >> 8) & 0xff; + x[i + 3] = h & 0xff; + x[i + 4] = (l >> 24) & 0xff; + x[i + 5] = (l >> 16) & 0xff; + x[i + 6] = (l >> 8) & 0xff; + x[i + 7] = l & 0xff; +} diff --git a/bundler/tests/.cache/untrusted/d6ede89fc85e111f3681412476e912e8d79daeb8.ts b/bundler/tests/.cache/untrusted/d6ede89fc85e111f3681412476e912e8d79daeb8.ts new file mode 100644 index 00000000000..f9bb6e9bdca --- /dev/null +++ b/bundler/tests/.cache/untrusted/d6ede89fc85e111f3681412476e912e8d79daeb8.ts @@ -0,0 +1,87 @@ +// Loaded from https://cdn.skypack.dev/-/ieee754@v1.2.1-wxdRuKvQQOTpW1dpWzFI/dist=es2020,mode=imports/optimized/ieee754.js + + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +var read = function(buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? nBytes - 1 : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + i += d; + e = s & (1 << -nBits) - 1; + s >>= -nBits; + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : (s ? -1 : 1) * Infinity; + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); +}; +var write = function(buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; + var i = isLE ? 0 : nBytes - 1; + var d = isLE ? 1 : -1; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + value = Math.abs(value); + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) { + } + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { + } + buffer[offset + i - d] |= s * 128; +}; +var ieee754 = { + read, + write +}; +export default ieee754; +export {ieee754 as __moduleExports, read, write}; diff --git a/bundler/tests/.cache/untrusted/d7a7deea74ac5037f20096c72896940bc7dfeb1a.ts b/bundler/tests/.cache/untrusted/d7a7deea74ac5037f20096c72896940bc7dfeb1a.ts new file mode 100644 index 00000000000..b571a24a4e6 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d7a7deea74ac5037f20096c72896940bc7dfeb1a.ts @@ -0,0 +1,431 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/object.dew.js + + +import { dew as _utf8DewDew } from "./utf8.dew.js"; +import { dew as _utilsDewDew } from "./utils.dew.js"; +import { dew as _GenericWorkerDewDew } from "./stream/GenericWorker.dew.js"; +import { dew as _StreamHelperDewDew } from "./stream/StreamHelper.dew.js"; +import { dew as _defaultsDewDew } from "./defaults.dew.js"; +import { dew as _compressedObjectDewDew } from "./compressedObject.dew.js"; +import { dew as _zipObjectDewDew } from "./zipObject.dew.js"; +import { dew as _indexDewDew } from "./generate/index.dew.js"; +import { dew as _nodejsUtilsDewDew } from "./nodejsUtils.dew.js"; +import { dew as _NodejsStreamInputAdapterDewDew } from "./nodejs/NodejsStreamInputAdapter.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utf8 = _utf8DewDew(); + + var utils = _utilsDewDew(); + + var GenericWorker = _GenericWorkerDewDew(); + + var StreamHelper = _StreamHelperDewDew(); + + var defaults = _defaultsDewDew(); + + var CompressedObject = _compressedObjectDewDew(); + + var ZipObject = _zipObjectDewDew(); + + var generate = _indexDewDew(); + + var nodejsUtils = _nodejsUtilsDewDew(); + + var NodejsStreamInputAdapter = _NodejsStreamInputAdapterDewDew(); + /** + * Add a file in the current folder. + * @private + * @param {string} name the name of the file + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file + * @param {Object} originalOptions the options of the file + * @return {Object} the new file. + */ + + + var fileAdd = function (name, data, originalOptions) { + // be sure sub folders exist + var dataType = utils.getTypeOf(data), + parent; + /* + * Correct options. + */ + + var o = utils.extend(originalOptions || {}, defaults); + o.date = o.date || new Date(); + + if (o.compression !== null) { + o.compression = o.compression.toUpperCase(); + } + + if (typeof o.unixPermissions === "string") { + o.unixPermissions = parseInt(o.unixPermissions, 8); + } // UNX_IFDIR 0040000 see zipinfo.c + + + if (o.unixPermissions && o.unixPermissions & 0x4000) { + o.dir = true; + } // Bit 4 Directory + + + if (o.dosPermissions && o.dosPermissions & 0x0010) { + o.dir = true; + } + + if (o.dir) { + name = forceTrailingSlash(name); + } + + if (o.createFolders && (parent = parentFolder(name))) { + folderAdd.call(this, parent, true); + } + + var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false; + + if (!originalOptions || typeof originalOptions.binary === "undefined") { + o.binary = !isUnicodeString; + } + + var isCompressedEmpty = data instanceof CompressedObject && data.uncompressedSize === 0; + + if (isCompressedEmpty || o.dir || !data || data.length === 0) { + o.base64 = false; + o.binary = true; + data = ""; + o.compression = "STORE"; + dataType = "string"; + } + /* + * Convert content to fit. + */ + + + var zipObjectContent = null; + + if (data instanceof CompressedObject || data instanceof GenericWorker) { + zipObjectContent = data; + } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) { + zipObjectContent = new NodejsStreamInputAdapter(name, data); + } else { + zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64); + } + + var object = new ZipObject(name, zipObjectContent, o); + this.files[name] = object; + /* + TODO: we can't throw an exception because we have async promises + (we can have a promise of a Date() for example) but returning a + promise is useless because file(name, data) returns the JSZip + object for chaining. Should we break that to allow the user + to catch the error ? + return external.Promise.resolve(zipObjectContent) + .then(function () { + return object; + }); + */ + }; + /** + * Find the parent folder of the path. + * @private + * @param {string} path the path to use + * @return {string} the parent folder, or "" + */ + + + var parentFolder = function (path) { + if (path.slice(-1) === '/') { + path = path.substring(0, path.length - 1); + } + + var lastSlash = path.lastIndexOf('/'); + return lastSlash > 0 ? path.substring(0, lastSlash) : ""; + }; + /** + * Returns the path with a slash at the end. + * @private + * @param {String} path the path to check. + * @return {String} the path with a trailing slash. + */ + + + var forceTrailingSlash = function (path) { + // Check the name ends with a / + if (path.slice(-1) !== "/") { + path += "/"; // IE doesn't like substr(-1) + } + + return path; + }; + /** + * Add a (sub) folder in the current folder. + * @private + * @param {string} name the folder's name + * @param {boolean=} [createFolders] If true, automatically create sub + * folders. Defaults to false. + * @return {Object} the new folder. + */ + + + var folderAdd = function (name, createFolders) { + createFolders = typeof createFolders !== 'undefined' ? createFolders : defaults.createFolders; + name = forceTrailingSlash(name); // Does this folder already exist? + + if (!this.files[name]) { + fileAdd.call(this, name, null, { + dir: true, + createFolders: createFolders + }); + } + + return this.files[name]; + }; + /** + * Cross-window, cross-Node-context regular expression detection + * @param {Object} object Anything + * @return {Boolean} true if the object is a regular expression, + * false otherwise + */ + + + function isRegExp(object) { + return Object.prototype.toString.call(object) === "[object RegExp]"; + } // return the actual prototype of JSZip + + + var out = { + /** + * @see loadAsync + */ + load: function () { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, + + /** + * Call a callback function for each entry at this folder level. + * @param {Function} cb the callback function: + * function (relativePath, file) {...} + * It takes 2 arguments : the relative path and the file. + */ + forEach: function (cb) { + var filename, relativePath, file; + + for (filename in this.files) { + if (!this.files.hasOwnProperty(filename)) { + continue; + } + + file = this.files[filename]; + relativePath = filename.slice(this.root.length, filename.length); + + if (relativePath && filename.slice(0, this.root.length) === this.root) { + // the file is in the current root + cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn... + } + } + }, + + /** + * Filter nested files/folders with the specified function. + * @param {Function} search the predicate to use : + * function (relativePath, file) {...} + * It takes 2 arguments : the relative path and the file. + * @return {Array} An array of matching elements. + */ + filter: function (search) { + var result = []; + this.forEach(function (relativePath, entry) { + if (search(relativePath, entry)) { + // the file matches the function + result.push(entry); + } + }); + return result; + }, + + /** + * Add a file to the zip file, or search a file. + * @param {string|RegExp} name The name of the file to add (if data is defined), + * the name of the file to find (if no data) or a regex to match files. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded + * @param {Object} o File options + * @return {JSZip|Object|Array} this JSZip object (when adding a file), + * a file (when searching by string) or an array of files (when searching by regex). + */ + file: function (name, data, o) { + if (arguments.length === 1) { + if (isRegExp(name)) { + var regexp = name; + return this.filter(function (relativePath, file) { + return !file.dir && regexp.test(relativePath); + }); + } else { + // text + var obj = this.files[this.root + name]; + + if (obj && !obj.dir) { + return obj; + } else { + return null; + } + } + } else { + // more than one argument : we have data ! + name = this.root + name; + fileAdd.call(this, name, data, o); + } + + return this; + }, + + /** + * Add a directory to the zip file, or search. + * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders. + * @return {JSZip} an object with the new directory as the root, or an array containing matching folders. + */ + folder: function (arg) { + if (!arg) { + return this; + } + + if (isRegExp(arg)) { + return this.filter(function (relativePath, file) { + return file.dir && arg.test(relativePath); + }); + } // else, name is a new folder + + + var name = this.root + arg; + var newFolder = folderAdd.call(this, name); // Allow chaining by returning a new object with this folder as the root + + var ret = this.clone(); + ret.root = newFolder.name; + return ret; + }, + + /** + * Delete a file, or a directory and all sub-files, from the zip + * @param {string} name the name of the file to delete + * @return {JSZip} this JSZip object + */ + remove: function (name) { + name = this.root + name; + var file = this.files[name]; + + if (!file) { + // Look for any folders + if (name.slice(-1) !== "/") { + name += "/"; + } + + file = this.files[name]; + } + + if (file && !file.dir) { + // file + delete this.files[name]; + } else { + // maybe a folder, delete recursively + var kids = this.filter(function (relativePath, file) { + return file.name.slice(0, name.length) === name; + }); + + for (var i = 0; i < kids.length; i++) { + delete this.files[kids[i].name]; + } + } + + return this; + }, + + /** + * Generate the complete zip file + * @param {Object} options the options to generate the zip file : + * - compression, "STORE" by default. + * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob. + * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file + */ + generate: function (options) { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, + + /** + * Generate the complete zip file as an internal stream. + * @param {Object} options the options to generate the zip file : + * - compression, "STORE" by default. + * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob. + * @return {StreamHelper} the streamed zip file. + */ + generateInternalStream: function (options) { + var worker, + opts = {}; + + try { + opts = utils.extend(options || {}, { + streamFiles: false, + compression: "STORE", + compressionOptions: null, + type: "", + platform: "DOS", + comment: null, + mimeType: 'application/zip', + encodeFileName: utf8.utf8encode + }); + opts.type = opts.type.toLowerCase(); + opts.compression = opts.compression.toUpperCase(); // "binarystring" is preferred but the internals use "string". + + if (opts.type === "binarystring") { + opts.type = "string"; + } + + if (!opts.type) { + throw new Error("No output type specified."); + } + + utils.checkSupport(opts.type); // accept nodejs `process.platform` + + if (opts.platform === 'darwin' || opts.platform === 'freebsd' || opts.platform === 'linux' || opts.platform === 'sunos') { + opts.platform = "UNIX"; + } + + if (opts.platform === 'win32') { + opts.platform = "DOS"; + } + + var comment = opts.comment || this.comment || ""; + worker = generate.generateWorker(this, opts, comment); + } catch (e) { + worker = new GenericWorker("error"); + worker.error(e); + } + + return new StreamHelper(worker, opts.type || "string", opts.mimeType); + }, + + /** + * Generate the complete zip file asynchronously. + * @see generateInternalStream + */ + generateAsync: function (options, onUpdate) { + return this.generateInternalStream(options).accumulate(onUpdate); + }, + + /** + * Generate the complete zip file asynchronously. + * @see generateInternalStream + */ + generateNodeStream: function (options, onUpdate) { + options = options || {}; + + if (!options.type) { + options.type = "nodebuffer"; + } + + return this.generateInternalStream(options).toNodejsStream(onUpdate); + } + }; + exports = out; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d84c0384d0e9aed4b20596f0388de9edaf52ebf8.ts b/bundler/tests/.cache/untrusted/d84c0384d0e9aed4b20596f0388de9edaf52ebf8.ts new file mode 100644 index 00000000000..2e1b9c91d72 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d84c0384d0e9aed4b20596f0388de9edaf52ebf8.ts @@ -0,0 +1,224 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/testing/diff.ts + + +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +interface FarthestPoint { + y: number; + id: number; +} + +export enum DiffType { + removed = "removed", + common = "common", + added = "added", +} + +export interface DiffResult { + type: DiffType; + value: T; +} + +const REMOVED = 1; +const COMMON = 2; +const ADDED = 3; + +function createCommon(A: T[], B: T[], reverse?: boolean): T[] { + const common = []; + if (A.length === 0 || B.length === 0) return []; + for (let i = 0; i < Math.min(A.length, B.length); i += 1) { + if ( + A[reverse ? A.length - i - 1 : i] === B[reverse ? B.length - i - 1 : i] + ) { + common.push(A[reverse ? A.length - i - 1 : i]); + } else { + return common; + } + } + return common; +} + +export default function diff(A: T[], B: T[]): Array> { + const prefixCommon = createCommon(A, B); + const suffixCommon = createCommon( + A.slice(prefixCommon.length), + B.slice(prefixCommon.length), + true + ).reverse(); + A = suffixCommon.length + ? A.slice(prefixCommon.length, -suffixCommon.length) + : A.slice(prefixCommon.length); + B = suffixCommon.length + ? B.slice(prefixCommon.length, -suffixCommon.length) + : B.slice(prefixCommon.length); + const swapped = B.length > A.length; + [A, B] = swapped ? [B, A] : [A, B]; + const M = A.length; + const N = B.length; + if (!M && !N && !suffixCommon.length && !prefixCommon.length) return []; + if (!N) { + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }) + ), + ...A.map( + (a): DiffResult => ({ + type: swapped ? DiffType.added : DiffType.removed, + value: a, + }) + ), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }) + ), + ]; + } + const offset = N; + const delta = M - N; + const size = M + N + 1; + const fp = new Array(size).fill({ y: -1 }); + /** + * INFO: + * This buffer is used to save memory and improve performance. + * The first half is used to save route and last half is used to save diff + * type. + * This is because, when I kept new uint8array area to save type,performance + * worsened. + */ + const routes = new Uint32Array((M * N + size + 1) * 2); + const diffTypesPtrOffset = routes.length / 2; + let ptr = 0; + let p = -1; + + function backTrace( + A: T[], + B: T[], + current: FarthestPoint, + swapped: boolean + ): Array<{ + type: DiffType; + value: T; + }> { + const M = A.length; + const N = B.length; + const result = []; + let a = M - 1; + let b = N - 1; + let j = routes[current.id]; + let type = routes[current.id + diffTypesPtrOffset]; + while (true) { + if (!j && !type) break; + const prev = j; + if (type === REMOVED) { + result.unshift({ + type: swapped ? DiffType.removed : DiffType.added, + value: B[b], + }); + b -= 1; + } else if (type === ADDED) { + result.unshift({ + type: swapped ? DiffType.added : DiffType.removed, + value: A[a], + }); + a -= 1; + } else { + result.unshift({ type: DiffType.common, value: A[a] }); + a -= 1; + b -= 1; + } + j = routes[prev]; + type = routes[prev + diffTypesPtrOffset]; + } + return result; + } + + function createFP( + slide: FarthestPoint, + down: FarthestPoint, + k: number, + M: number + ): FarthestPoint { + if (slide && slide.y === -1 && down && down.y === -1) { + return { y: 0, id: 0 }; + } + if ( + (down && down.y === -1) || + k === M || + (slide && slide.y) > (down && down.y) + 1 + ) { + const prev = slide.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = ADDED; + return { y: slide.y, id: ptr }; + } else { + const prev = down.id; + ptr++; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = REMOVED; + return { y: down.y + 1, id: ptr }; + } + } + + function snake( + k: number, + slide: FarthestPoint, + down: FarthestPoint, + _offset: number, + A: T[], + B: T[] + ): FarthestPoint { + const M = A.length; + const N = B.length; + if (k < -N || M < k) return { y: -1, id: -1 }; + const fp = createFP(slide, down, k, M); + while (fp.y + k < M && fp.y < N && A[fp.y + k] === B[fp.y]) { + const prev = fp.id; + ptr++; + fp.id = ptr; + fp.y += 1; + routes[ptr] = prev; + routes[ptr + diffTypesPtrOffset] = COMMON; + } + return fp; + } + + while (fp[delta + offset].y < N) { + p = p + 1; + for (let k = -p; k < delta; ++k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B + ); + } + for (let k = delta + p; k > delta; --k) { + fp[k + offset] = snake( + k, + fp[k - 1 + offset], + fp[k + 1 + offset], + offset, + A, + B + ); + } + fp[delta + offset] = snake( + delta, + fp[delta - 1 + offset], + fp[delta + 1 + offset], + offset, + A, + B + ); + } + return [ + ...prefixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }) + ), + ...backTrace(A, B, fp[delta + offset], swapped), + ...suffixCommon.map( + (c): DiffResult => ({ type: DiffType.common, value: c }) + ), + ]; +} diff --git a/bundler/tests/.cache/untrusted/d876a5a26d8af5805297851f75766de834262342.ts b/bundler/tests/.cache/untrusted/d876a5a26d8af5805297851f75766de834262342.ts new file mode 100644 index 00000000000..55f268df008 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d876a5a26d8af5805297851f75766de834262342.ts @@ -0,0 +1,408 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/deflate.dew.js + + +import { dew as _deflateDewDew } from "./zlib/deflate.dew.js"; +import { dew as _commonDewDew } from "./utils/common.dew.js"; +import { dew as _stringsDewDew } from "./utils/strings.dew.js"; +import { dew as _messagesDewDew } from "./zlib/messages.dew.js"; +import { dew as _zstreamDewDew } from "./zlib/zstream.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var zlib_deflate = _deflateDewDew(); + + var utils = _commonDewDew(); + + var strings = _stringsDewDew(); + + var msg = _messagesDewDew(); + + var ZStream = _zstreamDewDew(); + + var toString = Object.prototype.toString; + /* Public constants ==========================================================*/ + + /* ===========================================================================*/ + + var Z_NO_FLUSH = 0; + var Z_FINISH = 4; + var Z_OK = 0; + var Z_STREAM_END = 1; + var Z_SYNC_FLUSH = 2; + var Z_DEFAULT_COMPRESSION = -1; + var Z_DEFAULT_STRATEGY = 0; + var Z_DEFLATED = 8; + /* ===========================================================================*/ + + /** + * class Deflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[deflate]], + * [[deflateRaw]] and [[gzip]]. + **/ + + /* internal + * Deflate.chunks -> Array + * + * Chunks of output data, if [[Deflate#onData]] not overridden. + **/ + + /** + * Deflate.result -> Uint8Array|Array + * + * Compressed result, generated by default [[Deflate#onData]] + * and [[Deflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Deflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + + /** + * Deflate.err -> Number + * + * Error code after deflate finished. 0 (Z_OK) on success. + * You will not need it in real life, because deflate errors + * are possible only on wrong options or bad `onData` / `onEnd` + * custom handlers. + **/ + + /** + * Deflate.msg -> String + * + * Error message, if [[Deflate.err]] != 0 + **/ + + /** + * new Deflate(options) + * - options (Object): zlib deflate options. + * + * Creates new deflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `level` + * - `windowBits` + * - `memLevel` + * - `strategy` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw deflate + * - `gzip` (Boolean) - create gzip wrapper + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * - `header` (Object) - custom header for gzip + * - `text` (Boolean) - true if compressed data believed to be text + * - `time` (Number) - modification time, unix timestamp + * - `os` (Number) - operation system code + * - `extra` (Array) - array of bytes with extra data (max 65536) + * - `name` (String) - file name (binary string) + * - `comment` (String) - comment (binary string) + * - `hcrc` (Boolean) - true if header crc should be added + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var deflate = new pako.Deflate({ level: 3}); + * + * deflate.push(chunk1, false); + * deflate.push(chunk2, true); // true -> last chunk + * + * if (deflate.err) { throw new Error(deflate.err); } + * + * console.log(deflate.result); + * ``` + **/ + + function Deflate(options) { + if (!(this instanceof Deflate)) return new Deflate(options); + this.options = utils.assign({ + level: Z_DEFAULT_COMPRESSION, + method: Z_DEFLATED, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: Z_DEFAULT_STRATEGY, + to: '' + }, options || {}); + var opt = this.options; + + if (opt.raw && opt.windowBits > 0) { + opt.windowBits = -opt.windowBits; + } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) { + opt.windowBits += 16; + } + + this.err = 0; // error code, if happens (0 = Z_OK) + + this.msg = ''; // error message + + this.ended = false; // used to avoid multiple onEnd() calls + + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + var status = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + if (opt.header) { + zlib_deflate.deflateSetHeader(this.strm, opt.header); + } + + if (opt.dictionary) { + var dict; // Convert data if needed + + if (typeof opt.dictionary === 'string') { + // If we need to compress text, change encoding to utf8. + dict = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + dict = new Uint8Array(opt.dictionary); + } else { + dict = opt.dictionary; + } + + status = zlib_deflate.deflateSetDictionary(this.strm, dict); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + this._dict_set = true; + } + } + /** + * Deflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be + * converted to utf8 byte sequence. + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with + * new compressed chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the compression context. + * + * On fail call [[Deflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * array format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ + + + Deflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + + var status, _mode; + + if (this.ended) { + return false; + } + + _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH; // Convert data if needed + + if (typeof data === 'string') { + // If we need to compress text, change encoding to utf8. + strm.input = strings.string2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + status = zlib_deflate.deflate(strm, _mode); + /* no bad return value */ + + if (status !== Z_STREAM_END && status !== Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + + if (strm.avail_out === 0 || strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH)) { + if (this.options.to === 'string') { + this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out))); + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END); // Finalize on the last chunk. + + + if (_mode === Z_FINISH) { + status = zlib_deflate.deflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === Z_OK; + } // callback interim results if Z_SYNC_FLUSH. + + + if (_mode === Z_SYNC_FLUSH) { + this.onEnd(Z_OK); + strm.avail_out = 0; + return true; + } + + return true; + }; + /** + * Deflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ + + + Deflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); + }; + /** + * Deflate#onEnd(status) -> Void + * - status (Number): deflate status. 0 (Z_OK) on success, + * other if not. + * + * Called once after you tell deflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ + + + Deflate.prototype.onEnd = function (status) { + // On success - join + if (status === Z_OK) { + if (this.options.to === 'string') { + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; + }; + /** + * deflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * Compress `data` with deflate algorithm and `options`. + * + * Supported options are: + * + * - level + * - windowBits + * - memLevel + * - strategy + * - dictionary + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , data = Uint8Array([1,2,3,4,5,6,7,8,9]); + * + * console.log(pako.deflate(data)); + * ``` + **/ + + + function deflate(input, options) { + var deflator = new Deflate(options); + deflator.push(input, true); // That will never happens, if you don't cheat with options :) + + if (deflator.err) { + throw deflator.msg || msg[deflator.err]; + } + + return deflator.result; + } + /** + * deflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ + + + function deflateRaw(input, options) { + options = options || {}; + options.raw = true; + return deflate(input, options); + } + /** + * gzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but create gzip wrapper instead of + * deflate one. + **/ + + + function gzip(input, options) { + options = options || {}; + options.gzip = true; + return deflate(input, options); + } + + exports.Deflate = Deflate; + exports.deflate = deflate; + exports.deflateRaw = deflateRaw; + exports.gzip = gzip; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/d8806483e2feeacc68df5b3cb8f55dea584a17ab.ts b/bundler/tests/.cache/untrusted/d8806483e2feeacc68df5b3cb8f55dea584a17ab.ts new file mode 100644 index 00000000000..1c011a09321 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d8806483e2feeacc68df5b3cb8f55dea584a17ab.ts @@ -0,0 +1,322 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/impl/regexParser.js + + +import { + untruncateYear, + signedOffset, + parseInteger, + parseMillis, + ianaRegex, + isUndefined +} from "./util.js"; +import * as English from "./english.js"; +import FixedOffsetZone from "../zones/fixedOffsetZone.js"; +import IANAZone from "../zones/IANAZone.js"; + +/* + * This file handles parsing for well-specified formats. Here's how it works: + * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match. + * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object + * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence. + * Extractors can take a "cursor" representing the offset in the match to look at. This makes it easy to combine extractors. + * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions. + * Some extractions are super dumb and simpleParse and fromStrings help DRY them. + */ + +function combineRegexes(...regexes) { + const full = regexes.reduce((f, r) => f + r.source, ""); + return RegExp(`^${full}$`); +} + +function combineExtractors(...extractors) { + return m => + extractors + .reduce( + ([mergedVals, mergedZone, cursor], ex) => { + const [val, zone, next] = ex(m, cursor); + return [Object.assign(mergedVals, val), mergedZone || zone, next]; + }, + [{}, null, 1] + ) + .slice(0, 2); +} + +function parse(s, ...patterns) { + if (s == null) { + return [null, null]; + } + + for (const [regex, extractor] of patterns) { + const m = regex.exec(s); + if (m) { + return extractor(m); + } + } + return [null, null]; +} + +function simpleParse(...keys) { + return (match, cursor) => { + const ret = {}; + let i; + + for (i = 0; i < keys.length; i++) { + ret[keys[i]] = parseInteger(match[cursor + i]); + } + return [ret, null, cursor + i]; + }; +} + +// ISO and SQL parsing +const offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/, + isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/, + isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${offsetRegex.source}?`), + isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`), + isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/, + isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/, + isoOrdinalRegex = /(\d{4})-?(\d{3})/, + extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"), + extractISOOrdinalData = simpleParse("year", "ordinal"), + sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/, // dumbed-down version of the ISO one + sqlTimeRegex = RegExp( + `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?` + ), + sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`); + +function int(match, pos, fallback) { + const m = match[pos]; + return isUndefined(m) ? fallback : parseInteger(m); +} + +function extractISOYmd(match, cursor) { + const item = { + year: int(match, cursor), + month: int(match, cursor + 1, 1), + day: int(match, cursor + 2, 1) + }; + + return [item, null, cursor + 3]; +} + +function extractISOTime(match, cursor) { + const item = { + hour: int(match, cursor, 0), + minute: int(match, cursor + 1, 0), + second: int(match, cursor + 2, 0), + millisecond: parseMillis(match[cursor + 3]) + }; + + return [item, null, cursor + 4]; +} + +function extractISOOffset(match, cursor) { + const local = !match[cursor] && !match[cursor + 1], + fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]), + zone = local ? null : FixedOffsetZone.instance(fullOffset); + return [{}, zone, cursor + 3]; +} + +function extractIANAZone(match, cursor) { + const zone = match[cursor] ? IANAZone.create(match[cursor]) : null; + return [{}, zone, cursor + 1]; +} + +// ISO duration parsing + +const isoDuration = /^-?P(?:(?:(-?\d{1,9})Y)?(?:(-?\d{1,9})M)?(?:(-?\d{1,9})W)?(?:(-?\d{1,9})D)?(?:T(?:(-?\d{1,9})H)?(?:(-?\d{1,9})M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,9}))?S)?)?)$/; + +function extractISODuration(match) { + const [ + s, + yearStr, + monthStr, + weekStr, + dayStr, + hourStr, + minuteStr, + secondStr, + millisecondsStr + ] = match; + + const hasNegativePrefix = s[0] === "-"; + + const maybeNegate = num => (num && hasNegativePrefix ? -num : num); + + return [ + { + years: maybeNegate(parseInteger(yearStr)), + months: maybeNegate(parseInteger(monthStr)), + weeks: maybeNegate(parseInteger(weekStr)), + days: maybeNegate(parseInteger(dayStr)), + hours: maybeNegate(parseInteger(hourStr)), + minutes: maybeNegate(parseInteger(minuteStr)), + seconds: maybeNegate(parseInteger(secondStr)), + milliseconds: maybeNegate(parseMillis(millisecondsStr)) + } + ]; +} + +// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York +// and not just that we're in -240 *right now*. But since I don't think these are used that often +// I'm just going to ignore that +const obsOffsets = { + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 +}; + +function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + const result = { + year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr), + month: English.monthsShort.indexOf(monthStr) + 1, + day: parseInteger(dayStr), + hour: parseInteger(hourStr), + minute: parseInteger(minuteStr) + }; + + if (secondStr) result.second = parseInteger(secondStr); + if (weekdayStr) { + result.weekday = + weekdayStr.length > 3 + ? English.weekdaysLong.indexOf(weekdayStr) + 1 + : English.weekdaysShort.indexOf(weekdayStr) + 1; + } + + return result; +} + +// RFC 2822/5322 +const rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/; + +function extractRFC2822(match) { + const [ + , + weekdayStr, + dayStr, + monthStr, + yearStr, + hourStr, + minuteStr, + secondStr, + obsOffset, + milOffset, + offHourStr, + offMinuteStr + ] = match, + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + + let offset; + if (obsOffset) { + offset = obsOffsets[obsOffset]; + } else if (milOffset) { + offset = 0; + } else { + offset = signedOffset(offHourStr, offMinuteStr); + } + + return [result, new FixedOffsetZone(offset)]; +} + +function preprocessRFC2822(s) { + // Remove comments and folding whitespace and replace multiple-spaces with a single space + return s + .replace(/\([^)]*\)|[\n\t]/g, " ") + .replace(/(\s\s+)/g, " ") + .trim(); +} + +// http date + +const rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/, + rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/, + ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/; + +function extractRFC1123Or850(match) { + const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match, + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; +} + +function extractASCII(match) { + const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match, + result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; +} + +const isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex); +const isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex); +const isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex); +const isoTimeCombinedRegex = combineRegexes(isoTimeRegex); + +const extractISOYmdTimeAndOffset = combineExtractors( + extractISOYmd, + extractISOTime, + extractISOOffset +); +const extractISOWeekTimeAndOffset = combineExtractors( + extractISOWeekData, + extractISOTime, + extractISOOffset +); +const extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime); +const extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset); + +/** + * @private + */ + +export function parseISODate(s) { + return parse( + s, + [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], + [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], + [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime], + [isoTimeCombinedRegex, extractISOTimeAndOffset] + ); +} + +export function parseRFC2822Date(s) { + return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]); +} + +export function parseHTTPDate(s) { + return parse( + s, + [rfc1123, extractRFC1123Or850], + [rfc850, extractRFC1123Or850], + [ascii, extractASCII] + ); +} + +export function parseISODuration(s) { + return parse(s, [isoDuration, extractISODuration]); +} + +const sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex); +const sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex); + +const extractISOYmdTimeOffsetAndIANAZone = combineExtractors( + extractISOYmd, + extractISOTime, + extractISOOffset, + extractIANAZone +); +const extractISOTimeOffsetAndIANAZone = combineExtractors( + extractISOTime, + extractISOOffset, + extractIANAZone +); + +export function parseSQL(s) { + return parse( + s, + [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone], + [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone] + ); +} diff --git a/bundler/tests/.cache/untrusted/d8a22f877bfebe90772809596182077de58ddd8d.ts b/bundler/tests/.cache/untrusted/d8a22f877bfebe90772809596182077de58ddd8d.ts new file mode 100644 index 00000000000..6fcdab0b55e --- /dev/null +++ b/bundler/tests/.cache/untrusted/d8a22f877bfebe90772809596182077de58ddd8d.ts @@ -0,0 +1,82 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/impl/diff.js + + +import Duration from "../duration.js"; + +function dayDiff(earlier, later) { + const utcDayStart = dt => + dt + .toUTC(0, { keepLocalTime: true }) + .startOf("day") + .valueOf(), + ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration.fromMillis(ms).as("days")); +} + +function highOrderDiffs(cursor, later, units) { + const differs = [ + ["years", (a, b) => b.year - a.year], + ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12], + [ + "weeks", + (a, b) => { + const days = dayDiff(a, b); + return (days - (days % 7)) / 7; + } + ], + ["days", dayDiff] + ]; + + const results = {}; + let lowestOrder, highWater; + + for (const [unit, differ] of differs) { + if (units.indexOf(unit) >= 0) { + lowestOrder = unit; + + let delta = differ(cursor, later); + highWater = cursor.plus({ [unit]: delta }); + + if (highWater > later) { + cursor = cursor.plus({ [unit]: delta - 1 }); + delta -= 1; + } else { + cursor = highWater; + } + + results[unit] = delta; + } + } + + return [cursor, results, highWater, lowestOrder]; +} + +export default function(earlier, later, units, opts) { + let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units); + + const remainingMillis = later - cursor; + + const lowerOrderUnits = units.filter( + u => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0 + ); + + if (lowerOrderUnits.length === 0) { + if (highWater < later) { + highWater = cursor.plus({ [lowestOrder]: 1 }); + } + + if (highWater !== cursor) { + results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor); + } + } + + const duration = Duration.fromObject(Object.assign(results, opts)); + + if (lowerOrderUnits.length > 0) { + return Duration.fromMillis(remainingMillis, opts) + .shiftTo(...lowerOrderUnits) + .plus(duration); + } else { + return duration; + } +} diff --git a/bundler/tests/.cache/untrusted/d8bc06bcaf4850ce6482e2af927c94d9984693e3.ts b/bundler/tests/.cache/untrusted/d8bc06bcaf4850ce6482e2af927c94d9984693e3.ts new file mode 100644 index 00000000000..7667983192b --- /dev/null +++ b/bundler/tests/.cache/untrusted/d8bc06bcaf4850ce6482e2af927c94d9984693e3.ts @@ -0,0 +1,72 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.ws/master/src/connect.ts + + +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ConnectionOptions, + NatsConnection, + NatsConnectionImpl, + setTransportFactory, + Transport, + TransportFactory, +} from "https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/internal_mod.ts"; + +import { WsTransport } from "./ws_transport.ts"; + +export function wsUrlParseFn(u: string): string { + const ut = /^(.*:\/\/)(.*)/; + if (!ut.test(u)) { + u = `https://${u}`; + } + let url = new URL(u); + const srcProto = url.protocol.toLowerCase(); + if (srcProto !== "https:" && srcProto !== "http") { + u = u.replace(/^(.*:\/\/)(.*)/gm, "$2"); + url = new URL(`http://${u}`); + } + + let protocol; + let port; + const host = url.hostname; + const path = url.pathname; + const search = url.search || ""; + + switch (srcProto) { + case "http:": + case "ws:": + case "nats:": + port = url.port || "80"; + protocol = "ws:"; + break; + default: + port = url.port || "443"; + protocol = "wss:"; + break; + } + return `${protocol}//${host}:${port}${path}${search}`; +} + +export function connect(opts: ConnectionOptions = {}): Promise { + setTransportFactory({ + defaultPort: 443, + urlParseFn: wsUrlParseFn, + factory: (): Transport => { + return new WsTransport(); + }, + } as TransportFactory); + + return NatsConnectionImpl.connect(opts); +} diff --git a/bundler/tests/.cache/untrusted/d9e2ff4767e05c334b83f269ca1ee2c6df62619a.ts b/bundler/tests/.cache/untrusted/d9e2ff4767e05c334b83f269ca1ee2c6df62619a.ts new file mode 100644 index 00000000000..9adcba48260 --- /dev/null +++ b/bundler/tests/.cache/untrusted/d9e2ff4767e05c334b83f269ca1ee2c6df62619a.ts @@ -0,0 +1,266 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/query/joinclause.js + + +import assert from '../deps/@jspm/core@1.1.0/nodelibs/assert.js'; + +// JoinClause +// ------- + +// The "JoinClause" is an object holding any necessary info about a join, +// including the type, and any associated tables & columns being joined. +function JoinClause(table, type, schema) { + this.schema = schema; + this.table = table; + this.joinType = type; + this.and = this; + this.clauses = []; +} + +function getClauseFromArguments(compilerType, bool, first, operator, second) { + let data = null; + + if (typeof first === 'function') { + data = { + type: 'onWrapped', + value: first, + bool: bool, + }; + } else { + switch (arguments.length) { + case 3: { + data = { type: 'onRaw', value: first, bool }; + break; + } + case 4: + data = { + type: compilerType, + column: first, + operator: '=', + value: operator, + bool, + }; + break; + default: + data = { + type: compilerType, + column: first, + operator, + value: second, + bool, + }; + } + } + + return data; +} + +Object.assign(JoinClause.prototype, { + grouping: 'join', + + // Adds an "on" clause to the current join object. + on(first) { + if (typeof first === 'object' && typeof first.toSQL !== 'function') { + const keys = Object.keys(first); + let i = -1; + const method = this._bool() === 'or' ? 'orOn' : 'on'; + while (++i < keys.length) { + this[method](keys[i], first[keys[i]]); + } + return this; + } + + const data = getClauseFromArguments('onBasic', this._bool(), ...arguments); + + if (data) { + this.clauses.push(data); + } + + return this; + }, + + // Adds a "using" clause to the current join. + using(column) { + return this.clauses.push({ type: 'onUsing', column, bool: this._bool() }); + }, + + /*// Adds an "and on" clause to the current join object. + andOn() { + return this.on.apply(this, arguments); + },*/ + + // Adds an "or on" clause to the current join object. + orOn(first, operator, second) { + return this._bool('or').on.apply(this, arguments); + }, + + onVal(first) { + if (typeof first === 'object' && typeof first.toSQL !== 'function') { + const keys = Object.keys(first); + let i = -1; + const method = this._bool() === 'or' ? 'orOnVal' : 'onVal'; + while (++i < keys.length) { + this[method](keys[i], first[keys[i]]); + } + return this; + } + + const data = getClauseFromArguments('onVal', this._bool(), ...arguments); + + if (data) { + this.clauses.push(data); + } + + return this; + }, + + andOnVal() { + return this.onVal(...arguments); + }, + + orOnVal() { + return this._bool('or').onVal(...arguments); + }, + + onBetween(column, values) { + assert( + Array.isArray(values), + 'The second argument to onBetween must be an array.' + ); + assert( + values.length === 2, + 'You must specify 2 values for the onBetween clause' + ); + this.clauses.push({ + type: 'onBetween', + column, + value: values, + bool: this._bool(), + not: this._not(), + }); + return this; + }, + + onNotBetween(column, values) { + return this._not(true).onBetween(column, values); + }, + + orOnBetween(column, values) { + return this._bool('or').onBetween(column, values); + }, + + orOnNotBetween(column, values) { + return this._bool('or')._not(true).onBetween(column, values); + }, + + onIn(column, values) { + if (Array.isArray(values) && values.length === 0) return this.on(1, '=', 0); + this.clauses.push({ + type: 'onIn', + column, + value: values, + not: this._not(), + bool: this._bool(), + }); + return this; + }, + + onNotIn(column, values) { + return this._not(true).onIn(column, values); + }, + + orOnIn(column, values) { + return this._bool('or').onIn(column, values); + }, + + orOnNotIn(column, values) { + return this._bool('or')._not(true).onIn(column, values); + }, + + onNull(column) { + this.clauses.push({ + type: 'onNull', + column, + not: this._not(), + bool: this._bool(), + }); + return this; + }, + + orOnNull(callback) { + return this._bool('or').onNull(callback); + }, + + onNotNull(callback) { + return this._not(true).onNull(callback); + }, + + orOnNotNull(callback) { + return this._not(true)._bool('or').onNull(callback); + }, + + onExists(callback) { + this.clauses.push({ + type: 'onExists', + value: callback, + not: this._not(), + bool: this._bool(), + }); + return this; + }, + + orOnExists(callback) { + return this._bool('or').onExists(callback); + }, + + onNotExists(callback) { + return this._not(true).onExists(callback); + }, + + orOnNotExists(callback) { + return this._not(true)._bool('or').onExists(callback); + }, + + // Explicitly set the type of join, useful within a function when creating a grouped join. + type(type) { + this.joinType = type; + return this; + }, + + _bool(bool) { + if (arguments.length === 1) { + this._boolFlag = bool; + return this; + } + const ret = this._boolFlag || 'and'; + this._boolFlag = 'and'; + return ret; + }, + + _not(val) { + if (arguments.length === 1) { + this._notFlag = val; + return this; + } + const ret = this._notFlag; + this._notFlag = false; + return ret; + }, +}); + +Object.defineProperty(JoinClause.prototype, 'or', { + get() { + return this._bool('or'); + }, +}); + +JoinClause.prototype.andOn = JoinClause.prototype.on; +JoinClause.prototype.andOnIn = JoinClause.prototype.onIn; +JoinClause.prototype.andOnNotIn = JoinClause.prototype.onNotIn; +JoinClause.prototype.andOnNull = JoinClause.prototype.onNull; +JoinClause.prototype.andOnNotNull = JoinClause.prototype.onNotNull; +JoinClause.prototype.andOnExists = JoinClause.prototype.onExists; +JoinClause.prototype.andOnNotExists = JoinClause.prototype.onNotExists; +JoinClause.prototype.andOnBetween = JoinClause.prototype.onBetween; +JoinClause.prototype.andOnNotBetween = JoinClause.prototype.onNotBetween; + +export default JoinClause; diff --git a/bundler/tests/.cache/untrusted/da1b13e6502165e8dcb86366c358a27a309a7f17.ts b/bundler/tests/.cache/untrusted/da1b13e6502165e8dcb86366c358a27a309a7f17.ts new file mode 100644 index 00000000000..ee9d8256f76 --- /dev/null +++ b/bundler/tests/.cache/untrusted/da1b13e6502165e8dcb86366c358a27a309a7f17.ts @@ -0,0 +1,301 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-7/src/crc16.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// An implementation of crc16 according to CCITT standards for XMODEM. +/** + * @ignore + */ +const crc16tab = new Uint16Array([ + 0x0000, + 0x1021, + 0x2042, + 0x3063, + 0x4084, + 0x50a5, + 0x60c6, + 0x70e7, + 0x8108, + 0x9129, + 0xa14a, + 0xb16b, + 0xc18c, + 0xd1ad, + 0xe1ce, + 0xf1ef, + 0x1231, + 0x0210, + 0x3273, + 0x2252, + 0x52b5, + 0x4294, + 0x72f7, + 0x62d6, + 0x9339, + 0x8318, + 0xb37b, + 0xa35a, + 0xd3bd, + 0xc39c, + 0xf3ff, + 0xe3de, + 0x2462, + 0x3443, + 0x0420, + 0x1401, + 0x64e6, + 0x74c7, + 0x44a4, + 0x5485, + 0xa56a, + 0xb54b, + 0x8528, + 0x9509, + 0xe5ee, + 0xf5cf, + 0xc5ac, + 0xd58d, + 0x3653, + 0x2672, + 0x1611, + 0x0630, + 0x76d7, + 0x66f6, + 0x5695, + 0x46b4, + 0xb75b, + 0xa77a, + 0x9719, + 0x8738, + 0xf7df, + 0xe7fe, + 0xd79d, + 0xc7bc, + 0x48c4, + 0x58e5, + 0x6886, + 0x78a7, + 0x0840, + 0x1861, + 0x2802, + 0x3823, + 0xc9cc, + 0xd9ed, + 0xe98e, + 0xf9af, + 0x8948, + 0x9969, + 0xa90a, + 0xb92b, + 0x5af5, + 0x4ad4, + 0x7ab7, + 0x6a96, + 0x1a71, + 0x0a50, + 0x3a33, + 0x2a12, + 0xdbfd, + 0xcbdc, + 0xfbbf, + 0xeb9e, + 0x9b79, + 0x8b58, + 0xbb3b, + 0xab1a, + 0x6ca6, + 0x7c87, + 0x4ce4, + 0x5cc5, + 0x2c22, + 0x3c03, + 0x0c60, + 0x1c41, + 0xedae, + 0xfd8f, + 0xcdec, + 0xddcd, + 0xad2a, + 0xbd0b, + 0x8d68, + 0x9d49, + 0x7e97, + 0x6eb6, + 0x5ed5, + 0x4ef4, + 0x3e13, + 0x2e32, + 0x1e51, + 0x0e70, + 0xff9f, + 0xefbe, + 0xdfdd, + 0xcffc, + 0xbf1b, + 0xaf3a, + 0x9f59, + 0x8f78, + 0x9188, + 0x81a9, + 0xb1ca, + 0xa1eb, + 0xd10c, + 0xc12d, + 0xf14e, + 0xe16f, + 0x1080, + 0x00a1, + 0x30c2, + 0x20e3, + 0x5004, + 0x4025, + 0x7046, + 0x6067, + 0x83b9, + 0x9398, + 0xa3fb, + 0xb3da, + 0xc33d, + 0xd31c, + 0xe37f, + 0xf35e, + 0x02b1, + 0x1290, + 0x22f3, + 0x32d2, + 0x4235, + 0x5214, + 0x6277, + 0x7256, + 0xb5ea, + 0xa5cb, + 0x95a8, + 0x8589, + 0xf56e, + 0xe54f, + 0xd52c, + 0xc50d, + 0x34e2, + 0x24c3, + 0x14a0, + 0x0481, + 0x7466, + 0x6447, + 0x5424, + 0x4405, + 0xa7db, + 0xb7fa, + 0x8799, + 0x97b8, + 0xe75f, + 0xf77e, + 0xc71d, + 0xd73c, + 0x26d3, + 0x36f2, + 0x0691, + 0x16b0, + 0x6657, + 0x7676, + 0x4615, + 0x5634, + 0xd94c, + 0xc96d, + 0xf90e, + 0xe92f, + 0x99c8, + 0x89e9, + 0xb98a, + 0xa9ab, + 0x5844, + 0x4865, + 0x7806, + 0x6827, + 0x18c0, + 0x08e1, + 0x3882, + 0x28a3, + 0xcb7d, + 0xdb5c, + 0xeb3f, + 0xfb1e, + 0x8bf9, + 0x9bd8, + 0xabbb, + 0xbb9a, + 0x4a75, + 0x5a54, + 0x6a37, + 0x7a16, + 0x0af1, + 0x1ad0, + 0x2ab3, + 0x3a92, + 0xfd2e, + 0xed0f, + 0xdd6c, + 0xcd4d, + 0xbdaa, + 0xad8b, + 0x9de8, + 0x8dc9, + 0x7c26, + 0x6c07, + 0x5c64, + 0x4c45, + 0x3ca2, + 0x2c83, + 0x1ce0, + 0x0cc1, + 0xef1f, + 0xff3e, + 0xcf5d, + 0xdf7c, + 0xaf9b, + 0xbfba, + 0x8fd9, + 0x9ff8, + 0x6e17, + 0x7e36, + 0x4e55, + 0x5e74, + 0x2e93, + 0x3eb2, + 0x0ed1, + 0x1ef0, +]); + +/** + * @ignore + */ +export class crc16 { + // crc16 returns the crc for the data provided. + static checksum(data: Uint8Array): number { + let crc: number = 0; + for (let i = 0; i < data.byteLength; i++) { + let b = data[i]; + crc = ((crc << 8) & 0xffff) ^ crc16tab[((crc >> 8) ^ (b)) & 0x00FF]; + } + return crc; + } + + // validate will check the calculated crc16 checksum for data against the expected. + static validate(data: Uint8Array, expected: number): boolean { + let ba = crc16.checksum(data); + return ba == expected; + } +} diff --git a/bundler/tests/.cache/untrusted/daa900c2e1b46f57fc1a755b47b3a1a619c2d785.ts b/bundler/tests/.cache/untrusted/daa900c2e1b46f57fc1a755b47b3a1a619c2d785.ts new file mode 100644 index 00000000000..51bf59a0e13 --- /dev/null +++ b/bundler/tests/.cache/untrusted/daa900c2e1b46f57fc1a755b47b3a1a619c2d785.ts @@ -0,0 +1,301 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/src/crc16.ts + + +/* + * Copyright 2018-2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// An implementation of crc16 according to CCITT standards for XMODEM. +/** + * @ignore + */ +const crc16tab = new Uint16Array([ + 0x0000, + 0x1021, + 0x2042, + 0x3063, + 0x4084, + 0x50a5, + 0x60c6, + 0x70e7, + 0x8108, + 0x9129, + 0xa14a, + 0xb16b, + 0xc18c, + 0xd1ad, + 0xe1ce, + 0xf1ef, + 0x1231, + 0x0210, + 0x3273, + 0x2252, + 0x52b5, + 0x4294, + 0x72f7, + 0x62d6, + 0x9339, + 0x8318, + 0xb37b, + 0xa35a, + 0xd3bd, + 0xc39c, + 0xf3ff, + 0xe3de, + 0x2462, + 0x3443, + 0x0420, + 0x1401, + 0x64e6, + 0x74c7, + 0x44a4, + 0x5485, + 0xa56a, + 0xb54b, + 0x8528, + 0x9509, + 0xe5ee, + 0xf5cf, + 0xc5ac, + 0xd58d, + 0x3653, + 0x2672, + 0x1611, + 0x0630, + 0x76d7, + 0x66f6, + 0x5695, + 0x46b4, + 0xb75b, + 0xa77a, + 0x9719, + 0x8738, + 0xf7df, + 0xe7fe, + 0xd79d, + 0xc7bc, + 0x48c4, + 0x58e5, + 0x6886, + 0x78a7, + 0x0840, + 0x1861, + 0x2802, + 0x3823, + 0xc9cc, + 0xd9ed, + 0xe98e, + 0xf9af, + 0x8948, + 0x9969, + 0xa90a, + 0xb92b, + 0x5af5, + 0x4ad4, + 0x7ab7, + 0x6a96, + 0x1a71, + 0x0a50, + 0x3a33, + 0x2a12, + 0xdbfd, + 0xcbdc, + 0xfbbf, + 0xeb9e, + 0x9b79, + 0x8b58, + 0xbb3b, + 0xab1a, + 0x6ca6, + 0x7c87, + 0x4ce4, + 0x5cc5, + 0x2c22, + 0x3c03, + 0x0c60, + 0x1c41, + 0xedae, + 0xfd8f, + 0xcdec, + 0xddcd, + 0xad2a, + 0xbd0b, + 0x8d68, + 0x9d49, + 0x7e97, + 0x6eb6, + 0x5ed5, + 0x4ef4, + 0x3e13, + 0x2e32, + 0x1e51, + 0x0e70, + 0xff9f, + 0xefbe, + 0xdfdd, + 0xcffc, + 0xbf1b, + 0xaf3a, + 0x9f59, + 0x8f78, + 0x9188, + 0x81a9, + 0xb1ca, + 0xa1eb, + 0xd10c, + 0xc12d, + 0xf14e, + 0xe16f, + 0x1080, + 0x00a1, + 0x30c2, + 0x20e3, + 0x5004, + 0x4025, + 0x7046, + 0x6067, + 0x83b9, + 0x9398, + 0xa3fb, + 0xb3da, + 0xc33d, + 0xd31c, + 0xe37f, + 0xf35e, + 0x02b1, + 0x1290, + 0x22f3, + 0x32d2, + 0x4235, + 0x5214, + 0x6277, + 0x7256, + 0xb5ea, + 0xa5cb, + 0x95a8, + 0x8589, + 0xf56e, + 0xe54f, + 0xd52c, + 0xc50d, + 0x34e2, + 0x24c3, + 0x14a0, + 0x0481, + 0x7466, + 0x6447, + 0x5424, + 0x4405, + 0xa7db, + 0xb7fa, + 0x8799, + 0x97b8, + 0xe75f, + 0xf77e, + 0xc71d, + 0xd73c, + 0x26d3, + 0x36f2, + 0x0691, + 0x16b0, + 0x6657, + 0x7676, + 0x4615, + 0x5634, + 0xd94c, + 0xc96d, + 0xf90e, + 0xe92f, + 0x99c8, + 0x89e9, + 0xb98a, + 0xa9ab, + 0x5844, + 0x4865, + 0x7806, + 0x6827, + 0x18c0, + 0x08e1, + 0x3882, + 0x28a3, + 0xcb7d, + 0xdb5c, + 0xeb3f, + 0xfb1e, + 0x8bf9, + 0x9bd8, + 0xabbb, + 0xbb9a, + 0x4a75, + 0x5a54, + 0x6a37, + 0x7a16, + 0x0af1, + 0x1ad0, + 0x2ab3, + 0x3a92, + 0xfd2e, + 0xed0f, + 0xdd6c, + 0xcd4d, + 0xbdaa, + 0xad8b, + 0x9de8, + 0x8dc9, + 0x7c26, + 0x6c07, + 0x5c64, + 0x4c45, + 0x3ca2, + 0x2c83, + 0x1ce0, + 0x0cc1, + 0xef1f, + 0xff3e, + 0xcf5d, + 0xdf7c, + 0xaf9b, + 0xbfba, + 0x8fd9, + 0x9ff8, + 0x6e17, + 0x7e36, + 0x4e55, + 0x5e74, + 0x2e93, + 0x3eb2, + 0x0ed1, + 0x1ef0, +]); + +/** + * @ignore + */ +export class crc16 { + // crc16 returns the crc for the data provided. + static checksum(data: Uint8Array): number { + let crc: number = 0; + for (let i = 0; i < data.byteLength; i++) { + let b = data[i]; + crc = ((crc << 8) & 0xffff) ^ crc16tab[((crc >> 8) ^ (b)) & 0x00FF]; + } + return crc; + } + + // validate will check the calculated crc16 checksum for data against the expected. + static validate(data: Uint8Array, expected: number): boolean { + let ba = crc16.checksum(data); + return ba == expected; + } +} diff --git a/bundler/tests/.cache/untrusted/dabadff7db43529f8c1c4ecbb76a0ef74e4a65f7.ts b/bundler/tests/.cache/untrusted/dabadff7db43529f8c1c4ecbb76a0ef74e4a65f7.ts new file mode 100644 index 00000000000..c8b2df86b46 --- /dev/null +++ b/bundler/tests/.cache/untrusted/dabadff7db43529f8c1c4ecbb76a0ef74e4a65f7.ts @@ -0,0 +1,17 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/functionhelper.js + + +// FunctionHelper +// ------- +function FunctionHelper(client) { + this.client = client; +} + +FunctionHelper.prototype.now = function (precision) { + if (typeof precision === 'number') { + return this.client.raw(`CURRENT_TIMESTAMP(${precision})`); + } + return this.client.raw('CURRENT_TIMESTAMP'); +}; + +export default FunctionHelper; diff --git a/bundler/tests/.cache/untrusted/dbbd4c47b740fd2e1de0e1441a9671abcf064899.ts b/bundler/tests/.cache/untrusted/dbbd4c47b740fd2e1de0e1441a9671abcf064899.ts new file mode 100644 index 00000000000..df76ae866ff --- /dev/null +++ b/bundler/tests/.cache/untrusted/dbbd4c47b740fd2e1de0e1441a9671abcf064899.ts @@ -0,0 +1,61 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/internal_mod.ts + + +export { NatsConnectionImpl } from "./nats.ts"; +export { Nuid, nuid } from "./nuid.ts"; +export { ErrorCode, NatsError } from "./error.ts"; +export type { + ConnectionOptions, + Msg, + NatsConnection, + PublishOptions, + RequestOptions, + Server, + ServerInfo, + ServersChanged, + Status, + Subscription, + SubscriptionOptions, +} from "./types.ts"; +export { DebugEvents, Empty, Events } from "./types.ts"; +export { MsgImpl } from "./msg.ts"; +export { SubscriptionImpl } from "./subscription.ts"; +export { Subscriptions } from "./subscriptions.ts"; +export { setTransportFactory } from "./transport.ts"; +export type { Transport, TransportFactory } from "./transport.ts"; +export { Connect, createInbox, INFO, ProtocolHandler } from "./protocol.ts"; +export type { Deferred, Timeout } from "./util.ts"; +export { + deferred, + delay, + extend, + extractProtocolMessage, + render, + timeout, +} from "./util.ts"; +export type { MsgHdrs } from "./headers.ts"; +export { headers, MsgHdrsImpl } from "./headers.ts"; +export { Heartbeat } from "./heartbeats.ts"; +export type { PH } from "./heartbeats.ts"; +export { MuxSubscription } from "./muxsubscription.ts"; +export { DataBuffer } from "./databuffer.ts"; +export { checkOptions, checkUnsupportedOption } from "./options.ts"; +export { Request } from "./request.ts"; +export type { Authenticator } from "./authenticator.ts"; +export { + credsAuthenticator, + jwtAuthenticator, + nkeyAuthenticator, +} from "./authenticator.ts"; +export type { Codec } from "./codec.ts"; +export { JSONCodec, StringCodec } from "./codec.ts"; +export * from "./nkeys.ts"; +export type { Dispatcher } from "./queued_iterator.ts"; +export { QueuedIterator } from "./queued_iterator.ts"; +export type { ParserEvent } from "./parser.ts"; +export { Kind, Parser, State } from "./parser.ts"; +export { DenoBuffer, MAX_SIZE, readAll, writeAll } from "./denobuffer.ts"; +export { Bench, Metric } from "./bench.ts"; +export type { BenchOpts } from "./bench.ts"; +export { TD, TE } from "./encoders.ts"; +export { isIP, parseIP } from "./ipparser.ts"; diff --git a/bundler/tests/.cache/untrusted/dc51bee73c089e5bbc5bfcfa0dea6a376218b4b8.ts b/bundler/tests/.cache/untrusted/dc51bee73c089e5bbc5bfcfa0dea6a376218b4b8.ts new file mode 100644 index 00000000000..44eff0c54ba --- /dev/null +++ b/bundler/tests/.cache/untrusted/dc51bee73c089e5bbc5bfcfa0dea6a376218b4b8.ts @@ -0,0 +1,104 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/interface.js + + +import _ from './deps/lodash@4.17.15/index.js'; +const clone = _.clone; +const isEmpty = _.isEmpty; +import { callbackify } from './deps/@jspm/core@1.1.0/nodelibs/util.js'; +import finallyMixin from './util/finally-mixin.js'; + +export default function (Target) { + Target.prototype.toQuery = function (tz) { + let data = this.toSQL(this._method, tz); + if (!Array.isArray(data)) data = [data]; + return data + .map((statement) => { + return this.client._formatQuery(statement.sql, statement.bindings, tz); + }) + .join(';\n'); + }; + + // Create a new instance of the `Runner`, passing in the current object. + Target.prototype.then = function (/* onFulfilled, onRejected */) { + let result = this.client.runner(this).run(); + + if (this.client.config.asyncStackTraces) { + result = result.catch((err) => { + err.originalStack = err.stack; + const firstLine = err.stack.split('\n')[0]; + this._asyncStack.unshift(firstLine); + // put the fake more helpful "async" stack on the thrown error + err.stack = this._asyncStack.join('\n'); + throw err; + }); + } + + return result.then.apply(result, arguments); + }; + + // Add additional "options" to the builder. Typically used for client specific + // items, like the `mysql` and `sqlite3` drivers. + Target.prototype.options = function (opts) { + this._options = this._options || []; + this._options.push(clone(opts) || {}); + return this; + }; + + // Sets an explicit "connection" we wish to use for this query. + Target.prototype.connection = function (connection) { + this._connection = connection; + return this; + }; + + // Set a debug flag for the current schema query stack. + Target.prototype.debug = function (enabled) { + this._debug = arguments.length ? enabled : true; + return this; + }; + + // Set the transaction object for this query. + Target.prototype.transacting = function (t) { + if (t && t.client) { + if (!t.client.transacting) { + t.client.logger.warn(`Invalid transaction value: ${t.client}`); + } else { + this.client = t.client; + } + } + if (isEmpty(t)) { + this.client.logger.error( + 'Invalid value on transacting call, potential bug' + ); + throw Error( + 'Invalid transacting value (null, undefined or empty object)' + ); + } + return this; + }; + + // Initializes a stream. + Target.prototype.stream = function (options) { + return this.client.runner(this).stream(options); + }; + + // Initialize a stream & pipe automatically. + Target.prototype.pipe = function (writable, options) { + return this.client.runner(this).pipe(writable, options); + }; + + Target.prototype.asCallback = function (cb) { + const promise = this.then(); + callbackify(() => promise)(cb); + return promise; + }; + + Target.prototype.catch = function (onReject) { + return this.then().catch(onReject); + }; + + Object.defineProperty(Target.prototype, Symbol.toStringTag, { + get: () => 'object', + }); + + finallyMixin(Target.prototype); +}; diff --git a/bundler/tests/.cache/untrusted/dd5e748d0849268b90f49e3e835bf5287be8bf43.ts b/bundler/tests/.cache/untrusted/dd5e748d0849268b90f49e3e835bf5287be8bf43.ts new file mode 100644 index 00000000000..a61799d9ef3 --- /dev/null +++ b/bundler/tests/.cache/untrusted/dd5e748d0849268b90f49e3e835bf5287be8bf43.ts @@ -0,0 +1,99 @@ +// Loaded from https://cdn.skypack.dev/-/base64-js@v1.5.1-W9sqY0mF5INkRg7HAvxn/dist=es2020,mode=imports/optimized/base64-js.js + + +var byteLength_1 = byteLength; +var toByteArray_1 = toByteArray; +var fromByteArray_1 = fromByteArray; +var lookup = []; +var revLookup = []; +var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; +var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; +} +revLookup["-".charCodeAt(0)] = 62; +revLookup["_".charCodeAt(0)] = 63; +function getLens(b64) { + var len = b64.length; + if (len % 4 > 0) { + throw new Error("Invalid string. Length must be a multiple of 4"); + } + var validLen = b64.indexOf("="); + if (validLen === -1) + validLen = len; + var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; + return [validLen, placeHoldersLen]; +} +function byteLength(b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; +} +function _byteLength(b64, validLen, placeHoldersLen) { + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; +} +function toByteArray(b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + var curByte = 0; + var len = placeHoldersLen > 0 ? validLen - 4 : validLen; + var i; + for (i = 0; i < len; i += 4) { + tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = tmp >> 16 & 255; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + return arr; +} +function tripletToBase64(num) { + return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; +} +function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255); + output.push(tripletToBase64(tmp)); + } + return output.join(""); +} +function fromByteArray(uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; + var parts = []; + var maxChunkLength = 16383; + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); + } + if (extraBytes === 1) { + tmp = uint8[len - 1]; + parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="); + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="); + } + return parts.join(""); +} +var base64Js = { + byteLength: byteLength_1, + toByteArray: toByteArray_1, + fromByteArray: fromByteArray_1 +}; +export default base64Js; +export {base64Js as __moduleExports, byteLength_1 as byteLength, fromByteArray_1 as fromByteArray, toByteArray_1 as toByteArray}; diff --git a/bundler/tests/.cache/untrusted/ded43e68d7f82628c882d82697423d3694ac02bc.ts b/bundler/tests/.cache/untrusted/ded43e68d7f82628c882d82697423d3694ac02bc.ts new file mode 100644 index 00000000000..e444402c6bb --- /dev/null +++ b/bundler/tests/.cache/untrusted/ded43e68d7f82628c882d82697423d3694ac02bc.ts @@ -0,0 +1,6 @@ +// Loaded from https://raw.githubusercontent.com/kdy1/oak-bundle-issue/master/deps.ts + + +import { Application, Router } from "https://deno.land/x/oak/mod.ts"; + +export { Application, Router }; diff --git a/bundler/tests/.cache/untrusted/df39dd29eadcdf73315d29196b9affc0b8efb734.ts b/bundler/tests/.cache/untrusted/df39dd29eadcdf73315d29196b9affc0b8efb734.ts new file mode 100644 index 00000000000..4c3f0b7e64d --- /dev/null +++ b/bundler/tests/.cache/untrusted/df39dd29eadcdf73315d29196b9affc0b8efb734.ts @@ -0,0 +1,251 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/denobuffer.ts + + +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +// This code has been ported almost directly from Go's src/bytes/buffer.go +// Copyright 2009 The Go Authors. All rights reserved. BSD license. +// https://github.com/golang/go/blob/master/LICENSE + +// This code removes all Deno specific functionality to enable its use +// in a browser environment + +//@internal +import { TE } from "./encoders.ts"; + +export class AssertionError extends Error { + constructor(msg?: string) { + super(msg); + this.name = "AssertionError"; + } +} + +export interface Reader { + read(p: Uint8Array): number | null; +} + +export interface Writer { + write(p: Uint8Array): number; +} + +// @internal +export function assert(cond: unknown, msg = "Assertion failed."): asserts cond { + if (!cond) { + throw new AssertionError(msg); + } +} + +// MIN_READ is the minimum ArrayBuffer size passed to a read call by +// buffer.ReadFrom. As long as the Buffer has at least MIN_READ bytes beyond +// what is required to hold the contents of r, readFrom() will not grow the +// underlying buffer. +const MIN_READ = 32 * 1024; + +export const MAX_SIZE = 2 ** 32 - 2; + +// `off` is the offset into `dst` where it will at which to begin writing values +// from `src`. +// Returns the number of bytes copied. +function copy(src: Uint8Array, dst: Uint8Array, off = 0): number { + const r = dst.byteLength - off; + if (src.byteLength > r) { + src = src.subarray(0, r); + } + dst.set(src, off); + return src.byteLength; +} + +export function concat(origin?: Uint8Array, b?: Uint8Array): Uint8Array { + if (origin === undefined && b === undefined) { + return new Uint8Array(0); + } + if (origin === undefined) { + return b!; + } + if (b === undefined) { + return origin; + } + const output = new Uint8Array(origin.length + b.length); + output.set(origin, 0); + output.set(b, origin.length); + return output; +} + +export function append(origin: Uint8Array, b: number): Uint8Array { + return concat(origin, Uint8Array.of(b)); +} + +export class DenoBuffer implements Reader, Writer { + _buf: Uint8Array; // contents are the bytes _buf[off : len(_buf)] + _off: number; // read at _buf[off], write at _buf[_buf.byteLength] + + constructor(ab?: ArrayBuffer) { + this._off = 0; + if (ab == null) { + this._buf = new Uint8Array(0); + return; + } + + this._buf = new Uint8Array(ab); + } + + bytes(options: { copy?: boolean } = { copy: true }): Uint8Array { + if (options.copy === false) return this._buf.subarray(this._off); + return this._buf.slice(this._off); + } + + empty(): boolean { + return this._buf.byteLength <= this._off; + } + + get length(): number { + return this._buf.byteLength - this._off; + } + + get capacity(): number { + return this._buf.buffer.byteLength; + } + + truncate(n: number): void { + if (n === 0) { + this.reset(); + return; + } + if (n < 0 || n > this.length) { + throw Error("bytes.Buffer: truncation out of range"); + } + this._reslice(this._off + n); + } + + reset(): void { + this._reslice(0); + this._off = 0; + } + + _tryGrowByReslice(n: number): number { + const l = this._buf.byteLength; + if (n <= this.capacity - l) { + this._reslice(l + n); + return l; + } + return -1; + } + + _reslice(len: number): void { + assert(len <= this._buf.buffer.byteLength); + this._buf = new Uint8Array(this._buf.buffer, 0, len); + } + + readByte(): number | null { + const a = new Uint8Array(1); + if (this.read(a)) { + return a[0]; + } + return null; + } + + read(p: Uint8Array): number | null { + if (this.empty()) { + // Buffer is empty, reset to recover space. + this.reset(); + if (p.byteLength === 0) { + // this edge case is tested in 'bufferReadEmptyAtEOF' test + return 0; + } + return null; + } + const nread = copy(this._buf.subarray(this._off), p); + this._off += nread; + return nread; + } + + writeByte(n: number): number { + return this.write(Uint8Array.of(n)); + } + + writeString(s: string): number { + return this.write(TE.encode(s)); + } + + write(p: Uint8Array): number { + const m = this._grow(p.byteLength); + return copy(p, this._buf, m); + } + + _grow(n: number): number { + const m = this.length; + // If buffer is empty, reset to recover space. + if (m === 0 && this._off !== 0) { + this.reset(); + } + // Fast: Try to _grow by means of a _reslice. + const i = this._tryGrowByReslice(n); + if (i >= 0) { + return i; + } + const c = this.capacity; + if (n <= Math.floor(c / 2) - m) { + // We can slide things down instead of allocating a new + // ArrayBuffer. We only need m+n <= c to slide, but + // we instead let capacity get twice as large so we + // don't spend all our time copying. + copy(this._buf.subarray(this._off), this._buf); + } else if (c + n > MAX_SIZE) { + throw new Error("The buffer cannot be grown beyond the maximum size."); + } else { + // Not enough space anywhere, we need to allocate. + const buf = new Uint8Array(Math.min(2 * c + n, MAX_SIZE)); + copy(this._buf.subarray(this._off), buf); + this._buf = buf; + } + // Restore this.off and len(this._buf). + this._off = 0; + this._reslice(Math.min(m + n, MAX_SIZE)); + return m; + } + + grow(n: number): void { + if (n < 0) { + throw Error("Buffer._grow: negative count"); + } + const m = this._grow(n); + this._reslice(m); + } + + readFrom(r: Reader): number { + let n = 0; + const tmp = new Uint8Array(MIN_READ); + while (true) { + const shouldGrow = this.capacity - this.length < MIN_READ; + // read into tmp buffer if there's not enough room + // otherwise read directly into the internal buffer + const buf = shouldGrow + ? tmp + : new Uint8Array(this._buf.buffer, this.length); + + const nread = r.read(buf); + if (nread === null) { + return n; + } + + // write will grow if needed + if (shouldGrow) this.write(buf.subarray(0, nread)); + else this._reslice(this.length + nread); + + n += nread; + } + } +} + +export function readAll(r: Reader): Uint8Array { + const buf = new DenoBuffer(); + buf.readFrom(r); + return buf.bytes(); +} + +export function writeAll(w: Writer, arr: Uint8Array): void { + let nwritten = 0; + while (nwritten < arr.length) { + nwritten += w.write(arr.subarray(nwritten)); + } +} diff --git a/bundler/tests/.cache/untrusted/df8f9b3c9ae150005fa6e50ffae6ce00c352a576.ts b/bundler/tests/.cache/untrusted/df8f9b3c9ae150005fa6e50ffae6ce00c352a576.ts new file mode 100644 index 00000000000..7a4b35a6345 --- /dev/null +++ b/bundler/tests/.cache/untrusted/df8f9b3c9ae150005fa6e50ffae6ce00c352a576.ts @@ -0,0 +1,4 @@ +// Loaded from https://cdn.esm.sh/v15/react@17.0.1/esnext/react.js + + +var G=Object.create,_=Object.defineProperty,J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty,Q=Object.getOwnPropertyNames,X=Object.getOwnPropertyDescriptor;var Z=e=>_(e,"__esModule",{value:!0});var g=(e,r)=>()=>(r||(r={exports:{}},e(r.exports,r)),r.exports);var ee=(e,r,t)=>{if(Z(e),r&&typeof r=="object"||typeof r=="function")for(let n of Q(r))!K.call(e,n)&&n!=="default"&&_(e,n,{get:()=>r[n],enumerable:!(t=X(r,n))||t.enumerable});return e},re=e=>e&&e.__esModule?e:ee(_(e!=null?G(J(e)):{},"default",{value:e,enumerable:!0}),e);var P=g((Te,k)=>{"use strict";var $=Object.getOwnPropertySymbols,te=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;function oe(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function ue(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var r={},t=0;t<10;t++)r["_"+String.fromCharCode(t)]=t;var n=Object.getOwnPropertyNames(r).map(function(i){return r[i]});if(n.join("")!=="0123456789")return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(i){o[i]=i}),Object.keys(Object.assign({},o)).join("")==="abcdefghijklmnopqrst"}catch(i){return!1}}k.exports=ue()?Object.assign:function(e,r){for(var t,n=oe(e),o,i=1;i{"use strict";var E=P(),y=60103,b=60106;u.Fragment=60107;u.StrictMode=60108;u.Profiler=60114;var w=60109,x=60110,I=60112;u.Suspense=60113;var N=60115,q=60116;typeof Symbol=="function"&&Symbol.for&&(l=Symbol.for,y=l("react.element"),b=l("react.portal"),u.Fragment=l("react.fragment"),u.StrictMode=l("react.strict_mode"),u.Profiler=l("react.profiler"),w=l("react.provider"),x=l("react.context"),I=l("react.forward_ref"),u.Suspense=l("react.suspense"),N=l("react.memo"),q=l("react.lazy"));var l,A=typeof Symbol=="function"&&Symbol.iterator;function ie(e){return e===null||typeof e!="object"?null:(e=A&&e[A]||e["@@iterator"],typeof e=="function"?e:null)}function v(e){for(var r="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t{"use strict";H.exports=z()});var Y=re(W()),{Fragment:ae,StrictMode:pe,Profiler:ye,Suspense:de,Children:ve,Component:me,PureComponent:he,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:_e,cloneElement:ge,createContext:Ee,createElement:Oe,createFactory:je,createRef:Se,forwardRef:Ce,isValidElement:Re,lazy:ke,memo:$e,useCallback:Pe,useContext:be,useDebugValue:we,useEffect:xe,useImperativeHandle:Ie,useLayoutEffect:Ne,useMemo:qe,useReducer:Ae,useRef:Fe,useState:Le,version:Ue}=Y,De=Y;export{ve as Children,me as Component,ae as Fragment,ye as Profiler,he as PureComponent,pe as StrictMode,de as Suspense,_e as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ge as cloneElement,Ee as createContext,Oe as createElement,je as createFactory,Se as createRef,De as default,Ce as forwardRef,Re as isValidElement,ke as lazy,$e as memo,Pe as useCallback,be as useContext,we as useDebugValue,xe as useEffect,Ie as useImperativeHandle,Ne as useLayoutEffect,qe as useMemo,Ae as useReducer,Fe as useRef,Le as useState,Ue as version}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/df95eff5275e0aee33ba1908c62785e1755262c3.ts b/bundler/tests/.cache/untrusted/df95eff5275e0aee33ba1908c62785e1755262c3.ts new file mode 100644 index 00000000000..34b79265baa --- /dev/null +++ b/bundler/tests/.cache/untrusted/df95eff5275e0aee33ba1908c62785e1755262c3.ts @@ -0,0 +1,123 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/redshift/query/compiler.js + + +// Redshift Query Builder & Compiler +// ------ +import QueryCompiler from '../../../query/compiler.js'; +import QueryCompiler_PG from '../../postgres/query/compiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const identity = _.identity; +const reduce = _.reduce; + +class QueryCompiler_Redshift extends QueryCompiler_PG { + constructor(client, builder) { + super(client, builder); + } + + truncate() { + return `truncate ${this.tableName.toLowerCase()}`; + } + + // Compiles an `insert` query, allowing for multiple + // inserts using a single query statement. + insert() { + const sql = QueryCompiler.prototype.insert.apply(this, arguments); + if (sql === '') return sql; + this._slightReturn(); + return { + sql, + }; + } + + // Compiles an `update` query, warning on unsupported returning + update() { + const sql = QueryCompiler.prototype.update.apply(this, arguments); + this._slightReturn(); + return { + sql, + }; + } + + // Compiles an `delete` query, warning on unsupported returning + del() { + const sql = QueryCompiler.prototype.del.apply(this, arguments); + this._slightReturn(); + return { + sql, + }; + } + + // simple: if trying to return, warn + _slightReturn() { + if (this.single.isReturning) { + this.client.logger.warn( + 'insert/update/delete returning is not supported by redshift dialect' + ); + } + } + + forUpdate() { + this.client.logger.warn('table lock is not supported by redshift dialect'); + return ''; + } + + forShare() { + this.client.logger.warn( + 'lock for share is not supported by redshift dialect' + ); + return ''; + } + + // Compiles a columnInfo query + columnInfo() { + const column = this.single.columnInfo; + let schema = this.single.schema; + + // The user may have specified a custom wrapIdentifier function in the config. We + // need to run the identifiers through that function, but not format them as + // identifiers otherwise. + const table = this.client.customWrapIdentifier(this.single.table, identity); + + if (schema) { + schema = this.client.customWrapIdentifier(schema, identity); + } + + let sql = + 'select * from information_schema.columns where table_name = ? and table_catalog = ?'; + const bindings = [ + table.toLowerCase(), + this.client.database().toLowerCase(), + ]; + + if (schema) { + sql += ' and table_schema = ?'; + bindings.push(schema); + } else { + sql += ' and table_schema = current_schema()'; + } + + return { + sql, + bindings, + output(resp) { + const out = reduce( + resp.rows, + function (columns, val) { + columns[val.column_name] = { + type: val.data_type, + maxLength: val.character_maximum_length, + nullable: val.is_nullable === 'YES', + defaultValue: val.column_default, + }; + return columns; + }, + {} + ); + return (column && out[column]) || out; + }, + }; + } +} + +export default QueryCompiler_Redshift; diff --git a/bundler/tests/.cache/untrusted/e0dc6774ab4c62dd10931795cb7539faa71b515b.ts b/bundler/tests/.cache/untrusted/e0dc6774ab4c62dd10931795cb7539faa71b515b.ts new file mode 100644 index 00000000000..ea1b4df746f --- /dev/null +++ b/bundler/tests/.cache/untrusted/e0dc6774ab4c62dd10931795cb7539faa71b515b.ts @@ -0,0 +1,19 @@ +// Loaded from https://cdn.skypack.dev/mongobj + + +/* + * Skypack CDN - mongobj@1.0.9 + * + * Learn more: + * 📙 Package Documentation: https://www.skypack.dev/view/mongobj + * 📘 Skypack Documentation: https://www.skypack.dev/docs + * + * Pinned URL: (Optimized for Production) + * ▶️ Normal: https://cdn.skypack.dev/pin/mongobj@v1.0.9-VYPOdIIfPZvZAWJWUZ9S/mode=imports/optimized/mongobj.js + * ⏩ Minified: https://cdn.skypack.dev/pin/mongobj@v1.0.9-VYPOdIIfPZvZAWJWUZ9S/mode=imports,min/optimized/mongobj.js + * + */ + +// Browser-Optimized Imports (Don't directly import the URLs below in your application!) +export * from '/-/mongobj@v1.0.9-VYPOdIIfPZvZAWJWUZ9S/dist=es2020,mode=imports/optimized/mongobj.js'; +export {default} from '/-/mongobj@v1.0.9-VYPOdIIfPZvZAWJWUZ9S/dist=es2020,mode=imports/optimized/mongobj.js'; diff --git a/bundler/tests/.cache/untrusted/e10c91dfbe886ed5e5f5685c479a5a74ed6b3a67.ts b/bundler/tests/.cache/untrusted/e10c91dfbe886ed5e5f5685c479a5a74ed6b3a67.ts new file mode 100644 index 00000000000..83f162a3216 --- /dev/null +++ b/bundler/tests/.cache/untrusted/e10c91dfbe886ed5e5f5685c479a5a74ed6b3a67.ts @@ -0,0 +1,26 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/nativeEnum.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; + +export interface ZodNativeEnumDef + extends ZodTypeDef { + t: ZodTypes.nativeEnum; + values: T; +} + +type EnumLike = { [k: string]: string | number; [nu: number]: string }; + +export class ZodNativeEnum extends ZodType< + T[keyof T], + ZodNativeEnumDef +> { + toJSON = () => this._def; + static create = (values: T): ZodNativeEnum => { + return new ZodNativeEnum({ + t: ZodTypes.nativeEnum, + values: values, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/e181cb6cb8b05b7c57b7f1cef4d5002e3061080d.ts b/bundler/tests/.cache/untrusted/e181cb6cb8b05b7c57b7f1cef4d5002e3061080d.ts new file mode 100644 index 00000000000..4c654114e90 --- /dev/null +++ b/bundler/tests/.cache/untrusted/e181cb6cb8b05b7c57b7f1cef4d5002e3061080d.ts @@ -0,0 +1,15 @@ +// Loaded from https://dev.jspm.io/npm:set-immediate-shim@1.0.1/index.dew.js + + +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + exports = typeof setImmediate === 'function' ? setImmediate : function setImmediate() { + var args = [].slice.apply(arguments); + args.splice(1, 0, 0); + setTimeout.apply(null, args); + }; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/e30c0347b9fdb79a79377059012dc461b79d8a38.ts b/bundler/tests/.cache/untrusted/e30c0347b9fdb79a79377059012dc461b79d8a38.ts new file mode 100644 index 00000000000..80c2a81473a --- /dev/null +++ b/bundler/tests/.cache/untrusted/e30c0347b9fdb79a79377059012dc461b79d8a38.ts @@ -0,0 +1,90 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/crc32.dew.js + + +import { dew as _utilsDewDew } from "./utils.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utils = _utilsDewDew(); + /** + * The following functions come from pako, from pako/lib/zlib/crc32.js + * released under the MIT license, see pako https://github.com/nodeca/pako/ + */ + // Use ordinary array, since untyped makes no boost here + + + function makeTable() { + var c, + table = []; + + for (var n = 0; n < 256; n++) { + c = n; + + for (var k = 0; k < 8; k++) { + c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1; + } + + table[n] = c; + } + + return table; + } // Create table on load. Just 255 signed longs. Not a problem. + + + var crcTable = makeTable(); + + function crc32(crc, buf, len, pos) { + var t = crcTable, + end = pos + len; + crc = crc ^ -1; + + for (var i = pos; i < end; i++) { + crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return crc ^ -1; // >>> 0; + } // That's all for the pako functions. + + /** + * Compute the crc32 of a string. + * This is almost the same as the function crc32, but for strings. Using the + * same function for the two use cases leads to horrible performances. + * @param {Number} crc the starting value of the crc. + * @param {String} str the string to use. + * @param {Number} len the length of the string. + * @param {Number} pos the starting position for the crc32 computation. + * @return {Number} the computed crc32. + */ + + + function crc32str(crc, str, len, pos) { + var t = crcTable, + end = pos + len; + crc = crc ^ -1; + + for (var i = pos; i < end; i++) { + crc = crc >>> 8 ^ t[(crc ^ str.charCodeAt(i)) & 0xFF]; + } + + return crc ^ -1; // >>> 0; + } + + exports = function crc32wrapper(input, crc) { + if (typeof input === "undefined" || !input.length) { + return 0; + } + + var isArray = utils.getTypeOf(input) !== "string"; + + if (isArray) { + return crc32(crc | 0, input, input.length, 0); + } else { + return crc32str(crc | 0, input, input.length, 0); + } + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/e33b8c8fc53efb9c14e9e5638cbba3b493d50b67.ts b/bundler/tests/.cache/untrusted/e33b8c8fc53efb9c14e9e5638cbba3b493d50b67.ts new file mode 100644 index 00000000000..596bca3eef7 --- /dev/null +++ b/bundler/tests/.cache/untrusted/e33b8c8fc53efb9c14e9e5638cbba3b493d50b67.ts @@ -0,0 +1,16 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/signature.dew.js + + +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + exports.LOCAL_FILE_HEADER = "PK\x03\x04"; + exports.CENTRAL_FILE_HEADER = "PK\x01\x02"; + exports.CENTRAL_DIRECTORY_END = "PK\x05\x06"; + exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07"; + exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06"; + exports.DATA_DESCRIPTOR = "PK\x07\x08"; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/e40c8ca6594b2671cb3d9598a95c4689f2f64d08.ts b/bundler/tests/.cache/untrusted/e40c8ca6594b2671cb3d9598a95c4689f2f64d08.ts new file mode 100644 index 00000000000..85e954e9304 --- /dev/null +++ b/bundler/tests/.cache/untrusted/e40c8ca6594b2671cb3d9598a95c4689f2f64d08.ts @@ -0,0 +1,757 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/parser.ts + + +// deno-lint-ignore-file no-undef +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import type { Dispatcher } from "./queued_iterator.ts"; +import { DenoBuffer } from "./denobuffer.ts"; +import { TD } from "./encoders.ts"; + +export enum Kind { + OK, + ERR, + MSG, + INFO, + PING, + PONG, +} + +export interface ParserEvent { + kind: Kind; + msg?: MsgArg; + data?: Uint8Array; +} + +export function describe(e: ParserEvent): string { + let ks: string; + let data = ""; + + switch (e.kind) { + case Kind.MSG: + ks = "MSG"; + break; + case Kind.OK: + ks = "OK"; + break; + case Kind.ERR: + ks = "ERR"; + data = TD.decode(e.data); + break; + case Kind.PING: + ks = "PING"; + break; + case Kind.PONG: + ks = "PONG"; + break; + case Kind.INFO: + ks = "INFO"; + data = TD.decode(e.data); + } + return `${ks}: ${data}`; +} + +export interface MsgArg { + subject: Uint8Array; + reply?: Uint8Array; + sid: number; + hdr: number; + size: number; +} + +function newMsgArg(): MsgArg { + const ma = {} as MsgArg; + ma.sid = -1; + ma.hdr = -1; + ma.size = -1; + + return ma; +} + +const ASCII_0 = 48; +const ASCII_9 = 57; + +// This is an almost verbatim port of the Go NATS parser +// https://github.com/nats-io/nats.go/blob/master/parser.go +export class Parser { + dispatcher: Dispatcher; + state: State; + as: number; + drop: number; + hdr: number; + ma!: MsgArg; + argBuf?: DenoBuffer; + msgBuf?: DenoBuffer; + + constructor(dispatcher: Dispatcher) { + this.dispatcher = dispatcher; + this.state = State.OP_START; + this.as = 0; + this.drop = 0; + this.hdr = 0; + } + + parse(buf: Uint8Array): void { + // @ts-ignore: on node.js module is a global + if (typeof module !== "undefined" && module.exports) { + // Uint8Array.slice() copies in node it doesn't and it is faster + buf.subarray = buf.slice; + } + + let i: number; + for (i = 0; i < buf.length; i++) { + const b = buf[i]; + switch (this.state) { + case State.OP_START: + switch (b) { + case cc.M: + case cc.m: + this.state = State.OP_M; + this.hdr = -1; + this.ma = newMsgArg(); + break; + case cc.H: + case cc.h: + this.state = State.OP_H; + this.hdr = 0; + this.ma = newMsgArg(); + break; + case cc.P: + case cc.p: + this.state = State.OP_P; + break; + case cc.PLUS: + this.state = State.OP_PLUS; + break; + case cc.MINUS: + this.state = State.OP_MINUS; + break; + case cc.I: + case cc.i: + this.state = State.OP_I; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_H: + switch (b) { + case cc.M: + case cc.m: + this.state = State.OP_M; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_M: + switch (b) { + case cc.S: + case cc.s: + this.state = State.OP_MS; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MS: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_MSG; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MSG: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_MSG_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MSG_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.MSG_ARG; + this.as = i; + } + break; + case State.MSG_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: { + const arg: Uint8Array = this.argBuf + ? this.argBuf.bytes() + : buf.subarray(this.as, i - this.drop); + this.processMsgArgs(arg); + this.drop = 0; + this.as = i + 1; + this.state = State.MSG_PAYLOAD; + + // jump ahead with the index. If this overruns + // what is left we fall out and process a split buffer. + i = this.as + this.ma.size - 1; + break; + } + default: + if (this.argBuf) { + this.argBuf.writeByte(b); + } + } + break; + case State.MSG_PAYLOAD: + if (this.msgBuf) { + if (this.msgBuf.length >= this.ma.size) { + const data = this.msgBuf.bytes({ copy: false }); + this.dispatcher.push( + { kind: Kind.MSG, msg: this.ma, data: data }, + ); + this.argBuf = undefined; + this.msgBuf = undefined; + this.state = State.MSG_END; + } else { + let toCopy = this.ma.size - this.msgBuf.length; + const avail = buf.length - i; + + if (avail < toCopy) { + toCopy = avail; + } + + if (toCopy > 0) { + this.msgBuf.write(buf.subarray(i, i + toCopy)); + i = (i + toCopy) - 1; + } else { + this.msgBuf.writeByte(b); + } + } + } else if (i - this.as >= this.ma.size) { + this.dispatcher.push( + { kind: Kind.MSG, msg: this.ma, data: buf.subarray(this.as, i) }, + ); + this.argBuf = undefined; + this.msgBuf = undefined; + this.state = State.MSG_END; + } + break; + case State.MSG_END: + switch (b) { + case cc.NL: + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + default: + continue; + } + break; + case State.OP_PLUS: + switch (b) { + case cc.O: + case cc.o: + this.state = State.OP_PLUS_O; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PLUS_O: + switch (b) { + case cc.K: + case cc.k: + this.state = State.OP_PLUS_OK; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PLUS_OK: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.OK }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_MINUS: + switch (b) { + case cc.E: + case cc.e: + this.state = State.OP_MINUS_E; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_E: + switch (b) { + case cc.R: + case cc.r: + this.state = State.OP_MINUS_ER; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ER: + switch (b) { + case cc.R: + case cc.r: + this.state = State.OP_MINUS_ERR; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ERR: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_MINUS_ERR_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_MINUS_ERR_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.MINUS_ERR_ARG; + this.as = i; + } + break; + case State.MINUS_ERR_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: { + let arg: Uint8Array; + if (this.argBuf) { + arg = this.argBuf.bytes(); + this.argBuf = undefined; + } else { + arg = buf.subarray(this.as, i - this.drop); + } + this.dispatcher.push({ kind: Kind.ERR, data: arg }); + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + } + default: + if (this.argBuf) { + this.argBuf.write(Uint8Array.of(b)); + } + } + break; + case State.OP_P: + switch (b) { + case cc.I: + case cc.i: + this.state = State.OP_PI; + break; + case cc.O: + case cc.o: + this.state = State.OP_PO; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PO: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_PON; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PON: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_PONG; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PONG: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.PONG }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_PI: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_PIN; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PIN: + switch (b) { + case cc.G: + case cc.g: + this.state = State.OP_PING; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_PING: + switch (b) { + case cc.NL: + this.dispatcher.push({ kind: Kind.PING }); + this.drop = 0; + this.state = State.OP_START; + break; + } + break; + case State.OP_I: + switch (b) { + case cc.N: + case cc.n: + this.state = State.OP_IN; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_IN: + switch (b) { + case cc.F: + case cc.f: + this.state = State.OP_INF; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INF: + switch (b) { + case cc.O: + case cc.o: + this.state = State.OP_INFO; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INFO: + switch (b) { + case cc.SPACE: + case cc.TAB: + this.state = State.OP_INFO_SPC; + break; + default: + throw this.fail(buf.subarray(i)); + } + break; + case State.OP_INFO_SPC: + switch (b) { + case cc.SPACE: + case cc.TAB: + continue; + default: + this.state = State.INFO_ARG; + this.as = i; + } + break; + case State.INFO_ARG: + switch (b) { + case cc.CR: + this.drop = 1; + break; + case cc.NL: { + let arg: Uint8Array; + if (this.argBuf) { + arg = this.argBuf.bytes(); + this.argBuf = undefined; + } else { + arg = buf.subarray(this.as, i - this.drop); + } + this.dispatcher.push({ kind: Kind.INFO, data: arg }); + this.drop = 0; + this.as = i + 1; + this.state = State.OP_START; + break; + } + default: + if (this.argBuf) { + this.argBuf.writeByte(b); + } + } + break; + default: + throw this.fail(buf.subarray(i)); + } + } + + if ( + (this.state === State.MSG_ARG || this.state === State.MINUS_ERR_ARG || + this.state === State.INFO_ARG) && !this.argBuf + ) { + this.argBuf = new DenoBuffer(buf.subarray(this.as, i - this.drop)); + } + + if (this.state === State.MSG_PAYLOAD && !this.msgBuf) { + if (!this.argBuf) { + this.cloneMsgArg(); + } + this.msgBuf = new DenoBuffer(buf.subarray(this.as)); + } + } + + cloneMsgArg() { + const s = this.ma.subject.length; + const r = this.ma.reply ? this.ma.reply.length : 0; + const buf = new Uint8Array(s + r); + buf.set(this.ma.subject); + if (this.ma.reply) { + buf.set(this.ma.reply, s); + } + this.argBuf = new DenoBuffer(buf); + this.ma.subject = buf.subarray(0, s); + if (this.ma.reply) { + this.ma.reply = buf.subarray(r); + } + } + + processMsgArgs(arg: Uint8Array): void { + if (this.hdr >= 0) { + return this.processHeaderMsgArgs(arg); + } + + const args: Uint8Array[] = []; + let start = -1; + for (let i = 0; i < arg.length; i++) { + const b = arg[i]; + switch (b) { + case cc.SPACE: + case cc.TAB: + case cc.CR: + case cc.NL: + if (start >= 0) { + args.push(arg.subarray(start, i)); + start = -1; + } + break; + default: + if (start < 0) { + start = i; + } + } + } + if (start >= 0) { + args.push(arg.subarray(start)); + } + + switch (args.length) { + case 3: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = undefined; + this.ma.size = this.protoParseInt(args[2]); + break; + case 4: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = args[2]; + this.ma.size = this.protoParseInt(args[3]); + break; + default: + throw this.fail(arg, "processMsgArgs Parse Error"); + } + + if (this.ma.sid < 0) { + throw this.fail(arg, "processMsgArgs Bad or Missing Sid Error"); + } + if (this.ma.size < 0) { + throw this.fail(arg, "processMsgArgs Bad or Missing Size Error"); + } + } + + fail(data: Uint8Array, label = ""): Error { + if (!label) { + label = `parse error [${this.state}]`; + } else { + label = `${label} [${this.state}]`; + } + + return new Error(`${label}: ${TD.decode(data)}`); + } + + processHeaderMsgArgs(arg: Uint8Array): void { + const args: Uint8Array[] = []; + let start = -1; + for (let i = 0; i < arg.length; i++) { + const b = arg[i]; + switch (b) { + case cc.SPACE: + case cc.TAB: + case cc.CR: + case cc.NL: + if (start >= 0) { + args.push(arg.subarray(start, i)); + start = -1; + } + break; + default: + if (start < 0) { + start = i; + } + } + } + if (start >= 0) { + args.push(arg.subarray(start)); + } + + switch (args.length) { + case 4: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = undefined; + this.ma.hdr = this.protoParseInt(args[2]); + this.ma.size = this.protoParseInt(args[3]); + break; + case 5: + this.ma.subject = args[0]; + this.ma.sid = this.protoParseInt(args[1]); + this.ma.reply = args[2]; + this.ma.hdr = this.protoParseInt(args[3]); + this.ma.size = this.protoParseInt(args[4]); + break; + default: + throw this.fail(arg, "processHeaderMsgArgs Parse Error"); + } + + if (this.ma.sid < 0) { + throw this.fail(arg, "processHeaderMsgArgs Bad or Missing Sid Error"); + } + if (this.ma.hdr < 0 || this.ma.hdr > this.ma.size) { + throw this.fail( + arg, + "processHeaderMsgArgs Bad or Missing Header Size Error", + ); + } + if (this.ma.size < 0) { + throw this.fail(arg, "processHeaderMsgArgs Bad or Missing Size Error"); + } + } + + protoParseInt(a: Uint8Array): number { + if (a.length === 0) { + return -1; + } + let n = 0; + for (let i = 0; i < a.length; i++) { + if (a[i] < ASCII_0 || a[i] > ASCII_9) { + return -1; + } + n = n * 10 + (a[i] - ASCII_0); + } + return n; + } +} + +export enum State { + OP_START = 0, + OP_PLUS, + OP_PLUS_O, + OP_PLUS_OK, + OP_MINUS, + OP_MINUS_E, + OP_MINUS_ER, + OP_MINUS_ERR, + OP_MINUS_ERR_SPC, + MINUS_ERR_ARG, + OP_M, + OP_MS, + OP_MSG, + OP_MSG_SPC, + MSG_ARG, + MSG_PAYLOAD, + MSG_END, + OP_H, + OP_P, + OP_PI, + OP_PIN, + OP_PING, + OP_PO, + OP_PON, + OP_PONG, + OP_I, + OP_IN, + OP_INF, + OP_INFO, + OP_INFO_SPC, + INFO_ARG, +} + +enum cc { + CR = "\r".charCodeAt(0), + E = "E".charCodeAt(0), + e = "e".charCodeAt(0), + F = "F".charCodeAt(0), + f = "f".charCodeAt(0), + G = "G".charCodeAt(0), + g = "g".charCodeAt(0), + H = "H".charCodeAt(0), + h = "h".charCodeAt(0), + I = "I".charCodeAt(0), + i = "i".charCodeAt(0), + K = "K".charCodeAt(0), + k = "k".charCodeAt(0), + M = "M".charCodeAt(0), + m = "m".charCodeAt(0), + MINUS = "-".charCodeAt(0), + N = "N".charCodeAt(0), + n = "n".charCodeAt(0), + NL = "\n".charCodeAt(0), + O = "O".charCodeAt(0), + o = "o".charCodeAt(0), + P = "P".charCodeAt(0), + p = "p".charCodeAt(0), + PLUS = "+".charCodeAt(0), + R = "R".charCodeAt(0), + r = "r".charCodeAt(0), + S = "S".charCodeAt(0), + s = "s".charCodeAt(0), + SPACE = " ".charCodeAt(0), + TAB = "\t".charCodeAt(0), +} diff --git a/bundler/tests/.cache/untrusted/e7761aaa669ace0327d728aba218b76206525068.ts b/bundler/tests/.cache/untrusted/e7761aaa669ace0327d728aba218b76206525068.ts new file mode 100644 index 00000000000..54251a95e45 --- /dev/null +++ b/bundler/tests/.cache/untrusted/e7761aaa669ace0327d728aba218b76206525068.ts @@ -0,0 +1,5 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/lodash@4.17.15/index.js + + +import { dew } from './index.dew.js'; +export default dew(); diff --git a/bundler/tests/.cache/untrusted/e836cc11d7e024712417bf3ca2aa950ffb22abc8.ts b/bundler/tests/.cache/untrusted/e836cc11d7e024712417bf3ca2aa950ffb22abc8.ts new file mode 100644 index 00000000000..925fefecaaf --- /dev/null +++ b/bundler/tests/.cache/untrusted/e836cc11d7e024712417bf3ca2aa950ffb22abc8.ts @@ -0,0 +1,89 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/oracle/utils.js + + +export function generateCombinedName(logger, postfix, name, subNames) { + const crypto = require('crypto'); + const limit = 30; + if (!Array.isArray(subNames)) subNames = subNames ? [subNames] : []; + const table = name.replace(/\.|-/g, '_'); + const subNamesPart = subNames.join('_'); + let result = `${table}_${ + subNamesPart.length ? subNamesPart + '_' : '' + }${postfix}`.toLowerCase(); + if (result.length > limit) { + logger.warn( + `Automatically generated name "${result}" exceeds ${limit} character ` + + `limit for Oracle. Using base64 encoded sha1 of that name instead.` + ); + // generates the sha1 of the name and encode it with base64 + result = crypto + .createHash('sha1') + .update(result) + .digest('base64') + .replace('=', ''); + } + return result; +} + +export function wrapSqlWithCatch(sql, errorNumberToCatch) { + return ( + `begin execute immediate '${sql.replace(/'/g, "''")}'; ` + + `exception when others then if sqlcode != ${errorNumberToCatch} then raise; ` + + `end if; ` + + `end;` + ); +} + +export function ReturningHelper(columnName) { + this.columnName = columnName; +} + +ReturningHelper.prototype.toString = function () { + return `[object ReturningHelper:${this.columnName}]`; +}; + +// If the error is any of these, we'll assume we need to +// mark the connection as failed +export function isConnectionError(err) { + return [ + 'ORA-03114', // not connected to ORACLE + 'ORA-03113', // end-of-file on communication channel + 'ORA-03135', // connection lost contact + 'ORA-12514', // listener does not currently know of service requested in connect descriptor + 'ORA-00022', // invalid session ID; access denied + 'ORA-00028', // your session has been killed + 'ORA-00031', // your session has been marked for kill + 'ORA-00045', // your session has been terminated with no replay + 'ORA-00378', // buffer pools cannot be created as specified + 'ORA-00602', // internal programming exception + 'ORA-00603', // ORACLE server session terminated by fatal error + 'ORA-00609', // could not attach to incoming connection + 'ORA-01012', // not logged on + 'ORA-01041', // internal error. hostdef extension doesn't exist + 'ORA-01043', // user side memory corruption + 'ORA-01089', // immediate shutdown or close in progress + 'ORA-01092', // ORACLE instance terminated. Disconnection forced + 'ORA-02396', // exceeded maximum idle time, please connect again + 'ORA-03122', // attempt to close ORACLE-side window on user side + 'ORA-12153', // TNS'not connected + 'ORA-12537', // TNS'connection closed + 'ORA-12547', // TNS'lost contact + 'ORA-12570', // TNS'packet reader failure + 'ORA-12583', // TNS'no reader + 'ORA-27146', // post/wait initialization failed + 'ORA-28511', // lost RPC connection + 'ORA-56600', // an illegal OCI function call was issued + 'NJS-040', + 'NJS-024', + 'NJS-003', + ].some(function (prefix) { + return err.message.indexOf(prefix) === 0; + }); +} + +export default { + generateCombinedName, + isConnectionError, + wrapSqlWithCatch, + ReturningHelper, +}; diff --git a/bundler/tests/.cache/untrusted/ea16ec5dfbfc6beb49a1dfdd2cb929aea46de31d.ts b/bundler/tests/.cache/untrusted/ea16ec5dfbfc6beb49a1dfdd2cb929aea46de31d.ts new file mode 100644 index 00000000000..2062745a809 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ea16ec5dfbfc6beb49a1dfdd2cb929aea46de31d.ts @@ -0,0 +1,159 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/sqlite3/schema/tablecompiler.js + + +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import TableCompiler from '../../../schema/tablecompiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const filter = _.filter; +const values = _.values; + +// Table Compiler +// ------- + +function TableCompiler_SQLite3() { + TableCompiler.apply(this, arguments); + this.primaryKey = void 0; +} +inherits(TableCompiler_SQLite3, TableCompiler); + +// Create a new table. +TableCompiler_SQLite3.prototype.createQuery = function (columns, ifNot) { + const createStatement = ifNot + ? 'create table if not exists ' + : 'create table '; + let sql = createStatement + this.tableName() + ' (' + columns.sql.join(', '); + + // SQLite forces primary keys to be added when the table is initially created + // so we will need to check for a primary key commands and add the columns + // to the table's declaration here so they can be created on the tables. + sql += this.foreignKeys() || ''; + sql += this.primaryKeys() || ''; + sql += ')'; + + this.pushQuery(sql); +}; + +TableCompiler_SQLite3.prototype.addColumns = function (columns, prefix) { + if (prefix) { + throw new Error('Sqlite does not support alter column.'); + } + for (let i = 0, l = columns.sql.length; i < l; i++) { + this.pushQuery({ + sql: `alter table ${this.tableName()} add column ${columns.sql[i]}`, + bindings: columns.bindings[i], + }); + } +}; + +// Compile a drop unique key command. +TableCompiler_SQLite3.prototype.dropUnique = function (columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, columns); + this.pushQuery(`drop index ${indexName}`); +}; + +TableCompiler_SQLite3.prototype.dropIndex = function (columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + this.pushQuery(`drop index ${indexName}`); +}; + +// Compile a unique key command. +TableCompiler_SQLite3.prototype.unique = function (columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('unique', this.tableNameRaw, columns); + columns = this.formatter.columnize(columns); + this.pushQuery( + `create unique index ${indexName} on ${this.tableName()} (${columns})` + ); +}; + +// Compile a plain index key command. +TableCompiler_SQLite3.prototype.index = function (columns, indexName) { + indexName = indexName + ? this.formatter.wrap(indexName) + : this._indexCommand('index', this.tableNameRaw, columns); + columns = this.formatter.columnize(columns); + this.pushQuery( + `create index ${indexName} on ${this.tableName()} (${columns})` + ); +}; + +TableCompiler_SQLite3.prototype.primary = TableCompiler_SQLite3.prototype.foreign = function () { + if (this.method !== 'create' && this.method !== 'createIfNot') { + this.client.logger.warn( + 'SQLite3 Foreign & Primary keys may only be added on create' + ); + } +}; + +TableCompiler_SQLite3.prototype.primaryKeys = function () { + const pks = filter(this.grouped.alterTable || [], { method: 'primary' }); + if (pks.length > 0 && pks[0].args.length > 0) { + const columns = pks[0].args[0]; + let constraintName = pks[0].args[1] || ''; + if (constraintName) { + constraintName = ' constraint ' + this.formatter.wrap(constraintName); + } + return `,${constraintName} primary key (${this.formatter.columnize( + columns + )})`; + } +}; + +TableCompiler_SQLite3.prototype.foreignKeys = function () { + let sql = ''; + const foreignKeys = filter(this.grouped.alterTable || [], { + method: 'foreign', + }); + for (let i = 0, l = foreignKeys.length; i < l; i++) { + const foreign = foreignKeys[i].args[0]; + const column = this.formatter.columnize(foreign.column); + const references = this.formatter.columnize(foreign.references); + const foreignTable = this.formatter.wrap(foreign.inTable); + let constraintName = foreign.keyName || ''; + if (constraintName) { + constraintName = ' constraint ' + this.formatter.wrap(constraintName); + } + sql += `,${constraintName} foreign key(${column}) references ${foreignTable}(${references})`; + if (foreign.onDelete) sql += ` on delete ${foreign.onDelete}`; + if (foreign.onUpdate) sql += ` on update ${foreign.onUpdate}`; + } + return sql; +}; + +TableCompiler_SQLite3.prototype.createTableBlock = function () { + return this.getColumns().concat().join(','); +}; + +// Compile a rename column command... very complex in sqlite +TableCompiler_SQLite3.prototype.renameColumn = function (from, to) { + const compiler = this; + this.pushQuery({ + sql: `PRAGMA table_info(${this.tableName()})`, + output(pragma) { + return compiler.client + .ddl(compiler, pragma, this.connection) + .renameColumn(from, to); + }, + }); +}; + +TableCompiler_SQLite3.prototype.dropColumn = function () { + const compiler = this; + const columns = values(arguments); + this.pushQuery({ + sql: `PRAGMA table_info(${this.tableName()})`, + output(pragma) { + return compiler.client + .ddl(compiler, pragma, this.connection) + .dropColumn(columns); + }, + }); +}; + +export default TableCompiler_SQLite3; diff --git a/bundler/tests/.cache/untrusted/ea521ffe8dfdeca48e8e923391f0127716410f4b.ts b/bundler/tests/.cache/untrusted/ea521ffe8dfdeca48e8e923391f0127716410f4b.ts new file mode 100644 index 00000000000..f10db343776 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ea521ffe8dfdeca48e8e923391f0127716410f4b.ts @@ -0,0 +1,81 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/compressedObject.dew.js + + +import { dew as _externalDewDew } from "./external.dew.js"; +import { dew as _DataWorkerDewDew } from "./stream/DataWorker.dew.js"; +import { dew as _DataLengthProbeDewDew } from "./stream/DataLengthProbe.dew.js"; +import { dew as _Crc32ProbeDewDew } from "./stream/Crc32Probe.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var external = _externalDewDew(); + + var DataWorker = _DataWorkerDewDew(); + + var DataLengthProbe = _DataLengthProbeDewDew(); + + var Crc32Probe = _Crc32ProbeDewDew(); + + var DataLengthProbe = _DataLengthProbeDewDew(); + /** + * Represent a compressed object, with everything needed to decompress it. + * @constructor + * @param {number} compressedSize the size of the data compressed. + * @param {number} uncompressedSize the size of the data after decompression. + * @param {number} crc32 the crc32 of the decompressed file. + * @param {object} compression the type of compression, see lib/compressions.js. + * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data. + */ + + + function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) { + this.compressedSize = compressedSize; + this.uncompressedSize = uncompressedSize; + this.crc32 = crc32; + this.compression = compression; + this.compressedContent = data; + } + + CompressedObject.prototype = { + /** + * Create a worker to get the uncompressed content. + * @return {GenericWorker} the worker. + */ + getContentWorker: function () { + var worker = new DataWorker(external.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new DataLengthProbe("data_length")); + var that = this; + worker.on("end", function () { + if (this.streamInfo['data_length'] !== that.uncompressedSize) { + throw new Error("Bug : uncompressed data size mismatch"); + } + }); + return worker; + }, + + /** + * Create a worker to get the compressed content. + * @return {GenericWorker} the worker. + */ + getCompressedWorker: function () { + return new DataWorker(external.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); + } + }; + /** + * Chain the given worker with other workers to compress the content with the + * given compression. + * @param {GenericWorker} uncompressedWorker the worker to pipe. + * @param {Object} compression the compression object. + * @param {Object} compressionOptions the options to use when compressing. + * @return {GenericWorker} the new worker compressing the content. + */ + + CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) { + return uncompressedWorker.pipe(new Crc32Probe()).pipe(new DataLengthProbe("uncompressedSize")).pipe(compression.compressWorker(compressionOptions)).pipe(new DataLengthProbe("compressedSize")).withStreamInfo("compression", compression); + }; + + exports = CompressedObject; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/eb184010b6bf949575e2e30ca15fc217997a38e5.ts b/bundler/tests/.cache/untrusted/eb184010b6bf949575e2e30ca15fc217997a38e5.ts new file mode 100644 index 00000000000..37a9049786f --- /dev/null +++ b/bundler/tests/.cache/untrusted/eb184010b6bf949575e2e30ca15fc217997a38e5.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/process.js + + +export{a as addListener,b as argv,c as binding,d as browser,e as chdir,f as cwd,h as default,g as emit,i as env,l as listeners,n as nextTick,o as off,j as on,k as once,p as prependListener,m as prependOnceListener,r as removeAllListeners,q as removeListener,t as title,u as umask,v as version,s as versions}from'./chunk-0c2d1322.js'; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/ebc03d42e281771b76578fec132ddb6dcd7c37e6.ts b/bundler/tests/.cache/untrusted/ebc03d42e281771b76578fec132ddb6dcd7c37e6.ts new file mode 100644 index 00000000000..4689dcc8de8 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ebc03d42e281771b76578fec132ddb6dcd7c37e6.ts @@ -0,0 +1,363 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/transaction.js + + +// Transaction +// ------- +import { EventEmitter } from './deps/@jspm/core@1.1.0/nodelibs/events.js'; +import Debug from './deps/debug@4.1.1/src/index.js'; + +import makeKnex from './util/make-knex.js'; +import { callbackify } from './deps/@jspm/core@1.1.0/nodelibs/util.js'; +import { timeout, KnexTimeoutError } from './util/timeout.js'; +import finallyMixin from './util/finally-mixin.js'; + +const debug = Debug('knex:tx'); + +import _ from './deps/lodash@4.17.15/index.js'; +const uniqueId = _.uniqueId; + +// FYI: This is defined as a function instead of a constant so that +// each Transactor can have its own copy of the default config. +// This will minimize the impact of bugs that might be introduced +// if a Transactor ever mutates its config. +function DEFAULT_CONFIG() { + return { + userParams: {}, + doNotRejectOnRollback: true, + }; +} + +// Acts as a facade for a Promise, keeping the internal state +// and managing any child transactions. +class Transaction extends EventEmitter { + constructor(client, container, config = DEFAULT_CONFIG(), outerTx = null) { + super(); + this.userParams = config.userParams; + this.doNotRejectOnRollback = config.doNotRejectOnRollback; + + const txid = (this.txid = uniqueId('trx')); + + this.client = client; + this.logger = client.logger; + this.outerTx = outerTx; + this.trxClient = undefined; + this._completed = false; + this._debug = client.config && client.config.debug; + + debug( + '%s: Starting %s transaction', + txid, + outerTx ? 'nested' : 'top level' + ); + + // `this` can potentially serve as an `outerTx` for another + // Transaction. So, go ahead and establish `_lastChild` now. + this._lastChild = Promise.resolve(); + + const _previousSibling = outerTx ? outerTx._lastChild : Promise.resolve(); + + // FYI: As you will see in a moment, this Promise will be used to construct + // 2 separate Promise Chains. This ensures that each Promise Chain + // can establish its error-handling semantics without interfering + // with the other Promise Chain. + const basePromise = _previousSibling.then(() => + this._evaluateContainer(config, container) + ); + + // FYI: This is the Promise Chain for EXTERNAL use. It ensures that the + // caller must handle any exceptions that result from `basePromise`. + this._promise = basePromise.then((x) => x); + + if (outerTx) { + // FYI: This is the Promise Chain for INTERNAL use. It serves as a signal + // for when the next sibling should begin its execution. Therefore, + // exceptions are caught and ignored. + outerTx._lastChild = basePromise.catch(() => {}); + } + } + + isCompleted() { + return ( + this._completed || (this.outerTx && this.outerTx.isCompleted()) || false + ); + } + + begin(conn) { + return this.query(conn, 'BEGIN;'); + } + + savepoint(conn) { + return this.query(conn, `SAVEPOINT ${this.txid};`); + } + + commit(conn, value) { + return this.query(conn, 'COMMIT;', 1, value); + } + + release(conn, value) { + return this.query(conn, `RELEASE SAVEPOINT ${this.txid};`, 1, value); + } + + rollback(conn, error) { + return timeout(this.query(conn, 'ROLLBACK', 2, error), 5000).catch( + (err) => { + if (!(err instanceof KnexTimeoutError)) { + return Promise.reject(err); + } + this._rejecter(error); + } + ); + } + + rollbackTo(conn, error) { + return timeout( + this.query(conn, `ROLLBACK TO SAVEPOINT ${this.txid}`, 2, error), + 5000 + ).catch((err) => { + if (!(err instanceof KnexTimeoutError)) { + return Promise.reject(err); + } + this._rejecter(error); + }); + } + + query(conn, sql, status, value) { + const q = this.trxClient + .query(conn, sql) + .catch((err) => { + status = 2; + value = err; + this._completed = true; + debug('%s error running transaction query', this.txid); + }) + .then((res) => { + if (status === 1) { + this._resolver(value); + } + if (status === 2) { + if (value === undefined) { + if (this.doNotRejectOnRollback && /^ROLLBACK\b/i.test(sql)) { + this._resolver(); + return; + } + + value = new Error(`Transaction rejected with non-error: ${value}`); + } + this._rejecter(value); + } + return res; + }); + if (status === 1 || status === 2) { + this._completed = true; + } + return q; + } + + debug(enabled) { + this._debug = arguments.length ? enabled : true; + return this; + } + + async _evaluateContainer(config, container) { + return this.acquireConnection(config, (connection) => { + const trxClient = (this.trxClient = makeTxClient( + this, + this.client, + connection + )); + const init = this.client.transacting + ? this.savepoint(connection) + : this.begin(connection); + const executionPromise = new Promise((resolver, rejecter) => { + this._resolver = resolver; + this._rejecter = rejecter; + }); + + init + .then(() => { + return makeTransactor(this, connection, trxClient); + }) + .then((transactor) => { + transactor.executionPromise = executionPromise; + + // If we've returned a "thenable" from the transaction container, assume + // the rollback and commit are chained to this object's success / failure. + // Directly thrown errors are treated as automatic rollbacks. + let result; + try { + result = container(transactor); + } catch (err) { + result = Promise.reject(err); + } + if (result && result.then && typeof result.then === 'function') { + result + .then((val) => { + return transactor.commit(val); + }) + .catch((err) => { + return transactor.rollback(err); + }); + } + return null; + }) + .catch((e) => { + return this._rejecter(e); + }); + + return executionPromise; + }); + } + + // Acquire a connection and create a disposer - either using the one passed + // via config or getting one off the client. The disposer will be called once + // the original promise is marked completed. + async acquireConnection(config, cb) { + const configConnection = config && config.connection; + const connection = + configConnection || (await this.client.acquireConnection()); + + try { + connection.__knexTxId = this.txid; + return await cb(connection); + } finally { + if (!configConnection) { + debug('%s: releasing connection', this.txid); + this.client.releaseConnection(connection); + } else { + debug('%s: not releasing external connection', this.txid); + } + } + } + + then(onResolve, onReject) { + return this._promise.then(onResolve, onReject); + } + + catch(onReject) { + return this._promise.catch(onReject); + } + + asCallback(cb) { + callbackify(() => this._promise)(cb); + return this._promise; + } +} +finallyMixin(Transaction.prototype); + +// The transactor is a full featured knex object, with a "commit", a "rollback" +// and a "savepoint" function. The "savepoint" is just sugar for creating a new +// transaction. If the rollback is run inside a savepoint, it rolls back to the +// last savepoint - otherwise it rolls back the transaction. +function makeTransactor(trx, connection, trxClient) { + const transactor = makeKnex(trxClient); + + transactor.context.withUserParams = () => { + throw new Error( + 'Cannot set user params on a transaction - it can only inherit params from main knex instance' + ); + }; + + transactor.isTransaction = true; + transactor.userParams = trx.userParams || {}; + + transactor.context.transaction = function (container, options) { + if (!options) { + options = { doNotRejectOnRollback: true }; + } else if (options.doNotRejectOnRollback === undefined) { + options.doNotRejectOnRollback = true; + } + + return this._transaction(container, options, trx); + }; + + transactor.savepoint = function (container, options) { + return transactor.transaction(container, options); + }; + + if (trx.client.transacting) { + transactor.commit = (value) => trx.release(connection, value); + transactor.rollback = (error) => trx.rollbackTo(connection, error); + } else { + transactor.commit = (value) => trx.commit(connection, value); + transactor.rollback = (error) => trx.rollback(connection, error); + } + + transactor.isCompleted = () => trx.isCompleted(); + + return transactor; +} + +// We need to make a client object which always acquires the same +// connection and does not release back into the pool. +function makeTxClient(trx, client, connection) { + const trxClient = Object.create(client.constructor.prototype); + trxClient.version = client.version; + trxClient.config = client.config; + trxClient.driver = client.driver; + trxClient.connectionSettings = client.connectionSettings; + trxClient.transacting = true; + trxClient.valueForUndefined = client.valueForUndefined; + trxClient.logger = client.logger; + + trxClient.on('query', function (arg) { + trx.emit('query', arg); + client.emit('query', arg); + }); + + trxClient.on('query-error', function (err, obj) { + trx.emit('query-error', err, obj); + client.emit('query-error', err, obj); + }); + + trxClient.on('query-response', function (response, obj, builder) { + trx.emit('query-response', response, obj, builder); + client.emit('query-response', response, obj, builder); + }); + + const _query = trxClient.query; + trxClient.query = function (conn, obj) { + const completed = trx.isCompleted(); + return new Promise(function (resolve, reject) { + try { + if (conn !== connection) + throw new Error('Invalid connection for transaction query.'); + if (completed) completedError(trx, obj); + resolve(_query.call(trxClient, conn, obj)); + } catch (e) { + reject(e); + } + }); + }; + const _stream = trxClient.stream; + trxClient.stream = function (conn, obj, stream, options) { + const completed = trx.isCompleted(); + return new Promise(function (resolve, reject) { + try { + if (conn !== connection) + throw new Error('Invalid connection for transaction query.'); + if (completed) completedError(trx, obj); + resolve(_stream.call(trxClient, conn, obj, stream, options)); + } catch (e) { + reject(e); + } + }); + }; + trxClient.acquireConnection = function () { + return Promise.resolve(connection); + }; + trxClient.releaseConnection = function () { + return Promise.resolve(); + }; + + return trxClient; +} + +function completedError(trx, obj) { + const sql = typeof obj === 'string' ? obj : obj && obj.sql; + debug('%s: Transaction completed: %s', trx.txid, sql); + throw new Error( + 'Transaction query already complete, run with DEBUG=knex:tx for more info' + ); +} + +export default Transaction; diff --git a/bundler/tests/.cache/untrusted/ebd7df6a9fcdca9d939508c800286a9f874e2409.ts b/bundler/tests/.cache/untrusted/ebd7df6a9fcdca9d939508c800286a9f874e2409.ts new file mode 100644 index 00000000000..cb2c059b5c5 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ebd7df6a9fcdca9d939508c800286a9f874e2409.ts @@ -0,0 +1,193 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/debug@4.1.1/src/browser.dew.js + + +import { dew as _commonDewDew } from "./common.dew.js"; +import _process from "../../@jspm/core@1.1.0/nodelibs/process.js"; +var exports = {}, + _dewExec = false; + +var _global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : global; + +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + var process = _process; + + /* eslint-env browser */ + + /** + * This is the web browser implementation of `debug()`. + */ + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = localstorage(); + /** + * Colors. + */ + + exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33']; + /** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + // eslint-disable-next-line complexity + + function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } // Internet Explorer and Edge do not support colors. + + + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + + + return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + /** + * Colorize log arguments if enabled. + * + * @api public + */ + + + function formatArgs(args) { + args[0] = ((this || _global).useColors ? '%c' : '') + (this || _global).namespace + ((this || _global).useColors ? ' %c' : ' ') + args[0] + ((this || _global).useColors ? '%c ' : ' ') + '+' + exports.humanize((this || _global).diff); + + if (!(this || _global).useColors) { + return; + } + + const c = 'color: ' + (this || _global).color; + args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + + index++; + + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + /** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + + function log(...args) { + // This hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return typeof console === 'object' && console.log && console.log(...args); + } + /** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + + function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } + } + /** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + + function load() { + let r; + + try { + r = exports.storage.getItem('debug'); + } catch (error) {} // Swallow + // XXX (@Qix-) should we be logging these? + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + + + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; + } + /** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + + + function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) {// Swallow + // XXX (@Qix-) should we be logging these? + } + } + + exports = _commonDewDew()(exports); + const { + formatters + } = exports; + /** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + + formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } + }; + + return exports; +} diff --git a/bundler/tests/.cache/untrusted/ed924f056ccf4f41cfe445aba2968559ea260c1b.ts b/bundler/tests/.cache/untrusted/ed924f056ccf4f41cfe445aba2968559ea260c1b.ts new file mode 100644 index 00000000000..3de9456c150 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ed924f056ccf4f41cfe445aba2968559ea260c1b.ts @@ -0,0 +1,72 @@ +// Loaded from https://dev.jspm.io/npm:pako@1.0.11/lib/zlib/constants.dew.js + + +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + exports = { + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + //Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + + /* The deflate compression method */ + Z_DEFLATED: 8 //Z_NULL: null // Use -1 or null inline, depending on var type + + }; + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/ee56a4a15255cee584fb7fb7fbca5c6e957ff8be.ts b/bundler/tests/.cache/untrusted/ee56a4a15255cee584fb7fb7fbca5c6e957ff8be.ts new file mode 100644 index 00000000000..d3a6e4648ae --- /dev/null +++ b/bundler/tests/.cache/untrusted/ee56a4a15255cee584fb7fb7fbca5c6e957ff8be.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/events.js + + +var e,t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this);}e=o,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function u(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function f(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function v(e,t,n,r){var i,o,s,v;if(u(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),s=o[t]),void 0===s)s=o[t]=n,++e._eventsCount;else if("function"==typeof s?s=o[t]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),(i=f(e))>0&&s.length>i&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,v=a,console&&console.warn&&console.warn(v);}return e}function a(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=a.bind(r);return i.listener=n,r.wrapFn=i,i}function h(e,t,n){var r=e._events;if(void 0===r)return [];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(s=t[0]),s instanceof Error)throw s;var u=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw u.context=s,u}var f=o[e];if(void 0===f)return !1;if("function"==typeof f)r(f,this,t);else {var v=f.length,a=c(f,v);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){s=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():!function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return "function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},o.prototype.listenerCount=p,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};var y=e;var EventEmitter=y.EventEmitter;var defaultMaxListeners=y.defaultMaxListeners;var init=y.init;var listenerCount=y.listenerCount;export default y;export{EventEmitter,defaultMaxListeners,init,listenerCount}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/ef32fd758010dac8c1b177b2bb34b6ddd41efb06.ts b/bundler/tests/.cache/untrusted/ef32fd758010dac8c1b177b2bb34b6ddd41efb06.ts new file mode 100644 index 00000000000..f12f7170766 --- /dev/null +++ b/bundler/tests/.cache/untrusted/ef32fd758010dac8c1b177b2bb34b6ddd41efb06.ts @@ -0,0 +1,23 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/redshift/schema/columnbuilder.js + + +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import ColumnBuilder from '../../../schema/columnbuilder.js'; + +function ColumnBuilder_Redshift() { + ColumnBuilder.apply(this, arguments); +} +inherits(ColumnBuilder_Redshift, ColumnBuilder); + +// primary needs to set not null on non-preexisting columns, or fail +ColumnBuilder_Redshift.prototype.primary = function () { + this.notNullable(); + return ColumnBuilder.prototype.primary.apply(this, arguments); +}; + +ColumnBuilder_Redshift.prototype.index = function () { + this.client.logger.warn('Redshift does not support the creation of indexes.'); + return this; +}; + +export default ColumnBuilder_Redshift; diff --git a/bundler/tests/.cache/untrusted/efd087fd0e48d1cf6a607afeb3d76486ccc997ac.ts b/bundler/tests/.cache/untrusted/efd087fd0e48d1cf6a607afeb3d76486ccc997ac.ts new file mode 100644 index 00000000000..b29a6fc037d --- /dev/null +++ b/bundler/tests/.cache/untrusted/efd087fd0e48d1cf6a607afeb3d76486ccc997ac.ts @@ -0,0 +1,236 @@ +// Loaded from https://unpkg.com/luxon@1.25.0/src/impl/english.js + + +import * as Formats from "./formats.js"; +import { pick } from "./util.js"; + +function stringify(obj) { + return JSON.stringify(obj, Object.keys(obj).sort()); +} + +/** + * @private + */ + +export const monthsLong = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" +]; + +export const monthsShort = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" +]; + +export const monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]; + +export function months(length) { + switch (length) { + case "narrow": + return monthsNarrow; + case "short": + return monthsShort; + case "long": + return monthsLong; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; + case "2-digit": + return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; + default: + return null; + } +} + +export const weekdaysLong = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" +]; + +export const weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + +export const weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"]; + +export function weekdays(length) { + switch (length) { + case "narrow": + return weekdaysNarrow; + case "short": + return weekdaysShort; + case "long": + return weekdaysLong; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7"]; + default: + return null; + } +} + +export const meridiems = ["AM", "PM"]; + +export const erasLong = ["Before Christ", "Anno Domini"]; + +export const erasShort = ["BC", "AD"]; + +export const erasNarrow = ["B", "A"]; + +export function eras(length) { + switch (length) { + case "narrow": + return erasNarrow; + case "short": + return erasShort; + case "long": + return erasLong; + default: + return null; + } +} + +export function meridiemForDateTime(dt) { + return meridiems[dt.hour < 12 ? 0 : 1]; +} + +export function weekdayForDateTime(dt, length) { + return weekdays(length)[dt.weekday - 1]; +} + +export function monthForDateTime(dt, length) { + return months(length)[dt.month - 1]; +} + +export function eraForDateTime(dt, length) { + return eras(length)[dt.year < 0 ? 0 : 1]; +} + +export function formatRelativeTime(unit, count, numeric = "always", narrow = false) { + const units = { + years: ["year", "yr."], + quarters: ["quarter", "qtr."], + months: ["month", "mo."], + weeks: ["week", "wk."], + days: ["day", "day", "days"], + hours: ["hour", "hr."], + minutes: ["minute", "min."], + seconds: ["second", "sec."] + }; + + const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; + + if (numeric === "auto" && lastable) { + const isDay = unit === "days"; + switch (count) { + case 1: + return isDay ? "tomorrow" : `next ${units[unit][0]}`; + case -1: + return isDay ? "yesterday" : `last ${units[unit][0]}`; + case 0: + return isDay ? "today" : `this ${units[unit][0]}`; + default: // fall through + } + } + + const isInPast = Object.is(count, -0) || count < 0, + fmtValue = Math.abs(count), + singular = fmtValue === 1, + lilUnits = units[unit], + fmtUnit = narrow + ? singular + ? lilUnits[1] + : lilUnits[2] || lilUnits[1] + : singular + ? units[unit][0] + : unit; + return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`; +} + +export function formatString(knownFormat) { + // these all have the offsets removed because we don't have access to them + // without all the intl stuff this is backfilling + const filtered = pick(knownFormat, [ + "weekday", + "era", + "year", + "month", + "day", + "hour", + "minute", + "second", + "timeZoneName", + "hour12" + ]), + key = stringify(filtered), + dateTimeHuge = "EEEE, LLLL d, yyyy, h:mm a"; + switch (key) { + case stringify(Formats.DATE_SHORT): + return "M/d/yyyy"; + case stringify(Formats.DATE_MED): + return "LLL d, yyyy"; + case stringify(Formats.DATE_MED_WITH_WEEKDAY): + return "EEE, LLL d, yyyy"; + case stringify(Formats.DATE_FULL): + return "LLLL d, yyyy"; + case stringify(Formats.DATE_HUGE): + return "EEEE, LLLL d, yyyy"; + case stringify(Formats.TIME_SIMPLE): + return "h:mm a"; + case stringify(Formats.TIME_WITH_SECONDS): + return "h:mm:ss a"; + case stringify(Formats.TIME_WITH_SHORT_OFFSET): + return "h:mm a"; + case stringify(Formats.TIME_WITH_LONG_OFFSET): + return "h:mm a"; + case stringify(Formats.TIME_24_SIMPLE): + return "HH:mm"; + case stringify(Formats.TIME_24_WITH_SECONDS): + return "HH:mm:ss"; + case stringify(Formats.TIME_24_WITH_SHORT_OFFSET): + return "HH:mm"; + case stringify(Formats.TIME_24_WITH_LONG_OFFSET): + return "HH:mm"; + case stringify(Formats.DATETIME_SHORT): + return "M/d/yyyy, h:mm a"; + case stringify(Formats.DATETIME_MED): + return "LLL d, yyyy, h:mm a"; + case stringify(Formats.DATETIME_FULL): + return "LLLL d, yyyy, h:mm a"; + case stringify(Formats.DATETIME_HUGE): + return dateTimeHuge; + case stringify(Formats.DATETIME_SHORT_WITH_SECONDS): + return "M/d/yyyy, h:mm:ss a"; + case stringify(Formats.DATETIME_MED_WITH_SECONDS): + return "LLL d, yyyy, h:mm:ss a"; + case stringify(Formats.DATETIME_MED_WITH_WEEKDAY): + return "EEE, d LLL yyyy, h:mm a"; + case stringify(Formats.DATETIME_FULL_WITH_SECONDS): + return "LLLL d, yyyy, h:mm:ss a"; + case stringify(Formats.DATETIME_HUGE_WITH_SECONDS): + return "EEEE, LLLL d, yyyy, h:mm:ss a"; + default: + return dateTimeHuge; + } +} diff --git a/bundler/tests/.cache/untrusted/f05a5f4999bdb9f5cdcb08a34627fb1c7c03fee9.ts b/bundler/tests/.cache/untrusted/f05a5f4999bdb9f5cdcb08a34627fb1c7c03fee9.ts new file mode 100644 index 00000000000..a98bb20d4b4 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f05a5f4999bdb9f5cdcb08a34627fb1c7c03fee9.ts @@ -0,0 +1,26 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/bigint.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodBigIntDef extends ZodTypeDef { + t: ZodTypes.bigint; +} + +export class ZodBigInt extends ZodType { + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + toJSON = () => this._def; + + static create = (): ZodBigInt => { + return new ZodBigInt({ + t: ZodTypes.bigint, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/f0f2dea4a5609fd5ea2df8fd2884e1cd43b1ef18.ts b/bundler/tests/.cache/untrusted/f0f2dea4a5609fd5ea2df8fd2884e1cd43b1ef18.ts new file mode 100644 index 00000000000..224e43c91ee --- /dev/null +++ b/bundler/tests/.cache/untrusted/f0f2dea4a5609fd5ea2df8fd2884e1cd43b1ef18.ts @@ -0,0 +1,14 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/validate.ts + + +export function validateBase64(s: string) { + if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s)) { + throw new TypeError('invalid base64 string'); + } +} + +export function validateHex(s: string) { + if (!/^(?:[A-Fa-f0-9]{2})+$/.test(s)) { + throw new TypeError('invalid hex string'); + } +} diff --git a/bundler/tests/.cache/untrusted/f1dae189eb48ebd5cbc7be7a51ed4f2fdbcecd44.ts b/bundler/tests/.cache/untrusted/f1dae189eb48ebd5cbc7be7a51ed4f2fdbcecd44.ts new file mode 100644 index 00000000000..11bfcf552bd --- /dev/null +++ b/bundler/tests/.cache/untrusted/f1dae189eb48ebd5cbc7be7a51ed4f2fdbcecd44.ts @@ -0,0 +1,47 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/intersection.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; + +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodIntersectionDef< + T extends ZodTypeAny = ZodTypeAny, + U extends ZodTypeAny = ZodTypeAny +> extends ZodTypeDef { + t: ZodTypes.intersection; + left: T; + right: U; +} + +export class ZodIntersection< + T extends ZodTypeAny, + U extends ZodTypeAny +> extends ZodType< + T["_output"] & U["_output"], + ZodIntersectionDef, + T["_input"] & U["_input"] +> { + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + toJSON = () => ({ + t: this._def.t, + left: this._def.left.toJSON(), + right: this._def.right.toJSON(), + }); + + static create = ( + left: T, + right: U + ): ZodIntersection => { + return new ZodIntersection({ + t: ZodTypes.intersection, + left: left, + right: right, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/f1f51b95991cf87a4899eb8d732f6b822e448cbb.ts b/bundler/tests/.cache/untrusted/f1f51b95991cf87a4899eb8d732f6b822e448cbb.ts new file mode 100644 index 00000000000..0d0015b1b70 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f1f51b95991cf87a4899eb8d732f6b822e448cbb.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/convert.ts + + +export * from './server/convert.ts'; diff --git a/bundler/tests/.cache/untrusted/f2463d7a9be98bc3420fe49dc40a4fdbed47faea.ts b/bundler/tests/.cache/untrusted/f2463d7a9be98bc3420fe49dc40a4fdbed47faea.ts new file mode 100644 index 00000000000..6cdb26695df --- /dev/null +++ b/bundler/tests/.cache/untrusted/f2463d7a9be98bc3420fe49dc40a4fdbed47faea.ts @@ -0,0 +1,69 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/transformer.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; + +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodTransformerDef + extends ZodTypeDef { + t: ZodTypes.transformer; + schema: T; + // transforms: (arg: T["_output"]) => U["_input"]; +} + +export class ZodTransformer< + T extends ZodTypeAny, + Output = T["_type"] +> extends ZodType, T["_input"]> { + toJSON = () => ({ + t: this._def.t, + schema: this._def.schema.toJSON(), + }); + + constructor(def: ZodTransformerDef) { + super(def); + if (def.schema instanceof ZodTransformer) { + throw new Error("ZodTransformers cannot be nested."); + } + } + + /** You can't use the .default method on transformers! */ + default: (..._args: any[]) => never = (..._args: any[]) => { + throw new Error( + "You can't use the default method on a ZodTransformer instance." + ); + }; + + // static create = ( + static create = ( + schema: I + // outputSchema?: O, + // tx?: (arg: I["_output"]) => Out | Promise + ): ZodTransformer => { + // if (schema instanceof ZodTransformer) { + // throw new Error("Can't nest transformers inside each other."); + // } + const newTx = new ZodTransformer({ + t: ZodTypes.transformer, + schema, + }); + + // if (outputSchema && tx) { + // console.warn( + // `Calling transform() with three arguments is deprecated and not recommended.` + // ); + // newTx = newTx.transform(tx).transform((val) => outputSchema.parse); + // } + return newTx; + }; + + // mod: ( + // arg: (curr: Output) => NewOut | Promise + // ) => ZodTransformer = (arg) => { + // return this.mod(arg); + // }; +} diff --git a/bundler/tests/.cache/untrusted/f26d9e5eb842479e7a6f7c4f1c95229ea2d094a4.ts b/bundler/tests/.cache/untrusted/f26d9e5eb842479e7a6f7c4f1c95229ea2d094a4.ts new file mode 100644 index 00000000000..ff21b2a5af2 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f26d9e5eb842479e7a6f7c4f1c95229ea2d094a4.ts @@ -0,0 +1,267 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mssql/query/compiler.js + + +// MSSQL Query Compiler +// ------ +import QueryCompiler from '../../../query/compiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const compact = _.compact; +const identity = _.identity; +const isEmpty = _.isEmpty; + +const components = [ + 'columns', + 'join', + 'lock', + 'where', + 'union', + 'group', + 'having', + 'order', + 'limit', + 'offset', +]; + +class QueryCompiler_MSSQL extends QueryCompiler { + constructor(client, builder) { + super(client, builder); + this._emptyInsertValue = 'default values'; + } + + select() { + const sql = this.with(); + const statements = components.map((component) => this[component](this)); + return sql + compact(statements).join(' '); + } + + // Compiles an "insert" query, allowing for multiple + // inserts using a single query statement. + insert() { + const insertValues = this.single.insert || []; + let sql = this.with() + `insert into ${this.tableName} `; + const { returning } = this.single; + const returningSql = returning + ? this._returning('insert', returning) + ' ' + : ''; + + if (Array.isArray(insertValues)) { + if (insertValues.length === 0) { + return ''; + } + } else if (typeof insertValues === 'object' && isEmpty(insertValues)) { + return { + sql: sql + returningSql + this._emptyInsertValue, + returning, + }; + } + + const insertData = this._prepInsert(insertValues); + if (typeof insertData === 'string') { + sql += insertData; + } else { + if (insertData.columns.length) { + sql += `(${this.formatter.columnize(insertData.columns)}`; + sql += `) ${returningSql}values (`; + let i = -1; + while (++i < insertData.values.length) { + if (i !== 0) sql += '), ('; + sql += this.formatter.parameterize( + insertData.values[i], + this.client.valueForUndefined + ); + } + sql += ')'; + } else if (insertValues.length === 1 && insertValues[0]) { + sql += returningSql + this._emptyInsertValue; + } else { + sql = ''; + } + } + return { + sql, + returning, + }; + } + + // Compiles an `update` query, allowing for a return value. + update() { + const top = this.top(); + const withSQL = this.with(); + const updates = this._prepUpdate(this.single.update); + const join = this.join(); + const where = this.where(); + const order = this.order(); + const { returning } = this.single; + return { + sql: + withSQL + + `update ${top ? top + ' ' : ''}${this.tableName}` + + ' set ' + + updates.join(', ') + + (returning ? ` ${this._returning('update', returning)}` : '') + + (join ? ` from ${this.tableName} ${join}` : '') + + (where ? ` ${where}` : '') + + (order ? ` ${order}` : '') + + (!returning ? this._returning('rowcount', '@@rowcount') : ''), + returning: returning || '@@rowcount', + }; + } + + // Compiles a `delete` query. + del() { + // Make sure tableName is processed by the formatter first. + const withSQL = this.with(); + const { tableName } = this; + const wheres = this.where(); + const { returning } = this.single; + return { + sql: + withSQL + + `delete from ${tableName}` + + (returning ? ` ${this._returning('del', returning)}` : '') + + (wheres ? ` ${wheres}` : '') + + (!returning ? this._returning('rowcount', '@@rowcount') : ''), + returning: returning || '@@rowcount', + }; + } + + // Compiles the columns in the query, specifying if an item was distinct. + columns() { + let distinctClause = ''; + if (this.onlyUnions()) return ''; + const top = this.top(); + const columns = this.grouped.columns || []; + let i = -1, + sql = []; + if (columns) { + while (++i < columns.length) { + const stmt = columns[i]; + if (stmt.distinct) distinctClause = 'distinct '; + if (stmt.distinctOn) { + distinctClause = this.distinctOn(stmt.value); + continue; + } + if (stmt.type === 'aggregate') { + sql.push(...this.aggregate(stmt)); + } else if (stmt.type === 'aggregateRaw') { + sql.push(this.aggregateRaw(stmt)); + } else if (stmt.value && stmt.value.length > 0) { + sql.push(this.formatter.columnize(stmt.value)); + } + } + } + if (sql.length === 0) sql = ['*']; + + return ( + `select ${distinctClause}` + + (top ? top + ' ' : '') + + sql.join(', ') + + (this.tableName ? ` from ${this.tableName}` : '') + ); + } + + _returning(method, value) { + switch (method) { + case 'update': + case 'insert': + return value + ? `output ${this.formatter.columnizeWithPrefix('inserted.', value)}` + : ''; + case 'del': + return value + ? `output ${this.formatter.columnizeWithPrefix('deleted.', value)}` + : ''; + case 'rowcount': + return value ? ';select @@rowcount' : ''; + } + } + + // Compiles a `truncate` query. + truncate() { + return `truncate table ${this.tableName}`; + } + + forUpdate() { + // this doesn't work exacltly as it should, one should also mention index while locking + // https://stackoverflow.com/a/9818448/360060 + return 'with (UPDLOCK)'; + } + + forShare() { + // http://www.sqlteam.com/article/introduction-to-locking-in-sql-server + return 'with (HOLDLOCK)'; + } + + // Compiles a `columnInfo` query. + columnInfo() { + const column = this.single.columnInfo; + let schema = this.single.schema; + + // The user may have specified a custom wrapIdentifier function in the config. We + // need to run the identifiers through that function, but not format them as + // identifiers otherwise. + const table = this.client.customWrapIdentifier(this.single.table, identity); + + if (schema) { + schema = this.client.customWrapIdentifier(schema, identity); + } + + let sql = `select * from information_schema.columns where table_name = ? and table_catalog = ?`; + const bindings = [table, this.client.database()]; + + if (schema) { + sql += ' and table_schema = ?'; + bindings.push(schema); + } else { + sql += ` and table_schema = 'dbo'`; + } + + return { + sql, + bindings: bindings, + output(resp) { + const out = resp.reduce(function (columns, val) { + columns[val.COLUMN_NAME] = { + defaultValue: val.COLUMN_DEFAULT, + type: val.DATA_TYPE, + maxLength: val.CHARACTER_MAXIMUM_LENGTH, + nullable: val.IS_NULLABLE === 'YES', + }; + return columns; + }, {}); + return (column && out[column]) || out; + }, + }; + } + + top() { + const noLimit = !this.single.limit && this.single.limit !== 0; + const noOffset = !this.single.offset; + if (noLimit || !noOffset) return ''; + return `top (${this.formatter.parameter(this.single.limit)})`; + } + + limit() { + return ''; + } + + offset() { + const noLimit = !this.single.limit && this.single.limit !== 0; + const noOffset = !this.single.offset; + if (noOffset) return ''; + let offset = `offset ${ + noOffset ? '0' : this.formatter.parameter(this.single.offset) + } rows`; + if (!noLimit) { + offset += ` fetch next ${this.formatter.parameter( + this.single.limit + )} rows only`; + } + return offset; + } +} + +// Set the QueryBuilder & QueryCompiler on the client object, +// in case anyone wants to modify things to suit their own purposes. +export default QueryCompiler_MSSQL; diff --git a/bundler/tests/.cache/untrusted/f283fcd977e0a30371f66c1fb2dc8443133be05b.ts b/bundler/tests/.cache/untrusted/f283fcd977e0a30371f66c1fb2dc8443133be05b.ts new file mode 100644 index 00000000000..ac33786ce90 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f283fcd977e0a30371f66c1fb2dc8443133be05b.ts @@ -0,0 +1,174 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mysql/schema/columncompiler.js + + +// MySQL Column Compiler +// ------- +import inherits from '../../../deps/inherits@2.0.4/inherits.js'; +import ColumnCompiler from '../../../schema/columncompiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const isObject = _.isObject; + +function ColumnCompiler_MySQL() { + ColumnCompiler.apply(this, arguments); + this.modifiers = [ + 'unsigned', + 'nullable', + 'defaultTo', + 'comment', + 'collate', + 'first', + 'after', + ]; +} +inherits(ColumnCompiler_MySQL, ColumnCompiler); + +// Types +// ------ + +Object.assign(ColumnCompiler_MySQL.prototype, { + increments: 'int unsigned not null auto_increment primary key', + + bigincrements: 'bigint unsigned not null auto_increment primary key', + + bigint: 'bigint', + + double(precision, scale) { + if (!precision) return 'double'; + return `double(${this._num(precision, 8)}, ${this._num(scale, 2)})`; + }, + + integer(length) { + length = length ? `(${this._num(length, 11)})` : ''; + return `int${length}`; + }, + + mediumint: 'mediumint', + + smallint: 'smallint', + + tinyint(length) { + length = length ? `(${this._num(length, 1)})` : ''; + return `tinyint${length}`; + }, + + text(column) { + switch (column) { + case 'medium': + case 'mediumtext': + return 'mediumtext'; + case 'long': + case 'longtext': + return 'longtext'; + default: + return 'text'; + } + }, + + mediumtext() { + return this.text('medium'); + }, + + longtext() { + return this.text('long'); + }, + + enu(allowed) { + return `enum('${allowed.join("', '")}')`; + }, + + datetime(precision) { + if (isObject(precision)) { + ({ precision } = precision); + } + + return typeof precision === 'number' + ? `datetime(${precision})` + : 'datetime'; + }, + + timestamp(precision) { + if (isObject(precision)) { + ({ precision } = precision); + } + + return typeof precision === 'number' + ? `timestamp(${precision})` + : 'timestamp'; + }, + + time(precision) { + if (isObject(precision)) { + ({ precision } = precision); + } + + return typeof precision === 'number' ? `time(${precision})` : 'time'; + }, + + bit(length) { + return length ? `bit(${this._num(length)})` : 'bit'; + }, + + binary(length) { + return length ? `varbinary(${this._num(length)})` : 'blob'; + }, + + json() { + return 'json'; + }, + + jsonb() { + return 'json'; + }, + + // Modifiers + // ------ + + defaultTo(value) { + // MySQL defaults to null by default, but breaks down if you pass it explicitly + // Note that in MySQL versions up to 5.7, logic related to updating + // timestamps when no explicit value is passed is quite insane - https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp + if (value === null || value === undefined) { + return; + } + if ((this.type === 'json' || this.type === 'jsonb') && isObject(value)) { + // Default value for json will work only it is an expression + return `default ('${JSON.stringify(value)}')`; + } + const defaultVal = ColumnCompiler_MySQL.super_.prototype.defaultTo.apply( + this, + arguments + ); + if (this.type !== 'blob' && this.type.indexOf('text') === -1) { + return defaultVal; + } + return ''; + }, + + unsigned() { + return 'unsigned'; + }, + + comment(comment) { + if (comment && comment.length > 255) { + this.client.logger.warn( + 'Your comment is longer than the max comment length for MySQL' + ); + } + return comment && `comment '${comment}'`; + }, + + first() { + return 'first'; + }, + + after(column) { + return `after ${this.formatter.wrap(column)}`; + }, + + collate(collation) { + return collation && `collate '${collation}'`; + }, +}); + +export default ColumnCompiler_MySQL; diff --git a/bundler/tests/.cache/untrusted/f2abf7df344144030f286bfe7c0f1a05f2a2df18.ts b/bundler/tests/.cache/untrusted/f2abf7df344144030f286bfe7c0f1a05f2a2df18.ts new file mode 100644 index 00000000000..3f5f3abfe22 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f2abf7df344144030f286bfe7c0f1a05f2a2df18.ts @@ -0,0 +1,42 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/ref.js + + +import Raw from './raw.js'; + +class Ref extends Raw { + constructor(client, ref) { + super(client); + + this.ref = ref; + this._schema = null; + this._alias = null; + } + + withSchema(schema) { + this._schema = schema; + + return this; + } + + as(alias) { + this._alias = alias; + + return this; + } + + toSQL() { + const string = this._schema ? `${this._schema}.${this.ref}` : this.ref; + + const formatter = this.client.formatter(this); + + const ref = formatter.columnize(string); + + const sql = this._alias ? `${ref} as ${formatter.wrap(this._alias)}` : ref; + + this.set(sql, []); + + return super.toSQL(...arguments); + } +} + +export default Ref; diff --git a/bundler/tests/.cache/untrusted/f2cb7ec272b874426985a19f37da52118c28f61e.ts b/bundler/tests/.cache/untrusted/f2cb7ec272b874426985a19f37da52118c28f61e.ts new file mode 100644 index 00000000000..735fe1d3fdb --- /dev/null +++ b/bundler/tests/.cache/untrusted/f2cb7ec272b874426985a19f37da52118c28f61e.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/util.js + + +import {u as util}from'./chunk-dac557ba.js';import'./chunk-0c2d1322.js';var _extend=util._extend;var callbackify=util.callbackify;var debuglog=util.debuglog;var deprecate=util.deprecate;var format=util.format;var inherits=util.inherits;var inspect=util.inspect;var isArray=util.isArray;var isBoolean=util.isBoolean;var isBuffer=util.isBuffer;var isDate=util.isDate;var isError=util.isError;var isFunction=util.isFunction;var isNull=util.isNull;var isNullOrUndefined=util.isNullOrUndefined;var isNumber=util.isNumber;var isObject=util.isObject;var isPrimitive=util.isPrimitive;var isRegExp=util.isRegExp;var isString=util.isString;var isSymbol=util.isSymbol;var isUndefined=util.isUndefined;var log=util.log;var promisify=util.promisify;export default util;export{_extend,callbackify,debuglog,deprecate,format,inherits,inspect,isArray,isBoolean,isBuffer,isDate,isError,isFunction,isNull,isNullOrUndefined,isNumber,isObject,isPrimitive,isRegExp,isString,isSymbol,isUndefined,log,promisify}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/f2d7990efce4adcf010681acc0bec34f00cebd24.ts b/bundler/tests/.cache/untrusted/f2d7990efce4adcf010681acc0bec34f00cebd24.ts new file mode 100644 index 00000000000..da002fdae42 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f2d7990efce4adcf010681acc0bec34f00cebd24.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/util/noop.js + + +export default function () {}; diff --git a/bundler/tests/.cache/untrusted/f3c14f5f25498774783a63fa9c90731b382dfbcb.ts b/bundler/tests/.cache/untrusted/f3c14f5f25498774783a63fa9c90731b382dfbcb.ts new file mode 100644 index 00000000000..c9f77dedd90 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f3c14f5f25498774783a63fa9c90731b382dfbcb.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/deps/@jspm/core@1.1.0/nodelibs/punycode.js + + +const t=2147483647,o=/^xn--/,n=/[^\0-\x7E]/,e=/[\x2E\u3002\uFF0E\uFF61]/g,r={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,s=String.fromCharCode;function i(t){throw new RangeError(r[t])}function f(t,o){const n=t.split("@");let r="";n.length>1&&(r=n[0]+"@",t=n[1]);const c=function(t,o){const n=[];let e=t.length;for(;e--;)n[e]=o(t[e]);return n}((t=t.replace(e,".")).split("."),o).join(".");return r+c}function l(t){const o=[];let n=0;const e=t.length;for(;n=55296&&r<=56319&&n>1,t+=c(t/o);t>455;e+=36)t=c(t/35);return c(e+36*t/(t+38))},d=function(o){const n=[],e=o.length;let r=0,s=128,f=72,l=o.lastIndexOf("-");l<0&&(l=0);for(let t=0;t=128&&i("not-basic"),n.push(o.charCodeAt(t));for(let d=l>0?l+1:0;d=e&&i("invalid-input");const l=(u=o.charCodeAt(d++))-48<10?u-22:u-65<26?u-65:u-97<26?u-97:36;(l>=36||l>c((t-r)/n))&&i("overflow"),r+=l*n;const a=s<=f?1:s>=f+26?26:s-f;if(lc(t/h)&&i("overflow"),n*=h;}const h=n.length+1;f=a(r-l,h,0==l),c(r/h)>t-s&&i("overflow"),s+=c(r/h),r%=h,n.splice(r++,0,s);}var u;return String.fromCodePoint(...n)},h=function(o){const n=[];let e=(o=l(o)).length,r=128,f=0,d=72;for(const t of o)t<128&&n.push(s(t));let h=n.length,p=h;for(h&&n.push("-");p=r&&tc((t-f)/l)&&i("overflow"),f+=(e-r)*l,r=e;for(const e of o)if(et&&i("overflow"),e==r){let t=f;for(let o=36;;o+=36){const e=o<=d?1:o>=d+26?26:o-d;if(tString.fromCodePoint(...t)},decode:d,encode:h,toASCII:function(t){return f(t,(function(t){return n.test(t)?"xn--"+h(t):t}))},toUnicode:function(t){return f(t,(function(t){return o.test(t)?d(t.slice(4).toLowerCase()):t}))}};var decode=p.decode;var encode=p.encode;var toASCII=p.toASCII;var toUnicode=p.toUnicode;var ucs2=p.ucs2;var version=p.version;export default p;export{decode,encode,toASCII,toUnicode,ucs2,version}; \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/f415751b4a694d7b4bc2ffdc5f65e86abc872dba.ts b/bundler/tests/.cache/untrusted/f415751b4a694d7b4bc2ffdc5f65e86abc872dba.ts new file mode 100644 index 00000000000..40f9061595e --- /dev/null +++ b/bundler/tests/.cache/untrusted/f415751b4a694d7b4bc2ffdc5f65e86abc872dba.ts @@ -0,0 +1,213 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/types.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//@ts-ignore +import { NatsError } from "./error.ts"; +import type { MsgHdrs } from "./headers.ts"; +import type { Authenticator } from "./authenticator.ts"; + +export const Empty = new Uint8Array(0); + +export const Events = Object.freeze({ + DISCONNECT: "disconnect", + RECONNECT: "reconnect", + UPDATE: "update", + LDM: "ldm", +}); + +export interface Status { + type: string; + data: string | ServersChanged; +} + +export const DebugEvents = Object.freeze({ + RECONNECTING: "reconnecting", + PING_TIMER: "pingTimer", + STALE_CONNECTION: "staleConnection", +}); + +export const DEFAULT_PORT = 4222; +export const DEFAULT_HOST = "127.0.0.1"; +export const DEFAULT_HOSTPORT = `${DEFAULT_HOST}:${DEFAULT_PORT}`; + +// DISCONNECT Parameters, 2 sec wait, 10 tries +export const DEFAULT_RECONNECT_TIME_WAIT = 2 * 1000; +export const DEFAULT_MAX_RECONNECT_ATTEMPTS = 10; +export const DEFAULT_JITTER = 100; +export const DEFAULT_JITTER_TLS = 1000; + +// Ping interval +export const DEFAULT_PING_INTERVAL = 2 * 60 * 1000; // 2 minutes +export const DEFAULT_MAX_PING_OUT = 2; + +export interface ConnectFn { + (opts: ConnectionOptions): Promise; +} + +export interface NatsConnection { + info?: ServerInfo; + closed(): Promise; + close(): Promise; + publish(subject: string, data?: Uint8Array, options?: PublishOptions): void; + subscribe(subject: string, opts?: SubscriptionOptions): Subscription; + request( + subject: string, + data?: Uint8Array, + opts?: RequestOptions, + ): Promise; + flush(): Promise; + drain(): Promise; + isClosed(): boolean; + isDraining(): boolean; + getServer(): string; + status(): AsyncIterable; + stats(): Stats; +} + +export interface ConnectionOptions { + authenticator?: Authenticator; + debug?: boolean; + headers?: boolean; + maxPingOut?: number; + maxReconnectAttempts?: number; + name?: string; + noEcho?: boolean; + noRandomize?: boolean; + noResponders?: boolean; + pass?: string; + pedantic?: boolean; + pingInterval?: number; + port?: number; + reconnect?: boolean; + reconnectDelayHandler?: () => number; + reconnectJitter?: number; + reconnectJitterTLS?: number; + reconnectTimeWait?: number; + servers?: Array | string; + timeout?: number; + tls?: TlsOptions; + token?: string; + user?: string; + verbose?: boolean; + waitOnFirstConnect?: boolean; + ignoreClusterUpdates?: boolean; +} + +// these may not be supported on all environments +export interface TlsOptions { + certFile?: string; + caFile?: string; + keyFile?: string; +} + +export interface Msg { + subject: string; + sid: number; + reply?: string; + data: Uint8Array; + headers?: MsgHdrs; + + respond(data?: Uint8Array, opts?: PublishOptions): boolean; +} + +export interface SubscriptionOptions { + queue?: string; + max?: number; + timeout?: number; + callback?: (err: NatsError | null, msg: Msg) => void; +} + +export interface Base { + subject: string; + callback: (error: NatsError | null, msg: Msg) => void; + received: number; + timeout?: number | null; + max?: number | undefined; + draining: boolean; +} + +export interface ServerInfo { + auth_required?: boolean; + client_id: number; + client_ip?: string; + connect_urls?: string[]; + git_commit?: string; + go: string; + headers?: boolean; + host: string; + jetstream?: boolean; + ldm?: boolean; + max_payload: number; + nonce?: string; + port: number; + proto: number; + server_id: string; + server_name: string; + tls_available?: boolean; + tls_required?: boolean; + tls_verify?: boolean; + version: string; +} + +export interface Server { + hostname: string; + port: number; + listen: string; + src: string; + tlsName: string; +} + +export interface ServersChanged { + readonly added: string[]; + readonly deleted: string[]; +} + +export interface Subscription extends AsyncIterable { + unsubscribe(max?: number): void; + drain(): Promise; + isDraining(): boolean; + isClosed(): boolean; + callback(err: NatsError | null, msg: Msg): void; + getSubject(): string; + getReceived(): number; + getProcessed(): number; + getPending(): number; + getID(): number; + getMax(): number | undefined; +} + +export interface RequestOptions { + timeout: number; + headers?: MsgHdrs; + noMux?: boolean; +} + +export interface PublishOptions { + reply?: string; + headers?: MsgHdrs; +} + +export interface Stats { + inBytes: number; + outBytes: number; + inMsgs: number; + outMsgs: number; +} + +export interface URLParseFn { + (u: string): string; +} diff --git a/bundler/tests/.cache/untrusted/f4d5881dd2abd1289a4ae2e4b3ecb1a77b22242e.ts b/bundler/tests/.cache/untrusted/f4d5881dd2abd1289a4ae2e4b3ecb1a77b22242e.ts new file mode 100644 index 00000000000..df0afc4e797 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f4d5881dd2abd1289a4ae2e4b3ecb1a77b22242e.ts @@ -0,0 +1,105 @@ +// Loaded from https://raw.githubusercontent.com/denjucks/dex/master/lib/dialects/mysql/query/compiler.js + + +// MySQL Query Compiler +// ------ +import QueryCompiler from '../../../query/compiler.js'; + +import _ from '../../../deps/lodash@4.17.15/index.js'; +const identity = _.identity; + +class QueryCompiler_MySQL extends QueryCompiler { + constructor(client, builder) { + super(client, builder); + + const { returning } = this.single; + + if (returning) { + this.client.logger.warn( + '.returning() is not supported by mysql and will not have any effect.' + ); + } + this._emptyInsertValue = '() values ()'; + } + + // Update method, including joins, wheres, order & limits. + update() { + const join = this.join(); + const updates = this._prepUpdate(this.single.update); + const where = this.where(); + const order = this.order(); + const limit = this.limit(); + return ( + `update ${this.tableName}` + + (join ? ` ${join}` : '') + + ' set ' + + updates.join(', ') + + (where ? ` ${where}` : '') + + (order ? ` ${order}` : '') + + (limit ? ` ${limit}` : '') + ); + } + + forUpdate() { + return 'for update'; + } + + forShare() { + return 'lock in share mode'; + } + + // Only supported on MySQL 8.0+ + skipLocked() { + return 'skip locked'; + } + + // Supported on MySQL 8.0+ and MariaDB 10.3.0+ + noWait() { + return 'nowait'; + } + + // Compiles a `columnInfo` query. + columnInfo() { + const column = this.single.columnInfo; + + // The user may have specified a custom wrapIdentifier function in the config. We + // need to run the identifiers through that function, but not format them as + // identifiers otherwise. + const table = this.client.customWrapIdentifier(this.single.table, identity); + + return { + sql: + 'select * from information_schema.columns where table_name = ? and table_schema = ?', + bindings: [table, this.client.database()], + output(resp) { + const out = resp.reduce(function (columns, val) { + columns[val.COLUMN_NAME] = { + defaultValue: val.COLUMN_DEFAULT, + type: val.DATA_TYPE, + maxLength: val.CHARACTER_MAXIMUM_LENGTH, + nullable: val.IS_NULLABLE === 'YES', + }; + return columns; + }, {}); + return (column && out[column]) || out; + }, + }; + } + + limit() { + const noLimit = !this.single.limit && this.single.limit !== 0; + if (noLimit && !this.single.offset) return ''; + + // Workaround for offset only. + // see: http://stackoverflow.com/questions/255517/mysql-offset-infinite-rows + const limit = + this.single.offset && noLimit + ? '18446744073709551615' + : this.formatter.parameter(this.single.limit); + return `limit ${limit}`; + } +} + +// Set the QueryBuilder & QueryCompiler on the client object, +// in case anyone wants to modify things to suit their own purposes. +export default QueryCompiler_MySQL; diff --git a/bundler/tests/.cache/untrusted/f514ad735e727ead0a412d4621ce25a3ae9be6af.ts b/bundler/tests/.cache/untrusted/f514ad735e727ead0a412d4621ce25a3ae9be6af.ts new file mode 100644 index 00000000000..8f94978dcbd --- /dev/null +++ b/bundler/tests/.cache/untrusted/f514ad735e727ead0a412d4621ce25a3ae9be6af.ts @@ -0,0 +1,156 @@ +// Loaded from https://raw.githubusercontent.com/denyncrawford/safe-filter/master/dist/index.js + + +function getAttribute(obj, key) { + var parts = key.split('.'); + for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) { + var k = parts_1[_i]; + if (obj !== null && typeof obj === 'object' && k in obj) { + obj = obj[k]; + } + else { + obj = undefined; + break; + } + } + return obj; +} + +function exists(a, shouldExist) { + var doesExist = a !== null && a !== undefined; + return shouldExist ? doesExist : !doesExist; +} + +function isEqual(a, b) { + return a === b; +} + +function greaterThan(a, b) { + return a > b; +} + +function greaterThanOrEqual(a, b) { + return a >= b; +} + +function lessThan(a, b) { + return a < b; +} + +function lessThanOrEqual(a, b) { + return a <= b; +} + +function testExpression(expr, value) { + if (typeof expr !== 'object' || expr instanceof Date) { + if (Array.isArray(value)) { + return value.some(function (v) { return isEqual(v, expr); }); + } + else { + return isEqual(expr, value); + } + } + if (expr && expr.$elemMatch) { + if (!Array.isArray(value)) { + return false; + } + if (!value.some(function (v) { return matches(expr.$elemMatch, v); })) { + return false; + } + } + else if (Array.isArray(value)) { + var _loop_1 = function (key) { + var _a; + // @ts-ignore + var partialExpr = (_a = {}, _a[key] = expr[key], _a); + var isTrue = value.some(function (v) { return matches(partialExpr, v); }); + if (!isTrue) { + return { value: false }; + } + }; + // I don't understand why they designed the language this way, but I guess we'll do it the same way. + // https://docs.mongodb.com/manual/tutorial/query-array-of-documents/#combination-of-elements-satisfies-the-criteria + for (var key in expr) { + var state_1 = _loop_1(key); + if (typeof state_1 === "object") + return state_1.value; + } + return true; + } + if ('$eq' in expr && !isEqual(value, expr.$eq)) { + return false; + } + if ('$ne' in expr && isEqual(value, expr.$ne)) { + return false; + } + if (typeof expr.$exists === 'boolean' && !exists(value, expr.$exists)) { + return false; + } + if ('$not' in expr) { + if (typeof expr.$not !== 'object' || expr.$not === null) { + throw new Error('$not needs a regex or a document'); + } + if (testExpression(expr.$not, value)) { + return false; + } + } + if (expr.$gt !== undefined && !greaterThan(value, expr.$gt)) { + return false; + } + if (expr.$lt !== undefined && !lessThan(value, expr.$lt)) { + return false; + } + if (expr.$lte !== undefined && !lessThanOrEqual(value, expr.$lte)) { + return false; + } + if (expr.$gte !== undefined && !greaterThanOrEqual(value, expr.$gte)) { + return false; + } + if (expr.$in && !expr.$in.includes(value)) { + return false; + } + if (expr.$nin && expr.$nin.includes(value)) { + return false; + } + if (expr.$regex && !(new RegExp(expr.$regex)).test(value)) { + return false; + } + return true; +} +function matches(expression, record, extractor) { + if (extractor === void 0) { extractor = getAttribute; } + if (typeof expression !== 'object' || expression instanceof Date) { + return isEqual(expression, record); + } + if (expression.$and && expression.$or) { + throw new Error('Indeterminate behavior. "$and" and "$or" operators cannot be present at the same level.'); + } + if (Array.isArray(expression.$and)) { + return expression.$and.every(function (exp) { return matches(exp, record, extractor); }); + } + else if (Array.isArray(expression.$or)) { + return expression.$or.some(function (exp) { return matches(exp, record, extractor); }); + } + else if (expression.$not) { + if (typeof expression.$not !== 'object') { + throw new Error('$not needs a regex or a document'); + } + return !matches(expression.$not, record, extractor); + } + else if (!Array.isArray(record) && typeof record === 'object') { + var expr = expression; + // Implicit AND operation if multiple root level keys provided + for (var key in expression) { + var value = extractor(record, key); + if (!testExpression(expr[key], value)) { + return false; + } + } + return true; + } + else { + return testExpression(expression, record); + } +} + +export { exists, getAttribute, greaterThan, greaterThanOrEqual, isEqual, lessThan, lessThanOrEqual, matches, testExpression }; diff --git a/bundler/tests/.cache/untrusted/f575b9cb3e9d34a889fda6a60f9351ba9bf03a9f.ts b/bundler/tests/.cache/untrusted/f575b9cb3e9d34a889fda6a60f9351ba9bf03a9f.ts new file mode 100644 index 00000000000..c5b0c9c0e22 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f575b9cb3e9d34a889fda6a60f9351ba9bf03a9f.ts @@ -0,0 +1,25 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/boolean.ts + + +import { ZodTypes } from "../ZodTypes.ts"; +import { ZodType, ZodTypeDef } from "./base.ts"; +// import { ZodUndefined } from './undefined'; +// import { ZodNull } from './null'; +// import { ZodUnion } from './union'; + +export interface ZodBooleanDef extends ZodTypeDef { + t: ZodTypes.boolean; +} + +export class ZodBoolean extends ZodType { + // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); + + // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); + + toJSON = () => this._def; + static create = (): ZodBoolean => { + return new ZodBoolean({ + t: ZodTypes.boolean, + }); + }; +} diff --git a/bundler/tests/.cache/untrusted/f5faaa2fb054ce150f0b2ecaae1271071009f380.ts b/bundler/tests/.cache/untrusted/f5faaa2fb054ce150f0b2ecaae1271071009f380.ts new file mode 100644 index 00000000000..7dab2e7f34f --- /dev/null +++ b/bundler/tests/.cache/untrusted/f5faaa2fb054ce150f0b2ecaae1271071009f380.ts @@ -0,0 +1,50 @@ +// Loaded from https://raw.githubusercontent.com/deno-postgres/deno-postgres/master/connection/packet_reader.ts + + +import { readInt16BE, readInt32BE } from "../utils.ts"; + +export class PacketReader { + private offset = 0; + private decoder: TextDecoder = new TextDecoder(); + + constructor(private buffer: Uint8Array) {} + + readInt16(): number { + const value = readInt16BE(this.buffer, this.offset); + this.offset += 2; + return value; + } + + readInt32(): number { + const value = readInt32BE(this.buffer, this.offset); + this.offset += 4; + return value; + } + + readByte(): number { + return this.readBytes(1)[0]; + } + + readBytes(length: number): Uint8Array { + const start = this.offset; + const end = start + length; + const slice = this.buffer.slice(start, end); + this.offset = end; + return slice; + } + + readString(length: number): string { + const bytes = this.readBytes(length); + return this.decoder.decode(bytes); + } + + readCString(): string { + const start = this.offset; + // find next null byte + const end = this.buffer.indexOf(0, start); + const slice = this.buffer.slice(start, end); + // add +1 for null byte + this.offset = end + 1; + return this.decoder.decode(slice); + } +} diff --git a/bundler/tests/.cache/untrusted/f60323bb8757122915c6b163629d4f947adbebff.ts b/bundler/tests/.cache/untrusted/f60323bb8757122915c6b163629d4f947adbebff.ts new file mode 100644 index 00000000000..1da5d40d974 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f60323bb8757122915c6b163629d4f947adbebff.ts @@ -0,0 +1,121 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/databuffer.ts + + +/* + * Copyright 2018-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TD, TE } from "./encoders.ts"; + +export class DataBuffer { + buffers: Uint8Array[]; + byteLength: number; + + constructor() { + this.buffers = []; + this.byteLength = 0; + } + + static concat(...bufs: Uint8Array[]): Uint8Array { + let max = 0; + for (let i = 0; i < bufs.length; i++) { + max += bufs[i].length; + } + const out = new Uint8Array(max); + let index = 0; + for (let i = 0; i < bufs.length; i++) { + out.set(bufs[i], index); + index += bufs[i].length; + } + return out; + } + + static fromAscii(m: string): Uint8Array { + if (!m) { + m = ""; + } + return TE.encode(m); + } + + static toAscii(a: Uint8Array): string { + return TD.decode(a); + } + + reset(): void { + this.buffers.length = 0; + this.byteLength = 0; + } + + pack(): void { + if (this.buffers.length > 1) { + const v = new Uint8Array(this.byteLength); + let index = 0; + for (let i = 0; i < this.buffers.length; i++) { + v.set(this.buffers[i], index); + index += this.buffers[i].length; + } + this.buffers.length = 0; + this.buffers.push(v); + } + } + + drain(n?: number): Uint8Array { + if (this.buffers.length) { + this.pack(); + const v = this.buffers.pop(); + if (v) { + const max = this.byteLength; + if (n === undefined || n > max) { + n = max; + } + const d = v.subarray(0, n); + if (max > n) { + this.buffers.push(v.subarray(n)); + } + this.byteLength = max - n; + return d; + } + } + return new Uint8Array(0); + } + + fill(a: Uint8Array, ...bufs: Uint8Array[]): void { + if (a) { + this.buffers.push(a); + this.byteLength += a.length; + } + for (let i = 0; i < bufs.length; i++) { + if (bufs[i] && bufs[i].length) { + this.buffers.push(bufs[i]); + this.byteLength += bufs[i].length; + } + } + } + + peek(): Uint8Array { + if (this.buffers.length) { + this.pack(); + return this.buffers[0]; + } + return new Uint8Array(0); + } + + size(): number { + return this.byteLength; + } + + length(): number { + return this.buffers.length; + } +} diff --git a/bundler/tests/.cache/untrusted/f6fb98fb1c357daeabf12a6d3eebe318a6f2f8ef.ts b/bundler/tests/.cache/untrusted/f6fb98fb1c357daeabf12a6d3eebe318a6f2f8ef.ts new file mode 100644 index 00000000000..65eaa1f48bd --- /dev/null +++ b/bundler/tests/.cache/untrusted/f6fb98fb1c357daeabf12a6d3eebe318a6f2f8ef.ts @@ -0,0 +1,4 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-12/nats-base-client/nkeys.ts + + +export * as nkeys from "https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-7/modules/esm/mod.ts"; diff --git a/bundler/tests/.cache/untrusted/f79cb0d0d972b6c91f4b35f303fedfd9e4565a60.ts b/bundler/tests/.cache/untrusted/f79cb0d0d972b6c91f4b35f303fedfd9e4565a60.ts new file mode 100644 index 00000000000..41d540f1723 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f79cb0d0d972b6c91f4b35f303fedfd9e4565a60.ts @@ -0,0 +1,109 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/flate.dew.js + + +import { dew as _npmPakoDew } from "/npm:pako@1.0?dew"; +import { dew as _utilsDewDew } from "./utils.dew.js"; +import { dew as _GenericWorkerDewDew } from "./stream/GenericWorker.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + var USE_TYPEDARRAY = typeof Uint8Array !== 'undefined' && typeof Uint16Array !== 'undefined' && typeof Uint32Array !== 'undefined'; + + var pako = _npmPakoDew(); + + var utils = _utilsDewDew(); + + var GenericWorker = _GenericWorkerDewDew(); + + var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array"; + exports.magic = "\x08\x00"; + /** + * Create a worker that uses pako to inflate/deflate. + * @constructor + * @param {String} action the name of the pako function to call : either "Deflate" or "Inflate". + * @param {Object} options the options to use when (de)compressing. + */ + + function FlateWorker(action, options) { + GenericWorker.call(this, "FlateWorker/" + action); + this._pako = null; + this._pakoAction = action; + this._pakoOptions = options; // the `meta` object from the last chunk received + // this allow this worker to pass around metadata + + this.meta = {}; + } + + utils.inherits(FlateWorker, GenericWorker); + /** + * @see GenericWorker.processChunk + */ + + FlateWorker.prototype.processChunk = function (chunk) { + this.meta = chunk.meta; + + if (this._pako === null) { + this._createPako(); + } + + this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false); + }; + /** + * @see GenericWorker.flush + */ + + + FlateWorker.prototype.flush = function () { + GenericWorker.prototype.flush.call(this); + + if (this._pako === null) { + this._createPako(); + } + + this._pako.push([], true); + }; + /** + * @see GenericWorker.cleanUp + */ + + + FlateWorker.prototype.cleanUp = function () { + GenericWorker.prototype.cleanUp.call(this); + this._pako = null; + }; + /** + * Create the _pako object. + * TODO: lazy-loading this object isn't the best solution but it's the + * quickest. The best solution is to lazy-load the worker list. See also the + * issue #446. + */ + + + FlateWorker.prototype._createPako = function () { + this._pako = new pako[this._pakoAction]({ + raw: true, + level: this._pakoOptions.level || -1 // default compression + + }); + var self = this; + + this._pako.onData = function (data) { + self.push({ + data: data, + meta: self.meta + }); + }; + }; + + exports.compressWorker = function (compressionOptions) { + return new FlateWorker("Deflate", compressionOptions); + }; + + exports.uncompressWorker = function () { + return new FlateWorker("Inflate", {}); + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/f7e7a5b04a9a64ba2476edebf6d383cb87ba3002.ts b/bundler/tests/.cache/untrusted/f7e7a5b04a9a64ba2476edebf6d383cb87ba3002.ts new file mode 100644 index 00000000000..7fc46f644e3 --- /dev/null +++ b/bundler/tests/.cache/untrusted/f7e7a5b04a9a64ba2476edebf6d383cb87ba3002.ts @@ -0,0 +1,33 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/mod.ts + + +export { + Bench, + createInbox, + credsAuthenticator, + Empty, + ErrorCode, + Events, + headers, + JSONCodec, + jwtAuthenticator, + NatsError, + nkeyAuthenticator, + Nuid, + StringCodec, +} from "./internal_mod.ts"; + +export type { + Authenticator, + Codec, + ConnectionOptions, + Msg, + MsgHdrs, + NatsConnection, + PublishOptions, + RequestOptions, + ServersChanged, + Status, + Subscription, + SubscriptionOptions, +} from "./internal_mod.ts"; diff --git a/bundler/tests/.cache/untrusted/f8b58679175fe06b73d9724a10b3865193b983fa.ts b/bundler/tests/.cache/untrusted/f8b58679175fe06b73d9724a10b3865193b983fa.ts new file mode 100644 index 00000000000..ca6cbab4c9c --- /dev/null +++ b/bundler/tests/.cache/untrusted/f8b58679175fe06b73d9724a10b3865193b983fa.ts @@ -0,0 +1,94 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/heartbeats.ts + + +/* + * Copyright 2020-2021 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Deferred, deferred } from "./util.ts"; +import { DebugEvents, Status } from "./types.ts"; + +export interface PH { + flush(p?: Deferred): Promise; + disconnect(): void; + dispatchStatus(status: Status): void; +} + +export class Heartbeat { + ph: PH; + interval: number; + maxOut: number; + timer?: number; + pendings: Promise[]; + + constructor(ph: PH, interval: number, maxOut: number) { + this.ph = ph; + this.interval = interval; + this.maxOut = maxOut; + this.pendings = []; + } + + // api to start the heartbeats, since this can be + // spuriously called from dial, ensure we don't + // leak timers + start() { + this.cancel(); + this._schedule(); + } + + // api for canceling the heartbeats, if stale is + // true it will initiate a client disconnect + cancel(stale?: boolean) { + if (this.timer) { + clearTimeout(this.timer); + this.timer = undefined; + } + this._reset(); + if (stale) { + this.ph.disconnect(); + } + } + + _schedule() { + // @ts-ignore: node is not a number - we treat this opaquely + this.timer = setTimeout(() => { + this.ph.dispatchStatus( + { type: DebugEvents.PING_TIMER, data: `${this.pendings.length + 1}` }, + ); + if (this.pendings.length === this.maxOut) { + this.cancel(true); + return; + } + const ping = deferred(); + this.ph.flush(ping) + .then(() => { + this._reset(); + }) + .catch(() => { + // we disconnected - pongs were rejected + this.cancel(); + }); + this.pendings.push(ping); + this._schedule(); + }, this.interval); + } + + _reset() { + // clear pendings after resolving them + this.pendings = this.pendings.filter((p) => { + const d = p as Deferred; + d.resolve(); + return false; + }); + } +} diff --git a/bundler/tests/.cache/untrusted/f8d35e05496e1ded607df9afd947a0e2dec505ba.ts b/bundler/tests/.cache/untrusted/f8d35e05496e1ded607df9afd947a0e2dec505ba.ts new file mode 100644 index 00000000000..f08bd32068a --- /dev/null +++ b/bundler/tests/.cache/untrusted/f8d35e05496e1ded607df9afd947a0e2dec505ba.ts @@ -0,0 +1,46 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nkeys.js/v1.0.0-9/modules/esm/deps.ts + + +// This file contains external dependencies bundled +// to insure safety on the distribution. + +// https://github.com/dchest/tweetnacl-js/blob/master/LICENSE +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. +// +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// For more information, please refer to +import type { Ed25519Helper } from "../../src/helper.ts"; + +import { + randomBytes, + sign_detached, + sign_detached_verify, + sign_keyPair_fromSeed, +} from "https://raw.githubusercontent.com/aricart/tweetnacl-deno/import-type-fixes/src/nacl.ts"; + +export const denoHelper = { + fromSeed: sign_keyPair_fromSeed, + sign: sign_detached, + verify: sign_detached_verify, + randomBytes: randomBytes, +} as Ed25519Helper; diff --git a/bundler/tests/.cache/untrusted/f93ebacfb508685d99b881c70655665034244d67.ts b/bundler/tests/.cache/untrusted/f93ebacfb508685d99b881c70655665034244d67.ts new file mode 100644 index 00000000000..7f6fec2060d --- /dev/null +++ b/bundler/tests/.cache/untrusted/f93ebacfb508685d99b881c70655665034244d67.ts @@ -0,0 +1,520 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/utils.dew.js + + +import { dew as _supportDewDew } from "./support.dew.js"; +import { dew as _base64DewDew } from "./base64.dew.js"; +import { dew as _nodejsUtilsDewDew } from "./nodejsUtils.dew.js"; +import { dew as _npmSetImmediateShimDew } from "/npm:set-immediate-shim@1.0?dew"; +import { dew as _externalDewDew } from "./external.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var support = _supportDewDew(); + + var base64 = _base64DewDew(); + + var nodejsUtils = _nodejsUtilsDewDew(); + + var setImmediate = _npmSetImmediateShimDew(); + + var external = _externalDewDew(); + /** + * Convert a string that pass as a "binary string": it should represent a byte + * array but may have > 255 char codes. Be sure to take only the first byte + * and returns the byte array. + * @param {String} str the string to transform. + * @return {Array|Uint8Array} the string in a binary format. + */ + + + function string2binary(str) { + var result = null; + + if (support.uint8array) { + result = new Uint8Array(str.length); + } else { + result = new Array(str.length); + } + + return stringToArrayLike(str, result); + } + /** + * Create a new blob with the given content and the given type. + * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use + * an Uint8Array because the stock browser of android 4 won't accept it (it + * will be silently converted to a string, "[object Uint8Array]"). + * + * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge: + * when a large amount of Array is used to create the Blob, the amount of + * memory consumed is nearly 100 times the original data amount. + * + * @param {String} type the mime type of the blob. + * @return {Blob} the created blob. + */ + + + exports.newBlob = function (part, type) { + exports.checkSupport("blob"); + + try { + // Blob constructor + return new Blob([part], { + type: type + }); + } catch (e) { + try { + // deprecated, browser only, old way + var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder; + var builder = new Builder(); + builder.append(part); + return builder.getBlob(type); + } catch (e) { + // well, fuck ?! + throw new Error("Bug : can't construct the Blob."); + } + } + }; + /** + * The identity function. + * @param {Object} input the input. + * @return {Object} the same input. + */ + + + function identity(input) { + return input; + } + /** + * Fill in an array with a string. + * @param {String} str the string to use. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated). + * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array. + */ + + + function stringToArrayLike(str, array) { + for (var i = 0; i < str.length; ++i) { + array[i] = str.charCodeAt(i) & 0xFF; + } + + return array; + } + /** + * An helper for the function arrayLikeToString. + * This contains static information and functions that + * can be optimized by the browser JIT compiler. + */ + + + var arrayToStringHelper = { + /** + * Transform an array of int into a string, chunk by chunk. + * See the performances notes on arrayLikeToString. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @param {String} type the type of the array. + * @param {Integer} chunk the chunk size. + * @return {String} the resulting string. + * @throws Error if the chunk is too big for the stack. + */ + stringifyByChunk: function (array, type, chunk) { + var result = [], + k = 0, + len = array.length; // shortcut + + if (len <= chunk) { + return String.fromCharCode.apply(null, array); + } + + while (k < len) { + if (type === "array" || type === "nodebuffer") { + result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len)))); + } else { + result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len)))); + } + + k += chunk; + } + + return result.join(""); + }, + + /** + * Call String.fromCharCode on every item in the array. + * This is the naive implementation, which generate A LOT of intermediate string. + * This should be used when everything else fail. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @return {String} the result. + */ + stringifyByChar: function (array) { + var resultStr = ""; + + for (var i = 0; i < array.length; i++) { + resultStr += String.fromCharCode(array[i]); + } + + return resultStr; + }, + applyCanBeUsed: { + /** + * true if the browser accepts to use String.fromCharCode on Uint8Array + */ + uint8array: function () { + try { + return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1; + } catch (e) { + return false; + } + }(), + + /** + * true if the browser accepts to use String.fromCharCode on nodejs Buffer. + */ + nodebuffer: function () { + try { + return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1; + } catch (e) { + return false; + } + }() + } + }; + /** + * Transform an array-like object to a string. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. + * @return {String} the result. + */ + + function arrayLikeToString(array) { + // Performances notes : + // -------------------- + // String.fromCharCode.apply(null, array) is the fastest, see + // see http://jsperf.com/converting-a-uint8array-to-a-string/2 + // but the stack is limited (and we can get huge arrays !). + // + // result += String.fromCharCode(array[i]); generate too many strings ! + // + // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2 + // TODO : we now have workers that split the work. Do we still need that ? + var chunk = 65536, + type = exports.getTypeOf(array), + canUseApply = true; + + if (type === "uint8array") { + canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array; + } else if (type === "nodebuffer") { + canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer; + } + + if (canUseApply) { + while (chunk > 1) { + try { + return arrayToStringHelper.stringifyByChunk(array, type, chunk); + } catch (e) { + chunk = Math.floor(chunk / 2); + } + } + } // no apply or chunk error : slow and painful algorithm + // default browser on android 4.* + + + return arrayToStringHelper.stringifyByChar(array); + } + + exports.applyFromCharCode = arrayLikeToString; + /** + * Copy the data from an array-like to an other array-like. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array. + * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated. + * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array. + */ + + function arrayLikeToArrayLike(arrayFrom, arrayTo) { + for (var i = 0; i < arrayFrom.length; i++) { + arrayTo[i] = arrayFrom[i]; + } + + return arrayTo; + } // a matrix containing functions to transform everything into everything. + + + var transform = {}; // string to ? + + transform["string"] = { + "string": identity, + "array": function (input) { + return stringToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function (input) { + return transform["string"]["uint8array"](input).buffer; + }, + "uint8array": function (input) { + return stringToArrayLike(input, new Uint8Array(input.length)); + }, + "nodebuffer": function (input) { + return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length)); + } + }; // array to ? + + transform["array"] = { + "string": arrayLikeToString, + "array": identity, + "arraybuffer": function (input) { + return new Uint8Array(input).buffer; + }, + "uint8array": function (input) { + return new Uint8Array(input); + }, + "nodebuffer": function (input) { + return nodejsUtils.newBufferFrom(input); + } + }; // arraybuffer to ? + + transform["arraybuffer"] = { + "string": function (input) { + return arrayLikeToString(new Uint8Array(input)); + }, + "array": function (input) { + return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength)); + }, + "arraybuffer": identity, + "uint8array": function (input) { + return new Uint8Array(input); + }, + "nodebuffer": function (input) { + return nodejsUtils.newBufferFrom(new Uint8Array(input)); + } + }; // uint8array to ? + + transform["uint8array"] = { + "string": arrayLikeToString, + "array": function (input) { + return arrayLikeToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function (input) { + return input.buffer; + }, + "uint8array": identity, + "nodebuffer": function (input) { + return nodejsUtils.newBufferFrom(input); + } + }; // nodebuffer to ? + + transform["nodebuffer"] = { + "string": arrayLikeToString, + "array": function (input) { + return arrayLikeToArrayLike(input, new Array(input.length)); + }, + "arraybuffer": function (input) { + return transform["nodebuffer"]["uint8array"](input).buffer; + }, + "uint8array": function (input) { + return arrayLikeToArrayLike(input, new Uint8Array(input.length)); + }, + "nodebuffer": identity + }; + /** + * Transform an input into any type. + * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer. + * If no output type is specified, the unmodified input will be returned. + * @param {String} outputType the output type. + * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert. + * @throws {Error} an Error if the browser doesn't support the requested output type. + */ + + exports.transformTo = function (outputType, input) { + if (!input) { + // undefined, null, etc + // an empty string won't harm. + input = ""; + } + + if (!outputType) { + return input; + } + + exports.checkSupport(outputType); + var inputType = exports.getTypeOf(input); + var result = transform[inputType][outputType](input); + return result; + }; + /** + * Return the type of the input. + * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer. + * @param {Object} input the input to identify. + * @return {String} the (lowercase) type of the input. + */ + + + exports.getTypeOf = function (input) { + if (typeof input === "string") { + return "string"; + } + + if (Object.prototype.toString.call(input) === "[object Array]") { + return "array"; + } + + if (support.nodebuffer && nodejsUtils.isBuffer(input)) { + return "nodebuffer"; + } + + if (support.uint8array && input instanceof Uint8Array) { + return "uint8array"; + } + + if (support.arraybuffer && input instanceof ArrayBuffer) { + return "arraybuffer"; + } + }; + /** + * Throw an exception if the type is not supported. + * @param {String} type the type to check. + * @throws {Error} an Error if the browser doesn't support the requested type. + */ + + + exports.checkSupport = function (type) { + var supported = support[type.toLowerCase()]; + + if (!supported) { + throw new Error(type + " is not supported by this platform"); + } + }; + + exports.MAX_VALUE_16BITS = 65535; + exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1 + + /** + * Prettify a string read as binary. + * @param {string} str the string to prettify. + * @return {string} a pretty string. + */ + + exports.pretty = function (str) { + var res = '', + code, + i; + + for (i = 0; i < (str || "").length; i++) { + code = str.charCodeAt(i); + res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase(); + } + + return res; + }; + /** + * Defer the call of a function. + * @param {Function} callback the function to call asynchronously. + * @param {Array} args the arguments to give to the callback. + */ + + + exports.delay = function (callback, args, self) { + setImmediate(function () { + callback.apply(self || null, args || []); + }); + }; + /** + * Extends a prototype with an other, without calling a constructor with + * side effects. Inspired by nodejs' `utils.inherits` + * @param {Function} ctor the constructor to augment + * @param {Function} superCtor the parent constructor to use + */ + + + exports.inherits = function (ctor, superCtor) { + var Obj = function () {}; + + Obj.prototype = superCtor.prototype; + ctor.prototype = new Obj(); + }; + /** + * Merge the objects passed as parameters into a new one. + * @private + * @param {...Object} var_args All objects to merge. + * @return {Object} a new object with the data of the others. + */ + + + exports.extend = function () { + var result = {}, + i, + attr; + + for (i = 0; i < arguments.length; i++) { + // arguments is not enumerable in some browsers + for (attr in arguments[i]) { + if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") { + result[attr] = arguments[i][attr]; + } + } + } + + return result; + }; + /** + * Transform arbitrary content into a Promise. + * @param {String} name a name for the content being processed. + * @param {Object} inputData the content to process. + * @param {Boolean} isBinary true if the content is not an unicode string + * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character. + * @param {Boolean} isBase64 true if the string content is encoded with base64. + * @return {Promise} a promise in a format usable by JSZip. + */ + + + exports.prepareContent = function (name, inputData, isBinary, isOptimizedBinaryString, isBase64) { + // if inputData is already a promise, this flatten it. + var promise = external.Promise.resolve(inputData).then(function (data) { + var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1); + + if (isBlob && typeof FileReader !== "undefined") { + return new external.Promise(function (resolve, reject) { + var reader = new FileReader(); + + reader.onload = function (e) { + resolve(e.target.result); + }; + + reader.onerror = function (e) { + reject(e.target.error); + }; + + reader.readAsArrayBuffer(data); + }); + } else { + return data; + } + }); + return promise.then(function (data) { + var dataType = exports.getTypeOf(data); + + if (!dataType) { + return external.Promise.reject(new Error("Can't read the data of '" + name + "'. Is it " + "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); + } // special case : it's way easier to work with Uint8Array than with ArrayBuffer + + + if (dataType === "arraybuffer") { + data = exports.transformTo("uint8array", data); + } else if (dataType === "string") { + if (isBase64) { + data = base64.decode(data); + } else if (isBinary) { + // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask + if (isOptimizedBinaryString !== true) { + // this is a string, not in a base64 format. + // Be sure that this is a correct "binary string" + data = string2binary(data); + } + } + } + + return data; + }); + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/fb89d886bcdee625f38ba983fc8f29cf52565280.ts b/bundler/tests/.cache/untrusted/fb89d886bcdee625f38ba983fc8f29cf52565280.ts new file mode 100644 index 00000000000..58e085e82fa --- /dev/null +++ b/bundler/tests/.cache/untrusted/fb89d886bcdee625f38ba983fc8f29cf52565280.ts @@ -0,0 +1,32 @@ +// Loaded from https://raw.githubusercontent.com/czabaj/stringify-replacers/main/utils.ts + + +import { Replacer } from "./types.d.ts"; + +export const { isArray } = Array; + +// deno-lint-ignore no-explicit-any +export const isPlainObject = (value: any): value is Record => + value && typeof value === `object` && !isArray(value); + +export const pipeSecondArg = (replacers: [Replacer, ...Replacer[]]): Replacer => + // deno-lint-ignore no-explicit-any + function (this: any, k, v) { + return replacers.reduce( + (acc, fn) => fn.call(this, k, acc), + v, + ); + }; + +export const pipeReplacers = (replacers: Replacer[]): Replacer | undefined => + replacers.length === 0 + ? undefined + : replacers.length === 1 + ? replacers[0] + : pipeSecondArg(replacers as [Replacer, ...Replacer[]]); + +/** + * Prints the type of object, must be invoked with Function#call + * e.g. printType.call([]) // => [object Array] + */ +export const printType = Object.prototype.toString; diff --git a/bundler/tests/.cache/untrusted/fb8f6692f26ef59a5d09cc02fdc9ae9b373c5ba8.ts b/bundler/tests/.cache/untrusted/fb8f6692f26ef59a5d09cc02fdc9ae9b373c5ba8.ts new file mode 100644 index 00000000000..868580bb25f --- /dev/null +++ b/bundler/tests/.cache/untrusted/fb8f6692f26ef59a5d09cc02fdc9ae9b373c5ba8.ts @@ -0,0 +1,60 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/internal_mod.ts + + +export { NatsConnectionImpl } from "./nats.ts"; +export { Nuid, nuid } from "./nuid.ts"; +export { ErrorCode, NatsError } from "./error.ts"; +export type { + ConnectionOptions, + Msg, + NatsConnection, + PublishOptions, + RequestOptions, + Server, + ServerInfo, + ServersChanged, + Status, + Subscription, + SubscriptionOptions, +} from "./types.ts"; +export { DebugEvents, Empty, Events } from "./types.ts"; +export { MsgImpl } from "./msg.ts"; +export { SubscriptionImpl } from "./subscription.ts"; +export { Subscriptions } from "./subscriptions.ts"; +export { setTransportFactory, setUrlParseFn } from "./transport.ts"; +export type { Transport } from "./transport.ts"; +export { Connect, createInbox, INFO, ProtocolHandler } from "./protocol.ts"; +export type { Deferred, Timeout } from "./util.ts"; +export { + deferred, + delay, + extractProtocolMessage, + render, + timeout, +} from "./util.ts"; +export type { MsgHdrs } from "./headers.ts"; +export { headers, MsgHdrsImpl } from "./headers.ts"; +export { Heartbeat } from "./heartbeats.ts"; +export type { PH } from "./heartbeats.ts"; +export { MuxSubscription } from "./muxsubscription.ts"; +export { DataBuffer } from "./databuffer.ts"; +export { checkOptions } from "./options.ts"; +export { Request } from "./request.ts"; +export type { Authenticator } from "./authenticator.ts"; +export { + credsAuthenticator, + jwtAuthenticator, + nkeyAuthenticator, +} from "./authenticator.ts"; +export type { Codec } from "./codec.ts"; +export { JSONCodec, StringCodec } from "./codec.ts"; +export * from "./nkeys.ts"; +export type { Dispatcher } from "./queued_iterator.ts"; +export { QueuedIterator } from "./queued_iterator.ts"; +export type { ParserEvent } from "./parser.ts"; +export { Kind, Parser, State } from "./parser.ts"; +export { DenoBuffer, MAX_SIZE, readAll, writeAll } from "./denobuffer.ts"; +export { Bench, Metric } from "./bench.ts"; +export type { BenchOpts } from "./bench.ts"; +export { TD, TE } from "./encoders.ts"; +export { isIP, parseIP } from "./ipparser.ts"; diff --git a/bundler/tests/.cache/untrusted/fc228c2159b9cd44f4412ecaf41ffb1f4ca424c9.ts b/bundler/tests/.cache/untrusted/fc228c2159b9cd44f4412ecaf41ffb1f4ca424c9.ts new file mode 100644 index 00000000000..ae043714c0e --- /dev/null +++ b/bundler/tests/.cache/untrusted/fc228c2159b9cd44f4412ecaf41ffb1f4ca424c9.ts @@ -0,0 +1,64 @@ +// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-11/nats-base-client/transport.ts + + +/* + * Copyright 2020 The NATS Authors + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//@ts-ignore +import { ConnectionOptions, Server, URLParseFn } from "./types.ts"; + +export let urlParseFn: URLParseFn | undefined; +export function setUrlParseFn(fn?: URLParseFn): void { + urlParseFn = fn; +} + +let transportFactory: TransportFactory; +export function setTransportFactory(fn: TransportFactory): void { + transportFactory = fn; +} + +export function newTransport(): Transport { + if (typeof transportFactory !== "function") { + throw new Error("transport is not set"); + } + return transportFactory(); +} + +export interface TransportFactory { + (): Transport; +} + +export interface Transport extends AsyncIterable { + readonly isClosed: boolean; + readonly lang: string; + readonly version: string; + readonly closeError?: Error; + + connect( + server: Server, + opts: ConnectionOptions, + ): Promise; + + [Symbol.asyncIterator](): AsyncIterableIterator; + + isEncrypted(): boolean; + + send(frame: Uint8Array): Promise; + + close(err?: Error): Promise; + + disconnect(): void; + + closed(): Promise; +} diff --git a/bundler/tests/.cache/untrusted/fc81dba5b0ebe63014cd95a863bbaeaa6e63117b.ts b/bundler/tests/.cache/untrusted/fc81dba5b0ebe63014cd95a863bbaeaa6e63117b.ts new file mode 100644 index 00000000000..78f4c3077dc --- /dev/null +++ b/bundler/tests/.cache/untrusted/fc81dba5b0ebe63014cd95a863bbaeaa6e63117b.ts @@ -0,0 +1,47 @@ +// Loaded from https://raw.githubusercontent.com/lodash/lodash/master/toString.js + + +import isSymbol from './isSymbol.js' + +/** Used as references for various `Number` constants. */ +const INFINITY = 1 / 0 + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * toString(null) + * // => '' + * + * toString(-0) + * // => '-0' + * + * toString([1, 2, 3]) + * // => '1,2,3' + */ +function toString(value) { + if (value == null) { + return '' + } + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value === 'string') { + return value + } + if (Array.isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return `${value.map((other) => other == null ? other : toString(other))}` + } + if (isSymbol(value)) { + return value.toString() + } + const result = `${value}` + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result +} + +export default toString diff --git a/bundler/tests/.cache/untrusted/fe3225b3254d2184cfb161d287ba24eb7f539452.ts b/bundler/tests/.cache/untrusted/fe3225b3254d2184cfb161d287ba24eb7f539452.ts new file mode 100644 index 00000000000..cd2874e22ee --- /dev/null +++ b/bundler/tests/.cache/untrusted/fe3225b3254d2184cfb161d287ba24eb7f539452.ts @@ -0,0 +1,120 @@ +// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/base64.dew.js + + +import { dew as _utilsDewDew } from "./utils.dew.js"; +import { dew as _supportDewDew } from "./support.dew.js"; +var exports = {}, + _dewExec = false; +export function dew() { + if (_dewExec) return exports; + _dewExec = true; + + var utils = _utilsDewDew(); + + var support = _supportDewDew(); // private property + + + var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding + + exports.encode = function (input) { + var output = []; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0, + len = input.length, + remainingBytes = len; + var isArray = utils.getTypeOf(input) !== "string"; + + while (i < input.length) { + remainingBytes = len - i; + + if (!isArray) { + chr1 = input.charCodeAt(i++); + chr2 = i < len ? input.charCodeAt(i++) : 0; + chr3 = i < len ? input.charCodeAt(i++) : 0; + } else { + chr1 = input[i++]; + chr2 = i < len ? input[i++] : 0; + chr3 = i < len ? input[i++] : 0; + } + + enc1 = chr1 >> 2; + enc2 = (chr1 & 3) << 4 | chr2 >> 4; + enc3 = remainingBytes > 1 ? (chr2 & 15) << 2 | chr3 >> 6 : 64; + enc4 = remainingBytes > 2 ? chr3 & 63 : 64; + output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4)); + } + + return output.join(""); + }; // public method for decoding + + + exports.decode = function (input) { + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0, + resultIndex = 0; + var dataUrlPrefix = "data:"; + + if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) { + // This is a common error: people give a data url + // (data:image/png;base64,iVBOR...) with a {base64: true} and + // wonders why things don't work. + // We can detect that the string input looks like a data url but we + // *can't* be sure it is one: removing everything up to the comma would + // be too dangerous. + throw new Error("Invalid base64 input, it looks like a data url."); + } + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + var totalLength = input.length * 3 / 4; + + if (input.charAt(input.length - 1) === _keyStr.charAt(64)) { + totalLength--; + } + + if (input.charAt(input.length - 2) === _keyStr.charAt(64)) { + totalLength--; + } + + if (totalLength % 1 !== 0) { + // totalLength is not an integer, the length does not match a valid + // base64 content. That can happen if: + // - the input is not a base64 content + // - the input is *almost* a base64 content, with a extra chars at the + // beginning or at the end + // - the input uses a base64 variant (base64url for example) + throw new Error("Invalid base64 input, bad content length."); + } + + var output; + + if (support.uint8array) { + output = new Uint8Array(totalLength | 0); + } else { + output = new Array(totalLength | 0); + } + + while (i < input.length) { + enc1 = _keyStr.indexOf(input.charAt(i++)); + enc2 = _keyStr.indexOf(input.charAt(i++)); + enc3 = _keyStr.indexOf(input.charAt(i++)); + enc4 = _keyStr.indexOf(input.charAt(i++)); + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + output[resultIndex++] = chr1; + + if (enc3 !== 64) { + output[resultIndex++] = chr2; + } + + if (enc4 !== 64) { + output[resultIndex++] = chr3; + } + } + + return output; + }; + + return exports; +} \ No newline at end of file diff --git a/bundler/tests/.cache/untrusted/fe55ac558514044fe365a3952b2323ac1728cfba.ts b/bundler/tests/.cache/untrusted/fe55ac558514044fe365a3952b2323ac1728cfba.ts new file mode 100644 index 00000000000..bc35711ba68 --- /dev/null +++ b/bundler/tests/.cache/untrusted/fe55ac558514044fe365a3952b2323ac1728cfba.ts @@ -0,0 +1,6 @@ +// Loaded from https://esm.sh/react@17.0.1 + + +/* esm.sh - react@17.0.1 */ +export * from "https://cdn.esm.sh/v15/react@17.0.1/esnext/react.js"; +export { default } from "https://cdn.esm.sh/v15/react@17.0.1/esnext/react.js"; diff --git a/bundler/tests/.cache/untrusted/fe71b3490cf756880bf07797f6158d917c178ae1.ts b/bundler/tests/.cache/untrusted/fe71b3490cf756880bf07797f6158d917c178ae1.ts new file mode 100644 index 00000000000..07024fa53d1 --- /dev/null +++ b/bundler/tests/.cache/untrusted/fe71b3490cf756880bf07797f6158d917c178ae1.ts @@ -0,0 +1,8 @@ +// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/helpers/errorUtil.ts + + +export namespace errorUtil { + export type ErrMessage = string | { message?: string }; + export const errToObj = (message?: ErrMessage) => + typeof message === "string" ? { message } : message || {}; +} diff --git a/bundler/tests/common/mod.rs b/bundler/tests/common/mod.rs index 33c51c4bf1b..8cca907992e 100644 --- a/bundler/tests/common/mod.rs +++ b/bundler/tests/common/mod.rs @@ -1,6 +1,7 @@ use anyhow::{bail, Context, Error}; use reqwest::Url; use sha1::{Digest, Sha1}; +use std::io::Write; use std::{ self, env, fs::{create_dir_all, read_to_string, write}, @@ -25,20 +26,36 @@ fn calc_hash(s: &str) -> String { hex::encode(sum) } +fn calc_cache_path(cache_dir: &Path, url: &Url) -> PathBuf { + let hash = calc_hash(&url.to_string()); + let s = url.to_string(); + if s.starts_with("https://deno.land/") { + return cache_dir.join("deno").join(&hash); + } + + cache_dir.join("untrusted").join(hash) +} + /// Load url. This method does caching. fn load_url(url: Url) -> Result { - let cache_dir = PathBuf::from(env!("OUT_DIR")).join("deno-cache"); - create_dir_all(&cache_dir).context("failed to create cache dir")?; + let cache_dir = PathBuf::from( + env::var("CARGO_MANIFEST_DIR") + .expect("the test requires an environment variable named `CARGO_MANIFEST_DIR`"), + ) + .join("tests") + .join(".cache"); - let hash = calc_hash(&url.to_string()); + let cache_path = calc_cache_path(&cache_dir, &url).with_extension("ts"); - let cache_path = cache_dir.join(&hash); + create_dir_all(cache_path.parent().unwrap()).context("failed to create cache dir")?; match read_to_string(&cache_path) { Ok(v) => return Ok(v), _ => {} } + eprintln!("Storing `{}` at `{}`", url, cache_path.display()); + let resp = reqwest::blocking::get(url.clone()) .with_context(|| format!("failed to fetch `{}`", url))?; @@ -46,7 +63,11 @@ fn load_url(url: Url) -> Result { .bytes() .with_context(|| format!("failed to read data from `{}`", url))?; - write(&cache_path, &bytes)?; + let mut content = vec![]; + write!(content, "// Loaded from {}\n\n\n", url).unwrap(); + content.extend_from_slice(&bytes); + + write(&cache_path, &content)?; return Ok(String::from_utf8_lossy(&bytes).to_string()); } diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/deps.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/deps.ts new file mode 100644 index 00000000000..069f528f780 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/deps.ts @@ -0,0 +1,4 @@ +export { JsonPointer } from "https://cdn.skypack.dev/json-ptr"; +export * as G from "https://deno.land/x/graphql_deno@v15.0.0/mod.ts"; +export * as R from "https://deno.land/x/ramda@v0.27.2/mod.ts"; +export type { OpenAPIV3 } from "https://raw.githubusercontent.com/kogosoftwarellc/open-api/master/packages/openapi-types/index.ts"; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/entry.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/entry.ts new file mode 100644 index 00000000000..bad0770a2e6 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/entry.ts @@ -0,0 +1,12 @@ +import { parse } from "https://deno.land/std@0.80.0/flags/mod.ts"; + +import { Args, main } from "./src/mod.ts"; +import { loadFile } from "./src/utils/deno.loadFile.ts"; + +const args = parse(Deno.args, { + default: { + outputDir: `./`, + }, +}); + +await main(args as Args, { loadFile, writeTextFile: Deno.writeTextFile }); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/interfaceExtension.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/interfaceExtension.ts new file mode 100644 index 00000000000..86b7e1dbe8f --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/interfaceExtension.ts @@ -0,0 +1,119 @@ +import { G } from "../../deps.ts"; + +const nameKind = (value: string): G.NameNode => ({ + kind: G.Kind.NAME, + value, +}); + +const namedTypeKind = (value: string): G.NamedTypeNode => ({ + kind: G.Kind.NAMED_TYPE, + name: nameKind(value), +}); + +const fieldToAST = ( + // deno-lint-ignore no-explicit-any + field: G.GraphQLField, +): G.FieldDefinitionNode => ({ + kind: G.Kind.FIELD_DEFINITION, + name: nameKind(field.name), + type: G.parseType(field.type.toString()), +}); + +const interfaceToAST = ( + iface: G.GraphQLInterfaceType, +): G.InterfaceTypeDefinitionNode => ({ + kind: G.Kind.INTERFACE_TYPE_DEFINITION, + name: nameKind(iface.name), + fields: Object.values(iface.getFields()).map(fieldToAST), +}); + +/** + * We treat `anyOf` or `allOf` JsonSchema compositions as a _object extension_ + * mechanism. + * + * Example: + * + * title: FooBar + * allOf: + * - $ref: "#/components/schemas/Foo" + * - $ref: "#/components/schemas/Bar" + * + * You could read the example as the object "FooBar" extends "Foo" and "Bar". + * + * We use GraphQL _interface_ to improve query definitions, the "FooBar" object + * type will implement "Foo" and "Bar" interfaces and if "Foo" exists somewhere + * else, programmer can create single "FooInterface" GraphQL Fragment and use + * it for all occurences of "Foo" as well as for all types, which implements + * "FooInterface". + * + * We must use schema extension for this task. During GraphQL distillation, if + * "Foo" is distilled sooner than we reach "FooBar", the "Foo" object type is + * already created, but we need the "Foo" object to self-extend "FooInterface". + * Via schema extension, we can modify already created GraphQL types. + */ +export const interfaceExtensionFactory = () => { + type InterfaceName = string; + type ExtendingName = string; + const interfaceRelations = new Map>(); + const interfaces = new Map(); + const addInterfaceRelation = (extendsName: string, ifaceName: string) => { + let relation = interfaceRelations.get(extendsName); + if (!relation) { + relation = new Set(); + interfaceRelations.set(extendsName, relation); + } + relation.add(ifaceName); + }; + const getInterface = ( + source: G.GraphQLObjectType, + ): G.GraphQLInterfaceType => { + const interfaceName = `${source.name}Interface`; + let iface = interfaces.get(interfaceName); + if (!iface) { + iface = new G.GraphQLInterfaceType({ + name: interfaceName, + fields: source.toConfig().fields, + }); + interfaces.set(interfaceName, iface); + // self extends + addInterfaceRelation(source.name, iface.name); + } + return iface; + }; + const addInterfaceConnection = ( + // deno-lint-ignore no-explicit-any + interfaceObject: G.GraphQLObjectType, + // deno-lint-ignore no-explicit-any + extendingObject: G.GraphQLObjectType, + ) => { + const iface = getInterface(interfaceObject); + addInterfaceRelation(extendingObject.name, iface.name); + }; + const extendSchema = (schema: G.GraphQLSchema): G.GraphQLSchema => { + const ifaces = Array.from(interfaces.values()); + if (ifaces.length === 0) { + return schema; + } + const interfaceDefinitions = ifaces.map(interfaceToAST); + const objectExtendsDefinitions = Array.from( + interfaceRelations.entries(), + ).map(( + [typeName, interfaces], + ) => ({ + kind: G.Kind.OBJECT_TYPE_EXTENSION, + name: nameKind(typeName), + interfaces: Array.from(interfaces).map(namedTypeKind), + } as G.ObjectTypeExtensionNode)); + const document = { + kind: G.Kind.DOCUMENT, + definitions: [ + ...interfaceDefinitions, + ...objectExtendsDefinitions, + ], + }; + return G.extendSchema(schema, document, { assumeValidSDL: true }); + }; + return { addInterfaceConnection, extendSchema }; +}; + +export type InterfaceExtension = ReturnType; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/mergeObjects.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/mergeObjects.ts new file mode 100644 index 00000000000..e6875633e5c --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/mergeObjects.ts @@ -0,0 +1,130 @@ +import { G, R } from "../../deps.ts"; +import { stringify } from "../log.ts"; +import { GQLFieldConfig, GQLFieldMap, GQLObject } from '../types.d.ts' + +const isGQLObject = ( + obj: G.GraphQLType, +): obj is GQLObject => G.isInputObjectType(obj) || G.isObjectType(obj); + +const mergeDescriptions = ( + descriptions: Array, +): string | undefined => + R.uniq(descriptions.filter(Boolean)).join(`. `) || undefined; + +const mergeNames = (objects: GQLObject[]): string => + objects.map((obj) => obj.name).join(`_`); + +const mergeFieldType = ( + a: G.GraphQLType, + b: G.GraphQLType, +): G.GraphQLType | never => { + if (R.equals(a, b)) { + return a; + } + const fields = [a, b]; + if (fields.some(G.isNonNullType)) { + const nonRequired = fields.map((f) => + // deno-lint-ignore no-explicit-any + G.isNonNullType(f) ? (f as any).ofType : f + ) as [G.GraphQLType, G.GraphQLType]; + const merged = mergeFieldType(...nonRequired); + // if at least one is non-required, the result is non-required + return fields.every(G.isNonNullType) ? G.GraphQLNonNull(merged) : merged; + } + if (fields.some(G.isListType)) { + if (!fields.every(G.isListType)) { + throw new Error([ + `Atempt to merge fields which are not compatible.`, + `A: ${stringify(a, { maxDepth: 1 })}`, + `B: ${stringify(b, { maxDepth: 1 })}`, + `Cannot merge list and non-list.`, + ].join(`\n`)); + } + // deno-lint-ignore no-explicit-any + return G.GraphQLList(mergeFieldType((a as any).ofType, (b as any).ofType)); + } + if (fields.some(isGQLObject)) { + if (!fields.every(isGQLObject)) { + throw new Error([ + `Atempt to merge object and non-object fields.`, + `A: ${stringify(a, { maxDepth: 1 })}`, + `B: ${stringify(b, { maxDepth: 1 })}`, + `Cannot merge object and non-object.`, + ].join(`\n`)); + } + const merginInputTypes = G.isInputObjectType(a); + return merginInputTypes ? mergeObjects(fields) : new G.GraphQLUnionType({ + name: mergeNames(fields), + // deno-lint-ignore no-explicit-any + types: fields as G.GraphQLObjectType[], + }); + } + // TODO: handle union types + if (!fields.every(G.isLeafType)) { + throw new Error([ + `Expected type to be LeafType (Scalar or Enum) but got.`, + `A: ${stringify(a, { maxDepth: 1 })}`, + `B: ${stringify(b, { maxDepth: 1 })}`, + ].join(`\n`)); + } + // coerce all non-matching scalars and enums to string + return G.GraphQLString; +}; + + +const mergeFields = (a: GQLFieldConfig, b: GQLFieldConfig): GQLFieldConfig => ({ + description: mergeDescriptions([a.description, b.description]), + // deno-lint-ignore no-explicit-any + type: mergeFieldType(a.type, b.type) as any, +}); + +const mergeTwoFieldsMap: (a: GQLFieldMap, b: GQLFieldMap) => GQLFieldMap = + // deno-lint-ignore no-explicit-any + (R as any).mergeWith(mergeFields); +const mergeFieldsMap = ( + fieldsMap: [GQLFieldMap, ...GQLFieldMap[]], +): GQLFieldMap => + fieldsMap.length === 1 ? fieldsMap[0] : fieldsMap.reduce(mergeTwoFieldsMap); + +export const mergeObjects = < + Input extends G.GraphQLType[], +>( + objects: Input, + name?: string, +): Input extends G.GraphQLObjectType[] ? G.GraphQLObjectType + : Input extends G.GraphQLInputObjectType[] ? G.GraphQLInputObjectType + : never => { + if (objects.length === 0) { + throw new Error(`mergeObjects require at least one object in input array`); + } + if (!objects.every(isGQLObject)) { + throw new Error([ + `Currently only _objects_ (i.e. non-scalar and non-list) could be merged\n`, + stringify(objects, { maxDepth: 1 }), + ].join(``)); + } + const verifiedObjects = objects as GQLObject[]; + if (verifiedObjects.length === 1) { + console.warn( + `Merging of single object just returns the single object.`, + `Single schema composition indicates some error in your specification file.`, + ); + // deno-lint-ignore no-explicit-any + return verifiedObjects[0] as any; + } + const fields = mergeFieldsMap( + verifiedObjects.map((o) => o.toConfig().fields) as [ + GQLFieldMap, + GQLFieldMap, + ...GQLFieldMap[], + ], + ); + const Clazz = Object.getPrototypeOf(verifiedObjects[0]).constructor; + return new Clazz({ + description: mergeDescriptions( + verifiedObjects.map((obj) => obj.description), + ), + fields, + name: name || mergeNames(verifiedObjects), + }); +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName test.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName test.ts new file mode 100644 index 00000000000..849113ac6c7 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName test.ts @@ -0,0 +1,24 @@ +import { assertEquals } from "https://deno.land/std@0.80.0/testing/asserts.ts"; + +import { toValidGraphQLName } from "./validName.ts"; + +Deno.test({ + name: `"toValidGraphQLName" should leave valid GraphQL name without change`, + fn() { + [`foo`, `_foo`, `FooBar`, `Foo9`, `foo__9__bar`].forEach((validName) => + assertEquals(toValidGraphQLName(validName), validName) + ); + }, +}); + +Deno.test({ + name: `"toValidGraphQLName" shoud convert invalid GraphQL name to valid`, + fn() { + Object.entries({ + "9foo": `foo`, + "foo-bar": `fooBar`, + }).map(([invalidName, validName]) => + assertEquals(toValidGraphQLName(invalidName), validName) + ); + }, +}); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName.ts new file mode 100644 index 00000000000..881c867fb92 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/graphql/validName.ts @@ -0,0 +1,8 @@ +export const isValidGraphQLName = RegExp.prototype.test.bind(/^[A-Za-z_]\w*$/); + +const invalidTokensRe = /^[^A-Za-z_]|\W+(.)?/g; +export const toValidGraphQLName = (name: string): string => + name.replace( + invalidTokensRe, + (_match, charAfter) => charAfter?.toUpperCase() || ``, + ); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/log.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/log.ts new file mode 100644 index 00000000000..a1c78261ff0 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/log.ts @@ -0,0 +1,5 @@ +export * as color from "https://deno.land/std@0.80.0/fmt/colors.ts"; +export { stringify } from "https://raw.githubusercontent.com/czabaj/stringify-replacers/main/mod.ts"; + +// deno-lint-ignore no-explicit-any +export const log = (...args: any[]) => console.log(...args); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/mod.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/mod.ts new file mode 100644 index 00000000000..b61641ac350 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/mod.ts @@ -0,0 +1,72 @@ +import { join } from "https://deno.land/std@0.80.0/path/mod.ts"; + +import { G, OpenAPIV3 } from "../deps.ts"; +import { color, log, stringify } from "./log.ts"; +import { refine } from "./refine.ts"; +import { printEnums } from "./typeScript/enumPrinter.ts"; +import { ApiArtifacts, Enums } from "./types.d.ts"; + +export type Args = { + _: [string]; + outputDir: string; +}; +export type PlatformSpecificApi = { + loadFile: (path: string) => Promise>; + writeTextFile: (path: string, data: string) => Promise; +}; + +export const main = async ( + { _: [specFile], outputDir }: Args, + { loadFile, writeTextFile }: PlatformSpecificApi, +) => { + const writeOutputFile = (path: string, data: string) => { + log(color.blue(`Writting file:\t${path}`)); + return writeTextFile(path, data); + }; + + log(color.blue(`Loading file:\t${specFile}`)); + + const fileContent = await loadFile(specFile as string); + const { apiArtifacts, enums, gqlSchema, openApi } = await refine( + fileContent, + ); + + const writeApiArtifacts = ( + apiArtifacts: ApiArtifacts, + outputDir: string, + ) => + writeOutputFile( + join(outputDir, `apiArtifacts.json`), + stringify(apiArtifacts, null, 2), + ); + + const writeTsTypes = (enums: Enums, outputDir: string) => + writeOutputFile( + join(outputDir, `tsTypes.ts`), + printEnums(enums), + ); + + const writeGraphQLSchema = (gqlSchema: G.GraphQLSchema, outputDir: string) => + writeOutputFile( + join(outputDir, `schema.graphql`), + G.printSchema(gqlSchema), + ); + + const writeOpenAPIJson = ( + oasDocument: OpenAPIV3.Document, + outputDir: string, + ) => + writeOutputFile( + join(outputDir, `openapi.json`), + stringify(oasDocument, null, 2), + ); + + await Promise.all([ + writeApiArtifacts(apiArtifacts, outputDir), + writeGraphQLSchema(gqlSchema, outputDir), + writeOpenAPIJson(openApi as unknown as OpenAPIV3.Document, outputDir), + writeTsTypes(enums, outputDir), + ]); + + log(color.green(`ALL DONE`)); +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.test.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.test.ts new file mode 100644 index 00000000000..c12fefb51f0 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.test.ts @@ -0,0 +1,117 @@ +import { Spy, spy } from "https://deno.land/x/mock@v0.9.4/mod.ts"; +import { + assertEquals, + assertNotStrictEquals, + assertThrows, +} from "https://deno.land/std@0.80.0/testing/asserts.ts"; + +import { OpenAPIV3, R } from "../../deps.ts"; +import { HttpMethod } from "../types.d.ts"; +import { + Context, + DistillationHooks, + distillOperation, +} from "./index.ts"; + +const noop = R.always(undefined); +const simpleOperation = (operationId: string): OpenAPIV3.OperationObject => ({ + operationId, + responses: { + 200: { + description: `Success`, + content: { + [`application/json`]: { + schema: { + type: `boolean`, + }, + }, + }, + }, + }, +}); +const testDistillOperation = (operation: OpenAPIV3.OperationObject, { + // deno-lint-ignore no-explicit-any + boundDereference = R.identity as any, + boundDistillArguments = noop, + boundDistillOutputType = noop, + httpMethod = `get`, + onOperationDistilled, + path = `/some/path`, +}: { + boundDistillArguments?: Parameters[1]; + boundDistillOutputType?: Parameters[2]; + boundDereference?: Context[`boundDereference`]; + httpMethod?: HttpMethod; + onOperationDistilled?: DistillationHooks["onOperationDistilled"]; + path?: string; +} = {}) => + distillOperation( + { boundDereference, hooks: { onOperationDistilled } }, + boundDistillArguments, + boundDistillOutputType, + )( + path, + httpMethod, + operation, + ); + +Deno.test({ + name: `"distillOperation" should throw when 'operationId' is void`, + fn() { + assertThrows(() => testDistillOperation({})); + assertThrows(() => testDistillOperation({ operationId: `` })); + }, +}); + +Deno.test({ + name: + `"distillOperation" should throw when 'operationId' is not a valid GraphQL name`, + fn() { + assertThrows(() => + testDistillOperation({ operationId: `1_number_at_start` }) + ); + assertThrows(() => + testDistillOperation({ operationId: `_undercore_at_start` }) + ); + assertThrows(() => testDistillOperation({ operationId: `use-hyphen` })); + }, +}); + +Deno.test( + { + name: + `"distillOperation" should throw when there is not defined a success response`, + fn() { + assertThrows(() => + testDistillOperation({ operationId: `validOperationId` }) + ); + assertThrows(() => + testDistillOperation({ operationId: `validOperationId`, responses: {} }) + ); + assertThrows(() => + testDistillOperation({ + operationId: `validOperationId`, + responses: { 404: { description: "Not found" } }, + }) + ); + }, + }, +); + +Deno.test({ + name: + `"distillOperation" should call "onOperationDistilled" hook when defined`, + fn() { + const path = `/some/path`; + const httpMethod = `get`; + const operationId = `validOperationId`; + const onOperationDistilled: Spy = spy(); + const result = testDistillOperation( + simpleOperation(operationId), + { httpMethod, onOperationDistilled, path }, + ); + assertNotStrictEquals(onOperationDistilled.calls, [ + { args: [path, httpMethod, operationId] }, + ]); + }, +}); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.ts new file mode 100644 index 00000000000..7ba600cdbbf --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/index.ts @@ -0,0 +1,531 @@ +import { G, OpenAPIV3, R } from "../../deps.ts"; +import { + InterfaceExtension, + interfaceExtensionFactory, +} from "../graphql/interfaceExtension.ts"; +import { mergeObjects } from "../graphql/mergeObjects.ts"; +import { + isValidGraphQLName, + toValidGraphQLName, +} from "../graphql/validName.ts"; +import { stringify } from "../log.ts"; +import { + BodyArg, + DistilledOperationParameter, + HttpMethod, + OpenAPIV3Enum, +} from "../types.d.ts"; +import { + createOneOf, + emptySchemaObject, + graphqlCompliantMediaType, + httpMethods, + isAlgebraic, + isEnum, + isList, + isObject, + isReference, + isScalar, + isSuccessStatusCode, + isValidGqlEnumValue, + lastJsonPointerPathSegment, + resolveRef, +} from "./utils.ts"; + +export type DistillationHooks = { + onEnumDistilled?( + name: string, + source: OpenAPIV3Enum, + ): void; + onOperationDistilled?( + path: string, + httpMethod: HttpMethod, + operationId: string, + // deno-lint-ignore no-explicit-any + fieldConfig: G.GraphQLFieldConfig, + distilledArguments?: DistilledOperationParameter[], + ): void; + onPropertyRenamed?( + objectName: string, + originalName: string, + changedName: string, + ): void; +}; + +type JSONPointer = string; + +const BODY: BodyArg = `body`; + +const toValidTypeName = ( + title: string | undefined, + ref: string | undefined, + parentName: string, +): string => + toValidGraphQLName( + title || (ref && lastJsonPointerPathSegment(ref)) || + parentName, + ); +export class GraphQLFurnace { + readonly cache: { + enum: Map; + input: Map; + output: Map; + parameter: Map; + } = { + enum: new Map(), + input: new Map(), + output: new Map(), + parameter: new Map(), + }; + + readonly interfaceExtension: InterfaceExtension = interfaceExtensionFactory(); + + constructor( + public readonly document: OpenAPIV3.Document, + private readonly hooks: DistillationHooks, + ) { + } + + /** + * Consumes arbitrary OpenAPI object. When the object is ReferenceObject, + * dereferences it (even transitively). Returns tuple of + * - [SchemaObject] - when the passed object was not reference + * - [ShcemaObject, JSONPointer] - when the passed object was ReferenceObject, + * the JSONPointer is the $ref pointing to the SchemaObject. + */ + dereference( + input: OASType | OpenAPIV3.ReferenceObject, + ): [OASType, JSONPointer] | [OASType] { + return this.dereferenceImpl(input); + } + private dereferenceImpl( + input: OASType | OpenAPIV3.ReferenceObject, + ref?: JSONPointer, + ): [OASType, JSONPointer] | [OASType] { + return isReference(input) + ? this.dereferenceImpl( + resolveRef(this.document, input.$ref), + input.$ref, + ) + : ref + ? [input, ref] + : [input]; + } + + resolvePropertyName(objectName: string, propName: string): string { + if (isValidGraphQLName(propName)) return propName; + const validName = toValidGraphQLName(propName); + this.hooks.onPropertyRenamed?.(objectName, propName, validName); + return validName; + } + + toEnum( + name: string, + schema: OpenAPIV3Enum, + ): G.GraphQLEnumType | G.GraphQLScalarType { + const cached = this.cache.enum.get(name); + if (cached) return cached; + const result = schema.enum.every(isValidGqlEnumValue) + ? new G.GraphQLEnumType({ + name, + values: schema.enum.reduce((acc, value) => { + acc[value] = { value }; + return acc; + }, {} as G.GraphQLEnumValueConfigMap), + }) + : // TODO: fallback to other primitive types, e.g. GraphQLFloat when all enum members are numbers + G.GraphQLString; + this.hooks.onEnumDistilled?.(name, schema); + this.cache.enum.set(name, result); + return result; + } + + toLeafType( + ref: JSONPointer | undefined, + schema: OpenAPIV3.SchemaObject, + parentName: string, + ): G.GraphQLLeafType { + if (isEnum(schema)) { + return this.toEnum( + toValidTypeName(schema.title, ref, parentName), + schema, + ); + } + if (isScalar(schema)) { + switch (schema.type) { + case `boolean`: + return G.GraphQLBoolean; + case `integer`: + return G.GraphQLInt; + case `number`: + return G.GraphQLFloat; + case `string`: + return G.GraphQLString; + } + } + throw new Error(`Unsupported schema in "distillLeafType" function: + ${stringify(schema, { maxDepth: 1 })}`); + } + + toInputType( + schemaOrRef: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject, + parentName: string, + ): G.GraphQLInputType { + const [schema, ref] = this.dereference(schemaOrRef); + const cached = ref && this.cache.input.get(ref); + if (cached) return cached; + const result = this.toInputTypeDereferencedCached(ref, schema, parentName); + if (ref) this.cache.input.set(ref, result); + return result; + } + private toInputTypeDereferencedCached( + ref: JSONPointer | undefined, + schema: OpenAPIV3.SchemaObject, + parentName: string, + ): G.GraphQLInputType { + if (isAlgebraic(schema)) { + const name = `${toValidTypeName(schema.title, ref, parentName)}Input`; + const types = (schema.allOf || schema.anyOf || schema.oneOf)!.map(( + component, + idx, + ) => this.toInputType(component, `${name}_${idx}`)); + if (!types.every(G.isInputObjectType)) { + throw new Error( + [ + `Sorry, algebraic types could be composed only from object types.`, + stringify(schema, { maxDepth: 2 }), + `Above schema is composed from non-object types.`, + ].join(`\n`), + ); + } + return mergeObjects(types, name); + } + if (isList(schema)) { + return new G.GraphQLList( + this.toInputType(schema.items, parentName), + ); + } + if (isObject(schema)) { + const name = `${toValidTypeName(schema.title, ref, parentName)}Input`; + const { required } = schema; + return new G.GraphQLInputObjectType({ + description: schema.description, + fields: Object.fromEntries( + Object.entries(schema.properties).map(([propName, propSchema]) => { + const derefSchema = this.dereference( + propSchema, + )[0]; + const type = this.toInputType(propSchema, `${name}_${propName}`); + return [ + this.resolvePropertyName(name, propName), + { + description: derefSchema.description, + type: required?.includes(propName) + ? G.GraphQLNonNull(type) + : type, + }, + ]; + }), + ), + name, + }); + } + return this.toLeafType(ref, schema, parentName); + } + + toOutputType( + schemaOrRef: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject, + parentName: string, + ): G.GraphQLOutputType { + const [schema, ref] = this.dereference(schemaOrRef); + const cached = ref && this.cache.output.get(ref); + if (cached) return cached; + const result = this.toOutputTypeDereferencedCached(ref, schema, parentName); + if (ref) this.cache.output.set(ref, result); + return result; + } + private toOutputTypeDereferencedCached( + ref: string | undefined, + schema: OpenAPIV3.SchemaObject, + parentName: string, + ): G.GraphQLOutputType { + if (isAlgebraic(schema)) { + const name = toValidTypeName(schema.title, ref, parentName); + const union = !schema.allOf; + const types = (schema.allOf || schema.anyOf || schema.oneOf)!.map(( + component, + idx, + ) => this.toOutputType(component, `${name}_${idx}`)); + if (!types.every(G.isObjectType)) { + throw new Error( + [ + `Sorry, algebraic types could be composed only from object types.`, + stringify(schema, { maxDepth: 2 }), + `Above schema is composed from non-object types.`, + ].join(`\n`), + ); + } + if (union) { + return new G.GraphQLUnionType({ + description: schema.description, + name, + types, + }); + } + const intersection = mergeObjects(types, name); + (schema.allOf || schema.anyOf)!.forEach( + (component, idx) => { + if (isReference(component)) { + const interfaceObject = types[idx]; + this.interfaceExtension.addInterfaceConnection( + interfaceObject, + intersection, + ); + } + }, + ); + return intersection; + } + if (isList(schema)) { + return new G.GraphQLList( + this.toOutputType(schema.items, parentName), + ); + } + if (isObject(schema)) { + const name = toValidTypeName(schema.title, ref, parentName); + const { required } = schema; + const objectType = new G.GraphQLObjectType({ + description: schema.description, + fields: Object.fromEntries( + Object.entries(schema.properties).map(([propName, propSchema]) => { + const derefSchema = + this.dereference(propSchema)[0]; + const type = propName === `id` && isScalar(derefSchema) + ? G.GraphQLID + : this.toOutputType(propSchema, `${name}_${propName}`); + return [ + this.resolvePropertyName(name, propName), + { + description: derefSchema.description, + type: required?.includes(propName) + ? G.GraphQLNonNull(type) + : type, + }, + ]; + }), + ), + name, + }); + return objectType; + } + return this.toLeafType(ref, schema, parentName); + } + + toArguments( + operationId: string, + requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject, + parameters?: Array, + ): DistilledOperationParameter[] | undefined { + const dereferencedBody = requestBody && + (this.dereference(requestBody)[0]); + return !dereferencedBody && R.isEmpty(parameters) ? undefined : ([ + dereferencedBody && this.toArgument( + { + in: BODY, + name: BODY, + schema: graphqlCompliantMediaType(dereferencedBody), + required: dereferencedBody?.required, + }, + operationId, + ), + ] + .concat( + parameters?.map((parameter) => this.toArgument(parameter, operationId)), + ) + .filter(Boolean) as DistilledOperationParameter[]); + } + toArgument( + parameterOrRef: OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject, + parentName: string, + ): DistilledOperationParameter { + const [parameter, ref] = this.dereference(parameterOrRef); + const cached = ref && this.cache.parameter.get(ref); + if (cached) return cached; + const result = this.toArgumentDereferencedAndCached( + ref, + parameter, + parentName, + ); + if (ref) this.cache.parameter.set(ref, result); + return result; + } + private toArgumentDereferencedAndCached( + _ref: JSONPointer | undefined, + parameter: OpenAPIV3.ParameterObject, + parentName: string, + ): DistilledOperationParameter { + const { name, required = false } = parameter; + if (parameter.in !== BODY && name === BODY) { + throw new Error( + `Invalid parameter ${stringify(parameter, { maxDepth: 1 })}, + \nOperation parameter MUST NOT have reserved name "${BODY}".`, + ); + } + const type = this.toInputType( + parameter.schema as OpenAPIV3.SchemaObject, + `${parentName}_${name}`, + ); + return { + description: parameter.description, + in: parameter.in, + required: Boolean(parameter.required), + type: required ? G.GraphQLNonNull(type) : type, + ...(isValidGraphQLName(name) + ? { name } + : { name: toValidGraphQLName(name), originalName: name }), + } as DistilledOperationParameter; + } + + processOperation( + path: string, + httpMethod: HttpMethod, + operation: OpenAPIV3.OperationObject, + parameters?: Array, + ): { + // deno-lint-ignore no-explicit-any + fieldConfig: G.GraphQLFieldConfig; + fieldName: string; + } { + const { operationId, responses } = operation; + if (!operationId) { + throw new Error(`OpenApi operation MUST contain "operationId". + ${ + stringify(operation, { maxDepth: 1 }) + }\n\nAbove operation miss "operationId" property.`); + } + if (!isValidGraphQLName(operationId)) { + throw new Error(`OpenApi operationId MUST be a valid GraphQL name. + ${ + stringify(operation, { maxDepth: 1 }) + }\n\nAbove operation has invalid "operationId".`); + } + const groupedResponses = responses && + Object.entries(responses).reduce( + (acc, [httpStatusCode, operation]) => { + const key = isSuccessStatusCode(httpStatusCode) ? `success` : `error`; + acc[key] = (acc[key] || []).concat(operation); + return acc; + }, + {} as { + error?: Array; + success?: Array; + }, + ); + if (R.isEmpty(groupedResponses?.success)) { + throw new Error(`OpenApi operation MUST contain success response. + ${ + stringify(operation, { maxDepth: 1 }) + }\n\nAbove operation does not contain definition of success response.`); + } + const distilledArguments = this.toArguments( + operationId, + operation.requestBody, + ([] as Array< + OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject | undefined + >).concat(parameters, operation.parameters).filter(Boolean) as Array< + OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject + >, + ); + const successResponses = groupedResponses!.success!.map( + // deno-lint-ignore no-explicit-any + (R.compose as any)( + graphqlCompliantMediaType, + R.head, + this.dereference.bind(this), + ), + ) as Array; + // deno-lint-ignore no-explicit-any + const fieldConfig: G.GraphQLFieldConfig = { + args: distilledArguments && + distilledArguments.reduce((acc, { description, name, type }) => { + acc[name] = { description, type }; + return acc; + }, {} as G.GraphQLFieldConfigArgumentMap), + description: [operation.summary, operation.description].filter(Boolean) + .join(`\n\n`), + extensions: { distilledArguments }, + type: this.toOutputType( + successResponses.length === 1 + ? successResponses[0] + : createOneOf(successResponses), + operationId, + ), + }; + + // TODO: Do not generate types from error responses! + // just to extract enums from the error responses, + // groupedResponses!.error?.forEach((response) => { + // boundDistillOutputType( + // graphqlCompliantMediaType( + // boundDereference(response)[0], + // ), + // operationId, + // ); + // }); + + this.hooks.onOperationDistilled?.( + path, + httpMethod, + operationId, + fieldConfig, + distilledArguments, + ); + return { + fieldConfig, + fieldName: operationId, + }; + } + + toGqlSchema(): G.GraphQLSchema { + const { Mutation, Query } = Object.entries(this.document.paths).reduce( + ((acc, [urlPath, pathItemObject]) => { + if (pathItemObject) { + const { parameters } = pathItemObject; + httpMethods.forEach((httpMethod) => { + if (httpMethod in pathItemObject) { + const { fieldConfig, fieldName } = this.processOperation( + urlPath, + httpMethod, + pathItemObject[httpMethod] as OpenAPIV3.OperationObject, + parameters, + ); + acc[httpMethod === `get` ? `Query` : `Mutation`][fieldName] = + fieldConfig; + } + }); + } + return acc; + }), + { Mutation: {}, Query: {} } as { + Mutation: Record>; + Query: Record>; + }, + ); + const schema = new G.GraphQLSchema({ + query: R.isEmpty(Query) + ? this.toOutputType( + emptySchemaObject, + `Query`, + ) as G.GraphQLObjectType + : new G.GraphQLObjectType({ + name: `Query`, + fields: Query, + }), + mutation: R.isEmpty(Mutation) ? null : new G.GraphQLObjectType({ + name: `Mutation`, + fields: Mutation, + }), + }); + return this.interfaceExtension.extendSchema(schema); + } +} diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.test.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.test.ts new file mode 100644 index 00000000000..f44d4e8afce --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.test.ts @@ -0,0 +1,88 @@ +import { Spy, spy } from "https://deno.land/x/mock@v0.9.4/mod.ts"; +import { + assertEquals, + assertNotStrictEquals, +} from "https://deno.land/std@0.80.0/testing/asserts.ts"; + +import { OpenAPIV3 } from "../../deps.ts"; +import { loadFile } from "../utils/deno.loadFile.ts"; +import { + dereference, + dereferenceAndDistill, + resolveRef, +} from "./utils.ts"; + +const petStore = await loadFile( + `./__fixtures__/petstore.yaml`, +); + +Deno.test({ + name: `"resolveRef" should resolve local references`, + fn() { + assertEquals( + resolveRef(petStore, `#/components/schemas/Error`), + petStore.components!.schemas!.Error, + ); + }, +}); + +const boundDereference = dereference(petStore); +Deno.test({ + name: `"dereferenceAndDistill" should pass input to distiller`, + fn() { + const distillSpy: Spy = spy(); + const boundDistiller = dereferenceAndDistill(boundDereference, distillSpy); + const schema = { type: `integer`, format: `int32` }; + const extraArg = `foo`; + boundDistiller(schema, extraArg); + assertEquals(distillSpy.calls, [{ args: [schema, extraArg] }]); + }, +}); +Deno.test({ + name: `"dereferenceAndDistill" should handle input dereference`, + fn() { + const distillSpy: Spy = spy(); + const boundDistiller = dereferenceAndDistill(boundDereference, distillSpy); + const schema = { $ref: "#/components/schemas/Pets" }; + const extraArg = `foo`; + boundDistiller(schema, extraArg); + assertNotStrictEquals( + distillSpy.calls, + [{ args: [petStore.components!.schemas!.Pets, extraArg] }], + ); + }, +}); +Deno.test({ + name: `"dereferenceAndDistill" should set title to OAS schema references.`, + fn() { + const distillSpy: Spy = spy(); + const boundDistiller = dereferenceAndDistill(boundDereference, distillSpy); + const schema = { $ref: "#/components/schemas/Pets" }; + const extraArg = `foo`; + boundDistiller(schema, extraArg); + assertEquals( + distillSpy.calls, + [{ + args: [ + { ...petStore.components!.schemas!.Pets, title: `Pets` }, + extraArg, + ], + }], + ); + }, +}); +Deno.test({ + name: + `"dereferenceAndDistill" should memoize result when schema is a reference`, + fn() { + const distillSpy: Spy = spy(); + const boundDistiller = dereferenceAndDistill(boundDereference, distillSpy); + const schema = { $ref: "#/components/schemas/Pets" }; + const extraArg = `foo`; + boundDistiller(schema, extraArg); + boundDistiller(schema, extraArg); + boundDistiller(schema, extraArg); + boundDistiller(schema, extraArg); + assertEquals(distillSpy.calls.length, 1); + }, +}); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.ts new file mode 100644 index 00000000000..596864709a8 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/openApiToGraphQL/utils.ts @@ -0,0 +1,124 @@ +import { JsonPointer, OpenAPIV3, R } from "../../deps.ts"; +import { + isValidGraphQLName, +} from "../graphql/validName.ts"; +import { + HttpMethod, + OpenAPIV3Algebraic, + OpenAPIV3Enum, + OpenAPIV3Object, + OpenAPIV3Scalar, +} from "../types.d.ts"; + +export const httpMethods: HttpMethod[] = [ + `delete`, + `get`, + `patch`, + `post`, + `put`, +]; + +export const createOneOf = ( + objects: Array, +): OpenAPIV3Algebraic => ({ + oneOf: objects, +}); + +export const isSuccessStatusCode = (statusCode: string): boolean => + statusCode.startsWith(`2`); + +/** + * GraphQL does not support empty object, every object type must have at least one property. + * This declaration with boolean `_` attribute thus represents virtually empty object. + */ +export const emptySchemaObject: OpenAPIV3.SchemaObject = { + type: "object", + properties: { _: { type: "boolean" } }, +}; + +const mediaJSON = /application\/json/i; +export const graphqlCompliantMediaType = ( + obj: OpenAPIV3.RequestBodyObject | OpenAPIV3.ResponseObject, +): OpenAPIV3.ArraySchemaObject | OpenAPIV3.SchemaObject => { + if (!obj.content) { + // Empty response + return { type: "boolean" }; + } + const jsonResponse = Object.entries(obj.content).find(([mediaType]) => + mediaJSON.test(mediaType) + ); + if (!jsonResponse) { + // response exists but is not JSON + return { type: "string" }; + } + + const jsonResponseSchema = jsonResponse[1].schema as OpenAPIV3.SchemaObject; + return !jsonResponseSchema || + (jsonResponseSchema.type === "object" && + R.isEmpty(jsonResponseSchema.properties)) + ? emptySchemaObject + : jsonResponseSchema; +}; + +export const isOpenAPIV3Document = ( + // deno-lint-ignore no-explicit-any + fileContent: any, +): fileContent is OpenAPIV3.Document => fileContent?.openapi?.startsWith?.(`3`); + +export const isAlgebraic = ( + schema: OpenAPIV3.SchemaObject, +): schema is OpenAPIV3Algebraic => + Boolean(schema.allOf || schema.anyOf || schema.oneOf); + +export const isEnum = ( + schema: OpenAPIV3.SchemaObject, +): schema is OpenAPIV3Enum => Boolean(schema.enum); + +export const isList = ( + schema: OpenAPIV3.SchemaObject, +): schema is OpenAPIV3.ArraySchemaObject => schema.type === `array`; + +export const isNonArray = ( + obj: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject, +): obj is OpenAPIV3.NonArraySchemaObject => + !(`$ref` in obj) && obj.type !== `array`; + +export const isObject = ( + schema: OpenAPIV3.SchemaObject, +): schema is OpenAPIV3Object => schema.type === `object`; + +export const isReference = ( + schema: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject, +): schema is OpenAPIV3.ReferenceObject => `$ref` in schema; + +export const isScalar = ( + schema: OpenAPIV3.SchemaObject, +): schema is OpenAPIV3Scalar => { + const { type } = schema; + return type === `boolean` || type === `integer` || type === `number` || + type === `string`; +}; + +export const lastJsonPointerPathSegment = (ref: string): string => + R.last(JsonPointer.decode(ref)); + +/** + * Returns target of the JSON pointer in the document. Currently supports only + * local pointers. + */ +export const resolveRef = ( + document: OpenAPIV3.Document, + $ref: string, +): Dereferenced => { + const dereferenced = JsonPointer.get(document, $ref); + if (!dereferenced) { + throw new Error( + `Failed to dereference JSON pointer: "${$ref}"`, + ); + } + return dereferenced; +}; + +// deno-lint-ignore no-explicit-any +export const isValidGqlEnumValue = (value: any): value is string => + typeof value === "string" && isValidGraphQLName(value); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/refine.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/refine.ts new file mode 100644 index 00000000000..9b4e54f3230 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/refine.ts @@ -0,0 +1,222 @@ +import { G, R } from "../deps.ts"; +import { stringify } from "./log.ts"; +import { GraphQLFurnace } from "./openApiToGraphQL/index.ts"; +import { isOpenAPIV3Document } from "./openApiToGraphQL/utils.ts"; +import { ApiArtifacts, Enums, NonBodyArg, PossibleType } from "./types.d.ts"; +import { + oasPathParamsToColonParams, +} from "./utils/oasPathParamsToColonParams.ts"; + +const getGraphQLTypeName = ( + outputType: G.GraphQLOutputType, +): string | undefined => + // deno-lint-ignore no-explicit-any + (outputType as any).ofType + ? // deno-lint-ignore no-explicit-any + getGraphQLTypeName((outputType as any).ofType) + : G.isScalarType(outputType) + ? undefined + : // deno-lint-ignore no-explicit-any + (outputType as any).name; + +type TypeIntrospection = { + kind: string; + name: string; + ofType?: TypeIntrospection; +}; +type IntrospectionResult = { + data: { + __schema: { + types: { + fields?: Array<{ + name: string; + type: TypeIntrospection; + }>; + kind: string; + name: string; + possibleTypes?: { name: string; fields: { name: string }[] }[]; + }[]; + }; + }; +}; + +const getIntrospectionQueryResult = ( + schema: G.GraphQLSchema, +): Promise => { + const document = G.parse(` + { + __schema { + types { + fields { + name + type { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + } + } + } + } + } + kind + name + possibleTypes { + name + fields(includeDeprecated: true) { + name + } + } + } + } + } +`); + // deno-lint-ignore no-explicit-any + return (G as any).execute({ document, schema }); +}; + +const getPossibleTypes = ( + { data: { __schema: { types } } }: IntrospectionResult, +): ApiArtifacts["possibleTypes"] => { + const byUniqPropetiesLengthDesc = (a: PossibleType, b: PossibleType) => + b.uniqProperties.length - a.uniqProperties.length; + const toName = ({ name }: { name: string }) => name; + return types.reduce( + (acc, { kind, name, possibleTypes: possTypes }) => { + if (possTypes) { + const withUniqProps = possTypes.map(( + { fields, name }, + ) => [name, fields.map(toName)] as [string, string[]]).map( + ([name, properties], idx, arr) => { + const otherTypesProperties = + (R.remove(idx, 1, arr) as [string, string[]][]) + .reduce( + (acc, [, pNames]) => acc.concat(pNames), + [] as string[], + ); + const uniqProperties = R.difference( + properties, + otherTypesProperties, + ); + return { name, uniqProperties }; + }, + ); + acc[name] = { + kind: kind as `INTERFACE` | `UNION`, + possibleTypes: withUniqProps.sort(byUniqPropetiesLengthDesc), + }; + } + return acc; + }, + {} as ApiArtifacts["possibleTypes"], + ); +}; + +const unwrapOutputType = ( + type: TypeIntrospection, +): { kind: `OBJECT` | `UNION`; name: string } | undefined => + type.kind === `OBJECT` || type.kind === `UNION` + ? // deno-lint-ignore no-explicit-any + type as any + : type.ofType + ? unwrapOutputType(type.ofType) + : undefined; +const getObjectsRelation = ( + { data: { __schema: { types } } }: IntrospectionResult, +): ApiArtifacts["objectsRelation"] => { + const ignoreObjectNameRe = /^(?:Mutation|Query|Subscription|__.+)$/; + return types.reduce((objectsRelation, type) => { + if (type.kind === `OBJECT` && !ignoreObjectNameRe.test(type.name)) { + const fieldsToTypenameMap = type.fields!.reduce((acc, child) => { + const childObjectType = unwrapOutputType(child.type); + if (childObjectType) { + acc[child.name] = childObjectType.name; + } + return acc; + }, {} as Record); + if (!R.isEmpty(fieldsToTypenameMap)) { + objectsRelation[type.name] = fieldsToTypenameMap; + } + } + return objectsRelation; + }, {} as ApiArtifacts["objectsRelation"]); +}; + +export const refine = async (openApi: Record) => { + if (!isOpenAPIV3Document(openApi)) { + throw new Error( + `File does not contain a valid OpenAPIV3 document: + + ${stringify(openApi, { maxDepth: 1 })}`, + ); + } + + const enums: Enums = new Map(); + const objectsRename: ApiArtifacts["objectsRename"] = {}; + const operations: ApiArtifacts["operations"] = []; + + const gqlSchema = new GraphQLFurnace( + openApi, + { + onEnumDistilled(name, source) { + enums.set(name, source.enum); + }, + onPropertyRenamed(objectName, originalName, changedName) { + (objectsRename[objectName] || (objectsRename[objectName] = {}))[ + originalName + ] = changedName; + }, + onOperationDistilled( + url, + httpMethod, + operationId, + fieldConfig, + parameters, + ) { + const nonBodyParameters = parameters?.reduce( + (acc, param) => { + if (param.in !== "body") { + acc.push( + { + in: param.in, + name: param.name, + originalName: param.originalName, + }, + ); + } + return acc; + }, + [] as Array<{ in: NonBodyArg; name: string; originalName?: string }>, + ); + operations.push({ + httpMethod, + operationId, + path: oasPathParamsToColonParams(url), + responseType: getGraphQLTypeName(fieldConfig.type), + parameters: R.isEmpty(nonBodyParameters) + ? undefined + : nonBodyParameters, + }); + }, + }, + ).toGqlSchema(); + const introspectionResult = await getIntrospectionQueryResult(gqlSchema); + return { + apiArtifacts: { + objectsRelation: getObjectsRelation(introspectionResult), + objectsRename, + operations, + possibleTypes: getPossibleTypes(introspectionResult), + } as ApiArtifacts, + enums, + openApi, + gqlSchema, + }; +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/typeScript/enumPrinter.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/typeScript/enumPrinter.ts new file mode 100644 index 00000000000..9360d1a775b --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/typeScript/enumPrinter.ts @@ -0,0 +1,11 @@ +import { Enums } from "../types.d.ts"; +import { upperSnakeCase } from "../utils/upperSnakeCase.ts"; + +const printEnum = (name: string, values: string[]): string => + `export enum ${name} { +${values.map((v) => ` ${upperSnakeCase(v)} = "${v}",`).join(`\n`)} +}`; + +export const printEnums = (enums: Enums): string => + Array.from(enums.entries()).map(([name, values]) => printEnum(name, values)) + .join(`\n`); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/types.d.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/types.d.ts new file mode 100644 index 00000000000..18592fd8b62 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/types.d.ts @@ -0,0 +1,89 @@ +import { G, OpenAPIV3 } from "../deps.ts"; + +type ParentObjectName = string; +type FieldName = string; +type ChildObjectName = string; +type GraphQLInvalidFieldName = string; + +export type BodyArg = `body`; +export type NonBodyArg = `cookie` | `header` | `path` | `query`; + +export type Enums = Map; + +export type PossibleType = { + name: string; + uniqProperties: string[]; +}; + +export type ApiArtifacts = { + objectsRelation: Record>; + objectsRename: Record< + ParentObjectName, + Record + >; + operations: Array<{ + httpMethod: HttpMethod; + operationId: string; + path: string; + responseType?: string; + parameters?: Array<{ + in: NonBodyArg; + name: string; + }>; + }>; + possibleTypes: Record< + string, + { + kind: `INTERFACE` | `UNION`; + possibleTypes: PossibleType[]; + } + >; +}; + +export type DistilledOperationParameter = { + description?: string; + in: BodyArg | NonBodyArg; + /** + * Response body uses reserved name `body` + */ + name: BodyArg | string; + originalName?: string; + required: boolean; + type: G.GraphQLInputType; +}; + +export type GQLFieldConfig = + // deno-lint-ignore no-explicit-any + | G.GraphQLFieldConfig + | G.GraphQLInputFieldConfig; + +// deno-lint-ignore no-explicit-any +export type GQLFieldMap = G.GraphQLFieldMap | G.GraphQLInputFieldMap; + +export type GQLObject = + // deno-lint-ignore no-explicit-any + | G.GraphQLObjectType + | G.GraphQLInputObjectType; + +// currently don't care about "head" and "options" +export type HttpMethod = "delete" | "get" | "patch" | "post" | "put"; + +export type OpenAPIV3Algebraic = + & OpenAPIV3.NonArraySchemaObject + & ( + | Required> + | Required> + | Required> + ); + +export type OpenAPIV3Enum = + & OpenAPIV3.NonArraySchemaObject + & Required>; + +export type OpenAPIV3Object = OpenAPIV3.NonArraySchemaObject & { + type: `object`; +} & Required>; + +export type OpenAPIV3Scalar = OpenAPIV3.NonArraySchemaObject & { + type: `boolean` | `integer` | `number` | `string`; +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/deno.loadFile.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/deno.loadFile.ts new file mode 100644 index 00000000000..1319edc0603 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/deno.loadFile.ts @@ -0,0 +1,16 @@ +import * as YAML from "https://deno.land/std@0.80.0/encoding/yaml.ts"; + +export const loadFile = async >( + path: string, +): Promise => { + const fileContent = () => Deno.readTextFile(path); + if (path.endsWith(".json")) { + return JSON.parse(await fileContent()); + } + if (/\.ya?ml$/.test(path)) { + return YAML.parse(await fileContent()) as T; + } + throw new Error( + `Cannot load file "${path}"./n/nOnly .json and .yml or .yaml are supported`, + ); +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/memoizeByFirstTruthyArg.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/memoizeByFirstTruthyArg.ts new file mode 100644 index 00000000000..0e68caddb45 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/memoizeByFirstTruthyArg.ts @@ -0,0 +1,12 @@ +export const memoizeByTruthyFirstArg = ( + cb: (first: any, ...other: any[]) => any, +) => { + const cache = new Map(); + return (first: any, ...other: any[]): any => { + if (!first) return cb(first, ...other); + if (cache.has(first)) return cache.get(first); + const res = cb(first, ...other); + cache.set(first, res); + return res; + }; +}; diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams test.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams test.ts new file mode 100644 index 00000000000..33fc05e7312 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams test.ts @@ -0,0 +1,52 @@ +import { assertEquals } from "https://deno.land/std@0.80.0/testing/asserts.ts"; + +import { oasPathParamsToColonParams } from "./oasPathParamsToColonParams.ts"; + +Deno.test({ + name: `"oasPathParamsToColonParams" should not change url without parameters`, + fn() { + assertEquals( + oasPathParamsToColonParams(`/api/gate`), + `/api/gate`, + ); + }, +}); + +Deno.test( + { + name: + `"oasPathParamsToColonParams" should convert OpenAPI path parameter into colon parameter`, + fn() { + assertEquals( + oasPathParamsToColonParams(`/api/gate/{applicationSlug}`), + `/api/gate/:applicationSlug`, + ); + }, + }, +); + +Deno.test({ + name: + `"oasPathParamsToColonParams" should handle path parameter in middle of the path`, + fn() { + assertEquals( + oasPathParamsToColonParams( + `/api/gate/{applicationSlug}/login`, + ), + `/api/gate/:applicationSlug/login`, + ); + }, +}); + +Deno.test({ + name: + `"oasPathParamsToColonParams" should handle more than one parameter in path`, + fn() { + assertEquals( + oasPathParamsToColonParams( + `/my/contract/billing/{billingId}/spreadingOptions/{monthsCount}`, + ), + `/my/contract/billing/:billingId/spreadingOptions/:monthsCount`, + ); + }, +}); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams.ts new file mode 100644 index 00000000000..bb558dde1d6 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/oasPathParamsToColonParams.ts @@ -0,0 +1,8 @@ +import { R } from "../../deps.ts"; + +/** + * Converts OpenAPI URL path parameters (e.g. "/{parameter}") to colon parameters (e.g. "/:parameter") + */ +export const oasPathParamsToColonParams: (uri: string) => string = + // deno-lint-ignore no-explicit-any + (R as any).replace(/\/\{(\w+)\}(?=\/|$)/g, `/:$1`); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase test.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase test.ts new file mode 100644 index 00000000000..74d52eee1f1 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase test.ts @@ -0,0 +1,18 @@ +import { assertEquals } from "https://deno.land/std@0.80.0/testing/asserts.ts"; + +import { upperSnakeCase } from "./upperSnakeCase.ts"; + +Deno.test({ + name: `"toUpperSnakeCase" should convert to snake case`, + fn() { + [ + [`foo`, `FOO`], + [`foo1`, `FOO_1`], + [`fooBar`, `FOO_BAR`], + [`_f`, `F`], + [`foo-bar`, `FOO_BAR`], + ].forEach(([input, expected]) => { + assertEquals(upperSnakeCase(input), expected); + }); + }, +}); diff --git a/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase.ts b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase.ts new file mode 100644 index 00000000000..f115eae5c6a --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/.case1/input/src/utils/upperSnakeCase.ts @@ -0,0 +1,8 @@ +import { R } from "../../deps.ts"; +import snakeCase from "https://raw.githubusercontent.com/lodash/lodash/master/snakeCase.js"; + +// deno-lint-ignore no-explicit-any +export const upperSnakeCase = (R as any).compose( + R.toUpper, + snakeCase, +); \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case2/input/entry.ts b/bundler/tests/deno-exec/deno-9307/case2/input/entry.ts new file mode 100644 index 00000000000..32d91558d4e --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case2/input/entry.ts @@ -0,0 +1 @@ +export * from 'https://deno.land/x/graphql_deno@v15.0.0/mod.ts' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case3/input/entry.ts b/bundler/tests/deno-exec/deno-9307/case3/input/entry.ts new file mode 100644 index 00000000000..909da71dec9 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case3/input/entry.ts @@ -0,0 +1 @@ +export * as G from 'https://deno.land/x/graphql_deno@v15.0.0/mod.ts' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case4/input/child.ts b/bundler/tests/deno-exec/deno-9307/case4/input/child.ts new file mode 100644 index 00000000000..a8e8a89b45e --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case4/input/child.ts @@ -0,0 +1,5 @@ +import { Parent } from "./parent"; + +export const Child1 = new Parent() + +export const Child2 = new Parent() \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case4/input/deps.ts b/bundler/tests/deno-exec/deno-9307/case4/input/deps.ts new file mode 100644 index 00000000000..0cefc9b04c1 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case4/input/deps.ts @@ -0,0 +1 @@ +export { Parent, Child1, Child2 } from './gql' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case4/input/entry.ts b/bundler/tests/deno-exec/deno-9307/case4/input/entry.ts new file mode 100644 index 00000000000..3902c0bb7c0 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case4/input/entry.ts @@ -0,0 +1 @@ +export * as G from './deps' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case4/input/gql.ts b/bundler/tests/deno-exec/deno-9307/case4/input/gql.ts new file mode 100644 index 00000000000..37725787909 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case4/input/gql.ts @@ -0,0 +1,2 @@ +export { Parent } from './parent' +export { Child1, Child2 } from './child' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case4/input/parent.ts b/bundler/tests/deno-exec/deno-9307/case4/input/parent.ts new file mode 100644 index 00000000000..dce58469669 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case4/input/parent.ts @@ -0,0 +1 @@ +export class Parent { } \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case5/input/child.ts b/bundler/tests/deno-exec/deno-9307/case5/input/child.ts new file mode 100644 index 00000000000..a8e8a89b45e --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case5/input/child.ts @@ -0,0 +1,5 @@ +import { Parent } from "./parent"; + +export const Child1 = new Parent() + +export const Child2 = new Parent() \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case5/input/deps.ts b/bundler/tests/deno-exec/deno-9307/case5/input/deps.ts new file mode 100644 index 00000000000..0cefc9b04c1 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case5/input/deps.ts @@ -0,0 +1 @@ +export { Parent, Child1, Child2 } from './gql' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case5/input/entry.ts b/bundler/tests/deno-exec/deno-9307/case5/input/entry.ts new file mode 100644 index 00000000000..3902c0bb7c0 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case5/input/entry.ts @@ -0,0 +1 @@ +export * as G from './deps' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case5/input/gql.ts b/bundler/tests/deno-exec/deno-9307/case5/input/gql.ts new file mode 100644 index 00000000000..07a4008bc69 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case5/input/gql.ts @@ -0,0 +1,2 @@ +export { Child1, Child2 } from './child' +export { Parent } from './parent' \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case5/input/parent.ts b/bundler/tests/deno-exec/deno-9307/case5/input/parent.ts new file mode 100644 index 00000000000..dce58469669 --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case5/input/parent.ts @@ -0,0 +1 @@ +export class Parent { } \ No newline at end of file diff --git a/bundler/tests/deno-exec/deno-9307/case6/input/entry.ts b/bundler/tests/deno-exec/deno-9307/case6/input/entry.ts new file mode 100644 index 00000000000..1bdb8b7e30b --- /dev/null +++ b/bundler/tests/deno-exec/deno-9307/case6/input/entry.ts @@ -0,0 +1,2 @@ +import * as foo from 'https://deno.land/x/graphql_deno@v15.0.0/mod.ts' +console.log(foo) \ No newline at end of file diff --git a/bundler/tests/deno.rs b/bundler/tests/deno.rs index 93899ecd9ba..70781c4d495 100644 --- a/bundler/tests/deno.rs +++ b/bundler/tests/deno.rs @@ -990,7 +990,6 @@ fn run(url: &str, exports: &[&str]) { let output = Command::new("deno") .arg("run") - .arg("--allow-all") .arg("--no-check") .arg(&path) .stdout(Stdio::inherit()) diff --git a/bundler/tests/deno/issue-8486-1/input.ts b/bundler/tests/deno/issue-8486-1/input.ts index d1931067636..b9dc38d7b17 100644 --- a/bundler/tests/deno/issue-8486-1/input.ts +++ b/bundler/tests/deno/issue-8486-1/input.ts @@ -3,9 +3,9 @@ import * as log from "https://deno.land/std/log/mod.ts"; export async function myCLI(): Promise { await log.setup({ handlers: { - file: new log.handlers.FileHandler("DEBUG", { - filename: 'my.log' - }), + // file: new log.handlers.FileHandler("DEBUG", { + // filename: 'my.log' + // }), console: new log.handlers.ConsoleHandler("INFO") }, loggers: { diff --git a/bundler/tests/fixture/deno-8211-3/output/entry.inlined.ts b/bundler/tests/fixture/deno-8211-3/output/entry.inlined.ts index 11ce156acb6..1ca6707a69b 100644 --- a/bundler/tests/fixture/deno-8211-3/output/entry.inlined.ts +++ b/bundler/tests/fixture/deno-8211-3/output/entry.inlined.ts @@ -244,75 +244,6 @@ function timeObject(obj) { ]); } const ianaRegex = /[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/; -class Zone { - get type() { - throw new ZoneIsAbstractError(); - } - get name() { - throw new ZoneIsAbstractError(); - } - get universal() { - throw new ZoneIsAbstractError(); - } - offsetName(ts, opts) { - throw new ZoneIsAbstractError(); - } - formatOffset(ts, format) { - throw new ZoneIsAbstractError(); - } - offset(ts) { - throw new ZoneIsAbstractError(); - } - equals(otherZone) { - throw new ZoneIsAbstractError(); - } - get isValid() { - throw new ZoneIsAbstractError(); - } -} -class InvalidZone extends Zone { - constructor(zoneName){ - super(); - this.zoneName = zoneName; - } - get type() { - return "invalid"; - } - get name() { - return this.zoneName; - } - get universal() { - return false; - } - offsetName() { - return null; - } - formatOffset() { - return ""; - } - offset() { - return NaN; - } - equals() { - return false; - } - get isValid() { - return false; - } -} -class Invalid { - constructor(reason3, explanation1){ - this.reason = reason3; - this.explanation = explanation1; - } - toMessage() { - if (this.explanation) { - return `${this.reason}: ${this.explanation}`; - } else { - return this.reason; - } - } -} const n1 = "numeric", s1 = "short", l = "long"; const DATE_SHORT = { year: n1, @@ -1098,6 +1029,32 @@ class Formatter { return stringifyTokens(tokens, tokenToString(collapsed)); } } +class Zone { + get type() { + throw new ZoneIsAbstractError(); + } + get name() { + throw new ZoneIsAbstractError(); + } + get universal() { + throw new ZoneIsAbstractError(); + } + offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + offset(ts) { + throw new ZoneIsAbstractError(); + } + equals(otherZone) { + throw new ZoneIsAbstractError(); + } + get isValid() { + throw new ZoneIsAbstractError(); + } +} let singleton = null; class FixedOffsetZone extends Zone { static get utcInstance() { @@ -1401,6 +1358,36 @@ function parseDigits(str) { function digitRegex({ numberingSystem }, append = "") { return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`); } +class InvalidZone extends Zone { + constructor(zoneName){ + super(); + this.zoneName = zoneName; + } + get type() { + return "invalid"; + } + get name() { + return this.zoneName; + } + get universal() { + return false; + } + offsetName() { + return null; + } + formatOffset() { + return ""; + } + offset() { + return NaN; + } + equals() { + return false; + } + get isValid() { + return false; + } +} function normalizeZone(input, defaultZone) { let offset1; if (isUndefined(input) || input === null) { @@ -1423,6 +1410,19 @@ function normalizeZone(input, defaultZone) { return new InvalidZone(input); } } +class Invalid { + constructor(reason3, explanation1){ + this.reason = reason3; + this.explanation = explanation1; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } +} let singleton1 = null; class LocalZone extends Zone { static get instance() { @@ -1837,6 +1837,81 @@ function hasInvalidTimeData(obj) { } else return false; } const INVALID = "Invalid DateTime"; +let intlDTCache = { +}; +const INVALID1 = "Invalid Duration"; +let now = ()=>Date.now() +, defaultZone = null, defaultLocale = null, defaultNumberingSystem = null, defaultOutputCalendar = null, throwOnInvalid = false; +const INVALID2 = "Invalid Interval"; +class Info { + static hasDST(zone = Settings.defaultZone) { + const proto = DateTime.local().setZone(zone).set({ + month: 12 + }); + return !zone.universal && proto.offset !== proto.set({ + month: 6 + }).offset; + } + static isValidIANAZone(zone) { + return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone); + } + static normalizeZone(input) { + return normalizeZone(input, Settings.defaultZone); + } + static months(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { + }) { + return Locale.create(locale, numberingSystem, outputCalendar).months(length); + } + static monthsFormat(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { + }) { + return Locale.create(locale, numberingSystem, outputCalendar).months(length, true); + } + static weekdays(length = "long", { locale =null , numberingSystem =null } = { + }) { + return Locale.create(locale, numberingSystem, null).weekdays(length); + } + static weekdaysFormat(length = "long", { locale =null , numberingSystem =null } = { + }) { + return Locale.create(locale, numberingSystem, null).weekdays(length, true); + } + static meridiems({ locale =null } = { + }) { + return Locale.create(locale).meridiems(); + } + static eras(length = "short", { locale =null } = { + }) { + return Locale.create(locale, null, "gregory").eras(length); + } + static features() { + let intl = false, intlTokens = false, zones = false, relative = false; + if (hasIntl()) { + intl = true; + intlTokens = hasFormatToParts(); + relative = hasRelative(); + try { + zones = new Intl.DateTimeFormat("en", { + timeZone: "America/New_York" + }).resolvedOptions().timeZone === "America/New_York"; + } catch (e) { + zones = false; + } + } + return { + intl, + intlTokens, + zones, + relative + }; + } +} +function dayDiff(earlier, later) { + const utcDayStart = (dt)=>dt.toUTC(0, { + keepLocalTime: true + }).startOf("day").valueOf() + , ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration.fromMillis(ms).as("days")); +} +const MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; function unsupportedZone(zone) { return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`); } @@ -2812,8 +2887,6 @@ function friendlyDateTime(dateTimeish) { throw new InvalidArgumentError(`Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`); } } -let intlDTCache = { -}; function getCachedDTF(locString, opts = { }) { const key = JSON.stringify([ @@ -3214,7 +3287,6 @@ class Locale { return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; } } -const INVALID1 = "Invalid Duration"; const lowOrderMatrix = { weeks: { days: 7, @@ -3648,8 +3720,6 @@ function friendlyDuration(durationish) { throw new InvalidArgumentError(`Unknown duration argument ${durationish} of type ${typeof durationish}`); } } -let now = ()=>Date.now() -, defaultZone = null, defaultLocale = null, defaultNumberingSystem = null, defaultOutputCalendar = null, throwOnInvalid = false; class Settings { static get now() { return now; @@ -3699,7 +3769,6 @@ class Settings { IANAZone.resetCache(); } } -const INVALID2 = "Invalid Interval"; function validateStartEnd(start, end) { if (!start || !start.isValid) { return Interval.invalid("missing or invalid start"); @@ -3998,74 +4067,6 @@ class Interval { return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); } } -class Info { - static hasDST(zone = Settings.defaultZone) { - const proto = DateTime.local().setZone(zone).set({ - month: 12 - }); - return !zone.universal && proto.offset !== proto.set({ - month: 6 - }).offset; - } - static isValidIANAZone(zone) { - return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone); - } - static normalizeZone(input) { - return normalizeZone(input, Settings.defaultZone); - } - static months(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { - }) { - return Locale.create(locale, numberingSystem, outputCalendar).months(length); - } - static monthsFormat(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { - }) { - return Locale.create(locale, numberingSystem, outputCalendar).months(length, true); - } - static weekdays(length = "long", { locale =null , numberingSystem =null } = { - }) { - return Locale.create(locale, numberingSystem, null).weekdays(length); - } - static weekdaysFormat(length = "long", { locale =null , numberingSystem =null } = { - }) { - return Locale.create(locale, numberingSystem, null).weekdays(length, true); - } - static meridiems({ locale =null } = { - }) { - return Locale.create(locale).meridiems(); - } - static eras(length = "short", { locale =null } = { - }) { - return Locale.create(locale, null, "gregory").eras(length); - } - static features() { - let intl3 = false, intlTokens = false, zones = false, relative = false; - if (hasIntl()) { - intl3 = true; - intlTokens = hasFormatToParts(); - relative = hasRelative(); - try { - zones = new Intl.DateTimeFormat("en", { - timeZone: "America/New_York" - }).resolvedOptions().timeZone === "America/New_York"; - } catch (e) { - zones = false; - } - } - return { - intl: intl3, - intlTokens, - zones, - relative - }; - } -} -function dayDiff(earlier, later) { - const utcDayStart = (dt2)=>dt2.toUTC(0, { - keepLocalTime: true - }).startOf("day").valueOf() - , ms = utcDayStart(later) - utcDayStart(earlier); - return Math.floor(Duration.fromMillis(ms).as("days")); -} function highOrderDiffs(cursor, later, units) { const differs = [ [ @@ -4143,7 +4144,6 @@ function __default(earlier, later, units, opts4) { return duration; } } -const MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; function intUnit(regex, post = (i)=>i ) { return { diff --git a/bundler/tests/fixture/deno-8211-3/output/entry.ts b/bundler/tests/fixture/deno-8211-3/output/entry.ts index de9398b20bb..ab816d64d16 100644 --- a/bundler/tests/fixture/deno-8211-3/output/entry.ts +++ b/bundler/tests/fixture/deno-8211-3/output/entry.ts @@ -244,75 +244,6 @@ function timeObject(obj) { ]); } const ianaRegex = /[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/; -class Zone { - get type() { - throw new ZoneIsAbstractError(); - } - get name() { - throw new ZoneIsAbstractError(); - } - get universal() { - throw new ZoneIsAbstractError(); - } - offsetName(ts, opts) { - throw new ZoneIsAbstractError(); - } - formatOffset(ts, format) { - throw new ZoneIsAbstractError(); - } - offset(ts) { - throw new ZoneIsAbstractError(); - } - equals(otherZone) { - throw new ZoneIsAbstractError(); - } - get isValid() { - throw new ZoneIsAbstractError(); - } -} -class InvalidZone extends Zone { - constructor(zoneName){ - super(); - this.zoneName = zoneName; - } - get type() { - return "invalid"; - } - get name() { - return this.zoneName; - } - get universal() { - return false; - } - offsetName() { - return null; - } - formatOffset() { - return ""; - } - offset() { - return NaN; - } - equals() { - return false; - } - get isValid() { - return false; - } -} -class Invalid { - constructor(reason3, explanation1){ - this.reason = reason3; - this.explanation = explanation1; - } - toMessage() { - if (this.explanation) { - return `${this.reason}: ${this.explanation}`; - } else { - return this.reason; - } - } -} const n1 = "numeric", s1 = "short", l = "long"; const DATE_SHORT = { year: n1, @@ -1098,6 +1029,32 @@ class Formatter { return stringifyTokens(tokens, tokenToString(collapsed)); } } +class Zone { + get type() { + throw new ZoneIsAbstractError(); + } + get name() { + throw new ZoneIsAbstractError(); + } + get universal() { + throw new ZoneIsAbstractError(); + } + offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + offset(ts) { + throw new ZoneIsAbstractError(); + } + equals(otherZone) { + throw new ZoneIsAbstractError(); + } + get isValid() { + throw new ZoneIsAbstractError(); + } +} let singleton = null; class FixedOffsetZone extends Zone { static get utcInstance() { @@ -1401,6 +1358,36 @@ function parseDigits(str) { function digitRegex({ numberingSystem }, append = "") { return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`); } +class InvalidZone extends Zone { + constructor(zoneName){ + super(); + this.zoneName = zoneName; + } + get type() { + return "invalid"; + } + get name() { + return this.zoneName; + } + get universal() { + return false; + } + offsetName() { + return null; + } + formatOffset() { + return ""; + } + offset() { + return NaN; + } + equals() { + return false; + } + get isValid() { + return false; + } +} function normalizeZone(input, defaultZone) { let offset1; if (isUndefined(input) || input === null) { @@ -1423,6 +1410,19 @@ function normalizeZone(input, defaultZone) { return new InvalidZone(input); } } +class Invalid { + constructor(reason3, explanation1){ + this.reason = reason3; + this.explanation = explanation1; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } +} let singleton1 = null; class LocalZone extends Zone { static get instance() { @@ -1837,6 +1837,81 @@ function hasInvalidTimeData(obj) { } else return false; } const INVALID = "Invalid DateTime"; +let intlDTCache = { +}; +const INVALID1 = "Invalid Duration"; +let now = ()=>Date.now() +, defaultZone = null, defaultLocale = null, defaultNumberingSystem = null, defaultOutputCalendar = null, throwOnInvalid = false; +const INVALID2 = "Invalid Interval"; +class Info { + static hasDST(zone = Settings.defaultZone) { + const proto = DateTime.local().setZone(zone).set({ + month: 12 + }); + return !zone.universal && proto.offset !== proto.set({ + month: 6 + }).offset; + } + static isValidIANAZone(zone) { + return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone); + } + static normalizeZone(input) { + return normalizeZone(input, Settings.defaultZone); + } + static months(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { + }) { + return Locale.create(locale, numberingSystem, outputCalendar).months(length); + } + static monthsFormat(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { + }) { + return Locale.create(locale, numberingSystem, outputCalendar).months(length, true); + } + static weekdays(length = "long", { locale =null , numberingSystem =null } = { + }) { + return Locale.create(locale, numberingSystem, null).weekdays(length); + } + static weekdaysFormat(length = "long", { locale =null , numberingSystem =null } = { + }) { + return Locale.create(locale, numberingSystem, null).weekdays(length, true); + } + static meridiems({ locale =null } = { + }) { + return Locale.create(locale).meridiems(); + } + static eras(length = "short", { locale =null } = { + }) { + return Locale.create(locale, null, "gregory").eras(length); + } + static features() { + let intl = false, intlTokens = false, zones = false, relative = false; + if (hasIntl()) { + intl = true; + intlTokens = hasFormatToParts(); + relative = hasRelative(); + try { + zones = new Intl.DateTimeFormat("en", { + timeZone: "America/New_York" + }).resolvedOptions().timeZone === "America/New_York"; + } catch (e) { + zones = false; + } + } + return { + intl, + intlTokens, + zones, + relative + }; + } +} +function dayDiff(earlier, later) { + const utcDayStart = (dt)=>dt.toUTC(0, { + keepLocalTime: true + }).startOf("day").valueOf() + , ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration.fromMillis(ms).as("days")); +} +const MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; const MAX_DATE = 8640000000000000; function unsupportedZone(zone) { return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`); @@ -2813,8 +2888,6 @@ function friendlyDateTime(dateTimeish) { throw new InvalidArgumentError(`Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`); } } -let intlDTCache = { -}; function getCachedDTF(locString, opts = { }) { const key = JSON.stringify([ @@ -3215,7 +3288,6 @@ class Locale { return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; } } -const INVALID1 = "Invalid Duration"; const lowOrderMatrix = { weeks: { days: 7, @@ -3649,8 +3721,6 @@ function friendlyDuration(durationish) { throw new InvalidArgumentError(`Unknown duration argument ${durationish} of type ${typeof durationish}`); } } -let now = ()=>Date.now() -, defaultZone = null, defaultLocale = null, defaultNumberingSystem = null, defaultOutputCalendar = null, throwOnInvalid = false; class Settings { static get now() { return now; @@ -3700,7 +3770,6 @@ class Settings { IANAZone.resetCache(); } } -const INVALID2 = "Invalid Interval"; function validateStartEnd(start, end) { if (!start || !start.isValid) { return Interval.invalid("missing or invalid start"); @@ -3999,74 +4068,6 @@ class Interval { return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); } } -class Info { - static hasDST(zone = Settings.defaultZone) { - const proto = DateTime.local().setZone(zone).set({ - month: 12 - }); - return !zone.universal && proto.offset !== proto.set({ - month: 6 - }).offset; - } - static isValidIANAZone(zone) { - return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone); - } - static normalizeZone(input) { - return normalizeZone(input, Settings.defaultZone); - } - static months(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { - }) { - return Locale.create(locale, numberingSystem, outputCalendar).months(length); - } - static monthsFormat(length = "long", { locale =null , numberingSystem =null , outputCalendar ="gregory" } = { - }) { - return Locale.create(locale, numberingSystem, outputCalendar).months(length, true); - } - static weekdays(length = "long", { locale =null , numberingSystem =null } = { - }) { - return Locale.create(locale, numberingSystem, null).weekdays(length); - } - static weekdaysFormat(length = "long", { locale =null , numberingSystem =null } = { - }) { - return Locale.create(locale, numberingSystem, null).weekdays(length, true); - } - static meridiems({ locale =null } = { - }) { - return Locale.create(locale).meridiems(); - } - static eras(length = "short", { locale =null } = { - }) { - return Locale.create(locale, null, "gregory").eras(length); - } - static features() { - let intl3 = false, intlTokens = false, zones = false, relative = false; - if (hasIntl()) { - intl3 = true; - intlTokens = hasFormatToParts(); - relative = hasRelative(); - try { - zones = new Intl.DateTimeFormat("en", { - timeZone: "America/New_York" - }).resolvedOptions().timeZone === "America/New_York"; - } catch (e) { - zones = false; - } - } - return { - intl: intl3, - intlTokens, - zones, - relative - }; - } -} -function dayDiff(earlier, later) { - const utcDayStart = (dt2)=>dt2.toUTC(0, { - keepLocalTime: true - }).startOf("day").valueOf() - , ms = utcDayStart(later) - utcDayStart(earlier); - return Math.floor(Duration.fromMillis(ms).as("days")); -} function highOrderDiffs(cursor, later, units) { const differs = [ [ @@ -4144,7 +4145,6 @@ function __default(earlier, later, units, opts4) { return duration; } } -const MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; function intUnit(regex, post = (i)=>i ) { return { diff --git a/bundler/tests/fixture/deno-9591/output/entry.inlined.ts b/bundler/tests/fixture/deno-9591/output/entry.inlined.ts index 3b959b19d94..3a28a5a1666 100644 --- a/bundler/tests/fixture/deno-9591/output/entry.inlined.ts +++ b/bundler/tests/fixture/deno-9591/output/entry.inlined.ts @@ -1608,8 +1608,6 @@ function joinGlobs(globs, { extended =false , globstar =false } = { } const mod3 = function() { return { - SEP: SEP, - SEP_PATTERN: SEP_PATTERN, win32: mod1, posix: mod2, basename: basename2, @@ -1627,6 +1625,8 @@ const mod3 = function() { sep: sep2, toFileUrl: toFileUrl2, toNamespacedPath: toNamespacedPath2, + SEP: SEP, + SEP_PATTERN: SEP_PATTERN, globToRegExp, isGlob, normalizeGlob, diff --git a/bundler/tests/fixture/deno-9591/output/entry.ts b/bundler/tests/fixture/deno-9591/output/entry.ts index 69224c991aa..9bb455c935a 100644 --- a/bundler/tests/fixture/deno-9591/output/entry.ts +++ b/bundler/tests/fixture/deno-9591/output/entry.ts @@ -1618,8 +1618,6 @@ function joinGlobs(globs, { extended =false , globstar =false } = { } const mod3 = function() { return { - SEP: SEP, - SEP_PATTERN: SEP_PATTERN, win32: win32, posix: posix, basename: basename2, @@ -1637,6 +1635,8 @@ const mod3 = function() { sep: sep2, toFileUrl: toFileUrl2, toNamespacedPath: toNamespacedPath2, + SEP: SEP, + SEP_PATTERN: SEP_PATTERN, globToRegExp, isGlob, normalizeGlob,