mrs-toolbox-cli 11.1.0 → 11.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/clikt-clikt.js +1236 -1236
  2. package/cryptography-kotlin-cryptography-provider-webcrypto.js +76 -76
  3. package/kotlin-kotlin-stdlib.js +15 -15
  4. package/kotlin-kotlin-stdlib.js.map +1 -1
  5. package/mrs-toolbox-cli.js +223 -223
  6. package/npm-cache/_cacache/content-v2/sha512/{4a/f3/6053c5c33d1af312b316ef185ecb2f1aac6c896061a8eb341d6a290d429889292d5cabdfde04961141742464c931042472aed337ab06efeb4ce9162cc9e5 → 02/08/fd72eaa3d16520ee7bad0d5fd991a8fbbed1ce91c615b7f1ee0779f1ff29455b71dc23f1e1bb85e8d43c96e50d0c2f2642ef38162d7a4f893a5dcf959bb3} +1 -1
  7. package/npm-cache/_cacache/content-v2/sha512/04/b5/95a497e81d4e8e1b2d5f1e0ce73c2abf78ff0c0437d841dba0e88972be9e8f29eff6d2c5352c7f8499dfdd36cec5c829b30ddb63964e12ef3ef7e086f277 +0 -0
  8. package/npm-cache/_cacache/content-v2/sha512/{32/6c/6f4e14d3b4e498920caaa1d4e89a3c27e20942f7558ced7cab7c77f6012fb023beec6182d0c84151dc91143f5cd2cdb288e1a82c0d39dec15edafa07eccf → 05/a5/adbda03e0ac54290c080ea0b372368d5a242652f019167795495bca9a7cc3bf16629aa3985da19598f537e15376a1b446ffe6461c9a667b9ddbc407f717f} +1 -1
  9. package/npm-cache/_cacache/content-v2/sha512/{88/bb/351c1977cba0a94bc6308f9a384a7f5522f87630bca8275879ab5a4f272ee5df32af86aabed29a4adc6bd3a7f8c837c9998fe0fc219a9c4cd7473ac7700b → 08/68/c7e2b7b1cc5f473b4e979870aeda5c9f3dce9a610751b8a3fd5a73a3a27139b08a40a5aa85f06349d588c4e79eaa09ea899267ab9eaf472647d8f3af1985} +1 -1
  10. package/npm-cache/_cacache/content-v2/sha512/08/6c/e778fa0bfb5a16092cea9a4be560ca5640466884f4772e7b632975df547fa887a29df1dfb21cb923a62006c0f20703115ee0e02adda29f467bffc2a588c8 +0 -0
  11. package/npm-cache/_cacache/content-v2/sha512/{e5/2f/61aa27486259f00747fbce3a14ddc30a69f266eb1770575b5338432a153ac8201393816787fe34b4e818a31bc24f58fc0a00badea658089647ad2d3f9e41 → 0b/42/d99ba6f388a8a5b40c5b326991ca27343af0feabd2298fe1f307b1acee44ddfcd85d1793b247195f6becc1f84bcccb292eff259e4a3caa9c55610e1f5eb9} +1 -1
  12. package/npm-cache/_cacache/content-v2/sha512/{33/27/542a203247abf3d607a18549791dae97598f5f259e80d7b981c068ac4bc4d077f3e2fb31292a12bfcef2fc2b0f1ead798f0453b56a1ee72790052967121e → 10/ee/5181e3cf9c221572313eab05207744a0f818e15ffb58816152a340ba9f77ecc56f39e11017dde296a23666444ecfb1c3b6989ee1b4dcb35c5783cb39a67f} +1 -1
  13. package/npm-cache/_cacache/content-v2/sha512/{52/93/30b9c47a5fd8edc907847848007ea050876e8ffda2e0f9c010f0755d70d6a7134daa4ca676281101bcdb9f435da28231fbd90e519a0dd65ef2e46a48e525 → 12/aa/fa0b65edad417f83f97ec9091648e5c85f999fe9d979b1bd9008c99fb621d0526fa14c98d9e79e1e87d49e54f0d46958f418f74e181da35bd48b9c1f2e62} +1 -1
  14. package/npm-cache/_cacache/content-v2/sha512/{74/a6/1cf9bbcaa8e76e9ed51335c30778a53b19f08afa440dd5fbe488caaaa72d917e47cd97038fb54c84c372e2b5c4d79c824d7c69a1e46483e23da89be89627 → 14/92/65b2691d85b0871b29ce2c6e7d8cb97811fdb736c04566fc275722bbda46ee80ea60266be6e3636008c35b949c95cc61a108148e21d89d3f423cee1f01d5} +1 -1
  15. package/npm-cache/_cacache/content-v2/sha512/{9c/34/71ab770581da898e911d7c5daefd506f18eb796977adf76530006dde90ed33153080a1cb459e866229f1233ce4850ea93632c6058aec4a69667defb4d222 → 15/87/180e5cff361d72abbc7d762f2171f1080a590ebf08d771929d1e977ecc65da2ec9a78290b27e4dfdfe0f34d8717c6e4bebd24e2f4230ceb16fc070d7f9b8} +1 -1
  16. package/npm-cache/_cacache/content-v2/sha512/{d8/dc/d49b45e2989c0b421861a1e5dccbf96e394b6a7ed1f352fd54231491099cd37f05ec329817317a65264a84c67898fd78e3e89006bda3a0d2de1710d13203 → 1a/a7/e1df89b824ce3b8c97aaeb42eb6458831fa1883e7825144e6f556f30faecfb5202be745f7d59e96852c1c991c5464b967fc062ce23f99bcb9d4de8bab6c0} +1 -1
  17. package/npm-cache/_cacache/content-v2/sha512/{5b/aa/2901a72f20bbc4d5d8df8495caaaf8ad21171fce9332d4f3b8882f1118475134f1992e60b97019b783feee236148789695cd54683f6d698794cb9cd33c8b → 1b/26/83538ad9ba696199539b8c13949083995828d2ed967bb40ac08ae972c29659233a973b7e6a8feece9992677eff6f711c8af71b9a41e1f150cfad87bc4289} +319 -4
  18. package/npm-cache/_cacache/content-v2/sha512/{3e/18/3a4c95f2412a0e93e20c6b333fa9c3d859e2fd17d438ba11fcf5562f8cbb8f0f13188c92308e312fcffddf465978f335031614740792ff837d8f540ec03b → 1b/bf/ca02366289a4fadc6a772eb966a8e34e447ee6456e2ec9100d1de4e5443132ac10f0d1919b5d05d23f8a6a5461dc94e3b78c94836f8afe1ffc1f8d01bcbc} +1 -1
  19. package/npm-cache/_cacache/content-v2/sha512/{68/d7/28313a8e986eaaec1f73fa4a8f4c7203aae3d83a3d69f5f269dbba558239095ec0fdf64a7a693f2f938ffd5d84de8b8d2aaa8fe23a7702df2dc9091e884f → 20/2b/7b0d6a62b6683b176f064a039d0e73c6deb1a68c7073fd9921fe967861c6edd69302fe0392d2d68a5735bde6dd2195a0bb16c71b66de0d465e0e77839d54} +1 -1
  20. package/npm-cache/_cacache/content-v2/sha512/{1b/e2/cc51df0a9e24371aeb3b859d850a2299836fa2fdf95f7754acc141b8140045a1506c223605ad487f1d9d730c47a35dbacc9e3f7d2d12dc2a21f41457afc2 → 21/5b/274eb78147e58401cbdca39b7d2873308ebf68bc1d1a43e9277abef22f67aa307834f8faddae1e1afb6658469ae86b7d24336e6bfce8aae52a35da36d7f6} +1 -1
  21. package/npm-cache/_cacache/content-v2/sha512/{f2/df/d49c9eba16f09d9c85957da14e075aa8517662968d2573dca6780fd6997fcb4fdcf6514915a354a74e5ed514441d11eabe8acd22a124de7e82ec92ac41d6 → 22/1b/370aefc0d20d3c1cee844090bbfdcf55a00e5d8b5b8c7837c8e92b13725b1377f1e80a447be08ceb429939b0f3e37576c6b42b5a31aa1bdf78c42e973469} +1 -1
  22. package/npm-cache/_cacache/content-v2/sha512/{43/99/e81b9bdf168fbe6d468b19c8e3f0e1d7e6d9b06b53bfe670d531e692499823ce0bd66d6ead82efe049af9a10dc1c2578e85c3421fbc4d1651db31ddb3f6b → 22/55/047a3a2b19358a6f8fc39bb2b9630e10c549972d384b86bbc19b3541a991536d6ef672ff4b4dc2139a8d5db2762b8802c4e21ebc98eab82c1f7dc7ab10ed} +0 -0
  23. package/npm-cache/_cacache/content-v2/sha512/{ef/8b/852e3d251a2778b5614fda5242ddcaa74ba1898220ad1f47180be12aa6158578a6507047ff056858f5492f96f8e73f74c66f25c21ae369dc5471b1aff8d4 → 22/9a/f641027b3a4976fb38118d678b4c29ee4a3e6c1e03fc05601cc146d1dd0eed6e271bd0a1d6876d4e2230d8088694d8e0035e4ff6cdadf7ba790c207b3eff} +1 -1
  24. package/npm-cache/_cacache/content-v2/sha512/{87/ff/831adac5c0a2c0adc04660c52872258ce541ab260ef77459f0fa341b9dfff09964b500520e671883504a3d2b9736e0248208fdbf74e6d646458059155a06 → 23/a7/a04f7cd1b6d53b7dfe28a2148716d29509221756384e563dc33ed63b221271d1ef551b20ab102e4ce6e34d17e245c575312e1459b5762948d63aaf2b32bc} +99 -4
  25. package/npm-cache/_cacache/content-v2/sha512/{12/91/abac9b93ed5d348087e87cfad92106ff9b9a530731b88b775b6cd3a31fa51d6eb91dd00a043984f86fee64eb3285b15ce77ce2d424843f34078392ba49dc → 24/05/1376aa4288f573f24e648081077bc298352e90632caeabc4f941f0a73e4604e0af1abb12f59fb2a4ebcbef7354dce74715d8ce6ad923209302a58b8a4287} +1 -1
  26. package/npm-cache/_cacache/content-v2/sha512/{96/73/74d1f8fb4f1d1080b0ca98a9b378c561a7503d1794af9814e90ba5d71158af37162ab70cd40790c043c91bf8420ae13f186a43721dae8765834b8ff786ae → 25/c1/a6fd138cb530e5e6f9da3bb7ea72639580c00a74b3d228647c6d4de0f8d21cb4c147e9cbfeeddd26a51648a2f6451e1735a360f23dd673f0571809bcba40} +1 -1
  27. package/npm-cache/_cacache/content-v2/sha512/{32/52/6ddf25267c4f9ea629db6c5de2f7cd7f66b9ea6a1d07fb81b597abd364d40eca8aa0db09721194080ac106e753ec7745bb1b6bf505481d29e1e631f521d1 → 26/b6/5e771bded5f1338b0b24c7eb6e4c34cb4b30817d883fe562947045babce754e7a4000f6c0cde9fc23bf6bc8ab283bd04b1ce093c3895ee777cef67b960d0} +256 -10
  28. package/npm-cache/_cacache/content-v2/sha512/{d8/3e/1149c5ab2a5e745fe1dcadbb78a96b58f0d0f7c0ab4d727b74ca818e034d4e56d559e5d41a1d51786a141574c16e7f4c4b233e08188f240d87ffbebe6628 → 27/02/8d5951dd185df3143db016cd211d8508e518afaf6104c583678c29ba93b3525048b82ef8b2a68bf90fe412af33ea78e9b164fb5f79f9201dbce28944637b} +1 -1
  29. package/npm-cache/_cacache/content-v2/sha512/{1d/7e/9a2b0b986441fb8bef48c2f2493294ffea733a4f65282aaf539be5d4a189ce46332157ec172f5b8faf414c8b82b6c6234dd822547bd2f372d61624565790 → 28/a3/a08da0a8701fdc71c5369ecff1b876af3114bae239fd2aac1359d014bfdd340a710685e49f07bf8ea97712bfb089d6066ed3f5346ed903ccf90a8d09cf73} +1 -1
  30. package/npm-cache/_cacache/content-v2/sha512/{bb/82/18ab30d752dbf728b5b1b35f039d20c8dad46cd8cebdbe35c706cc1bb5e71673d4b55b2920f9c56e68464d0d901a9e9285903739ab71d29060b2b4fb6ac4 → 29/84/2390ba037546ffcec843e2e8b999e2c310827eec619c24a7d0951a7955dcf3bc1d47fcd1d24c876fa67efa6ec12857f86ee13157ba79e4097e19cbf64f8d} +1 -1
  31. package/npm-cache/_cacache/content-v2/sha512/{99/da/110de1d8b327a79d21e36bfb4be6b75e92163e3f93894e2590c2a16c0e9311b6955e25956a2e046a78f5577109a30b1650bc136ef626acec39adec128b78 → 29/b0/6aff7add9df77d56fb9e8e63c8e6d29d444ea2e9e45e47c9cc3d9d934ce85a6b7652d96fc0d64ccec843138f9abe63e3f98a20a46219ffa2415c25a90d05} +1 -1
  32. package/npm-cache/_cacache/content-v2/sha512/{48/a1/4725185947bad59b8baacaa406226fa3456fa9b87f08afd5a0f990672526f9c3ff2096d778eea422d8d8525873d9e70604009f6e348bc3a5b3b85a0e0659 → 2d/7b/21821f61cc8ba34e6d1c6b32c6efc1fcbbeb1609536139831d78475f7a6d38d7d1975aa86219321a3ac36b9a6271e2d8de5769c2f543feb6ccdf7d369f38} +1 -1
  33. package/npm-cache/_cacache/content-v2/sha512/{13/0d/4693f5de2cd2345be9fbc2d8c470ce30c9c279ba3216414a4cd9b65ab331776b13b7330d10fed2891a939c3a923b01c668e258e0b66473951e1375545678 → 33/16/a454eedbfb96bd6916a31f995e306c4dd44551410405092ddc9a681a1b04251025b0bbcd8576c8ea9ac47a366af17f1493a8e0e1aecbdf8e3eef2c18f2fc} +1 -1
  34. package/npm-cache/_cacache/content-v2/sha512/{09/b3/b8323f3391cb3a93a83351bcbadba63dd1b68fdc7b7eb5d870d69b59bbe39d4c2da700153d2e1208098ba54e62f239d0acfb4eb0d8e330be458901285ba2 → 33/2e/b0d59a2b971bbe6c668292faa3a55c7d6a034a5e4fb3e5e5f514d27c452c718cc2cb7bedf618dee80f709ee6cdbe5dbf02df33d2cdf49823261d4fa3a894} +1 -1
  35. package/npm-cache/_cacache/content-v2/sha512/{ac/a1/3049f526f0c519d49e5be4ddf852614956b0ed024b03e2f7e241a39b9ee0856b4d865a54a6518ee674e5cc0ef5ad3f1dc0b25199c8ca97564177583d4e43 → 34/53/102b2df97e3d2433c2e0478418b94bb6e58d16e60e62f2b92d1514a9d0d5b9e8788d6f1358337091807c14820f3f89678e046efdda975e89c15b09edc51f} +1 -1
  36. package/npm-cache/_cacache/content-v2/sha512/{be/bc/1d1e404130fba3ed5626e6fa28516afb75aa70584418d55213408287237a01ca0b6a0989fa881483ba91ffbf399eca7dbf95093f12407084d9adb3fa84e3 → 36/38/1beb0c57dec00105a12d0255fd30f57c5a0538135a2a495745e92f3a48fb2dd81ee5d34c6972159d90681b3cb7831012a1308ca26df2f7bbfd03a64ada8d} +953 -3
  37. package/npm-cache/_cacache/content-v2/sha512/{37/43/348662643f34746ae0e6f8e2f42458fb4046b498851515e5df6be27cf60d2e603ee073fd139be8b1182043bfbd655d17f1eb55273bfbd3c9fd7520267a91 → 36/67/6749566910994b46900e2f53293e6fb8a7f9498fcae55755cfaf60ac4979ccd6f651fbc2985deb18eb914784f653553e02eafdc06375c6eff5e5a24887de} +1 -1
  38. package/npm-cache/_cacache/content-v2/sha512/{04/4c/b379060f15a140ba67cc4b3dc682d4935d03d5d5aaf90d35e97bed1d6fe0da9fce0a7b4ac607e4996cc78d711cbd63099bc4059b9258c94ff62fc54c4ce8 → 37/54/cdd59cc82608bfed4d00bb5054a4da4a80c3198fb82c9ed2ca43e999f7da5088f7ee4f237d04dee188910808f78a3b185104d44b3149502567b1feeaa43b} +1 -1
  39. package/npm-cache/_cacache/content-v2/sha512/37/8c/32dba30d9f7d48b465476073eb12e088158e0c0418c2f82e6fd6524aa8851203b39905d865782639df3082ad79f6ee1b24ed834e693ba142ef34ed2e007d +0 -0
  40. package/npm-cache/_cacache/content-v2/sha512/{34/d2/817f8fe5ed8ef652fda41e095e32f7e4d0623dd9b74af7b02a0d4f8edee5ddacfa07809c75500c9ed61b9133a246426230a09b4df7a44e04efbfadc51510 → 38/b4/8e31403b43d23e2a1ade81cd7ce321160431dd26d39d712f4ebe8b16fffea441239483314f81202df23634197ebd745980050128417455c78cffd096a6dc} +1 -1
  41. package/npm-cache/_cacache/content-v2/sha512/{31/e9/65c036d61d3437f572a96f43eeebcec9947eb553575447946f81caff9e28d945e01bfa0ab80dc60ceeabad9b48f3e8c9f48d9e4a954dc60eca1f106febd4 → 38/c7/26c6d839450b6989e730087a5a2942b7dc657d881a1c2622c09bd45c45aa528c04bc78eea5da8647a2070c8834a4b3a010e3d17e40eeec018858ac9d8702} +1 -1
  42. package/npm-cache/_cacache/content-v2/sha512/3a/03/c09dfbdb18031669ceb2bf12758a1b25aef0e93d5c11ebc0f672ca2ca5d3420b23ef1e4f492f360ac33e3c48d892d53db39c3c076aecb044a4457e9c989e +0 -0
  43. package/npm-cache/_cacache/content-v2/sha512/{f6/cd/72a88351874541fd76cfd4a3a64b29c5a9713628a945a19914b17b2e8b496edc016c46bf1358f61864d0e27b8450cf2aa6bf9ac96b6fd4b6ad65773092d2 → 3f/b5/db13a32f74689cb2f5bdfa7624d2b59655a132f68bb3f438947e6881cb5d49461c1be9c7189d1c4f1a1bec2317c0ee1bef6e0d7253b6cc006ec3bdb7e7a4} +343 -4
  44. package/npm-cache/_cacache/content-v2/sha512/42/26/89578ff30eb078658da67de4974b3493737e96d7ab195dc1b3f923c5934089dba83388ed1c4bee0b8c950c01b75e7813af4b493402ad5c6697c67545f14b +0 -0
  45. package/npm-cache/_cacache/content-v2/sha512/44/31/ea3c6416945ead6ad03f4e9deb83aa08c2d80df4855d7abc44fbd6afd98f770dfcaefa63b5859e41bb68e97d9836af074d6ecb2c9f033eb0b69f21cccc95 +0 -0
  46. package/npm-cache/_cacache/content-v2/sha512/4a/79/449906ba4a33a0b3a88e3cb510975132ab800a88074f42590e84586a35f0ed0c2c226cc1af2fa42591299fde8eaf0144889b374f0b1a304f975f41464fd4 +0 -0
  47. package/npm-cache/_cacache/content-v2/sha512/{a1/82/a6b9ef60078a05e7ebc5ee2a5624d05484667e0e257ff6f2cd773281bef5e34008d64627e373bfa3a53d03af6f81e12ddbf1007c7354b927a9a829043aa8 → 4e/8d/d1f7a29c4270ba1263abedac0abf18bdcd98cab22fc0741fe2dc2a118a68e04f042e63ecac1cda587af116f907756b01593a842ddf6c62f7c5d2e23c644e} +1 -1
  48. package/npm-cache/_cacache/content-v2/sha512/{9d/5b/12f4db4695350ce3ffe8dd23aa1809a5b314ae974a5c27cf407fa094ce7b7eec46eaf0399bf195e1ec42d2dd6fb5cd82fa4ad4260aafc54b07e70e2b010f → 4e/db/8e9bcf49f0f9a82981cc01d6c2ea73090cbed30225718cf411bb2583325c3c976e12b06b4443cfc67d75d8efb3ab73e9d62b22f5c4276c0dce97e8b6e184} +1 -1
  49. package/npm-cache/_cacache/content-v2/sha512/{3a/c2/95223312e8aa24fa4a648f081c30c20f2b7337b1ddabf8c1c1e169256954eaca50d778820778f35deee3ef782d541142a4779d8a353cf18708ac36a83bdb → 4f/71/16fac2917559e4612c62873a5ac11e762f8bf9f820492693afb8b42c14e9dc6255d438f38e8b50778f7189d52a7c3bfd31f62d20abb959e7a387915af6b3} +1 -1
  50. package/npm-cache/_cacache/content-v2/sha512/{64/fc/320ba4c7f148d2fed335e6eb10aa4a073356d44eb0cfc228f856741f55260fdce4cfbbf37f3beb766d07dc000a6a4c4edcee8fb6ae1d617b8b927a1c9308 → 4f/7e/ff77b8be09a5563ad2baad79ecda2c79d615f52daae97ae87a8f4851618acb4a6ef2edcf65bcfff6027d73bdad7670856aa0948e5d96ecb5ebc6c15f9287} +1 -1
  51. package/npm-cache/_cacache/content-v2/sha512/{44/a8/b46cc24634f90082c6112eef86f37c5ef7cca4f0d685cc1c3ecfd78e38c173a542e9a663efa828408093af3e3ff0b6786ea9203852e8009351e7c8e431ec → 52/b1/7ac8cda32acd85a6d0701511db3b02bbf87c3296cc4877ec3f9ddb4d4f1534ba2201764d516b2069449243d2368c85be75e6d3837836c3250ce3ad6cbd61} +1 -1
  52. package/npm-cache/_cacache/content-v2/sha512/{38/e3/a4343473a6049ee16eb9a51127b342fcd2b38114064ba7342d81aff78e148cbdf472cc9ba9efd6a5f6f53891acc2a1d957f0f840da1d86a9c9617f2ed1e5 → 53/18/e82018e918dbfe3ba0a41325f74c4761a1e9fe8359c49a8031856520f2d12795bb2148c1c9c4b725972cb54fce0c1d877f17493075834e99f1943acb5521} +1 -1
  53. package/npm-cache/_cacache/content-v2/sha512/{d1/9f/6698e5e64798166ab958bf912fefc5a6ad84cb685b758c5d736f915fc728d5b4841863cc93252e57a56ae7d99da2ca9776c4fc39e3fdd22dfb4a3f32b3cb → 53/eb/5a1d77ef4b8348b078293df5230c52899b92e514df53fcedc8bc385f82850f48698c6286369a1969e01894339123690c9707b9e8ea4fae0cfdf3d13241ce} +319 -4
  54. package/npm-cache/_cacache/content-v2/sha512/{89/9f/3a3a3dad37ab7afa0d08b47be62e69079a3ed4c99eab41d12e266fd8530c95c71d524a246592aeddb9c9af06816d356c5910115a4910a5cac886a6e10dfb → 54/a8/135810070c953c49b2b033525dc5e5503f49f23c50f7f538f85972eb8ab7d17061d20bca34addd8a5c6b58c1eff1740f90309959fdb994739a3ff0311adf} +117 -4
  55. package/npm-cache/_cacache/content-v2/sha512/{88/09/e187c4ca16366a96deb27c4058144a6fa929fa84722100317fd849797729a209a5fdca19423faeff41d2c85832ee1fae32cfa424bdff9df5e9c4a3aadaf8 → 56/fe/caa5aaca4b248de2fa21dd33087da6e0313cbc1b0801c63b92ac14795ddf1adf135357d2929c324188969a775851afb271097a77dc85d9442d1680dafe54} +1 -1
  56. package/npm-cache/_cacache/content-v2/sha512/{23/57/a094c68641345eba9299e49468184cc85883c30e31a4fbf14efa83daf19fb341571de6e0a61c6c234298f4ffb6176461622674d99fe5cbf35ce3a0a299bc → 59/2c/cfe0d66e5665b23cb486c43fd46ba7fe9f73e552ee40fd97524b82c3d1ff1d2fe8e39a0e8a320c025032b4dc83f1927ae142ba4cd8bb0a8155681cd11594} +331 -4
  57. package/npm-cache/_cacache/content-v2/sha512/{c5/a8/7d8ad215148c2b93069cc60b6df5bd21c6efa9397c5320b2c270a1b9a29a0d7c26f29705fa6a5bc9d2e201c31f545306baf83eca7144d3803d613057b3e2 → 5b/33/f8947a8f4804ff5a67a1eba73eb93a46fdb957627292fa0cddb95b5d34bd221a09dabcbe56b5dc4f0411474f8053798a0c3953337149a497611718ac2112} +1331 -5
  58. package/npm-cache/_cacache/content-v2/sha512/{28/0f/1dd22536a34f3c957c570b4fd5146b27bbf8f85d1c5828033dd696292c97d4a7cfab3203a3ff2bb4effa37cc834575b568e24a0c83c7bdcbc6deb942892a → 63/09/e523c9690b04151ecf2e32f61de43a6f9808c4d73b74d7a5d0517c147f69735b06f5f18bcd376d7b46ffe527933688f44536eff31012414762a9ec6ebb80} +1 -1
  59. package/npm-cache/_cacache/content-v2/sha512/{a7/5c/f4f5c4c6bfa980e187234eb2886634e949c5fa41318d191d31f71cde6aa2bccf737b5b7b28a61d34ece74488fbf01c9ed1047147aaec170426ff5f32e66f → 63/24/09d4bdfda0fdcda63af0fd184ce0d8b58e6cdf9b51b2a97cfc0be2d25fb23992800abb326f6caa4bb582cc96f0371535f5e1e287c59b9df29124827d003e} +1 -1
  60. package/npm-cache/_cacache/content-v2/sha512/{a9/d4/78083532bad3ff8d9aa70dacc70973efb527c1f1a2c7e95d7419c0aa06c813ab21d7e69299d0a39550ebab1690059c58f6095f5e22d9ae7f71736c66d383 → 65/ac/006d916bd46b0fbbae55c1f43555e39823a297a307224f617fe2ac0d615076d302ba192288c4517633d3a51d301b8d83323bb82101888160c497919adda2} +1 -1
  61. package/npm-cache/_cacache/content-v2/sha512/{2a/df/cf500be1597cd90c0965b509022f7c5dfa2f94c643f95858b666a77e315828b0357ffb6e96f710e24be5fefa38c0ed85df4724e746a86accf7d2183171f9 → 68/8a/5785f220db6b243ee22618beb5e1a817ae719ac32f48fb93173aa2af3f1fd993781e1a8d6d0b6920440af79b2831bc1219823ff09f67fee6f5a8ee5da89b} +540 -4
  62. package/npm-cache/_cacache/content-v2/sha512/{69/bd/084099d12ff6b953ec917d2bd7b3eee3fc9c1c878770ab167820584d1e9a97c50506fe15deaaaf2545585c7e712e39f8b5b05f365c791d0ad374aa82af03 → 6f/9c/42152537a73601c442ea2f47f035d8a158a0c47890aa5f73b99bc007a70dd6961f29c98c3e0f87e82dade680182775a45b0e556ce4086a9c852d89115f39} +1 -1
  63. package/npm-cache/_cacache/content-v2/sha512/{7e/24/a4cabb8066278efe41c58592da0712894b2ae4c6debb44459c833570226ea0b7dc3333811d3b72bebb4aa6633b67fff9699f17bf4946eff94bfbe6f51bd2 → 6f/ff/b926e255ad88742439f800eb666d8db9653c21c894ce9fda522b3c91a8a94eb201841f4915c739092a0c5b7b5d9b644621b63751742238a2140ab272bd8f} +349 -4
  64. package/npm-cache/_cacache/content-v2/sha512/{4b/5a/009ad7af4dba0dc7d25002a1d67c39465b2b9e45a879a5b20ddd09df466029fe2ea262e01ad4d1289feae55cdbddede6796c9e302949cab71e38122a768d → 72/13/ab194616bbec28b541d982751adcf71dfdc14012620b1e1ee6806c777778ff7a0beea63aae2aa2f6510be21caf5c174185e8f122ec48bcad8c9c1a651117} +119 -4
  65. package/npm-cache/_cacache/content-v2/sha512/{d1/68/7b59b7888b7dd1d637a3db34fe255a56cb1bd4a99f2aea05884958537d0637676591a4368231ede16301d3b9937389af5353b80441a93299393784cdd896 → 73/10/e7f37ec35421273e7ae223c058e7313cc6a374776d8596dcb474bf0edc6ad67b6bf06c3ad944314e5a7e6b62c5c3faa5241fec63a390ed86789f45414482} +1 -1
  66. package/npm-cache/_cacache/content-v2/sha512/{d1/a1/9cecad80bc650c3cb496b0fddc655cae88a95217a0079a9b3221c70138d83115b3e670884cf05875e98683e0ce8d3407794e7e2755bdf7c9cfad2e3fc544 → 73/f6/7e230417b8fc0f3ad874932e9209dbd4832fedd815a3fa2c076259c73671ae18354d30f58dc9ebd1c5589134e80440d350d7e41ded12c0d0b3d1f0c808bd} +1 -1
  67. package/npm-cache/_cacache/content-v2/sha512/{86/70/ab9792f3ab91c1c5b238e921d49f6e2a63256b1deb3426e447ce157aeef4538da5672079f18a00afdeac758b8f4f3a9087357f2fde134202695607e374fb → 79/cd/292e3a3c2079809874a3f3680269d58ddf490a949236cd56a073943308f111bc2cffb0a034c159c7817f7f1701bcf5c3731e06efc8b7de200c6a8299e306} +1 -1
  68. package/npm-cache/_cacache/content-v2/sha512/{17/e3/c06dd1f4c67291ff12cd946e0f5b614dd6e321792bbca2c011ab441a6333f3cfbeb41ead49fb87bbd7a0c990513ce833f3c11f725f113d7868f411a5c12b → 7a/ed/89b04c245a5053c9b550ca602676b40fe102d3e4cf4201cf86e28bc67c34dcc7fc2eafa0dd308edc6a9d09bed48c117766458bf691a7c290bf3483913d07} +1 -1
  69. package/npm-cache/_cacache/content-v2/sha512/{b8/ab/a338d055461644a064e6fddba6bb7bff8b11fa097d4f8a064790da89725026b403c0785073278b67634cb06d96464a13d1d9eb82eb4ac8d5117c1e4e8a69 → 7c/b0/e096c0c9d6ec3cc861da01b50d1fddb8fe537522f9c93bdd2c3367478c27ce09a1ca24d53c73ad4e707a85274c6281e19194fa390937f744e4323c3ae4ba} +2 -2
  70. package/npm-cache/_cacache/content-v2/sha512/7c/cf/8c842bdd42167b355e92f796b4ee03d2aa32182a7ea615a5dfc76ebac0ddda8d91a5ffed40cc7fae6e45d0d1f159bce7b69e4f551e4cdd624404e73315dd +0 -0
  71. package/npm-cache/_cacache/content-v2/sha512/{f9/fa/145fee46345b2664afff31d882e3d519c27e6e2bac2d11c85bf1324e465f1e82400177abb7f4c19a8959dd464f4f05fefb28370f4f169032201eafbe5019 → 7c/ee/287018e1b9b2e5ffa6a61f02894be16e14ff403dc5378d6e69828440a5db3bb83c988fd2e11e3a23fa49115fb68c7a9203bb28c85154e085d4845cc6e7ba} +1 -1
  72. package/npm-cache/_cacache/content-v2/sha512/{b2/fe/47086aadef3775220179d147018ae5d8613ba8037c7ef789a0dea01de03c35306fb79e60a98e94bde46dcf16cbd4af8f2d8e754bd344bc99138713610585 → 7d/96/acb3f0a02cfb57f43aba7601e9eaca559d5b4ed485d369a6c067de6d0673d996bf54181c4543867198e4176ee67b7b9604e16fc3ac0a8d15097e3a88340c} +1 -1
  73. package/npm-cache/_cacache/content-v2/sha512/{df/ba/24799c91755906ad4ea7c8a04f1aa42fca5ffb08488ca5454e6f4f8108d088474540b81c4d82331bd269ec4751179bc76a4057d064e279616ff4b017dad7 → 80/04/01901671501f3877bd7ea4f708f4bfa3876ba386e015c5cff81601a25850e390f06530ac737795c3b644974c55fc468eda9ec9d3f3cf9769d6acc4c78247} +0 -0
  74. package/npm-cache/_cacache/content-v2/sha512/{c4/e3/1114ae39c730d55a92ccff83ff3ba8404910cbcc91a4d480d4e50861fe6a9b890ff0111206c5feb696d230267933cbb9028f1947a05cb3f365ebd615ecb2 → 80/df/11db179378a8fecd1f5b48c69aa2cb8f600ddec833908cc3a9bbc29ff0f86e38288123e701361efcb5b0624f620a2ecf36beccb197f976478b9e4e552ad4} +1 -1
  75. package/npm-cache/_cacache/content-v2/sha512/{ca/97/b3117f15c2783a1aa185f5dffe136f3724ea9e71c348283a7c62faeb6ec5aeb99e15695237f1ebef4fce1a8c2147245815a526d840069e332dcd7f46de0f → 81/ee/f1ec719dd24b9c56abd7773d56e641eead7dd296b2adf0b073e9d885762497d4c24d3821940909d4a301729684d55042ed3a9ef7674afe2bdd4d33c1e5fb} +328 -4
  76. package/npm-cache/_cacache/content-v2/sha512/{c2/77/1ca434164d09bdfae01e990bf6aea9b7cc821fed8274d6345a98bedcb8fbad72c29a35d9bbcd9f2e0f6e2fe8c8d074b104cc702e91491035db970e30bf0e → 82/1a/1ddd06f654ea7e27c440af760b2aa78061928e256ef4e79c227fa1926f0be81bc848abbe3696f813db2c38693d2c5b781207828cf47eb8d0a0caeffd29c5} +1 -1
  77. package/npm-cache/_cacache/content-v2/sha512/{95/71/d5ebb00ea822d26e39b051b9c900aa640b8182a4f516da088d9edafc9cc5fb2cff14c654da3111d4a8c8a054602e39e72b7b3f22a2fe36c31a47992a3461 → 82/5b/4b3d5464569e234c0657530a689e0ea352c20e28c6377e881d1453fd82bb5f7a5d98fedd7e378c5b0af6fb2a32dcb118ac1444de12dcc08356db1ec3ad20} +259 -4
  78. package/npm-cache/_cacache/content-v2/sha512/{30/00/f597b1dac973977fffde3deafc47e26311d1b26bacae5dfbfae96dd6ca2aedab957bacb361f9b7527bc78987a5462d1dd0a9c30d32b793c3ee9fd269b009 → 87/d4/032c20c7854703e1af1133e57c57adce4b2ca63da80aa2cf2784b04779babadc8b3f2bf0fa7004dba7ba858713141c1b2ec32ee112622be3680a70c76c8a} +1 -1
  79. package/npm-cache/_cacache/content-v2/sha512/{09/92/2a00308940c6b7a94bcf98b85d53d29f8b92d01b32eefb4b983ff59df4bc5d3d83cd33f3293081dcd18b25c68f23986b33108ce4df86b991b8bcc777f299 → 87/f9/9856f034dd09964475255e6103485d4b7dc0ee5b557d1de2cdd198142bc4a08d938cecaf32db288c8679d2ab607799d39800b94790095d9453f65d31cfd1} +1 -1
  80. package/npm-cache/_cacache/content-v2/sha512/{72/67/686948da6d8ff26db8dd5acaf1ab83b4843095d75b98011a9837bbc2d770ddf89d5e476efa52501ae51d86bc9618603267c6049ffeb3b21d0baa661ef0ae → 88/34/e5039385e58a2f8aa4ffde6437bf5b6e225a2c2fa6d91354d295d09e1a7ab08e9817c39037fe1bc8527cde1370e533b85c5953efa79deed78b4ed74e143c} +1 -1
  81. package/npm-cache/_cacache/content-v2/sha512/{f8/11/ac457ece24c4c1edb7d8ba363450ef0b3e66ab1f69b6229900f1ccca1198b967e76dd3dd9738177028b52cdd584f2b65b7563a3ff15a1fb94c82b02df1ec → 8e/2d/9f897638fcb40e92a0573e89f40e12d8c1bac45362afadd929f21bb69765ddf2e6dae63e1baf108f22ba4a29f82c3558cd4f1b68911100d84298f223e861} +463 -4
  82. package/npm-cache/_cacache/content-v2/sha512/{1c/69/ae1533e6176c7ab1d507c0bf892a892a5b48fbc52a837a58568dcdfe7c51017e9ab20b647430fba67cc10d5b8f1affa132f2aad7d8d5173a66a86f459ad3 → 90/aa/bb9c6e32eac4d2be11daf68c5f0e75d51d195c3cbe5a2913597c91bdf984f08714bc873431005893b08f74c629e2fe434cd83ffd9902893e5130a23586aa} +1 -1
  83. package/npm-cache/_cacache/content-v2/sha512/{ce/24/9003c02407ebb82bfe6dfd24ad15b7a888d4c6d38ade51e75d08b34202099d449190dfe30972964e5d72dd0fabb27c2a922b5fd1eb4d38811757bc76d840 → 95/20/2854fbd0c57d5df1338ceb068a0c142bbef65c9b8c3aa4295d140b1151f7c4697aba958634a4fc9ec372a52eee97a9bef80d7238da11af4ac6c604b96397} +0 -0
  84. package/npm-cache/_cacache/content-v2/sha512/{50/7d/f6291a7dc95d9083faa3df9e23c4fa909d7422c090ef9bf10e092708e39dfd1f83aaf2a041d6086756c7dac61d4eed48d017a43bef869d8e6c80c94f6720 → 95/92/99c8f608ac35857be4ec92d5c439cac073883e1ed4940c14babb9ad80c6a308ba44a047e99a497e1e536fc6183f46229b20d6b4540efcb13c4d42459b02b} +463 -4
  85. package/npm-cache/_cacache/content-v2/sha512/{a5/01/05ebb3e4f3a9066730610153b339de035554f5ded427c45382d0734e84f5d177d6bf38e61d2b984a02d9ae9afd36d9d76aa3acd744a28391a94d6f33d968 → 9a/7b/566e827f517d9c06b7420c7fe36b7c0ca479ccf63676a8079be1e69eb99bd9c184d401ff6def9ceca5f0fe00546f33947254eecdededece79f7d37044da1} +1 -1
  86. package/npm-cache/_cacache/content-v2/sha512/{32/01/6f8e6c0c852575f44cabdadc4265481086dcb397910aa34d42d95dbfd67cd550da6ac1a8eec615770146e542eac8f450906273d0fda77ba66d378a3014ac → 9c/53/039f000a04f0a177593df5bb66e95b6e79bd27b5a989748e50c2245045fa98189fbb872cb7d2ad0306dcbf18d8641509c910f8b56ff96524f34fbffe9877} +1 -1
  87. package/npm-cache/_cacache/content-v2/sha512/{b5/5d/f5b7445f1c7ade895bf71ef67814ab5713bfaaf7c6fa0f3f5d4447f95b49e8e8f12736bd1c5ec20e035566e58b81e0f967a4eef35c78c3705120d975037b → 9c/be/f060d7360f4761a5be03c51bd401f6bed1c14f9bec879457f8d03e6daf4e53dc9e674f4ca453d767b7e007945def03ac75b3c72b702a1169c76224c3739e} +1 -1
  88. package/npm-cache/_cacache/content-v2/sha512/{a2/9a/e4a317383c0e556eb1142f9ec083e1fb8d0ee85d0de2927d790307212c5c37727820a83db1754b102e71dc6ad734a3b1a044bc8b64c22c88dfd6abb6f285 → 9d/9d/c267297249e2e17141faca527b750c3bc9ad0ff61551d8a978461144848ca15ea75d1f29bde0544cbd2b0c9ecb564afbddd951b1e4e60b54c501f24d95a9} +621 -5
  89. package/npm-cache/_cacache/content-v2/sha512/9e/08/3026d67879e36c530e4879604c5ec8b5af272de62762d0afbf482445de4c9b2ee6ce31a3536f75c28a15e958c895a72cf23de22b974cd39338411fda68ac +0 -0
  90. package/npm-cache/_cacache/content-v2/sha512/a3/c0/910a226d89bfb270ede613803950286d197e1d0cfd97c6c595bbd3fe65cdc7f2d7262b0355103a034d79b037ebae3217ca793eff8bb636eb14bc5bba21a0 +0 -0
  91. package/npm-cache/_cacache/content-v2/sha512/{8f/35/75265414cdf12d73af04068c3c712a5460d3b9721d6b1aa7c2af00c42bd614c8aa032593d3026858a311ca3ea824a30c464dc1aa7ea21bcc085cc9362919 → a4/ba/9605feff3b4fcda72c88110c1eff2f3b205c526e82de9a3865df2795d8f42d6a5aec8ea7e43066d96f46b738f347f57a35307d00f92bc7d43597c9083581} +1 -1
  92. package/npm-cache/_cacache/content-v2/sha512/a4/d1/1ffce7b23795f75662ca96048ee93a9a5a65b5d02bc8dd37f02f55e1b2e8588d22d3d950dac459c23c79ce7905d26858ac317e23361a444eb8aa37c0ce9a +0 -0
  93. package/npm-cache/_cacache/content-v2/sha512/{71/a3/696b498c535ba34e700153fbcf34c94384aaa20042d159aed65fea47891454eb9a8d1d699cb984d1c4f8e1aa36864ea995fad89321448996287e787299e0 → a6/12/d0678c1b1edb2d6f8f810399bf3ed4da1bedb171e65daf2d120765980878c751eff8317316c395ec74dfbcb8de3c3ffdd71d048328858b78785387d52adb} +1 -1
  94. package/npm-cache/_cacache/content-v2/sha512/{73/26/744571087989691023b3a562446d1f4e7348dd7a5f905346d805d1c8d9b4b1403482198247bb452141b0a9413106309b148e9f7bf3448fb52a1c2e42319a → a9/56/c41081cc34be6d0d5adcfa88dbd88280097c15f5ae0667cf2cc07728f0269f2f62b79f814f7bdafa741e5abb213376be36c38bad014ed59d07c06ad896f2} +1 -1
  95. package/npm-cache/_cacache/content-v2/sha512/{56/a2/c277779e4d9ad07857a918154e428dc8e374e91debd0dd14ed11a62ab2c4e85f588908c9b7918f958c7bb85a8fb82a09b4622d528d6fe4e12a90de312589 → aa/d4/66e4ecf8874a762023a810bae9027db9abaf00416bad65e83529ea55b0ca0904377e99f95710d84e068665572b70dcac65be708796a25af0c27f8a031ef6} +868 -4
  96. package/npm-cache/_cacache/content-v2/sha512/{d7/89/244796a3d5cec3f9c602ac4706d96df1c3cef031800451e07fb4c890da3d1154acf375ec1de26270d7e4342552ebe08154d491c60c2ca3d16a8baed222c6 → ad/c2/2993993152a0da68d6ba5e4db7a50e95898ee396ace67c55826a141c053f7b75d5da5d8630cc27a7f53cf526fa3a6897edeb00e5e5b378e3f270e41e282c} +0 -0
  97. package/npm-cache/_cacache/content-v2/sha512/{fb/c3/d1fee1116782fd27c086883785d382fdacd11f17139629db18e894644c4d481d3a043afc7e6ed9e3747df55d715c11e87d80baf7fa756da9a881191b2e97 → ae/83/1d2464bd92742ee872e30e3bfeb34d3c5ad771e2ccdde68f9e91c1c9180790741b06a2f007baa4df15db10914dc5c3041efa5a3597fc92d8c9a63fb72417} +1 -1
  98. package/npm-cache/_cacache/content-v2/sha512/{b6/9f/336e8660eb9f3f6baa9b426ec81bf90dabe478ff8c54b22368a6f6c9d4992838c5ff626d2aaf6a9138fb67c7ac02e8976753f9a4cc6d9df59a3a0929df04 → b0/9c/e491ef1d0f1f24eac7ac702822dbd732607b20c69e9f6b2a2ac0137e674b15e9d5e000f5a8ed1211cb64c0c690f704c47b0ede5d47bbbad9b8afe5b2e3f3} +1 -1
  99. package/npm-cache/_cacache/content-v2/sha512/{73/c1/bfdc87eae7b8df15823530e975a9080e43b129db1f177fe69714bba13a673106e65bc53f09746032d434d06e15b74306f1f91a69f17ad9eb357242e88fb7 → b0/ec/4e0f4f4ea9eba18113ee3a8b27704cc1f29194d8eccfe14c25acecc8be400c02ad1543790dd74a9071b5de9dc4d4d45df6875f9a68ed80f3264a4dbf85a6} +1 -1
  100. package/npm-cache/_cacache/content-v2/sha512/{92/01/7e36ee215174f15e6825d71176418d68b2a070e0459d368c0c3a1cad10e65b1794c2ee1b207744a953be5d2279b7710dcc47e155c8cfbe7fb6baed644788 → b5/4f/56dc68e27b78775315de4287185cff619af3fe88380411038b28b72b7b8439b5d0dff6d943d5e3dbf5f0c7a513442a65b607ac844395dc58a41bf16e21bd} +1 -1
  101. package/npm-cache/_cacache/content-v2/sha512/{65/53/7485ff0702db31b026837bb5f4792eb10bc39324259cc601f23c0e3660e5568b34bbe3c6f01a0140dbb0083c5ffbe66f8afba305fefbd7a0e94c01c2f727 → b9/94/026bbd15fa88d7f3870ac95e189373932cbfd8f9b5f34e85addb07cf3a1f33c611d4d10999d522895bc0d5f74f5df783847496a9b29006230d910dae4fc2} +1 -1
  102. package/npm-cache/_cacache/content-v2/sha512/{56/5f/1421926d7e84173287fd852aeb18b3df493fa3557cd13739ed38e0ad8f471d8b8b8abe44645169668cfd893e2ee3b45e7fd7a73014eb950c5f065aa80d4b → ba/5a/37fc834b950b93cb9ffe2509e9a7d0a4f1f60bdadc4849123028ffa2ee3086fbbf7c2b2c85623e2b8c6396f40a32c3649974e5d1f2a461bdb0cd15a78788} +1 -1
  103. package/npm-cache/_cacache/content-v2/sha512/{68/cd/c1e8a424b1b29c4dbce0e64b4d39b355b3ea86b4f0559418685521b046e271000f435a4035680e8e65d44ddb4a4a0ce681f04c444910d2c95932ded19901 → be/68/810b2a6a27caed1d3fb1e6c95945281c420bdfc172bb6198d9c09e4408a14a9f5c5ff512c94a0af220be9ba4fcdcba28c9bf96515f916effaf0555ea7622} +1 -1
  104. package/npm-cache/_cacache/content-v2/sha512/{4f/a3/6eac7802f72c525f53e7d7d658d6be109a55a554fc9160e24c8c57c511759ada4d2bc44ba134b7ccb2101c25845065fc77a825c7ec0a743ce6811a27abe9 → c1/10/362193756fd66f1127201c2bd7032dcd7a4fdb89f1e502d2f7dc6745953a3ba26ad827fa41fba248dd7a43b64d8eca94d7258ba988b495c4a414038beae5} +1 -1
  105. package/npm-cache/_cacache/content-v2/sha512/{1a/cd/3245af499c411514276d7340fff695eaf9bbe9069aa730f043d202d9bcf291bbf60b4737f3a0f330f0407a8f366113425b74019cdee290f06a89a0978d37 → c1/d8/bfc38925cbcd5bd4a2beb78d690cca40b47ba535e9aa657a0da8b7d5172d7deffc2ece56714e1b11416e697257d3acd7c96c787e72ead58b7cbf5cb40501} +1 -1
  106. package/npm-cache/_cacache/content-v2/sha512/{0b/97/bab938bd6993858622a2297caf2a45528f188aa08f2946e73d5dda0445832a8dbce5f368d4933f62cd078d610f27fca0fb119cb9e4c0d4a3c539a0dfa8ba → c3/ad/71eada18ede8ee1686069415e6fa4c9b7ad8e4773360de4ab06b8f417af9999087c99455c7b37da9747ba1774ebca13c121b0c6a799eaed4cab19318a969} +1 -1
  107. package/npm-cache/_cacache/content-v2/sha512/{8b/62/14670f64dd7fbd033c8ef2cae00995a77f324b1623bee59ea9c96dac3ba1c38d003a47f14f70c366f929e2bf655d70d99783d71f3587c6e29deb502414f9 → cb/fa/462b6a5763e742d4d5366f93e9f6d3053ecb27c1e666e312f813ec9f4838a83b5d20917f6822c333beb3d17e80b8e197cf0cb778defe73d908e0c3f0015e} +503 -5
  108. package/npm-cache/_cacache/content-v2/sha512/{ed/f7/add23e37525d5bc5e90128d07156ec068b100db7f9756b7b5e206cb272c26f89854b1dc9891c928c96370bfbb450c0e9deee8d7d4e8d14c1de213ac05672 → ce/c8/11517fbce43cd653448e84df2e80ceb90034f8e6ef4037567c637224649f0a04c2f0a5a937548b16c2af342140064f090532120765247635af33eb7efc98} +1 -1
  109. package/npm-cache/_cacache/content-v2/sha512/d0/04/1f0dc7fdf53366a952afd28c07af0fd342cea2e19139b7daa6cfa36f3b9ddb13fb00feda578572fd0007043f5a8773a6738ddd5431bebdfbff73761bd8de +0 -0
  110. package/npm-cache/_cacache/content-v2/sha512/{15/ca/87ca38fd946ecaa26143f8c2343b42ba65d2254304e7e9dd08c5df981cd7460b22f287ba991872a2a992b2280fea48f4617b8662c49685c743c3e1ecddfd → d0/12/b13b4279ef327bebd18a9e833fc5aff9188ba27bf02bc794e38288223d0f78ca31f3072778b408bfd8936377bb386e7fa7249746cbac721f6dddf3858fb0} +1 -1
  111. package/npm-cache/_cacache/content-v2/sha512/{ff/a9/1fe42f0097fb7281ab0f4ee4401547afd36de651d434f0deb0cc6280ff94fd17e45ac27cf423d2b3a8c676c719d8c27399e8d2ba1a7c0027c0aeec0c1068 → d2/8a/2762e977d05d1c43a0deb6cd04173d12face8a2ed919e88fca422f834bba41f12937ecde38849d5718fb316eb1b034a442b838797f06957ce0ed54d6ba10} +1 -1
  112. package/npm-cache/_cacache/content-v2/sha512/{df/27/d72f0928b72cd4c7a50a0384995c716ce7a5ce4fa94af3f67a8be8cd4d427c189f52eaff0a531869770c8fbca07af1aa1aa00681dfcba70e6d1e7bb5ac5d → d7/a3/f2c660ecb25fe292fa343841774e1948107c3a6b31ebce61c60858797070e486b1d3cfc31f971642ccd89eaae4173614cdfc0384c3d655348ff55b17b5ed} +1 -1
  113. package/npm-cache/_cacache/content-v2/sha512/{dd/79/cf68be1c4a26933ef46a10ce7d59a8814e240d6f8833bd62dff5d8126c69bc30ddee0fb2dcabbf342dca435069dbff3d04fe007f6510956b4addcc08b0ff → da/97/3a4fdd3b5fadb4cbbe8ec3d69bb8a20738662783f31bdd6b69d98964ab20b0f6783a192498638e154ee1c45540ed7b6b29987d1eb2b9db834b68be5ce9c2} +1 -1
  114. package/npm-cache/_cacache/content-v2/sha512/{5b/16/70e5a348607e9b773b5974d0ed0a3a82f1490bac6693e8ecf1311dc48a822618ca56a6c04ab834b5c72564788e1335ea300db86979e248bb2815a1f3d969 → de/bc/c311ae69d40c02854526633377ce20ccbead85fb4fc2f157180da1e00e9b3bcf9d02f0cc2de6e85f31398a7b2e4dd8e5b81aba2e6da831bee715c7da486d} +343 -4
  115. package/npm-cache/_cacache/content-v2/sha512/{a1/2d/eed88c559237585a628826391b355b9b47d394e732d24e10e11b25d451a6447d32c6c6cd5046d39bced11dd394687c0caf2962e467d3a1d22847278da887 → de/f9/3426db56e0d6d7f93dcdfe52d20b04dcd63cebe824928aacdf39d2340af62f8fd26cb1aa8f10b4d7ee0e65feffdbbf9cac31cd13c3b7708b3c6b8353ab17} +1 -1
  116. package/npm-cache/_cacache/content-v2/sha512/{20/c6/c795f748afb37134780590113c0906c716949b15ed4b1d6cbd5191fb5e6d449773cc53ff8623ba68768a855eb69f2a7dda0cb585414939428a0dabea4691 → e1/2c/fde2a9d60ba8137c332f84d1d20f229be2b1a9f7f8cb2141a0932b34f3d39b47bc89b530a1d6acd37453b6f14c6cb75f8d8cbda1326f37dcf2fddecad9d0} +355 -4
  117. package/npm-cache/_cacache/content-v2/sha512/{bd/7b/39be264d9aa4b349bedc95828d8340643f2c9f5bb0af02ce5cb85187eb98a9f192ae8e3d243cdf165199567e17c89c311e521ef4fb7e3e158e298af418ff → e4/45/15aeef11c2bc7ee518d0eeb7a63a9055be30e9679b883139342c5c19800f54a9d8b241cf4bd2a9bc2e36afe9d56b314e19067c1ad94e3cd2f74385d6de2f} +2 -2
  118. package/npm-cache/_cacache/content-v2/sha512/{9a/9b/5cef1e1458852dd5baad5f0f8bef8d571ce9577cf0b13a515beaf80ee2e76616126063f1d9d0e0735692c82fdf8d1dc640bb6fad52c9f3f6db27a1115409 → e8/4c/199ebf1fcffc82786f527ea2cb7f044215a09300b1d32a286670dedc5918aac6e7297f547e4bb4c93370da39bb2c359ae92ef69e4665c64b1426b5c9c679} +754 -4
  119. package/npm-cache/_cacache/content-v2/sha512/{f0/cd/122ef06b9b14ff660e76b76c55bdf9054a349db89db6acccceb50aa006324223f08434e75ad8ad7ba960d1cd79706392812a3a6a1de28f2e1e13bf20117c → ec/06/b73d58cb9ef819977fa36840698791463682d28dabe0130083e97cb6c4ad89e36f7ff0e7e7f3ceeab5f0d7b83ce6de0a6ffb12641353d40636ebfc1ea4ca} +1 -1
  120. package/npm-cache/_cacache/content-v2/sha512/{83/10/95dc474a4892063135229cfe425889abae6be594fcf512c804774e2179fe634dad986961ae0ce8cec5f421780f35e88788b5e0736da111da3447c9e43f6f → ee/41/f5d41c5f72c2ad777a109ad197d61779af72098305b15fc9a7ccf5ec568e57d4e454bb032d03cdfdfe2a885eebc8d8b049a485eb25c607740b385f59a2d7} +1 -1
  121. package/npm-cache/_cacache/content-v2/sha512/{57/ad/359ba60f9cc09836840081641fbbb065f20f1b5928683d3253da7cccebfe76e0a77527acf3e4c46db27e719833fa8128468ad2318a3652583f96633efde3 → ee/dd/f6ead151dc1bf376c22f98bb4f137741e6f3799b7b42758ab1db921d876427a8693ee3e53a85f79f09752874da17bf61628ff466b9659119299377d3b242} +1 -1
  122. package/npm-cache/_cacache/content-v2/sha512/{a0/8d/c9abf2b2c72e4e752497c877317c6520789ab802b69d0524b8e087431c7493ebf0d8702a3615fc2aa932aef0291135d0659f65460ffe2d6ebafb5ad1b44c → ee/f7/89cab0a33375e7ec31140f0b071dac79754bec1b8ba4326ca86d4c885cab85ba9549ac315fd4e5726f8ebb6a09af15479dda365344af5c69c4cad01ffe51} +1 -1
  123. package/npm-cache/_cacache/content-v2/sha512/{97/b4/1878944fe09e444e919916b6b612b132ba6d2b8a119f829bd18e6293620c06046068a3463748f94bc1550d246ba51705d7a29564b5670d8ac1eaa1791cec → f7/95/937c605d52969bc7e2504f502b410e72ea9e566f42f59c4c0e62540fc94526155c648c28fdfc4c4a697b9b226747ddcfc4a27979d7415c92934dd650517d} +1 -1
  124. package/npm-cache/_cacache/content-v2/sha512/{ba/ad/e93a043b198fc61c1560b0bf1934f3f860c9010677bdc3a40e59c5d81f4254268bae67e7bcfeb4fbe9a0f7e924e0e69f24a3ece6034cdabc14135f41c514 → f9/76/20e0ec7faedc0f8b447f014824b8c76b7b10d944bb5f042a1873fb4ca4c16937a2570efc9ac15fbb81cbc2674319edaba2405ddee10ef78b8d63b17bb9b1} +1 -1
  125. package/npm-cache/_cacache/content-v2/sha512/{4e/d6/e3932bce304518e4ee672b2b5a47281f264b14a2ae6379400cdc5024a1407b1fe4324d6f166f9c2c25f2d30bb0b40b629bba9936ea63c74c5092656d51c6 → fd/09/ed9251e1697a5851fdbcdaf7544c4f4156ef6da6d7a8b196801724875b167770700544a6beef844a869bc7c62c8912c685ae3e251fc3a645fd36a11b1137} +670 -4
  126. package/npm-cache/_cacache/content-v2/sha512/{db/10/766121ffb6ceaca3a97f40d4b04bc65f7d9e1515c4ecdec737cc3063c49062cbb8cdc4ac3a364ea486f84560c1a15b7e6f2e453a4de99c3b8498518cb373 → ff/22/d1724f1a82b4a4f6b5640280ee5fe2f03811f8856a3040dbe854aea7b2b7050263a467b5c4fded2937803c32ce8d03f956057226b62600876b6216bc3047} +1 -1
  127. package/npm-cache/_cacache/content-v2/sha512/{4d/8c/d66430fd2b9a2be89843deba91661dc6a439ce1b95ad7ca804ca82b58a81bf0d05e2d5fc432e4ce10b68f25c441c48d6fdd20906ebf54e03a0e93667cb05 → ff/7d/a1faf6251e896ea76a0782f3d69cdc2fee5f6424db28198df54ea3d5026924f490c5205e8b5f98c2b453b58118dc2390adafaa720ef07a2a798aad23f20e} +1 -1
  128. package/npm-cache/_cacache/index-v5/00/a4/2561c4bd29542a45f200119a7266ed0af6c0127d1713d8426a76afcebc3b +1 -1
  129. package/npm-cache/_cacache/index-v5/03/fc/2e4971871cbe7c4683c40028c9841909eb95da70a8c271cc5e74d2274db0 +1 -1
  130. package/npm-cache/_cacache/index-v5/04/85/a4ceacb93ac66c9bba8c1b8bbb142a6e1c7bf86a0d2b5d869b54a691365d +1 -1
  131. package/npm-cache/_cacache/index-v5/04/8d/10076bb0eb85eac4949c62dac26556c750c17b235801520151aafb9fbdd9 +1 -1
  132. package/npm-cache/_cacache/index-v5/07/0a/870046ded9759ff1db8e3ae4aa36da025915f92ef539d3cd476115aedfd3 +1 -1
  133. package/npm-cache/_cacache/index-v5/09/db/6b917a5246682f40adef5e0b2418e4f1677e4cd44fd697a963fe378c10d4 +1 -1
  134. package/npm-cache/_cacache/index-v5/09/e5/c408e16d39c9a61a4ead46272dcd3f2cc73539be1f431b8aeb12ea4b9745 +2 -2
  135. package/npm-cache/_cacache/index-v5/0a/fa/33b8f37787b39b496d4c4e327d6e6c1d59f468f618313987170c91f9bb47 +1 -1
  136. package/npm-cache/_cacache/index-v5/0b/c4/de5b49df6d6a44f0e13ef52d79599a3419c0fad648ee1808c21623eacba4 +2 -2
  137. package/npm-cache/_cacache/index-v5/0c/28/4c87c494f76b8f44df08ece092f236cba2a02940b10b6326b5742a1ea58b +1 -1
  138. package/npm-cache/_cacache/index-v5/0d/6d/62eabb615a12de44082ebb73b64f681437d46972863d441f8e4617824f3e +2 -0
  139. package/npm-cache/_cacache/index-v5/0f/c2/ab29762a4cc18f4ff5dd5bcf0233aab276fca81966d9cfc62ec939735a30 +1 -1
  140. package/npm-cache/_cacache/index-v5/10/16/643d60bb1201bbf3f970d31ffbbabf5279748b0ed32b8966a2874beb9d2e +2 -2
  141. package/npm-cache/_cacache/index-v5/10/a4/4d04637b9c74b4e3200962b7aa2d7e1650aa732ef9c9350b7e291b00b928 +1 -1
  142. package/npm-cache/_cacache/index-v5/11/20/4ecebb0a23a70a1a49205693fe7e819477a3e9afdce98747f6d55a99f1ce +1 -1
  143. package/npm-cache/_cacache/index-v5/11/cb/2b0f91de06565c83ddce42e4b59bc39db9fcba5ba733a10403d76dd86212 +1 -1
  144. package/npm-cache/_cacache/index-v5/14/34/7852b69ae8d1ec1c13c8ac46434436302e85ee3093864f0bdbde8d446b0e +1 -1
  145. package/npm-cache/_cacache/index-v5/14/65/ccdae227fe4d6887fef371dde209e331062a15f9d6ba7db3e0ceb1971315 +2 -0
  146. package/npm-cache/_cacache/index-v5/14/87/c858f25b767fba4948976a7ed953872abe32bb7cdcfd6366a9bf8f6ca2ae +1 -1
  147. package/npm-cache/_cacache/index-v5/14/88/7266de110bc26277730b3de506233b0cc25bea87e84c07f2c1f9bd0ca78e +1 -1
  148. package/npm-cache/_cacache/index-v5/17/47/0cabd0ee6013d9251f3a2be3e6b9d37e3185c06a43232f0c26a541791db9 +2 -0
  149. package/npm-cache/_cacache/index-v5/17/cb/1acc076b0718389dbb21cf985a6c25f0f36cb27e0f868ccfb0e6bdd706ff +1 -1
  150. package/npm-cache/_cacache/index-v5/1c/f5/68513b2dfdf84ca23cf457a03b0349cb89f137932ec0685e3b355cf61eef +1 -1
  151. package/npm-cache/_cacache/index-v5/21/94/518c566ad78afacb599dcff452e67d041797dc04024ce153bb09ecebbe7a +1 -1
  152. package/npm-cache/_cacache/index-v5/22/42/979b475714e594a0837378b40549cbe6cf60c8391684832b176f8a66c783 +1 -1
  153. package/npm-cache/_cacache/index-v5/22/93/4e00232684e983dc9546a904ffb04997dda7fc10fb28998bc31da03a85f0 +1 -1
  154. package/npm-cache/_cacache/index-v5/26/00/d320859b1f51f2315dd976e2e52a222df1922a4eee68fa98edc4a548dd90 +1 -1
  155. package/npm-cache/_cacache/index-v5/27/44/aadf2b66990731e5eae895635531ea3f7090b200c0550ee7a9cd233eaef9 +1 -1
  156. package/npm-cache/_cacache/index-v5/29/e7/3b67ce9018a5cce5952ac73369e43ca70677b2b34ef9c02d267435810cb2 +1 -1
  157. package/npm-cache/_cacache/index-v5/29/f7/1330f48086f95c0bc5e9edb6769e6aed919b013ac1c751c0cb473ef431d8 +1 -1
  158. package/npm-cache/_cacache/index-v5/2a/f6/ec0a8ef0e54f06d663df9790394dafaccdb9cf95b6a5e86ceceeb55e7cb0 +1 -1
  159. package/npm-cache/_cacache/index-v5/2c/f8/290ea8a3a179dc8c5c75b1b27f13a497f8d8292e3fbac809e114cb553aab +1 -1
  160. package/npm-cache/_cacache/index-v5/2e/8c/2589fca634e2a1f2caa5db01cd4546f718bcfe06ff60cb4d1ba1b4954c09 +1 -1
  161. package/npm-cache/_cacache/index-v5/2f/31/efddc30ba28f899c91badbcd872f5e8d1d981edc8b859acd6cbe01ac4e5f +2 -2
  162. package/npm-cache/_cacache/index-v5/31/d8/a1c0d9a4ca3a73b1281d4c25b3966ffd3ac333d55a0a353885dc5fdbcfa3 +1 -1
  163. package/npm-cache/_cacache/index-v5/32/19/716b5dd397b5cad2a4396c5b87fe205d4971171d20ef513a548a940d04d0 +1 -1
  164. package/npm-cache/_cacache/index-v5/32/7d/7f1cdee9b7102200dfc9c0132801d37b2d797e876b4615bc5eac237331fa +1 -1
  165. package/npm-cache/_cacache/index-v5/32/c6/f5efec97cd2d4a47c3b5bb8343c78688e539ecc1d1561fbab3adf1726bb2 +1 -1
  166. package/npm-cache/_cacache/index-v5/34/78/6886c559c91a5b7c29a8d2faf905269d2107abd5127ee8ee8f1658ba4594 +1 -1
  167. package/npm-cache/_cacache/index-v5/35/24/adb625edd745d166ea0363eeedd76af71a459a4706355c6e0d15c33f173d +1 -1
  168. package/npm-cache/_cacache/index-v5/36/4d/ecd5319ea0c408367f689e733b990720ac813fafa3ac39587f40fd29311a +1 -1
  169. package/npm-cache/_cacache/index-v5/36/77/1c1f669583dacb41d5046be7b85b0fee735cd8d8a0ae96e7a5a93a9c7ad4 +1 -1
  170. package/npm-cache/_cacache/index-v5/36/84/94cfa62a87b393dd7d637570f602f9168982092992586efd8db1638b5049 +2 -0
  171. package/npm-cache/_cacache/index-v5/38/cc/aa73b30f32538694e8d06d1991682cc9d58b07499da9554e2a1efea9c214 +1 -1
  172. package/npm-cache/_cacache/index-v5/39/f7/5e8902722c7fc724fd641f08e34cc32690d9e0fec0dc718b6651a592bcd4 +2 -0
  173. package/npm-cache/_cacache/index-v5/3c/78/c616b75928b4cfe81b30efff60de5b7fd12d1ef32338eb5424e17fd633fd +1 -1
  174. package/npm-cache/_cacache/index-v5/3c/d5/5c88b3a75335b6dd5b5b5144c1a1a005fdb24b1695a605beea079865052d +1 -1
  175. package/npm-cache/_cacache/index-v5/3d/e8/e9ef9727e5339a4707d6d4f92541a33949ae9c7e6a9926d6cf84d7b3b803 +1 -1
  176. package/npm-cache/_cacache/index-v5/3d/ff/b7f2dc191f665a37be240e4ab574e3708e1932f773d3abae5ebbc52db86f +1 -1
  177. package/npm-cache/_cacache/index-v5/3e/76/cac1a661b02b2714e590fbc3c700a88705428cdca0985758f8da69869d85 +1 -1
  178. package/npm-cache/_cacache/index-v5/40/18/8c641ab4332c83f2c7387bc3855050defba350b0796fc247ecb4a84de6d7 +1 -1
  179. package/npm-cache/_cacache/index-v5/41/77/bb910a7fdf7c84c4343a68269328953de02859106a2dfb957feb22178d22 +1 -1
  180. package/npm-cache/_cacache/index-v5/41/9f/a4e9413542a1095da1906c6b3e3c7e1e254246090c42b419b59512b3b199 +2 -2
  181. package/npm-cache/_cacache/index-v5/43/c0/be57b1ea122285311849fdda4f3bd1a12087370070a0dbbd8a8fdd67ede0 +1 -1
  182. package/npm-cache/_cacache/index-v5/44/dc/484af8ba96dc6aa7f4295e6a7cbdad563a9f3ca686b07d8cb8b652948632 +1 -1
  183. package/npm-cache/_cacache/index-v5/45/28/92ec847182e8e00c2fd6b6170697e7ff5da75cfadc4822bdd73c1e7c0e85 +1 -1
  184. package/npm-cache/_cacache/index-v5/4a/32/732d98948bf6ad03f44f78b8ce808735ee00a0d8cf3842e4244b20fda532 +1 -1
  185. package/npm-cache/_cacache/index-v5/4a/67/e43e3688ff5a0e39ebecc9b1faf3da545adcc323933c0b8355efa02d9fe7 +2 -2
  186. package/npm-cache/_cacache/index-v5/4b/17/2fbf4fe980d17ab355272952768b1d7832317172b93371a306d4bb807b4d +1 -1
  187. package/npm-cache/_cacache/index-v5/4b/47/fe08a251d6a7e0f1c077da3b1a9bd8d1962fa4e5fb1174a0e9f11fcea2a8 +1 -1
  188. package/npm-cache/_cacache/index-v5/4e/4f/fe26e91353504dc7c86f696a26f3fe64e74137cb91b56e74b10526fba6c3 +1 -1
  189. package/npm-cache/_cacache/index-v5/4e/fc/b5cc16501063bc1631d51a2e3e209c9325794566322c5a2ca7f2d99aec07 +1 -1
  190. package/npm-cache/_cacache/index-v5/4f/9f/f77b80d259e42a54b66378b3ffbaae7691e9fb8ed59e990ff106d5edff30 +1 -1
  191. package/npm-cache/_cacache/index-v5/50/22/70f6616881ccbabd9778297c4bf9f6340ba3d5393e57f2a600fdab0bab5e +2 -0
  192. package/npm-cache/_cacache/index-v5/50/ec/7f611a9c669e5600fd64ae903ac13b283b115aaf5ab4fed5f0764556214b +1 -1
  193. package/npm-cache/_cacache/index-v5/51/09/691188a6b343b62c49c4438350370f812b5af3d98ee75bb43a8a070b0a51 +1 -1
  194. package/npm-cache/_cacache/index-v5/52/64/e4dd2bf213ecf320b0ccbd9a71550e165ba8f2ffc9796e22f922db40f709 +1 -1
  195. package/npm-cache/_cacache/index-v5/53/b8/b33f9735e0f4d78e36abe835858c2a91cda40783f4fa0cd6b38d235170c4 +2 -2
  196. package/npm-cache/_cacache/index-v5/58/0c/4e22c1685937f0bcf3d3a17e51e8c73cd87590f53a14e2b99cbcf3baaeb2 +1 -1
  197. package/npm-cache/_cacache/index-v5/58/62/394babe1661820f396afc433e46ac82d24b89ce4f42fac01e2834fe7aa50 +1 -1
  198. package/npm-cache/_cacache/index-v5/59/d3/159f146a8a1dcc3a63164ac6ad640a458fbf25c741d01602d2ac285a29cf +1 -1
  199. package/npm-cache/_cacache/index-v5/5a/22/51e204d6fc431421ab78fe24211364b0d0085dc5a8df868f5098df3f4062 +1 -1
  200. package/npm-cache/_cacache/index-v5/5b/0e/62f8446bafd728358c3a6ab1b6b801358cee7b0a0bb616deb9f9e55f9612 +2 -0
  201. package/npm-cache/_cacache/index-v5/5d/66/0136dda6331d3f465c368a63a37fc204a82ce9c02bdbfd3aa5cbfb09b025 +1 -1
  202. package/npm-cache/_cacache/index-v5/5f/35/c5b4cbb4134d713aa3b89e08f875469a387933d8afd3322dc57bdee755b5 +1 -1
  203. package/npm-cache/_cacache/index-v5/63/c0/decc4ba67bb67abf948ab2b443e12dd4798181c5b42e912b958c413b0691 +1 -1
  204. package/npm-cache/_cacache/index-v5/63/ec/570fa50cbe8043ce123996fe16db3152436a786a3234437ac9fcfa5a7d48 +1 -1
  205. package/npm-cache/_cacache/index-v5/64/63/a614493a2a5ffd13d9041bdf16535beb3911aa0958729cf279e1771f3f14 +1 -1
  206. package/npm-cache/_cacache/index-v5/67/6c/3c138c91ed61f14e6509f0ee955b1c72a12bd7b7c77be434822a7c42dfc1 +1 -1
  207. package/npm-cache/_cacache/index-v5/68/a6/db45a413a9e450d22042a92a09b47aab4f3a42a1edb6e8cd48a281120f5c +2 -0
  208. package/npm-cache/_cacache/index-v5/69/22/ad2147f319b8ac92c74951f3f108e377ad945be56c36c042634837764ed3 +1 -1
  209. package/npm-cache/_cacache/index-v5/69/e0/d2ad3268767b808774a73bafba4f140153f0df83670adb3f2f79b91622f5 +1 -1
  210. package/npm-cache/_cacache/index-v5/6a/75/8271b4673a3907eafe84143c1ebf96549ee3f41fca09aab6c330f7036345 +1 -1
  211. package/npm-cache/_cacache/index-v5/6b/bd/0b6046f306f78f48d3fdcc0c005c574eaf74524fcaeb7b062431946deb7c +2 -0
  212. package/npm-cache/_cacache/index-v5/6b/cd/2b4af3cb246e94de48f5e8db73b0791ee9752114ab406ebf788b9888d52f +1 -1
  213. package/npm-cache/_cacache/index-v5/6c/18/232783a3ef226a94aa3122f0f2582760c4bdf2a411598e2b4b8d33e633ef +1 -1
  214. package/npm-cache/_cacache/index-v5/6c/84/0bbc09c6e788eb5505587b1e6822116df246c7578f1a30c8026e5e998143 +1 -1
  215. package/npm-cache/_cacache/index-v5/6c/a6/3abf0a3fd196b864eed75161dea408775ae499b295f14deabdee51b6b24c +1 -1
  216. package/npm-cache/_cacache/index-v5/6c/bc/52e7f6ffb8c6305bb83444f7607924ca0e0d6b2abf074b3500f128fb0b84 +1 -1
  217. package/npm-cache/_cacache/index-v5/6d/77/b6d15baf05ffecf9961d8c56c81198eccf9b627f994dda8cad2adfb1d093 +1 -1
  218. package/npm-cache/_cacache/index-v5/6d/8c/c0262ceb62e1d0cb70f408b3887166ddab2bab3ad28c00aec47bf794c625 +2 -0
  219. package/npm-cache/_cacache/index-v5/6e/4e/af5a6f10d9ea752745b4505fb7c8e1afdf6c24fadb1031c0be4096d7c077 +1 -1
  220. package/npm-cache/_cacache/index-v5/6f/b4/368074d27d8f033fbf6f5aa35a3f7dc7fe7f992beca8a0838dbf604a8ac7 +1 -1
  221. package/npm-cache/_cacache/index-v5/70/ec/c8674a76e3fdb3367b9e908aefe158eacce3858efe45e31647ee784bf3ba +1 -1
  222. package/npm-cache/_cacache/index-v5/71/25/8fbcc83880409f1f01ee29428a27794db5b4a050ffddc2f445b67305e2d1 +1 -1
  223. package/npm-cache/_cacache/index-v5/71/56/174350e7c137d909a85baa52ef63930fc1ced90842393b40b0ad1a5335ee +1 -1
  224. package/npm-cache/_cacache/index-v5/74/9c/409473e5b8efe3ff71fdca49628eb21a43b6e95c5bd64c4a71bdc0153ec8 +1 -1
  225. package/npm-cache/_cacache/index-v5/75/cd/ffafc14f444980a3e554de95198e9ac8c5a38487ec12ee93d8cf2ef7323e +1 -1
  226. package/npm-cache/_cacache/index-v5/76/c1/2e75b329eced87806810ab157eb96915d3a7dfc1057c0443608d40e40ead +1 -1
  227. package/npm-cache/_cacache/index-v5/78/8b/9c1005a28c9efb1ed1bffb8269000bcc14bf01994709e45cec175538afa0 +1 -1
  228. package/npm-cache/_cacache/index-v5/79/9e/683e2c64a3177cb58b8f1d0fc715e76f4b9980579f1e0427015b3f0ed8ae +1 -1
  229. package/npm-cache/_cacache/index-v5/7a/73/016f3471eb40039cd19b457815eb7edd93f5165e708e564ff44a8a36234b +1 -1
  230. package/npm-cache/_cacache/index-v5/7f/56/8c532ba1a8b414d263e39aa65290cc1aef54fb479d4990dabb9f0f3f529c +1 -1
  231. package/npm-cache/_cacache/index-v5/80/61/17b28d82b94e38e01e2848b39943ad5a6f670ae0e4a13bfcacc5672747fb +1 -1
  232. package/npm-cache/_cacache/index-v5/80/c1/5f0d8787035b3fb019f3ce0ee84874dc65f8eac9d70dc5727cb54a37b6c5 +1 -1
  233. package/npm-cache/_cacache/index-v5/81/72/5198576cc33b42052a71afff1fe5b3f99ebceef2abac3c4b0c8ab3aab1a9 +1 -1
  234. package/npm-cache/_cacache/index-v5/82/4f/935589ebd227b786f6e3fd8cb9e39011c5adf2b1423d6e16c33fd5dad6af +1 -1
  235. package/npm-cache/_cacache/index-v5/82/a6/bf6bb1103b6a6f8c3cca891cd04f73568918c5feaa42abcedecdfada1ec7 +1 -1
  236. package/npm-cache/_cacache/index-v5/84/94/ebaab8deb1190ff42935bfc0427761369021116ac4a6733e2d9a9f0fe88a +1 -1
  237. package/npm-cache/_cacache/index-v5/86/32/cbab75a78504c819eeb2bb06c7bb311704ebb5a861484fd3f8e3e454f0e8 +1 -1
  238. package/npm-cache/_cacache/index-v5/8a/e7/3e8b22d8b8def3fc70635e7ab2897cf22b0bdb8f452b992a435bdfdcc085 +1 -1
  239. package/npm-cache/_cacache/index-v5/8b/7d/831b2479d25a78b98a2adee587db2c6d362c99f317c377b898709e502626 +1 -1
  240. package/npm-cache/_cacache/index-v5/8b/8c/907953f0508611e8b8731db3f56d2eef714b6cce9de5b087aa7decd0a492 +1 -1
  241. package/npm-cache/_cacache/index-v5/8c/b1/7c08aea7bbba9e7a8e1a5f3d5c50d1aa3af7f189a6994f413663a065dbc1 +1 -1
  242. package/npm-cache/_cacache/index-v5/8c/db/d4d1c521c18165b38eea6d9f1aa2ff6cd55fd074b726567269ff441806c9 +1 -1
  243. package/npm-cache/_cacache/index-v5/8d/5d/6785b7ea2be7c6f6967cd3bd1e8a3a4e148bbcc7b3113cb4dec129895012 +1 -1
  244. package/npm-cache/_cacache/index-v5/94/db/32b4c1799776e242f06631d6ec0307634aad3703141d8d8ab9c588c41f33 +1 -1
  245. package/npm-cache/_cacache/index-v5/96/11/bc784a53f33b35d3c8c079b0b1ce06bffa8248f97ab0c7d13554cf3a81ae +1 -1
  246. package/npm-cache/_cacache/index-v5/97/ca/050529386876f07d9cec38c84189617992b9d7f6fb828b55fb71536bae30 +1 -1
  247. package/npm-cache/_cacache/index-v5/97/cd/140c3630b343d2116b1a10acaa2ecde9f1df9b8be28ecc143c86181fc1dc +1 -1
  248. package/npm-cache/_cacache/index-v5/98/99/f0e17e0e38c059d05babfaa47a03c9d8db1a02a4b282eb077edd80c66fac +1 -1
  249. package/npm-cache/_cacache/index-v5/9a/8d/9e9124b5c1741db990db779dbe3aa90ff4319aa7abbcaf4b71722a6159f5 +1 -1
  250. package/npm-cache/_cacache/index-v5/9b/07/f828ebc8b95e9b5a0c766d5621f5f1722a0fe949a9ff9740aea1ee73bfdb +1 -1
  251. package/npm-cache/_cacache/index-v5/9b/c2/f971239099163d00800ffb839bc4fa0e69cb5a8e6956155250e2038830b5 +1 -1
  252. package/npm-cache/_cacache/index-v5/9d/90/2f8e23ddca3c0d8b85ed4315536967907b9495b079983e15dc71b4b87a38 +1 -1
  253. package/npm-cache/_cacache/index-v5/9e/56/58b6e51b8d3072aac0d648b89d980bf60503cde2b02f3e58b778dc50cfa3 +1 -1
  254. package/npm-cache/_cacache/index-v5/9e/a5/2e2f2209a427df7d8a981b93b254ab7332dde6b746fcbb0d3e14aada7d71 +2 -0
  255. package/npm-cache/_cacache/index-v5/a0/d5/0f237f20b1e438891d68a95d4ee986a17c2795c74241b771143decf94356 +1 -1
  256. package/npm-cache/_cacache/index-v5/a1/00/4b368f6fab8b18540d40ef384e19e71bccfdb58bb2107f6c324eb1966867 +1 -1
  257. package/npm-cache/_cacache/index-v5/a1/a5/80a8603b2dda6fc55f94a270fc8a490babad3a0730e7bfc71c4295aeb677 +1 -1
  258. package/npm-cache/_cacache/index-v5/a2/67/59091680a451687e684a6fb82b30d5466c4aff869e446549a4f56d76308e +1 -1
  259. package/npm-cache/_cacache/index-v5/a5/d0/628432ce9407eb9b1d481981bdb3d6d166263853ebe4651ad081c6c6d789 +1 -1
  260. package/npm-cache/_cacache/index-v5/a6/ad/d01c8fc46cd6914231dacf26c3b0a2d524fc5c9b68e2bbac2ecd17808402 +1 -1
  261. package/npm-cache/_cacache/index-v5/a8/a6/c1e067475d0053df13543e8c2a188e370dbd99daf977e54cb6864f7b8923 +1 -1
  262. package/npm-cache/_cacache/index-v5/aa/1a/76dc1528ee45c59d2e839a69ec25208da49745ae5a3cd5954cb9672eda00 +2 -2
  263. package/npm-cache/_cacache/index-v5/aa/8a/f10a56c1fef350f963a84d792f1824d931f2d3bab598cbdc41fc227fbc3b +2 -0
  264. package/npm-cache/_cacache/index-v5/ac/59/858830b19c3c1133f7b36059774a02cb368163640f95ec2700d442ae9ff4 +1 -1
  265. package/npm-cache/_cacache/index-v5/ac/62/dde8a3b4f84b2bc210deb541c813f1986eaeb663a591afdd009a23ca71f4 +1 -1
  266. package/npm-cache/_cacache/index-v5/ac/64/befd04b1f30a8e877736b9af292f6414e7daf7cc5eef7ca388b8c4e3bff5 +1 -1
  267. package/npm-cache/_cacache/index-v5/ac/cc/fc50e2ee02f8d3c90fef448f4419e67a865c450fb56bac5c3ddf12198a61 +1 -1
  268. package/npm-cache/_cacache/index-v5/ac/f1/4f591c7f01fa877461db2a467859721c0fc9a62d0985d298463bee0d5aeb +1 -1
  269. package/npm-cache/_cacache/index-v5/ac/f4/1b4fa464c92b8cc30d03ef86aeaf383eb011e6911f6b7826e4670e60ffec +1 -1
  270. package/npm-cache/_cacache/index-v5/ad/41/fcd5803f01fdd5597fc5139b3f31419374e882ee5a8da02680f24da542a4 +1 -1
  271. package/npm-cache/_cacache/index-v5/ad/8c/86a3f4fe11e08795f6f922abe8ca76118f8dee062eba8bebad07b05feccf +1 -1
  272. package/npm-cache/_cacache/index-v5/ae/05/656555d63c33ebf8afafb81ab5a499db2cbaf78c9fe03920c0e296372580 +1 -1
  273. package/npm-cache/_cacache/index-v5/af/e8/3e6bd6b5863046df6a35292ad9b1216300aaeebb7b45f6305bfe1559787b +1 -1
  274. package/npm-cache/_cacache/index-v5/b0/05/bfc7f6818cd65339734682022d2bb25add76ee18330beabc1b66f8c99cca +1 -1
  275. package/npm-cache/_cacache/index-v5/b0/8d/ac718808a492ebaed8bf28d37ea2230fbfcf0eb9858575466ab851b2688a +1 -1
  276. package/npm-cache/_cacache/index-v5/b4/cd/be958b248023d6d7bfbdcb152efc6b142c743af84c0d2ad12f7865ba62f2 +2 -0
  277. package/npm-cache/_cacache/index-v5/b5/cc/315634719049634e60583d7a7b62885d7fa7965ecbab822b2a5482ab0c1b +1 -1
  278. package/npm-cache/_cacache/index-v5/b6/56/340ee2f010d5050b97af1b59ba82733d6bce38ed281734741707d7d5ae38 +1 -1
  279. package/npm-cache/_cacache/index-v5/b8/a7/610e61d34851733f6eb1819f28adf0abaa314d8463d767f6d6ba58a688f8 +1 -1
  280. package/npm-cache/_cacache/index-v5/b9/e5/048be7cf8cb86be8220fd5e11221b2ed464eabc69cf1d6b4eef390b43d54 +1 -1
  281. package/npm-cache/_cacache/index-v5/bb/aa/0e7a52a453e978d003924467fbfdf0e95de72af5f980a194337c5465d681 +2 -2
  282. package/npm-cache/_cacache/index-v5/bb/bb/f3f28681f6a2655774cc276a151e0a63a851182f267fede249957e754a56 +2 -2
  283. package/npm-cache/_cacache/index-v5/bb/f6/55fe567f91eeefe92ee53de633799f80aabc93f9f8a207642fcf22c7f5ff +1 -1
  284. package/npm-cache/_cacache/index-v5/bc/9f/208ee3981de0cba7ba79204460de5bc240683f0f91e25407b6a8b74c9715 +1 -1
  285. package/npm-cache/_cacache/index-v5/bd/2a/25ed44b74b78a0fcd39d3689b5b7d6b710d8e5d790e3e3d137b847b118d0 +1 -1
  286. package/npm-cache/_cacache/index-v5/be/9d/6c4cf469c16f24b89f9012983ff704d64df129af84d59d9fcf8559d79df9 +1 -1
  287. package/npm-cache/_cacache/index-v5/c1/42/e6ff8e42c165eab6246c9730d0a2fac918cf384f45cc7d1edfac768c218a +1 -1
  288. package/npm-cache/_cacache/index-v5/c2/ba/9d9258ee0c2ab75d8bba169b80753c4dec8a7f5eb3674a1c8d6c6cae486b +1 -1
  289. package/npm-cache/_cacache/index-v5/cb/51/0372d4db1f33ea20cd12081440ec1cdd44dfae721fd56151c748a83cd583 +1 -1
  290. package/npm-cache/_cacache/index-v5/cb/b2/038d87336c50673a045cc3b5c5026e643296d2bc2e5974260b5619a9b067 +1 -1
  291. package/npm-cache/_cacache/index-v5/cc/ed/e02d4c933417654f3429283620d4e62845bfc33901f458df08c9597b4d96 +2 -2
  292. package/npm-cache/_cacache/index-v5/cf/f9/2dd6581bde268e2263e419841af384f855931ae58b466a979d851650adb2 +1 -1
  293. package/npm-cache/_cacache/index-v5/d0/da/3466bc785dd4263f22c6ee0af8469276aacd782eb8831d0528acf7d639b1 +2 -0
  294. package/npm-cache/_cacache/index-v5/d2/d9/3bbd1b7d4482ccb62ddc3cda9f1d0d9cfa47d7c2efe6bf54160707ba5fb0 +1 -1
  295. package/npm-cache/_cacache/index-v5/d3/d4/6bf0e9be6f8aec85e3e89737a933111ee25dce7798c6f4e9b327b8d63fb2 +1 -1
  296. package/npm-cache/_cacache/index-v5/d4/bb/1edc44d2d976bfb48a85dec6619a61b20e58add5c7c89a167da7f97d26c7 +1 -1
  297. package/npm-cache/_cacache/index-v5/d4/fb/13671dac52410c25d89a61f795f690fae9493f46c397058534b05df6ffd9 +1 -1
  298. package/npm-cache/_cacache/index-v5/d6/95/e6ee3e87667b0ca08405979157884a357b6761a15de5d976d137fdbdf59b +1 -1
  299. package/npm-cache/_cacache/index-v5/d9/73/14362c3f5b894f07281e7fcbc0cd1d01a9237de1a4978ebc120bc9d5057c +1 -1
  300. package/npm-cache/_cacache/index-v5/da/00/c9cd38a9efb5b010f96c7ebb13a53b021ffae2facbac32ea345fc79fcd83 +1 -1
  301. package/npm-cache/_cacache/index-v5/da/79/00c767708372117d5f6f4c7417edc2c745c51db31877112e000b6105c6dc +1 -1
  302. package/npm-cache/_cacache/index-v5/dc/1d/36f427261e3fe1d3b0dd35d987126a1a71e16f63d1a4c314e6329a8ae956 +1 -1
  303. package/npm-cache/_cacache/index-v5/dd/09/f58df28338ce06e38dcadac4b9f98a28dcfe1bff5cbde8fb73f694cab3e6 +1 -1
  304. package/npm-cache/_cacache/index-v5/dd/1c/bcc1f709950f1383807fb39e140d3aac8716b33c15565b9b222936ad8769 +1 -1
  305. package/npm-cache/_cacache/index-v5/dd/92/d0cab31acafdeccaf93de780398c2e6b187cb86661de094d9c0bf0c33db6 +1 -1
  306. package/npm-cache/_cacache/index-v5/dd/a4/101bb6faa7eaa5d3fe352b4602206d2689b7549281a2b34cfc97b977defd +1 -1
  307. package/npm-cache/_cacache/index-v5/de/73/e9caeba3b1b1f206044a576acacea780fa297c40c7494e194c50b7aa9b92 +1 -1
  308. package/npm-cache/_cacache/index-v5/de/bb/65a16c24e12e0fc24e080de170cc984399489892fedc81e8ace36b421c6b +1 -1
  309. package/npm-cache/_cacache/index-v5/e0/5b/421fa6b3b0d609059e018465e0757940a0217a587ef3ceb70f47b1d941a5 +2 -2
  310. package/npm-cache/_cacache/index-v5/e1/f1/25fed3313de95750171cbf40668b505efb352332c88159d22c268e677ea9 +1 -1
  311. package/npm-cache/_cacache/index-v5/e3/72/0e6a429604e3fbc023c5a4de075d0897566974261a38d0b0ac64018c2141 +1 -1
  312. package/npm-cache/_cacache/index-v5/e4/f6/abd881a4315f953a21d0ee758ba2f12f9db54886778a2c6f86a2386f52ce +1 -1
  313. package/npm-cache/_cacache/index-v5/e6/22/f3b7ce2981fd22cab8dd1fb0ee6e373919b308b0490e9e1cf19ae3a56dbc +2 -0
  314. package/npm-cache/_cacache/index-v5/e9/59/9004c77719128a35075feb86541f7ae579d33dd55432c975c54781ad3534 +1 -1
  315. package/npm-cache/_cacache/index-v5/eb/42/4b795254eda4a03e5795ff8768851dccae2296fa569ccd7459d5a19d6793 +1 -1
  316. package/npm-cache/_cacache/index-v5/ed/1f/73c80c5a97f1b84ec45d95de45bac2f30257cad6264daba6eb5ccdab895a +1 -1
  317. package/npm-cache/_cacache/index-v5/ed/a8/7f36c1db45a95f95c67b3b227946bcc9e078d07565c497de9f3df560fb6f +1 -1
  318. package/npm-cache/_cacache/index-v5/ef/50/eec933ed51733c31c102cebfcc307ddba8fd0c2d43b4cf581210f13fd6d5 +1 -1
  319. package/npm-cache/_cacache/index-v5/ef/b1/d347bc48d84b9d46d9a9452851b321fe4eda0bd34451ddfabd3c987ba9bd +1 -1
  320. package/npm-cache/_cacache/index-v5/ef/e5/a231d125cbc50fa3cc970496d4162633b953f03ff0aa4f25ce011723a944 +2 -0
  321. package/npm-cache/_cacache/index-v5/f2/08/36628a12c4095a731d48c9092755e11b7aa696b412069ed8393f29502d87 +1 -1
  322. package/npm-cache/_cacache/index-v5/f2/0b/057113f8dd025675c496228016f63835396bd7a0d93db75562f80a294434 +1 -1
  323. package/npm-cache/_cacache/index-v5/f3/70/2b1e45c06bd249f9b55908df30f3d8cecab44c4fd0367ab02e524564e50a +1 -1
  324. package/npm-cache/_cacache/index-v5/f7/c3/e9670651069a6091a0a54cb3c1d4f5a374dce8d6e6164f785da0bf4808b2 +1 -1
  325. package/npm-cache/_cacache/index-v5/f9/7f/f0c324a4f4c1ea26e1db36273527022278acf67673932d0a5d16aeaafd1f +1 -1
  326. package/npm-cache/_cacache/index-v5/fa/41/e6d28d9c2522d10a750d135b3b893df381f49f3d16b70aae61f64097c14b +1 -1
  327. package/npm-cache/_cacache/index-v5/fa/8e/5bc93a82136a438fe240e47f9ff34f3c80a5aab772a014031d8ab91be519 +1 -1
  328. package/npm-cache/_cacache/index-v5/fa/db/7e1ffa1755b41843b8fa75e5314390b1c19690e23ad58bc11e79a6595fa7 +1 -1
  329. package/npm-cache/_cacache/index-v5/fb/4a/81d720868edd40cb1c4e111506192fa48855802d5279ccf74e3a0a938aff +1 -1
  330. package/npm-cache/_cacache/index-v5/fc/73/a16b59b7592a9eb1023c9e08c5eae8d43490f77ea12eb2a868229f8c07f2 +1 -1
  331. package/npm-cache/_cacache/index-v5/ff/9b/60156c8e9a71c54e9917fbd42fafb957274277060a37362dcc5ba56867c4 +1 -1
  332. package/npm-cache/_cacache/index-v5/ff/bc/4a7636025771bb0b1114cc594c67d17b39155dae319209c1b53f983f2a05 +1 -1
  333. package/npm-cache/_cacache/index-v5/ff/e2/6cd7ee939196f10ecd3d2b6e444e90b95a1fa7b210d987cf689672209dc0 +1 -1
  334. package/npm-cache/_logs/{2026-07-30T11_49_23_498Z-debug-0.log → 2026-08-06T07_53_43_807Z-debug-0.log} +449 -449
  335. package/npm-cache/_logs/{2026-07-30T11_49_38_329Z-debug-0.log → 2026-08-06T07_53_58_499Z-debug-0.log} +2 -2
  336. package/package.json +1 -1
  337. package/toolbox.js +2655 -2591
  338. package/toolbox.js.map +1 -1
  339. package/npm-cache/_cacache/content-v2/sha512/06/b6/71a1749c059fa74ce632dfcf331e4cf59f9712f02fae185328cc3e30f4e28458cab7f42bbff65fe4dfce476f9e1db6fd1521e875d9ff21ebba37c43347f6 +0 -0
  340. package/npm-cache/_cacache/content-v2/sha512/1e/fe/155f9f8874362601b39d8b0660bb3f1f2e1dd69c4e15b7227054d1072ee940f8e632ed9e4bd044c65255f64f883c0cb3bc5f1095f02c96aed54be2ec2a92 +0 -0
  341. package/npm-cache/_cacache/content-v2/sha512/29/f2/dffacdc44d6bf12be61e4514b91d7ffdc1652550a50117724dca42b37341fadcdf503ce3142ecde8233aca7620c94b455234aff8bcd107f0abff2db0ea6d +0 -0
  342. package/npm-cache/_cacache/content-v2/sha512/3e/cf/dff5449a7d271be824904d13cd33374a2f9c795d1c03211805be7b8559f0a51997bbfdf23b88216a5ddc4a8dcf4b0713f6f04ee2520365a0681f830e34eb +0 -0
  343. package/npm-cache/_cacache/content-v2/sha512/77/f9/8cbd2fac423496340ebe24295d2b5601fe3426b6858cf08ce3d749ab39975109e58d55bf08610baec871ca28a5dca46a393ddd0b20aea89c76cbbe586e55 +0 -0
  344. package/npm-cache/_cacache/content-v2/sha512/89/0c/4f0a5134ee11135696d1a17ec95d7deffd9415882c5efd2602c729512f3744c75c4902e7cfa6d7e23aa47cb6a882b666ed30300d296b33ce32eed4f30065 +0 -0
  345. package/npm-cache/_cacache/content-v2/sha512/8d/00/ecfa7c679a0a38f963ce998dfbdc7202f23c782b26183180c8ef8156af35f705af5f62c57475203eecf3583648516db44244badef37b50df517500208790 +0 -0
  346. package/npm-cache/_cacache/content-v2/sha512/97/dd/fddb69579d3b3946333742b3025d299788480b14b690d0b728f45ded274f28d26cc67408fa9b69c05c3b93307a14b8bd2eed12a6ae19be67cffb1828a5ca +0 -0
  347. package/npm-cache/_cacache/content-v2/sha512/b1/d1/614781371d665e7c62fa3ac061c6a5ddaad16fc463a1f152df8aef72b6d3e054d729128cc40cf9ab4d89970370887fa9e95044d52ef7903c643b181cd586 +0 -0
  348. package/npm-cache/_cacache/content-v2/sha512/cb/59/02f9f7c8c7fb4f2dd4c4ebddee3631dfcd37ebfab6af479b6f5a53177b6e6710b6e4a95e34d12ef5a870f06e4010d455446686c1d4d151cc56c209cc8109 +0 -0
  349. package/npm-cache/_cacache/content-v2/sha512/e9/86/53a45e59ce5d0a752af3b4cd25e84aca7675eb9e7a1d20361f6b21c4f5215f654f146f196cec7d979df593d76d63830886f963f5cf99327d50ec1f9578a8 +0 -0
  350. package/npm-cache/_cacache/content-v2/sha512/e9/c1/40be27df7aa6068eb5e7e05a866d6713c41de76e9069417526e8cbe7ad66538496950531c79deb291e0494878c952dfce18a94a1f47fd78f390741df4fe2 +0 -0
  351. package/npm-cache/_cacache/index-v5/02/10/13aedfa71cb0fb3358bb6e5a30db29153ebca427bbaf5634cebf30c397ba +0 -2
  352. package/npm-cache/_cacache/index-v5/05/ab/8ea13ed3ed7ae2873c8cbdb6a29190f23587ec28f13b6f56066696fe7f1b +0 -2
  353. package/npm-cache/_cacache/index-v5/17/e7/cadb61930478778c104f07cd7ec711139d92298846fbbed9a5332e55431a +0 -2
  354. package/npm-cache/_cacache/index-v5/23/dc/e7ab51c84655d0e80207acd047eb7a027b87b02eae2c2f0e668badd6b713 +0 -2
  355. package/npm-cache/_cacache/index-v5/2a/f7/2c70e27e2cd9d5364b15d08292212d08a733ee258002295465d08d81a59b +0 -2
  356. package/npm-cache/_cacache/index-v5/3a/54/8e07debb1bab0bf5aab815e686e5ecfc67dadb2d26bf1eebbad0408c42c7 +0 -2
  357. package/npm-cache/_cacache/index-v5/49/65/14ed59282ac487ef56368ff093133051e145cba7ad119b1ce4af913821e7 +0 -2
  358. package/npm-cache/_cacache/index-v5/4b/9a/07cb0c4a20577e0f0046315a545ae730f65e44cbbb41b0e8c291bafe7717 +0 -2
  359. package/npm-cache/_cacache/index-v5/51/6f/3aeb3d444eb1014e379b22664ea76af2ac4096ba312a56f9c27df96e7e69 +0 -2
  360. package/npm-cache/_cacache/index-v5/53/fb/adaea2acf57ed51f26751b6254adae645aa6ea31609ed795ce804c77288e +0 -2
  361. package/npm-cache/_cacache/index-v5/58/de/0a02d48c83280df4db48feb23d7bf5f574022fcd4db5288a303680f31378 +0 -2
  362. package/npm-cache/_cacache/index-v5/64/c9/e21cd5a64ff85b9cdb0f7692bb07e600a282b37f81ef095dd9d2d86cd898 +0 -2
  363. package/npm-cache/_cacache/index-v5/94/e6/eae3fdf87e6b721472ad43b10d94a77f9ccdd5b113be02c4f93969f74b71 +0 -2
  364. package/npm-cache/_cacache/index-v5/c5/0d/d190ba49ddeb1a955871d1842f2c68ff90c52f988b4a406787373bc5728b +0 -2
  365. package/npm-cache/_cacache/index-v5/da/ca/41bdd4fae8c53676d7a227fb95398249a8e066695c740ba105dab0d326f5 +0 -2
  366. package/npm-cache/_cacache/index-v5/fe/54/22db0c1c195562d89ab9217405b2fb602ef3a459fdcef45e9b5c47cf578c +0 -2
@@ -3714,7 +3714,7 @@
3714
3714
  "dist-tags": {
3715
3715
  "latest": "0.5.21"
3716
3716
  },
3717
- "_rev": "4668-f5e2d8a8192dbe62",
3717
+ "_rev": "4689-d67ab8bd0d8f5347",
3718
3718
  "_id": "source-map-support",
3719
3719
  "readme": "# Source Map Support\n[![Build Status](https://travis-ci.org/evanw/node-source-map-support.svg?branch=master)](https://travis-ci.org/evanw/node-source-map-support)\n\nThis module provides source map support for stack traces in node via the [V8 stack trace API](https://github.com/v8/v8/wiki/Stack-Trace-API). It uses the [source-map](https://github.com/mozilla/source-map) module to replace the paths and line numbers of source-mapped files with their original paths and line numbers. The output mimics node's stack trace format with the goal of making every compile-to-JS language more of a first-class citizen. Source maps are completely general (not specific to any one language) so you can use source maps with multiple compile-to-JS languages in the same node process.\n\n## Installation and Usage\n\n#### Node support\n\n```\n$ npm install source-map-support\n```\n\nSource maps can be generated using libraries such as [source-map-index-generator](https://github.com/twolfson/source-map-index-generator). Once you have a valid source map, place a source mapping comment somewhere in the file (usually done automatically or with an option by your transpiler):\n\n```\n//# sourceMappingURL=path/to/source.map\n```\n\nIf multiple sourceMappingURL comments exist in one file, the last sourceMappingURL comment will be\nrespected (e.g. if a file mentions the comment in code, or went through multiple transpilers).\nThe path should either be absolute or relative to the compiled file.\n\nFrom here you have two options.\n\n##### CLI Usage\n\n```bash\nnode -r source-map-support/register compiled.js\n```\n\n##### Programmatic Usage\n\nPut the following line at the top of the compiled file.\n\n```js\nrequire('source-map-support').install();\n```\n\nIt is also possible to install the source map support directly by\nrequiring the `register` module which can be handy with ES6:\n\n```js\nimport 'source-map-support/register'\n\n// Instead of:\nimport sourceMapSupport from 'source-map-support'\nsourceMapSupport.install()\n```\nNote: if you're using babel-register, it includes source-map-support already.\n\nIt is also very useful with Mocha:\n\n```\n$ mocha --require source-map-support/register tests/\n```\n\n#### Browser support\n\nThis library also works in Chrome. While the DevTools console already supports source maps, the V8 engine doesn't and `Error.prototype.stack` will be incorrect without this library. Everything will just work if you deploy your source files using [browserify](http://browserify.org/). Just make sure to pass the `--debug` flag to the browserify command so your source maps are included in the bundled code.\n\nThis library also works if you use another build process or just include the source files directly. In this case, include the file `browser-source-map-support.js` in your page and call `sourceMapSupport.install()`. It contains the whole library already bundled for the browser using browserify.\n\n```html\n<script src=\"browser-source-map-support.js\"></script>\n<script>sourceMapSupport.install();</script>\n```\n\nThis library also works if you use AMD (Asynchronous Module Definition), which is used in tools like [RequireJS](http://requirejs.org/). Just list `browser-source-map-support` as a dependency:\n\n```html\n<script>\n define(['browser-source-map-support'], function(sourceMapSupport) {\n sourceMapSupport.install();\n });\n</script>\n```\n\n## Options\n\nThis module installs two things: a change to the `stack` property on `Error` objects and a handler for uncaught exceptions that mimics node's default exception handler (the handler can be seen in the demos below). You may want to disable the handler if you have your own uncaught exception handler. This can be done by passing an argument to the installer:\n\n```js\nrequire('source-map-support').install({\n handleUncaughtExceptions: false\n});\n```\n\nThis module loads source maps from the filesystem by default. You can provide alternate loading behavior through a callback as shown below. For example, [Meteor](https://github.com/meteor) keeps all source maps cached in memory to avoid disk access.\n\n```js\nrequire('source-map-support').install({\n retrieveSourceMap: function(source) {\n if (source === 'compiled.js') {\n return {\n url: 'original.js',\n map: fs.readFileSync('compiled.js.map', 'utf8')\n };\n }\n return null;\n }\n});\n```\n\nThe module will by default assume a browser environment if XMLHttpRequest and window are defined. If either of these do not exist it will instead assume a node environment.\nIn some rare cases, e.g. when running a browser emulation and where both variables are also set, you can explictly specify the environment to be either 'browser' or 'node'.\n\n```js\nrequire('source-map-support').install({\n environment: 'node'\n});\n```\n\nTo support files with inline source maps, the `hookRequire` options can be specified, which will monitor all source files for inline source maps.\n\n\n```js\nrequire('source-map-support').install({\n hookRequire: true\n});\n```\n\nThis monkey patches the `require` module loading chain, so is not enabled by default and is not recommended for any sort of production usage.\n\n## Demos\n\n#### Basic Demo\n\noriginal.js:\n\n```js\nthrow new Error('test'); // This is the original code\n```\n\ncompiled.js:\n\n```js\nrequire('source-map-support').install();\n\nthrow new Error('test'); // This is the compiled code\n// The next line defines the sourceMapping.\n//# sourceMappingURL=compiled.js.map\n```\n\ncompiled.js.map:\n\n```json\n{\n \"version\": 3,\n \"file\": \"compiled.js\",\n \"sources\": [\"original.js\"],\n \"names\": [],\n \"mappings\": \";;AAAA,MAAM,IAAI\"\n}\n```\n\nRun compiled.js using node (notice how the stack trace uses original.js instead of compiled.js):\n\n```\n$ node compiled.js\n\noriginal.js:1\nthrow new Error('test'); // This is the original code\n ^\nError: test\n at Object.<anonymous> (original.js:1:7)\n at Module._compile (module.js:456:26)\n at Object.Module._extensions..js (module.js:474:10)\n at Module.load (module.js:356:32)\n at Function.Module._load (module.js:312:12)\n at Function.Module.runMain (module.js:497:10)\n at startup (node.js:119:16)\n at node.js:901:3\n```\n\n#### TypeScript Demo\n\ndemo.ts:\n\n```typescript\ndeclare function require(name: string);\nrequire('source-map-support').install();\nclass Foo {\n constructor() { this.bar(); }\n bar() { throw new Error('this is a demo'); }\n}\nnew Foo();\n```\n\nCompile and run the file using the TypeScript compiler from the terminal:\n\n```\n$ npm install source-map-support typescript\n$ node_modules/typescript/bin/tsc -sourcemap demo.ts\n$ node demo.js\n\ndemo.ts:5\n bar() { throw new Error('this is a demo'); }\n ^\nError: this is a demo\n at Foo.bar (demo.ts:5:17)\n at new Foo (demo.ts:4:24)\n at Object.<anonymous> (demo.ts:7:1)\n at Module._compile (module.js:456:26)\n at Object.Module._extensions..js (module.js:474:10)\n at Module.load (module.js:356:32)\n at Function.Module._load (module.js:312:12)\n at Function.Module.runMain (module.js:497:10)\n at startup (node.js:119:16)\n at node.js:901:3\n```\n\nThere is also the option to use `-r source-map-support/register` with typescript, without the need add the `require('source-map-support').install()` in the code base:\n\n```\n$ npm install source-map-support typescript\n$ node_modules/typescript/bin/tsc -sourcemap demo.ts\n$ node -r source-map-support/register demo.js\n\ndemo.ts:5\n bar() { throw new Error('this is a demo'); }\n ^\nError: this is a demo\n at Foo.bar (demo.ts:5:17)\n at new Foo (demo.ts:4:24)\n at Object.<anonymous> (demo.ts:7:1)\n at Module._compile (module.js:456:26)\n at Object.Module._extensions..js (module.js:474:10)\n at Module.load (module.js:356:32)\n at Function.Module._load (module.js:312:12)\n at Function.Module.runMain (module.js:497:10)\n at startup (node.js:119:16)\n at node.js:901:3\n```\n\n#### CoffeeScript Demo\n\ndemo.coffee:\n\n```coffee\nrequire('source-map-support').install()\nfoo = ->\n bar = -> throw new Error 'this is a demo'\n bar()\nfoo()\n```\n\nCompile and run the file using the CoffeeScript compiler from the terminal:\n\n```sh\n$ npm install source-map-support coffeescript\n$ node_modules/.bin/coffee --map --compile demo.coffee\n$ node demo.js\n\ndemo.coffee:3\n bar = -> throw new Error 'this is a demo'\n ^\nError: this is a demo\n at bar (demo.coffee:3:22)\n at foo (demo.coffee:4:3)\n at Object.<anonymous> (demo.coffee:5:1)\n at Object.<anonymous> (demo.coffee:1:1)\n at Module._compile (module.js:456:26)\n at Object.Module._extensions..js (module.js:474:10)\n at Module.load (module.js:356:32)\n at Function.Module._load (module.js:312:12)\n at Function.Module.runMain (module.js:497:10)\n at startup (node.js:119:16)\n```\n\n## Tests\n\nThis repo contains both automated tests for node and manual tests for the browser. The automated tests can be run using mocha (type `mocha` in the root directory). To run the manual tests:\n\n* Build the tests using `build.js`\n* Launch the HTTP server (`npm run serve-tests`) and visit\n * http://127.0.0.1:1336/amd-test\n * http://127.0.0.1:1336/browser-test\n * http://127.0.0.1:1336/browserify-test - **Currently not working** due to a bug with browserify (see [pull request #66](https://github.com/evanw/node-source-map-support/pull/66) for details).\n* For `header-test`, run `server.js` inside that directory and visit http://127.0.0.1:1337/\n\n## License\n\nThis code is available under the [MIT license](http://opensource.org/licenses/MIT).",
3720
3720
  "_attachments": {}
@@ -6666,7 +6666,7 @@
6666
6666
  "latest": "8.0.0",
6667
6667
  "canary": "0.15.0-1"
6668
6668
  },
6669
- "_rev": "571-40fc000fc5dde823",
6669
+ "_rev": "575-832ce818376fad66",
6670
6670
  "_id": "archiver",
6671
6671
  "readme": "# Archiver\n\nA streaming interface for archive generation\n\nVisit the [API documentation](https://www.archiverjs.com/) for a list of all methods available.\n\n## Install\n\n```bash\nnpm install archiver --save\n```\n\n## Quick Start\n\n```js\nimport fs from \"fs\";\nimport { ZipArchive } from \"archiver\";\n\n// create a file to stream archive data to.\nconst output = fs.createWriteStream(__dirname + \"/example.zip\");\nconst archive = new ZipArchive({\n zlib: { level: 9 }, // Sets the compression level.\n});\n\n// listen for all archive data to be written\n// 'close' event is fired only when a file descriptor is involved\noutput.on(\"close\", function () {\n console.log(archive.pointer() + \" total bytes\");\n console.log(\n \"archiver has been finalized and the output file descriptor has closed.\",\n );\n});\n\n// This event is fired when the data source is drained no matter what was the data source.\n// It is not part of this library but rather from the NodeJS Stream API.\n// @see: https://nodejs.org/api/stream.html#stream_event_end\noutput.on(\"end\", function () {\n console.log(\"Data has been drained\");\n});\n\n// good practice to catch warnings (ie stat failures and other non-blocking errors)\narchive.on(\"warning\", function (err) {\n if (err.code === \"ENOENT\") {\n // log warning\n } else {\n // throw error\n throw err;\n }\n});\n\n// good practice to catch this error explicitly\narchive.on(\"error\", function (err) {\n throw err;\n});\n\n// pipe archive data to the file\narchive.pipe(output);\n\n// append a file from stream\nconst file1 = __dirname + \"/file1.txt\";\narchive.append(fs.createReadStream(file1), { name: \"file1.txt\" });\n\n// append a file from string\narchive.append(\"string cheese!\", { name: \"file2.txt\" });\n\n// append a file from buffer\nconst buffer3 = Buffer.from(\"buff it!\");\narchive.append(buffer3, { name: \"file3.txt\" });\n\n// append a file\narchive.file(\"file1.txt\", { name: \"file4.txt\" });\n\n// append files from a sub-directory and naming it `new-subdir` within the archive\narchive.directory(\"subdir/\", \"new-subdir\");\n\n// append files from a sub-directory, putting its contents at the root of archive\narchive.directory(\"subdir/\", false);\n\n// append files from a glob pattern\narchive.glob(\"file*.txt\", { cwd: __dirname });\n\n// finalize the archive (ie we are done appending files but streams have to finish yet)\n// 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand\narchive.finalize();\n```\n\n## Formats\n\nArchiver ships with out of the box support for TAR and ZIP archives.",
6672
6672
  "_attachments": {}
@@ -237,7 +237,7 @@
237
237
  "dist-tags": {
238
238
  "latest": "1.0.3"
239
239
  },
240
- "_rev": "2447-480a86ef8e315f38",
240
+ "_rev": "2465-9efc08312c44eae3",
241
241
  "_id": "core-util-is",
242
242
  "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.",
243
243
  "_attachments": {}
@@ -1599,7 +1599,7 @@
1599
1599
  "dist-tags": {
1600
1600
  "latest": "0.3.0"
1601
1601
  },
1602
- "_rev": "69-9caee31e58edac95",
1602
+ "_rev": "70-6d84ec701df4dffe",
1603
1603
  "_id": "@aws/lambda-invoke-store",
1604
1604
  "readme": "# Node.js Invoke Store for AWS Lambda\n\n`@aws/lambda-invoke-store` provides a generic, per-invocation context store for\nAWS Lambda Node.js Runtime Environment. It enables storing and retrieving data\nwithin the scope of a single Lambda invocation, with proper isolation between\nconcurrent executions.\n\n## Features\n\n- **Invocation Isolation**: Safely store and retrieve data within a single Lambda invocation.\n- **Protected Lambda Context**: Built-in protection for Lambda execution metadata (requestId, [traceId](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces), [W3C Trace Context](https://www.w3.org/TR/trace-context/), [W3C Baggage](https://www.w3.org/TR/baggage/))\n- **Custom Data Storage**: Store any custom data within the invocation context\n- **Async/Await Support**: Full support for asynchronous operations with context preservation\n- **Type Safety**: Complete TypeScript type definitions\n- **Singleton Pattern**: Ensures a single shared instance across all imports\n- **Global Namespace Integration**: Integrates with the Lambda runtime global namespace\n\n## Installation\n\n```bash\nnpm install @aws/lambda-invoke-store\n```\n\n## Quick Start\n\n> **Note**: In the AWS Lambda environment, the Runtime Interface Client (RIC) automatically initializes the InvokeStore context at the beginning of each invocation. Lambda function developers typically don't need to call `InvokeStore.run()` directly.\n\n```typescript\nimport { InvokeStore } from \"@aws/lambda-invoke-store\";\n\n// Lambda handler with invoke store\nexport const handler = async (event, context) => {\n // The RIC has already initialized the InvokeStore with requestId and X-Ray traceId\n\n // Access Lambda context data\n const invokeStore = await InvokeStore.getInstanceAsync();\n console.log(`Processing request: ${invokeStore.getRequestId()}`);\n\n // Store custom data\n invokeStore.set(\"userId\", event.userId);\n\n // Data persists across async operations\n await processData(event);\n\n // Retrieve custom data\n const userId = invokeStore.get(\"userId\");\n\n return {\n requestId: invokeStore.getRequestId(),\n userId,\n };\n};\n\n// Context is preserved in async operations\nasync function processData(event) {\n // Still has access to the same invoke context\n const invokeStore = await InvokeStore.getInstanceAsync();\n console.log(`Processing in same context: ${invokeStore.getRequestId()}`);\n\n // Can set additional data\n invokeStore.set(\"processedData\", { result: \"success\" });\n}\n```\n\n## API Reference\n\n### InvokeStore.getInstanceAsync()\nFirst, get an instance of the InvokeStore:\n```typescript\nconst invokeStore = await InvokeStore.getInstanceAsync();\n```\n\n### invokeStore.getContext()\n\nReturns the complete current context or `undefined` if outside a context.\n\n```typescript\nconst context = invokeStore.getContext();\n```\n\n### invokeStore.get(key)\n\nGets a value from the current context.\n\n```typescript\nconst requestId = invokeStore.get(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID);\nconst customValue = invokeStore.get(\"customKey\");\n```\n\n### invokeStore.set(key, value)\n\nSets a custom value in the current context. Protected Lambda fields cannot be modified.\n\n```typescript\ninvokeStore.set(\"userId\", \"user-123\");\ninvokeStore.set(\"timestamp\", Date.now());\n\n// This will throw an error:\n// invokeStore.set(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID, 'new-id');\n```\n\n### invokeStore.getRequestId()\n\nConvenience method to get the current request ID.\n\n```typescript\nconst requestId = invokeStore.getRequestId(); // Returns '-' if outside context\n```\n\n### invokeStore.getTenantId()\n\nConvenience method to get the tenant ID.\n\n```typescript\nconst requestId = invokeStore.getTenantId();\n```\n\n### invokeStore.getXRayTraceId()\n\nConvenience method to get the current [X-Ray trace ID](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces). This ID is used for distributed tracing across AWS services.\n\n```typescript\nconst traceId = invokeStore.getXRayTraceId(); // Returns undefined if not set or outside context\n```\n\n### invokeStore.getTraceparent()\n\nConvenience method to get the [W3C `traceparent`](https://www.w3.org/TR/trace-context/#traceparent-header) header value.\n\n```typescript\nconst traceparent = invokeStore.getTraceparent(); // e.g. \"00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01\"\n```\n\n### invokeStore.getTracestate()\n\nConvenience method to get the [W3C `tracestate`](https://www.w3.org/TR/trace-context/#tracestate-header) header value.\n\n```typescript\nconst tracestate = invokeStore.getTracestate(); // e.g. \"congo=t61rcWkgMzE,rojo=00f067aa0ba902b7\"\n```\n\n### invokeStore.getBaggage()\n\nConvenience method to get the [W3C Baggage](https://www.w3.org/TR/baggage/) header value.\n\n```typescript\nconst baggage = invokeStore.getBaggage(); // e.g. \"userId=alice,serverNode=DF28\"\n```\n\n### invokeStore.hasContext()\n\nChecks if code is currently running within an invoke context.\n\n```typescript\nif (invokeStore.hasContext()) {\n // We're inside an invoke context\n}\n```\n\n### invokeStore.run(context, fn)\n\n> **Note**: This method is primarily used by the Lambda Runtime Interface Client (RIC) to initialize the context for each invocation. Lambda function developers typically don't need to call this method directly.\n\nRuns a function within an invoke context.\n\n```typescript\ninvokeStore.run(\n {\n [InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID]: \"request-123\",\n [InvokeStoreBase.PROTECTED_KEYS.X_RAY_TRACE_ID]: \"trace-456\", // Optional X-Ray trace ID\n customField: \"value\", // Optional custom fields\n },\n () => {\n // Function to execute within context\n }\n);\n```\n\n## Integration with AWS Lambda Runtime\n\nThe `@aws/lambda-invoke-store` package is designed to be integrated with the AWS Lambda Node.js Runtime Interface Client (RIC). The RIC automatically:\n\n1. Initializes the InvokeStore context at the beginning of each Lambda invocation\n2. Sets the `requestId` and [X-Ray `traceId`](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces) in the context\n3. Ensures proper context isolation between concurrent invocations\n4. Cleans up the context after the invocation completes\n\nLambda function developers can focus on using the context without worrying about initialization or cleanup.\n\n## Global Namespace and Singleton Pattern\n\nThe InvokeStore uses a singleton pattern to ensure that all imports of the module use the same instance, which is critical for maintaining proper context isolation across different parts of your application.\n\n### Global Namespace Integration\n\nThe InvokeStore integrates with the Lambda runtime's global namespace:\n\n```typescript\n// The InvokeStore is available globally\nconst globalInstance = globalThis.awslambda.InvokeStore;\n```\n\nThis enables seamless integration between the Lambda Runtime Interface Client (RIC), AWS SDK, and your function code, ensuring they all share the same context.\n\n### Environment Variable Opt-Out\n\nIf you prefer not to modify the global namespace, you can opt out by setting the environment variable:\n\n```bash\n# Disable global namespace modification\nAWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA=1\n```\n\nWhen this environment variable is set, the InvokeStore will still function correctly, but it won't be stored in the global namespace.\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.",
1605
1605
  "_attachments": {}
@@ -4185,7 +4185,7 @@
4185
4185
  "dist-tags": {
4186
4186
  "latest": "1.4.10"
4187
4187
  },
4188
- "_rev": "75-cc32a5c49f6f73db",
4188
+ "_rev": "77-afa93f2b5fd46cd3",
4189
4189
  "_id": "readline-sync",
4190
4190
  "readme": "# readlineSync\n\n[![npm](https://img.shields.io/npm/v/readline-sync.svg)](https://www.npmjs.com/package/readline-sync) [![GitHub issues](https://img.shields.io/github/issues/anseki/readline-sync.svg)](https://github.com/anseki/readline-sync/issues) [![dependencies](https://img.shields.io/badge/dependencies-No%20dependency-brightgreen.svg)](package.json) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)\n\nSynchronous [Readline](http://nodejs.org/api/readline.html) for interactively running to have a conversation with the user via a console(TTY).\n\nreadlineSync tries to let your script have a conversation with the user via a console, even when the input/output stream is redirected like `your-script <foo.dat >bar.log`.\n\n<table>\n<tr><td><a href=\"#basic_options\">Basic Options</a></td><td><a href=\"#utility_methods\">Utility Methods</a></td><td><a href=\"#placeholders\">Placeholders</a></td></tr>\n</table>\n\n* Simple case:\n\n```js\nvar readlineSync = require('readline-sync');\n\n// Wait for user's response.\nvar userName = readlineSync.question('May I have your name? ');\nconsole.log('Hi ' + userName + '!');\n\n// Handle the secret text (e.g. password).\nvar favFood = readlineSync.question('What is your favorite food? ', {\n hideEchoBack: true // The typed text on screen is hidden by `*` (default).\n});\nconsole.log('Oh, ' + userName + ' loves ' + favFood + '!');\n```\n\n```console\nMay I have your name? CookieMonster\nHi CookieMonster!\nWhat is your favorite food? ****\nOh, CookieMonster loves tofu!\n```\n\n* Get the user's response by a single key without the Enter key:\n\n```js\nvar readlineSync = require('readline-sync');\nif (readlineSync.keyInYN('Do you want this module?')) {\n // 'Y' key was pressed.\n console.log('Installing now...');\n // Do something...\n} else {\n // Another key was pressed.\n console.log('Searching another...');\n // Do something...\n}\n```\n\n* Let the user choose an item from a list:\n\n```js\nvar readlineSync = require('readline-sync'),\n animals = ['Lion', 'Elephant', 'Crocodile', 'Giraffe', 'Hippo'],\n index = readlineSync.keyInSelect(animals, 'Which animal?');\nconsole.log('Ok, ' + animals[index] + ' goes to your room.');\n```\n\n```console\n[1] Lion\n[2] Elephant\n[3] Crocodile\n[4] Giraffe\n[5] Hippo\n[0] CANCEL\n\nWhich animal? [1...5 / 0]: 2\nOk, Elephant goes to your room.\n```\n\n* An UI like the Range Slider: \n(Press `Z` or `X` key to change a value, and Space Bar to exit)\n\n```js\nvar readlineSync = require('readline-sync'),\n MAX = 60, MIN = 0, value = 30, key;\nconsole.log('\\n\\n' + (new Array(20)).join(' ') +\n '[Z] <- -> [X] FIX: [SPACE]\\n');\nwhile (true) {\n console.log('\\x1B[1A\\x1B[K|' +\n (new Array(value + 1)).join('-') + 'O' +\n (new Array(MAX - value + 1)).join('-') + '| ' + value);\n key = readlineSync.keyIn('',\n {hideEchoBack: true, mask: '', limit: 'zx '});\n if (key === 'z') { if (value > MIN) { value--; } }\n else if (key === 'x') { if (value < MAX) { value++; } }\n else { break; }\n}\nconsole.log('\\nA value the user requested: ' + value);\n```\n\n![sample](screen_03.gif)\n\n* Handle the commands repeatedly, such as the shell interface:\n\n```js\nreadlineSync.promptCLLoop({\n add: function(target, into) {\n console.log(target + ' is added into ' + into + '.');\n // Do something...\n },\n remove: function(target) {\n console.log(target + ' is removed.');\n // Do something...\n },\n bye: function() { return true; }\n});\nconsole.log('Exited');\n```\n\n```console\n> add pic01.png archive\npic01.png is added into archive.\n> delete pic01.png\nRequested command is not available.\n> remove pic01.png\npic01.png is removed.\n> bye\nExited\n```\n\n## <a name=\"installation\"></a>Installation\n\n```console\nnpm install readline-sync\n```\n\n## <a name=\"quick_start\"></a>Quick Start\n\n**How does the user input?**\n\n- [Type a reply to a question, and press the Enter key](#quick_start-a) (A)\n- [Type a keyword like a command in prompt, and press the Enter key](#quick_start-b) (B)\n- [Press a single key without the Enter key](#quick_start-c) (C)\n\n<a name=\"quick_start-a\"></a>**(A) What does the user input?**\n\n- [E-mail address](#utility_methods-questionemail)\n- [New password](#utility_methods-questionnewpassword)\n- [Integer number](#utility_methods-questionint)\n- [Floating-point number](#utility_methods-questionfloat)\n- [Local file/directory path](#utility_methods-questionpath)\n- [Others](#basic_methods-question)\n\n<a name=\"quick_start-b\"></a>**(B) What does your script do?**\n\n- [Receive a parsed command-name and arguments](#utility_methods-promptcl)\n- [Receive an input repeatedly](#utility_methods-promptloop)\n- [Receive a parsed command-name and arguments repeatedly](#utility_methods-promptclloop)\n- [Receive an input with prompt that is similar to that of the user's shell](#utility_methods-promptsimshell)\n- [Others](#basic_methods-prompt)\n\n<a name=\"quick_start-c\"></a>**(C) What does the user do?**\n\n- [Say \"Yes\" or \"No\"](#utility_methods-keyinyn)\n- [Say \"Yes\" or \"No\" explicitly](#utility_methods-keyinynstrict)\n- [Make the running of script continue when ready](#utility_methods-keyinpause)\n- [Choose an item from a list](#utility_methods-keyinselect)\n- [Others](#basic_methods-keyin)\n\n## <a name=\"basic_methods\"></a>Basic Methods\n\nThese are used to control details of the behavior. It is recommended to use the [Utility Methods](#utility_methods) instead of Basic Methods if it satisfy your request.\n\n### <a name=\"basic_methods-question\"></a>`question`\n\n```js\nanswer = readlineSync.question([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return the input from the user after it has been typed and the Enter key was pressed. \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. refusing unexpected input, avoiding trimming white spaces, etc.). **If you let the user input the secret text (e.g. password), you should consider [`hideEchoBack`](#basic_options-hideechoback) option.**\n\nThe `query` may be string, or may not be (e.g. number, Date, Object, etc.). It is converted to string (i.e. `toString` method is called) before it is displayed. (see [Note](#note) also) \nIt can include the [placeholders](#placeholders).\n\nFor example:\n\n```js\nprogram = readlineSync.question('Which program starts do you want? ', {\n defaultInput: 'firefox'\n});\n```\n\n### <a name=\"basic_methods-prompt\"></a>`prompt`\n\n```js\ninput = readlineSync.prompt([options])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then return the input from the user after it has been typed and the Enter key was pressed. \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. refusing unexpected input, avoiding trimming white spaces, etc.).\n\nFor example:\n\n```js\nwhile (true) {\n command = readlineSync.prompt();\n // Do something...\n}\n```\n\n### <a name=\"basic_methods-keyin\"></a>`keyIn`\n\n```js\npressedKey = readlineSync.keyIn([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return a character as a key immediately it was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input. \nYou can specify an `options` (see [Basic Options](#basic_options)) to control the behavior (e.g. ignoring keys except some keys, checking target key, etc.).\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\nFor example:\n\n```js\nmenuId = readlineSync.keyIn('Hit 1...5 key: ', {limit: '$<1-5>'});\n```\n\n### <a name=\"basic_methods-setdefaultoptions\"></a>`setDefaultOptions`\n\n```js\ncurrentDefaultOptions = readlineSync.setDefaultOptions([newDefaultOptions])\n```\n\nChange the [Default Options](#basic_options) to the values of properties of `newDefaultOptions` Object. \nAll it takes is to specify options that you want change, because unspecified options are not updated.\n\n## <a name=\"basic_options\"></a>Basic Options\n\n[`prompt`](#basic_options-prompt), [`hideEchoBack`](#basic_options-hideechoback), [`mask`](#basic_options-mask), [`limit`](#basic_options-limit), [`limitMessage`](#basic_options-limitmessage), [`defaultInput`](#basic_options-defaultinput), [`trueValue`, `falseValue`](#basic_options-truevalue_falsevalue), [`caseSensitive`](#basic_options-casesensitive), [`keepWhitespace`](#basic_options-keepwhitespace), [`encoding`](#basic_options-encoding), [`bufferSize`](#basic_options-buffersize), [`print`](#basic_options-print), [`history`](#basic_options-history), [`cd`](#basic_options-cd)\n\nAn `options` Object can be specified to the methods to control the behavior of readlineSync. The options that were not specified to the methods are got from the Default Options. You can change the Default Options by [`setDefaultOptions`](#basic_methods-setdefaultoptions) method anytime, and it is kept until a current process is exited. \nSpecify the options that are often used to the Default Options, and specify temporary options to the methods.\n\nFor example:\n\n```js\nreadlineSync.setDefaultOptions({limit: ['green', 'yellow', 'red']});\na1 = readlineSync.question('Which color of signal? '); // Input is limited to 3 things.\na2 = readlineSync.question('Which color of signal? '); // It's limited yet.\na3 = readlineSync.question('What is your favorite color? ', {limit: null}); // It's unlimited temporarily.\na4 = readlineSync.question('Which color of signal? '); // It's limited again.\nreadlineSync.setDefaultOptions({limit: ['beef', 'chicken']});\na5 = readlineSync.question('Beef or Chicken? '); // Input is limited to new 2 things.\na6 = readlineSync.question('And you? '); // It's limited to 2 things yet.\n```\n\nThe Object as `options` can have following properties.\n\n### <a name=\"basic_options-prompt\"></a>`prompt`\n\n_For `prompt*` methods only_ \n*Type:* string or others \n*Default:* `'> '`\n\nSet the prompt-sign that is displayed to the user by `prompt*` methods. For example you see `> ` that is Node.js's prompt-sign when you run `node` on the command line. \nThis may be string, or may not be (e.g. number, Date, Object, etc.). It is converted to string every time (i.e. `toString` method is called) before it is displayed. (see [Note](#note) also) \nIt can include the [placeholders](#placeholders).\n\nFor example:\n\n```js\nreadlineSync.setDefaultOptions({prompt: '$ '});\n```\n\n```js\n// Display the memory usage always.\nreadlineSync.setDefaultOptions({\n prompt: { // Simple Object that has toString method.\n toString: function() {\n var rss = process.memoryUsage().rss;\n return '[' + (rss > 1024 ? Math.round(rss / 1024) + 'k' : rss) + 'b]$ ';\n }\n }\n});\n```\n\n```console\n[13148kb]$ foo\n[13160kb]$ bar\n[13200kb]$\n```\n\n### <a name=\"basic_options-hideechoback\"></a>`hideEchoBack`\n\n*Type:* boolean \n*Default:* `false`\n\nIf `true` is specified, hide the secret text (e.g. password) which is typed by user on screen by the mask characters (see [`mask`](#basic_options-mask) option).\n\nFor example:\n\n```js\npassword = readlineSync.question('PASSWORD: ', {hideEchoBack: true});\nconsole.log('Login ...');\n```\n\n```console\nPASSWORD: ********\nLogin ...\n```\n\n### <a name=\"basic_options-mask\"></a>`mask`\n\n*Type:* string \n*Default:* `'*'`\n\nSet the mask characters that are shown instead of the secret text (e.g. password) when `true` is specified to [`hideEchoBack`](#basic_options-hideechoback) option. If you want to show nothing, specify `''`. (But it might be not user friendly in some cases.) \n**Note:** In some cases (e.g. when the input stream is redirected on Windows XP), `'*'` or `''` might be used whether other one is specified.\n\nFor example:\n\n```js\nsecret = readlineSync.question('Please whisper sweet words: ', {\n hideEchoBack: true,\n mask: require('chalk').magenta('\\u2665')\n});\n```\n\n![sample](screen_02.gif)\n\n### <a name=\"basic_options-limit\"></a>`limit`\n\nLimit the user's input. \nThe usage differ depending on the method.\n\n#### <a name=\"basic_options-limit-for_question_and_prompt_methods\"></a>For `question*` and `prompt*` methods\n\n*Type:* string, number, RegExp, function or Array \n*Default:* `[]`\n\nAccept only the input that matches value that is specified to this. If the user input others, display a string that is specified to [`limitMessage`](#basic_options-limitmessage) option, and wait for reinput.\n\n* The string is compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n* The number is compared with the input that is converted to number by `parseFloat()`. For example, it interprets `' 3.14 '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`. And it interprets `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`.\n* The RegExp tests the input.\n* The function that returns a boolean to indicate whether it matches is called with the input.\n\nOne of above or an Array that includes multiple things (or Array includes Array) can be specified.\n\nFor example:\n\n```js\ncommand = readlineSync.prompt({limit: ['add', 'remove', /^clear( all)?$/]});\n// ** But `promptCL` method should be used instead of this. **\n```\n\n```js\nfile = readlineSync.question('Text File: ', {limit: /\\.txt$/i});\n// ** But `questionPath` method should be used instead of this. **\n```\n\n```js\nip = readlineSync.question('IP Address: ', {limit: function(input) {\n return require('net').isIP(input); // Valid IP Address\n}});\n```\n\n```js\navailableActions = [];\nif (!blockExists()) { availableActions.push('jump'); }\nif (isLarge(place)) { availableActions.push('run'); }\nif (isNew(shoes)) { availableActions.push('kick'); }\nif (isNearby(enemy)) { availableActions.push('punch'); }\naction = readlineSync.prompt({limit: availableActions});\n// ** But `promptCL` method should be used instead of this. **\n```\n\n#### <a name=\"basic_options-limit-for_keyin_method\"></a>For `keyIn*` method\n\n*Type:* string, number or Array \n*Default:* `[]`\n\nAccept only the key that matches value that is specified to this, ignore others. \nSpecify the characters as the key. All strings or Array of those are decomposed into single characters. For example, `'abcde'` or `['a', 'bc', ['d', 'e']]` are the same as `['a', 'b', 'c', 'd', 'e']`. \nThese strings are compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n\nThe [placeholders](#placeholders) like `'$<a-e>'` are replaced to an Array that is the character list like `['a', 'b', 'c', 'd', 'e']`.\n\nFor example:\n\n```js\ndirection = readlineSync.keyIn('Left or Right? ', {limit: 'lr'}); // 'l' or 'r'\n```\n\n```js\ndice = readlineSync.keyIn('Roll the dice, What will the result be? ',\n {limit: '$<1-6>'}); // range of '1' to '6'\n```\n\n### <a name=\"basic_options-limitmessage\"></a>`limitMessage`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* string \n*Default:* `'Input another, please.$<( [)limit(])>'`\n\nDisplay this to the user when the [`limit`](#basic_options-limit) option is specified and the user input others. \nThe [placeholders](#placeholders) can be included.\n\nFor example:\n\n```js\nfile = readlineSync.question('Name of Text File: ', {\n limit: /\\.txt$/i,\n limitMessage: 'Sorry, $<lastInput> is not text file.'\n});\n```\n\n### <a name=\"basic_options-defaultinput\"></a>`defaultInput`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* string \n*Default:* `''`\n\nIf the user input empty text (i.e. pressed the Enter key only), return this.\n\nFor example:\n\n```js\nlang = readlineSync.question('Which language? ', {defaultInput: 'javascript'});\n```\n\n### <a name=\"basic_options-truevalue_falsevalue\"></a>`trueValue`, `falseValue`\n\n*Type:* string, number, RegExp, function or Array \n*Default:* `[]`\n\nIf the input matches `trueValue`, return `true`. If the input matches `falseValue`, return `false`. In any other case, return the input.\n\n* The string is compared with the input. It is affected by [`caseSensitive`](#basic_options-casesensitive) option.\n* The number is compared with the input that is converted to number by `parseFloat()`. For example, it interprets `' 3.14 '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`. And it interprets `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`. Note that in `keyIn*` method, the input is every time one character (i.e. the number that is specified must be an integer within the range of `0` to `9`).\n* The RegExp tests the input.\n* The function that returns a boolean to indicate whether it matches is called with the input.\n\nOne of above or an Array that includes multiple things (or Array includes Array) can be specified.\n\nFor example:\n\n```js\nanswer = readlineSync.question('How do you like it? ', {\n trueValue: ['yes', 'yeah', 'yep'],\n falseValue: ['no', 'nah', 'nope']\n});\nif (answer === true) {\n console.log('Let\\'s go!');\n} else if (answer === false) {\n console.log('Oh... It\\'s ok...');\n} else {\n console.log('Sorry. What does \"' + answer + '\" you said mean?');\n}\n```\n\n### <a name=\"basic_options-casesensitive\"></a>`caseSensitive`\n\n*Type:* boolean \n*Default:* `false`\n\nBy default, the string comparisons are case-insensitive (i.e. `a` equals `A`). If `true` is specified, it is case-sensitive, the cases are not ignored (i.e. `a` is different from `A`). \nIt affects: [`limit`](#basic_options-limit), [`trueValue`](#basic_options-truevalue_falsevalue), [`falseValue`](#basic_options-truevalue_falsevalue), some [placeholders](#placeholders), and some [Utility Methods](#utility_methods).\n\n### <a name=\"basic_options-keepwhitespace\"></a>`keepWhitespace`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* boolean \n*Default:* `false`\n\nBy default, remove the leading and trailing white spaces from the input text. If `true` is specified, don't remove those.\n\n### <a name=\"basic_options-encoding\"></a>`encoding`\n\n*Type:* string \n*Default:* `'utf8'`\n\nSet the encoding method of the input and output.\n\n### <a name=\"basic_options-buffersize\"></a>`bufferSize`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* number \n*Default:* `1024`\n\nWhen readlineSync reads from a console directly (without [external program](#note-reading_by_external_program)), use a size `bufferSize` buffer. \nEven if the input by user exceeds it, it's usually no problem, because the buffer is used repeatedly. But some platforms's (e.g. Windows) console might not accept input that exceeds it. And set an enough size. \nNote that this might be limited by [version of Node.js](https://nodejs.org/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding) and environment running your script (Big buffer size is usually not required). (See also: [issue](https://github.com/nodejs/node/issues/4660), [PR](https://github.com/nodejs/node/pull/4682))\n\n### <a name=\"basic_options-print\"></a>`print`\n\n*Type:* function or `undefined` \n*Default:* `undefined`\n\nCall the specified function with every output. The function is given two arguments, `display` as an output text, and a value of [`encoding`](#basic_options-encoding) option.\n\nFor example:\n\n* Pass the plain texts to the Logger (e.g. [log4js](https://github.com/nomiddlename/log4js-node)), after clean the colored texts.\n\n![sample](screen_01.png)\n\n```js\nvar readlineSync = require('readline-sync'),\n chalk = require('chalk'),\n log4js = require('log4js'),\n logger, user, pw, command;\n\nlog4js.configure({appenders: [{type: 'file', filename: 'fooApp.log'}]});\nlogger = log4js.getLogger('fooApp');\n\nreadlineSync.setDefaultOptions({\n print: function(display, encoding)\n { logger.info(chalk.stripColor(display)); }, // Remove ctrl-chars.\n prompt: chalk.red.bold('> ')\n});\n\nconsole.log(chalk.black.bold.bgYellow(' Your Account '));\nuser = readlineSync.question(chalk.gray.underline(' USER NAME ') + ' : ');\npw = readlineSync.question(chalk.gray.underline(' PASSWORD ') + ' : ',\n {hideEchoBack: true});\n// Authorization ...\nconsole.log(chalk.green('Welcome, ' + user + '!'));\ncommand = readlineSync.prompt();\n```\n\n* Output a conversation to a file when an output stream is redirected to record those into a file like `your-script >foo.log`. That is, a conversation isn't outputted to `foo.log` without this code.\n\n```js\nreadlineSync.setDefaultOptions({\n print: function(display, encoding)\n { process.stdout.write(display, encoding); }\n});\nvar name = readlineSync.question('May I have your name? ');\nvar loc = readlineSync.question('Hi ' + name + '! Where do you live? ');\n```\n\n* Let somebody hear our conversation in real time. \nIt just uses a fifo with above sample code that was named `conv.js`.\n\nAnother terminal:\n\n```console\nmkfifo /tmp/fifo\ncat /tmp/fifo\n```\n\nMy terminal:\n\n```console\nnode conv.js >/tmp/fifo\n```\n\n```console\nMay I have your name? Oz\nHi Oz! Where do you live? Emerald City\n```\n\nAnd then, another terminal shows this synchronously:\n\n```console\nMay I have your name? Oz\nHi Oz! Where do you live? Emerald City\n```\n\n### <a name=\"basic_options-history\"></a>`history`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* boolean \n*Default:* `true`\n\nreadlineSync supports a history expansion feature that is similar to that of the shell. If `false` is specified, disable this feature. \n*It keeps a previous input only.* That is, only `!!`, `!-1`, `!!:p` and `!-1:p` like bash or zsh etc. are supported.\n\n* `!!` or `!-1`: Return a previous input.\n* `!!:p` or `!-1:p`: Display a previous input but do not return it, and wait for reinput.\n\nFor example:\n\n```js\nwhile (true) {\n input = readlineSync.prompt();\n console.log('-- You said \"' + input + '\"');\n}\n```\n\n```console\n> hello\n-- You said \"hello\"\n> !!\nhello\n-- You said \"hello\"\n> !!:p\nhello\n> bye\n-- You said \"bye\"\n```\n\n### <a name=\"basic_options-cd\"></a>`cd`\n\n_For `question*` and `prompt*` methods only_ \n*Type:* boolean \n*Default:* `false`\n\nreadlineSync supports the changing the current working directory feature that is similar to the `cd` and `pwd` commands in the shell. If `true` is specified, enable this feature. \nThis helps the user when you let the user input the multiple local files or directories. \nIt supports `cd` and `pwd` commands.\n\n* `cd <path>`: Change the current working directory to `<path>`. The `<path>` can include `~` as the home directory.\n* `pwd`: Display the current working directory.\n\nWhen these were input, do not return, and wait for reinput.\n\nFor example:\n\n```js\nwhile (true) {\n file = readlineSync.questionPath('File: ');\n console.log('-- Specified file is ' + file);\n}\n```\n\n```console\nFile: cd foo-dir/bar-dir\nFile: pwd\n/path/to/foo-dir/bar-dir\nFile: file-a.js\n-- Specified file is /path/to/foo-dir/bar-dir/file-a.js\nFile: file-b.png\n-- Specified file is /path/to/foo-dir/bar-dir/file-b.png\nFile: file-c.html\n-- Specified file is /path/to/foo-dir/bar-dir/file-c.html\n```\n\n## <a name=\"utility_methods\"></a>Utility Methods\n\n[`questionEMail`](#utility_methods-questionemail), [`questionNewPassword`](#utility_methods-questionnewpassword), [`questionInt`](#utility_methods-questionint), [`questionFloat`](#utility_methods-questionfloat), [`questionPath`](#utility_methods-questionpath), [`promptCL`](#utility_methods-promptcl), [`promptLoop`](#utility_methods-promptloop), [`promptCLLoop`](#utility_methods-promptclloop), [`promptSimShell`](#utility_methods-promptsimshell), [`keyInYN`](#utility_methods-keyinyn), [`keyInYNStrict`](#utility_methods-keyinynstrict), [`keyInPause`](#utility_methods-keyinpause), [`keyInSelect`](#utility_methods-keyinselect)\n\nThese are convenient methods that are extended [Basic Methods](#basic_methods) to be used easily.\n\n### <a name=\"utility_methods-questionemail\"></a>`questionEMail`\n\n```js\nemail = readlineSync.questionEMail([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid e-mail address, and then return it after the Enter key was pressed.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Input e-mail address: '`.\n\n**Note:** The valid e-mail address requirement is a willful violation of [RFC5322](http://tools.ietf.org/html/rfc5322), this is defined in [HTML5](http://www.w3.org/TR/html5/forms.html). This works enough to prevent the user mistaking. If you want to change it, specify [`limit`](#basic_options-limit) option.\n\nFor example:\n\n```js\nemail = readlineSync.questionEMail();\nconsole.log('-- E-mail is ' + email);\n```\n\n```console\nInput e-mail address: abc\nInput valid e-mail address, please.\nInput e-mail address: mail@example.com\n-- E-mail is mail@example.com\n```\n\n#### <a name=\"utility_methods-questionemail-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limit`](#basic_options-limit) | RegExp by [HTML5](http://www.w3.org/TR/html5/forms.html) |\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid e-mail address, please.'` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-casesensitive\"><code>caseSensitive</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionnewpassword\"></a>`questionNewPassword`\n\n```js\npassword = readlineSync.questionNewPassword([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid password, and then request same one again, and then return it after the Enter key was pressed. \nIt's the password, or something that is the secret text like the password. \nYou can specify the valid password requirement to the options.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Input new password: '`.\n\n**Note:** Only the form of password is checked. Check it more if you want. For example, [zxcvbn](https://github.com/dropbox/zxcvbn) is password strength estimation library.\n\nFor example:\n\n```js\npassword = readlineSync.questionNewPassword();\nconsole.log('-- Password is ' + password);\n```\n\n```console\nInput new password: ************\nIt can include: 0...9, A...Z, a...z, !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\nAnd the length must be: 12...24\nInput new password: *************\nReinput a same one to confirm it: *************\nIt differs from first one. Hit only the Enter key if you want to retry from first one.\nReinput a same one to confirm it: *************\n-- Password is _my_password_\n```\n\n#### <a name=\"utility_methods-questionnewpassword-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `true` |\n| [`mask`](#basic_options-mask) | `'*'` |\n| [`limitMessage`](#basic_options-limitmessage) | `'It can include: $<charlist>\\nAnd the length must be: $<length>'` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`caseSensitive`](#basic_options-casesensitive) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-keepwhitespace\"><code>keepWhitespace</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n##### <a name=\"utility_methods-questionnewpassword-options-charlist\"></a>`charlist`\n\n*Type:* string \n*Default:* `'$<!-~>'`\n\nA string as the characters that can be included in the password. For example, if `'abc123'` is specified, the passwords that include any character other than these 6 characters are refused. \nThe [placeholders](#placeholders) like `'$<a-e>'` are replaced to the characters like `'abcde'`. \n\nFor example, let the user input a password that is created with alphabet and some symbols:\n\n```js\npassword = readlineSync.questionNewPassword('PASSWORD: ', {charlist: '$<a-z>#$@%'});\n```\n\n##### <a name=\"utility_methods-questionnewpassword-options-min_max\"></a>`min`, `max`\n\n*Type:* number \n*Default:* `min`: `12`, `max`: `24`\n\n`min`: A number as a minimum length of the password. \n`max`: A number as a maximum length of the password.\n\n##### <a name=\"utility_methods-questionnewpassword-options-confirmmessage\"></a>`confirmMessage`\n\n*Type:* string or others \n*Default:* `'Reinput a same one to confirm it: '`\n\nA message that lets the user input the same password again. \nIt can include the [placeholders](#placeholders). \nIf this is not string, it is converted to string (i.e. `toString` method is called).\n\n##### <a name=\"utility_methods-questionnewpassword-options-unmatchmessage\"></a>`unmatchMessage`\n\n*Type:* string or others \n*Default:* `'It differs from first one. Hit only the Enter key if you want to retry from first one.'`\n\nA warning message that is displayed when the second input did not match first one. \nThis is converted the same as the [`confirmMessage`](#utility_methods-questionnewpassword-options-confirmmessage) option.\n\n#### <a name=\"utility_methods-questionnewpassword-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-questionnewpassword-additional_placeholders-charlist\"></a>`charlist`\n\nA current value of [`charlist`](#utility_methods-questionnewpassword-options-charlist) option that is converted to human readable if possible. (e.g. `'A...Z'`)\n\n##### <a name=\"utility_methods-questionnewpassword-additional_placeholders-length\"></a>`length`\n\nA current value of [`min` and `max`](#utility_methods-questionnewpassword-options-min_max) option that is converted to human readable. (e.g. `'12...24'`)\n\n### <a name=\"utility_methods-questionint\"></a>`questionInt`\n\n```js\nnumInt = readlineSync.questionInt([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only an input that can be interpreted as an integer, and then return the number (not string) after the Enter key was pressed. \nThis parses the input as much as possible by `parseInt()`. For example, it interprets `' 5 '`, `'5.6'`, `'005'`, `'5files'`, `'5kb'` and `'5px'` as `5`.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\n#### <a name=\"utility_methods-questionint-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid number, please.'` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-hideechoback\"><code>hideEchoBack</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionfloat\"></a>`questionFloat`\n\n```js\nnumFloat = readlineSync.questionFloat([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only an input that can be interpreted as a floating-point number, and then return the number (not string) after the Enter key was pressed. \nThis parses the input as much as possible by `parseFloat()`. For example, it interprets `' 3.14 '`, `'003.1400'`, `'314e-2'` and `'3.14PI'` as `3.14`.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method.\n\n#### <a name=\"utility_methods-questionfloat-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`limitMessage`](#basic_options-limitmessage) | `'Input valid number, please.'` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-hideechoback\"><code>hideEchoBack</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-history\"><code>history</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-questionpath\"></a>`questionPath`\n\n```js\npath = readlineSync.questionPath([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only a valid local file or directory path, and then return an absolute path after the Enter key was pressed. \nThe `~` that is input by the user is replaced to the home directory. \nYou can specify the valid local file or directory path requirement to the options. And you can make it create a new file or directory when it doesn't exist. \n\nIt is recommended to use this method with the [`cd`](#basic_options-cd) option. (Default: `true`)\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Input path (you can \"cd\" and \"pwd\"): '`.\n\nFor example:\n\n```js\nsourceFile = readlineSync.questionPath('Read from: ', {\n isFile: true\n});\nconsole.log('-- sourceFile: ' + sourceFile);\n\nsaveDir = readlineSync.questionPath('Save to: ', {\n isDirectory: true,\n exists: null,\n create: true\n});\nconsole.log('-- saveDir: ' + saveDir);\n```\n\n```console\nRead from: ~/fileA\nNo such file or directory: /home/user/fileA\nInput valid path, please.\nRead from: pwd\n/path/to/work\nRead from: cd ~/project-1\nRead from: fileA\n-- sourceFile: /home/user/project-1/fileA\nSave to: ~/deploy/data\n-- saveDir: /home/user/deploy/data\n```\n\n#### <a name=\"utility_methods-questionpath-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'$<error(\\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>'` |\n| [`history`](#basic_options-history) | `true` |\n| [`cd`](#basic_options-cd) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n**Note:** It does not check the coherency about a combination of the options as the path requirement. For example, the `{exists: false, isFile: true}` never check that it is a file because it is limited to the path that does not exist.\n\n##### <a name=\"utility_methods-questionpath-options-exists\"></a>`exists`\n\n*Type:* boolean or others \n*Default:* `true`\n\nIf `true` is specified, accept only a file or directory path that exists. If `false` is specified, accept only a file or directory path that does *not* exist. \nIn any other case, the existence is not checked.\n\n##### <a name=\"utility_methods-questionpath-options-min_max\"></a>`min`, `max`\n\n*Type:* number or others \n*Default:* `undefined`\n\n`min`: A number as a minimum size of the file that is accepted. \n`max`: A number as a maximum size of the file that is accepted. \nIf it is not specified or `0` is specified, the size is not checked. (A size of directory is `0`.)\n\n##### <a name=\"utility_methods-questionpath-options-isfile_isdirectory\"></a>`isFile`, `isDirectory`\n\n*Type:* boolean \n*Default:* `false`\n\n`isFile`: If `true` is specified, accept only a file path. \n`isDirectory`: If `true` is specified, accept only a directory path.\n\n##### <a name=\"utility_methods-questionpath-options-validate\"></a>`validate`\n\n*Type:* function or `undefined` \n*Default:* `undefined`\n\nIf a function that returns `true` or an error message is specified, call it with a path that was input, and accept the input when the function returned `true`. \nIf the function returned a string as an error message, that message is got by the [`error`](#utility_methods-questionpath-additional_placeholders-error) additional [placeholder](#placeholders) parameter. \nA path that was input is parsed before it is passed to the function. `~` is replaced to a home directory, and a path is converted to an absolute path. \nThis is also a return value from this method.\n\nFor example, accept only PNG file or tell it to the user:\n\n```js\nimageFile = readlineSync.questionPath('Image File: ', {\n validate: function(path) { return /\\.png$/i.test(path) || 'It is not PNG'; }\n});\n```\n\n##### <a name=\"utility_methods-questionpath-options-create\"></a>`create`\n\n*Type:* boolean \n*Default:* `false`\n\nIf `true` is specified, create a file or directory as a path that was input when it doesn't exist. If `true` is specified to the [`isDirectory`](#utility_methods-questionpath-options-isfile_isdirectory) option, create a directory, otherwise a file. \nIt does not affect the existence check. Therefore, you can get a new file or directory path anytime by specifying: `{exists: false, create: true}`\n\n#### <a name=\"utility_methods-questionpath-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-questionpath-additional_placeholders-error\"></a>`error`\n\nAn error message when the input was not accepted. \nThis value is set by readlineSync, or the function that was specified to [`validate`](#utility_methods-questionpath-options-validate) option.\n\n##### <a name=\"utility_methods-questionpath-additional_placeholders-min_max\"></a>`min`, `max`\n\nA current value of [`min` and `max`](#utility_methods-questionpath-options-min_max) option.\n\n### <a name=\"utility_methods-promptcl\"></a>`promptCL`\n\n```js\nargsArray = readlineSync.promptCL([commandHandler[, options]])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then consider the input as a command-line and parse it, and then return a result after the Enter key was pressed. \nA return value is an Array that includes the tokens that were parsed. It parses the input from the user as the command-line, and it interprets whitespaces, quotes, etc., and it splits it to tokens properly. Usually, a first element of the Array is command-name, and remaining elements are arguments.\n\nFor example:\n\n```js\nargsArray = readlineSync.promptCL();\nconsole.log(argsArray.join('\\n'));\n```\n\n```console\n> command arg \"arg\" \" a r g \" \"\" 'a\"r\"g' \"a\"\"rg\" \"arg\ncommand\narg\narg\n a r g \n\na\"r\"g\narg\narg\n```\n\n#### <a name=\"utility_methods-promptcl-commandhandler\"></a>`commandHandler`\n\nBy using the `commandHandler` argument, this method will come into its own. Specifying the Object to this argument has the more merit. And it has the more merit for [`promptCLLoop`](#utility_methods-promptclloop) method. \n\nIf a function is specified to `commandHandler` argument, it is just called with a parsed Array as an argument list of the function. And `this` is an original input string, in the function.\n\nFor example, the following 2 codes work same except that `this` is enabled in the second one:\n\n```js\nargsArray = readlineSync.promptCL();\nif (argsArray[0] === 'add') {\n console.log(argsArray[1] + ' is added.');\n} else if (argsArray[0] === 'copy') {\n console.log(argsArray[1] + ' is copied to ' + argsArray[2] + '.');\n}\n```\n\n```js\nreadlineSync.promptCL(function(command, arg1, arg2) {\n console.log('You want to: ' + this); // All of command-line.\n if (command === 'add') {\n console.log(arg1 + ' is added.');\n } else if (command === 'copy') {\n console.log(arg1 + ' is copied to ' + arg2 + '.');\n }\n});\n```\n\nIf an Object that has properties named as the command-name is specified, the command-name is interpreted, and a function as the value of matched property is called. A function is chosen properly by handling case of the command-name in accordance with the [`caseSensitive`](#basic_options-casesensitive) option. \nThe function is called with a parsed Array that excludes a command-name (i.e. first element is removed from the Array) as an argument list of the function. \nThat is, a structure of the `commandHandler` Object looks like:\n\n```js\n{\n commandA: function(arg) { ... }, // commandA requires one argument.\n commandB: function(arg1, arg2) { ... }, // readlineSync doesn't care those.\n commandC: function() { ... } // Of course, it can also ignore all.\n}\n```\n\nreadlineSync just receives the arguments from the user and passes those to these functions without checking. The functions may have to check whether the required argument was input by the user, and more validate those.\n\nFor example, the following code works same to the above code:\n\n```js\nreadlineSync.promptCL({\n add: function(element) { // It's called by also \"ADD\", \"Add\", \"aDd\", etc..\n console.log(element + ' is added.');\n },\n copy: function(from, to) {\n console.log(from + ' is copied to ' + to + '.');\n }\n});\n```\n\nIf the matched property is not found in the Object, a `_` property is chosen, and the function as the value of this property is called with a parsed Array as an argument list of the function. Note that this includes a command-name. That is, the function looks like `function(command, arg1, arg2, ...) { ... }`. \nAnd if the Object doesn't have a `_` property, any command that the matched property is not found in the Object is refused.\n\nFor example:\n\n```js\nreadlineSync.promptCL({\n copy: function(from, to) { // command-name is not included.\n console.log(from + ' is copied to ' + to + '.');\n },\n _: function(command) { // command-name is included.\n console.log('Sorry, ' + command + ' is not available.');\n }\n});\n```\n\n#### <a name=\"utility_methods-promptcl-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'Requested command is not available.'` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-prompt\"><code>prompt</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-cd\"><code>cd</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-promptloop\"></a>`promptLoop`\n\n```js\nreadlineSync.promptLoop(inputHandler[, options])\n```\n\nDisplay a prompt-sign (see [`prompt`](#basic_options-prompt) option) to the user, and then call `inputHandler` function with the input from the user after it has been typed and the Enter key was pressed. Do these repeatedly until `inputHandler` function returns `true`.\n\nFor example, the following 2 codes work same:\n\n```js\nwhile (true) {\n input = readlineSync.prompt();\n console.log('-- You said \"' + input + '\"');\n if (input === 'bye') {\n break;\n }\n}\nconsole.log('It\\'s exited from loop.');\n```\n\n```js\nreadlineSync.promptLoop(function(input) {\n console.log('-- You said \"' + input + '\"');\n return input === 'bye';\n});\nconsole.log('It\\'s exited from loop.');\n```\n\n```console\n> hello\n-- You said \"hello\"\n> good morning\n-- You said \"good morning\"\n> bye\n-- You said \"bye\"\nIt's exited from loop.\n```\n\n#### <a name=\"utility_methods-promptloop-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`trueValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`falseValue`](#basic_options-truevalue_falsevalue) | `null` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe other options work as shown in the [Basic Options](#basic_options) section.\n\n### <a name=\"utility_methods-promptclloop\"></a>`promptCLLoop`\n\n```js\nreadlineSync.promptCLLoop([commandHandler[, options]])\n```\n\nExecute [`promptCL`](#utility_methods-promptcl) method repeatedly until chosen [`commandHandler`](#utility_methods-promptcl-commandhandler) returns `true`. \nThe [`commandHandler`](#utility_methods-promptcl-commandhandler) may be a function that is called like:\n\n```js\nexit = allCommands(command, arg1, arg2, ...);\n```\n\nor an Object that has the functions that are called like:\n\n```js\nexit = foundCommand(arg1, arg2, ...);\n```\n\nSee [`promptCL`](#utility_methods-promptcl) method for details. \nThis method looks like a combination of [`promptCL`](#utility_methods-promptcl) method and [`promptLoop`](#utility_methods-promptloop) method.\n\nFor example:\n\n```js\nreadlineSync.promptCLLoop({\n add: function(element) {\n console.log(element + ' is added.');\n },\n copy: function(from, to) {\n console.log(from + ' is copied to ' + to + '.');\n },\n bye: function() { return true; }\n});\nconsole.log('It\\'s exited from loop.');\n```\n\n```console\n> add \"New Hard Disk\"\nNew Hard Disk is added.\n> move filesOnOld \"New Hard Disk\"\nRequested command is not available.\n> copy filesOnOld \"New Hard Disk\"\nfilesOnOld is copied to New Hard Disk.\n> bye\nIt's exited from loop.\n```\n\n#### <a name=\"utility_methods-promptclloop-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`limitMessage`](#basic_options-limitmessage) | `'Requested command is not available.'` |\n| [`caseSensitive`](#basic_options-casesensitive) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-prompt\"><code>prompt</code></a></td><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-defaultinput\"><code>defaultInput</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-buffersize\"><code>bufferSize</code></a></td></tr>\n<tr><td><a href=\"#basic_options-print\"><code>print</code></a></td><td><a href=\"#basic_options-cd\"><code>cd</code></a></td></tr>\n</table>\n\n### <a name=\"utility_methods-promptsimshell\"></a>`promptSimShell`\n\n```js\ninput = readlineSync.promptSimShell([options])\n```\n\nDisplay a prompt-sign that is similar to that of the user's shell to the user, and then return the input from the user after it has been typed and the Enter key was pressed. \nThis method displays a prompt-sign like:\n\nOn Windows:\n\n```console\nC:\\Users\\User\\Path\\To\\Directory>\n```\n\nOn others:\n\n```console\nuser@host:~/path/to/directory$ \n```\n\n#### <a name=\"utility_methods-promptsimshell-options\"></a>Options\n\nThe following options have independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n| [`history`](#basic_options-history) | `true` |\n\nThe other options other than [`prompt`](#basic_options-prompt) option work as shown in the [Basic Options](#basic_options) section.\n\n### <a name=\"utility_methods-keyinyn\"></a>`keyInYN`\n\n```js\nboolYesOrEmpty = readlineSync.keyInYN([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then return a boolean or an empty string immediately a key was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input. \nThis method works like the `window.confirm` method of web browsers. A return value means \"Yes\" or \"No\" the user said. It differ depending on the pressed key:\n\n* `Y`: `true`\n* `N`: `false`\n* other: `''`\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Are you sure? '`.\n\nThe keys other than `Y` and `N` are also accepted (If you want to know a user's wish explicitly, use [`keyInYNStrict`](#utility_methods-keyinynstrict) method). Therefore, if you let the user make an important decision (e.g. files are removed), check whether the return value is not *falsy*. That is, a default is \"No\".\n\nFor example:\n\n```js\nif (!readlineSync.keyInYN('Do you want to install this?')) {\n // Key that is not `Y` was pressed.\n process.exit();\n}\n// Do something...\n```\n\nOr if you let the user stop something that must be done (e.g. something about the security), check whether the return value is `false` explicitly. That is, a default is \"Yes\".\n\nFor example:\n\n```js\n// Don't use `(!readlineSync.keyInYN())`.\nif (readlineSync.keyInYN('Continue virus scan?') === false) {\n // `N` key was pressed.\n process.exit();\n}\n// Continue...\n```\n\n#### <a name=\"utility_methods-keyinyn-options\"></a>Options\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional option is available.\n\n##### <a name=\"utility_methods-keyinyn-options-guide\"></a>`guide`\n\n*Type:* boolean \n*Default:* `true`\n\nIf `true` is specified, a string `'[y/n]'` as guide for the user is added to `query`. And `':'` is moved to the end of `query`, or it is added.\n\nFor example:\n\n```js\nreadlineSync.keyInYN('Do you like me?'); // No colon\nreadlineSync.keyInYN('Really? :'); // Colon already exists\n```\n\n```console\nDo you like me? [y/n]: y\nReally? [y/n]: y\n```\n\n### <a name=\"utility_methods-keyinynstrict\"></a>`keyInYNStrict`\n\n```js\nboolYes = readlineSync.keyInYNStrict([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then accept only `Y` or `N` key, and then return a boolean immediately it was pressed by the user, **without pressing the Enter key**. Note that the user has no chance to change the input. \nThis method works like the `window.confirm` method of web browsers. A return value means \"Yes\" or \"No\" the user said. It differ depending on the pressed key:\n\n* `Y`: `true`\n* `N`: `false`\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Are you sure? '`.\n\nA key other than `Y` and `N` is not accepted. That is, a return value has no default. Therefore, the user has to tell an own wish explicitly. If you want to know a user's wish easily, use [`keyInYN`](#utility_methods-keyinyn) method.\n\nThis method works same to [`keyInYN`](#utility_methods-keyinyn) method except that this accept only `Y` or `N` key (Therefore, a return value is boolean every time). The options also work same to [`keyInYN`](#utility_methods-keyinyn) method.\n\n### <a name=\"utility_methods-keyinpause\"></a>`keyInPause`\n\n```js\nreadlineSync.keyInPause([query[, options]])\n```\n\nDisplay a `query` to the user if it's specified, and then just wait for a key to be pressed by the user. \nThis method works like the `window.alert` method of web browsers. This is used to make the running of script pause and show something to the user, or wait for the user to be ready. \nBy default, any key is accepted (See: [Note](#utility_methods-keyinpause-note)). You can change this behavior by specifying [`limit`](#basic_options-limit) option (e.g. accept only a Space Bar).\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Continue...'`.\n\nFor example:\n\n```js\n// Have made the preparations for something...\nconsole.log('==== Information of Your Computer ====');\nconsole.log(info); // This can be `query`.\nreadlineSync.keyInPause();\nconsole.log('It\\'s executing now...');\n// Do something...\n```\n\n```console\n==== Information of Your Computer ====\nFOO: 123456\nBAR: abcdef\nContinue... (Hit any key)\nIt's executing now...\n```\n\n#### <a name=\"utility_methods-keyinpause-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`limit`](#basic_options-limit) | `null` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-casesensitive\"><code>caseSensitive</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional option is available.\n\n##### <a name=\"utility_methods-keyinpause-options-guide\"></a>`guide`\n\n*Type:* boolean \n*Default:* `true`\n\nIf `true` is specified, a string `'(Hit any key)'` as guide for the user is added to `query`.\n\nFor example:\n\n```js\nreadlineSync.keyInPause('It\\'s pausing now...');\n```\n\n```console\nIt's pausing now... (Hit any key)\n```\n\n#### <a name=\"utility_methods-keyinpause-note\"></a>Note\n\nControl keys including Enter key are not accepted by `keyIn*` methods. \nIf you want to wait until the user presses Enter key, use `question*` methods instead of `keyIn*` methods. For example:\n\n```js\nreadlineSync.question('Hit Enter key to continue.', {hideEchoBack: true, mask: ''});\n```\n\n### <a name=\"utility_methods-keyinselect\"></a>`keyInSelect`\n\n```js\nindex = readlineSync.keyInSelect(items[, query[, options]])\n```\n\nDisplay the list that was created with the `items` Array, and the `query` to the user if it's specified, and then return the number as an index of the `items` Array immediately it was chosen by pressing a key by the user, **without pressing the Enter key**. Note that the user has no chance to change the input.\n\nThe `query` is handled the same as that of the [`question`](#basic_methods-question) method. \nThe default value of `query` is `'Choose one from list: '`.\n\nThe minimum length of `items` Array is 1 and maximum length is 35. These elements are displayed as item list. A key to let the user choose an item is assigned to each item automatically in sequence like \"1, 2, 3 ... 9, A, B, C ...\". A number as an index of the `items` Array that corresponds to a chosen item by the user is returned.\n\n**Note:** Even if the `items` Array has only less than 35 items, a long Array that forces an user to scroll the list may irritate the user. Remember, the user might be in a console environment that doesn't support scrolling the screen. If you want to use a long `items` Array (e.g. more than 10 items), you should consider a \"Pagination\". (See [example](https://github.com/anseki/readline-sync/issues/60#issuecomment-324533678).)\n\nFor example:\n\n```js\nframeworks = ['Express', 'hapi', 'flatiron', 'MEAN.JS', 'locomotive'];\nindex = readlineSync.keyInSelect(frameworks, 'Which framework?');\nconsole.log(frameworks[index] + ' is enabled.');\n```\n\n```console\n[1] Express\n[2] hapi\n[3] flatiron\n[4] MEAN.JS\n[5] locomotive\n[0] CANCEL\n\nWhich framework? [1...5 / 0]: 2\nhapi is enabled.\n```\n\n#### <a name=\"utility_methods-keyinselect-options\"></a>Options\n\nThe following option has independent default value that is not affected by [Default Options](#basic_options).\n\n| Option Name | Default Value |\n|-------------------|---------------|\n| [`hideEchoBack`](#basic_options-hideechoback) | `false` |\n\nThe following options work as shown in the [Basic Options](#basic_options) section.\n\n<table>\n<tr><td><a href=\"#basic_options-mask\"><code>mask</code></a></td><td><a href=\"#basic_options-encoding\"><code>encoding</code></a></td><td><a href=\"#basic_options-print\"><code>print</code></a></td></tr>\n</table>\n\nAnd the following additional options are available.\n\n##### <a name=\"utility_methods-keyinselect-options-guide\"></a>`guide`\n\n*Type:* boolean \n*Default:* `true`\n\nIf `true` is specified, a string like `'[1...5]'` as guide for the user is added to `query`. And `':'` is moved to the end of `query`, or it is added. This is the key list that corresponds to the item list.\n\n##### <a name=\"utility_methods-keyinselect-options-cancel\"></a>`cancel`\n\n*Type:* boolean, string or others \n*Default:* `'CANCEL'`\n\nIf a value other than `false` is specified, an item to let the user tell \"cancel\" is added to the item list. \"[0] CANCEL\" (default) is displayed, and if `0` key is pressed, `-1` is returned. \nYou can specify a label of this item other than `'CANCEL'`. A string such as `'Go back'` (empty string `''` also), something that is converted to string such as `Date`, a string that includes [placeholder](#placeholders) such as `'Next $<itemsCount> items'` are accepted.\n\n#### <a name=\"utility_methods-keyinselect-additional_placeholders\"></a>Additional Placeholders\n\nThe following additional [placeholder](#placeholders) parameters are available.\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-itemscount\"></a>`itemsCount`\n\nA length of a current `items` Array.\n\nFor example:\n\n```js\nitems = ['item-A', 'item-B', 'item-C', 'item-D', 'item-E'];\nindex = readlineSync.keyInSelect(items, null,\n {cancel: 'Show more than $<itemsCount> items'});\n```\n\n```console\n[1] item-A\n[2] item-B\n[3] item-C\n[4] item-D\n[5] item-E\n[0] Show more than 5 items\n```\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-firstitem\"></a>`firstItem`\n\nA first item in a current `items` Array.\n\nFor example:\n\n```js\nindex = readlineSync.keyInSelect(items, 'Choose $<firstItem> or another: ');\n```\n\n##### <a name=\"utility_methods-keyinselect-additional_placeholders-lastitem\"></a>`lastItem`\n\nA last item in a current `items` Array.\n\nFor example:\n\n```js\nitems = ['January', 'February', 'March', 'April', 'May', 'June'];\nindex = readlineSync.keyInSelect(items, null,\n {cancel: 'In after $<lastItem>'});\n```\n\n```console\n[1] January\n[2] February\n[3] March\n[4] April\n[5] May\n[6] June\n[0] In after June\n```\n\n## <a name=\"placeholders\"></a>Placeholders\n\n[`hideEchoBack`, `mask`, `defaultInput`, `caseSensitive`, `keepWhitespace`, `encoding`, `bufferSize`, `history`, `cd`, `limit`, `trueValue`, `falseValue`](#placeholders-parameters-hideechoback_mask_defaultinput_casesensitive_keepwhitespace_encoding_buffersize_history_cd_limit_truevalue_falsevalue), [`limitCount`, `limitCountNotZero`](#placeholders-parameters-limitcount_limitcountnotzero), [`lastInput`](#placeholders-parameters-lastinput), [`history_mN`](#placeholders-parameters-historymn), [`cwd`, `CWD`, `cwdHome`](#placeholders-parameters-cwd_cwd_cwdhome), [`date`, `time`, `localeDate`, `localeTime`](#placeholders-parameters-date_time_localedate_localetime), [`C1-C2`](#placeholders-parameters-c1_c2)\n\nThe placeholders in the text are replaced to another string.\n\nFor example, the [`limitMessage`](#basic_options-limitmessage) option to display a warning message that means that the command the user requested is not available:\n\n```js\ncommand = readlineSync.prompt({\n limit: ['add', 'remove'],\n limitMessage: '$<lastInput> is not available.'\n});\n```\n\n```console\n> delete\ndelete is not available.\n```\n\nThe placeholders can be included in:\n\n* `query` argument\n* [`prompt`](#basic_options-prompt) and [`limitMessage`](#basic_options-limitmessage) options\n* [`limit` option for `keyIn*` method](#basic_options-limit-for_keyin_method) and [`charlist`](#utility_methods-questionnewpassword-options-charlist) option for [`questionNewPassword`](#utility_methods-questionnewpassword) method ([`C1-C2`](#placeholders-parameters-c1_c2) parameter only)\n* And some additional options for the [Utility Methods](#utility_methods).\n\n### <a name=\"placeholders-syntax\"></a>Syntax\n\n```\n$<parameter>\n```\n\nOr\n\n```\n$<(text1)parameter(text2)>\n```\n\nThe placeholder is replaced to a string that is got by a `parameter`. \nBoth the `(text1)` and `(text2)` are optional. \nA more added `'$'` at the left of the placeholder is used as an escape character, it disables a placeholder. For example, `'$$<foo>'` is replaced to `'$<foo>'`. If you want to put a `'$'` which is *not* an escape character at the left of a placeholder, specify it like `'$<($)bufferSize>'`, then it is replaced to `'$1024'`.\n\nAt the each position of `'(text1)'` and `'(text2)'`, `'text1'` and `'text2'` are put when a string that was got by a `parameter` has more than 0 length. If that got string is `''`, a placeholder with or without `'(text1)'` and `'(text2)'` is replaced to `''`.\n\nFor example, a warning message that means that the command the user requested is not available:\n\n```js\ncommand = readlineSync.prompt({\n limit: ['add', 'remove'],\n limitMessage: 'Refused $<lastInput> you requested. Please input another.'\n});\n```\n\n```console\n> give-me-car\nRefused give-me-car you requested. Please input another.\n```\n\nIt looks like no problem. \nBut when the user input nothing (hit only the Enter key), and then a message is displayed:\n\n```console\n> \nRefused you requested. Please input another.\n```\n\nThis goes well:\n\n```js\ncommand = readlineSync.prompt({\n limit: ['add', 'remove'],\n limitMessage: 'Refused $<lastInput( you requested)>. Please input another.'\n});\n```\n\n```console\n> \nRefused . Please input another.\n```\n\n(May be more better: `'$<(Refused )lastInput( you requested. )>Please input another.'`)\n\n**Note:** The syntax `${parameter}` of older version is still supported, but this should not be used because it may be confused with template string syntax of ES6. And this will not be supported in due course of time.\n\n### <a name=\"placeholders-parameters\"></a>Parameters\n\nThe following parameters are available. And some additional parameters are available in the [Utility Methods](#utility_methods).\n\n#### <a name=\"placeholders-parameters-hideechoback_mask_defaultinput_casesensitive_keepwhitespace_encoding_buffersize_history_cd_limit_truevalue_falsevalue\"></a>`hideEchoBack`, `mask`, `defaultInput`, `caseSensitive`, `keepWhitespace`, `encoding`, `bufferSize`, `history`, `cd`, `limit`, `trueValue`, `falseValue`\n\nA current value of each option. \nIt is converted to human readable if possible. The boolean value is replaced to `'on'` or `'off'`, and the Array is replaced to the list of only string and number elements. \nAnd in the `keyIn*` method, the parts of the list as characters sequence are suppressed. For example, when `['a', 'b', 'c', 'd', 'e']` is specified to the [`limit`](#basic_options-limit) option, `'$<limit>'` is replaced to `'a...e'`. If `true` is specified to the [`caseSensitive`](#basic_options-casesensitive) option, the characters are converted to lower case.\n\nFor example:\n\n```js\ninput = readlineSync.question(\n 'Input something or the Enter key as \"$<defaultInput>\": ',\n {defaultInput: 'hello'}\n);\n```\n\n```console\nInput something or the Enter key as \"hello\":\n```\n\n#### <a name=\"placeholders-parameters-limitcount_limitcountnotzero\"></a>`limitCount`, `limitCountNotZero`\n\nA length of a current value of the [`limit`](#basic_options-limit) option. \nWhen the value of the [`limit`](#basic_options-limit) option is empty, `'$<limitCount>'` is replaced to `'0'`, `'$<limitCountNotZero>'` is replaced to `''`.\n\nFor example:\n\n```js\naction = readlineSync.question(\n 'Choose action$<( from )limitCountNotZero( actions)>: ',\n {limit: availableActions}\n);\n```\n\n```console\nChoose action from 5 actions:\n```\n\n#### <a name=\"placeholders-parameters-lastinput\"></a>`lastInput`\n\nA last input from the user. \nIn any case, this is saved.\n\nFor example:\n\n```js\ncommand = readlineSync.prompt({\n limit: availableCommands,\n limitMessage: '$<lastInput> is not available.'\n});\n```\n\n```console\n> wrong-command\nwrong-command is not available.\n```\n\n#### <a name=\"placeholders-parameters-historymn\"></a>`history_mN`\n\nWhen the history expansion feature is enabled (see [`history`](#basic_opt",
4191
4191
  "_attachments": {}
@@ -758,7 +758,7 @@
758
758
  "dist-tags": {
759
759
  "latest": "5.2.1"
760
760
  },
761
- "_rev": "4727-e7cebeae8c4d3bab",
761
+ "_rev": "4746-6b1f005cdadb1d7d",
762
762
  "_id": "safe-buffer",
763
763
  "readme": "# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]\n\n[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg\n[travis-url]: https://travis-ci.org/feross/safe-buffer\n[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg\n[npm-url]: https://npmjs.org/package/safe-buffer\n[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg\n[downloads-url]: https://npmjs.org/package/safe-buffer\n[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg\n[standard-url]: https://standardjs.com\n\n#### Safer Node.js Buffer API\n\n**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`,\n`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.**\n\n**Uses the built-in implementation when available.**\n\n## install\n\n```\nnpm install safe-buffer\n```\n\n## usage\n\nThe goal of this package is to provide a safe replacement for the node.js `Buffer`.\n\nIt's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to\nthe top of your node.js modules:\n\n```js\nvar Buffer = require('safe-buffer').Buffer\n\n// Existing buffer code will continue to work without issues:\n\nnew Buffer('hey', 'utf8')\nnew Buffer([1, 2, 3], 'utf8')\nnew Buffer(obj)\nnew Buffer(16) // create an uninitialized buffer (potentially unsafe)\n\n// But you can use these new explicit APIs to make clear what you want:\n\nBuffer.from('hey', 'utf8') // convert from many types to a Buffer\nBuffer.alloc(16) // create a zero-filled buffer (safe)\nBuffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe)\n```\n\n## api\n\n### Class Method: Buffer.from(array)\n<!-- YAML\nadded: v3.0.0\n-->\n\n* `array` {Array}\n\nAllocates a new `Buffer` using an `array` of octets.\n\n```js\nconst buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);\n // creates a new Buffer containing ASCII bytes\n // ['b','u','f','f','e','r']\n```\n\nA `TypeError` will be thrown if `array` is not an `Array`.\n\n### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])\n<!-- YAML\nadded: v5.10.0\n-->\n\n* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or\n a `new ArrayBuffer()`\n* `byteOffset` {Number} Default: `0`\n* `length` {Number} Default: `arrayBuffer.length - byteOffset`\n\nWhen passed a reference to the `.buffer` property of a `TypedArray` instance,\nthe newly created `Buffer` will share the same allocated memory as the\nTypedArray.\n\n```js\nconst arr = new Uint16Array(2);\narr[0] = 5000;\narr[1] = 4000;\n\nconst buf = Buffer.from(arr.buffer); // shares the memory with arr;\n\nconsole.log(buf);\n // Prints: <Buffer 88 13 a0 0f>\n\n// changing the TypedArray changes the Buffer also\narr[1] = 6000;\n\nconsole.log(buf);\n // Prints: <Buffer 88 13 70 17>\n```\n\nThe optional `byteOffset` and `length` arguments specify a memory range within\nthe `arrayBuffer` that will be shared by the `Buffer`.\n\n```js\nconst ab = new ArrayBuffer(10);\nconst buf = Buffer.from(ab, 0, 2);\nconsole.log(buf.length);\n // Prints: 2\n```\n\nA `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.\n\n### Class Method: Buffer.from(buffer)\n<!-- YAML\nadded: v3.0.0\n-->\n\n* `buffer` {Buffer}\n\nCopies the passed `buffer` data onto a new `Buffer` instance.\n\n```js\nconst buf1 = Buffer.from('buffer');\nconst buf2 = Buffer.from(buf1);\n\nbuf1[0] = 0x61;\nconsole.log(buf1.toString());\n // 'auffer'\nconsole.log(buf2.toString());\n // 'buffer' (copy is not changed)\n```\n\nA `TypeError` will be thrown if `buffer` is not a `Buffer`.\n\n### Class Method: Buffer.from(str[, encoding])\n<!-- YAML\nadded: v5.10.0\n-->\n\n* `str` {String} String to encode.\n* `encoding` {String} Encoding to use, Default: `'utf8'`\n\nCreates a new `Buffer` containing the given JavaScript string `str`. If\nprovided, the `encoding` parameter identifies the character encoding.\nIf not provided, `encoding` defaults to `'utf8'`.\n\n```js\nconst buf1 = Buffer.from('this is a tést');\nconsole.log(buf1.toString());\n // prints: this is a tést\nconsole.log(buf1.toString('ascii'));\n // prints: this is a tC)st\n\nconst buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');\nconsole.log(buf2.toString());\n // prints: this is a tést\n```\n\nA `TypeError` will be thrown if `str` is not a string.\n\n### Class Method: Buffer.alloc(size[, fill[, encoding]])\n<!-- YAML\nadded: v5.10.0\n-->\n\n* `size` {Number}\n* `fill` {Value} Default: `undefined`\n* `encoding` {String} Default: `utf8`\n\nAllocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the\n`Buffer` will be *zero-filled*.\n\n```js\nconst buf = Buffer.alloc(5);\nconsole.log(buf);\n // <Buffer 00 00 00 00 00>\n```\n\nThe `size` must be less than or equal to the value of\n`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is\n`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will\nbe created if a `size` less than or equal to 0 is specified.\n\nIf `fill` is specified, the allocated `Buffer` will be initialized by calling\n`buf.fill(fill)`. See [`buf.fill()`][] for more information.\n\n```js\nconst buf = Buffer.alloc(5, 'a');\nconsole.log(buf);\n // <Buffer 61 61 61 61 61>\n```\n\nIf both `fill` and `encoding` are specified, the allocated `Buffer` will be\ninitialized by calling `buf.fill(fill, encoding)`. For example:\n\n```js\nconst buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');\nconsole.log(buf);\n // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>\n```\n\nCalling `Buffer.alloc(size)` can be significantly slower than the alternative\n`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance\ncontents will *never contain sensitive data*.\n\nA `TypeError` will be thrown if `size` is not a number.\n\n### Class Method: Buffer.allocUnsafe(size)\n<!-- YAML\nadded: v5.10.0\n-->\n\n* `size` {Number}\n\nAllocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must\nbe less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit\narchitectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is\nthrown. A zero-length Buffer will be created if a `size` less than or equal to\n0 is specified.\n\nThe underlying memory for `Buffer` instances created in this way is *not\ninitialized*. The contents of the newly created `Buffer` are unknown and\n*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such\n`Buffer` instances to zeroes.\n\n```js\nconst buf = Buffer.allocUnsafe(5);\nconsole.log(buf);\n // <Buffer 78 e0 82 02 01>\n // (octets will be different, every time)\nbuf.fill(0);\nconsole.log(buf);\n // <Buffer 00 00 00 00 00>\n```\n\nA `TypeError` will be thrown if `size` is not a number.\n\nNote that the `Buffer` module pre-allocates an internal `Buffer` instance of\nsize `Buffer.poolSize` that is used as a pool for the fast allocation of new\n`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated\n`new Buffer(size)` constructor) only when `size` is less than or equal to\n`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default\nvalue of `Buffer.poolSize` is `8192` but can be modified.\n\nUse of this pre-allocated internal memory pool is a key difference between\ncalling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.\nSpecifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer\npool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal\nBuffer pool if `size` is less than or equal to half `Buffer.poolSize`. The\ndifference is subtle but can be important when an application requires the\nadditional performance that `Buffer.allocUnsafe(size)` provides.\n\n### Class Method: Buffer.allocUnsafeSlow(size)\n<!-- YAML\nadded: v5.10.0\n-->\n\n* `size` {Number}\n\nAllocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The\n`size` must be less than or equal to the value of\n`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is\n`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will\nbe created if a `size` less than or equal to 0 is specified.\n\nThe underlying memory for `Buffer` instances created in this way is *not\ninitialized*. The contents of the newly created `Buffer` are unknown and\n*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such\n`Buffer` instances to zeroes.\n\nWhen using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,\nallocations under 4KB are, by default, sliced from a single pre-allocated\n`Buffer`. This allows applications to avoid the garbage collection overhead of\ncreating many individually allocated Buffers. This approach improves both\nperformance and memory usage by eliminating the need to track and cleanup as\nmany `Persistent` objects.\n\nHowever, in the case where a developer may need to retain a small chunk of\nmemory from a pool for an indeterminate amount of time, it may be appropriate\nto create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then\ncopy out the relevant bits.\n\n```js\n// need to keep around a few small chunks of memory\nconst store = [];\n\nsocket.on('readable', () => {\n const data = socket.read();\n // allocate for retained data\n const sb = Buffer.allocUnsafeSlow(10);\n // copy the data into the new allocation\n data.copy(sb, 0, 0, 10);\n store.push(sb);\n});\n```\n\nUse of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after*\na developer has observed undue memory retention in their applications.\n\nA `TypeError` will be thrown if `size` is not a number.\n\n### All the Rest\n\nThe rest of the `Buffer` API is exactly the same as in node.js.\n[See the docs](https://nodejs.org/api/buffer.html).\n\n\n## Related links\n\n- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660)\n- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4)\n\n## Why is `Buffer` unsafe?\n\nToday, the node.js `Buffer` constructor is overloaded to handle many different argument\ntypes like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.),\n`ArrayBuffer`, and also `Number`.\n\nThe API is optimized for convenience: you can throw any type at it, and it will try to do\nwhat you want.\n\nBecause the Buffer constructor is so powerful, you often see code like this:\n\n```js\n// Convert UTF-8 strings to hex\nfunction toHex (str) {\n return new Buffer(str).toString('hex')\n}\n```\n\n***But what happens if `toHex` is called with a `Number` argument?***\n\n### Remote Memory Disclosure\n\nIf an attacker can make your program call the `Buffer` constructor with a `Number`\nargument, then they can make it allocate uninitialized memory from the node.js process.\nThis could potentially disclose TLS private keys, user data, or database passwords.\n\nWhen the `Buffer` constructor is passed a `Number` argument, it returns an\n**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like\nthis, you **MUST** overwrite the contents before returning it to the user.\n\nFrom the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size):\n\n> `new Buffer(size)`\n>\n> - `size` Number\n>\n> The underlying memory for `Buffer` instances created in this way is not initialized.\n> **The contents of a newly created `Buffer` are unknown and could contain sensitive\n> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes.\n\n(Emphasis our own.)\n\nWhenever the programmer intended to create an uninitialized `Buffer` you often see code\nlike this:\n\n```js\nvar buf = new Buffer(16)\n\n// Immediately overwrite the uninitialized buffer with data from another buffer\nfor (var i = 0; i < buf.length; i++) {\n buf[i] = otherBuf[i]\n}\n```\n\n\n### Would this ever be a problem in real code?\n\nYes. It's surprisingly common to forget to check the type of your variables in a\ndynamically-typed language like JavaScript.\n\nUsually the consequences of assuming the wrong type is that your program crashes with an\nuncaught exception. But the failure mode for forgetting to check the type of arguments to\nthe `Buffer` constructor is more catastrophic.\n\nHere's an example of a vulnerable service that takes a JSON payload and converts it to\nhex:\n\n```js\n// Take a JSON payload {str: \"some string\"} and convert it to hex\nvar server = http.createServer(function (req, res) {\n var data = ''\n req.setEncoding('utf8')\n req.on('data', function (chunk) {\n data += chunk\n })\n req.on('end', function () {\n var body = JSON.parse(data)\n res.end(new Buffer(body.str).toString('hex'))\n })\n})\n\nserver.listen(8080)\n```\n\nIn this example, an http client just has to send:\n\n```json\n{\n \"str\": 1000\n}\n```\n\nand it will get back 1,000 bytes of uninitialized memory from the server.\n\nThis is a very serious bug. It's similar in severity to the\n[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process\nmemory by remote attackers.\n\n\n### Which real-world packages were vulnerable?\n\n#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)\n\n[Mathias Buus](https://github.com/mafintosh) and I\n([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages,\n[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow\nanyone on the internet to send a series of messages to a user of `bittorrent-dht` and get\nthem to reveal 20 bytes at a time of uninitialized memory from the node.js process.\n\nHere's\n[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8)\nthat fixed it. We released a new fixed version, created a\n[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all\nvulnerable versions on npm so users will get a warning to upgrade to a newer version.\n\n#### [`ws`](https://www.npmjs.com/package/ws)\n\nThat got us wondering if there were other vulnerable packages. Sure enough, within a short\nperiod of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the\nmost popular WebSocket implementation in node.js.\n\nIf certain APIs were called with `Number` parameters instead of `String` or `Buffer` as\nexpected, then uninitialized server memory would be disclosed to the remote peer.\n\nThese were the vulnerable methods:\n\n```js\nsocket.send(number)\nsocket.ping(number)\nsocket.pong(number)\n```\n\nHere's a vulnerable socket server with some echo functionality:\n\n```js\nserver.on('connection', function (socket) {\n socket.on('message', function (message) {\n message = JSON.parse(message)\n if (message.type === 'echo') {\n socket.send(message.data) // send back the user's message\n }\n })\n})\n```\n\n`socket.send(number)` called on the server, will disclose server memory.\n\nHere's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue\nwas fixed, with a more detailed explanation. Props to\n[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the\n[Node Security Project disclosure](https://nodesecurity.io/advisories/67).\n\n\n### What's the solution?\n\nIt's important that node.js offers a fast way to get memory otherwise performance-critical\napplications would needlessly get a lot slower.\n\nBut we need a better way to *signal our intent* as programmers. **When we want\nuninitialized memory, we should request it explicitly.**\n\nSensitive functionality should not be packed into a developer-friendly API that loosely\naccepts many different types. This type of API encourages the lazy practice of passing\nvariables in without checking the type very carefully.\n\n#### A new API: `Buffer.allocUnsafe(number)`\n\nThe functionality of creating buffers with uninitialized memory should be part of another\nAPI. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that\nfrequently gets user input of all sorts of different types passed into it.\n\n```js\nvar buf = Buffer.allocUnsafe(16) // careful, uninitialized memory!\n\n// Immediately overwrite the uninitialized buffer with data from another buffer\nfor (var i = 0; i < buf.length; i++) {\n buf[i] = otherBuf[i]\n}\n```\n\n\n### How do we fix node.js core?\n\nWe sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as\n`semver-major`) which defends against one case:\n\n```js\nvar str = 16\nnew Buffer(str, 'utf8')\n```\n\nIn this situation, it's implied that the programmer intended the first argument to be a\nstring, since they passed an encoding as a second argument. Today, node.js will allocate\nuninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not\nwhat the programmer intended.\n\nBut this is only a partial solution, since if the programmer does `new Buffer(variable)`\n(without an `encoding` parameter) there's no way to know what they intended. If `variable`\nis sometimes a number, then uninitialized memory will sometimes be returned.\n\n### What's the real long-term fix?\n\nWe could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when\nwe need uninitialized memory. But that would break 1000s of packages.\n\n~~We believe the best solution is to:~~\n\n~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~\n\n~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~\n\n#### Update\n\nWe now support adding three new APIs:\n\n- `Buffer.from(value)` - convert from any type to a buffer\n- `Buffer.alloc(size)` - create a zero-filled buffer\n- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size\n\nThis solves the core problem that affected `ws` and `bittorrent-dht` which is\n`Buffer(variable)` getting tricked into taking a number argument.\n\nThis way, existing code continues working and the impact on the npm ecosystem will be\nminimal. Over time, npm maintainers can migrate performance-critical code to use\n`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`.\n\n\n### Conclusion\n\nWe think there's a serious design issue with the `Buffer` API as it exists today. It\npromotes insecure software by putting high-risk functionality into a convenient API\nwith friendly \"developer ergonomics\".\n\nThis wasn't merely a theoretical exercise because we found the issue in some of the\nmost popular npm packages.\n\nFortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of\n`buffer`.\n\n```js\nvar Buffer = require('safe-buffer').Buffer\n```\n\nEventually, we hope that node.js core can switch to this new, safer behavior. We believe\nthe impact on the ecosystem would be minimal since it's not a breaking change.\nWell-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while\nolder, insecure packages would magically become safe from this attack vector.\n\n\n## links\n\n- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514)\n- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67)\n- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68)\n\n\n## credit\n\nThe original issues in `bittorrent-dht`\n([disclosure](https://nodesecurity.io/advisories/68)) and\n`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by\n[Mathias Buus](https://github.com/mafintosh) and\n[Feross Aboukhadijeh](http://feross.org/).\n\nThanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues\nand for his work running the [Node Security Project](https://nodesecurity.io/).\n\nThanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and\nauditing the code.\n\n\n## license\n\nMIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org)",
764
764
  "_attachments": {}
@@ -1473,7 +1473,7 @@
1473
1473
  "dist-tags": {
1474
1474
  "latest": "4.0.4"
1475
1475
  },
1476
- "_rev": "4965-864eba6c4ba17bc2",
1476
+ "_rev": "4987-7858b84bcb06c514",
1477
1477
  "_id": "balanced-match",
1478
1478
  "readme": "# balanced-match\n\nMatch balanced string pairs, like `{` and `}` or `<b>` and\n`</b>`. Supports regular expressions as well!\n\n## Example\n\nGet the first matching pair of braces:\n\n```js\nimport { balanced } from 'balanced-match'\n\nconsole.log(balanced('{', '}', 'pre{in{nested}}post'))\nconsole.log(balanced('{', '}', 'pre{first}between{second}post'))\nconsole.log(\n balanced(/\\s+\\{\\s+/, /\\s+\\}\\s+/, 'pre { in{nest} } post'),\n)\n```\n\nThe matches are:\n\n```bash\n$ node example.js\n{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }\n{ start: 3,\n end: 9,\n pre: 'pre',\n body: 'first',\n post: 'between{second}post' }\n{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }\n```\n\n## API\n\n### const m = balanced(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\nobject with those keys:\n\n- **start** the index of the first match of `a`\n- **end** the index of the matching `b`\n- **pre** the preamble, `a` and `b` not included\n- **body** the match, `a` and `b` not included\n- **post** the postscript, `a` and `b` not included\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.\n\n### const r = balanced.range(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\narray with indexes: `[ <a index>, <b index> ]`.\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.",
1479
1479
  "_attachments": {}
@@ -15525,7 +15525,7 @@
15525
15525
  "legacy-v10": "10.5.0",
15526
15526
  "legacy-v9": "9.3.5"
15527
15527
  },
15528
- "_rev": "5668-37ab6825423035a2",
15528
+ "_rev": "5698-6a04c40cbff4d87f",
15529
15529
  "_id": "glob",
15530
15530
  "readme": "# Glob\n\nMatch files using the patterns the shell uses.\n\nThe most correct and second fastest glob implementation in\nJavaScript. (See [**Comparison to Other JavaScript Glob\nImplementations**](#comparisons-to-other-fnmatchglob-implementations)\nat the bottom of this readme.)\n\n![a fun cartoon logo made of glob\ncharacters](https://github.com/isaacs/node-glob/raw/main/logo/glob.png)\n\n## Usage\n\nInstall with npm\n\n```\nnpm i glob\n```\n\n> [!NOTE]\n> The npm package name is _not_ `node-glob` that's a\n> different thing that was abandoned years ago. Just `glob`.\n\n```js\n// load using import\nimport { glob, globSync, globStream, globStreamSync, Glob } from 'glob'\n// or using commonjs, that's fine, too\nconst {\n glob,\n globSync,\n globStream,\n globStreamSync,\n Glob,\n} = require('glob')\n\n// the main glob() and globSync() resolve/return array of filenames\n\n// all js files, but don't look in node_modules\nconst jsfiles = await glob('**/*.js', { ignore: 'node_modules/**' })\n\n// pass in a signal to cancel the glob walk\nconst stopAfter100ms = await glob('**/*.css', {\n signal: AbortSignal.timeout(100),\n})\n\n// multiple patterns supported as well\nconst images = await glob(['css/*.{png,jpeg}', 'public/*.{png,jpeg}'])\n\n// but of course you can do that with the glob pattern also\n// the sync function is the same, just returns a string[] instead\n// of Promise<string[]>\nconst imagesAlt = globSync('{css,public}/*.{png,jpeg}')\n\n// you can also stream them, this is a Minipass stream\nconst filesStream = globStream(['**/*.dat', 'logs/**/*.log'])\n\n// construct a Glob object if you wanna do it that way, which\n// allows for much faster walks if you have to look in the same\n// folder multiple times.\nconst g = new Glob('**/foo', {})\n// glob objects are async iterators, can also do globIterate() or\n// g.iterate(), same deal\nfor await (const file of g) {\n console.log('found a foo file:', file)\n}\n// pass a glob as the glob options to reuse its settings and caches\nconst g2 = new Glob('**/bar', g)\n// sync iteration works as well\nfor (const file of g2) {\n console.log('found a bar file:', file)\n}\n\n// you can also pass withFileTypes: true to get Path objects\n// these are like a fs.Dirent, but with some more added powers\n// check out https://isaacs.github.io/path-scurry/classes/PathBase.html\n// for more info on their API\nconst g3 = new Glob('**/baz/**', { withFileTypes: true })\ng3.stream().on('data', path => {\n console.log(\n 'got a path object',\n path.fullpath(),\n path.isDirectory(),\n path.readdirSync().map(e => e.name),\n )\n})\n\n// if you use stat:true and withFileTypes, you can sort results\n// by things like modified time, filter by permission mode, etc.\n// All Stats fields will be available in that case. Slightly\n// slower, though.\n// For example:\nconst results = await glob('**', { stat: true, withFileTypes: true })\n\nconst timeSortedFiles = results\n .sort((a, b) => a.mtimeMs - b.mtimeMs)\n .map(path => path.fullpath())\n\nconst groupReadableFiles = results\n .filter(path => path.mode & 0o040)\n .map(path => path.fullpath())\n\n// custom ignores can be done like this, for example by saying\n// you'll ignore all markdown files, and all folders named 'docs'\nconst customIgnoreResults = await glob('**', {\n ignore: {\n ignored: p => /\\.md$/.test(p.name),\n childrenIgnored: p => p.isNamed('docs'),\n },\n})\n\n// another fun use case, only return files with the same name as\n// their parent folder, plus either `.ts` or `.js`\nconst folderNamedModules = await glob('**/*.{ts,js}', {\n ignore: {\n ignored: p => {\n const pp = p.parent\n return !(p.isNamed(pp.name + '.ts') || p.isNamed(pp.name + '.js'))\n },\n },\n})\n\n// find all files edited in the last hour, to do this, we ignore\n// all of them that are more than an hour old\nconst newFiles = await glob('**', {\n // need stat so we have mtime\n stat: true,\n // only want the files, not the dirs\n nodir: true,\n ignore: {\n ignored: p => {\n return new Date() - p.mtime > 60 * 60 * 1000\n },\n // could add similar childrenIgnored here as well, but\n // directory mtime is inconsistent across platforms, so\n // probably better not to, unless you know the system\n // tracks this reliably.\n },\n})\n```\n\n> [!NOTE]\n> Glob patterns should always use `/` as a path separator,\n> even on Windows systems, as `\\` is used to escape glob\n> characters. If you wish to use `\\` as a path separator _instead\n> of_ using it as an escape character on Windows platforms, you may\n> set `windowsPathsNoEscape:true` in the options. In this mode,\n> special glob characters cannot be escaped, making it impossible\n> to match a literal `*` `?` and so on in filenames.\n\n## Command Line Interface\n\nThe glob CLI has been moved to the `glob-bin` package, and must\nbe installed separately, as of version 13.\n\n```\nnpm install glob-bin\n```\n\n## `glob(pattern: string | string[], options?: GlobOptions) => Promise<string[] | Path[]>`\n\nPerform an asynchronous glob search for the pattern(s) specified.\nReturns\n[Path](https://isaacs.github.io/path-scurry/classes/PathBase)\nobjects if the `withFileTypes` option is set to `true`. See below\nfor full options field desciptions.\n\n## `globSync(pattern: string | string[], options?: GlobOptions) => string[] | Path[]`\n\nSynchronous form of `glob()`.\n\nAlias: `glob.sync()`\n\n## `globIterate(pattern: string | string[], options?: GlobOptions) => AsyncGenerator<string>`\n\nReturn an async iterator for walking glob pattern matches.\n\nAlias: `glob.iterate()`\n\n## `globIterateSync(pattern: string | string[], options?: GlobOptions) => Generator<string>`\n\nReturn a sync iterator for walking glob pattern matches.\n\nAlias: `glob.iterate.sync()`, `glob.sync.iterate()`\n\n## `globStream(pattern: string | string[], options?: GlobOptions) => Minipass<string | Path>`\n\nReturn a stream that emits all the strings or `Path` objects and\nthen emits `end` when completed.\n\nAlias: `glob.stream()`\n\n## `globStreamSync(pattern: string | string[], options?: GlobOptions) => Minipass<string | Path>`\n\nSyncronous form of `globStream()`. Will read all the matches as\nfast as you consume them, even all in a single tick if you\nconsume them immediately, but will still respond to backpressure\nif they're not consumed immediately.\n\nAlias: `glob.stream.sync()`, `glob.sync.stream()`\n\n## `hasMagic(pattern: string | string[], options?: GlobOptions) => boolean`\n\nReturns `true` if the provided pattern contains any \"magic\" glob\ncharacters, given the options provided.\n\nBrace expansion is not considered \"magic\" unless the\n`magicalBraces` option is set, as brace expansion just turns one\nstring into an array of strings. So a pattern like `'x{a,b}y'`\nwould return `false`, because `'xay'` and `'xby'` both do not\ncontain any magic glob characters, and it's treated the same as\nif you had called it on `['xay', 'xby']`. When\n`magicalBraces:true` is in the options, brace expansion _is_\ntreated as a pattern having magic.\n\n## `escape(pattern: string, options?: GlobOptions) => string`\n\nEscape all magic characters in a glob pattern, so that it will\nonly ever match literal strings\n\nIf the `windowsPathsNoEscape` option is used, then characters are\nescaped by wrapping in `[]`, because a magic character wrapped in\na character class can only be satisfied by that exact character.\n\nSlashes (and backslashes in `windowsPathsNoEscape` mode) cannot\nbe escaped or unescaped.\n\n## `unescape(pattern: string, options?: GlobOptions) => string`\n\nUn-escape a glob string that may contain some escaped characters.\n\nIf the `windowsPathsNoEscape` option is used, then square-brace\nescapes are removed, but not backslash escapes. For example, it\nwill turn the string `'[*]'` into `*`, but it will not turn\n`'\\\\*'` into `'*'`, because `\\` is a path separator in\n`windowsPathsNoEscape` mode.\n\nWhen `windowsPathsNoEscape` is not set, then both brace escapes\nand backslash escapes are removed.\n\nSlashes (and backslashes in `windowsPathsNoEscape` mode) cannot\nbe escaped or unescaped.\n\n## Class `Glob`\n\nAn object that can perform glob pattern traversals.\n\n### `const g = new Glob(pattern: string | string[], options: GlobOptions)`\n\nOptions object is required.\n\nSee full options descriptions below.\n\n> [!NOTE]\n> A previous `Glob` object can be passed as the\n> `GlobOptions` to another `Glob` instantiation to re-use settings\n> and caches with a new pattern.\n\nTraversal functions can be called multiple times to run the walk\nagain.\n\n### `g.stream()`\n\nStream results asynchronously.\n\n### `g.streamSync()`\n\nStream results synchronously.\n\n### `g.iterate()`\n\nDefault async iteration function. Returns an AsyncGenerator that\niterates over the results.\n\n### `g.iterateSync()`\n\nDefault sync iteration function. Returns a Generator that\niterates over the results.\n\n### `g.walk()`\n\nReturns a Promise that resolves to the results array.\n\n### `g.walkSync()`\n\nReturns a results array.\n\n### Properties\n\nAll options are stored as properties on the `Glob` object.\n\n- `opts` The options provided to the constructor.\n- `patterns` An array of parsed immutable `Pattern` objects.\n\n## Options\n\nExported as `GlobOptions` TypeScript interface. A `GlobOptions`\nobject may be provided to any of the exported methods, and must\nbe provided to the `Glob` constructor.\n\nAll options are optional, boolean, and false by default, unless\notherwise noted.\n\nAll resolved options are added to the Glob object as properties.\n\nIf you are running many `glob` operations, you can pass a Glob\nobject as the `options` argument to a subsequent operation to\nshare the previously loaded cache.\n\n- `cwd` String path or `file://` string or URL object. The\n current working directory in which to search. Defaults to\n `process.cwd()`. See also: \"Windows, CWDs, Drive Letters, and\n UNC Paths\", below.\n\n This option may be either a string path or a `file://` URL\n object or string.\n\n- `root` A string path resolved against the `cwd` option, which\n is used as the starting point for absolute patterns that start\n with `/`, (but not drive letters or UNC paths on Windows).\n\n To start absolute and non-absolute patterns in the same path,\n you can use `{root:''}`. However, be aware that on Windows\n systems, a pattern like `x:/*` or `//host/share/*` will\n _always_ start in the `x:/` or `//host/share` directory,\n regardless of the `root` setting.\n\n> [!NOTE] This _doesn't_ necessarily limit the walk to the\n> `root` directory, and doesn't affect the cwd starting point\n> for non-absolute patterns. A pattern containing `..` will\n> still be able to traverse out of the root directory, if it\n> is not an actual root directory on the filesystem, and any\n> non-absolute patterns will be matched in the `cwd`. For\n> example, the pattern `/../*` with `{root:'/some/path'}`\n> will return all files in `/some`, not all files in\n> `/some/path`. The pattern `*` with `{root:'/some/path'}`\n> will return all the entries in the cwd, not the entries in\n> `/some/path`.\n\n- `windowsPathsNoEscape` Use `\\\\` as a path separator _only_, and\n _never_ as an escape character. If set, all `\\\\` characters are\n replaced with `/` in the pattern.\n\n> [!NOTE]\n> This makes it **impossible** to match against paths\n> containing literal glob pattern characters, but allows matching\n> with patterns constructed using `path.join()` and\n> `path.resolve()` on Windows platforms, mimicking the (buggy!)\n> behavior of Glob v7 and before on Windows. Please use with\n> caution, and be mindful of [the caveat below about Windows\n> paths](#windows). (For legacy reasons, this is also set if\n> `allowWindowsEscape` is set to the exact value `false`.)\n\n- `dot` Include `.dot` files in normal matches and `globstar`\n matches. Note that an explicit dot in a portion of the pattern\n will always match dot files.\n\n- `magicalBraces` Treat brace expansion like `{a,b}` as a \"magic\"\n pattern. Has no effect if {@link nobrace} is set.\n\n Only has effect on the {@link hasMagic} function, no effect on\n glob pattern matching itself.\n\n- `dotRelative` Prepend all relative path strings with `./` (or\n `.\\` on Windows).\n\n Without this option, returned relative paths are \"bare\", so\n instead of returning `'./foo/bar'`, they are returned as\n `'foo/bar'`.\n\n Relative patterns starting with `'../'` are not prepended with\n `./`, even if this option is set.\n\n- `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n\n- `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.\n\n- `noglobstar` Do not match `**` against multiple filenames. (Ie,\n treat it as a normal `*` instead.)\n\n- `noext` Do not match \"extglob\" patterns such as `+(a|b)`.\n\n- `nocase` Perform a case-insensitive match. This defaults to\n `true` on macOS and Windows systems, and `false` on all others.\n\n> [!NOTE]\n> `nocase` should only be explicitly set when it is known that\n> the filesystem's case sensitivity differs from the platform\n> default. If set `true` on case-sensitive file systems, or\n> `false` on case-insensitive file systems, then the walk may\n> return more or less results than expected.\n>\n> As a shortcut to avoid excessive `RegExp` creations, `Glob`\n> will use string portions as-is to `readdir()` calls while doing\n> its traversal. If you are setting a `nocase: true` match on a\n> file system that is in fact case sensitive, then this will\n> result in matches not being found that you might expect,\n> because for example the pattern `Foo/*` will fail to read the\n> `FOO/` or `foo/` directories.\n>\n> On the other hand, if you set `nocase: false` on a\n> case-_insensitive_ system, then the opposite problem occurs:\n> `Foo/*` will match `foo/bar`, but because we only detect the\n> existence of the `foo/` folder by successfully performing a\n> `readdir`, there's no way to know what the \"real\" case is, and\n> the match will be reported as `Foo/bar`, using the case of the\n> string portion of the glob pattern.\n>\n> The default is usually correct, however it _is_ possible to\n> mount file systems with a different case-sensitivity from the\n> host system. If you know this is the case, set this flag\n> appropriately to the file system you are searching.\n\n- `maxDepth` Specify a number to limit the depth of the directory\n traversal to this many levels below the `cwd`.\n\n- `matchBase` Perform a basename-only match if the pattern does\n not contain any slash characters. That is, `*.js` would be\n treated as equivalent to `**/*.js`, matching all js files in\n all directories.\n\n- `nodir` Do not match directories, only files. (Note: to match\n _only_ directories, put a `/` at the end of the pattern.)\n\n> [!NOTE]\n> When `follow` and `nodir` are both set, then symbolic\n> links to directories are also omitted.\n\n- `stat` Call `lstat()` on all entries, whether required or not\n to determine whether it's a valid match. When used with\n `withFileTypes`, this means that matches will include data such\n as modified time, permissions, and so on. Note that this will\n incur a performance cost due to the added system calls.\n\n- `ignore` string or string[], or an object with `ignored` and\n `childrenIgnored` methods.\n\n If a string or string[] is provided, then this is treated as\n a glob pattern or array of glob patterns to exclude from\n matches. To ignore all children within a directory, as well\n as the entry itself, append `'/**'` to the ignore pattern.\n\n If an object is provided that has `ignored(path)` and/or\n `childrenIgnored(path)` methods, then these methods will be\n called to determine whether any Path is a match or if its\n children should be traversed, respectively.\n\n The `path` argument to the methods will be a\n [`path-scurry`](https://isaacs.github.io/path-scurry/index.html)\n [`Path`](https://isaacs.github.io/path-scurry/classes/PathBase)\n object, which extends\n [`fs.Dirent`](https://nodejs.org/docs/latest/api/fs.html#class-fsdirent)\n with additional useful methods like\n [`.fullpath()`](https://isaacs.github.io/path-scurry/classes/PathBase.html#fullpath),\n [`.relative()`](https://isaacs.github.io/path-scurry/classes/PathBase.html#relative),\n and more.\n\n> [!NOTE]\n> `ignore` patterns are _always_ in `dot:true` mode,\n> regardless of any other settings.\n\n- `follow` Follow symlinked directories when expanding `**`\n patterns. This can result in a lot of duplicate references in\n the presence of cyclic links, and make performance quite bad.\n\n By default, a `**` in a pattern will follow 1 symbolic link if\n it is not the first item in the pattern, or none if it is the\n first item in the pattern, following the same behavior as Bash.\n\n> [!NOTE]\n> When `follow` and `nodir` are both set, then symbolic\n> links to directories are also omitted.\n\n- `realpath` Set to true to call `fs.realpath` on all of the\n results. In the case of an entry that cannot be resolved, the\n entry is omitted. This incurs a slight performance penalty, of\n course, because of the added system calls.\n\n- `absolute` Set to true to always receive absolute paths for\n matched files. Set to `false` to always receive relative paths\n for matched files.\n\n By default, when this option is not set, absolute paths are\n returned for patterns that are absolute, and otherwise paths\n are returned that are relative to the `cwd` setting.\n\n This does _not_ make an extra system call to get the realpath,\n it only does string path resolution.\n\n `absolute` may not be used along with `withFileTypes`.\n\n- `posix` Set to true to use `/` as the path separator in\n returned results. On POSIX systems, this has no effect. On\n Windows systems, this will return `/` delimited path results,\n and absolute paths will be returned in their fully resolved UNC\n path form, e.g. instead of `'C:\\\\foo\\\\bar'`, it will return\n `//?/C:/foo/bar`.\n\n- `platform` Defaults to the value of `process.platform` if\n available, or `'linux'` if not. Setting `platform:'win32'` on\n non-Windows systems may cause strange behavior.\n\n- `withFileTypes` Return\n [`path-scurry`](http://npm.im/path-scurry)\n [`Path`](https://isaacs.github.io/path-scurry/classes/PathBase.html)\n objects instead of strings. These are similar to a NodeJS\n `fs.Dirent` object, but with additional methods and properties.\n\n `withFileTypes` may not be used along with `absolute`.\n\n- `signal` An AbortSignal which will cancel the Glob walk when\n triggered.\n\n- `fs` An override object to pass in custom filesystem methods.\n See [`path-scurry`\n docs](https://isaacs.github.io/path-scurry/interfaces/FSOption.html)\n for what can be overridden.\n\n- `scurry` A\n [`PathScurry`](https://isaacs.github.io/path-scurry/classes/PathScurryBase.html)\n object used to traverse the file system. If the `nocase` option\n is set explicitly, then any provided `scurry` object must match\n this setting.\n\n- `includeChildMatches` boolean, default `true`. Do not match any\n children of any matches. For example, the pattern `**\\/foo`\n would match `a/foo`, but not `a/foo/b/foo` in this mode.\n\n This is especially useful for cases like \"find all\n `node_modules` folders, but not the ones in `node_modules`\".\n\n In order to support this, the `Ignore` implementation must\n support an `add(pattern: string)` method. If using the default\n `Ignore` class, then this is fine, but if this is set to\n `false`, and a custom `Ignore` is provided that does not have\n an `add()` method, then it will throw an error.\n\n For example:\n\n ```js\n const results = await glob(\n [\n // likely to match first, since it's just a stat\n 'a/b/c/d/e/f',\n\n // this pattern is more complicated! It must to various readdir()\n // calls and test the results against a regular expression, and that\n // is certainly going to take a little bit longer.\n //\n // So, later on, it encounters a match at 'a/b/c/d/e', but it's too\n // late to ignore a/b/c/d/e/f, because it's already been emitted.\n 'a/[bdf]/?/[a-z]/*',\n ],\n { includeChildMatches: false },\n )\n ```\n\n It's best to only set this to `false` if you can be reasonably\n sure that no components of the pattern will potentially match\n one another's file system descendants, or if the occasional\n included child entry will not cause problems.\n\n> [!NOTE]\n> It _only_ ignores matches that would be a descendant\n> of a previous match, and only if that descendant is matched\n> _after_ the ancestor is encountered. Since the file system walk\n> happens in indeterminate order, it's possible that a match will\n> already be added before its ancestor, if multiple or braced\n> patterns are used.\n\n- `braceExpandMax` number, defaults to `10_000`. This is the\n maximum number of `{x,y,...}` patterns to expand. It is very\n unlikely that you'll need more than this, and setting it higher\n exposes the system to out-of-memory errors.\n\n## Glob Primer\n\nMuch more information about glob pattern expansion can be found\nby running `man bash` and searching for `Pattern Matching`.\n\n\"Globs\" are the patterns you type when you do stuff like `ls\n*.js` on the command line, or put `build/*` in a `.gitignore`\nfile.\n\nBefore parsing the path part patterns, braced sections are\nexpanded into a set. Braced sections start with `{` and end with\n`}`, with 2 or more comma-delimited sections within. Braced\nsections may contain slash characters, so `a{/b/c,bcd}` would\nexpand into `a/b/c` and `abcd`.\n\nThe following characters have special magic meaning when used in\na path portion. With the exception of `**`, none of these match\npath separators (ie, `/` on all platforms, and `\\` on Windows).\n\n- `*` Matches 0 or more characters in a single path portion.\n When alone in a path portion, it must match at least 1\n character. If `dot:true` is not specified, then `*` will not\n match against a `.` character at the start of a path portion.\n- `?` Matches 1 character. If `dot:true` is not specified, then\n `?` will not match against a `.` character at the start of a\n path portion.\n- `[...]` Matches a range of characters, similar to a RegExp\n range. If the first character of the range is `!` or `^` then\n it matches any character not in the range. If the first\n character is `]`, then it will be considered the same as `\\]`,\n rather than the end of the character class.\n- `!(pattern|pattern|pattern)` Matches anything that does not\n match any of the patterns provided. May _not_ contain `/`\n characters. Similar to `*`, if alone in a path portion, then\n the path portion must have at least one character.\n- `?(pattern|pattern|pattern)` Matches zero or one occurrence of\n the patterns provided. May _not_ contain `/` characters.\n- `+(pattern|pattern|pattern)` Matches one or more occurrences of\n the patterns provided. May _not_ contain `/` characters.\n- `*(a|b|c)` Matches zero or more occurrences of the patterns\n provided. May _not_ contain `/` characters.\n- `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns\n provided. May _not_ contain `/` characters.\n- `**` If a \"globstar\" is alone in a path portion, then it\n matches zero or more directories and subdirectories searching\n for matches. It does not crawl symlinked directories, unless\n `{follow:true}` is passed in the options object. A pattern\n like `a/b/**` will only match `a/b` if it is a directory.\n Follows 1 symbolic link if not the first item in the pattern,\n or 0 if it is the first item, unless `follow:true` is set, in\n which case it follows all symbolic links.\n\n`[:class:]` patterns are supported by this implementation, but\n`[=c=]` and `[.symbol.]` style class patterns are not.\n\n### Dots\n\nIf a file or directory path portion has a `.` as the first\ncharacter, then it will not match any glob pattern unless that\npattern's corresponding path part also has a `.` as its first\ncharacter.\n\nFor example, the pattern `a/.*/c` would match the file at\n`a/.b/c`. However the pattern `a/*/c` would not, because `*` does\nnot start with a dot character.\n\nYou can make glob treat dots as normal characters by setting\n`dot:true` in the options.\n\n### Basename Matching\n\nIf you set `matchBase:true` in the options, and the pattern has\nno slashes in it, then it will seek for any file anywhere in the\ntree with a matching basename. For example, `*.js` would match\n`test/simple/basic.js`.\n\n### Empty Sets\n\nIf no matching files are found, then an empty array is returned.\nThis differs from the shell, where the pattern itself is\nreturned. For example:\n\n```sh\n$ echo a*s*d*f\na*s*d*f\n```\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a\nworthwhile goal, some discrepancies exist between node-glob and\nother implementations, and are intentional.\n\nThe double-star character `**` is supported by default, unless\nthe `noglobstar` flag is set. This is supported in the manner of\nbsdglob and bash 5, where `**` only has special significance if\nit is the only thing in a path part. That is, `a/**/b` will match\n`a/x/y/b`, but `a/**b` will not.\n\n> [!NOTE]\n> Symlinked directories are not traversed as part of a\n> `**`, though their contents may match against subsequent portions\n> of the pattern. This prevents infinite loops and duplicates and\n> the like. You can force glob to traverse symlinks with `**` by\n> setting `{follow:true}` in the options.\n\nThere is no equivalent of the `nonull` option. A pattern that\ndoes not find any matches simply resolves to nothing. (An empty\narray, immediately ended stream, etc.)\n\nIf brace expansion is not disabled, then it is performed before\nany other interpretation of the glob pattern. Thus, a pattern\nlike `+(a|{b),c)}`, which would not be valid in bash or zsh, is\nexpanded **first** into the set of `+(a|b)` and `+(a|c)`, and\nthose patterns are checked for validity. Since those two are\nvalid, matching proceeds.\n\nThe character class patterns `[:class:]` (POSIX standard named\nclasses) style class patterns are supported and Unicode-aware,\nbut `[=c=]` (locale-specific character collation weight), and\n`[.symbol.]` (collating symbol), are not.\n\n### Repeated Slashes\n\nUnlike Bash and zsh, repeated `/` are always coalesced into a\nsingle path separator.\n\n### Comments and Negation\n\nPreviously, this module let you mark a pattern as a \"comment\" if\nit started with a `#` character, or a \"negated\" pattern if it\nstarted with a `!` character.\n\nThese options were deprecated in version 5, and removed in\nversion 6.\n\nTo specify things that should not match, use the `ignore` option.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough Windows uses either `/` or `\\` as its path separator, only\n`/` characters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will\nalways be interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto\nthe root setting using `path.join`. On Windows, this will by\ndefault result in `/foo/*` matching `C:\\foo\\bar.txt`.\n\nTo automatically coerce all `\\` characters to `/` in pattern\nstrings, **thus making it impossible to escape literal glob\ncharacters**, you may set the `windowsPathsNoEscape` option to\n`true`.\n\n### Windows, CWDs, Drive Letters, and UNC Paths\n\nOn POSIX systems, when a pattern starts with `/`, any `cwd`\noption is ignored, and the traversal starts at `/`, plus any\nnon-magic path portions specified in the pattern.\n\nOn Windows systems, the behavior is similar, but the concept of\nan \"absolute path\" is somewhat more involved.\n\n#### UNC Paths\n\nA UNC path may be used as the start of a pattern on Windows\nplatforms. For example, a pattern like: `//?/x:/*` will return\nall file entries in the root of the `x:` drive. A pattern like\n`//ComputerName/Share/*` will return all files in the associated\nshare.\n\nUNC path roots are always compared case insensitively.\n\n#### Drive Letters\n\nA pattern starting with a drive letter, like `c:/*`, will search\nin that drive, regardless of any `cwd` option provided.\n\nIf the pattern starts with `/`, and is not a UNC path, and there\nis an explicit `cwd` option set with a drive letter, then the\ndrive letter in the `cwd` is used as the root of the directory\ntraversal.\n\nFor example, `glob('/tmp', { cwd: 'c:/any/thing' })` will return\n`['c:/tmp']` as the result.\n\nIf an explicit `cwd` option is not provided, and the pattern\nstarts with `/`, then the traversal will run on the root of the\ndrive provided as the `cwd` option. (That is, it is the result of\n`path.resolve('/')`.)\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race\nconditions, since it relies on directory walking.\n\nAs a result, it is possible that a file that exists when glob\nlooks for it may have been deleted or modified by the time it\nreturns the result.\n\nBy design, this implementation caches all readdir calls that it\nmakes, in order to cut down on system overhead. However, this\nalso makes it even more susceptible to races, especially if the\ncache object is reused between glob calls.\n\nUsers are thus advised not to use a glob result as a guarantee of\nfilesystem state in the face of rapid changes. For the vast\nmajority of operations, this is never a problem.\n\n### See Also:\n\n- `man sh`\n- `man bash` [Pattern\n Matching](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)\n- `man 3 fnmatch`\n- `man 5 gitignore`\n- [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## Glob Logo\n\nGlob's logo was created by [Tanya\nBrassie](http://tanyabrassie.com/). Logo files can be found\n[here](https://github.com/isaacs/node-glob/tree/master/logo).\n\nThe logo is licensed under a [Creative Commons\nAttribution-ShareAlike 4.0 International\nLicense](https://creativecommons.org/licenses/by-sa/4.0/).\n\n## Contributing\n\nAny change to behavior (including bugfixes) must come with a\ntest.\n\nPatches that fail tests or reduce performance will be rejected.\n\n```sh\n# to run tests\nnpm test\n\n# to re-generate test fixtures\nnpm run test-regen\n\n# run the benchmarks\nnpm run bench\n\n# to profile javascript\nnpm run prof\n```\n\n## Comparison to Other JavaScript Glob Implementations\n\n**tl;dr**\n\n- If you want glob matching that is as faithful as possible to\n Bash pattern expansion semantics, and as fast as possible\n within that constraint, _use this module_.\n- If you are reasonably sure that the patterns you will encounter\n are relatively simple, and want the absolutely fastest glob\n matcher out there, _use [fast-glob](http://npm.im/fast-glob)_.\n- If you are reasonably sure that the patterns you will encounter\n are relatively simple, and want the convenience of\n automatically respecting `.gitignore` files, _use\n [globby](http://npm.im/globby)_.\n\nThere are some other glob matcher libraries on npm, but these\nthree are (in my opinion, as of 2023) the best.\n\n---\n\n**full explanation**\n\nEvery library reflects a set of opinions and priorities in the\ntrade-offs it makes. Other than this library, I can personally\nrecommend both [globby](http://npm.im/globby) and\n[fast-glob](http://npm.im/fast-glob), though they differ in their\nbenefits and drawbacks.\n\nBoth have very nice APIs and are reasonably fast.\n\n`fast-glob` is, as far as I am aware, the fastest glob\nimplementation in JavaScript today. However, there are many\ncases where the choices that `fast-glob` makes in pursuit of\nspeed mean that its results differ from the results returned by\nBash and other sh-like shells, which may be surprising.\n\nIn my testing, `fast-glob` is around 10-20% faster than this\nmodule when walking over 200k files nested 4 directories\ndeep[1](#fn-webscale). However, there are some inconsistencies\nwith Bash matching behavior that this module does not suffer\nfrom:\n\n- `**` only matches files, not directories\n- `..` path portions are not handled unless they appear at the\n start of the pattern\n- `./!(<pattern>)` will not match any files that _start_ with\n `<pattern>`, even if they do not match `<pattern>`. For\n example, `!(9).txt` will not match `9999.txt`.\n- Some brace patterns in the middle of a pattern will result in\n failing to find certain matches.\n- Extglob patterns are allowed to contain `/` characters.\n\nGlobby exhibits all of the same pattern semantics as fast-glob,\n(as it is a wrapper around fast-glob) and is slightly slower than\nnode-glob (by about 10-20% in the benchmark test set, or in other\nwords, anywhere from 20-50% slower than fast-glob). However, it\nadds some API conveniences that may be worth the costs.\n\n- Support for `.gitignore` and other ignore files.\n- Support for negated globs (ie, patterns starting with `!`\n rather than using a separate `ignore` option).\n\nThe priority of this module is \"correctness\" in the sense of\nperforming a glob pattern expansion as faithfully as possible to\nthe behavior of Bash and other sh-like shells, with as much speed\nas possible.\n\n> [!NOTE]\n> Prior versions of `node-glob` are _not_ on this list.\n> Former versions of this module are far too slow for any cases\n> where performance matters at all, and were designed with APIs\n> that are extremely dated by current JavaScript standards.\n\n---\n\n<small id=\"fn-webscale\">[1]: In the cases where this module\nreturns results and `fast-glob` doesn't, it's even faster, of\ncourse.</small>\n\n![lumpy space princess saying 'oh my GLOB'](https://github.com/isaacs/node-glob/raw/main/oh-my-glob.gif)\n\n### Benchmark Results\n\nThe first number is time, smaller is better.\n\nThe second number is the count of results returned.\n\n```\n--- pattern: '**' ---\n~~ sync ~~\nnode fast-glob sync 0m0.598s 200364\nnode globby sync 0m0.765s 200364\nnode current globSync mjs 0m0.683s 222656\nnode current glob syncStream 0m0.649s 222656\n~~ async ~~\nnode fast-glob async 0m0.350s 200364\nnode globby async 0m0.509s 200364\nnode current glob async mjs 0m0.463s 222656\nnode current glob stream 0m0.411s 222656\n\n--- pattern: '**/..' ---\n~~ sync ~~\nnode fast-glob sync 0m0.486s 0\nnode globby sync 0m0.769s 200364\nnode current globSync mjs 0m0.564s 2242\nnode current glob syncStream 0m0.583s 2242\n~~ async ~~\nnode fast-glob async 0m0.283s 0\nnode globby async 0m0.512s 200364\nnode current glob async mjs 0m0.299s 2242\nnode current glob stream 0m0.312s 2242\n\n--- pattern: './**/0/**/0/**/0/**/0/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.490s 10\nnode globby sync 0m0.517s 10\nnode current globSync mjs 0m0.540s 10\nnode current glob syncStream 0m0.550s 10\n~~ async ~~\nnode fast-glob async 0m0.290s 10\nnode globby async 0m0.296s 10\nnode current glob async mjs 0m0.278s 10\nnode current glob stream 0m0.302s 10\n\n--- pattern: './**/[01]/**/[12]/**/[23]/**/[45]/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.500s 160\nnode globby sync 0m0.528s 160\nnode current globSync mjs 0m0.556s 160\nnode current glob syncStream 0m0.573s 160\n~~ async ~~\nnode fast-glob async 0m0.283s 160\nnode globby async 0m0.301s 160\nnode current glob async mjs 0m0.306s 160\nnode current glob stream 0m0.322s 160\n\n--- pattern: './**/0/**/0/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.502s 5230\nnode globby sync 0m0.527s 5230\nnode current globSync mjs 0m0.544s 5230\nnode current glob syncStream 0m0.557s 5230\n~~ async ~~\nnode fast-glob async 0m0.285s 5230\nnode globby async 0m0.305s 5230\nnode current glob async mjs 0m0.304s 5230\nnode current glob stream 0m0.310s 5230\n\n--- pattern: '**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.580s 200023\nnode globby sync 0m0.771s 200023\nnode current globSync mjs 0m0.685s 200023\nnode current glob syncStream 0m0.649s 200023\n~~ async ~~\nnode fast-glob async 0m0.349s 200023\nnode globby async 0m0.509s 200023\nnode current glob async mjs 0m0.427s 200023\nnode current glob stream 0m0.388s 200023\n\n--- pattern: '{**/*.txt,**/?/**/*.txt,**/?/**/?/**/*.txt,**/?/**/?/**/?/**/*.txt,**/?/**/?/**/?/**/?/**/*.txt}' ---\n~~ sync ~~\nnode fast-glob sync 0m0.589s 200023\nnode globby sync 0m0.771s 200023\nnode current globSync mjs 0m0.716s 200023\nnode current glob syncStream 0m0.684s 200023\n~~ async ~~\nnode fast-glob async 0m0.351s 200023\nnode globby async 0m0.518s 200023\nnode current glob async mjs 0m0.462s 200023\nnode current glob stream 0m0.468s 200023\n\n--- pattern: '**/5555/0000/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.496s 1000\nnode globby sync 0m0.519s 1000\nnode current globSync mjs 0m0.539s 1000\nnode current glob syncStream 0m0.567s 1000\n~~ async ~~\nnode fast-glob async 0m0.285s 1000\nnode globby async 0m0.299s 1000\nnode current glob async mjs 0m0.305s 1000\nnode current glob stream 0m0.301s 1000\n\n--- pattern: './**/0/**/../[01]/**/0/../**/0/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.484s 0\nnode globby sync 0m0.507s 0\nnode current globSync mjs 0m0.577s 4880\nnode current glob syncStream 0m0.586s 4880\n~~ async ~~\nnode fast-glob async 0m0.280s 0\nnode globby async 0m0.298s 0\nnode current glob async mjs 0m0.327s 4880\nnode current glob stream 0m0.324s 4880\n\n--- pattern: '**/????/????/????/????/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.547s 100000\nnode globby sync 0m0.673s 100000\nnode current globSync mjs 0m0.626s 100000\nnode current glob syncStream 0m0.618s 100000\n~~ async ~~\nnode fast-glob async 0m0.315s 100000\nnode globby async 0m0.414s 100000\nnode current glob async mjs 0m0.366s 100000\nnode current glob stream 0m0.345s 100000\n\n--- pattern: './{**/?{/**/?{/**/?{/**/?,,,,},,,,},,,,},,,}/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.588s 100000\nnode globby sync 0m0.670s 100000\nnode current globSync mjs 0m0.717s 200023\nnode current glob syncStream 0m0.687s 200023\n~~ async ~~\nnode fast-glob async 0m0.343s 100000\nnode globby async 0m0.418s 100000\nnode current glob async mjs 0m0.519s 200023\nnode current glob stream 0m0.451s 200023\n\n--- pattern: '**/!(0|9).txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.573s 160023\nnode globby sync 0m0.731s 160023\nnode current globSync mjs 0m0.680s 180023\nnode current glob syncStream 0m0.659s 180023\n~~ async ~~\nnode fast-glob async 0m0.345s 160023\nnode globby async 0m0.476s 160023\nnode current glob async mjs 0m0.427s 180023\nnode current glob stream 0m0.388s 180023\n\n--- pattern: './{*/**/../{*/**/../{*/**/../{*/**/../{*/**,,,,},,,,},,,,},,,,},,,,}/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.483s 0\nnode globby sync 0m0.512s 0\nnode current globSync mjs 0m0.811s 200023\nnode current glob syncStream 0m0.773s 200023\n~~ async ~~\nnode fast-glob async 0m0.280s 0\nnode globby async 0m0.299s 0\nnode current glob async mjs 0m0.617s 200023\nnode current glob stream 0m0.568s 200023\n\n--- pattern: './*/**/../*/**/../*/**/../*/**/../*/**/../*/**/../*/**/../*/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.485s 0\nnode globby sync 0m0.507s 0\nnode current globSync mjs 0m0.759s 200023\nnode current glob syncStream 0m0.740s 200023\n~~ async ~~\nnode fast-glob async 0m0.281s 0\nnode globby async 0m0.297s 0\nnode current glob async mjs 0m0.544s 200023\nnode current glob stream 0m0.464s 200023\n\n--- pattern: './*/**/../*/**/../*/**/../*/**/../*/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.486s 0\nnode globby sync 0m0.513s 0\nnode current globSync mjs 0m0.734s 200023\nnode current glob syncStream 0m0.696s 200023\n~~ async ~~\nnode fast-glob async 0m0.286s 0\nnode globby async 0m0.296s 0\nnode current glob async mjs 0m0.506s 200023\nnode current glob stream 0m0.483s 200023\n\n--- pattern: './0/**/../1/**/../2/**/../3/**/../4/**/../5/**/../6/**/../7/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.060s 0\nnode globby sync 0m0.074s 0\nnode current globSync mjs 0m0.067s 0\nnode current glob syncStream 0m0.066s 0\n~~ async ~~\nnode fast-glob async 0m0.060s 0\nnode globby async 0m0.075s 0\nnode current glob async mjs 0m0.066s 0\nnode current glob stream 0m0.067s 0\n\n--- pattern: './**/?/**/?/**/?/**/?/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.568s 100000\nnode globby sync 0m0.651s 100000\nnode current globSync mjs 0m0.619s 100000\nnode current glob syncStream 0m0.617s 100000\n~~ async ~~\nnode fast-glob async 0m0.332s 100000\nnode globby async 0m0.409s 100000\nnode current glob async mjs 0m0.372s 100000\nnode current glob stream 0m0.351s 100000\n\n--- pattern: '**/*/**/*/**/*/**/*/**' ---\n~~ sync ~~\nnode fast-glob sync 0m0.603s 200113\nnode globby sync 0m0.798s 200113\nnode current globSync mjs 0m0.730s 222137\nnode current glob syncStream 0m0.693s 222137\n~~ async ~~\nnode fast-glob async 0m0.356s 200113\nnode globby async 0m0.525s 200113\nnode current glob async mjs 0m0.508s 222137\nnode current glob stream 0m0.455s 222137\n\n--- pattern: './**/*/**/*/**/*/**/*/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.622s 200000\nnode globby sync 0m0.792s 200000\nnode current globSync mjs 0m0.722s 200000\nnode current glob syncStream 0m0.695s 200000\n~~ async ~~\nnode fast-glob async 0m0.369s 200000\nnode globby async 0m0.527s 200000\nnode current glob async mjs 0m0.502s 200000\nnode current glob stream 0m0.481s 200000\n\n--- pattern: '**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.588s 200023\nnode globby sync 0m0.771s 200023\nnode current globSync mjs 0m0.684s 200023\nnode current glob syncStream 0m0.658s 200023\n~~ async ~~\nnode fast-glob async 0m0.352s 200023\nnode globby async 0m0.516s 200023\nnode current glob async mjs 0m0.432s 200023\nnode current glob stream 0m0.384s 200023\n\n--- pattern: './**/**/**/**/**/**/**/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.589s 200023\nnode globby sync 0m0.766s 200023\nnode current globSync mjs 0m0.682s 200023\nnode current glob syncStream 0m0.652s 200023\n~~ async ~~\nnode fast-glob async 0m0.352s 200023\nnode globby async 0m0.523s 200023\nnode current glob async mjs 0m0.436s 200023\nnode current glob stream 0m0.380s 200023\n\n--- pattern: '**/*/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.592s 200023\nnode globby sync 0m0.776s 200023\nnode current globSync mjs 0m0.691s 200023\nnode current glob syncStream 0m0.659s 200023\n~~ async ~~\nnode fast-glob async 0m0.357s 200023\nnode globby async 0m0.513s 200023\nnode current glob async mjs 0m0.471s 200023\nnode current glob stream 0m0.424s 200023\n\n--- pattern: '**/*/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.585s 200023\nnode globby sync 0m0.766s 200023\nnode current globSync mjs 0m0.694s 200023\nnode current glob syncStream 0m0.664s 200023\n~~ async ~~\nnode fast-glob async 0m0.350s 200023\nnode globby async 0m0.514s 200023\nnode current glob async mjs 0m0.472s 200023\nnode current glob stream 0m0.424s 200023\n\n--- pattern: '**/[0-9]/**/*.txt' ---\n~~ sync ~~\nnode fast-glob sync 0m0.544s 100000\nnode globby sync 0m0.636s 100000\nnode current globSync mjs 0m0.626s 100000\nnode current glob syncStream 0m0.621s 100000\n~~ async ~~\nnode fast-glob async 0m0.322s 100000\nnode globby async 0m0.404s 100000\nnode current glob async mjs 0m0.360s 100000\nnode current glob stream 0m0.352s 100000\n```",
15531
15531
  "_attachments": {}