{"_id":"@architect/utils","_rev":"128-fd16b2f07a377dde84cc3ec9b767f361","name":"@architect/utils","dist-tags":{"latest":"4.0.6","RC.1":"1.3.3-RC.1","RC":"4.0.0-RC.4"},"versions":{"1.0.0":{"name":"@architect/utils","version":"1.0.0","description":"Common utility functions","main":"src/index.js","scripts":{"test":"tape test/*-test.js | tap-spec"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"1b21136020a5b773dfff0dabb6e46469d4d36262","_id":"@architect/utils@1.0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Tcch61tInAbcDx2VzYD1fts6HasrsenNKEzHGYebnJG3NllwG/8iJR0RWc/e6slTfSF6AqCtbuXd+dY6gEGo7A==","shasum":"eb12480e8cd2aec45d948527f8f3d5232ac5805e","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.0.tgz","fileCount":9,"unpackedSize":15147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7sOeCRA9TVsSAnZWagAABMoP/2IIA1K5UIFxjWnf1a88\n29N1/kurpQa8O6kEaa07FlfXmwEGxa1buOS4Tb0jQrjPKtZbvaETBbsIII3R\n0GLJJ1P1pSUB+Vvw4C9TwIIdXeJXhg4p9KSq0riV79QMi2VCsCwOIP8OpuwJ\nVGAeoItKS+fo87yQCBjn0MjTXXS4NE91imdvNHev7yIOzMAVokf7yQF6NKn1\nYHUbmIdXVCGef5SxuHhi/z73uODe8mcRwm9yGrFJL594gWvR8C/uEHPFsyDj\nhrN+8qog5QdD9na86QLX7gAzhE8eX/z6fXzDS3cWtdqDqy5j3whswL+1U1UW\n49un9971Ari8hb089BSpfw9l7y2Eigqa4S1t99bSwCuohKCWzB7w4RqmXi+u\niaOkYh+vuDRg0CjpoMdU7mDb5Ziwy27CPEEdZE4Cur1eaUkj/yqTLzMtdyaH\n04hZayAxHMqOfAnlMdUmDR0qum+UWaxwvmLLFX09KTPSS8RcBKAttz0ReKkJ\nR9yDmw30w8nVzRTGlrY0H6Ee0lYkk6nSjdJms9Z6mrCgjM2ud/faZt6enIYg\n/VL0xuT4HCFz3CqMPFQUEvrVPqWUOUtkAyNUNzs/C5BpswimOFSj5dh4uupE\n85xgKncEweYy7KFtAWv8AQcV+6YsfU5sEX6fILgwxf3XyeecpKAOy66L7kv9\nEtbN\r\n=e3Dl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIATx6ZuSPCGhpk4+UGcF2qXh+TvK4sFKaO/NbGm6kRcmAiEA6XWzMbgvmiA+sWDPPj7Fz+HcGaX46TJykp/axeMgnKk="}]},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.0_1559151517419_0.9511000182052294"},"_hasShrinkwrap":false},"1.0.1":{"name":"@architect/utils","version":"1.0.1","description":"Common utility functions","main":"src/index.js","scripts":{"test":"tape test/*-test.js | tap-spec"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"776dc938ab5080589e2373a5322c1ae45cb2c4db","_id":"@architect/utils@1.0.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Sy/5Mk0FpQLTLaxZEbvZTFRHvp+Cr2Jgwmeg8WuUyfTXTmILatJLZICsxGL2M4Si8oAQUJDDSjInKUN+gS7bew==","shasum":"900ef76674eacf304a40ec5257fd0dd5266609dd","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.1.tgz","fileCount":10,"unpackedSize":16506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7sV8CRA9TVsSAnZWagAAfa8P/iI4LA/SIor2YCG2ba61\nSJHvN78NmM0FE9dS4nYKZ+soVF8yuEv/uB/o/ReXaFsXvHb5R3BQXCI/s5R7\nz9VDhJChEeGEV4aJZB6VZ2Lz/7XJMoYMYTzC6YRiW+mbCpG2HrEIOtdmcDmo\nRUqz3tChkzcyR4sR6CtjGGQEvvyd1tKdn4HzPuDo1MPo6QlsAdelgwOLGQpG\nKLTD75jF9ZxjnORek7ByuAihrACIYv/t9KD9I0vK1FaiDslWMDQNGbBpkRmM\nKxJdYjfqB5vsLHCFVBlS76t4MCJxdB8YhDAGdxbug5QjOGDN6+ei2Y5eC+9T\n+gaTKQbR/lFdnHbiaFL70KyiOnKvSHoQROBZbWxYuIsTfDxtaJ0pKL7K65mI\nvSZ3z46w5CLXpN3ELKaCOlmWQvSV4daoHeG4PXDAtz4xXyR/FJ6fBZN91rkq\nyRPXXgG/77DxCTbFFi6ynaCl2XjC422c84L5smfwJwqXpoHjpKNSZRYp3niv\nU3o8EK2Z60KFnDrEf5taDMrhc0z28qVmNrZcriN/L8ia+qWALyfAQGp5StOh\n6/jm+oisro37hNxmplYyWAd9MgHB3d7x0WLtNyvRnz+elG+EJFg7bfnroAj4\nINO9xlAKVSwfZtrNqlOlcsvrUjNX8ct87AfSgaObQPqpvSll0x0+WrzRQ507\nnUtr\r\n=M6hg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCisUCxF2MLqzDDNbB9s5t7IANCN1vLZrDUS5KLX0DHLAIgTVKESUS8/RhP1j9akJgbwGWxK0EFwmrzU2yWmpbeudw="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.1_1559151996293_0.19232434033668522"},"_hasShrinkwrap":false},"1.0.2":{"name":"@architect/utils","version":"1.0.2","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"8cf43bf41be24bcfc4e58db292d91054d9951b63","_id":"@architect/utils@1.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-IbgESYk8+VHpH9Z5RGNrzZMKwXem+X9z3PH2C08qanqNxFfcXc03IzbFVjSTBXgFd3Nbck0AUReewpQ+vYYxQA==","shasum":"db912f3da0b73f43cd913fea547f924f653e27d5","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.2.tgz","fileCount":15,"unpackedSize":27819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7xTxCRA9TVsSAnZWagAAyFYP/0Xf9FIiEMBGqP7ECLMY\nxu4/NAyo97ch/TLpCsv2J8WXKP72dUf3rvkd1nsQNq8YuBFqvHLk/ZHWeva0\n249hqbUXxjSC63yBk7JQFhTd/GXwLRqvfvmPQlnTYVPnY+74zVtemQHPw4Za\nSUQe52YWHdDij80vpjt2EOPUzlxaFNTeCRa7m2+vv4y8xCP/gm69jdJQOXTh\n8MG9Ce3M/37IEVguNYKQcQpHY7/Myexh40BuVqsVMXp4KN7BRAb7YMEOwNUG\nDyO9fvPsopWMxdn/a9H3zNpPgQyn1+aPmxzeIfKTGmLzI0e3kexOyX7fhoS2\nJ+DnmKQJzikYel519+Ff2Yz1Fe3HIQZSBSatblzJPADU+Oh21LmtJSWuqNwe\niMPGTfZRZ9jutsDRu/0MTP0f34/cvwVw/fmK1zo+FU5blIChU7fFdaj8Ot3K\nPbb77c8nc/0dNfRJ/Rv94WM7BwVbtXE1BG1jMPgbtaJ/8B0feIAkvdF6lGUl\nMXRW+8a1ukAd5c5lKEsXoXzkUHkkWvB65znhUA88xmKi1+MAHEqnTIvGgZ7y\nn90OigrHDUG2y7s12NYKHb3Px6lYzdEI5BHmMjqE5lROQy4RteXIs/00jo/Y\nFAWqmHTpWKfrL6QZ4Bq11B3Nrz9eI6o1QjkjQOEqia7QImGw/D8FkNUUl2xJ\nT0L/\r\n=p3Os\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxH1mGzep4CZrO9guP1rgIQIwzQHpNfWfO5sc0NzbYLgIhALPEJRqX0ViefmwjsiyDP42Bj5cYa0w6Zsnl26FirmIT"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.2_1559172336849_0.10270656822552149"},"_hasShrinkwrap":false},"1.0.3":{"name":"@architect/utils","version":"1.0.3","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"1f5a5ba4c95bd72b63108990de4890a61ce91665","_id":"@architect/utils@1.0.3","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Z1NFUVRwSDelCUanDEmrQQKgx6P0jMT4szNTxeko4+t09RTKwL5S4qUjUDgPai39tSD0Uj0bolb4s+/+JzyCSg==","shasum":"2f4b0711d5e19e648cbcd03e51a3f077705facfa","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.3.tgz","fileCount":27,"unpackedSize":33149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc719uCRA9TVsSAnZWagAA/3YQAJ4sbbiqUbpxIC1Bik3y\nbkOCJ5t0RLKYPD8RRggFqS15VmVvnwV9ergBW7L7Z5u/ZJKV+zN5Zch2o7P6\nABVxRmCNwKzrNDUNttqAdnHIAOJPY0CehF4Aw5Vrl13G7TB3NpCpZZUV7XI6\nshICpqBZHbypkmcMQipAZSMvn7Z5A9Cdv3RrswPx2diuobqe6JofmuUKeAqH\nbWTtGwZM3ijxhUGYxMbi6Y242aE6/E0VzLr8k22/P+KGRXfgVJB+M3pyJyR7\nHYC8KKVyiACLTY1EHScXKzqEWQHJlrA6TM+9j74S8lHtc3MJVryq4ocxiloS\nCXswLRXHKf59DkR3WzYCjxn4smUflSJwLj+jX7BSlu2O0wFq9InnDsYJVQ4A\ng/UrJgkY/j9s0F5pLLIja59N37tGNp6+WZFXPtyskMSIPc/Fi+qyc2e5r03E\nyeWLjPSdTGMDgdiDRsMpybHWDLtg0uLKsM+p7DkWNivoQqqjjHturn0QQqb/\nInl/51vHkNRvtRp//noLWFRzUfeiJEfTIygekFVsibWPN7fQj/hlcQ2F8g1D\n5omezxiCikrN/097g2yMr8Jv+pwB/QMO+6v5INLMqdzalq61kkuXnoE79Ui6\nkueHmBIyyrqQUOQV9hSzEoyMEAfwBCQF6HQRcoEceddY1UfyKst1ovLodX5n\nNduP\r\n=oBCy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVwrjDpxHx7FINddwuwFISenjDdlnCdb2gAzZ9XrccXAiBMxcRWNBLolq/TxTemAEgUwmkvLW9mSFkHzmbcY3lseg=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.3_1559191406230_0.1900337508946759"},"_hasShrinkwrap":false},"1.0.4":{"name":"@architect/utils","version":"1.0.4","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"a2f632912465435ab5b7206a62af10e82a520b2c","_id":"@architect/utils@1.0.4","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-erJkjXezVwMY++ximdTNF/085nt5c933IijCE75TCkOaIv6VQiUs4oJroGvhee57sfy4ytIyx8HVw/OTad+ceQ==","shasum":"772974a05b4cb7c41056f2ac5f762a0d202a62a5","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.4.tgz","fileCount":28,"unpackedSize":33343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8JVXCRA9TVsSAnZWagAAaUQP+wYGjAtpOpu2GfHKCYgO\nx49gQ2EyEesAfE8sR0uFP7D3mAmPhm49kLn7aV/C45SbVmG6bQV4vA1C+htM\nbvCGUDt93/4WwGu7JIz1CV02I31MQ3xu65Faf/aKZ1l16Sqt8TPgqQWRsGNf\nZnEDSoxuuamoodgMqVmd4uyLK6R9G0Rh4LWaKrwxnyO0XHRCGJIT6VIi1xQp\n2i6JLRu1efmdliN4sOe/yPR0nuEqwWdoccEegprSsugBT0foUmzNP1m9GSCS\nDgji5iTjoYGxEP4ya0+OacP8CjcdYFGRwnJ4LNJaI3KCoaz+xNKOIFrzwkBA\n/fV379KlA9PZZv5R2G+oAAphylc43Y0o0GsK0695y4z1SRsyDBzsSpi/0A7e\nw1i5+S7TQRDdG1oanZT9nFnAM75ngQBmORCOPaVZcli+HSci+zM7Wf1qabtz\nclFgvi9cbFjjHjSRkawl1XMXsAX3KUyFA2kQzcK6VmTgQhfkTdssuNylbC/s\nSp7JHpE9HFpZtjpblOotHJnFxyTLMOi0ec+JNNTW5LgBp3XEn6QdbEg9vkdq\nHF7UINe2jEJuoI9GV601CzhEFjM59Pyym/Ad0O+jt/QDazjWxpMOORp4FHLi\nNEcur1txu6TF5wYmKf9rAck8FNd6UfrlNDhdKR9QoEPE8mUTxy4fttSzA6i/\n2xkG\r\n=JcYI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG6IdE5u2RQ+IwA0mxcIB2KQpcnEE2uojQkQGfvQBAiwIhALXu7ggXqRqMclD1kwI7K1MDwO9XMwb4FzDs0SOHYO5p"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.4_1559270742465_0.7136493152441465"},"_hasShrinkwrap":false},"1.0.5":{"name":"@architect/utils","version":"1.0.5","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"1b8f7b1abbf085da4d9be08d8d2e4972d95c7e0c","_id":"@architect/utils@1.0.5","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4Kag3SC5mNHZ9ibtN/XnIAqv5LaD9bWqn0UkDvtDTlGGWV/opAKYFUCkaQZxcHtm48/x4O6Kgas6UUrZVXEs3A==","shasum":"e5341646d983724e4e9bbe81729af8bcff6aa00a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.5.tgz","fileCount":23,"unpackedSize":31972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdABNHCRA9TVsSAnZWagAAo6wP/A9rKm5Pauuj2Ar738T6\neKNmOgQvwxBk4UdQl+rEnNUk2DW4dzAYgoNCuLjGWioQH2aS4EJkhdeI8z1k\ncubvoTVcJ1V/VqlPFhp5bdwdf+Z7BXmKFVhha/TESbqJHxh2FGKGEAtFuR9Q\njohOmXx+UGxmdqQkG13n1dWfcvrQVpmuxYA3N00ZCnBLbZA6tS+FgayXLHEO\nuI7mCI0a7cGHMBtWHCOioOVruqKNQ0KcSBoXNVZnOB5syNfdd3x1mmSrwhaf\nRJSoAfPu3E1haRLrGlBgx8BPMOCyzyUjFGxtxZZlzFBjanRH8ODZi+jtiYxd\nk6xBCJYohDFe1GRYUIxUUOykK5PVHS8TKww2XbLNVEbsuNld0mTnZrsAnMh7\nt1co6RczoyZyo3N5C9iDstaFCoSe4LG1FPCTAKstIdAOIIfg4iKVx/e6AKM1\ngVDevwBrspIcNVF33DQ+/H1FRd5Cm77+61V4C8fyb37tvU2t+4Oc39FcdMb1\n0HYzUsKCXuXFfMluONA+cIzOJBLwFp8JxI9epnbRbFl0KeiV1YTCtEgHXR0l\n9IXKC/vw2nv2TyxHwEhaZM/mBtH1kDyQAtKYjs5A+czfL99EvZ9HOfvdxdSE\nmWbX3e1a4G/11rmfhlvguJM3RTAAycTHGTrTRSkppixRXPE7j8dPFoeR9VuD\nVQ9m\r\n=K5jS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHJf55bBhbQ053OyUbO9aPSfB760Q7xqhRT4vOAIdfLgIgPfc4utWxSvhVL9zOfdMoy5KULI1yhCRCSunAvj+xEDM="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.5_1560286023083_0.4252807910197389"},"_hasShrinkwrap":false},"1.0.6":{"name":"@architect/utils","version":"1.0.6","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"d6f08ae10952bb8053d9b893e81bbb40369b49d0","_id":"@architect/utils@1.0.6","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-rug+f/fIndDIRieymNgZ052LSKER+12wRN5aDcEsb5U8j4mmYHoD/oYzx4w428x5ty3w2kvT2pnAlgb25cSDsQ==","shasum":"ce5b0a93a759cf2de3c01f57577e430075d52c67","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.6.tgz","fileCount":23,"unpackedSize":32003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdABZPCRA9TVsSAnZWagAANBsQAJfSYd6B3519w9ZYOdXl\no0GoK5RyT6vJ3T7Fd+UqtmDnPrAxlur9L8KTqGR5KpuBXmG6vMcyROSH1T2l\ndx7V2sjf484hLtQI8tlPVqGKvAFC4BEBoCrJ6FQ0jpEMKz9F+chETeWY5IHW\nfcq5dQ2jROJppwMau4HMAvM1LHYiJiekt5QZVOdnJQre0SAfVXRgM+UncYZm\nyGqXQfWWVDijw/sp8M1z2roPogKloNuZlbw2ry8j7diqz5szEi6ULjP3Lm7u\nNCrcLi74HHWVTJMHOi3+OTxz540zK67gISHQQJJW9EafcotCNjlAMkbru1/q\nM3Vbsc/J86h+xq0qzBpkpiidlS900b47aIf2Nq07SA7UEYMqNJV0Tm0I6QNM\nL3dfXt0JTfT+O1qjcpnp7c+j0UsmxmYLVqUHq6cA9qm/Mo0bCQETMbCeS5TF\nKxrZ/dz/pWd/lCcbsxCtjgLOjnFRdw9hT7ryp8U1iqe2vVwfRie7GFG1kt05\npuMVi22ZL7Wkg1zgzl90SlyBO09apS5bPIolFcA9+dEmfcGbHtcxuwEZXLCT\nmNj9j6WXXDhsMOVNoxbRxo6SwT8N8XaDCapQ5y2ioaq5eccmKEo2S+ySYzGl\nMJKRRafajrWBDL6HV1OE36h5Cte/U0/xzSXOkaR1dacfSBgShzSNoUYsIwKs\n1wsh\r\n=7k/Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWJerxbzANLeEnQIiIxYObw/1VzJIyXe3sAhjSA8UCRAiBECUXDTc1FC8P6RsxiImx1rg7YshS9AoyDvNGI60nR+g=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.6_1560286798497_0.38932628941098346"},"_hasShrinkwrap":false},"1.0.7":{"name":"@architect/utils","version":"1.0.7","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"f05051d3649b0ad752ca10ff06ea6080868b86a1","_id":"@architect/utils@1.0.7","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-IWLcnzdx386zv6EG6SJScli4xMdpvEtqmAxXhqWUfErNeidtskLXn0UC4QQf00Hy/Qtv+dbEpO9hdJMm4inW8w==","shasum":"85c390f1ee7567de415dc10d911ee8d2bc000803","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.7.tgz","fileCount":24,"unpackedSize":33093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdACZOCRA9TVsSAnZWagAAHrIP/03dw2hbuH9pql71M2Ek\nCAPw82nOJWTd4cRoLRoszpeNB7jqZ53dnrvAwoLEAiUWRHSQUaWlkyvBApQz\nJCrRGv3k3NlBxyi85kqkeQtYlopF3m27siLLvwqhCBN64hyufFzrvd1U5ZZ9\n+FM3TgCs+B1/+Q4kUET/advP5fsnp7B8L99k+4+8rbTPRNZ0Sj27gYyG/Qpw\nxDAid5chbSTXG5OH/TO6fhUXgnYNnY4ldihZHlWVfLm2Vyq/n7tXP3O+Ofit\njc6ZKdAD2F3yUM8Yms8y19vSa9cPmAJWKpC3ecWaOjLKQmDz9ewG2py4+QK0\nkv1a3SjDOwgJfthktTzmr52GCcIDFhc9AiOl+QSoVJ5emEhT/G/UtyBhSOp9\nddk2ySxSQJHoOh+8CV3eS3I2LJvotqMTnZQvaKqu0v28krKCit+zSR0v9V69\nCVRikZWWX+kTVpNAcMnrZHk2iamWxHs7sxFFkeiRgqjOD/Kb3UIOV9OYUjDs\nCewCSxMDuj73kkH81pazkwuCm8bXfAA0ovWS+Acw02q0p7Z0lFAUFjsW39XB\naTRN3hOXngZAcfuTq1AMuXPAdX2aPai66AZgYnamjc9/4QB6QAubmetyVcJf\nQjnVN3RSFc6TT1xY4R5y45iitrjhsiws07H4mqNFKstyeEBg0HrxKQ/eVBD9\nU82H\r\n=VIQN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuqfJyWBVKVeFAId34bRIFyirgOg4givrWTiGhfwEmcAiBbaiurg8gA+uk6kdwqWkBdH+goodRGLVXdSxdXEheliA=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.7_1560290894024_0.21940520121357743"},"_hasShrinkwrap":false},"1.0.8":{"name":"@architect/utils","version":"1.0.8","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"9cc8c658d8a4c3daa479b0eafd5f82e1cee27e1e","_id":"@architect/utils@1.0.8","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ZAmFSaXobNErgffAPUlmnzeC2LWUfm97dZ/SDvXt4dhNUml+m3fWhrS/dz3a8SexpJJ95+bq6ZPy6nhBws6Xgw==","shasum":"bf9c298e85dccc9278a286aead117c7df16848c0","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.8.tgz","fileCount":24,"unpackedSize":33087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdACiqCRA9TVsSAnZWagAAwtgP/RLieqkMCa+OhUIJ+D2b\niZh8K9dJkbyrsXIB3MNoZLTKV0Y4BaD+8J0QjwcjOLVuZSl/B/BC8fDRAWJS\nNtSgHM4aiSnEYz9Rl8oan1qaXBixrFp2wfT3FphNaHQRmKlhcSQ9mgKHx4Mb\nzzAGeZ3RIOtkorW5daVvKSNmto6DyRDAg1M+XmBsp43F3UDuvsa04efGcAEJ\n4qGonSgfFSf3SmZG4lkKH71DY6JJ3bzMKxpGr6y1KOgBgxFziiSMXiplZk18\nIwhneCWDZ2Lp1JGuC33nPi+F5M14C96rFTQfe8+2UIpEH9VcN+OwDnrD0pKz\nsVF3itdDMymKhM+AXpR53db3W8Xo/VOeFMsuYp/6ub3AoWJVhRPzelBSiKi3\nN4ia7BVvzhh+mpch+lJl5STiUbi6fLKEtuvMMaf5nRi+1OtfBxxin5zJ30k9\n/hDL8l5AdR3Wpy5XvXGN8JrZcQmq32pPi0ZygZnMgX6NlrSRA9OPqyQAxTvu\n8ElNyhEAzYUvYw9NAls1CHUrNThU7er2XfVW/1YEF1dan7hq8rewR0qpTG1D\nH32lzH5Z/m429M8MIYoNPcMWUmwIMAuHURTnVh/r3y9+O4sWGpbNsuz/pVJu\nBPvSM/Ns+BAmntemV3bfoBuALA14ZynebYH69zqIE1Fe3Rzko+vN8wUOXp5g\n9Peh\r\n=yxmW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLcFW6XnLx+Yh2j1Bl0U5ZVfBLatXmbGlmKdnYc2R17wIhAOlPzrC4dOdn058x3cv3y+v4mt9ab59X+GHJp5l0Fez1"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.8_1560291497427_0.934821742781998"},"_hasShrinkwrap":false},"1.0.9":{"name":"@architect/utils","version":"1.0.9","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"3e19770f6826f180553fdfe19fb10c1ec6921b18","_id":"@architect/utils@1.0.9","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-XXqo4tXy/9QYHfZvdAnas/FkUu4N5m4+sJaA3oxJ7uuFwpjxFBJ2WGNqB7L+FXxCw3WD/BcaLUdw9cZaW/mGuQ==","shasum":"0b675ee573f7598b28798250407878711fc9aea4","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.9.tgz","fileCount":24,"unpackedSize":33392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAWczCRA9TVsSAnZWagAAYKsQAJCJLzoMHPCNFYHwViHe\nKFIr3Is8h1T8+Nkv1WRSIOeCeenfs2R8DEuF4e8kM/eQVZdiydJNEQ7/lTek\nhogpvTALclQ2WjhBQZd+6hUyTGVo7U7IpiWKPBRnwQnTeu6OyhWzzfnJDi71\nXlorTOUectSeJqr2ABt1WBvRkKmmGgUDVo3fcv0J+AqRJPwvLxJFT5pbW4gX\nyP7P/rl1zr8R86RpXP7gexcF/DvSIBjKVtchIt/2fne+sjYjfiLu9lgo0V6O\n0SgFiVyqP5ADbd95tn/jl2XssyghF9d7EaAHgMswRVFCFXytuXAYmtk5RLDN\njYUSJCW1jjqxGm9gVH4O/Ns3GhjX5VzsomcTn6/8F/76qmvxj3X9xGcTEaIu\nIuzos62NDdtSzQrLBkj6OljWwcjam/eAs7Mk7nkUdP+BBlt3lCksMlTdjT6l\nxv4kcGxq1FaTvTEBQF6mQ2zgcD4JXlzJo/oTKcf2gwwr/mCfsiniHo2p3CMx\nH3qDBf7uMGPvysupmg+87lJG6zVnFT+tSTK4ADXoNuIbJd72Kzxo5Bi41/SI\nlWNw4C91A1602CuSPlgeZ+aIK/YONqotCS7y1x7Dy/4B57Smh/4vNZ5DMq87\nkv9oljo7Pe0YaVzQzE6V3sGA4VHeL/2eABrfHiFI8qFDSQUkJ+2hZ1DZwtUI\nnkUP\r\n=OKM9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD59YKfMrjgtv9C8FqS0x6293GEXsqYnSAlYr2phAEl5wIhAPbrYO+HlUl6Emzw30z2OvsMghUZuxOWe5Ixlk657MZ3"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.9_1560373042502_0.7334479287536741"},"_hasShrinkwrap":false},"1.0.10":{"name":"@architect/utils","version":"1.0.10","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"45be76ce331d94f2df0d64da1a0d0a86018b4be0","_id":"@architect/utils@1.0.10","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-s1w/mMKe8pgPcECdcAV5kz4FQ+3CGwSU1blRLuxUXtSgVuCT6B2KxB6ZsMw3DgAcubp/99O2rwaxktQYf/rGAA==","shasum":"d5ab602dc5fdaa678320186ea00f08faf104f539","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.10.tgz","fileCount":26,"unpackedSize":35152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAqHkCRA9TVsSAnZWagAAtg0P/0Vs4oyV3bq/FGMQPNb2\n543y0fw0jqR0mdausVTTRBtZp2CV26WgnbplLPTBNdkfDOl+mBEgeVxdVVK+\n0KriXCUXPlSq6+DGWSxKAv6gElNmZFEhC7dViuVl/l3J1lFEwegsch1nfl6J\nLVJO+b07JGmiH8HBn8iC3HjqIBIXnt4NJ1k0kBKtaG7dPA0ppXy8umeXePxq\nssAyggghSJxL4eE9tueFcz7elbhHOdDYKQQIrqTkmnPVhits4JiBsvAW1x5+\ni1wrX0eJ1N9xAFbv+Bte+68I06aMWTj+2WZF1OGrXTJo3QOX/Aduub1qR4+L\nnw5ANbGAGm5579mWIP6s7oZ7g1W8AlgcRypCxv/P48nh/cwP/GyZu5Hzh6J/\naxrlPk5WU61gJ+Sjo0xPxdNWKh6Ya4VyBXxsZdLPXGnNy2L6wV9GdwlcxMA+\npCVYp8rxa8HIB5TbAaC1zVs3GUpSY9rQojSN/TBYhllX/nDnVfHGFCZvE6wQ\ny7ORM+YZYVF+hZi/S+V+xiVrQC8Oojsbx9qK4CaKVZv28Adw2UHAHqs72pDN\nOhlKuFkNloO4yHSP7oGLpUCcOjorxQaf3HQBxTgZMoRUE1XSMYTgqueq5/co\nseuWqmlBPDpBn5H33ATKvZfjBYnsTZrDehfpwgZW2m0+NMiVO7Dhxey/wHfG\nsmxO\r\n=BZPy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICn9Hjx54Rx/PYVgu/KCPIVj2QKsnwJqAJxqK1RCveclAiAGKEBzzwm+04BZVyhKZfGDWPqW0F4Gl/kVkUutK9ypAQ=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.10_1560453603770_0.5366359665496057"},"_hasShrinkwrap":false},"1.0.11":{"name":"@architect/utils","version":"1.0.11","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"a4b90e3c4c1124430be51c694fdb64263826c246","_id":"@architect/utils@1.0.11","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-f8tgi/YzPLIwBdjHBsMP4MNY5HbQcP/UcvzR/A1G1+GdV1+B/K4x4WToInlYLAJNeo+SeKmQRbXiOIjSoqh4nw==","shasum":"698ff033a07341a7a6baa6c5ec1660c7d23bdf66","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.11.tgz","fileCount":26,"unpackedSize":35106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdArEnCRA9TVsSAnZWagAAn+cP/iAF40hQ/ac/rEWyN1w3\nejIt/4gqA9bcGzo9aw91icafUzZ6fXmdBfj0v5m56TwrnWJDLJiutiUDvMNZ\n0CuQDAbyHq1AthFi4HL3CTBEw9I8cdrLN/AyNjvUjYfGCMv2hbhafTABt+kf\nPuaHqRzH4arWztlKfpKmHBHxV7wxfetRJS8832HOjHGgpm2oCU6LVzWfB28X\nr0FXN5i1sgVQUno+9vCKk2SymkfovgUFsF0waOPqb5Rcz3VHM3d0tjuScKoo\nVFMS4OI9pFFQkpzSuEogSvHRzafpbUXJsWltU/HE2ETTuLVzXOcN8sAVcbfS\nA7fY2hoR8pzjD/1GWfmf8Zx3EOMSbxIS6vdT2JfqXAku6vVCGgRBsurpS19Z\nbPGM2dFZUo1H1Prs3QiyxKTXV0/wtQ9Tk15U5qkdHf0sEeLoKHmdyhdKnUVR\niRy+REQr1ZXyLXN4gu29YWtqjweDCh6rsSif/L0v9YfrWM/RAbY0amYBudqv\ndjKD6GVhrTrQdlAMDYg9Z097OCtzJ5dTAlnqjsVcQ8jNYp1LGINaQTJvNe8E\nMaXiERhXt/sLqViEGx8Kqwcu4NipcH+HC2oPLtHJ/C//jC0WeqO5KHadAa0Y\ngZ8JxWOAKbeOTwqWDbKKKpARf+q60J0JelV2SqtCzmTI7unQGbJscAh5BXJx\nJAfy\r\n=MZkT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBsFUG7exSGi12Atbguj1sHNCgbgBHXj3xllcBLwM3d3AiEA+psEKK+wNlllI4PHwx+l2tbBlJTj2LsFV/z3+IuVRjk="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.11_1560457511064_0.25865596849551986"},"_hasShrinkwrap":false},"1.0.12":{"name":"@architect/utils","version":"1.0.12","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"166660226921d1bd9be353ad6a88ef8e50e8fee8","_id":"@architect/utils@1.0.12","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KPE/g4ZRHJeQt7OhNdkUrhvhSYcEfX2J4aewJjockZ7K+O44DTPc/9Di+6rXAYNV5AOoAkUWUhsQGWlvsZB2tw==","shasum":"43f292a5c7ed580d888c50cdde5604c0bbfd7d68","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.12.tgz","fileCount":26,"unpackedSize":35213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCB22CRA9TVsSAnZWagAAga8P/jKzvFV2PHeitmvDBFOu\nk1GjriF3UVS05GC5KFNp9gzG1GzQmXQuXciKP56UJ8GIXv0btczAlJzC6rfD\nLqSxjNYNRIaL5BMCZyOw/FsklKODTWwv63OBB72iJaVQ8UsSyPxPAu1hHw9e\n2Au87eHi2jh+g41U07iinNHd24NV0qthb9zfCO9lsgnqFmCUv9WHTdgaiZ3c\nEVZ1VawuGMn+1Jikz0wf49A2e+CO5VYDQRf2QaAgoh5mkb2UyTBqquThirHg\n6tK6K+sp6fi2IYlsO0hEflef9+KFCtQ1DA5wEdRrfXwJpb6lbpU2rs1DtLQd\n7Brk0bTZMkBauFUebACJ1jPQU+s8QkXrLtV3T9dugYQ7x8LTl5pKBpOVF0M3\nbYqEgDXPI2FtQODdJDLxlBEfPkegk758a5HDaYksG6VrwO/toK9bsiTIP2wP\nh2oY70peNtym8DjHr4pK8KkSmzOEyYc4E4OUBR82dwzxfJ/+y9508d32I/b/\nwVxbKzRLnQ2nrDX8Zu8UwSUeF1y1UNK65CV9wckB2vRX3X6VxUyIfW5xBmR0\nvdM1JqxVVH/ntwkgs/BiJGQ35x6WPtENeKGm7Zuaff15d8KrIpBhNtr4ZCBC\nN84gWO2//4+YzvT+XpfR9srS1sfvsrhIzb6DMzByxpyJ1hndRkAWgd8xkMmV\njwIN\r\n=Xgpi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSwjdRtOpM0oGu3LbNBFHSnZfpmEeMbDQ8X+TG3jdEwAIhAMN3up9I67X+IWbUcS718GSTsz4msGF0+Mk3iiKXxaXY"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.12_1560812981514_0.4517228934251456"},"_hasShrinkwrap":false},"1.0.13":{"name":"@architect/utils","version":"1.0.13","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"0fd1c818712f34417fbbbfb4db0a7d1f70971552","_id":"@architect/utils@1.0.13","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-546eEWccFpAdMWESocH+jMPeQ/FyUqtWqGikkVkHMR8qsgKAsyJvrNf8n+PLEUxBMsgRVnaxQWRelvX5xOdi+Q==","shasum":"8fb9bbebfe308ebecfb3b1eb49ce8fa6d15d5a08","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.13.tgz","fileCount":26,"unpackedSize":35677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDBijCRA9TVsSAnZWagAAlLkP/0Uc6sWdj6lZdiIH6H5B\nFh4ptPlzB32gvKjiSFQZta6eCk5P+58NFrblL6z1kJpOs5NbKCPpFB6899vP\nWdtK7c0kzCyw3Hyuq5OA9tWZEiARiLCAE8LJcCxhcqnguvGv2/0kP+tDhFqh\nWn+S5x0ofAhwzpkwHOdE2cvQnIVZiWiUeLqFBN7aX4ougtArrxuvWWvJ7K/B\nnrEG8KmoLkpu59VX4buLkhwF1GgHWu4WnHi8blsON+z8XbfRPXNI4p9VeUqc\n7XqV32hapGcMRZe6c/wtBx/go0m20Ve+h9ykZLWOkLG9r8hKOJ89NR3WnhH6\nj0mZpe3WguQUkNEubXkakLvguXJEgzE/dw7BO1xKIKUDoFRrjj4cQzUizOuh\noAJEdJkt+N8M5JVLVXTFicaHCkTL7icThrCej8/ajO4r+6zkZTDXsvySpD3d\nBu2FCSIZSY3XPUtf0u+Kdp5X/zgQB0A/GfGeUf9R7QuhK6qTHGVGCxuWW+Hg\n/pioedv6be8SKYL0Bh8Y42TNFeLqHiEFkZPK6KYMXyOf19YDYEsa4/8CBr9d\nJYWCLOBZE/RZObnPG78d0biN9hHh556vXay5ZiYUDLmv2QSwwA1lHr7iXCfP\n/QQwfTNjbK7GwHhM5gLMdFfMnyE9Z/8L/o80wZFVB86A8QqYsWo+tqOqQ/PV\nXRkx\r\n=/eWK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEBribxYs5Gr3eD29gO9Ggzea9ZymJJyKoJR0Iml4UdVAiEAqh38yAzVj2nYfRVRKoyYHYDG5V8taJ4TxoNTS/AQNgE="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.13_1561073826853_0.29524875485321966"},"_hasShrinkwrap":false},"1.0.14":{"name":"@architect/utils","version":"1.0.14","description":"Common utility functions","scripts":{"test":"tape test/*-test.js | tap-spec","lint":"eslint . --fix"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"8dba802b289f3adb54388a2c9d372e1f65bb0e20","_id":"@architect/utils@1.0.14","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8YJH4oxjGGXOPJP4DOkXssSo/1sBQsa0FM/qOjNw71OtC4HrGluNun5AzJ49/lS9Gb0fvHtrRDFBLyyFxWM6Aw==","shasum":"0fc0312ec40dcfcc3f5f6777098fdaada38f05d0","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.14.tgz","fileCount":26,"unpackedSize":35269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDGu9CRA9TVsSAnZWagAAY8kQAKITSfolr5ZmdCSP6PM1\nXrByeXgrKykdON5au3pT7AinVOfj3IKwYjyRtDHHp4oEhGy3c0BA3jeGp1Xa\nT/7rgSAvozckKQAaZ+aPco98bpy4186bERzXShvOOeUNK+voKZQTWszbDeBz\ngLtlTFbCWOY5JMU/t3P194+TejNQTM0n/Sw89y706V1PO/jZm+MKxJYOPLy7\nJp7GQbVKmVC7FI6bnCmiLV5LPYkAB5zrlWjvzYkbaSz5HR9TzitQTdUDbJ0U\n6bW2LIhXTbFqg41Ipw5kp80U7ulXoc/Boh339wIqIWDybAHINn7LOe8LrY7b\nSuqilkoXuCpT4eiR2AgHtpKcEZB6mXCHW4TZdaW4JR5UoNTtIOqU6wo38YEw\nN+s5HTKiSlEWiZhmLeTNC5ycVT5REf0lOnwueQsc5yoFGf4DbD9YJ5T2FsOd\nI2sI3rE/rZE5zsx1raaZuVIAoZgM7dvaIb3EMMZIkdt0ZF7zter+XBn10bHk\ncDRkhgxfTL8zTsU+weVx/6bDPKfnOPzuwnL73VeU2vY97JmWll4a5ofpsamY\nlzGelvtI65sg7+U+HDUfzZDFnp86hlNwh6Oyv4O0jLWY/ZR39DFk3fD17lCF\nJhfp4kdur0fFuEbVZSnenDDseUJED2+d/lIrsSjF6vJsFFS1AdKo3fdGEb9j\nZe7e\r\n=MvPT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrrbKooscpuUsIduEotOHQxiFLZXTwm77HHwBOA6hdFQIgWneADIJ/+iBKOjOgbH2cep6p9lXV82BxoiZSOFCdI7Y="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.14_1561095101039_0.802100737459944"},"_hasShrinkwrap":false},"1.0.15":{"name":"@architect/utils","version":"1.0.15","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"933de666bc378df9ad5049a37f32aa068819147c","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.0.15","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-l7FtNXv+JclAAc9vyWCfb1CU1FwV/Wlmf64V0XAJXmMX10lS3ymOGL1wIQkTzIUdYyXPpvEoDWkHPQOOdVJcow==","shasum":"7237e16ae63cf7635393c7d448ffb3c73e9e4826","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.15.tgz","fileCount":26,"unpackedSize":38035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHSBMCRA9TVsSAnZWagAAlAoP/AztKdKwE9c/Nj8SvbIB\nMYLG569CQS+z3TcLocAmmeh9o0/ttkeYBS8ZEUvoBxfyCfvE3hs34VymBmEO\nMCw7U1ZVbV/vjtkPK95xz651fdYiuAtX++Lf9REaACfPdwQNeT6ljMdEvs6z\neYDOJgWrLpLbPDJ5q/YjVmR0gE0+z9eU9cSH330Z3rJOYT3DgczaYDBPeUaj\nnf33d5nboQUEZoBJoCJtszYj5qVJYAj1dJJy/pDHaqjKMtzirv2SkC1o2v4w\nZyM2j4Nf1GHWDuY+Lywf8usUPE0Ro9FDq9nv5SKWMO5IQCn7Hi21ZV+CGhgk\nebPX4SFDErPAS36MC/YdH+/PId6B7qkbQ4/dKdv+kr1Tvw93j76bezlxX8vi\nwp3UkHOdJWDzPS60y1sg6QlpIBMEH8t5ojj/WGNdyPQSIOhiBgUA6cckmdsQ\n2WgF/4bBDho7pEEqxY2RJMI0dRs7/y+WRmi7r/j5om2SOBgvOiurqp3N6+dl\n9LIUOLPr85wVqdzYf2ykQ4uinqZD8983LNq86t0TtjGEvM+aCzw+7WPUTlwG\nre6OYvL8ASdvS6qAwo2gjNoNuUjn4ef7a309VibYHfVe35Z6mO4HB/vth7/7\ndW1847/QRDAwIFc2beTxROC6Y2YYeL7vH7h0PPp/1vFrXBfzkRhZI/AJ98Iz\nr313\r\n=OeKL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiKkgNF5AGGCuhoci+z7Mn5BBK0XzzIa0V1tT4wDgDtQIhAIgRgiLGGePm3jus7FlQp8/snG6QHkzeIUPkq/pZqs5g"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.15_1562189899179_0.0929326519938718"},"_hasShrinkwrap":false},"1.0.16":{"name":"@architect/utils","version":"1.0.16","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","chalk":"^2.4.2","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.10.2"},"gitHead":"f854e85d76b6a2f515b399d34d62cf6daa93b07a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.0.16","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-k3KmZPelaVINcBsc0E9grOVLZ+eyAuBftvfPgD+N+rHs6tWyD0dZ93V8j/tmyCgY7ihbxlBh5bz2gKYRLGBbNQ==","shasum":"cdc474852991e69a342ff3e8f05605130b30d0ff","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.0.16.tgz","fileCount":26,"unpackedSize":38078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHjk2CRA9TVsSAnZWagAAKQoP/jeYhYUydbUBktOm+XMB\nxD8TYrJY9AXGkG5zDgkl373lgVcy1MxSYymlM/4AyTkH6MvVcSGICRypwMuj\n2Nt/L14OXjivLOTE8KEUzALs6iNOrKlWqKQMalNDCm1kwaLP/oTrehWccilQ\nzgG2IZZiUh/u6PbGjQErjjER/ZXICXP181yAr3BXlmWYXd7IsITy6UeXOObs\n+XCUeESshrgDcSyG8n7fGAuHxdugqbqyDIMoK7vFcKBFdDUrQ2MWuZkD0NOL\nFwSZg+1vLTO/Tj8WzOve5oYUdoKSvngZ7vD0Eaz1ZGo+OMnliErk7pVRluIg\nLvns1SlcsQftIg3dI2cv3wpa2Fd2ETCPG5f1NoPzmgPPXGSVUL8g3mPV+OFa\nx59R3glhgGIp5N79IDhDI4tWbnvkKa6h6Lgoq3IxMnkaK8hkjg/AsbQqtc2L\n1vI/RJOz/xWUXxrmJiAR2rPdpX5blbiUoQE3LrbIFqLrgh1PI1wswrmW8peU\n0tJWNJ1iEPqzRfyCchbR0s+pOSzxCl1UvqGkGSmHH8K+rJ1cFts6K++911sA\noskXbtcuobw+LpGlz85haJhdQqoStKxfguUPVVTH+kefnUCGliwThFdTDmoa\nPLEwCmhhzqJWy3mgHf0RIFc8eKuhbpwEOimyREGiFSrGbpf3wbso9snX+p0R\nuOUv\r\n=h6uG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCurIbVBC+yQbUPsWmq/jUv3Cd7ns+DT7PjKmjUBTjkHgIgJSKYUljxjGddN3kjI82JMDZ+7PN0jEKbF3m/h6+ePVw="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.16_1562261813586_0.4488907126054953"},"_hasShrinkwrap":false},"1.1.0":{"name":"@architect/utils","version":"1.1.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","run-parallel":"^1.1.9"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"bcf149a8eb59d384b812745d794691b1d8d40c22","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.1.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-jwR4z5TSq9NxG4s/dM8kvneW2/o4qTyUxF0QTvYVWfx9Mq95RFGpu5Nzx3YXSt9QIgDOePjyf2xFIDWOCK7how==","shasum":"bc9a4fc67aef47020266a37671d401915e17ed02","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.1.0.tgz","fileCount":41,"unpackedSize":62659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ8IMCRA9TVsSAnZWagAAQAQP/0KciD49Sxc+j4edU3ad\nL1ObtXPMrGPEHdivk3MN0JJ/ZJ5ngXdwU5aUTyA+xbo9cfn5HKXOlF2ZFHJh\n8BS8h32jqHW9wuk2UouEdDsqq2vE4V7KgR/ev0POUcO/JJFvb2sI0eH99H3w\nJKI1lVznn2CFlpgngtFxRpgDv3LK2yYyAv3yalST631dupgSF1Z0p6fnp31P\nJ5pqSqqFtnYOmEhP2ANb+G2utfqO4/89G1XayExbspZipZTuMS675oihqOjW\nySLnKYMK0+H341wa8VHQlnOqs8i6FmOvCUDIg9xipCcnT00jlAb1sCa9wW2f\nUCBymOoAUBBur6P55vypD8oF1EGhou6Z+87r0erX92Z1M1vRaSICSym6zwRx\nHoq8YrtiFvFcEeREpJJ5HtYWv+1OCde/YIb9CE8I/V4OfQVtzL1e+yWVdHUh\nlImmqPafktCJyNqbUeIQ8jM1QCEcBiLaHJAR0Jll46asGj8uAv64ZbrgApbQ\nXDlAV7SaCJ+sqO+RFgr4nnQo3FxKVLqPrtxozedLPEy0L/o89BdfxcJiScbJ\ndyCU6sWBqPp0Qnmyu3SZTQqvkhZWMQmZ4LKX2EQoRNJNZ2V3SgQMAK27UKWN\nCIv3YpzJJbowqMXDa9O+qOkqZHoLNH6YV1BLP0GV61AazPS6JaY8vf9avREQ\nLUk4\r\n=8BvR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPzsZUudsdn9s7d7eytmj2rdWUW/ituAo/2XXs9mP5aQIhAJNBVOyHLH2EDfx/X0UEILwf6rvfJZFNt6WL9DBtJl/e"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"brianleroux","email":"b@brian.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.1.0_1562886667620_0.8546505418943557"},"_hasShrinkwrap":false},"1.2.0":{"name":"@architect/utils","version":"1.2.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"e3a75825114626d5b261a1ed63074d940e035bd8","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0jcn7OptP8JfXbp/7XUJ6/l4mD9dGDTPFyKNRd4kUlBIC2DDgkFYpFTdgU05yc1bfk+xHAnt3+yBzIKzZ84i6Q==","shasum":"aebaadb6d1fb340c068a0b9fac320d17a3372e29","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.0.tgz","fileCount":42,"unpackedSize":67659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLRshCRA9TVsSAnZWagAA10gP/ihYnw1fJ3EcsCaITAWO\n/8pkYMRGHGinSv+CUZ09O6JUPsj2M6HV275wDTxUgh9svbtQ56xqlJDdsCit\n6dNNqbK3X8FSooQzEAFWTOceqDLq8aZbE4uFz4O2JB9rs+rvieC3cyoUUZ6b\n1zhNc4JT4Rc0Ntjjl/P808Ci0/IPGNGYIaZwnsTIY6K+oXEdsyq6iOoHKqEz\n6q5EgxiBr0uRbSN2VbgV3+6Xolhu+9CbbCaW7cenHZMhRTF9NR4vFfc95i72\n7YFGywGJX7FR1Ue6O6UxY0TWIwPVhuxAJibnXLFjpa5HF9dZA0OPs3wLvK6L\nDb0teYV+0ifw0qMHcvZPav8vd17vnopeDQnx029up+D6LyCigQdEkkOXUwBF\niyWm7R5uBpjeASMZDtxDTnOiGGLZqTrjqG0DzAkO1gVrjMs3QuO7qvztMZQJ\nQnGvsTScTrSAXsVRtoz19ThVd5PGvoUoDlXWTodlFjMf7SjUy6t2UCfNmxRT\nIbZ0Xn5Da+qxd9jvTJnZ7VlkisJtjVBqi/zuT1hxc8EsKXHBQTSuSur/sLLw\nOvFvacEyx5CgWtNEEGk59CGps8eYL02RjuJkvaeuDdogB7gCkkGXPDBJU4Vp\nizI6ZD0VrKL9/nPYxfkpgH4c6ZTASv96nWCGgvEeVAVufgKTlFYuyTFnuv5F\neDNL\r\n=ODpi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4nJT17DdjhVp2pVjIh91UPEX8/PYdzdkQmK1yQCJExAiEA8KKAUQkgToSzen1zlcG7CLd5Yal/Zv7HoI0nBPi+bEo="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.0_1563237152591_0.9136527636469498"},"_hasShrinkwrap":false},"1.2.1":{"name":"@architect/utils","version":"1.2.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"db799aff1e9b6b7dc1a2e17f7c8c516001b37ff8","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-StwFrsDATis76svi8kzcxGxFFYXkppaqdQxXkisMq45tP/X2hs96BwTez/ADFq5nfZ5pUEjUWOvbSD8H4fgB5w==","shasum":"6f352ea077c77ba578fad37fba7a24b2d7e6e170","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.1.tgz","fileCount":42,"unpackedSize":68377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLUvGCRA9TVsSAnZWagAAhakP/38h0eZ4WQWkd/hQ7ItL\nDBBWayVfjYo4eg+nUDhQfIEXq7BCIA9hE67ZleOxx+SX3kUdT3lkNMRWVWGZ\nIfxQ0iWSsbBCaOQd0CfjOH3g800HmsJkyV5n31kojxzEMDD6eTwfUXSq5Y2V\nsMVQ6/qytQeZDW5QKInhfGLds/zZdHM1zau6tbZ3zutLyjdcrJL4m9BL1Smb\nzMDuaaaljxZcdUZk8+Nwh4V7E9qdrhoMLnosYZ7SbBgtFTU3lUStkm+Yuv8J\nHRuYvcLXfdLQLhEJx6l6HAGm8fJioaA8Uefw5Pwgea6zI5a5nax7mqVHuZO/\nOkVyZOroNq7Oye+xW2XDUiLxdNT8qhDD0MDc3Nw0T9jipXMCeROihjUEUizk\nhdu0Qe3cHfeIE4QblLqvarUjxDdQnIqzMwujTwBtfdBUP+j2x9lEEeEeCTGO\nWmy3NivcC2wn/6EhizkSVbh0CawDz4TukMchXTq5C9EsGQxFHm8jSx+b3XEZ\nqIOEmcU7HCJOFkp/Qdijm19Fim29f40BGtXZui2DWQk6uxtY8Gx2EmZS0bjV\nRJW4oEM5ldtd1dHQ+FTs+W2TpBOy/WGvH28Pqe9sd6hU7373bhJ54taYjEsv\nJL8Z02Ma7K2la3zvTO4nrX/dyH8dgdE0Qb6Xl+tWubsJEOE2FxBCXr4Vc8VA\nYb2G\r\n=SnK+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiKe8D2k1yC6JEqoE1OdowBg5DwPQspjt83npWjRFLWAiEAm5oNFHbW6VN6HlX+2UFEXhc3Nt41tntiyZwu0ohQluw="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.1_1563249605860_0.46382201956283353"},"_hasShrinkwrap":false},"1.2.2":{"name":"@architect/utils","version":"1.2.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"533c3b8741965a4082088d54893d948d83729244","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-a81mikjtqDRBpX7+1T4duaaq6wQllrNFXcvWRjtHEBSXMM5AZL2eg1BrNSQFMLQAM46iJmvhtoB06ndU0xMefQ==","shasum":"b24de17d23dc3c0d2429395703763b419f6a620e","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.2.tgz","fileCount":43,"unpackedSize":68734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLV2VCRA9TVsSAnZWagAAxZYP/j8euqj52V9Ek0szyMCl\njRolVa9FTTd6Gxir0oocVf3sOahWkNztr4k5otNEyz4WkYjiZ+8EUi1DdzE0\n8FjgErN0bcmAo53u3jVsm6OJ4sh0l6ops4my7yCKYtwcg8ebOiHeux+AiCqd\n/NQNRq6tBpfB6N5ddFnEFGKNWLH/+HnNh4tOs5ZBWv0qmgRgTzpJ46vaOGR/\nvN7LWxh0mcMrMYW9DAJQSke4Jac7LD8QrWY+oFHuhV9UKEfoi50Qp+Pzv3R+\nACiesqmP1WMyQ3FLU7ycCh5t1q6UHL9q+xjtvhlufHhDOgtlTFvpc/iiDxVs\nv4qWq3BkU9yf+jxXLGoY7xBNnZrzhLTAugKt2FrblzzVibrq2KfT3DUdlopR\nM4WKhEWYXG0PJtWS+DkDfBSqCshKk1j4NNZ/XB1i79Y15v7SLdt8rHqmd8Iu\nFbg/kU4dqz1K2XP114OjiWlpfGR06A1sx6qpfwb151q/1HnpKfakBpwEzaP3\nGDzY9W5FA+/UN3jhwfiJA7fxO9JQn1dWWoTv4AFWF5sShVuLywYmfhZRPSk2\n6TxcmoffNKg4seuzbC8sLDm/10KVEDQ8Rb1eqZ3ajEMzAk0dbRl338Vhs6Ud\nd/0m4/bsXdvK5+Lxolnsv7QnaKNNowNy6TMGH2TlDseKOueF66LCBbt28gjh\n85gv\r\n=2eDh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN52XUYOFY7oneB9vaK6AKx7kq/TlWBUvNKhii0owXvQIgeLh6hXtbnscqKjiVOS+uTlAB6xXXyyo47gZNpkBLd/Q="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.2_1563254164672_0.12173712675176906"},"_hasShrinkwrap":false},"1.2.3":{"name":"@architect/utils","version":"1.2.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"fc4d4445018a34c7f645e5adadfd220c3360c067","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.3","_nodeVersion":"10.15.3","_npmVersion":"6.10.1","dist":{"integrity":"sha512-ZZKjoCiSxXd9gqjyQ3xIK0AQb+WiCv/84DAuyit1RFHTs8EDxd4sfSmqoSZE+S1voBYmw7nL/XKc7TkujhVjJQ==","shasum":"2b443fa899736c3708cbcc527f0a299174cd0cc7","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.3.tgz","fileCount":44,"unpackedSize":69494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN4bxCRA9TVsSAnZWagAAY/8P/1H3mv2Yal8CXKCcjVjj\nDm942u1LI9YsGN4Q1w4mSdSEeHs3yY1/BBmMrQmmhcdCDfV1/G3Nefy5YAvX\nkKPgiMkw8pProAjzOE3xWtZ8JVh4lKAEaABsoL8GdMdXxqxszhoQVrI2631G\nW7L1Q7VicblRG/RTel93Fk7NbEM6G2VH/kJ8U1pkDJxmMWVDKUpFXmAHNlUp\nvc/Ffk1lll13HaaIWrh3Mx5mGpkdpgcMbmVmTSITKmIXl5frJwQNyBBU/8YS\nZk5xuG1mw8ZQVgERuA6jWl0c8F/qxRT44L+t4KlOjBABqwC2W3vnkeu7zwgO\nRpg3qSH9GlpREYCSeKO24OTT5aSnk28OvY7cvqbbbphOZo0FEfC5IfHxwqgR\nH/eJvBXBk1QHPZAQjQYZumO6T6rrmH4xRvFDtIpMZ+kPf4owFjirMHj7grdh\nhHfGBVBSpfSdwddhC5Qsu/q8qevNT7ixgfa6EU+ucNDPqIsBzpkMBEt9hRbU\nqm4h1C7jwvoeyFu+4P/T8jE6h3+K6xyTePO2o0167ll2lnQT4C3VCsV/LudS\nVuK/tzpd3siPH1PQfrtVSPmWarb4wNoB8xBFggOhVNlH4e7nnf3TSRzG1YbU\nkyoteQUTBoYxSDaqdYAtnJjrr1fe082FCMzdnk6GVIPkFuUQ1IN84Q0V6/sW\nmS7D\r\n=Qxyy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGOdeJ698Os/jGqHgQk9g+1pB2sYGS3BF7hb2+kHMoiAiBNEwU1+HWyAAVEDnlm3AqoC8bzIQ33lHYaIl7KggZZ8A=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.3_1563920112827_0.5823634885997282"},"_hasShrinkwrap":false},"1.2.4":{"name":"@architect/utils","version":"1.2.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"dcd4d354870d4fd1df132890c01a8a8d01f6a2e7","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.4","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-DrfafMj1kHF/4mB5u3RGMTRZ7fZeGCGk4E5VUksIf8Ts4lx/Qa5eHd/qy5rdSJ7mYQlS9TkdLR08LybxGijvlA==","shasum":"37a99f1854c81250226155f8edb0bf032a6896fc","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.4.tgz","fileCount":49,"unpackedSize":75842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdT0pnCRA9TVsSAnZWagAAsT0P/A2M8/zWVrI7JjwAFyK+\ntGji4c+SI4WIh2mdJCiSfS8CMrj2NQJCqs3d5CLItnBs4p+52ocHTGglB67S\nKP1tKzM1MYDmUr8hMI6YniQ6tcyKdUq+bBNQhe1aKQEG8teQjAewvCJCC6aP\nQjvnBewtnZyVTRi7bhBQZVf5QrjMNUyA+d7McvsguKZLYj+3JoFyVoFIgKFD\nPzgQbo+5RkRaBacLws9cAMv/pocNTVpuQUPs+DcE1+lIsNEaKZuAoYud6MtX\nXae7sZ/CKkE6BekzBQsZl7ZhLeNACmZpBBMe/uE/H24tCRcBTruJfWMDYHp+\ngxKJKIFM/DJN5Rp2V0pbORrs+yhRctSjPx1eruTwrIyUSB6YJKtcPP2LdqTL\ngXSlq2iO1dWjJHYi0Pm2RLfMpPVc382SBuJAaIgKZiP+SQsvmjArXLyzovhe\n/CrSnje0Xljd+YMgroFTb7MWLTc650xVnktWpPmUuR000DR8apR+XCVZLDfq\nACOfTj1b2GPfAZPsQulU4Oyqt/ZdQwIkq/SzZl02ErT6ZGaJ0PCbsXI1YvIX\nciBizTR5ilaEoZf5wFPPF/WgNiierJWKaAV8ET7QRR9oE2XgQaqJnmrBIQA9\nF/ZGKd2CDtGZjdMwdiJvaHW6FdRuRY/2oqIIc1mxLk+g1+hCBQWpf1cf0kpf\nMCik\r\n=vdFw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC44u8Yjc0GOi5ZNnyWBzjQCr1Wwn6d6Z4yqW+g1tABjgIhAIlger1J+APsYVeFWlag8uS08rXWss4+rM5LKlu4Eqi6"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.4_1565477478042_0.4177252958547444"},"_hasShrinkwrap":false},"1.2.5":{"name":"@architect/utils","version":"1.2.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.0","sinon":"^7.3.2","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"367e7195f37e66f160cdaa82c88bea34a92e5200","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.5","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-xn375whrzeouEEQR1wwzjKXi6E5aU5BGUfHS3iBqQTBdjM74wv2e2tMTAIwpdKH+0bAfNs+KnMCkCIxwdFz/qQ==","shasum":"bb2dbf428dc6f599237019b689410bef0628110b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.5.tgz","fileCount":50,"unpackedSize":76833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUeZiCRA9TVsSAnZWagAAQuMQAKMF9jNb5wI57d9RIu0Z\nxla18zHl+iwds+ECIyi794QvRmBt2IFYfR/29wSMNmoRH0kFX3Wc4c0f/jwq\nPixPhM4GRYZNn2ke23XjJVyrBdNSsYNdlSwLvg+qbIr1PXnCxWmbW1VNKP8D\nsqNVSdwVKxUPbdXokX3wPuSpSSyZ+jictK89bJEmGKv2H026VROTixNZERmu\nF6oED8xOvn8FULvJTAzwjALHUzJHqd9haYQzgL5XCYR+zO8x6b7UhCvtlE2x\nw6507au8C0h3G0XZo7ZJ3gt4XEhSUnFlDned3DQXwF3YuQ/oGr9O0yX+++F7\nI/OYLt2KPsNdkXQWsVT1vWD271i9qbZFnEGSy77g6jBoiWJui+jnJOYYXp32\ns6fD/lhX8sL1LAp1+713nn9YlJhGQiAOJ7MHgmesl4RWLW+FNyVOoeNvMf1i\njnvEK28oGgN1GU+jsL5Un48HGAQUyR5u95RGEChugCQm7lMwvmB12w416ssM\njJI+hN8EaTtxHR3OZRL9NcDW19U8njs+KzbyAlh/fVyLPubBimdP/djAh81i\nN4zDJUa3jE5lDDaDarWUmE6fXIf8nCRnNUr4q/+j+T5TxBhko2cRxh2ieeW2\nYqeiHSZvjT4bhbgfx7jd75ru1JwyJ3Nyaq7wkhU7SocF52FcW0t6PDFKw816\nBCcg\r\n=PrNr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG98Lo8RkSPlWsCD2KkQj31h7f3lccCwyJhUxdTL6hmmAiAumuV6sX/yY/hSlxhwW9tvWuOr6TbCqyA3psNNdS48vw=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.5_1565648482137_0.0421283915269377"},"_hasShrinkwrap":false},"1.2.6":{"name":"@architect/utils","version":"1.2.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"84526ee44bcee8dbfafd5ab7fd598273badbe9dd","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.6","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-EYtmuxwJnS5RVoxHtsrqed9wwV2mV+T45+mXdt0V0I4unOq/RulrNRKfYL+x/eA6q7jkv6QSJHX8yApP85D4wQ==","shasum":"7832ae83286c06e4430fe8169ad12a725805d142","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.6.tgz","fileCount":50,"unpackedSize":76951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUklACRA9TVsSAnZWagAASYkP/2LGms1ho8DXUCvl4jrj\nGTLXZnCR3nBqMl3oa/f2GcYUvlKSz09/pUZNQ1rXwFWD2p6U7W6AwgjbO7xj\n+Zi1AZRM1u778oZp5Oni77JcDMyBVr7sDMOMBMymOvXUSkfCnEo7GVPR7+kC\nh3nf2h5DdzENeExw+8aIGW9FaIizIbtk5JMw5WpajskRFYeteV3UdUNQcTWY\nX5byELSFZ8E80XUugPbCGAoBNy8R29kSqOvxAB+wYwZUo1wAH8mY1IlV45ll\nAZ10dAkZfO1RL8DXbuMiV9I8kEA9K+0uecgKaDyoly2cMjPnd+gSg+5dQwNi\nd4FfJZYCP+78v2vgW+R7A+w0FULi+TpYIYv9Tf7J2QT/tkYfNnjgeDeRknjg\n7Kcxbm7U1AkipexVajsxGINd+C86KBThqZqAkRZ2s7ZlkvBVvsE8j5sDqIZl\nE6Nv6DTxXO9SbQttfDmxdKCjeDjh/nMaVEhV1IOwmBjFr9yceepRCLa/tWly\nR0JAnKIWxMScsLWsz8QYv9TFR3t+h2YzIc0283mHTelbyHiix0dcK+hiLlah\n0BEURZ8GAaXycNpu0eVA+iDGg+4YFkMx/w/Jaz+5uKkqTQOSh2Gx7feBobMq\nMI7oIqNfwhAJbULlhPgcm5siESh5DyXfbIiGgS74HpFRFVB2KsfNTxux7wOM\nHcOr\r\n=UziU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc0NIj4YkLmn0yEi2ujDgr7X8se0E2PZr/6t4q9lz9OwIgY8ArQDIMS09Hi0moOymej50PICVmJur8MZwdyzJaRq8="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.6_1565673791838_0.7231706365244297"},"_hasShrinkwrap":false},"1.2.7":{"name":"@architect/utils","version":"1.2.7","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"78b2186fceaa7702badf49bdc2f809231bcfb421","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.2.7","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-M9mhRvrlTW3WRlnUT8jqAI33HXV9asmloI8Lp9JEc470JqZLx7gJEyG1nPoEcJJi8BJMC23G5Bqs25aOO+u9+g==","shasum":"c1794dfa8ffb392e1f9e62e35085eb051ef4c3fc","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.2.7.tgz","fileCount":50,"unpackedSize":78185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdU3UNCRA9TVsSAnZWagAAbO8QAJlZHIdpbambsO5LB3UB\nXNrZW8gVVXigKrzMvJpdjjyt0FuX60nK/HVkdjAlWL6v75QQ7Nr9qQPgen9b\nTCa/raRro1AyxX2THX7qjLdU/+VGk9bpXnutEp5ndCFLVfJH0YRy8OFatyuN\na4cv62Vhqu1ey34srEQ8hio7+vWLtfBMRPEHZQwzCuT9Qj8kFJbmzVHmJCLu\nchcuZ8+EGlxD2QPNgE7UQvkxgOGQoKFB2gyQTS3wMwV4zZZAbeDVtHAW1eUd\n1MengpvwYfCmWmmyOY8f9p7MZwnyj8gcD9jz2DDpIoQupp7nJyLnBP3rVvF2\ndm1OSppdngtPadYipjtai/tFebOR3q4dKnpSHooi5RK1rWJ7PMt5Oe10z0l2\nKVFbm7vCNY5ZRAOlGN6le0gji2rnPAUOxo4KVzFsPgFM9tFli2GMS/SKO5OW\nRiQBsdRjWXTc/qixx41v7dBb+7W2gSbZavBO18+pVdAFBkZBUg3Ki5GLHwCG\nXOgxxiddiTTzT6efQT/BRYeEsKZw3DBknZ1/S9ghVKHwhLx5Pq8Pzx2vYmay\nevmkXhDc3tAZ83mDebVrow+DQtt59xfaVoFECIFi/huGFJMTe+JhCAIjEdsQ\nei1BMaG9R+GQd0Gj1mCndveWLB8zHyvoZyoiGZ0AUTVny0ZSyuQLgdjcQCli\n03sm\r\n=zflL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAig/gvyRi+n7hB5r+TvdtBeppiYdphnDQ/myaJmFS1nAiBMrZpYOLon+SjUS8ToZs5it8FhB18SJu1WsE/Z/G4vLA=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.7_1565750540898_0.5664986741335234"},"_hasShrinkwrap":false},"1.3.0":{"name":"@architect/utils","version":"1.3.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"4badd100c9f8add504399097bb02da97d62d3a0c","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.0","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-sqctOv2t1IJIMF2Ym6yab3wbXZz9rf6AIygsy1XItQ9H84o1Kuwzhq8CVDr/McicbTXfI9HLjdEQfMQvgp4rCQ==","shasum":"0f3cf4125508cf4b48a7010e939b334d99a46682","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.0.tgz","fileCount":47,"unpackedSize":80077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVdQbCRA9TVsSAnZWagAAihYP/ju47D2pQXCAKGSGRN+2\naGDLnO9SgobUmMuStTH4KaxubsjGgIgidLwnoDzvfQsxrDXZlU4tU7vttRFm\nNunLQ6xJcdHIdefUMCx/Xdq64DKBnwPda0CKZNuq5jYhVO8R1kCXVLyZ7OvE\nJR7K7QrxqQqdUduLjgWnpSgPVkrpLxsiXfM+TK0Tm9cJ5EDSbXk6AlJeV3K4\nibtGwwIV0HAd5g+UYszMNcQKQ29FZIJe62Ga28tDipb2+awr2chU5ycvgBvR\nuyuxMKxkqMPGM1c5QcTJW9MgaCx41z7Ll/TyfDUM+iym23vi4ntyLF3tUheJ\nLVXSaRLBhQ+0gxCHE8OQtW2kY8OfrB2dgimUfhj/DX0YOxZcUsjlS46PSOWq\n+Gi+tZu6MKURF1bdwJwDsD9WdFWvZy1cFniZfYCVTE8yrvqN4l9uwlTPcNEM\nnDFMcnCEJv09pW65RkenIItfTCeXdrRcX9da/TzkgkgzRTvZoSrAsYQ4pi7a\n26ySgOGJRO87wE9HxD5VyswFcMAcM6BcFtWUNafS4f5WKUrvE8oDcAPBO13v\nd74aJkUqMMQc3My5XC/5k6a4LOB4nQHqXyhdCxs75eW6vI6Aj/MQ0PQb7C9z\nYZFJtsDbDDQhly1dgV530blVV+OnD8DEmP7vZ2nyIZbC1Upr7BYkvJNF8LJk\nUeap\r\n=UGW6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEnMXUjJ/v/pzjWoFMwxTfjHZfCvL2aEgy3Tp3B3Sj9UAiB7yxU3mehRHtiB17qJ+PHMblGaDrnxxer5pm+w4Y0Gkg=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.0_1565905946640_0.10913658849949859"},"_hasShrinkwrap":false},"1.3.1":{"name":"@architect/utils","version":"1.3.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"6d8a560dbcc8dabc19cba016bc202fca97becfbe","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-7Y4mRWaeCImvyACW3SmTuIilEbRtAjvgqFAvsjKdv3b3jN/upU/brqWRYKt+TGXG7bGsfSDnXRcKTcHk5ATIJg==","shasum":"406e2efe2768cec6ae444a8a04f99ea484ffe693","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.1.tgz","fileCount":47,"unpackedSize":80541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWXJRCRA9TVsSAnZWagAAm7cP/iOspbZplN0kbo/3gS3q\nvB8x9b7EL5Tiq7sCGosvH/dWl7jTaVmqSbYIMkyazRjbxAzwh7vs9BoDrDfC\neBJ4XEH9wVr/LA1Fjwy38gy79ApU3tGkKpboKoERAK41gf0KypavXpPYiXLp\nUl7uP/+qAdOpWO6rNB9IMv5lpAkVbG+VIIaXGPHijgpKhrVkAMfx60qTOrjj\n+0+IJRmbC0jWpWTOqT/2lcI77PM26rCtsTMSEImt09ob/u0hwG3/8wNNDgzv\n41bvhQnOpuMIXD8CZzESVD8AwQ6i855ONtAD56W3XAl1LEQMrKCTSOwLmqqM\nosfl41qVDhIOBKMKUSx40I3YMFtGRKPvJ3noxgqZufTPTQ6J5K6jhH5/UdM1\nk3TbwRJGfg1FGlB98KZOceHNhH/fwGNRJ1LGA73DTyM6kjybEGkdWbf++WsW\nFkAeZ25C4BijYz/HUwLM7fvjCkH40TGdl/tZeC/lOvKWlNVv2yjkVm6GuWPA\nhMde8weKh6zKMw1752PRbRSeTYtaIjCBQq3hQkoBXIuPKsb67XJT145e2NsS\nwvH8FWgewv6U+BxAmXJxAuxrDwLY7Y5Uo4/WDdyUC5Bl+WIvMxebpUuJR7RD\nJxWFhcTik+/hzTpiDU4dm0yCOYUTxbiYgn0r2TG/d1PjVUiRb32JVpBobonN\n/YUH\r\n=R3vo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoynAMgqEvyYSGVmebbfsa9KWZiQ66zrGyIgQAsxKPJAIgVsJjuoGbdEPP42og0g7Zkn9cEsRhstElH78zyG5RNls="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.1_1566143057116_0.42741995678978517"},"_hasShrinkwrap":false},"1.3.2":{"name":"@architect/utils","version":"1.3.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"6598d68ea0bcd4acd4b3168c3b443abcebc9bce1","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.2","_nodeVersion":"10.15.3","_npmVersion":"6.10.3","dist":{"integrity":"sha512-DXY2oPmHvOagUXPUB6/9SYEUImP93+tdwUhCaFCBAGcLO+FQ82V/ReuzPGmCQSUFfpkgOWKxzQnw3iPh2jzOAA==","shasum":"cb10d54456eef13ca8a75ef7b0588125025eafe7","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.2.tgz","fileCount":47,"unpackedSize":80525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWiI4CRA9TVsSAnZWagAAJicP/R5aHwFMOHMFySNE56JL\n5EB8Am/EZa0T8tqwLGOjkefkpnvmEUEOa3XZtnPgGKCFZ9nVBSkGDowmxzUj\nhG0qPYO/qq2QI+S3GAaeBho/fPUz/ilHgOWwTZhxCLa9kHyVlqN99CA2WJPZ\nMXk4ZZ7b+DMpTBEaWfl9ApELLUc0TOdvgQD88bY3zjBL2Mxz4eeMJVo7kDFV\nNML1ge+b8MwIKi2+QpX9f/qWl4AdYcmYW1sGAa6YpJqgrI8Ar1W6r6JCUVqw\nklVSARdWl5007eoKdRUzNo3KIaSr5qIPhly41Sbdl9DUFiwZhLuEeXKI7d92\nR+IP8rp41vpF8MzKM66sjcrrIqDw3eO9o8rz8KzSkcpREPfM03JFuPUuTy6b\nPjCbTSOJTKqSIOMsmcK0avcWF9CyfGB7WPNty8IwNtQM116AN0TwOYAaih40\n8nwAKjEuqFk5N1w2Ja9rMMaeWZOoyfW7lGW4DP5l6kJ7k7+3cVJa+bxwJ71G\nzziDhJ45xAuQ68UhzC8I6VtvOzLE6jl1qog+4xA131y2+F0eUj6pB5X0s7+l\nS9s0neoD2bcGP1U5vCtDiXY123FnTX8J8SSOTNz7MxLH08HjposWwntnabWS\nQ8pqdEMFYd77ZahHSC305friHzmUCJsik8+KKSk36Cpzt0UGhpgHlnVDtW8r\n7baa\r\n=gsbQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDcFiLa5A28zcifpRKhsGfBwEur/BJ48eyW0k5QTG8kAiAKvmY8UoXHnNKOmeyRJOuI0LRz7bqOjrovcLP6/joXdg=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.2_1566188087898_0.4197974549534633"},"_hasShrinkwrap":false},"1.3.3-RC.1":{"name":"@architect/utils","version":"1.3.3-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"readme":"# `@architect/utils` [![Travis Build Status](https://travis-ci.com/architect/utils.svg?branch=master)](https://travis-ci.com/architect/utils) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/dooe6ku7k0x83bud/branch/master?svg=true)](https://ci.appveyor.com/project/ArchitectCI/utils/branch/master) [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils)\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.init(callback)`\n\nInitializes an Architect project directory structure based on contents read from an Architect project manifest.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","gitHead":"eb974cd52c3fc0f8903add4e74c8c7c950c83e8a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.3-RC.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.3","dist":{"integrity":"sha512-nS3GAOuak0yaWLPx2gpjw9nLz5dvs1JQYhQUbWl5lbFwb5z2ldSNdCUsL2eDBIfbC597P+RCvbAD6B4DhieRUg==","shasum":"307f4dd351dd081293965a798274edff4b5f1eed","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.3-RC.1.tgz","fileCount":47,"unpackedSize":85291,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZzb9CRA9TVsSAnZWagAAGl8P/AvR3aZ130fVyMhxV0b1\npVHJG0eLLK+mZVHglI02BXigtvZOvtLgp+W5kkr7si8JYc0v51yLAmhOXLs6\nDGJtKdpqJXfUFjAUvVmowKCf30/NqKjjMgThGxVrvgatXNmc0GU2ZT0ecKzo\nymvbayVQ4R0owlksESV14zS+EqqMhGju1e/BgBtyzonYlAPtqWCa+g0KX0dw\n5yy6FKkfswHNVOS9444m6XUAbqxSHfyS+v0N9aekGnqcWB0SC1zYfyZOt9dg\nrIjcfZ+C+bE8jjdfy7vTphPzjuHpDvMvfVTn6lCtunRm1wml/sKcsJDYf/ux\nQzuQEGcEr2D8zb6oYpPCnkieHI2lPyVTnRMcgUvmM+qBZCzyXmxUZzXkeuaz\n78SbImYVhB8sHCFmJj2xMEOc1Z9KzqPhVQHj5khNSmE6tCBaP11WZJJ8QwPD\n6Pn3WDPi6WejqLUOXggTdrGcnH0c34mstnPPVPJ17SWDTp+JS5dmXbTM5X1P\nMIf1lvR+Jhg6b4OBuNWq+OIFN3pAUt3YJ3DZJV0LSgYwt2cTBK2IlOtnDKEG\nxlGmOK2weqBDc9xKFaLIvH2OroJHhV2m/3dwKQUK6oYrgJ7srsSD02zrrE6Z\n+/Vk34eK1hFyY3MfyZjTlYOsugm9A+NQLJsFXV3NlxSkctY2dsP53CGt55TY\ndMSl\r\n=Gj/I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyqOhuIKTWwUkbFZmodph4sfg4Z+NVUn+sRSvIm1j6KQIhALZAP4q/fmYRm8Ot7OFAQDI34TRU/SR0pEn+xJmp/M7G"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.3-RC.1_1567045372720_0.23005450009424488"},"_hasShrinkwrap":false},"1.3.3":{"name":"@architect/utils","version":"1.3.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"29b89f6fdc568aefcd5c66fdb2c3c8ca3828b157","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.3","_nodeVersion":"10.15.3","_npmVersion":"6.10.3","dist":{"integrity":"sha512-Bx6aU+FoovMmtpvr5ZKdAAeQV0iYay+NoqObcVG50ddv4CPP6/3B8BNbgUmKxMsFGusEnszkLCf+Aq3EAzwCnQ==","shasum":"381147c14b94bb99490bf652efde4d12613d6d51","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.3.tgz","fileCount":47,"unpackedSize":85286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZzp8CRA9TVsSAnZWagAAJEMP/jXGVzLnF6od9RV+Ne2I\nxa3xFwKjY2xghWfBpEzpGtobmHhq6nY3CDWkpnv80PqlpUjAdCXvIFXlkYec\nyaK29MIMkL/NtPbU3SrN96vTY2RfT9kz8ZsNK6GuZQuMZNOCA7GIlLvBqnao\n/WcuayihiaSt5+jHtUlL861mwolBKldR+NzbxFLHtaHQ1uuJilDR+7fag4a7\ntZL/ZtAILIBbeGnrR+9AW5RONOdZrUvdyFHBWoipHSGRGHeeadkQkjYgHRG5\ndsO63+sbXqgiiKgLm93KnDOI6q7vzthw+CDV5pU8vz+kAH9O+Z0oDp65Oxyi\nra9f0LgJKUNGdbg8jJqDojs20s+FrW1g7zAb777cq75l/HWDb2UkqeYUlwkL\nUTBL4jHm18dYGD3ecTxpclZUvC1sa0KlV6r4ACNKMEkyN5I1nD3lXunPW2PD\ne52OmmRHmQYbmVkT/ZHY2BGM58b420JpK1OVcNN5mfvLvaDkVWL/yq4hxhf2\nrcLHrpd+uSAkTJh1pLm5WkoHVOFhlVBKrO8B5RxNYFnhQUvMieVDYcwnuvCb\najwQ9E0f9YLShtCyx1AjLUlVeUziE84b+xRDMzfhK3sBLSqyeOTaIJTLUajM\nP5/CST3TjO5VW2yHeIftUy5g4K7MWmCo1Z/Rysm1NQe/VeZITXXJeC2Z7ufv\nR3R0\r\n=J5+K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHeMHwb+g2ku4cHCijnM/iDUUAaF+w5AjSG+T0P3bjHpAiBU8opVcv596rzwQOulpWaCmD20bKOtTNPG0Pfz/MEnnw=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.3_1567046268141_0.21556048562150543"},"_hasShrinkwrap":false},"1.3.4-RC.1":{"name":"@architect/utils","version":"1.3.4-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"readme":"# `@architect/utils` [![Travis Build Status](https://travis-ci.com/architect/utils.svg?branch=master)](https://travis-ci.com/architect/utils) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/dooe6ku7k0x83bud/branch/master?svg=true)](https://ci.appveyor.com/project/ArchitectCI/utils/branch/master) [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils)\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.init(callback)`\n\nInitializes an Architect project directory structure based on contents read from an Architect project manifest.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","gitHead":"87b880b8d16bee8f9a3eb29bedfa73b899db8e59","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.4-RC.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-CnYlhD44YHok0g03mKwPFFrYaensegJDXQIsf/DGUPoBgOkT4hHS4q6Def7A8X099cOZU+Iwl51QJWdvlkYd+g==","shasum":"06d70c0d680dedd34248a75ed91b6d7ce8cf1db1","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.4-RC.1.tgz","fileCount":47,"unpackedSize":86303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddboPCRA9TVsSAnZWagAAD4MQAJdcj71CJXSJ7KnDtCRW\nVPHUPm2vx04q/KN2qO2xlcaqE+upbnC5UXpLsDv5UtJH7otASIbIgyu1oxzt\nnnA266LQ99hIR7BLVKRriD0hrJSyBi6C60Vb/LVCgDMOdRqXvKRQIq1ZC9NX\ny2YhfqCGKl4kXpGlp7hozxfm2pFHLS6nAAKDCjmayzqBdsqaTkZYHYSV6akv\nXSNIQQAzKW8uIgqLlPdMGmxZ0wZxbo1yBWHnMC5VBfqLq1e+XUGvhMI0rOaG\nbio6ricJ0pD3TB4z8Mzj6ZH2RHHVh4OfwDnvA+mIRtaQcDZpT5Nosdksouzg\ndaPvMR1wNEHPyw9Lqn7S42BwBPUCtVjw+X8Z8IV8DL52U3TvZplkLxdotpKk\n374T1ExpnkCRb8K1TROZ/HKXVcMUT2w011dj4YX6MQsbZdilW0Lg+g3+ZSUc\nk2exymtDBE3ttkKwKzqlsnN1sm+ha1wccr63D6sko735+MvkLHMMKm3GIWIk\nQQI5id3+1oK1oG1P7DJC76X1mPc9nCO0x45Bv/hKFoNhzuqawnpkTJdIoa8O\nbazikap5ZPScFS+UTA5lJg7uixFqz9g9xjxLlufOOl/yrdYfAizrWw863saT\nox6eWZcW0RkTrjNnxBJr3I/E7i1pb+zrIrS/ecP0HlzD0jeZ2JjELSF4m9HP\nBR0o\r\n=URlL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJ/HZ9Btb8PkqEDJzphLapKO4jmGFNYyZTvOaboSbzDAIhAIo7mq3znTZpRgFvRq1Kll0w/DohjhJheVxdEHZYmVAj"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.4-RC.1_1567996430861_0.5205199648138377"},"_hasShrinkwrap":false},"1.3.4":{"name":"@architect/utils","version":"1.3.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"5099fd4500bab3a486ed4c9068c86958efaf7d9f","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.4","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-RCof8YYoolOAdo5pRbalb0FOGnir1hHOB1yebGkp3RRGtfCbYdxK4lw3aTGhGDL1ApqqVbr96SIggt5rdBEB5w==","shasum":"679526821dc49d4d6d2bf4870bc938284f84b4ac","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.4.tgz","fileCount":47,"unpackedSize":86298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddbyjCRA9TVsSAnZWagAAqJgP/01dpI9tZn6APBdVpQUL\nz/PhbUEmIhma4M/1ZbjLHLaR7sTHB2a7A/3fVSCNK6pmHzoQDOO6HHBDLEAu\nrDgYGioCML2adb5aOa5zsNbGFhKHsPT/9r+9dms2oRoBxK+jm1Cxj6zbIG2O\nbOfaYGWf45a5SCc/xrXFFzuieqI/X53187V70km8Q7ASAUUbFwuU570O0Xoi\nyl8TEm1uzGkUiY+vPTFPMCfV35uUKow2VN8nxfZ/0GV73VabS6VnMAFGtH/2\nB+NDqX3EzVxpqMzXpQzsbxn1rbQjYHjMiV2KR3rV/pxAgPM+HYfld5LhELaS\n5ZstKylRHwhlEGvf+RhL+XB7vZyCaKOLwh/aspNUvlfRyy7SlDtc+RPe6l+/\ntt4BO9lkaP5UzFWkzYlFA/55HwUlD/yIHrMRykjZKnvshTomCUjzP2M69a0g\ngvOkZDqIabEYD1fLJ24QSiLxxpGjvX6BZC4RnUrI+R4mwZ/oho/Ldb6KJ9sv\niqsexAS69PC3EYELWWe7MMAY65SLM8DYe95FwKsXTad1xG7kS4DG03OhVkXg\nRKNtuEYjiqGRaSTW2rRcn2GCflxiJ0g1J3sgdQsAcQnbKIC/krjpEHn4BJ4Q\nyDQWZoX+Ez7RpMWgS8HI/1BE6BbFdtd79+hZco7cAWLFbgQtKUSd98Oix9S8\nxAZz\r\n=MBBo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIArbUEA35wwmbKeO3vbNJ0qoz2A5oiC7ShpKQx2xZ2DTAiEAmoEXdfkRGivTHSSnSLrddUyjCIk8gHdJrIjctOjOw1A="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.4_1567997090313_0.4446561210102382"},"_hasShrinkwrap":false},"1.3.5-RC.1":{"name":"@architect/utils","version":"1.3.5-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"readme":"# `@architect/utils` [![Travis Build Status](https://travis-ci.com/architect/utils.svg?branch=master)](https://travis-ci.com/architect/utils) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/dooe6ku7k0x83bud/branch/master?svg=true)](https://ci.appveyor.com/project/ArchitectCI/utils/branch/master) [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils)\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.init(callback)`\n\nInitializes an Architect project directory structure based on contents read from an Architect project manifest.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","gitHead":"421cd0a126d9d70c3a4755d209e8aabc0e4eaeae","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.5-RC.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-zHryChk7I+fZt71Dvp/0fAwuKJ2tbcAI9tb5awtrxJEl6kAKpUlmpQy3rjlTb1PG80+bCqUSVu5K4xcJAjyh1g==","shasum":"f5353941c4daa8a53e7cc7846c853f65c62319f8","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.5-RC.1.tgz","fileCount":47,"unpackedSize":86565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeFLnCRA9TVsSAnZWagAAemcP/iAJqIQrIbEwZADUG2nv\nkfvjH32Noo6ThfnAqgx7oouuYyq9ZW7rnM+pjqKz2ARbOHWieKRYHe3kkSha\nySnqyXRafep1jXwSxsv7FyToUKF4lgAiFn4c5H4J6nNMQRO6JLEAXE2uDpPg\nwcrylY+w9Q3DI1mDUEvM3XbaBrEIT1UgpiNrq9WBCySaVsPe2WxrYhpfdejY\nlMWhQfEwbE7mW818AINrKTpXcwI8YpVRIT8dg7DoSCpr8KOUviHUhaBWJK9W\nqrPLqDHmonVSbHYmIdtyLw8LdKvukZjT79A3dxNUb+mTnmBjeafF/fhXPu8c\nAFpOoKJkS0ULT16nEseYDckdDJ0hx/dwYAPryF5fxqWvynrMkugsbzKxzJZz\n4nB8gPBv1q6IXKaQvOeCYxEd8ruB3YJ7enVe5wQ4lW+dMeKJaemzyppmAVc3\nTbyEFUMIatgAbk7e50m0jckYzWxvKhzJevesxsy2KH75G3wdrReopBMV/Hr1\nlqsudT+BMRZUxzI4SjSY4RHF5/lyiLQWJDe5D794Igs3dMz5U1/8Pf1dsWVI\n+G8NekgXNqFMKSa/vLkwm+7Kgj15zlQng5xN9s8Fi/dpNZ3WBVc4rUvlagk4\n6DmvGGiuPRuJLl0x4OJ6tuCqTF2pdxEI9jlcLWC/DSW36qUnODGitCY1ei4z\nZU+i\r\n=/WvD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvTwnWdxdBck/+S+2gMY9fg+MbJ6aTy2IlZ9zgHBq8NgIgYIeHCirC0df86qpE0zgCuV31sqZuyu7pbzbSgasFkqg="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.5-RC.1_1568166630811_0.22173296755769112"},"_hasShrinkwrap":false},"1.3.5":{"name":"@architect/utils","version":"1.3.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"fba493f12c45b846b644227a39e00923118db21b","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.5","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-1kkiCyWt+ETxIL0lXYQJpGIHAL4mAP9hlcYWEboxVETxuFAcJXj2FKpPzaHqiY+dd087/B2Ld7sU+EhASzCPtg==","shasum":"8592afbbd6d466be663c69cc27e82c78f0931020","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.5.tgz","fileCount":47,"unpackedSize":86556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeFPVCRA9TVsSAnZWagAA5M4P/2vtqryK56atTg/jLAYE\nt9JllPiNP+cfzxmHiV8S93IShxkoAe48Q+m49MQQ8Xd8alqZxWb0rRaDMOSa\nfJOSXlo9dIb0CFyBpoDh1zNgqZ2OD4F/OHeI0MatkkTpZZXTc2o/c0l5IDhD\nqYeJ+Xk5KeKk1jzgXTqBBmwPleuLl+4ub4+Va1TenwZmFIUmvH4WxeGi8iyd\n7Yh3nuGC0ormD14TjKC8yavUsYmkZyKii502rsrM211qPp3hZtG/OTlBhKgV\nOZWXjO80yxbBQhDYW5160kKMvcaSimx69npblhqjNyWRSz952TCaj/abgyPg\nDUo1MEj298Wd5ziZC72xQSy7DIvUQZMBksdMy3tILXdIoAbKzjHgkXY/fjiP\npy7ekHC8QCdzGqU/Xk0lR7kKcN9nueZYwaDSY3qLJm65Rh4yv06zXiTAWIlY\nnGEjZFJCmHHMpGCwQJJA/gW4azGygDbX93P9ixi1cnjKqJcYNb2oEwTdSADL\nGI9VZ148DxjtEfAsC+hpc1sJbzeube6AvUG9/AEkBZUJK7TlQ9+kRDUSOgMZ\nxEpPv27B6J8nZSJCEsRgStONbcV9JwC05p5RuuAWy4TbG7g3n9cpozexixmo\nHN3H8hKgDKU+ulE0xjtyAmUW7NnTL4nuvvvpWU69wJAM7sV88QJMGWR90JBO\nvMHz\r\n=zfYZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgcJO3TmBtBu1z5mlAFEBPW5vN56coEVXBGKMVi+KmhAiEAwwu4Rn8wbC/yj/GoMFQF7bTYq2ux/EdNcm+Tcvg35is="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.5_1568166869245_0.07064765189326083"},"_hasShrinkwrap":false},"1.3.6-RC.1":{"name":"@architect/utils","version":"1.3.6-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"readme":"# `@architect/utils` [![Travis Build Status](https://travis-ci.com/architect/utils.svg?branch=master)](https://travis-ci.com/architect/utils) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/dooe6ku7k0x83bud/branch/master?svg=true)](https://ci.appveyor.com/project/ArchitectCI/utils/branch/master) [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils)\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.init(callback)`\n\nInitializes an Architect project directory structure based on contents read from an Architect project manifest.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","gitHead":"c00416b8399eb577d2532f1ae6ba82b8136b2a9d","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.6-RC.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-RpnndX5CCdSqAI6a0DCm1x1uELx64ge4+V5dkF3lVVOqHVF906s74Ey+ttI2yp+njoi25F/YhAUVZEcuwqMTiA==","shasum":"216c144ba57c1ed26f226971c6283aa1fdb1a351","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.6-RC.1.tgz","fileCount":47,"unpackedSize":87163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeUAMCRA9TVsSAnZWagAA/yEQAIzHPQZR1sXQDlmqYa+a\n1DJzzt2UXsRb34piJNgZqwrDEXrsqWXT9p1M1r5OnftslVizChZMe8s3/AED\n5h+KEy4YbyYMLitBMul0JuriBDN7xtJEj1d8WBj+c3rHUkmLnZqAY4I9p/08\nHjHncF6p7yImNBlGUOg7+bFEXyU4iw1gbiBKOtkhWL1s5jY/5gLuWotR3F7q\nu7K2vbjqPyVzeIzJuT/f69zIHApJPR5taABYErpfUQgFIRlaBQN/3tuDhhsC\nLq414lTJvmNRgVVDUtrdJmePoDqI5pIt+ZrNj2i2KOPfbtCuqpWHAXsN+BDt\njE97GI0WUdG/pu2aSjwQJCNLbc5BWB/k51iCQKgVKnt1QXTqbJ/PQYoXUo1y\neZtT0BSfGPNwsKE0+En07IiiFTC76Yjor3CTs+nzSXSRxctZvEst3CWgWxQI\nQt1tZWTBZoj1xwsOtR7IlW39PYvfCQfVV1QnCC7hD3eHhrRUa+o9rPgH/I81\nIjmATiy3r4c2N/oviMiWNpJlb3lcIuRC4S5/gvTD62djJ8jCBAqta6/4Wj8a\nDj8Ye/nVzoPf+ihBDDMWt+E0IX/7gLqfKtmQO3g3IHI/9ZSKXFjULjlGdnnv\nR2ERmuwazXa1ib5/nkcCnhDUsRbWtK66EzvxdRMplYqERdjacFgDE3YQs9e2\n9wby\r\n=yeTl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6Uod2w3HC9KyUZzFbQ75nc3LZ6IUcHEykT9TK3YHhEgIgN8WmjsQnjvqXErpxITpDQtuphMBGclFjrsriCVFc3kk="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.6-RC.1_1568227338886_0.8527796082418917"},"_hasShrinkwrap":false},"1.3.6":{"name":"@architect/utils","version":"1.3.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^5.16.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"dc338ba2a670d191d355616403415187abc91100","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.6","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-7Kz9rudiMp0vEkFzYdsFbtiXDSReC5PkpuaBXokOVHoOhz0X4CrYPc2LDKz/vuAta3Wfc9JDxQ+1rH8LF9VeUQ==","shasum":"e6490db20f6dffada0aa369ceefa5380f8560c5b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.6.tgz","fileCount":47,"unpackedSize":87158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeVsACRA9TVsSAnZWagAAbPYP/R9Nd0T7FwKpp+N5b7Wa\naJs+hX7tt+NxuxsNgTVRgzGLQsJJu/ih46vYIvy56O9iO5t2awaYZVhDaU0s\nYDqL123EcLtXFNk7sREPmns2bv/NZ3rqeSXa8Y8sY7tTd/3sXpifLoNsvoWN\nNBtbk3oyM16NjWuVbulDvBfQzgclhX34gebFCmQD3lNapJR61EqaKupw0P1n\nYWLtHAD5/FPm3LQOQ8cUcWL00z1NzWYUzZlxC4XeXuLAYgXldaBqMFXHmVAU\np5qznyMgSpVqtqLID2ROn9b5+WkGgLgeD9qx5nJsJcabeimtt22gXuhJOMi5\nCBRFm28Ur1oYwGIQU6ZDFY50QAhn45esJ6wFLX11zDfpCfjC2nyyulYQIb9Q\nIUY5HQBt+JNUGoxkU37YnhhVOU+iHsVZu2teuzWafTtCMK3BqDXmuR/NC56j\nSnS+Juy5TNT72kWqd1lAZbtfsrxXQcRtswtcAIeVkVpjSnd85bxJ3CGs8fnf\nH0lD7pDUW5IKjFDOqz0PZNf0ZhSjzvnuygORGFzSmUmpdbabAAHbqSL5J8K+\niPmYajwjsAN01c2HQV8FkRdSwksFoiPRenzGMZn6nrCen2DIKDiyW8pr+zhf\nSQhWrUnjZAL4lH0W1f/Ktlru+bNjN1xEvQtQkDWTHcrB77PYX1s+8aHe3zjX\nDMDC\r\n=GPhD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMADDNBvUp1jdVQ/fQgm0YdbJB/6V7IS6ytYccGthnRwIhAJ/IITDO7RbEUhsam+BCZhmMD9xgUkqBhzsSJzxJcf6x"}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.6_1568234239755_0.4035396620561571"},"_hasShrinkwrap":false},"1.3.7":{"name":"@architect/utils","version":"1.3.7","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.4.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"f52660a4194a6385a0f8143e7b2abd30a7b6eef6","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.7","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-EvZ47SkWD/efDb7FFHxXIKqzgr0R2QaDArFeJwVvrVAi8R6EDNTXmJUSbw6uIeydXVxeDp/1FxedaAzUnIV2dw==","shasum":"ab02ed1fe0b3a2ecf391d3d325030dc91af22ae9","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.7.tgz","fileCount":47,"unpackedSize":87418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdh+U4CRA9TVsSAnZWagAA1pwP/Rz/ZP3VCzbhU6Eqg7iT\ndPyMd4Gja6hzBf8xkXacekCtkAZljW2WjhPUPY7FHe8v2fDwmwkZJjNK+/Yf\n6/yTIYn/tdUfAj0Iz7kB8cvi5Wi1Gi2wPQqJYb0ocD8xL1fdWfDzH+Lcrpg7\n/i7OJ890xZLy8O79N7I+ycEvid7bHCOiUUDFNShuyzIjfmTQDBNvQ9VGtp08\nhBom0/CWUpbo0zKhntfI5Fu7MiwgNJsVFbAMHXBz+O2zAfnmSQ84+GgOGpa4\n2waTxjlMA/Mm5A4R0GmlMREOXmXmkZzPyrz1Dqzoq28h7+sd8TnAqX88FsOC\nPMEMWGKG5kVXgwsCa1WYpAl2gnzIk8dDOM8guidNnbZu1ch1rIwKKylEYHs3\n/eAUKd/cBzPtibInRz5LrBATmDGc9O76sqeEIZMTU4ylsAsSKZPPnncp0Ghr\n7B6NwGayZOWcQ4yZ0h/MJx+Djcr9WlhQ7Q6QP+Jxcfkks5mTTMWdaYa2gIhl\nUNRGRS2uDwnIKdIslAFWAvcIJynb0Sqt4bgE6mbW2k7C09vLr0hflsPjxkJM\n2/dfOifFWNC1lX68mpdV9NgUSVq7+OSXVV6lXO0ahPMgy5j+v0MgZAdN6Swg\nGaDpOic7nqEgDt+aDktqvuvnkiyW+oABLXyIXiPN8/hw2RnDHuBs8KwyCPOk\nZvdd\r\n=r9kB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG375Lrr96l6+3k2iLWGaC+8ewCctPvD9BYwpv98sr7PAiEAktXW5kMdI+OcpUrLZoAoTKptNm4g2sBsgVfwEUE+dOI="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.7_1569187127522_0.2628803138035556"},"_hasShrinkwrap":false},"1.3.8":{"name":"@architect/utils","version":"1.3.8","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint ."},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.1.7","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.4.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.4.1","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"38f2cc4d121042297c36b51a45bfbc709f737bdb","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.8","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-2TV7LrIsei+U5RvL4SJsmjP1FL8KqmlSoqAZAXHz7tYC2/LjrAHuVhVY98kY3QyWVdune7ErFKNymbPEk54tQA==","shasum":"70b775321cebb2eac3a99881ac6ede99b518405c","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.8.tgz","fileCount":47,"unpackedSize":87551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkUGtCRA9TVsSAnZWagAAc4QP/R7NanXktNkq+L2G1JFz\njHRU9SMsttmqjdquF+Szfnu2BlJeGnD5T/6azCGVimZ69s5Vg60qN1I0u5yL\nnoSybiumlIp3UhT+0VJFu8oItM6yCioAj9u0rBqd1g1/YRfkbgr+CTM76bWE\nLUWQFIZ1qoyZ03opZH+xcH9mn1bLEdG4qhiLfv3vRLmfG5hxy7Pm5a4LZzWp\nVUqot5CLC2coq8uQaZ8Y0aITSLCia4osX9LuXsh2cH4VLqqzXw78T3UYozUo\nhR+69tMZQ7JwBkELYZVZZop+ogq3WIaWQW1IwbGpWxG5a2fURfebhFzew0v4\nSGhn7Bpsbr6KTP+0Z52Vqw/w+nH1nLTyWLucpmMyT6Gr0B0WgXnwkNWWSgw+\nZfg4lWoLvKeWefG0rFik+oG+hV2f4xN4uZh1XwT+Km5w9ovRPAucVP5Uqowb\n1mDxp+zylxJCBcRaFmUPKSGQJu3kOkohLS12QHHFA5THqTg8yUoYWi/WYT7y\noNNdecSHrB1NQNm7LurjlYR9aRVftJ5fdloMqutG/+fZB7Mt3U6dXLu5AjjP\nus49Du82DamHmzsxMw/EjxzAADDessMMiTiQWjEUvb7MBFvsee1GdkjOpMzK\nuZsdPvF5CCgXTZQz15aaTuJUU0MZymZmNoZBnmNdwnK70WQjAcyRl8KhaHFe\nMRv6\r\n=4j/F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkLgMszQF3dEbzYyKK6pylApfIf7Vrim6h4u8yju965AiB3kd2rI1L7M5R+kt7S22/shLhnMJ9bySpX9+J2XM0JMQ=="}]},"maintainers":[{"name":"afabbro","email":"angelinafabbro@gmail.com"},{"name":"austinkelleher","email":"austinlkelleher@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"spencermountain","email":"spencermountain@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.8_1569800620709_0.28548939962687236"},"_hasShrinkwrap":false},"1.3.9-RC.0":{"name":"@architect/utils","version":"1.3.9-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.0","@smallwins/validate":"^4.3.0","chalk":"^2.4.2","glob":"^7.1.4","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.5.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"b67e4c360ffb9feaad2b826aff93223728e2ad8b","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.9-RC.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-B/vKAaptI8SxiCyD751RTeINF52qwF6O870/+ETKsuH/UXvNuUi1nwd/fpdwHwAChQZoaWamFx4pnf3ijx1ZNQ==","shasum":"c3362320d727f41b60ae89f55d52c0dec075850d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.9-RC.0.tgz","fileCount":35,"unpackedSize":68093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwPrFCRA9TVsSAnZWagAAAKgP/3zQ7OJRoAPKuX9Qifuu\nq0u6gSALzVGm3cn9/MBMSyeUhEgQqJHZgX2erqnAXeVlJsT5lxLV/cK6Z4tL\nwrIUX1Utffi6JUPCAqQ/K4mPeJ7dYaeYB734iTJbSVtBKALGOVFH6dVZy1Dt\nV/xYifIy+eEuc5qVAvIbU1VctR1vK+GejmWkP7veGFfbeXrH3Oc6urV9ZIfm\nm0Q0c9pAxOFzRTUY36AiVfuqM3QTeWC3Xp0rWXn7FYdS6UnRYAba/iOcycMA\noIAzCBmIcSpJYML+wnV1eIS0sWIFASncA6lwTXDHSDUHQh7TpmZr16NXArP2\nNnFdWZ9wAl2kRXCcOBKGdJu5fXANcKHHN92YCwQnMuJsPyiS/EkYVfcteqI4\nvlzIo+E52QRWFe6PzzCzMqBuETgdBoj0FV1KMvgWiJeUUQrRolLJvVe/31vw\nwv9MOm6jAUp7hI6dDr4FYIg/0J+kqSbs6OeSgC1AaKATOkvmCbr0Trtkkszp\nBAo9VuqBkT55aY9jVoyCY0l5ackXAS8i0H9f2imVFBdA2LOtkMOT+dR/Ak+B\nX9o8CmCib3Lxf+9Cb/d054NuZv3PORMaRojD/klEayrD3c6AkETyIMS41f7O\nDWoOo/MYkO07O+NFD3NJkBZhkG0xnd5rBIGOxwPOQ9/DvTvwxWDcLFpDNE2E\nNCdJ\r\n=8TiD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICi+Cdd4MnAcsGsbI8LQepak68xX7Krc23oaek4oYMC7AiBkshMqJmCOzlA3e/rYteR3odKCg2O22VHjG2g9ectEFg=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.9-RC.0_1572928197180_0.7683070459329593"},"_hasShrinkwrap":false},"1.3.9-RC.1":{"name":"@architect/utils","version":"1.3.9-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.6.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"ee6e26181bd9fb0c9d49ca1c274ffd76f38a2bc4","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.9-RC.1","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-KQ7ZvU/28r1Od2x87c8xLcEzu07Ge/v3fHQWGMedjHTFu+Dtn7j6oaXgBiYqd9atsG2DaecwTePmJSUx4W9JUA==","shasum":"3d438275227d2d82a186b5001bf6c3ba7376432b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.9-RC.1.tgz","fileCount":35,"unpackedSize":68129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1CiSCRA9TVsSAnZWagAAA3AQAIKSD68PM4EZRPQObGJh\nkMmRZ1iOneOBT3TuUpRYX6FYnDinNWwquK0IiLtsc6C/xaiaBjoAOGrWmnNV\nudgQah/ku1dlFgq2Vf0n1w4vHrcteAFkCTjPdytErt9fMhCzYF8nN3WH4zjv\nj4D+ShEHxxm2VlmdjsAT0q2UoNlGwHuDvpvHe4i6aj26cnHk71zgMPaQHSp4\nS0Q+rv2nCWU2z6mZ284T3zLWmRvl7YLkiDIfjQ3hbzC+jvuIviMSiD9iAvTI\nfeFdHqnse5d9paNebdqQ1GVpq7vfrYZ9iSYkzWRUVxCuhGgTFowUsOMXyZRi\nHhIei3ipIRtXNkdCgmzikzJiZx6ZiSbYCfBgFNmv7pUrCEVT9ZTRwFjVqPkw\nv7N/+R3pI28pWRnye8nITs4ohavAD+EkOzKH2YUcj1iXoYtcHiy8bISGG3I6\njcBZihssjYtDA2PyqkRaJ/8TmTOg/iUiPhocX6Qn1uyU3st8zb3saqz5j811\nvkDMJEqDbPd06SfUMQ4NtLYcnCdvArKExJrsyYnD2YwGtLKPH3VyjL6OtSen\nSUoQrfPgYSxZTJiFmvp+I116dvsFcgzZ39WRNAJ7eNzrCBLTpSSlvRWCS6RV\ne5nHr2PF2g8/qqDYLmZlp8tAUN0mPj+rn35tTol3xP7/mDrqDRl34s3GXzET\nPxhr\r\n=h2Hi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyYwuHZylMP3RaHcnNcYmyNiovlWhdlCmvUNiOItqPaAIgAudypl2m0u2vfj8nCCKbkZJaol5+pJaCQvidAS+IWXo="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.9-RC.1_1574185106179_0.14098860275497405"},"_hasShrinkwrap":false},"1.3.9-RC.2":{"name":"@architect/utils","version":"1.3.9-RC.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.6.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"2717534d78e6ec513b4af6b034aa4ff0106b0646","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.9-RC.2","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-gT3uhPqgMi4bOt6DkfaNck8go8ch0adKpuF6aY/Qn8uvn0ofm85oLxjj1+WGUGDwGZD6Zfp3vmp7Sm7KAc1HfA==","shasum":"e0af9607c9fc8f302edbc37afc20aa3b68df032a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.9-RC.2.tgz","fileCount":35,"unpackedSize":68138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1DPdCRA9TVsSAnZWagAAvp0P/AyuV3xN0dQkNZPcuGZB\nOYQ2T0yRTy2/Zbxz6HF8BCU9FdCw+Z9/sp63j40CrNtljueMejxQzL0WKhn3\n5H994qy7j3GI5001zEGhDLzlINJzpdMGYKiiNVXb46A59nwLv7Lyl8BC8Gv7\nJq8PcW2XYT0OaBxcTIMPuhFjUxFdGXn539J5SmTB57EKt8LvHNaLFIqnzPNf\nXnBkSb6e5EBZMF4VlJL0Jw2kkjowxsnn2N29d+BGrFtDwch1148uKHz0rbZg\nWyIjMgIVgq0pUP4lwdYZslZkAIwuTf3ZzA7xCU3P8y8DSrXUTLqyour9/N59\n8hcLR/7eAw0Bs1rpaUT2sOesxvPXK4zzIw2bgbF5QdusIpQpEi16zNGG8j25\nQtQBRVU2zNOMvudo+WhFM7k9+GGuNWD/DizPlzCFRHOoeBterLs2Ks6fGjaJ\nMsNiGcFEb19OsejCnAGgJrkI3nN8nKwk+N/UqT+USdw+z05m3rOybU/i9NoQ\nr28r9NcUauDcl9tbeTZL41TWJtByH9K3YjFFGkVSzNFGHI+3aQwmylmJLiG1\nlE95fjELkwhCqaDosK1E0z+mXl1tRtaZPIpb3dhSiPDpvEHwFCSrL7oZIob4\nHCHKqggxf5n2Z8sxOGE2IIqCn9yVawLX6WSJRtvRzNmld3doVtJ6LEGZWSxH\nJgR2\r\n=5D2W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG7vbXqa/oRTs6MpZoCkROxRMiOoNoW2UyEhFMPZEfDwIgf/g3kGExG2WE1sbD9cPnlapqVQHVf8FAAChaUTujUiM="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.9-RC.2_1574187997026_0.9292513213835614"},"_hasShrinkwrap":false},"1.3.9":{"name":"@architect/utils","version":"1.3.9","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.6.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"1b659402db3ce1599d483b9510f1bab9af174dd5","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.9","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-gxJpkJZNpu4drtcN/Lq+YmKUzbSHCVHrE+WNsYdg4QUFA9Em3iSpOF1ypR80RBnQ8tR4qTej8HPUd/Kg81ukZQ==","shasum":"d52098ab6370876118cbecf56a5f5a453607b4a9","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.9.tgz","fileCount":35,"unpackedSize":68390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1DqDCRA9TVsSAnZWagAAaf0P/2gVZNtEMsQGg4zFnXvD\nVo8dDCqpSHcdXcsgiPkGvZwOb/oLKpem1hL0CykxmRuHQUfboaYD2SLeE3PG\n9oe0s+bf9uTRfErhRMCnpiimpELVqJ+QNFhzQ67JCL3Yv1oPAUJOAEAOhiKQ\nunZWyoT9ermErjiQK+Orja3bIEtyEdxjYPV8/8bFRaryMIYjbeFQvIgMiTdF\nMWuKOrVrgrxFnlI5znOwDEfXm0/XqS3Xvk3IP2sWPdYPZJ5onguiWX4BdpBm\nrLCsKT5TrnU3UVqo6WvRWjj7Uhr3yVtcpjsOC+rh5RlcWAXRu+UUZ/N/pFya\nFopje8dHs8Jc1uFxwwVz9lDg5FGITYGpcQZvezUhCjfzWmothLONvvDE54Gf\nWm0NyPfjvEcBT41/7Ww42+Xu4njKbcK4LyOXVDFcOBEfHWCsM9sojw7Skw5x\nDWO354wjoyPKr7BXJASRwhFFMsQ5EoMwzBQdax7y/PpqVpu3zIttwo60oEUa\nCNboEg2vF40JLveBmcnnTFlbnepfSQFxuePpOP9JD/W1iwbioux4g80Am3wu\n0dvwnfSzwhs2wICyo1qhPrppGLKR22O8Y0zu2YAwcFuidZBLyDU7iQjm9g7b\nNm5LkaWXHMDdrZFKlbqFwdB/hyG+4536kI2Ty0ioj84VLkw6jm9ta0KOhUBh\nN3M/\r\n=2iqt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYQfjhQEVqe/ZWLh343XLmbu++HXLe87KIVu/EsIcUZAIhAIEiiRgbPoiLvQMAN/Hpjen1Pzh8h0UzkhGgDWAf2bie"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.9_1574189698627_0.3374388807942861"},"_hasShrinkwrap":false},"1.3.10-RC.0":{"name":"@architect/utils","version":"1.3.10-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.6.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"08729beabfd70c17f13da68dff21470f6039f6eb","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.10-RC.0","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-GxbWUg2KL7iE9OOX/fpO785NyshYKJuq6MLuCqBetQg5fwCRJx3q2rP2v1u1xKexKI6afiUUaK6+ywlY9KZv6w==","shasum":"0ae1eec23343ddd81caa2bb65b1181681eba0e17","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.10-RC.0.tgz","fileCount":35,"unpackedSize":68491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8okwCRA9TVsSAnZWagAAN8cP/jY0xLCUKkwEpjQQoMTM\n3Q3/Y06QUyz8OdrDIcTkMfyAHagmeJUvfs7iSUE4MTCtkKL98thnHxgOi1Q/\njLuMNgmoAqNlpU6Z2i3PHcYZCc7Ii3yJmsRuVp4XkkrI7iMgpUVxpu1JZk+a\n981WGXCRyXh1TYCbWNgNDF5siS1HhkygrJ38yqOHo786RgC5Q6Zc/5wCUI0v\nmwoZ/n6/YMHJYnj06JIBlZM0AZGsHh/jeFnTGAQyKgFER8bZK8zm2XWCDlJ3\nfD25T/KDfgqdySkAtYysIqTJuD1Yxsw8LU87eVZv+pj7UPAzLHbF9OJfnLyt\nc6/tsJxdmt/ELaJ9EbsQMz3yTze5VHbiTJ9Cg26D8cPA59ZMtCLwa1fq3bRj\nj/sLfQvs2XqbOm9U3FtzWwO+sbxEZyvGlK3iycbFaoGT3rmXTA5DvVwFXn5r\nyfNQ44sfdXLrfufCitnSo9y1xDf4tKCuIlyWj+Vo1FiVi4QYvwO2/EvXAex5\nLw4RaNopabHg0+pP4lsDBazh41gZaf04xlEB28HsEPy+/HInde7zvx2o+otG\nGIIpCsMTOgnpF1YGYe2jN1SoZVXkmDyrIww10mYSp4sKg7WNQdCG7IeRCufc\ntdIOB+oc7DcKCJMqGrZCen4Z82uosaNR8dFCAs1Y59Th/MhR6xDc7Hz7j0/B\n5bhB\r\n=t90R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG6G4ajMO9POOOu86ClqizNV81ng0xIxz5Ybj7Y1htwfAiAvu4hy0QViv27IHmsmAOAzkIvKdtKkvpM6hY/CBMSU7w=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.10-RC.0_1576175919911_0.06808699075298819"},"_hasShrinkwrap":false},"1.3.10":{"name":"@architect/utils","version":"1.3.10","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.7.2","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"b30a95165705028d8691bc23b3b6783fde4ad5a5","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.10","_nodeVersion":"10.17.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-G/5zfm2CGasZM0GcgZizLo1yn2+d34+cmJvHQCCUkortfu0LgU+6RHpXJC987PUrCMGkv3vPS5IiP2u8JkprKQ==","shasum":"386d8a5cdb983f942f90d4db2797a29dec783214","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.10.tgz","fileCount":35,"unpackedSize":68621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8tcdCRA9TVsSAnZWagAA1oIQAIhzIPJ6Bddx/PyXJ7or\ndquis95f1na20cktGx4GE/JIzWR/bH1XFac/zaGI/YZnH0Zl5LOicAFR+LtG\nBnU0d+tnPYvGm5sX21hoy9aDdBWhjz3zxEFHYqx5WmatlZOid8XMLQkjUXib\n9yc//8Ro+VDUf/JdU40NPng8GQfiuYC+TzpGGTeprWWsON8Lb5z2BItKKAUU\n46X8Epsd8KUsNXTph2Ve1dGvXfv74xlP+wcAvJGDEu32gyDHKfL4wiNKAcZp\n+S65+KSqKc80mQhLjRthb6u8yxNu3F8a6RMHyiQQ5P01CDJrhzLG56QBHf3V\ns9udBon1mD4kuRHyuKxuBGj0+dkTeq1e5BUDFGA/kmVIAv3Ge934UVGgVNou\n6ZuZJWW8xhhBkwdnrB7O3SHVFLG901l/SDSKExVJcZEbhr2YrPIiYzPgc00M\nedqLDGdsRNsM9zGCK9WzH8BY8dVnIeMW6t8tMBlmySMswMzhAISsonn24z0H\nK3owO6wz/bu9H3EsFkJ2esQLKgG55ipi56LGBxVfx1sAeb3o9c6o+S63dTkG\nWMlG65jfNv/BBxOAGB6bhmTPXyioYJnxC38TODRnHIZ/UgKkd9ITzyhFXZvw\nd2pj9aLXekl+UNATn9WT5qTkFD429WwZwL6iRnpbAWE9vqzLtqd0JeZ03DtF\nYi8Y\r\n=vwS+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpNkQuDuYZFG8Nycw2jQG/qd26sdCGJ7v87BxRvckxzQIhAMkmgjBF8liNRdqcp3Pg0ni64VCED7H2KHEnZJnJmeNr"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.10_1576195868707_0.6532942641186306"},"_hasShrinkwrap":false},"1.3.11-RC.0":{"name":"@architect/utils","version":"1.3.11-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^2.0.0","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.7.2","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"ab1b449e9291572ef77646ab158119b0456ec235","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.11-RC.0","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-X+Mg4aFuNMqVoCDIjCLUqkR1cICS82EuPPFp9MlfmnJZqEtgvtyizcNRTnJwdiUx8uBs2KbdGhvhtcMN7b+oVw==","shasum":"8bf182de8268f90aa905fcee5c49cf2ec4350e3e","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.11-RC.0.tgz","fileCount":35,"unpackedSize":70309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeApitCRA9TVsSAnZWagAArlIQAKD8KRKuVRxY1d1RH3Lw\nglOD5Xkl8KU5kVpdTCLihScmC85zwvLyjssLoJdYgO/BpeHAdojTT4tdIixF\nRKIpS+CaK6J0Vqyml/n8WOBUXBzuQhHvrVBzwn+/ArfIETvPSc1J96twrG1o\nJE3Ky90opiA5pEUmOcr7UUEiIJIDJLyDeYJO2GgZQHb9JF3+CmlvYEUaepU+\n6Jnns5Vu85D62jmjfDxNSehZtB1D99Z6/Z6y9eE6gwgF5em7avKZuMYbfFZf\nqudx6G9d9x/HvRReQhsLsuX3wv/23KDjwnC3sKRvKo/UdjaHFCTrDDODsAzN\nrC/RF1bOWV96GIZw/NIKXCAqshdpAhZu8B2d8qCbfPi0PwRgoNM1yTl7UKm3\n3EbwkCRV5TOvfMxYw02iwN74Q5cqhWG9IJOplFsnYW59pHhPhA8ZeHwjhZuc\n/uxuw9C9DauWQhHZuxwGne71jBgXO+y53gEwXrOrRFHf7KpYSeiKRyWGF8Yn\nooVKiTqdg/YuEeAL1NTb7AmQ7UyDQGWDE+HI1usCfj5U0hLGhebibCO0P1pB\n5DY1jz/kcKXftTtfwtOV3KehLMyNTCflJ7c8rTXjHmDcu5R3aCkyX/IsIVq+\nAjSHGsFMG+e0U+fvX2kHKrXybWatZ9b3Cnr+LOfhno/gux5OkSPpQsONir2+\nUuVF\r\n=3PlY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBp8O0mLZQRE3KU+d1nXndt5NRPyzbQEyb4cPWh3iAtJAiAUiOVOtV4GSeExSyS2ZBOkVWybM2jqOdlKqHTEe2XZPQ=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.11-RC.0_1577228460956_0.030335401161242004"},"_hasShrinkwrap":false},"1.3.11-RC.1":{"name":"@architect/utils","version":"1.3.11-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^2.0.0","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.7.2","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"ccd7ccdd1481a0908b32b4622889fc9e6a0bdd37","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with Architect-specific environment variables.\n\n\n## `utils.initArc(callback)`\n\nPopulates the runtime environment with AWS-specific environment variables, and loads credentials from the local filesystem.\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.11-RC.1","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-WxNWrtmms+KN+5gvvXlnGqBT3E8qKFWh0ZLMOvHAapLl+uN0YwQw7gtekLf4Etavw08ywdn/rVPX6LwFvEKnTQ==","shasum":"36340c850d796e1c2b4a0d53fcaaafc773184014","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.11-RC.1.tgz","fileCount":35,"unpackedSize":70447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeAt1zCRA9TVsSAnZWagAAlI8QAIEJy+pbIZmPwGkP8LEQ\nE14OJr+ugqtkoRewGEk4S0/dJ5elI9hIF1dWX/0/A+2bd9BBtSQseEmOmEMj\nOtR1x2ixDFuCUexmqXOqVgjETi4/oeuhsRAJ0jpT+hlgis2b4EEsl6mdcVBK\nIuFph9On5HrvD91c59qsNGV17qEWqwTq8Efq6BZb/Ok5CZXH95WBuzF2NAbo\n8/NPizPv0HO93PHZRMnx011gwGAoH6oU++ThXMpeiXgfPylhSvvf63uCq1YR\nGbNTl5nJ48zwmmssMyxfQADkYU6aYdu+hAawKIsFuTvEOwBeTEuGp/brgTvy\nb/jiKdsBw474VlG35A3QCGF43Dv776mTnHxSHwM0IJOPov880PBl1MqKmLVG\nR2TmRUBDt80edz4JjTO4rGGq/E/OTfy0dOXD6cqmQ4E8Odl9OXJRUZhtJu5/\n0AMXvGN+ZLhen3bWMW/7dTJjo3l54a9m9upl14HljdDrBz/EkUIKe3V4ZdsB\nG/zDr81RqlxYHEMPFwFF7ebBUHwzlTqwLb8d9Wapq5Or1CI/XcLiNwrAdE1+\nVVbsRLTNyy4qdVel3pjiH6lhQqil3iIQxU621z1qvs6usY2YUxjicv5KgGjp\nQudPasa7t3KtrMOBu4nvQ5uBm96m+lurMAAt1k9rQhIkH4Q03frLwejGC/BM\nwRyZ\r\n=QgLW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1OTZ2Y0l9iuanZ81jo237XtM/KsgduWTBcD4UdyGSFwIhAMqpKL12cVmWP32rBjJLQ1v7FOvS5nWZP6SYHV65tofp"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.11-RC.1_1577246066740_0.7210985420553255"},"_hasShrinkwrap":false},"1.3.11-RC.2":{"name":"@architect/utils","version":"1.3.11-RC.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"^2.0.0","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.7.2","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^7.5.0","tap-spec":"^5.0.0","tape":"^4.11.0"},"gitHead":"e0468aa7ed48787e02b3e8b614cc58396d7f5dc8","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.11-RC.2","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-v/h5JjJlvdZzIt9J24buOvHcuKreVYyVCGQZ2V0/ngU1+8/2o5l02MCSfzfdWuOdNOdG6MBjuaQWx0sJRzedNA==","shasum":"5e243b098249a7b0eaf685770eba3a48bea0410d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.11-RC.2.tgz","fileCount":35,"unpackedSize":70211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA8hvCRA9TVsSAnZWagAAmsUP/3nhYOSfzbrEXBHJiAMu\n4xr7XbKIyVA7F/6YSkfgdm9DhjiAPGNZ9baIICl13rhwwhhFT1kj/W8wEu2f\n7v7vLmUVxT5gN3R9iu3zHD0g7eczLrzVkBDZi/idr37d+vWz8mvNMAzXAeub\nR0l7vjw/de9Vi2edJJm33oNRsDmT8PDdHBtZCO25a0DNkOzDYVqLrS8SJj70\nVmAGtMccHZ6lYcTc26HYCQ++W713iYEqHV4CqEIXA5F9iJiXCk9hSR7NyJFG\nOZK7zACVab1B+GwCixrDKvSyrlCKqmlkZim8QHIucMy1nGS2FwUmeW8qgAwu\nhHw0nb/t0aurUgv7x+rfC6GPGwYp6zxebbDBwpSURusgc3K6N2YwY0GXoq/M\ncT5X3FCWnuObrjrT5X5CljGAV93X27YZlmfAgvu0Pvp3JbbK/Sw4BIqKUzoD\n5V0ZxqumJryjgLKAi49iUIJkPiA6i8Rz1SR5o6w/CH3FvV/tCeAuNbNI5niB\nW9VbXzq7eiY6boJbjmuIea+Ko8ZVzpO5XHksdqYXZZJPn/f9R3l+bzigRNbC\nllheXuTpBbW/Gj5ojVpGRSLbaOmWCwbP33peO0/Ebcilw0yCENearZjDvPJt\nZ+9ZTerx1W83h8OFiKmYr45UjcqvUAo7BTxnhnQmvL7VjZej0l560O/X5lBL\nsdIu\r\n=4fye\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGyXFy4i14EynNtz7WxwQGZ1B1IaN3u6SRHzRwT5DBNRAiArkb4jGssLu2MyCUaQOZzAs/Xx/j+M7kooaUU45SBgXA=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.11-RC.2_1577306223075_0.330772144207502"},"_hasShrinkwrap":false},"1.3.11-RC.3":{"name":"@architect/utils","version":"1.3.11-RC.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1"},"gitHead":"6e0b52012e6112c8c8f8db11547b5ca43f03735e","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.11-RC.3","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-gr7oeeYgBJplYNm71WVX4kxhaijTYz+6xpXCy3bBo0RgjSBqVh3rz5ZXMvHxu/u7YKKyf1N/RT9lXZ2LBqnOVw==","shasum":"cc88fa960afbbd82628204e4e6ed8325ef337e02","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.11-RC.3.tgz","fileCount":35,"unpackedSize":70210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA/xhCRA9TVsSAnZWagAAwe4QAJokOSNqb5FwB6Mb5xee\n0hnsurouJjUiLGOdwZTSqPGe/uv7g0csEKTVIdLlMTphF5feA9cUYgQuFQNo\nUCQOxTPcsF5Fy/iuKaRQv25Tk4Ja0TGQ6Op5+MSM/TEBD0JGbRPHocBWA+C1\nOcUerA7G3eM/y4riIljlcmlOfkg88QlPelCXiwDAW+zplDYuE8kpbKpkhozI\nkzBt6U/PKkmIyc+zJbBeB5RUbxUp8xgrVG1JHNvySOAUoeuGWk7I7/t+PHVB\naGU+l+aX1211G/MDcUm5OD5yrPnJ7y8HJ2S5722OiFSRz2P0gJZ4yWgvzuyl\nCjJu/QO3Vv74sFwIpuGZz6Lck9XehCU+woes8offJBCXlHhda2CyPx5SSrnD\ndJ8JaUqEtZ5/PfYS8HSdkzJS/d3DL8ewjDQe3bDj6AtEta8tgSyH5AOKjiSU\ndpgpygGXGDLHihSUewTkynsB8x7vPgLtCcFyO+tKiOwMz7n93HYn09rzRYns\nhwliQxuVs2qjBAaBjitQAQdHizNIc+YZ6TkuHofL5ZyQ1jvz+jI7dKyJi4Yt\n9Ol7IPYTKoWPpaamD+3Ss/gVmcsju8WOn3yeAH74WQTHz28PES8Xb5lf+XKf\n6HW7bmiKIaRiEonrIunfHKktYx5M17zNFVY5Al6FKzaWgDQm1rmBwdnbPojg\nCo3R\r\n=utuX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYDLXTewv7SzPWTHpjlOeJJkJxjKeMIitZsxnjIJMthQIhAPqQd9Un1fYQOQbIKett4U7shCZNXBMlxYCf8z6Nk1GQ"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.11-RC.3_1577319520675_0.061233967361867814"},"_hasShrinkwrap":false},"1.3.11-RC.4":{"name":"@architect/utils","version":"1.3.11-RC.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1"},"gitHead":"dee320437d893167fb4c086d61cb9aa7bfa00218","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.3.11-RC.4","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-NY26Im9CmSTZbGwE6gC1palW0egmzqVUhbN9uSL7xJjICyO5mXHUCnRh9tHkMs2JR46QRWvZPPxEbSaezr73Cg==","shasum":"103e2b22a310a37bcb56aa0a890cd6dea7d009f3","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.3.11-RC.4.tgz","fileCount":35,"unpackedSize":70210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA/4jCRA9TVsSAnZWagAAH3oP/0KNTI0q7HpV87w+5lfr\nTTzLyLJMhGps1HSf7scxoNeAojjGEnHWT0JVf1zQtAMPUJDdYANPkVM43sCz\nL7N6zgNy5bAi23GYVVfSnSK2T9US5JWT05qVoPLCD6pZdlnZQORimg2kM0dv\noDS+fAGfigB5GMligD24Pg8IGjB2uTSUN4ir0e35UW9Bf0taLwWL4ZgfAvx9\nRPFKfp6qZlMPpzbiFmJXYjJ8qRBN6RGSA8PT1B+9SFPeLjIy8On5Turqtjea\nK3dItAiYthN0TVm3unveTSLUEQW6iluLNpY3cOoL2UNjbbmtnQ5U6ZIQhOan\n+CdkSHFEM/elIBOv6/9uaJAyxFVIKnYegwITFQtfOEsZvhcer4aaTefRu8Or\nrVZYxqoGwjazUbeofYuJ63OLFaTbt5L1y1a/G7mj668uni/zclAIyI3OHGm8\ntpYSM82DQ3l5TLxKp/KqT6KsEHxaktPUIKSxrG9fdKUQpFPyLrGNSfwG3DfV\nOnus6mQYOfw9m6zVjuGcVWAKNBiu7vIWbifpU+AIIYGBepFkyhR5KMwdwtiw\nSzgQzTvta0QfpYbJKUswu2J6592rc7EsfzHcLBajyGorlKU0jLZ5KTtUOHcR\nOAMNgWm5xPJQnZPT0m/UB5hYzSL4ROkbdd8q6CU17ZjOH1e3aeetqgWYgQDv\nOXco\r\n=OeAt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSJssn0d4E/w1/P1fpeGiuNCNWuoR4KEQrC50ium/lcgIhAPvmLx7ISwN1InnbTeaYR8FUc16yDEsPApqu/c/CKKZE"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.11-RC.4_1577319970607_0.5911826198923027"},"_hasShrinkwrap":false},"1.4.0":{"name":"@architect/utils","version":"1.4.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1"},"gitHead":"d3ad8bcc6cab99c14898c73fd5d4f4a5a2f07e6e","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.0","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-kr2kCvj6O5VQdVGRQoU0UzzoP+RACcVAK2ymZ5YZD7bdptPXx/Ct0Wwh67HbE/nO62/c5JINlgLjiNTZQiq1Ww==","shasum":"e0f1f2df09c9d2c7378c6eb35dab84c03b2eb8e5","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.0.tgz","fileCount":35,"unpackedSize":71043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBCX4CRA9TVsSAnZWagAAcYgP/j3FFMn8GRKjte8UlDaM\ntwXi117sTocfYWaCkPhwDLc87uktpElKAG2fuVHVMZ2M9Q903xS/PxNDtWiJ\n49f/RWo/VUUDqgXPPVOX2jbV2k0prIzuIUHotuaHwemfkKFeZx5EiUi7NTMz\nR96DD3pX0xGUTOf5rhFIWsxGXxGA5YdDul0pyAwBrgYwKsZteo3iqwa+Sfgq\np61u+l7fpk+fvbOQGg8asXoeoCKnZDVlCyJRmO91O5p4I5TV1jTpiuHNa1ko\nqQvt3J6JCKVi4iobtT7pznskyEzJhfvIsJI+OpSzVfRzBgV6ppy51tkKljzl\n5IrjFiPUTtBvw4MmikcsKVbkXguTMhC1zc5+/dqkLq5okXGmlfjW08j4XFK1\nM7smTSCN/Jsouz6bi0pc5HdSOcpc7XLDOMIC2Td7Pq+2z2+WldCNh3WVmb1b\njR3eejaVLbzmaTlHBZbdW1iqiPaU8O8TuOZsanLxNpz04oJQFPkoY8lgZV94\ncBdlslgiYefx34qYWNo9r7o/dwa6ziir23qIQqW8cbROJ5jA6vpk2Mk/Ravu\nv1LuuNnwY2QMooKNuxwbK4fUJZ1FAhK714deUpRIOzlXCO2ujD4ZqAAo333k\nog2M+NJx2jnlja7d37Yq5AVFlRGkbkX3zNEF4Ex+FKf8/n00S7XTu/GYzxIB\nb/i4\r\n=V5/a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFIiikdQl0q81f1IZhy3cJCApeYPFT1ZfjcK2RHqkY+QIhAKsO1a70p2EJeVdk6mhp07ER3NH6t/HBuD46JKN1s67p"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.0_1577330168469_0.6028715294360563"},"_hasShrinkwrap":false},"1.4.1":{"name":"@architect/utils","version":"1.4.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js | tap-spec","test:unit:updater":"tape test/updater.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1"},"gitHead":"6b965cb34799433a9544fd1496fb310aba87a528","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.1","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-vYVv8sQBmQUAUBkNG1O80BZ+lg2o+So6FA7zp8SufwHwM+Z55sdF/rhYnqpza/dzrbyE5jS0M6kXTdhoH4qIUA==","shasum":"33ccdc2e05131543665eab152d55c4f24bc2f4c2","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.1.tgz","fileCount":35,"unpackedSize":70906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBCciCRA9TVsSAnZWagAAtJ0P/jFh6pVRy4CDQ4vjotGf\naZNN5x1yxcgF9n5QiieyhY494nIxKSIMIPrUxenqBeHls0CoeGR6XGiEqH3/\nrsqtpSs2GIv5Ifqg42dTvCc/s8vwY8/F1XymTZYOw16qbHh/T2tjVVpVGM5s\nelB69bKMuTeZ6J5T3MFTZJYYJfB35J97olbfDymFryBli5u1q/tNDszf7auN\nKVmL/WV5sfluVUgS18XNPgOD4lXLlRiT7jOwYo049JEdlTT33jFomaH7U0St\nhlQrlPA7jUOJwuF/xsffV1FXzWdgh5t0J32QEj+1FBpT7/qRHkl6twIx2rVD\n/R/CPpdIA7CcbPCMVg4bxhfSYDLHf22OKrcb6EatB16QFQk/NHqasOOiLs0j\nzIc1EJn3MsD9DepliFc6C7ZVe03BE33ZOHJeqGhL2/a8N1j0+fpMk1IEt2hk\naOldXMiiVe959W0b1+u6Qzemv1rGGLcIwG6+6mWeIa79p5f5l/wpb8r9EjPx\nOti81Q9RedCLYTh+yOdHPpNNQKugNbJwxtsilrOiwm2QR9H0gvEBt3G5v5c1\nSaNZuIG4KIYnO2yYXIAwAgBZv2rnMTaB4PhFtNy7qZCwRjMobPV66yR8QqDN\nWq0ehxdG0e27b+FAytTGy6NHbQAN601QnzZJUDnXFi9P7BEmBLrohC5t9fhq\ne3PT\r\n=HHOk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeN/527Eg6f2MxfWvf4X10/V+5LWqmWz1p/7U9BqavMAIhAM0HBpLHoxw5yrwYAOpJFYwLJ+U1HouRSmMMVyGRAhke"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.1_1577330465687_0.28733678522379313"},"_hasShrinkwrap":false},"1.4.2":{"name":"@architect/utils","version":"1.4.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"2.0.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1"},"gitHead":"4471370b78a2d723718d82467711e5f2322f9685","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.2","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ct9ytLAm81LvJggau7nXLUwLNRZZ312daLga1watVrfrU1ZgdNZ1Ln5sH+/olFlISAu1Ml9yPkFLn/87pb6Kgw==","shasum":"86681b70ce765e32e44d44c9f0eee9f0fb66acfe","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.2.tgz","fileCount":35,"unpackedSize":71210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeB+EaCRA9TVsSAnZWagAAA+MP/1hVJ0XlprdVFi1j3Fx5\nA3Cil+61nGO0X5/qBQsMh1W4nsxeWt+kHjOJKQ+G7IqGc6IqaIkriB2IPcV+\nD1M4EGLGUcBlprszbDqU0tjtGhCvin6RNef39z5/8tAF+ciB4GY9CuiFnyeV\nWuDWheXy9MPMZd7S3azoN8cIpvHkLDMzYEfnUrkJtXPbWBSHakdLNdYWKTuv\nBlJtFhkXpxoAa5a0/0FTzdTKLTmvl1SJ6DDQm0vz1NGCE+3tNAEJahFQH9Uk\nMVryCJT4T/D48dOBr1oZPa2hmPW6iDNqQuamHdhj9X/XgZJeEszxwCV1AWm8\nB7NgBc/ptVscBeTjFETTI0PaBtwRaL9NHPbDGASfElv2n0wnx7ACJ/+dW06l\n9IHrgwJq2kiZ7Zff2FqK/tfoWr1d8qM0JV2tDBKMKw96JSHWHZbm3bDsIVxK\nwHLJw1L6Be89wyE/Kk3zBYtT8dd1/K5p0KbMiWH0b8K3FH9lFZ7UMSFeqJFm\nNe8pAkjx3QRS+JjdUBZm3vwt9gmyNgLGDB5qOYobNU0PNPcsH08fyQr8Zz+5\njYDk04V/zjv0PCHEoaKFvjBJf+FTB4T/3DvgFWHGc1F87fMcvUsTcldmkb9W\nE0KJUJBpRHssYLECOu/xwsjMm6VGo2Yfgnub+Sbg6DNfq8Um/eV96lKngEQ7\nfKHH\r\n=ftES\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7ybe9h6Xi2PTcyRVd+nPiGZudxzoA6QQ7974aKmRWfwIgSrM6NYKub1iIm1kDsGVjXCX5sbAXnTog2N8ra7a9kdA="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.2_1577574682048_0.86298595407251"},"_hasShrinkwrap":false},"1.4.3-RC.0":{"name":"@architect/utils","version":"1.4.3-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"2.0.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.597.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1","temp-write":"^4.0.0"},"gitHead":"9254540046d471435227420210d1c656d83a9c8a","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.3-RC.0","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-3lOLhWC6eN2hiZeBDXi3sE2b1ZR7MSfC8Fr/2imVKaMWpFf2mPHJJiJYxiX0msT/wr3VwD/jZL0l1ohn8tsWqQ==","shasum":"62ca7e2b7c1c0b03ee95fd3026b3d5f9f46adb47","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.3-RC.0.tgz","fileCount":35,"unpackedSize":72088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEPGlCRA9TVsSAnZWagAAtIoP/i9/FjrflzbKehyWbq8/\nHNWQaCUR9/DbKIl+wv5eY3rm9RjKujFqc8ksSnjzcxyk3sZbwK/Z+CFLnjft\nwx57BujshN0qcZFAwM2L0xciCnoN6a73epAr0SoCI8C5KlP4QtHsd4a4iMQ7\nrRqYpi2a8CrG/GA32EPd0tPonJ/6Pt+K7uCJSPOwA/duXuMm8/8uRRg7Y43H\nSPH+tlECHff+EV+7XTqGW+x9X1DW1uxCg0S5oECuErBC1vTfxZ2qTvQHCfHu\nGjWZENySjvSM5wSQ3U68ijxOJWFWHBjp1gH20EoRrH2sDHf/SP6+pSOKahpt\nZp03JQLtRSi28fLoSgU5Tso3EekWgW0bkn0BsgJcrFDMgnOWhOAOLffDo6/Q\nAdBrRMZEl++EVO+JhXFNx9DRMe86EzrNaJwVCePITacdsyV9aqhYEl0jifD3\nhzdFtQ7Lsin9LbKFPG0Bn0e2RJUBqhB+qMxSUNU7Pt1e4V8eU0wokZRHxhx1\naKRePEZoFv7PHdLoGybHR5QxoOmBq5tVAo1IYSa5a9/uyLPqNqg2PiEnKN5P\nFchUjad5WH+968pFqBBg086/PdsQA/auotnP80e4waL/Efj0QsFgsiePIrpe\n6Ug+y5E65Lq4q4aU92aXi4vWO0cZvtXAujHyNS8Uu8rwSw5SrctVsDaLsdTm\nMG1+\r\n=WrOB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0Fbd9tMToB6jUK2Xr/X+Sbo0CXZ+OM+fqyhzwNb7ltQIhAJIfedhWwwKovP9zW8Peha+s/2gWVXni3l3kBLURmWIJ"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.3-RC.0_1578168741278_0.977861963716449"},"_hasShrinkwrap":false},"1.4.3":{"name":"@architect/utils","version":"1.4.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"2.0.1","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.597.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1","temp-write":"^4.0.0"},"gitHead":"5500d31bb6de3a2e45a59a73737cef4ac7bdfaaf","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.3","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-lzB4YVdqLG8/9qICmNGr8eBD97p3J8W4EoF8Ty6Kk2lY0SufkdHhqsDq1XairTLptRXaYhc/7PjkL23C2CnJrg==","shasum":"9926f87130a7ac0152b05703d2e757c9cceba7eb","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.3.tgz","fileCount":35,"unpackedSize":72133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeE54QCRA9TVsSAnZWagAA7PQP/1K/NpgsGozPHRufLVhd\np2mecU+qGQGgSbxL2eQlw7CsKeOCzoDoIaXNp5N8DG2RInkT/8+m31s/0rHL\nHMgIKhlNvbFu/xgCJJJqo65F8kUv3fIvVnAnbSolBH4haBL/Kkm+6oEc5LEt\nPySAMYUF69V+kzXPCoCYXs4zNE2+crNtly4E6BxeZQAyaTHOSxdc3WtGp/jX\nKmO3U5mPMMWbHZxKIs43VceCbpi3qtt9PwRW9qE0XfaipOa+K5fjbNagwFTp\n5E1Aj3WvobOB1q/vkvjy5SXHmiSciUOGoeXu9kOFlQb2nWGVq9FqkhoJnaKz\nCJ+chc9DBKFGD5t0ZpYC/EvFHPS0n48pH7k4ZTw5oRJqptEEwkJ4Raf6ePCA\nTusvPN8Mu5pDv3Ue255Kvu5FCGyojEo6Z7HFa7BOh10m7Y8UxKIJTW4+ud50\n3iY7EbEZcO4gWT/jG3mO5dgBQdTyrxUhirXgXVebWsGOZSfUDDwgHo7by4Q2\nKDk5idY8L80qSxrscX8hjnx1e9QrzhNd2HBSoBBVjE2Zt3e1buRZFSCUeWHr\ncsYlKo1C1+QEyWIRp9UKgLqUZrvTtXLUSCqaZT3yALOLQPWw8FfpdWLGxiKN\nBLsLjbcp8fPKm1ATBP1YDMEEQ2BiJ0jtPtwq2op0ZGzXDRCrqxR3YdqW/tOk\nICeP\r\n=hHJV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD+e8p7NH2xjfmPmPy3tiBc/mzNuDFKDnoMDm7gqOjkQIhAKuVsotrUk2U+30iW5lwSGVDQmGCWVuY/2ANzfmjMj3z"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.3_1578343951720_0.6211777788505906"},"_hasShrinkwrap":false},"1.4.4":{"name":"@architect/utils","version":"1.4.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.597.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1","temp-write":"^4.0.0"},"gitHead":"89d119c672504b13560318ef3e5e2f102907492c","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.4","_nodeVersion":"10.18.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-9BQfBvSmgo0jIMk4sPIgw9ZaUz1qyGiPIwzy49GHVH8VbUT8PnlcIClYDp363h7AD8w1uawWvoHUAgM1GuK8AA==","shasum":"ac78360b412a853a3e6af63a807f58458c08f361","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.4.tgz","fileCount":35,"unpackedSize":72175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeE6CzCRA9TVsSAnZWagAAKMoP+wWLB4+fy1GcnSZrPh9G\nnN4CONyWC3MZ4J1b9GVwqpfaHHxNqLX50D3s6TV1JzQluQf6e8OZTwo7e8vf\n2PtYAPKFg7T8r22ki0yz0gQFaCV9fUmjhgTDelcOTs5xBo8LZfQTAdDoAMyk\nPBFEY6STnR+kP+POL+7hL1oBzVAk3T7lPslLrcjmjOAiN7Uc21KrDDN+kPbd\nHJoXlcSLlH4BjZPme9paYX39CQo2iWo5LoFvgxAXwIhTyGSz84X2Rn4+dvl5\nztKJOFPuujdNm6lZDlFC1+Ti3gcnU/NQLbfyxdV77keErWMi6mL1WfN9NPvd\nJI4HjZBwlAw6FtDhuCQ3b1dHq2dJ7I2dWFJ+TDsLWqkvdzb+v7243MUiinif\ntdrPT91pWGDd0r6tqbavQy6wYW5+texet84Hwxehaenq2NQ8fPnHxrdfFzhC\noaBv6XBKb0Bedsskq6OZDI0GGNX86cXnR+8xMytD1A5fSxgd7wAwAeUkI8P+\n7+5L3Pl/PoyxO4lNqzj+LEKtTK1rTYc6WEyLKrHx8nmhXw3Y4NRc7uJH1fYR\n/BPC6gEFvGTy1i+UWWje8cbhitvvs7HP8hBqttWKwCutPLLGjLkHDQyayzjX\nlMYCMGf9QjtafVA1GqU6pCJCkZUjYnDd3dqxvY3DH8wU7WVGj5UlN9q70Iiu\nMVWv\r\n=x64y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1VkATqb+D3Gf8n+q9mq5TspFwEbkBAjZ8owqswLg3TAiEAg2Fd+lCOIzu7/ZtF5LtJECPu5o6YZ4NSXPNtbgquDW8="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.4_1578344627229_0.6312939449003938"},"_hasShrinkwrap":false},"1.4.5":{"name":"@architect/utils","version":"1.4.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.597.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.0.1","tap-spec":"^5.0.0","tape":"^4.12.1","temp-write":"^4.0.0"},"gitHead":"04e9ffa6344a3aeddecf98e460d5df132a177cb2","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.5","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-QXGo5boTWaO+flREfF96P9qDVL0qndGuQxLih9oOygXNgV11EEdH3/4VgHV+mUP7unS1sQeOiyKcgSHTqNVbMw==","shasum":"dc2784f48364f234096f674ce1b9325b001883f8","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.5.tgz","fileCount":35,"unpackedSize":72898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNKj/CRA9TVsSAnZWagAArMAP/32m+6vjRKq71sjg7Hhr\nmJneKnUudnokR6YhPOkk9QEoZ1YOQmHydZh9OjHctfZreVzxHiFIqefhzyG1\n8ICilsZhfOL9cPmMFyuImDyV0eNLkNIZmfIG0n46e9D9I4BwU20fBu6dFwNg\nVWiZRbRGQQ7eaJgyg8X78Y8zU49hHjijeZMauOeW531bdfzNzJom5ylJ+MZC\nHOU///Bql/QpNaa6Wg9Aa5B+B2qrfksZ17GBZhnUcf5kzOZyelCFwRJZFeHX\nNTmOMDX2hgglzrXOMvzM9YKjgFW1G9NBxTjk2j5H188BrYSOxxlvP6Rc74LE\nPnGUWAFagE8Xpb5wKihWZLXCaBuyWVOoVMYKE82oZCHxlYFSsXx6BZBfQQet\nP3EDQGprf3JQa52TUq/vHt4bTKbEOk+kHphmQNjZQPdkl1UZ0nP+kervt2ir\nDFNVuSE22hSvZzr8/toNPaEZ2lWmFTQtwiaiCviwpJqHezjOFsMQD/ArUGMn\nJWnFNJpQyBn2OQh1Oa0yg/r/HbHb8RKPKWhr98stWRbjLz4pssY6dLlUS5zn\ntVKndfpkqbvtXIwnrw2TPwSTPo8QMaT7zntiJxyTXu3T+4azWxrvOGf14OCp\nUgM9p6cXzoVFz5xElXMF6m7n0vtCFA+1Kh5X7osokU1cY5Q4J0p31xXseyG4\n2G54\r\n=cqal\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDtgiWXUx1I1AnBMbgYE3FYvByQVigz0UCjwDp9spHKlAiEA4ug8vpavu76DlKQxzASgHY6dxFX4REthafTPoAwbfxw="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.5_1580509438681_0.7007752799064151"},"_hasShrinkwrap":false},"1.4.6":{"name":"@architect/utils","version":"1.4.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.611.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.1.1","tap-spec":"^5.0.0","tape":"^4.13.0","temp-write":"^4.0.0"},"gitHead":"0f87888ce3a92d53151525e4c75bac02f94bce8d","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.6","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-X4VJguTIfFXgHB00yFNjEaJU/AMNFmdLrAoLXbAc09QKPCIy9zZgAmduDmHqxhsTe550jvBdmCQky7R68FlNLA==","shasum":"d9f210cabcc4ecdaf2f2b23ab3b63decd5668cc3","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.6.tgz","fileCount":35,"unpackedSize":73036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOfSvCRA9TVsSAnZWagAA2eMP/RJrB16ILMX/fUrYHJnP\nkllEj5f+yawDm245UmuW3zEm1ZPgphrQvsFxJeStfKRLqPhaY+4NaMirV9Xp\nILjAUluBj2CdsFRToTq6LCjTDcCLKQ6E0Hrmlgd63vfyQ4U79ZKEB1S7I8TO\nkyweLXWYNo88HYHgQvWfBERH7MDrmNjWzQD2ld4JqjJUCBCqF1I17OQ5NZaz\n1X7luZAAXHXJUgqyKfqiXM+kXrH00+DtZYZp1TZMM/KNkzpschzRyeLAFOtH\nQiu6R6ov7IGALpLbNYg/JT1yaroyJiY+bp91/nhSfWWTjUSVzVINk2gbviDg\nDYlY8cBQzULquH0vsRx1oMvxnBJfJKxugLAVDsvxFsbz0OiHLb5nZjpyJSlV\n9siak1hJqIULFfW2zfZuO05z4ZosTUkIkLgUU8y6wtMBLv5sca1rKWwRsoBv\nzV7vhFea0VlrTrKVlp9bWTmfykJYjR8qB8DpD0msAgfXBgFsymglJomGs5+X\niXn/iqmTc6w5f4wEJrEE95lGBJv/5nB/qTJhiESrIae4wwoLrq7GL7hux3RT\ngqpYTWCt8+yJF3PEvpm94/oIwxa+HrDBBvFr0uevI29TOX7xQpoGXb1X/18T\nhFv5TGmTBEz48EsNVXUNOuWG13BsFUnYxHIn82ycaWdAI4hZga/IotZIz7Ii\nW/xs\r\n=Ig9G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQjOhL1yIvW8JiCEvBYnIT977ldTzgQbVXDAEZpaJm6gIgcmQZ3L4QP8Rwyuo6X6ttvgZa4raLyDs/OuZ+AwuHJU4="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.6_1580856494820_0.748514431734153"},"_hasShrinkwrap":false},"1.4.7":{"name":"@architect/utils","version":"1.4.7","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"1.2.2","@smallwins/validate":"^4.3.0","chalk":"^3.0.0","glob":"^7.1.6","is-domain-name":"^1.0.1","mkdirp":"^0.5.1","path-sort":"^0.1.0","restore-cursor":"^3.1.0","run-parallel":"^1.1.9","run-series":"^1.1.8","run-waterfall":"^1.1.6","sha":"^3.0.0"},"devDependencies":{"aws-sdk":"^2.611.0","eslint":"^6.8.0","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^8.1.1","tap-spec":"^5.0.0","tape":"^4.13.0","temp-write":"^4.0.0"},"gitHead":"ca78375885ae65da69fbb42f16955d0362dbd515","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.4.7","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-SbSnZs0yMO8wugTeKKBqZVgl6KvWdVGKTOAtXJV3kZi4DwDYjQbCIw/UUkuDrNs0KQQ8Pmyn7m2JcRAaXeTb7Q==","shasum":"b4fed6bd1dd17eb5d3b4f605539214366a02819b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.4.7.tgz","fileCount":35,"unpackedSize":73568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO1KgCRA9TVsSAnZWagAAcXMP/A6CsIP1O+OIf/FvZsn9\nY0Zgpq+Qy9CWi/ZSnNPbM4V+po75Bq3ukDHDnbTvVEzUxZBvXUfzb2lm2QoJ\nm7gAFRz7euIjZS5zivP6waYJkXfn04zSLpHuoW7UdztjPtX4NCduWkmElw+A\n1zTPDoc0vbB4TEhKjXpZXM2ny01pGhYWFqCqMVApFxHuKiYTKOrSqmVw3EUs\nZmRetsDy/AUdrbUM7YK2bCziEAEj/8p97oG8gj/Ue/OBd9QMyzJyRKl2kabY\nGleBeS4zFzxtvS0pu+BX5SGOY0A0Q5nXxowXKQNVYBEganmhUnfp93aNa/tj\nY/zqYyk1M1N+JwvBAHudz2onsVXBf/a4lFIrufqSyPs+1xZYPJKINQAI1uZL\n5zlH26cmolC/y1/JQqgbdhNp/hTq4iA4S6L+iw9yTQboLhDRIEXMce1iGgnw\nzsOTagM2zb7s8QP0gKpIsAiz5nhQCobj9DXn/4z7F8AuGLSYuihFWis92wXE\nby4LlLCr4brH1JIpPK34uwQE/QuF0FPxx7Y/pN/ihckAtk2BIJoIDvPEb2VY\ntZ3+nrwYhtOo6F6KsgYf0D79Drm8GSl+oK7LPPtHNYg3puxr3k1pNqzIQ6vQ\nLRSdSLc83H4WV/pDPP711z7yRuMyuVRgs50df/2KX+7PL5KxlYBamRUsFQBP\nAWfu\r\n=SRGA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyl3ryHNMBbqewTupItctkfoDfI11eJ7SwP7ehCTki2gIhAKMxt0Zs6xP8UkrfuLG1qJj/af+L6o3hps3qi0cjpOZ/"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.7_1580946079577_0.5077325736232137"},"_hasShrinkwrap":false},"1.5.0-RC.0":{"name":"@architect/utils","version":"1.5.0-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.0","@smallwins/validate":"~4.3.0","chalk":"~3.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.636.0","eslint":"^6.8.0","husky":"^4.2.3","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"7f4c85102c84be33bf252ab242d4cd617ce91bc2","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.0-RC.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-TalFFCtRg563VaqrRm2lkHZ0imu35ZAbQSAuwYAD7ZxOwkYYduN4dbd8Dn52gzK4kAovdjm6p2+B82XBlcB2nQ==","shasum":"d6f1c440008dc1c58ae2c5d206caa9c7ff6981b9","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.0-RC.0.tgz","fileCount":33,"unpackedSize":72285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaB5XCRA9TVsSAnZWagAAUKMP/jwmO6O+nPyaR+i3OVxk\nfTK9HHfnxAnOpDOJElVLaSSbLTMxJEEpylsU4KpTHADnQj8GQMvJhzpMCVA0\n9o98U4UhBBEbymbafIdveu4L3wzYutwbLOZTatgydShv6e2taWebIMMwaWZY\nGHfovdeAN6ETeJ0Atkl6LbzNjBi1bizwKlGUUeE/HYtEg9j8DJb+TvClkG3u\nNInKhOidm9tl9wK1ndGUzdzoQJeymLpd+FEUaIHpb9ULEuhgVvygCubENm6k\nwiRHMwRXoTX8mICsG7pTcDYlX1zQ2Czpxpi6TZA2SNyk4Uk0/CrYsvAUuTqU\nLTcS9vu42pHxSbiG5ocdUF4a1JEmyZCpxnafau23vgZ59vxz5MuZ7aRfAfI+\nxSKAlPEaJbk6VCT6K6Uzd4QRIycHKAcAkI/d5sSBbFzB0N1q+yuZc+Ypy6fo\n4WzxXH+898vQqAiyi64FngpTaljXddWB4q4mf9tZkj1PSBzzhKsSLRCfIupR\nKYwEkyl65hgyW5ZghUKnpwFjhui7damy+QFljPhMQ0e9u5/Fll0+4zOPA6Fs\nOfPiywVw9GH5GecRNyeDnF765//HZNkvM5vV/i2zbBAOzbie6w7flTbU6oVS\nJoAAKUQnn6JeX4USZF195X/+oWjO68m97KbhDh15+O0cr6OBtYuofJyWWf/O\n4RW1\r\n=UhcC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBw+OjO5C68o1stB9GxSertPKhUgBuWcNtIxLPtrQC02AiAn3yL8XKwF3aPA/RmNX8+arznYHK6lom2FK11ty/uX2g=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.0-RC.0_1583881815043_0.4855277892778498"},"_hasShrinkwrap":false},"1.5.0":{"name":"@architect/utils","version":"1.5.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.0","@smallwins/validate":"~4.3.0","chalk":"~3.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"663b69d8664e93654e15a810b12b559beee6f8b7","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-UrKeT5kTjD80GQ0iyHWELWkLRR749UwTErO2QhF3ZqdOJ5OS6grHkFOsV1sfMc7rGo97OUUB8WZlSUFXe7xJLQ==","shasum":"78bba2fa88793c206ad68ce5c32c921267b969bd","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.0.tgz","fileCount":33,"unpackedSize":72280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecYxxCRA9TVsSAnZWagAAaloQAIFB3vWlq/NMk6PCki6v\nMw4kgEPRo57QKCUY5x1nneuf6L1GH4e1DgJZjNc0SbWauO2JonSUgaodGisJ\njkT5YXTLCXBPW3FuFc31V4/Znk9H5svWRcuvvqPJRwUifDVMnF6vvoibhJDY\n+fHPB7AzLRQf6A0zwvCQVsg8hpsNeNj5Sjog8v+TIN1Er/xRANIdHaMvjk3X\n9URDF0jRjvrhMe/pj/aqjVX7gkH2RXpfgApQ9nhfhgE+/4F8uDPdDVl3rXLU\nL1jnwhHtxu9mp9K7sLDSVr4lU7bo62qDZY/bs+oVioM0IK0uN3Z+zSjCh+mH\ngLp7Oj+lWXjehXVnGVotxFZ1/s9y+lRCExUx0fd0pEZcuvN2BTuy5LZLvwyE\n8bcxp/iFkx2doLPZaut6fCb9JTRu+4CjW7qVsorkS6oukN3KTY4Wr93fryft\n1x9zPIiBxt7s0cXs4/PTTvNg9gMj66HiVrN8WjMe7Qiw5iop4wsQk6hVExHJ\nFj308pB8z9AkgHFKGhb/UVFL2FBqeT7TZ1y+6h/FgV5qdonmdh1HNhB/xXBu\n4WPzZej/dMZbZ1ClUcpG0x3Qfmb+GMQlsRpaaUbbL39HcD3xhnmiVq8l+7fm\n9ZdoLeZP2h8mstCq7dnWc6WoeVZKAPTdyfjBQ6a5OI9/dfOOww0g/uqhjhAq\nMnYk\r\n=Xvjt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqZ2ckEVdlzXej6ya69+3mZy3xnIj+l6kJv0D+4E7j1AIhAPggAPDDdxf71rffhBlsyFvHQxaRd4aGJUMPIwP7Qihk"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.0_1584499824720_0.015116629099522827"},"_hasShrinkwrap":false},"1.5.1-RC.0":{"name":"@architect/utils","version":"1.5.1-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","coverage":"istanbul cover tape test/*-test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"2.1.1-RC.0","@smallwins/validate":"~4.3.0","chalk":"~3.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","istanbul":"^0.4.5","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"1d08e7895a2f130dbcabf61f06f625859234d476","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.1-RC.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Sj5hSOz7ZATncna7BvWJdj1WEy53VSQsNxEe2EU8wsWrElFlFclp0xd2CMCfW6IiPjrDe6o7nljw49ksAzjwfg==","shasum":"c3636d623276b4fb3463015cfb8b1969ba8b84ec","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.1-RC.0.tgz","fileCount":33,"unpackedSize":72289,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJed6zqCRA9TVsSAnZWagAAeuAP/itsjRoQ5l0dg3qad45v\nj6C4NA/DZuyL7Hb0kU0Cau1JiMmrbB7w6s1TChXS25xqORnRnoGFyBt1YmDQ\nZbeUBpdKmYT6Q3gzOPz3tmNicab7yJYyqO0Vmpua+09tD6TVCIbbKRtRGaN4\ni4e6RtqzyZozKjt1UuyWyREv8nJQpjUjtvPpe9ZaDPC+eTwwpF9Izyan2wXl\npycY6JF6w313Q2t3bShlisZJkfqjTr/8Oa+QLx0MH+cM3jirwOnH7hqdGWAd\njfrYTVqXqRuniWnftqFiqyaFAVSmo+xTd4da4rJ8iQLZtmDoaRxJgr4+BLyM\nzJM4S6GApZZEYhoUog0r7jtJGsTfdHLID3KNyOlnxXMIT8nQuHfO1cIOAURf\nObaGQLbj0nfJchTB5/3yalLcSQk4/fTpsd8uehlLwP5Fans0BIrIL1MMG2gA\nhlWv/5ePs020UQSKpqXBkCMnVLYBUP/gIIdzY5hpRFijqbEo31IG/QZ91oVD\n4DHQgQVCGCLKQTOTAQxDxMGaaBEFZSiScY+dNxkY0GbUDN5ENkS1VkMcxFMp\nJkcI9LiNkMT1XU58Q3ZZ+5aCDvVJedSC8j/GsxVQw5+Y9k+1NNE1bW8/g8IL\naGz5fSgWR/QbPQyvtv9zvYRW2f86Y6uI/u9/zgdWF/z7kfMFHP065CQ6fDph\nSGA3\r\n=zPyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsEnQEbrIeTeUNCXCR0tGY9SQm0OK2pP1lYMqkbIKbBAIgblwzqZnWQqd43Am0ddiRiW868nR5U40GitsSRlwx7rs="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.1-RC.0_1584901354445_0.9390204244175673"},"_hasShrinkwrap":false},"1.5.1":{"name":"@architect/utils","version":"1.5.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"2.1.1","@smallwins/validate":"~4.3.0","chalk":"~3.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"9623d440ec184840d4cded04b9791b934d96de2b","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.1","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-88NQu605zYnSH3nFJg+9b4OvN8wf0EAVVxBRv8SVD/6xHkWQkzinL4RDkI6oKBxeA062z8p9422x62k7//g29Q==","shasum":"80bf951b18b47c5cb5fb1a9f039a456169b40cd7","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.1.tgz","fileCount":33,"unpackedSize":72265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJed+xYCRA9TVsSAnZWagAAptAQAJYI5bG4Ea0tGkW6uOGS\nGZa/rlV0yJJ/SM1sG6B7oXV2oBhl6n3L12B5O+xo6j2Eu6QRAqbh4TPupd1c\nQpJv3BwF5FdRTdguZKK0m3NQDpXDYk/I49z4g67q353vl1izZX5v8/TWCwGh\n0NWJTKo65OflDXRO5sbOlwKdM/LCfNP2lPjk/eWKAGg++KrfWf8ErPByz5xO\n79jCqfG5UbNXWCLYB4SzhlnBCt0i/j5mePlCTw0oN+i2NWVroTcRot99mcrX\npCOTjJSy2x9hpT89bwhmn6SSfxmcEd6RXpL537PHQrxp7POPf+J+DGp8l6G4\nD9AOSVji38yfi8iUWdxm7Bd5/Xbc1jF06GJJNG87qDu/5ea2TCxLka52tQNP\nDt+FD5SvypGskK5N+jiO7nztgUhR1oP6F8APPmQjffIlnSbtmFntkWrdovxF\nFzmfhC46j01SjZQ5wIcy+JOZl7rE35d8BOb7xR+C1Cmr7HLykO/xA6IB9Wtm\nRXxWimP7g69DktwDzAuVWPcNJg2mkr0Uw6ogQ/9huQ6rJHlOT56JApfuZkuY\nZPPGekLabgy9R+2PbzZZ6KrzHxoFXMF7RXNDyJ/ZRG3KdASyevDqKKRUBNf/\nymNXzgG+UQ4atnmuLTOaSllvJkPcEsaddZMbq2EbstIZg1iq+w5Xh1I6xQgO\njyFv\r\n=qjn+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn6FTw9ONTS1W3oeultqJwTAx5DTFBrlSRo6sK4A6FKgIhANQTwC5OCFVjUoTUkLfYouYwEcXHRGl+chtMdtqkYl2r"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.1_1584917592178_0.4701242156405401"},"_hasShrinkwrap":false},"1.5.2":{"name":"@architect/utils","version":"1.5.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~3.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"c2b634790ca0a73309df3eb9b1cc2adf2fc15afa","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.2","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-eUXgvoKuY2zBJmm25OQfiy2BW+26lrGa5Uu85X/2sjOxjYwrjJFHW2C+MijiBXVljbIGaqYPOuRa73lYpP77yA==","shasum":"8d167ac47786af3ef8dcdb4f660da71ba32d17d7","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.2.tgz","fileCount":33,"unpackedSize":72266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeCAmCRA9TVsSAnZWagAAlPMQAIdphRt0Ev3zc3QIiKhD\nx/Or/VtL+ZNF4GCA86xxmWUcARIs5QYHyMZkDa/Y3Sb9XEgxvPHh6Tu4b++d\n9qMNxXF4egmTHfVY8HSvfw4vCHcfS/e812vbeW1lrlBjpGIL0sIV9MhIa26D\ncjpIBXdVkPNHzqszxYmDQnq+GaH40DZhL1kHS/q7ccEF3oq0zGea9VL8d6kS\nFxRZqLRpVd5WgPD8QhC2ukQ+E3/rPntX29rLZPEoLSYuMaBiJA/lG9sIApyE\nZDkFp7hwQDs+FKi5wz7CjOrbmnz/q/g7Zg74JVCeXj2JB/gk87/4SkoL2bUK\nEN5u2rBd6ZG8JU2kGeVAW4GOO3ALIMFk9+eKQ6+nhtUcShZu9ZqDizK/NJfF\n/tgMGPbReroOv+YLMqJZjdMJbKFjkXegt/G9SLfhiSa5/tEozBzk6Tlm8gRl\nDuPcS5qZ1FMjHZ3eBEv9k7vpBRUvDvuclww/AuRenX76IxnpkL+uDq/4Wb04\nWVZPmDiFRtV4fOPs2a1VeztfbuYwsAPfRpN9KntyJhM/8mqqEuelr4bjefwN\nl82ITAnnDUCQX/WSP/rOtdF/U0NHgOkiKFQmsOwAKyCWaORPhL/uu+zhx5Is\n9GYOXiYEB2ytfo3YciZqqPmAPL9tU7KlyuPOEtd0hKnOK27uHIEx8+H1wvf5\nvpdm\r\n=BAjR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4lPmMrTGKaE8m/MKbsFgDx5JOyhdAd0b1BjFsXUjV6wIhALIU81SVR7gAun/C0ajnhMIzjLsmthXS+oUfXUv3pdFO"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.2_1584930853523_0.7928124613922736"},"_hasShrinkwrap":false},"1.5.3-RC.0":{"name":"@architect/utils","version":"1.5.3-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"216c9073adf28895cb0a8ac586e13165fe0a68fa","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.3-RC.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ahkNQRTNCCO41Auek4DA7XUE+sCl9DjAFxB3TrVt3jG1TbyfpbDH2buslnfg8TFha5WmQW+wWUd0Sw5ayH9Ovw==","shasum":"161e6cb0e1869bab570073edd0733200f5687f6c","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.3-RC.0.tgz","fileCount":33,"unpackedSize":72577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejOZwCRA9TVsSAnZWagAAXEYP/1/+Ae8RHHNWSnOqLPPb\nwY5hN3f8WMihJW88NG4lLvlAOXWb/R5K0uYoq0hYRa4Og3xRhAxfBANSCNnv\nJU/fTDoxegrVr1RyBanTaNUC8VP+gkHMSIn2pwNcquRq/oa6U9w63Bggub5p\n47mwyD1zZKuOavcyI4JhvswIV7MDM6vFLLlF3UofiVf1Uu2n0ntQeVR87F/q\noZ+Mq2GgykZ4JEWp/tUAnxlTfTTbd01aZPtnozrD0+3F+ihEpwOR/WJ/0ubK\nYFMk2KufYXhFNJ31EtoXERrrsHSAAraAUSpb3JD/SKp6446bXnpVxsxMWKAX\nh6MmJiFB1PUD9mCf+qiS7VId1h7QG49LwdUF4EpgzLAd2cwbLTobRV3I72LU\ncHlYRl1alYyO6d57DdLxqXKxVcOevEDWDn1TXSpQ3gLgAVWUjokA8Mhv7hsp\nEatkLy9v9o27ugyvsfZFn5qmsHMnNQvGs5nywPuXt0ZTf2kLNxycUdCH1Lp8\nZIku3KlLPefQRthVWGZCsOBwR/x7ORzd99B9WgK6kPNFfK04/5z647ngY3kd\nFr0vTxf7aRUYvCKd4UoZS1OiRCBAlije+t7YPCIcfwx01U9QC2pxIhuV6keS\n4POV6Nj3/4O0lw/HOzeYdOZtUeG7CRe61GkSyILZBhEl8xq7zJiiqm4iznLf\nPYSo\r\n=x/76\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuL+WvEkG0K2JLc3/XAt7QH3o7ZPZrT9FgEt7Wk/UTbAiEAmmWj3gfxLUhdFKSf2KyLFQ8FgACzZ1kqTC021EBdyyg="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.3-RC.0_1586292335810_0.20352037157865843"},"_hasShrinkwrap":false},"1.5.3":{"name":"@architect/utils","version":"1.5.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"88be48e4e00bb278dd247b722c53cada010d39ae","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.3","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wG/RA8nTguDtQEbSq9sUS7a258F5DNmG3upDIT5hBwuv93NDTPmCIWetMqWfBm5O4hy1Lk20ISdraFpfd6SDmA==","shasum":"66daa4f57f5fafeae14be75ad528688cf968e18a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.3.tgz","fileCount":33,"unpackedSize":72572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejO41CRA9TVsSAnZWagAA0IIP/jsA88YPKEPsiqoWqQfC\nigpgY48+e73P3LoTN9kz+O53KQHMJrO3W1OZuCv+FxRf/8TBsXiL1BmASPfD\nskoRqv8O1H+G9NhCWciYghGrX5pJanv2AZr58O6XTkwLOOS8P3j7HqmoA2ur\nHwuYKqqMzsw6rM7ZVe/vPsPYjfk6ZXzzA/yuWtJ6nr7kfYZRe7uzpzRrjp2w\nPaSG287KlVA/HAS1EdUxUQKvk0OyeS+xyuGSeN4N1zQA4rxS0+rb2ZwsXzo0\nhYSmVcQZ6cz0T0OaawZZdnEdIpeX8lVt5+FJl8nUoGyAKwKSbs9KmQ4z1ygp\nUhRhG6X/G8GQNx9raRJAUG2wZVEksxJMHE2u0YFkJe4S+vsrU9aiizsN5dmd\n3rbBRsYiZdUvzKO3nZl9MiePxClEsEQsRqgsz2cq7TDKF6tuZek1kTmVWbPA\nELfITAeU+VeFwAi2zlkzTAtS4Hlx24TaPWe9lJ1SsiAhBb5tXcKQU8sDN9vV\nIgUKECSxwdxI3KqrzmbxSaYVmlJZEp9U6qsWPz8iQa3I7sQmgQP487kxioim\nuff1pkHxSeIdr8/dWOfSz3MHRlwIZNwMu+2mUXMfW0bXV280Y4eJeHkOWH7h\niV6MiF7us62CVoHk3t044Myn00UNZX5rqEae9Xvzq+8aEE4ENKEc/MyBe5KN\nMV5U\r\n=b8CE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE1ASBX48ocKxOgYWqaC/JEwZBE+f+FaNvl2W3xhMfxnAiB+AW43eHwuP3B2gl2uMgwaQdxH6WaNGJ4IA1w55h3cHg=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.3_1586294325250_0.8822018414896919"},"_hasShrinkwrap":false},"1.5.4":{"name":"@architect/utils","version":"1.5.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"ba64a0d537d9b99183bced0633f424a9d262b90a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.4","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-nr6pe/hithWeB2+EC8On5cGbXUCODClyzg3+IKRb0rLoMAu/Qrf9BP5o5KM5FSTC5CeDvE/udgYsX9eBr+GcTw==","shasum":"03870bd4d44e6a6cf52e2934be8688d8eacc9130","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.4.tgz","fileCount":33,"unpackedSize":72542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoQDuCRA9TVsSAnZWagAAzu8P/RfjILFy14emwnJHkfSb\nwAoaw3uHp00spUbi+RPpAMhsv4DbEu/sUxq1Rpg+TJLy9q7QYzT90Kk0fwfx\nMtLzTBeQGm3M46lbmKhWOLwO8cVYNzZQt63+MdOHpVzWN4TSMvXj9nlg3tSR\n7q++2OxmDQiX0vpboB2BPpLM85/WoaZmvLGtuuVXrHBo0BYCrgttWNx6WLz5\nyDktFEmPSgRiILUvqUaTku+ost9j1OEotg7dnDSPSYTUwjF3IV1XGur0fsLX\nxtutG0wOp97WFLBYlrr8cKFUHXAFRTmlXv+8EeOJpFHJGtNxa0GpI8Dp52gC\nwWN/vJLym9ocA+bBqCbFwoA2atl+qBoU2M7I1tjJprxM0I27lWbG53nSfBTS\n8qgioXAdfb/O+2u4W+V3ymOZvrwqifkDZCOmDry6YNcxPrQbFE4Rk1Bojd4/\nlYqntLQqngRw6UoXXHTmAT7rkVJ3Peh3ydEPaK1JpNpTo1gLCcReJgaViGeB\nvSCzbAGEi0kT9m9bkKzyb56T69xB8rweHKH4zkczswORIa2HPVWEiBbr6ItW\nFMG51b2r2b6PpWjtqPYZpMMupBFkKuYwFLBfFVpIImHVR7kVGKJjHqHsE7ut\nqiiPCkwhPJszcf7xOwzyxwJi+dONCXN2bIl9IhvmT3/SBWqzxEApGcYuy8th\nK1s2\r\n=yIQO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDEjCIIkwU5n42MPnGwE3DWSanmu0cLDUO0yePGTnr8SAiAWMPgKsGV2UYKPsGn/TupyBf7UmbGR9b7xSm0V//AKhg=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.4_1587609837695_0.1901339558296289"},"_hasShrinkwrap":false},"1.5.5":{"name":"@architect/utils","version":"1.5.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"9ff27940aefae867189578dcc8efbd79ad2f61d9","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.5","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9bLcwmfnJQFt4odrot6usjXonZyvV9/P7j2ogoOTFXWUmKgY/iIfr9Z9Xs0YFuY78R1kLh2PxXrn0yKMu5MLMA==","shasum":"11b10f738fc05a7b37eb3d9fc36b8cc661c8c3f0","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.5.tgz","fileCount":33,"unpackedSize":72643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesOWcCRA9TVsSAnZWagAAFpwP/jxudakw1PTUHHf3FtpH\nQ9W+4NB2B9bj5itH7F6X++GFMTWDK3W/rDAaJl+MMg6kAtGAOiZm203Uf2sI\nMf9KT3jZuUnNG9F7v5TTfwtJHEOAOnWdkhAdVtTb4Lm6SFLVxDW7QIqRkInA\n19eptjYj+uUDaUspGqhlNXk9ks/+9po82G7NxIxleFn1i9xJQIyPsWMOHhGp\nqORpAVMVI2DLMWGo/8gb+6d/G48OYq1H0LgEc/Y3NcZ02pK8GfexaVx2D2xC\nsud46jwVJ/KmYHpw3Iqetg3uXQhnayDpapGCpludEaAH9qFTxFS2cbIhgtOg\nEA3HKMnBbEm3ydvEgk6zzpkxtwtuqj9AYwCHkmGXh0S1QzoS7ewgEPMiXfFY\nJYwdmUCoYA2vJJOZEDwr+WVcWcYk7YBmouqFGSQbgUFjihpslYfuSnFjTKrL\n075W0ohIhkXHsJW6Dlyt+Yl+b9RchrsG4dDX91tJpKdVgMrJEWlMh+8O1KWs\n+2N+fIkMjCRrAkpbeIba8PIS2JmPJxbBCU6iNhuOdCU/h2CJcPTaaB7Qp27E\nJyz9drOtU5b0epF+HPoTw4s+XT9VKmsVBGIeGE8HdFzOH+tTLnC8XyDhkVsc\n+LSha8tVK7A+Ij9I+5uhgIlFm5XGGW9h2fEBpdhIuEdXBA0Mz1I0IhcSUZv5\nz2vr\r\n=3den\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9Rq5Vklo4UikPk32U+WMLOcUa+z9oUVyf9eeeT+wNnAiBjf4/3qQAQCGfZSGkTBolsd8XgvJgLH/7QkFuxNs/mlQ=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.5_1588651419670_0.7785573400234005"},"_hasShrinkwrap":false},"1.5.6":{"name":"@architect/utils","version":"1.5.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"07f6e0268fdfc17539f6b44d4c91756050f192ec","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.6","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DLX3BVx7WbLZ9Px0Tv74nXn3/HuiQUgy4RV/4RiiwhWEYYynLfdMC8Ky4p0mHVFaVpbKu8gqm34gFedhyVDGRg==","shasum":"5cfe86c30ef60f2f6d784aee7dca10661b81c035","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.6.tgz","fileCount":33,"unpackedSize":72720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewbslCRA9TVsSAnZWagAA6L0P/0OgNP3xsAoDQjlHwq5D\nlsIdx0c9lRpeePbLhb6Qs+zOAMK5qc0Biv2aXMge8q2UdErXCbNUphMy0siO\n/5lyQBuWrGPTGv4rHqDxejhc7hNbnQNcu6wTN4tR8ma0gw5/YvTBq4fSj24E\nFPu6CAEO8ihJv8qyTovlEs0jMXJKbgwH9BdDBS8gBXsqOnlUTIIYnHkwCKhR\nG1gGlH03LlMP7qQxesCgxSI0yKoIXBolgaDGHFHAcFtGOU30yHW+UdRE6mu9\nOw0MwuOieD62KdpFKVrxqmIna9dt7guggR6yDIxe9ywOjTmddY/pGOVxdwKj\nyZYPt284yzVSrq+YAxRVGWJQBktACwoXw9/uPES7vkuuSu6IUL6YSZtwx06H\nsm/bbU9P7YPgMzfrk2RfjW66eelO421bIpMaeXdJm0j6NyblnxHTu+Y1BEyd\nSFKg5dcDS3zGjjEqQmHsiuDjgK2hXZ1GtgjsSvM4kaowSw0xVg9YKG0k+hme\nfI2v5B+4QXykr9veCSAoNY1oYEJFHGNnNlCqQDaSv0NZs/BnZ2cfoc8BFq0n\ndc1zaVUsKZSqWgJ0Ci1ehCpQDfX86urRPwoHXTrxWRcW6fjVhew3ndcBX5im\nKh4mIyXhY3U8SL7RszTxlL1yRpsy4FUtPZTnsResew0QrTcBL0zxYCtLQGRi\no6Co\r\n=xBxh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi8PpcERjYdWNxl3rqUqEtSxL9QODZNtCo+uMSug751gIhALKdbtAUY9c4kGb354h5Or10Xc9rX7daX6UvIEDh9ouM"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.6_1589754660905_0.5086394191989578"},"_hasShrinkwrap":false},"1.5.7":{"name":"@architect/utils","version":"1.5.7","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.1","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.3","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^6.8.0","husky":"^4.2.3","proxyquire":"^2.1.3","sinon":"^9.0.1","tap-spec":"^5.0.0","tape":"^4.13.2","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"d29f35191377c20c42cccdb8c63c98b8ae2608ee","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.7","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LAbl/0YkJTXxomWiwwsOtLTxxbm9Q3fYJR+9x9oRXFj6GjCub9nNs1hqB8Bw91Xn84sy4sHkCH0IO3b9zvQgeA==","shasum":"56dad5b9d7648c90159cb79a13a9fbe8162e6d3d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.7.tgz","fileCount":33,"unpackedSize":72915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewc1PCRA9TVsSAnZWagAAQ1wP/A3AXM9OEXrD+Ybi17aI\n/monVHhRuTu9c2m8MVHwj0xtKIUEi6VCmwuzsrZwPzLqyqhmbqJRfBcFwcBF\nIvQ2FtyWR5GQvxlrjv+5/AJqYbUD7zVEqsvgOkjztNKZfaCnA8NprtGEfZyJ\nqV2fRrdhw80vCR1zPwFkdZZOhS4rux0fpXz6yleQd19krYMz17i7UboZWV95\nvYaP2+eEi5ssCfnv1PntewfXjjINXsUxun9QSw3mhYxtECWTtGf4v3GJoALy\nkk47uzi6hM1iV+GtwSo50JHPVAanvaK1UUqLUyWF4eZPvKJ7qarM2u/cAZMP\n1naP7cX/euDV11o7S55Um+K2uEnU/niXSpFcf1B4XVAPwdRzloD8tyb2XT80\n48/SRoggaFmUSXabWBJo+OuhEoC5CbmsBDG6CD//G/pMSfgXfoauucOgZlmv\n0WPyKOTxDi0XND+zkHb6oii9u9Fvshdn4wYVfryF3XPSLpTSXbCXv53Vp5yy\nyrenkfSBzn8Mv4HtHYDsxM1mHjFarI4nNQj6GJVwziigb131yV1wqt8SQjIc\n4V+tSTcEaSkqZqkKzaNMyi6gAgGOJDAo98Xdo/VIGFp1BaRtdZQnIoLhfLgu\nQhtCkbOFChXH0XrrBUYtlWb0qCeIEknTQRYNX3DIpHkVim+9AmTst71AN+E5\njG6e\r\n=Gcp5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+z0pMQCd+zIpO+NzhJ/XHea1+01Fe9XV7mwl7vwJmAwIhAKRNn7Jc5K0kpPd5dmj9yf6hZ/m5MrA9k89nvv2bTaHl"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.7_1589759311398_0.2393810595135124"},"_hasShrinkwrap":false},"1.5.8-RC.0":{"name":"@architect/utils","version":"1.5.8-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.4","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"df8d40f2b2b7f64aa2ab02423042f06acc99bc80","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.8-RC.0","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-1rVtA0cq31c9EVWuJHJA9B2QimCrs3qTXqOpMq2qWtfJCoUbkBAZLaz22+VMWYWgYjDz8GeHsyysQF61QdYSCw==","shasum":"053ece7e6b918fc871e83e1885c8c7f2a8219697","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.8-RC.0.tgz","fileCount":33,"unpackedSize":73487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3A5FCRA9TVsSAnZWagAAjf8P+wQ1lw2/EOUODoqmBELh\njm6Gid5tmaXMJJwanbi8oGOO0giTWgFMoNMDuYXzTSWG0GjQkKeEEG1TrfFq\nKaoXl6xXZrr5Ptpceinw/q1L+FwUBE4Hv9KByr42kLE1T38cPPTkOUUR8KWd\n/RfRIs3CBXDYSzB9z6pfYLoMa/AZf+bOi3e0oQNVxVuKtuejWzflB5qAz/sz\nvMfRoaZ4zmAq4q1hffUWnYQ+9G+0yvKTsmbOqkfwqqj+i59Eon6DmirrloSJ\n5/8WvDTE9Qher/yYPwsfASmc2ZCkqiW1sjUUjneLfs4mry4h1zjcSKTKLXhs\nrkPt9UBf+c6cvBlwT95DlpVNYFxi6D9tFfOde91MCGil8KPRIWjMp5gH/R8m\nt4ROrGihccVoQCKGIZD758oTbq8WIDvsy4c0ZOOgKW31CHyNqBdvuCTUWrAT\nvfRhB9uiFcLISxoi6TLKZKuBzRHN2AaWNYlI9XyG0g45sD/eCDdPcQeBszGx\nClaUOTI6VigpDned3qMH7lqvrd99odIwfqjgc43T/YH6AGEWn5xmySlsQYgH\neiC3UPfcAuVky2whWBERx9yXOowq8cIlxsCB3Mx43mHfyrJuO81ZglN8HT7m\nvGK/k8iTjPdTDpbeH8VjtNQ2m1M7Uk4qaYq3n3QBWd6Sz2ClmuWEZIdna6ay\naTOc\r\n=5UYD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHzcAKkmnj7HlXZhdb10f9BBxwNSbYEm+b8nuh5H12uQCIDkAeqdYrsuQ0qm4hgoKJUBOhOnyA8z+yIlLgVYkYghD"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.8-RC.0_1591479876939_0.2851435738658443"},"_hasShrinkwrap":false},"1.5.8-RC.1":{"name":"@architect/utils","version":"1.5.8-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","mkdirp":"~1.0.4","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"72815cf547e349479d41d707000c4910428d87b4","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.8-RC.1","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-k9hTtlYu7Bv7WJU+L0/sC+8YA0jaX4wPK1LxeFEQLIqzpH7mrxmuwJ/hutcHvg+bs7z8HaVhvrluqVfLYXq6tw==","shasum":"e1113d8f91d1fc6112cee56f63ab9943977bc2e4","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.8-RC.1.tgz","fileCount":33,"unpackedSize":73672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3EjsCRA9TVsSAnZWagAAR2kP/0sWnV75sht6kW6hxzvP\nYbhJm3+ovUZ4RdO3lycK9lc/3iCJxKDgcKodAWZga0jnJ9c4Efwg/QYVZCkw\nn/doucjZwPbvQqjGxR/QrrVAfXvDw7NR7zSbZnJnCM4GcwbT+mZ3dRTvLWWO\nHD50qZmipYK+4EWoAfWUVTK4hZjorzYIqWOxpPVPx1Zll89qPh8Q5e28vWLZ\n6vbjxzGlp+qFMKC07efO+6sWPo5pscW1TvwsyLP2AFtfHtJVOPjsAe8q92oz\ntyyrWaRLHncHygb/moQGq3Ag1Efl07ZsOkkpewRGVjJN31OJJGFv5/oezELH\njZ8PKgBYqhfgqi2jgiJiWrdDjW+t9tb6T9oe7LsNk4Dysu0SklGDBKZqqJFg\n3hu9kWNTJB/z+c88ghxph2LViQX6h5EfaikIYHcJ6ycQ+JbKIdxcq57mYVSP\nqP4tR5ggMIzv1Y0Yj24jsQ72+DRpkL7XucOXiHO9ZazFcVMZz+6EKcB28+VW\nneiKJ+aINR1vlB9RoRoyCQcqCiliUQ+wxRhQ40a5D3LANvJqOyng3fxy9pRk\nmtOn35o6SCbdnsl1HdCZiVaQoqCZ7AN9t0O3kGuvh1XFWMDKhP+Qqk9knrdN\n2ZwYUD2jEgiHuqNuoKXqN5vcP9C9K3cWp95YqTlOfZ0fBnqH4TGfYV7hofpU\n3ewR\r\n=aF3R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC22Y64DWLjFBnSaKmSlbzjmTgCOTBgnP9IXiqCmQeHXwIgF2Ovk+TWI97nYFsNwbw/xmwtiBm+TNNNQBSfScfxKZU="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.8-RC.1_1591494892188_0.49864059821835105"},"_hasShrinkwrap":false},"1.5.8-RC.2":{"name":"@architect/utils","version":"1.5.8-RC.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"c8e94b37b759a792275abd14ea79468ae59a30b0","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.8-RC.2","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-IdjXksA0LVeiJgExDZtP++HtmFJ99ggHCecoU2pIisFWdPtXTYy4X8d0tqaLkExEEhyscmB5etuRsofq7u/f8Q==","shasum":"538fbcfb7bba9b95db68d978920a660eb2cd1630","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.8-RC.2.tgz","fileCount":33,"unpackedSize":74001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3bEXCRA9TVsSAnZWagAApbwP/RDy8hi1+9X1iwSPf/EY\nmIyhCcgcP1BMJ0n8sDxElGD6osg7T/xisKTNV7PHW2GbX/eXbI2PKkrCEfK8\nszbZlNOiE3vWaGAz4lJGmxDjbdgbnQgah7/nk0AG2oZ/sF+OETo1BnJGIlBP\nz5DP2QNr8Be1drfpJXWRP1y8xyZFEBzvKq4xB1a0243BXxlGsXcqIWFV/PF5\n3yrEINh+2umLCGtC97fx7FA6/vj/ni1jZksLeSakv0Iq7XcBkj4UuPurQywL\n1fklu09pwzDcN5BPryo680q3fCupnkU8NJKE8rsCxOQ5O8D5RoQYjuy5yvuB\n34m4v2cOiOo+QTOnIDIn1B4qf/QX43EY9puioy9bHwDTld0XlNt7y/LqjRyC\numlU8Vvr104Ni8DjNVKL65Vw12XzLMWN89R36PQ4qd45bYbS5tLEUmf2MXjD\nUv9YplHL5DIPZ44YhjZVu4nR3boPBaSVafAdt+CfycAHRtJMAtRBci5pwvcT\nCfTxgjeucjW1VVQpY3MnPFI/R39L5a6S9SxwdlxlxXJNwYVgB3zymxjy12mW\nTTarenRLIDVimeZBYKJDk3GzL0n4juYvGE5bi4xWa/BKCQFEiUF3hafLSADv\nEKxW49rqoV2as/wuk4x3q7DH+TN0kf8orYW1pqtHfM9sHAR2BMTa+XPBoxh2\nhZ8+\r\n=2ZaJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDmrxSPJaCCY5GQRyeGhpilVM27PBZIG6/pT9fzaP62eAiEAgLM/MT7/nA3rgfu5C2Y88xrW8XLsklRNp52KHsN0zuY="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.8-RC.2_1591587094817_0.051443202794522414"},"_hasShrinkwrap":false},"1.5.8-RC.3":{"name":"@architect/utils","version":"1.5.8-RC.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"2a2333326d84e321d8bbecb53f7afb1ba03f8226","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.8-RC.3","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-b6tcrfIrsmLwgm/WB9j37XHcn0mzdIoDm3MwWEVIEBZ6Imev4curT9oBE9G12tD9ghT4Iu/rZqmSHYY16KDvIA==","shasum":"6f7cbcbb743c4b87385ceb7811d2c4e84e45099b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.8-RC.3.tgz","fileCount":33,"unpackedSize":73739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3naICRA9TVsSAnZWagAAp5sQAJqd4mTeqb2EtczioQP5\nCLxge5FOfhLrtFKUSfEdTDON3ymwHA8WU+4OwJVyOix6u7scWAyeMTACFlYb\nZbxohL8VVDEd528epponjDyyDRhYA1zqvI6RkDFA0jo61EAegVTYeuMoe5Jj\naUyE30kRmO5+3XhQ2z1UwKKh3APu20DGJQgSbopNVBs9oYhfN3h2dbzXBH8t\n1IzigUkcHTw195S1Z4cRHEoJcNUDoK0WuucwIycw3gsmidehmYJf7iRmAX1w\n1xWSo3/FrZj6f2l8KVYZ+nZbR7YWbs+2S09LZMSl+evCIZXy8v3JKnzWUx/m\n1LYrH/iYFWQB2PExn6TW9ZIOdyuOLa8k95e11EW5NVaCMwVrpgdXLLRnTp/o\nhU4zqNVAx92WPBlVZUPcUPVzS1NFzN+TdslJDWGfoowzt+qAXR5Ugrr0TZKo\nY0N1+3gCdfZM+oUxAzY7872oeVA8GNT9J47gB6NT88y7fG/VOEDOfFlJL5jX\nG8Nah2r6LTn/yoOKYP1yhO8DD46WrH606KhIavii6p9lv8W4tMhKrDiCYTzz\nlWTbF/Fw7Qvc7evqs8QtgT4m2taAwpwmmsUtSYLtWjvZRvhmRMPkkuxodPqK\nZkZub0wHG6a9xtMlqJVSjVCjNOdOnzrrbbKOSS3HcTy87k+NXObUOY+2Bzhv\nQNu+\r\n=XhVH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMjjdX4bGol6TeinbJubWZi7ORd1rAIcpEuZdIrkNG4AIhAM+hKSHWwG1HM+npyUFUMz4Hm8wXK4pyMswV2crgkBd5"}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.8-RC.3_1591637640316_0.01723775052296439"},"_hasShrinkwrap":false},"1.5.8":{"name":"@architect/utils","version":"1.5.8","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"375b5229f27d13573688450a5f890e86617c556d","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.8","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TWIe345EupMpMGSXisr3SD+l2OcZpBdZD7dUxEDFk7UgZU6XRZxnyp9GlPQfSDKgGPtCVP9Jl8NvinddVT3Qjw==","shasum":"c1a2688beecd64ba502262b16ad2ca66cebee437","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.8.tgz","fileCount":33,"unpackedSize":73739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3r8pCRA9TVsSAnZWagAAFwYQAJja7hRQsdd7LV4QdXPN\n5tu8yAYCZYsy/RJtXKPfvbIXXWOWgrKGlLw8UpTMOrccGQCqVW0cn58wexMx\nNZnWrV/ZoQajlCXWSH12du17lFAjgVVyzv1ajf3fWKQuunNLhlJGH/mr9lmC\nsHwbcflWJ4yaaeP8rLv2GRREwQqY7/RY4Er96a/txJqFz6/lTeyNP6q68kSK\nO7elyA4c18g9zoyOhPjAL2xtok1I++knZWiidHwXqJVd7APCwsjmaj8KlEM7\ndKvi305FQIC0dPwaHdOM9y3W/mhc2OJfpiLcPVT2Y89uw/+5Y7AS5Y9FBYGs\nGVfx7LYDcVRKkOavmzbyA3JJ4EECLT9baDTlvEok9372oaCDqGSVTQLMoTYN\n3mpFjLk7cPrZUnS5hDI9Nwi5tjKLGPCWqdMb+VA7trsORci7mKYTjl8jxzWh\nx5sdXeLKfhLhZLnJV4BG5PEe1ha+S2NzJrlIMlUqMPLrUXKEfq1sb3wSl+7E\nVsbVkQTEGOZI4fAyMRI9bpjmexMHhb5xPqB8xSt3CSh3z1z/uuQmJyS4u6gP\nNl9lYKLXd+tTY9fVn6Tz+cZbxJx8f7erOPpN6/uEONBE7RMvqWsTLVFoLyXp\nTY2XwYY8H1FvdJSL5MhG9uBlK5EFX4bl+esM8ZmsdHAKSo7oOEecAhOwLLpt\n0fUj\r\n=Qa+o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4O+50iOEIaHHUp9oUwjM8dyvNl00NG3JJSchg/2h5ZAiAHMWtk2p4PMBViNQpaSIpP3Azocooaoksjaw1NfYWNCw=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.8_1591656232816_0.7422980496043061"},"_hasShrinkwrap":false},"1.5.9":{"name":"@architect/utils","version":"1.5.9","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape test/*-test.js test/**/*-test.js | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.0.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"^7.1.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"18891fbef35a1e880e77049bdb5390fe58bf8988","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.9","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-oGjfTXw4cIdn3cWHuuWirOm83MFTEwOvIduFZl4GM6m6YuXTD9ljnATehaGhO4XAGbmJYo1zcY+YkIi6cG/JHw==","shasum":"2f5449e37b71cb8a99add849591dd5929322c70c","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.9.tgz","fileCount":33,"unpackedSize":73846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4ZURCRA9TVsSAnZWagAA8OwP/1oDjhzomJi746v7tbFE\nyQNkm3a1GcoE5zk99x0klqtDaYUAZ84r5pBl4OrBfQSLnodqAHVZEJkkP/3Z\nZ+ZEfNLt1l9psCdpywjK06y13V1xpMAPg10LlMDHY/bmvufLhU2cYPlcPP5V\nj7wKHVzNgBbl4npv77H3NK8Er0IHhd0C5vnYyRI9izRTTCQfpQ9OhQFRKmhY\nqkiLhRSbP8/CbzJ/HLAZJxPOd3ip5bTFCQQ+d2tEqaT5y2PYjCQO2z7nWG3N\nFm7SEChE7rJzJHcC7qH2a4DVCAwjD0AVWbkH7+J1ImeDRQ44LhPLgEfJtXX8\nldCZwOXNKCRYEdqzgl+1StDR+gH2GhM5P5BYWYDlA2XQ1QKMZedqe1cFeYqH\nG5nVFcPM+ve0BrGo74KuZgX29v51WpaWe0zz4b+SUIygVKyIImTRYB3LQcJb\n4ktJtaoW9OMYlhU5J2r/oUfQKZz1KSk2iQ078/rxvacpZ8PxprNjObzwIcpo\nCKot+KwP4ToNYUfdLQYBohjv/Zugk7bBgYjMaE9unX15L+p6a15KIpcU10LS\nM++xMN43MDEWjzJqhf7fale3QgvfhrvCUfShROMc/mdj0qzOzDEieSEG1y9V\noGvfYwmD1zYtAxD+3eztA79uXZ5+D8RHUpUzelpqMgl1gMipegqnmO06vUMN\nOAJ5\r\n=Sb+o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNQknW50oaybPlAZzmJDlu1Sl2hDKNxaFiI2//TY9oOAiEArqiin+LqDFo/AlWK7AJICTsnmzZagkvT2wEEyvjow4g="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.9_1591842064665_0.3398989772482779"},"_hasShrinkwrap":false},"1.5.10":{"name":"@architect/utils","version":"1.5.10","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"7.5.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"269b9e058ff2fc0d184498bd0fba9d6e10ced595","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.10","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-3L9qHSXXkz49fMemFXlvaK/b1ScSprqjHkXYWBtoMDQSz1k64gF7o+45eOg6g8hCEQtaT0qAVv5MOhQAOk3w2w==","shasum":"3bf3a94f0641589a8adbb230b03c2ad3a73ba6a1","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.10.tgz","fileCount":33,"unpackedSize":73968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHlkgCRA9TVsSAnZWagAAT6IQAJy+1lXHPdJdAyfx0U1y\nUlEhufeb0fwOqKjVUNY5K0+/L0axvsma1PTlCLHx2bmHVefv+bd6olW+xUIA\nVTwf++sF2Xjzx0x8NTDk0fBajvTmhaAemxZzuQrl0xfeJcImcv6LMB8i1hup\nKizP0G+vSjRVc1LzjZydX/iMRVUzwAFPlC7tDMimwoGkpONYzKIjw5MzXzgV\nsTyvPyigl+H5lLJ5Pgm2pvmcl5w1VuUCMa0lAhxp2mOYxa95KcmmTx5OPMgm\nRh0+uT7WOx2DJqxcGfhlIgHWLIeOFvon2u1d1zAhPn34ualmbt8fnql90YHg\n0tz2TcTKsXkqL4MLORf4QlHNevGa8Xwn+u0YY8+xWrhlSCnbePUzhDYfqpgp\nR0r0fezXjl6NoJlyAKOiRDlO2jAhMdXzYeo6V5L0ES+1Uato5B0LB1h4gnqz\nnHLH+ImUuIQ0fhx7iDBPDS1aCIDMO/gnsMt/n0Vwe6X6jF5czEmiuYRDCSvg\nV+9L1eGwQNbaBnmkSA0GoJf27VTYLO/lCkgYlE3iYAgNlGd5RsQgvenWLYwP\nQdqorW4ug512LycMZUb5+ZJZr4FSThywhdnq8YrP9IMLSbfV/YBkhqDTAO41\n6hf/L3I1Dn4Tj7Gfltf1y6rUTNS3nVZY2nSpOHdW92c3IGYaHLMspT6wvsXJ\nk+mU\r\n=n9+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIXxDNw2cM44nIcogWvo0BuAy+MEJahiM7PCo2XBF59QIgJg0V5IWbDVmhwlL9B16vLmsJlaQkKJsmz4Lutqm83Ug="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.10_1595824415886_0.9631220806474503"},"_hasShrinkwrap":false},"1.5.11":{"name":"@architect/utils","version":"1.5.11","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.1.3","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"7.6.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"2680f0d9b3422bafe5dd5a327c84334a8a1dc4dc","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.11","_nodeVersion":"10.22.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N5yjLWsbddtmKR2B/SoTe3ibnXb+HIgQuOk1s6zRPH6xIzJQ3lWbrciZ1X/yTptBhQAG2kYjUvfl99iZ0/grgw==","shasum":"64661d1a0a4862257f2735724d6f360a41972a99","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.11.tgz","fileCount":33,"unpackedSize":74145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLLJICRA9TVsSAnZWagAATKUP/0Vi+4iHb2C1NicoS0pP\nIBrU16hhL8T+ZcL2Y9++HThwBWPaInKODu+IjJPi2XWLbkkc5L9RwC0Z/TZf\njFu8x7uu9PKOWkYPhx55osJaNiB0hGV4nJmfKKG/WxOdtWvAKheOLh9jI8AM\nrEfgxlBdGSKnNwVuhbyJj7q0uyxiw7K5AGPBmAurUgYCbHayP5o3IS8KPz3a\n3yPFcknHeBFzFqWdpxOM8Lv8XDF4LcKbulRuXfBhcLaVVnHmW6l0+t97qpo+\nKDdtEiOal2uDPXF4bxDaVD/+Rk1jT4wICiwdK70b7G2RpZQcZYV6p8ZRDVPh\nIvxBCuXYC8l/deQXTQxne3AEvEc1bp1HyPw7I+/qL09En/B31nU7VkBb2t99\nm/fCYjq5d69/xDrUPCg6mgMOBL8Zin++JaRC9tfBgqk+3/oahoA7Xrfgm243\nAAkMzDJ5K0D3PP2R0nlFF39XOcWmR6KREqYrVgbAediwHBcv9ffOrYzBvh8y\nWQJFJd0tFT9I9VorXHoENqxVtDFeDVA1QZO7abzRy0h39WPNqx+iPR5Pjo+H\n9aNHbhopUlP2gptQz8Z8NEFQG2BN9xuT+lm50bHzgAIIYOG1puLEhUzFKmdn\nzNc76BR3/wBqEIODXSgvSKk5dndj9Ly6CJwn7EwzDEXYXZmmoV11M/9ZW8Ed\nJuAU\r\n=POGo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGdXQKvUN6+vLa2yKUsudsYBenD9P0eeEQIxreM9GptgAiAQjLOMdIfgVytQnvf+5/nUYLxj03JXKFQECXKepuUmCA=="}]},"maintainers":[{"email":"b@brian.io","name":"brianleroux"},{"email":"kristoferjoseph@gmail.com","name":"dam"},{"email":"kris.borchers@gmail.com","name":"kborchers"},{"email":"rblock+npm@gmail.com","name":"ryanblock"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.11_1596764743561_0.016320714675116532"},"_hasShrinkwrap":false},"1.5.12-RC.0":{"name":"@architect/utils","version":"1.5.12-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.2.0","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"7.7.0","husky":"^4.2.5","proxyquire":"^2.1.3","sinon":"^9.0.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"e5483c83023a0a9cbb572853910f1e311653ad88","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.12-RC.0","_nodeVersion":"10.22.1","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SPaBtmN0k9TYRXDXqY12k8CNqHgjoNMWWi2Z6+jjrSODNzZwmGPy0l/28CF1ifP/3NjHXdM5EAwB1lIfsI+Nwg==","shasum":"f06d739f3f82b1babff0cddfa9f878be36771c53","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.12-RC.0.tgz","fileCount":33,"unpackedSize":74288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdPRCCRA9TVsSAnZWagAA+MsQAKEmwQR1IsqfZh2aUsWg\nU3EFq0gDE6Tqavx/I77D0d2OjTUc9shZ4piB6Vy6BHD6AD2/tJjH5ouQsNs3\niTJBHHdheef5SurYOqysgroFyFrdtKascVYHmeXwcKZuppvbRRjcqv2aBd5R\noX93XyoySLfXX0htv6uY+HZIkAHuj+BSyK1H6kw/kCWasHEBthiem7Pz4l8o\n2UXlOQfq/ZBH7Yw7PqdBnwIumxWARwFDDODzrBGO4ZJA0d8FQd80SY08Lula\n9QXFS7++Ibm2C2OD++bxCdSY06rI6CLdNWLSa9q1UhyNx9RdtG/1mE8yrqU6\nTfPphV+OMKWjCfYFiUtiE2XbOaudekVybVGgclMVj+vAd/P+TDovterUrwnO\nwFv3lMzLnerb/w4zuUlb1ndWJPBRB5l6LkrVgW+d+u1T/TNKgLLBuaqmeyii\nN3MDJihd/wZ+o4BUQtdU5cRcsK6CKFMTZZ9Ivfue+IZoGdYkfmw8siiEyuFI\nM9BfCFi16e+ZeFlgXVqUcW/UDAzVyymB/fvXkJsaf28BY7CKzcvGtQVk0mOJ\nVy1j+7y27fBWY7E0gM5cW3MvA5cUqwiOy6A3Yw+hvz/ptx0rmEH07P3BuEwn\nyFHmumkfL1BFQDwFz7IqEsNGv9Go5/uoi6zqi9EgpPznHbzx8pRga48sOlJg\n3OiX\r\n=bhs2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBibdP2NVL3CHW2GJLdSD+ADXu9f3KNChZhAWXAZgl/PAiEA4hU8IRT/ckLR5U1w40YNN0CA4OBClTkenk9BSBc3f3k="}]},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmUser":{"name":"ryanblock","email":"rblock+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.12-RC.0_1601500226008_0.3543553198855085"},"_hasShrinkwrap":false},"1.5.12":{"name":"@architect/utils","version":"1.5.12","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"tape test/updater/test.js","lint":"npx eslint .","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.2.0","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","eslint":"7.10.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.0","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"2189a7db0768a3eab52673068d689a1abb00efaa","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.12","_nodeVersion":"10.22.1","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ltSAebztFMaJYEOHrF4dZu69st4BVEh6Uyowf2pXYalUp0PP7fkqUT6tlINKtwr8Jqni6lDjuU1m2SEQtSeRtA==","shasum":"08be3fd022f4f6a7869b2505edeb31da9be660a5","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.12.tgz","fileCount":33,"unpackedSize":74284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff2cKCRA9TVsSAnZWagAAftYP/iemibtMMbVxENKXlQWw\nYhuQukU3/akG97gYi3NjaYAHjpOIVFSokcXRygKdqv53ARwzLMKvFl8Ta0T6\n2T2ZfZ/axRFBJM6hk7uRkY2CwGe79UTdaWia7ctB1QKRoZeTg1IHQb3XG7d0\nliKEt87yU583pa1WtSE/EPMZnvW0q9UwXxrGhM/4sP5r9V9UHcDh2zfXklcx\nDtHJ9wyja6kS/fysYKuPIWr/9lDQHEFHisojPvzDzEDIkxH9+dIZhCzAwFKI\nKmx8765RNkzYO3kW82xruHPpPBdvliUD4Rx2QkicEtdanAsnv7+qS7bXZVQM\n/Jm+v2XcwGDmONXisKGLZZdX+Y98Opngs2ZAXW/iVT5onCqWJ4hzBse8WUY2\nlQMTrVNcy8slNFai/cSwaqQXMx4342Yr0VqPkNDyzoX9aGyfm23NBYFiXhrX\niu7Falu7b3H1i1xzgprVHcThe33pQK2/V3Johb9Mr+t9sikrHOYMEkZqyvF1\n56O4EoNR7uVL+CXI65MExaNuU3G6Bxy7Xn3nqUpRKy439aG8Vqune+PTUa/9\nYULK98ihG2cy0y+oB1IK7N7SsVZ/tZj6TuyOQ1RnS/esnkfNT4V9x4rq7Ikh\ntLPYncoQ5XfbnmIhrqL3CSUhAFTuvWmt2IoMkrYCNEPJnSNgZchumq8P98qh\nnZFq\r\n=ESqk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd5dh5cOvVEhOvIEcqR9wtT7+5p0bmLr9n+h2OmZ3aMQIgHljE0Dq1iKJqJnSFEDc9NwqbLZNuz4KV4UuNp4VyD2w="}]},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.12_1602184969901_0.6304057244850487"},"_hasShrinkwrap":false},"1.5.13":{"name":"@architect/utils","version":"1.5.13","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.3.0","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"aws-sdk":"^2.641.0","cross-env":"7.0.2","eslint":"7.11.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.0","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"gitHead":"18dc28abdf856e9ea1e1edfa26564820aab6d6e5","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.13","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ygLxNzS/xU1ZdDa5LloT6hKwVwhToSeuNeNEolhPaufbMi4HWRkHySdgBCbBRI0EFT2OtxWXDMceCiEU89NFNA==","shasum":"2fbb596742e0d256d8a6beae93d7ea9b3c961002","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.13.tgz","fileCount":33,"unpackedSize":74580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgiW6CRA9TVsSAnZWagAAO54P/ibZslOFbDwSZQcPEQch\nPLT5uu58wdgTupF7W+TUu5GhMNTbbl6Ez3f7IaETP9pCrhIUJMil6PIylIdf\nKfzdjqOdh2j1R3hXo1BXxTMu9XNCozry9B6/Cg6+yFZHFgecqIzwq8uUGUXG\nNOX+TafoaFD1b59tmyFRTVi9K5UeumZBYi7yGSCZRYB9icPKPyZrD+qno/Em\n48IqbzIuixe6In9NDxQn3In8U8DgOQtGxFKCLhQfoiBg9riDX2eBe+kZcNF6\nlURjOjC9Uz93sucby7EFvoep0CVhaUYL2O5343UNYL3F6tkLL0xos9ikIoYH\nmWD79DtKM8aSsQ22aLQQaVkWEdOJWyE6Lwd/l7GU0F5HO0taD+1+yljWkR5D\nsZ/7pqQvpJHWD3MLKs5KTTEAr2Vo5X+6Cinu5Ai1ctgJYQ9tTLJ/K1KBN9bw\nlfG/mhVEpoK/n5bJdkhG2HLAs5P2dDSwEOvfs0MEnsAoGxCFpDzo0v4QOsAd\nVF2rJZXl32wdk2HR9hGi8jfBOpi+VgkEmvEom+KClQLaM0D8lOudvlC8oEc5\n83nDFmtV2QnE30OJMHusP/y5ujwVE0uGjenR+qX3uFyLkvzKgXGHlMY0GMwv\nmL5B4cmYQC2d9dGg8Rea1uaciRarwjWICPs11Xb8gQMZVnbuhoB6fEIFGvBx\n90GW\r\n=3Ogh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXOTocbRntvSLUYTMzmV+9ngUkKmW7cSoUMaSoY0PnYAIhAOnffB0cQUClZwgHm4BpyAG20itReV6RaVUzWpJEMxUM"}]},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.13_1602364858395_0.2990173938333367"},"_hasShrinkwrap":false},"1.5.14":{"name":"@architect/utils","version":"1.5.14","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@architect/parser":"~2.3.0","@smallwins/validate":"~4.3.0","chalk":"~4.1.0","glob":"~7.1.6","is-domain-name":"~1.0.1","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-parallel":"~1.1.9","run-series":"~1.1.8","run-waterfall":"~1.1.6","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","aws-sdk":"2.712.0","cross-env":"7.0.2","eslint":"7.12.1","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.0","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"d19e8e61bda897b5e00f01498bd104a1a173ce7a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@1.5.14","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3t1ZgAizrLZnLXYhGJ6UtQmlmWJFAHSiHWw02kYNA3pXsjWM9oGszXlb3d4n/e0lzibAUtcOMQnSIE10d+Q+AQ==","shasum":"44e32faaa44a6eec2442b2834da4256f9d7fa991","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-1.5.14.tgz","fileCount":33,"unpackedSize":75165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpEmOCRA9TVsSAnZWagAAKlAP/jpdIPFaEKlUvsJ5xPVN\nFHOtkJauNRDPoxk/bq5FnyCPSlRIH8VCbZsehCqaip/GT8Vqqgfep3r8i78V\nFmJnIsSTl4WGJ4a8y7E/xDuThSfRhmvfMAE3G0MVGYvhkzfQjnmDpg3XpI/d\nYiTzkcJEPQit+cT6l11PL1OCZVcLdxXz76kt88Fs2fEf3OACLLK3R7X85/SV\nDCm63piDZKral6PlJt9tPnqFX482vzBNF0J69rRhjKIGmy5Ov0644qe5XFuz\ndUG4KVQHbzIdiXi6qzd8vKbFa0XzUXh+G6MaxUmKnV5UF+1GfPpcQQUY6H0Z\nJ1ItnDCYayJcMS+TvxtAScXFDwAfsKAr6AsMoKBuWIQJKNiz9ZQX5PvBzD14\n75c25Y6UuhiXCEOEetmpr3hHH4hUwirpINV6QnzlwaPQFVkC70meqy1Wbgwx\npDY3fsi9bf1GAsQMSNvuNMvssMj/50QaMFNPyate2ReeEK8SJr98UQZaurFV\nqUMMVf+nnySSl8jwO2X2pafEQuyguE3sojXAd0Gd080INx+D2/qZtbEzhXNq\nDI/UkqYmB+tRLiHcnY6dBEhDNt0L/iLdGAND0nKIjjTcqElVuomlNMvlGgJC\ns4iLMqR07QOUU3fwYIbf0MhnoT8/g0GibgnccD4GPeopNx3AA4MI5pwohfMS\nGUTb\r\n=yJ1S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBTjTP/HnLojvdrZSfyo8CG1Tbr5zMK/UcEQbrdIf0+kAiATg6bYNBEhjSbzpAitwMCxtQnsNR5KFLoR77Q5lIroDQ=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.5.14_1604602253634_0.8762128674170586"},"_hasShrinkwrap":false},"2.0.0-RC.0":{"name":"@architect/utils","version":"2.0.0-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.1.0-RC.11","aws-sdk":"2.712.0","cross-env":"7.0.2","eslint":"7.14.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.1","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"fcdb51a762ad1a1d57f679fb494f2f9f0e627212","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.0-RC.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-v2rW9ImzUkQwO054hhjziSz13Qazfc6TWRGAiRJoWBiVBVGpRDH5pb4XEXsofQKI/2JL/OAXoWzQqJ8qN9AQpA==","shasum":"30d11379e3a2effa6a17404488db37ee8a33ffa0","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.0-RC.0.tgz","fileCount":14,"unpackedSize":43462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfupYICRA9TVsSAnZWagAASXkP/0wSeW8kfdd/aOzS09vz\nyGYB1D8OytygqCh/cnPtRHa6OfmhAtTT2tHOxoRonO2nEq4kLXh8ApAT95Ln\nXtRuXm2eg4kqKR3NlYRljoJnRzcQh3Ty5gJ8VgMqQfEyc+LvBDwLWZHyheLP\n944xNoKrpb5I3rI9AleN7IksRAgK5v/ds97IfVU5MVz86xmfVVEAPP6lHETg\n8bkzVsNs0rmIT/wraSxFJTpeI+uotLN05sZ1A/kSKV2dn5U+Sl4w5w2ocBiR\nYek1JJ3RvkIIiwltmBSUnyjw+uQiBdC7zPMM4+5mn3cC0N4ptmQR8QiAZ6f2\nbVHOLdxVw5VhQZ8MBV5Uz505/xqboggEMA9+jTvWLzEAj/Zyr4fGi3lW9YG2\n9qOl172cYe5ZB2CK5HDoaKJ/dLsDWJIrgZ15mHUSJ/UOlGmhS2by0bNScL0m\nJwL4xSccB/FCkpWG8iXkil9hMPIOHFwgH4Xd7edIafDf3FVrGqlqOSA8ljif\nNzVhFxwT1dYXBFsQmWF7KjZhjjg4miCIpi6GtOIGmKPRZdRjbdvZuGhfvyly\nw0GkAr2EDCGshQrcaV5gLJ0E/od/GTaFKTRbLRrxKtae6nH3whII/Ad4/rN+\nVO/Twbu1ua5AWdIoloIisuS1PUv6UuRQAZLMKAS4lp0Jl9P7+mUP0B776jih\n38lF\r\n=O6HI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwrTu8Wjae054rp03bDiUp9vk+RN3mGRRGQ3QtF2vRWgIhAOhCokq+D+hD5k5om8c9HIEWeEtyvYOpZbcqvuczn8Sj"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.0-RC.0_1606063623947_0.6338987621121441"},"_hasShrinkwrap":false},"2.0.0-RC.1":{"name":"@architect/utils","version":"2.0.0-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.1.0-RC.11","aws-sdk":"2.712.0","cross-env":"7.0.2","eslint":"7.14.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.1","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"1dcd77edb04cfe22d1e3b75123ebdf7810fb8a3f","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nReads a project's the Architect manifest and prints out: app name, AWS region, AWS profile, version, and current working directory, in addition to loading basic environment variables and necessary AWS credentials.\n\n`params` is an object which can provide the following properties to customize this behaviour:\n\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the version to print out\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.getLayers(arc)`\n\nReturns Lambda layers defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime(arc)`\n\nReturns the Lambda runtime defined in an Architect project manifest. `arc` is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file.\n\n\n## `utils.getRuntime.allowed(runtime)`\n\nTakes a `runtime` string and returns the same string if it' iss' a runtime allowed in Architect. Otherwise, returns a default runtime which Architect will use (currently `nodejs10.x`).\n\n\n## `utils.initEnv(callback)`\n\nPopulates the runtime environment with variables from a `.arc-env` if present. Details about this functionality can be found in the [@architect/env][env] project (pending resolution of architect/env#2).\n\n\n## `utils.inventory(arc)`\n\nReturns an object containing:\n\n1. An AWS inventory via the properties: `restapis`, `websocketapis`, `lambdas`,\n   `types`, `iamroles`, `snstopics`, `sqstopics`, `s3buckets`, `cwerules` and\n   `tables`\n2. A list of `localPaths` mapping inventory code (where applicable) to paths on\n   the local filesystem\n\nThe returned object is based on the provided `arc`, which is an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file. (If no `arc` object is passed, it will attempt to parse one itself.)\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.portInUse(port, callback)`\n\nTests that the port specified by `port` is available to be used. If an error is raised attempting to listen on the specified port, `callback` will be invoked with an error argument. If it is available, `callback` will be invoked with no arguments.\n\n\n## `utils.readArc(params={})`\n\nReturns an object containing the following properties:\n\n1. `raw`: the raw string contents of the arc project file\n2. `arc`: the parsed (via [@architect/parser][parser]) contents of the Architect project manifest\n\nThe project file is attempted to be parsed, in order, from `.arc`, `app.arc`, `arc.yaml`, and `arc.json`.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase.\n\n\n## `utils.validate(arc, raw, callback)`\n\nValidates a parsed arc file. Parameters to this function are:\n\n- `arc`: an object returned by the [`@architect/parser`][parser], parsed from an Architect project manifest file\n- `raw`: the raw Architect project manifest file text\n- `callback`: will be invoked with an error as its first argument if validation fails; otherwise will invoke passing null as the first argument and the parsed `arc` object as the second argument\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n[env]: https://github.com/architect/env\n[parser]: https://www.npmjs.com/package/@architect/parser\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.0-RC.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yXPdWaKvXQp1PhHMV1LMviujBbLBFztWKq2S9leWSxDPkR8RCJjxS0rTYMcDMdDWLojrdOZJdZAzUZByLlVoUA==","shasum":"c2fe49df56b37ecc9c11ff03aaace096443ec669","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.0-RC.1.tgz","fileCount":14,"unpackedSize":43465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuppPCRA9TVsSAnZWagAA+zEP/jkXi2yLOu2OZ5Gcmplr\nbdpX4JmJh8a0EktlUs9HWyoi82hzffLCFJ5bLQHExXs8Z4cJKYXppAhuc38s\nuYe2gCccTST5tJVUdu0XMCxglf96YwJ5R0rvez5R3ZssyDSPJHndHCRJ8J/G\nJad7Y1TSQS1UuLI55YMYfP4kxb2yqz+S/0ce7Pb7XBMLVj/rtyTlJdZMxktU\nd7rQYnfI4GSs3To4ZazQbl9jKkvsU/poJ0FTV0KyAN7zC1YbDUiqqVLdFxqh\n6i1CYguqEAHq8CZMuN4ngE0H9H6v1QwIlut05+K634/wDVuy6iPz2P7U1wAo\nDQO9Puaxzu2O7X2iY9HirMkw2pK6jkwVJROzx7prflyEmKSXfG7WzU9LVXA2\nyDHl9D8rY4XGnTIr/+UFSUrLJ5+QE249D0lIkxYukCNHMjM4+Ns2i1uidxUf\nwcyZKpVS6AJ7WqsrUjFRLY6kKCOGyM422XhQ4vS4g//vhSf8A+0kPrTNo+7x\n2JdcZrlkR29sq6AC9JZ5qOws4RZm5EWb6IWsnQY7ajh8mrGIjsoszin92Maz\nG4yr/9pAsAqlZ2BlE3QqEkzcn2kKzJkPIIeXD0lrIN0C1Rv4+VK5sah1hrFR\nledplQ7lO2jVs8CuwFU5ZNWhAAM4GglYsillIhYb7/O9ZYOYsrppXgIaVGdt\n4y9F\r\n=7rXV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCz6wkSRw+lkjsrkBLww+wqFZRiXxu4CJpddgDUw1WJswIgKuZQytTgqmat1kxJbTsLQTMeSg6xMHdBS0nPUv57ECI="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.0-RC.1_1606064719360_0.6415262720088812"},"_hasShrinkwrap":false},"2.0.0":{"name":"@architect/utils","version":"2.0.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.1.0","aws-sdk":"2.712.0","cross-env":"7.0.2","eslint":"7.14.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.1","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"e36d5db616550daf7fcc1556da09b2b1fbb7ac21","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GwFNypvkoq933ZD8CRsLlYmlkQKAqSQ2FH5WZzW/2+2BL27q2RRg+lzDEoIBEw1slCfdGO2sfS0kgGD6BA4yRw==","shasum":"851c30402b1355d00550b860c5b07bf91a2440ac","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.0.tgz","fileCount":14,"unpackedSize":43454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuyIsCRA9TVsSAnZWagAAe1IP/A+T0xyY5bRM8ORrEmdE\nY03wphp4ylS/dZbkGCRi7lpaUUYNsUb9sHwUQDZ4flt5gk99XEEIjhPo915S\nc56r7C7SNWqoD/TXMvwSOinhWJ6e4At87j/tGmkHgp3RA1mQ9MWwMOC2KDwk\npCAyDEOVau+llpTKqS0fjE3HjttDBdCkROdepXp6+QQPdtAsRmJKdT5shJop\ngDjHyRGBSzbXIvO3CI9s9ibS3yfgvFfxmvnv5/whntLWWEuRbotaTTGE1W2x\nvb8eyCrryT5tLKHGz2uzZuWj3KdarY+lXwRpexEi23In9vdgEWp0qvrz8yLW\nenpgLMDDysUGtxqFVBB4va/m49aazpmeyRJzEXvaF9BQFU/N2W9nP5Q/cdxa\no4TaxkpRohIGGKTWPgozSavB3ZvBa6vTIfjelY6IMU7ue0a5hnj/eCz0Ir0n\nizvRPFCNmgxmtoE3m/QgrDQZlnOn4N1k+aNO2xZQWDr0aEfSqzyeklHXRvqa\nvWgf0Q7qygDsq6YQuZWpCpVtA0Yy/xqLocNzokA8kktA97aXH/zv9hRIBAYG\nxZXsvH/Id5mUlmErcjsSkb9Q/7A4QeMGsmcgXj5LgULu+yhjWuR/ogiSER26\nIcnOLo/TUn8xXO4kO+LepbMoM5FPdng3JYyp0WbvhF9ZxU8BBjXJ1NjTnyR6\nbr6X\r\n=vrxA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhARj31sGV+mJeu5IR7TjGZZAoT0CNeFmFyIlKzEr+mAiBfVEGm7pxig2c8F0WliyLeAz6Vi8GFl/eIoAfiV84yBg=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.0_1606099500422_0.5767388901369892"},"_hasShrinkwrap":false},"2.0.1":{"name":"@architect/utils","version":"2.0.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.1.0","aws-sdk":"2.712.0","cross-env":"7.0.2","eslint":"7.14.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.1","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"8e67347f75bc9d7077bbc13d7ce21123d27bca90","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OeixnMxhDZbJByBDSgOjmK2XoN2fFsGk1fK2Jq4o4wJoxmafWwyTS6KGbGQCGDU/q9F6NcJ7cE6RPzRlK+FIfg==","shasum":"df95fe737790a31c08dab876832fdadfb740eaf7","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.1.tgz","fileCount":14,"unpackedSize":43490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxmkvCRA9TVsSAnZWagAAzfEP/2sHBBN+sxGGsTKqF8e+\nXD+t6BRh0/05TAa9VE9Kw5dkKZTUNj8nlCccMOF3S7d9s40ROnx46YyGpTiJ\ndyZ0BDfZ5rcgiO6ga3epAu1wji2H4XSj+/L8a/Js+JdcQT6xeJXA+DHUZk0W\nIRN8m/X6UReJBh60B98cTImhCFusyd+1MUE8gCXUeSAP6gnnkkX5H3jI2Zt8\nOhMJjmhVs2tIRokzBs38y8o+2zt3rNUDqknJ0TWQA31qrDBhRU38USsktpT3\ngXptoiAdZ/z9cRpXCdBwlwqHoJ2BaJtlaeHiPXrM2Ex/7FuxNSnoSWbB+vjY\nntbmnf/sQD2/9vx+yvSg5PQnedZddlmqh0lKLbXC6c6s+DBWW/6tzc/Snzp0\npGbVXMrSoOUpyqBzskwqY/lWs7eMd17yOLvP6GZRpAidfjhzDD3LW61GUIZb\narHx8RunM1+CXUtuWqOcoO2ogY7CfyfIhkwyfuneamoLKxJ2z1B7/gSfXZUj\naSlja5v1PToIyfRZIoaeoTX0lAImrD6CsnlFAJnNkkv9PSDQ1bRVQlBgMr8h\nAqNKWmBRvGe+SHNz1gxqg/6ryG8RJYCkMTr1IdOcRCOuPr5T+Cp9JUZ70OcH\nyJZYYLxCll4ZLY58lejVIeb1SDhMDywVdBwUmCvlI3q0c2Q/+AqKSuRxq4yi\ns5tP\r\n=i9kT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnEsYwnFKYJtYFN55WlLdGO9ferJuJ5Lpoy/whBl7aKAIhAIPnCPtLn2MJQSxxu0DIjPL/pHQ7MGAbpScGxXYkoi0L"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.1_1606838575077_0.3143772797757942"},"_hasShrinkwrap":false},"2.0.2":{"name":"@architect/utils","version":"2.0.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.0","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.14.0","husky":"^4.3.0","proxyquire":"^2.1.3","sinon":"^9.2.1","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"005fa549aac16b9aae23c42b4ce18f20c5f3b97b","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.2","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bh7gfsmaLr+BqIkeatUu7vjKPdbCGfzQBUbEKF0SyYYg7CSl4JLavbXxV4xoiQJBiH7vf0S+GQbMnaoqFJibEQ==","shasum":"c81123bc04a7559efc78b21f030cf4a30ad68fd2","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.2.tgz","fileCount":14,"unpackedSize":43547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyqDHCRA9TVsSAnZWagAAm6UQAJM+SCU3InbtkcrXUSAf\nijHc4ssPmEs0f7MyHi9kckzcMZtFHpd9wCp38T5zF0opwLinmm9Oo9kI1zFR\n6IiDrNMDqC7B4ZJ2CS/RFmoGMNGLuxxRDZSQDRrBhineEsUjviYQXrq7J7iP\nVQEbX/mfirliINsB0IG4cw64jLVs9f5vu7e4bwyaPHpQIJbRBrcDC9Anj5dU\nl/KfetLDfg/NKECUBdZlXtZkogaHSGnjsXlfa64RTY2c6AjKCVT96ssUqbAP\n9Wx2RhZWGsFW/4kf7dQkk4zVnPZWCRZmOStsD2LSHEbpkhd2P3/YkTAtM56h\nO5Fjwl2eJaFuWqZ/5i8CGcC1cUhQyXpZgb2iwuWy8RDRZ//YaGbwwif/vPGB\ny4ertKvCX1i0uV9F7uGJC36mGujyGn0MIYglzvzKZE/XO6ZU+kwKj/0n9c8Q\n8lqAmTjMoSMS9XvQWTGxmzvIlpwgMxHUQpRnop1Eafxnbye9XXEczfrnMXjs\nP35zUggwX1ISzfEbfwVwUEjH3NCMkWKJDeIRtOj6tLRR7HIrQ09QVQ4P/suU\nPLDR6DLRx9lCxL+NC7ia3Kgdig+875qicD6THmZdYfx5F6kTSddC2/LBgL05\npb/K36+kR43K7CJF3oK9j8HOXOJMd6OO9c4+OTLj2ygXgzG4QEZSmLAuo18O\ngK8o\r\n=kfB/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGX8VHUBWh8H6brrx4P/a+IwUSDpoul22mp3wdeAqYKEAiEA5XueoiEEA9x35KDL4BLGi5LnthEN9i5uo0v+no6YQ9c="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.2_1607114950520_0.4248128707974008"},"_hasShrinkwrap":false},"2.0.3":{"name":"@architect/utils","version":"2.0.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.16.0","husky":"^4.3.6","proxyquire":"^2.1.3","sinon":"^9.2.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"2e90ace2e35df14672a7415453abde53f6506281","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.3","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Mvs8qJJ16Sz0cBKZDb4Mcdq6zWR/1sZqG47k4Q6Ut7d4rszo5xcUSqmxYux5TeWIBmAs0CAN+FP/Zt0oPPjJCg==","shasum":"a114e660ef71ca1169d29edaf7b8a6f74e8d3228","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.3.tgz","fileCount":14,"unpackedSize":43824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3vbKCRA9TVsSAnZWagAAI6wP/20c1ThCQiykKLrUdjyx\nu3eGsvFnm/0AlUNv3oOUN46Cfuag/k7CGAJLxHqpc4LGg8m8MQUY3hiN3FlC\nLZ5989wGp8vcZlwzggeAlic6V5gvnrB5jnMNPyhJ2z96wXa3GZybl4rfxm2a\nJBpUPjuV+s99q0wd5PrbpuFZtNpNsXag5HbXkLv7hnCqTfloGLB0sgPpUAmk\nPyXyK57wWlysgwrbgnDctViGwm7oGF+xze7DBftSWFhdq8tUSvTCQmFc6oBl\nR/JLOK1sosqxnFuhnHx3jLv+2/2kU4ZHI+o3G3B0ZADRR8XTmNYlq9iPtqfv\nfaUiTwI0Nr5xkiZiJE373yW/kHIaH0gUwh0rvKmKzhFjt2kl+k2kHcAt4xWr\nYyZomVCxmJAtBwjgHNp8ze6U2urecpBIXCc5H7AWhXIhnQPzUgAvKNvk/Ymc\nZyUERyZ7z8+713IX2OLQjws5TO8pUnrQhdTsuCjRfnPKaFZKeOYgDbIsV2WU\nxkvtn+z3gfK8mY/BPYTLq0yhojC7wnp3hso4hZ7sEBM5NuXmuR9EnZBP02tV\nwLwKg5aNDHgI7MpqnqhCO8ElyaT9y7iAfOUY2XfiHksT5YLX6aLxEEBxfh0M\nmmZKvdD1rEBk5Wzf3vhVrr9gCWt8oFmjt81zv1QMw7t3hX2LeMsBPQsk5UV9\n0DiH\r\n=Bit+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0tN82Y8wblWNvg+MXkwwE1PKN9omNmo4+GX3eRQihfAIgaYw/OyVe6O+qtVW6BQunjkzmksDH+Ch9hW3uJMDKYAA="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.3_1608447689462_0.03461295378771534"},"_hasShrinkwrap":false},"2.0.4":{"name":"@architect/utils","version":"2.0.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.17.0","husky":"^4.3.6","proxyquire":"^2.1.3","sinon":"^9.2.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"31594136afb757e60deed851fc54df38cc0c0b8f","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.4","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eNjTENa55wzPglp8+gmJljXv45ilZkS3W7NUg61AoPYO5JycSNRwiFOyq/94UWtVh2YdFdRd8LerhYrsrS0l2A==","shasum":"bad347b600600d5538b6b318bfc3545592da0cea","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.4.tgz","fileCount":14,"unpackedSize":42762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9VioCRA9TVsSAnZWagAAPrMP/j7dBWKWol8ZVWHtnQwC\nStGq9ZuO4NtXSoKVn8MWR5DdqXQtzdEcPGDd9L8wkIgcTPo1BQJ2zA+jQsks\nqNzmK704uu0kUazLAtR62m2WPUuIA8zfA1djlRzYf3zujwEf5lH3BHg9H9Wn\n1AZSrJPwYJ1OUzVrp6O+x3YBvwB8LyaQqVMjyoYohEGbil9LWlax6omLnbTx\n4Re5PXgzi4N2HzNJeK5GqltRAE56CM7aVbkrW8snyDD3FF+Ef5UU4Mf0r2FW\nYA0zt1jtkYWgz94WJQ++VE8pY4w6UVyICdoR5PT15fYJrU7OeeuZoTcs14d6\n5+/sYe76b6D9yhxCRApqdRUadkm9bp0mcrDmtRbwjCQRB+/aaVl9GkunF8Tg\nSdmH/s3F2/4Jny4bidBV1wqrQu5mYjnA8me+dnNeA+R95BXHbcUqeU+a2wC6\nfnuqSi/XHf2OQ5TrXJEX6DSBT7W41MBfLlgAaYy0zwyUVDxixqcMmYvissXs\nj+4fM1yVxxQ8GaNk1AK4+oQDax63a32FcTLc0VtrGoEarI/3JedZG6Og6iSG\niG7JG9Bc19EGY7MsLMiWOMaRIlEAtAUPWzgTJHvmRqBHIHVWmxcXUE/L2sub\nqeEIis9YWqpB83H9Yds3Td628iSx+prLaXmr/auAb8F6NS9z8b+7FauJZTk4\n6ScZ\r\n=t0OX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIArezRzHtFccNC9c3gKVEnGmRWs09lGCzkG4DZ55rmbMAiBqBc3L/PfOOCdTIKEX5+OwKSFukoDSNBaoRn0BthY5tg=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.4_1609914536092_0.14395864859778706"},"_hasShrinkwrap":false},"2.0.5-RC.0":{"name":"@architect/utils","version":"2.0.5-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.21.0","husky":"^5.0.9","proxyquire":"^2.1.3","sinon":"^9.2.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"2a51b0503bccc751c14d734da17416ca4884f027","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner`: run Architect's environment bootstrapping routines, but don't display the actual banner\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the package version string to print out (e.g. `Architect 1.2.3`)\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.5-RC.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-BmJlcGJzL0IseL/Fpswvnpc1Gu3VNg8L75sZdi0Oxc94tMg3PHhKTE6FWC8h5tPsosBnk8DyxsroBIjRAYox0g==","shasum":"5b6b11e0e847b9f2a3b7ded611c4fbf548d6ec38","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.5-RC.0.tgz","fileCount":14,"unpackedSize":42900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQnbCCRA9TVsSAnZWagAATiYP/j6k9Ye7S4t13VGi36LH\naEIU0Gg9qKdLjn8Z2oxvhwS7pc/8yFAM7f2lkKI/2zZGq2mB2kUYpqzxl/Yc\nF+RCUkGXibamVVvo6+ljkExT2npSZzK4RaQ7g3socz2e/HMBpYS39kOuo+Dt\nbMl9C14zD4TZyEkWKZfwTGnRK9y6kO4sRekNYj4VCJ/zdShVdLjh8o8iHpqp\nEH0ldcXy2z8pQCKYKlJAhSC7/HudP+hqTT3Q9omRhgIjbrW10zaTiXnoByIL\nS/6I7kc6V0X896Euk229BPHQDNm/Twa91gwEeve1fNvlhEcCTEI45pElEEeh\niON/Oc6NBBHw71Y3lU0UFE/aYUUSiUOyKMiTSb5SZJ/iWDMYr6PQjJ3V+f1h\nxndA04sEdJof2m18xPgKuWWztJnlD6YpgljEkCPrSN1gsB01rsaOFNhl6CW2\nyS/ZXWf9M8lB2KcVNBx1nORazLR+eHOXUJt968WKPQ3C1qyd9kw/hAxscQ6b\nR3BCHn2/SKrnp5HnQHIW6FyYFW4z0YSdOZjOCP4qMpj/o/dQzOgDPLEOnXbP\n5g6s7fBhV2s51aeIDcmENg6ZpyITEFSS5rYbQFmSeQiNV2o7nbE+00KSbiWI\nFZFTHzi/SMueXX8QbM81IuF2xumjIxglPRHeHvoL1gM6fOqOhUAg+F/gkjXW\nedsX\r\n=xTsq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuNEf1FxjByJp+rFlzk4gJXHi/y7BJ+7JObjybQOU0gQIhAOqfcYXRXkeoV8RVjTb+uwRnSvbdwkYE5VeZD+fFoHiV"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.5-RC.0_1614968513833_0.9635904670746716"},"_hasShrinkwrap":false},"2.0.5":{"name":"@architect/utils","version":"2.0.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.22.0","husky":"^5.0.9","proxyquire":"^2.1.3","sinon":"^9.2.2","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"9d5009866b91f050c032cb27ed46a1087f42651a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.0.5","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-TUSu8aUQrS8uD3cPoUdpOjz54dnuyY/YfGodeplwNulzSMQSt/FueUbKEobxC64c7eBFPJO+VfNue7yRZAtwiw==","shasum":"a77d990e4f5c45d11af9169f2d34b824f0ec6179","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.0.5.tgz","fileCount":14,"unpackedSize":42895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWNffCRA9TVsSAnZWagAA5sAP/i+WjR9VqmVJEeMrgWB3\nNnm20+pMi/UZsQ0s6EO6qfKTE9/T0riqFt6PG6Ggu0yebNtdarJ2Ra0KtstN\njypQOg1TrJQY8psPovSpUxxaaVgewkHir613XJjeqQBpY0A0gbCdZEB8UVGx\nWfA7H1SQ7COCwMc7FZh6jZYZnOOJp0boKzUcZE2Y8SALaiFawNiHKq5mtyD6\nsvJv2dFkma7J67uvKqcZG+3jrfOU5CZ80AXcdJT4b4OClAYFUdSVtipBVSwA\ns/pdWbweqiDbQUNjjoLlkbJX5D04kwc8zscxb2rqoN6S8TAvQQd782BOxehj\nXADBN0frf1Yg9rDnW0uncFJxM2XYeY7Qn6ZBbts7YKSZ/rdbCtBMUyYrdcBE\nxg797MyPTNkzBkutvyavk85gCfCPm+7VY8xtYRemBininHlYF2tUAb+4UjfR\n+mEdIbyUY4xKKh6calAjzBRxYaZbkdsPV9135lXUPNQVIpckeslLFH3oKJSN\nGZD9utPDkfyBujMe10B92Tv6tMiIaRo7SzfCe7prDDwz2CFtfGAM3NGwVEso\nZVLea7Ar5jy86N7pm6WpGm5uKwBwZ1BeEbfL/JdEHWjnhijoUn5+DG1XBw3+\nCPXAlSfylzRt+czqV8Qncd6O0eQC4ixL58aiHWMnjz/WlNftOU12ZDQIRuff\nkv7J\r\n=WI19\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJvTbYYWtfHxJV21TxYuurUNBRX2R9gLqH6O+J1b2MNwIhANRpF1e2EywPr3nBvd1ZZxkB0yhHLipCWOhyyFYdZDfx"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.0.5_1616435166811_0.6871239445371693"},"_hasShrinkwrap":false},"2.1.0-RC.0":{"name":"@architect/utils","version":"2.1.0-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.26.0","husky":"^6.0.0","proxyquire":"^2.1.3","sinon":"^10.0.0","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"533acf6f42ca44f20b517faf67da36798b8ee1f9","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner`: run Architect's environment bootstrapping routines, but don't display the actual banner\n- `disableRegion`: don't print the AWS region\n- `disableProfile`: don't print the AWS profile\n- `version`: the package version string to print out (e.g. `Architect 1.2.3`)\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.1.0-RC.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-/HBFq5doTNwyFIqCnPoKxfv5DEc8pDQjLE7xjhsFwJbd21uJBb2Yvd1aKz+1gPx2NABFOuAYTOIqfV7FtcFbyQ==","shasum":"689bd2cfe59486c420e636d5ef99b536fb79ee24","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.1.0-RC.0.tgz","fileCount":15,"unpackedSize":45451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnqHwCRA9TVsSAnZWagAAgpEQAKSsxHQdk3vlefsgKtDe\nzCGi/bIIcUjYYeU1XNE/PUu/BSNlgXT77SQTtMJgOBYJPgyg29ZIRRen/lJj\nRWrCfhV4Ya/dw8jrvjWUx7LcMIgXk69XXoOp14e5b9gzryrzOA6QinE8rtbC\nFG0+tK0siIT0DK0aSDFwl/0oUuA+JqS7XGjR+KI/gsDYIgRv62ugwFE5jdA3\n4h0UyRbtr/BGBvKZqLcjN9Gs2Bi8arV8dtkSwFTXD0CC5q3T9lfApKOiJu5y\nFDgsoXTV2B2praEWi3XsxYkYRGOoJma0g/4heWdZ7a2nIEkJYc4abnh31quj\ncRJHxS7W+MwZ5zjblDlJnBxNnB7TfEIQOsIDomDVAQUAITAcxzIRrTUGVLqs\nzzfTJUUHrog1BgERPWs9zZVPQbQ0Rbanzac81+1azNcAGyg7VkGoMgwraBgF\nStpQSQJ26o+Ze5VWuXKaSdzt9jYWWUgKqZsb0t37JdSWWJU6RLQo/UrEd+Jc\n5hfJCEbqoFAGl7FP8/3+lci1zdzOw5q1WdQFULLPv8boNUMBVJZ9iyG0aG+Y\nZu+XtXGlPQwWxNfSKiMFxs7hsiFxwhYaE5Tjft/EAF1mXEcrVd65K3tzYtKJ\nyWIhVQj94VPXEQiVzoDxn0eFHaf7NJbhnndiEqHwvvnQVMFBF91ABxgKd2r4\niJ9k\r\n=Uyso\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZr5KrzS0WrdS6d2hNGhQa2UHS1sFD0Dyd9XySzZ4AzAiEAxIVm2i7zz1TaJbfZnkjUTQA04f8Lpap4zH/GAsquIdM="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.1.0-RC.0_1621008879535_0.612354144246511"},"_hasShrinkwrap":false},"2.1.0":{"name":"@architect/utils","version":"2.1.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.0","glob":"~7.1.6","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.2.1","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.26.0","husky":"^6.0.0","proxyquire":"^2.1.3","sinon":"^10.0.0","tap-spec":"^5.0.0","tape":"^5.0.1","temp-write":"^4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"409bb25a86644f16506999d7581c768906854910","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.1.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-MelMUxbjdhOoilQPXE/MyBvh9We5xDR1ToQX89cycU2vj1Szt4iv8S4/XgX9IM7o0+2/21O/CVvFvehpSUI4FQ==","shasum":"9c0e466fdf6ccb94858be018c9a243bd5ea311e5","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.1.0.tgz","fileCount":15,"unpackedSize":45400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpBqQCRA9TVsSAnZWagAA5j8P/1fCZG+MYiEmYxW95Bzm\nOAX+cX4fy5SimGhRNndJu3RGdW0zrNkY/YSoFsw8q18yZUj/zcqgPZg4OnNX\nhHMAupfc59NtkWe0a2wHO7aL93IfTsQ9YVWdhJ1gt0BafNqHhgA/VuZasRBk\n3Uw1znvsIYxsdFaPIwsXYUmDiF0zaQyqsgDmfEkDndnxNWyrYlOt/4fTD5Jv\nwnA29T60x/+VbDWzWJ7Yv9AR3lzP8YLNCm501Fj0MaKg3zC/M0vjysi3eoKx\ncTKGqpzZmQ3++DjnOFQElHVLiZ0e2Hl4DnOJOyudULJNYy616x0ABwXeNjug\ndeiqtalxukd+T9tQ572dEMM6xjUXMy8B7tsAddWKZ0MP4XrfalfImZPX98d/\nOwfNd5nl2ttr09bQk1bw1GT+hvP7C257oomDJjaRCw74zgTdzAEXMrKTYYdJ\ni67FdaftJw23kCvqVjPV3fDDvkuM4whx9Z3agbFE/2RiC1CQEbAiQvg1S7RL\nHOOil/9Xn4a354DxnsgVVVJ33nIXQBZ8p3Noe8/luay3TPHgM2Ia7K+w7Ere\nJtb8ZkGexZKodsmMcs5cjwUdRD2NPChhatZOO+RVpIs5THfaXpgqK250oDmX\nl09wW+HzPDzdcPVilgCTr4eHFpso/ojYwSnGwy4QRMUwviqAUQHcr7IlJjAW\nO0IZ\r\n=LyZ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHFwdwXdIS1NFBkwliK0GgSXSEaaGG43jtS9aB61OUiwIgHfKbS3aMVKSf9T1hpkFxnav7gg/NQ+N3g4USsEuTdCw="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.1.0_1621367440115_0.6547665041874027"},"_hasShrinkwrap":false},"2.1.1":{"name":"@architect/utils","version":"2.1.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.3.3","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.28.0","husky":"^6.0.0","proxyquire":"^2.1.3","sinon":"^11.1.1","tap-spec":"^5.0.0","tape":"^5.2.2","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"88181b7b6d0e6b5fa461232a2414d834b4c0e7df","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.1.1","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-2ENNKM8pI0Y6mPpswrHrByj8mt+a8s3L5bTRIaGaV19IWH/L9Zm8wY898tudosZScU6jzTWWvNWxM69MCO3VXg==","shasum":"c4dcbc8accc5e57b6bf992e86de5d998a86a725d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.1.1.tgz","fileCount":15,"unpackedSize":45634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx40BCRA9TVsSAnZWagAAw/oP/imHz4x9WTcp6qczhzw/\nn/HR7OpmHNF1huKiSmFeJuHjiXFmTtHsqZua25gcPAHvQ/o3KFdAPvQxbGd/\n2i8NYXZE1yE4ey1pyX1x+95MiTh6nNYKu3qPvNCHlDlSisq6OEknnmAJfbdX\nfKgc7L7R6LOO3W7X5UNMRC9cwJu4nMkhpmY1qKnnLT60FtGZLAx8d8SJUQnp\nrQXYFYwD4aHk7W8A0473pnV7MNmdL6199Z4E6x7bVcUBsv0ziklIt6W0uPQG\no3cnATsE1axlB9DQv6O0cjwn8MT0a2R8Uzkq1cXjry3xkp0VmHtI5pMm1bK8\np1lkvQPSNHCi7e7uYIdGsoGsRRfVNUW/gcRlOr+bYpvDGFNibxooEaEy3EHM\nU8DkJMS7fx6rM9M7QK32zfpGRgyx5z7EZRWLnKqEb3KWNJ6OZPWooHcSvygU\nG9caC6JZZSeSdr+Yl/34qGEUMkKk0s9jeR4tiUGd4xfLZjal2J64tSl7cB2B\nFwdflXw8srBQM7xhGYiMI5I8+iDhqkUUhFwRn3uaLww2Uscf4XDuD+MY8IzE\no0zXFBhDhfjpv7feSpNw6QIr9vkocXnKmV94TkJ7lA/itBrJy7Rk2KlJhVpX\nc5d7JdlC/L763tWXI+8YDyeIUKXaNmHAIEL407yUq4rU29SAU/sZip9yJjXA\nQAh5\r\n=Ur+B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSs8QQ/VvYD+ZrfYgeN6O8A9VHCa4zTRkinCRIaFWCaAiAscE7qNNYJMLSva0vy/KHesYQI+pqwQIh4dwGClRhdiw=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.1.1_1623690497770_0.30712717010288504"},"_hasShrinkwrap":false},"2.1.2":{"name":"@architect/utils","version":"2.1.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.3.3","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.28.0","husky":"^6.0.0","proxyquire":"^2.1.3","sinon":"^11.1.1","tap-spec":"^5.0.0","tape":"^5.2.2","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"35d637ea11f502dd9c291b27af1386cc91d89209","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.1.2","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-u0xKO27i0R5EYH8KDQ086wZu44lId9iCPhutbExE1fKBy3UfLm/GEUXvVcvdcVRlm71lL109oV1YgKSrXy38QQ==","shasum":"98347f67998a453747db2c775514c37cbc41e751","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.1.2.tgz","fileCount":15,"unpackedSize":45767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgysvZCRA9TVsSAnZWagAA9BQP/RBIh6xxx58NduZz2GID\nXzMEjvqYYVw4y6uQPjtFNQwqyp7DjKCvoF/cfog7x60KTeg4Q3HPXw7Uj04/\nELLKQ+PQG0b5dSelLDE1iyizGDCpI6jw0tN8POgagleN9GpUQirx25+AsZr+\nV/nzfMggu8//wT0WFUixfZMcYk2yRuU2YCcnFt7Vj2He6NdqxP7eWTeghOm+\ngRrN4LXuhtpqnyiWxnk5bTx4tYAgBHs3vqNhTH/9et9uA1I+PqxPAu+Lw3/I\nIsi6UcDm+QOYV42Ww776TY8oSI2h3o9Gj+C/bTsmlkvmzarGDof3GRKjk6Ke\n0HFQsD728+LFkR7/Q1+ltpMuUOHrLwh5QCoSjzbhZJFoCfXEQmyX/0vjaJpr\n9Gd/u3nqU2pag29JxsYtkmnzvYhe6kMOE+iFv8TyLJwx4tAQAYrVZapuQ/YL\n+8qS6jttrr4WRyuHqOm2z96EN7STDZxaRc40dggrBEatxm/w0fGX75S2ZSui\nFZYhkF4ZcSfai764sqyC7In0zUXBp0Hc5BVmA5VcZF/w/Qv5T39ji4Vyh+gR\nN16cXnmrH8Zv/LUMwmMusqY1fm7LqLavumF64wiv5P7hBxs08cwfiKjUj0wH\nquYriiU4UosCX9oPuSumwjm6hAL7KgB07P38YHdGSB0r+V3hO1ITJkEAhV6Q\ndVm0\r\n=eYLs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKvLKVrm08+iUPP2lqf+BUcyjP9DItQwxihJFxCjfvgAiA+Z4CMl7ENCvurB2L/4cNokdBoIjWtYpoZhYpfxPIEsw=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.1.2_1623903192502_0.41182887261652645"},"_hasShrinkwrap":false},"2.1.3":{"name":"@architect/utils","version":"2.1.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=10"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"1.4.3","aws-sdk":"2.712.0","cross-env":"7.0.3","eslint":"7.29.0","husky":"^6.0.0","proxyquire":"^2.1.3","sinon":"^11.1.1","tap-spec":"^5.0.0","tape":"^5.2.2","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"83e88f666bc127531ee1a4e175cd2989fe6f7102","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@2.1.3","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-zqkxclZQlvSpmpvtLccLAUWFHgcb3+VWeMD625Qogbe0eXNBJhK76kBXO3zDHqA08Xkw+RlUv7ZIxdODGJHCFw==","shasum":"eac7e612c3488c7144093cf2415cdf44eb33282a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-2.1.3.tgz","fileCount":15,"unpackedSize":45832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0PBCCRA9TVsSAnZWagAAZtQP/j/4NlS/OQK3GS0iFSlm\nLTQEuual9VKihmi9VRDJN+jLzAuKQO3bjSzYZFL84MqTmr99hknoO4L7qbto\nXySs9qP74+6l12pFkJUsjC1NNn31lAuC00RUQNEauWljuoJOsH5nTlvrOe8l\nkI1QFpHAEf402Dz6jrTZYmqdqxSu4lDYLexLI2WYnD9Y15KhoCIlSL6bs74t\nkISlitg87wClNe7g0Zw93I4FIFtcsWxftBpFGS6QTbilQre7DeAwKyIEHX+k\nSXX6Zdhh9VTYcgGFUhJ0zK8HVbFMMlHJFhi3ilHx/44TpNB7J3ywOJbbMwO9\nuBEcSGFf8V54+G9yXMSSx4VkMdgmvRXeBzXkzdNRtUepNHCwBHO/sO48pVHd\n7FY5wTTp+OyYGj2BPvzzXJoTpSJ9z1Dp2MiRDf5OVXR2jf4v51UPYF84GtYu\nxhJusEBkRmKg+oUiVbWXQu6zbZxjl6/YwO2QvSLWGheyQWMHPy8DjhP6tdKV\nVIqMQxdr2W/BxGNB7tdBm6mexfwqMLVufddcrobUZKC1/HWeEnz6kuqCDfos\nAW+5jFGfugkVq4ZfaLVuDaUiBTjGoSQFFdF1BooOeH7ILtaiS+Mg40ifEdd9\nUL2bnGuP6I05fClYoKUw/5yxSu/67yuu8sd3NxSFGQD27XznPO2c+vySn/nG\nhyW/\r\n=A9lq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHz+Jlxln5bGT1IW78ZksFIH94LZjD3YkNDr0jhNnP3wIgZcWi1crL2fRsFjClcmr5Vi5xnyybzahldlJNk1k+Gd8="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"filmaj","email":"maj.fil@gmail.com"},{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_2.1.3_1624305730204_0.24920581258814067"},"_hasShrinkwrap":false},"3.0.0":{"name":"@architect/utils","version":"3.0.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=12"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"1.0.0","@architect/inventory":"2.0.0","aws-sdk":"2.951.0","cross-env":"7.0.3","eslint":"7.31.0","husky":"^7.0.1","proxyquire":"^2.1.3","sinon":"^11.1.1","tap-spec":"^5.0.0","tape":"^5.2.2","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"47b08044fe8c53c1bb901baf5c77946863eccec7","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.0.0","_nodeVersion":"12.22.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-gXwOes7bd3D0ow1G3wAm8gMXi83bEYUa6S78nNAWMbnItyb3UdCTNYDV2SeY7HTsuNeUa4TJpzz/vKaBXjRzfA==","shasum":"698b73aa0d5935e04dfa2cebfdb7ba09b7733e0f","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.0.0.tgz","fileCount":15,"unpackedSize":46007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+foRCRA9TVsSAnZWagAAVYoQAJpkE60VmPMnOK8qvmuD\nOmepBSQbjruwmc1HVyzxj8jTSiWcU98JF4wCX5/1lEoFZU/rtpFXkesgVa8f\nlt+Is4OT7DwQ8v5JPwJRjjG30jacjsxifpKlftzErN6m12yEwSW/7KUnIHEg\nwSyCoF8OnhLPqqu2ry68+ChUzLbqtqpXUMLfSMpGAE2qLYIvlDWNFI8SfU2y\nPiveM2/wOpV5Io6xoLX+hqj4aNvjkL+UdG92lNaCmvmB2RSr7gXXU43mc3qw\natHy2j6pJB1z01B4qMwaoDk+YoEi90pikjFxHhM/rsThHrwpIOREqWMiwMTV\nLiX6xljlM0zLleHpKhX6hSFD6G3FjOW3MmfZzKRzwWaMZ+HsuRNxQ/A1HFk/\ny8FryIm2b0tgSC+Y4Wq54gri3hDZU19PxQStp1yooAuuoYNGD/bueCHHeIPg\nLCP+WEmr0asWpCUwRcYDuzrKrKqyr0t9vbrSVGO0eXxvcRr5JiHWGlSPnPM8\nnLn3+NP5b+MmzkZXnKDmnHtAaFLXV/j0tE9XRs1d74sBALqzyz6bNT+2wHqm\nuu6MB3q4MYHrt9e29/AzuT2V18pUjXbGG0+Et/32TJocfNLR/0xVvXDDkyOk\nbWpRhBbx7s4pzwquwSJ4yws+9QeS4FiFR5X1+SuN+KYSNfEiDFx5CN/iLcX2\nxkAs\r\n=bcid\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoGP7reHKeW9Q/DT8gQo7IFfZt+OjsLCRFZt/ypEpOlAiEAgMW58minMDqDLBxpDcMMBIrqM62e6vd+WurxR7VNu+o="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.0.0_1626995217355_0.9480277830623605"},"_hasShrinkwrap":false},"3.0.1":{"name":"@architect/utils","version":"3.0.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=12"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~1.0.0","@architect/inventory":"~2.0.0","aws-sdk":"~2.951.0","cross-env":"~7.0.3","eslint":"~7.31.0","husky":"~7.0.1","proxyquire":"~2.1.3","sinon":"~11.1.1","tap-spec":"~5.0.0","tape":"~5.2.2","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"5bbd03289d49a9b68dd547182f6ca54a1d03ba13","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.0.1","_nodeVersion":"12.22.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-R18tRcm+xKxR5VPzPjirOCG62ApWeLkXqHbDojKyuvFYVTtWhz6rHO30Fel9UgLZENR+946zot5OuV1+TKAQDw==","shasum":"736eca98c8d972ef1d0ffdbcf394fb73b0c41c97","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.0.1.tgz","fileCount":15,"unpackedSize":45979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+gJYCRA9TVsSAnZWagAAGnMQAJaf1R/lef0cq2GepRdZ\nqd86T5RHiO3mwYHJb1bUyv8ESfwxZ8an3utCEPgsX1yS+e/RJKIjZAFBTr6j\nuiZJkdBsmvONDxrOmUVb3KOF3voalOQeQj/G4B/8r0N3EY+R3rlrx3Go3POp\nHc0mq3NbcjSPN+hYGlqyzZ0EfG+QbFlwNuNctFvNEPJOQSu4A/+izwje9WDb\nx3UfUk9UP5GNTGgcCgTyko1EkvcF32X4eRDsMUQNydplBT7Y6uCC4l8JIe6W\nIXqL3j5YGZQRylnEJL3HvzW+vd8PkcS4MY4OpJogDRYIAihCcj7nyjuDmCf/\nvxpqLmx9mC+B6gKj+pqooOld6Br9uadbX1qfp0cqpXCk2r0sKkjBP9Fy55XE\n+YOV1JpIK2RGeevA6fXa/Nmljtf7JJj9hR5VygemeGQaAEt/qPY148jeUP6h\nd4asb6fI0yYtPgog0lVeYxiKHQTNn2uc6MB6Ck6v2Am/Q8JGAlLhlGP4GFC4\nG5e4L/c/ECuICzOdbi+v/ReK7DLp/O2pDfr/8YJlMqmK65qAjvN+41rasNP5\nQUfTS7YKQwJJOP0jw3/+/XZaNZ8EJeZqkssQmdqjuPToQ0CHcS2Bulg6Puv5\n8bIse9t7h02kh8Bmk2fyNSImlz2sPttmRUDbidD+5509RvZInZAmV8HcvV09\n8Ybx\r\n=jdAc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOoNXSD2CEPBG8aHrBybfB9nQfTwV6B5+Ba1zMV9QcRQIgVP4GJRZM0jOd12fQPXaL3dvItTghTe05TmUDnJ5dAo8="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.0.1_1626997336054_0.20140485717566103"},"_hasShrinkwrap":false},"3.0.2":{"name":"@architect/utils","version":"3.0.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.1","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"~3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~1.0.0","@architect/inventory":"~2.0.0","aws-sdk":"2.880.0","cross-env":"~7.0.3","eslint":"~7.31.0","husky":"~7.0.1","proxyquire":"~2.1.3","sinon":"~11.1.1","tap-spec":"~5.0.0","tape":"~5.3.0","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"15f00683b45ce0f2c900834ac92aafacbaf84507","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.0.2","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-RJxm6tS1QdJG/l+uv+T9I2MyGlePUH2eQwzt+yayI8T141TBa6NR2sPHvfIbRQk01n9eF/qGvIkbARI8teOPkw==","shasum":"0cf3527349a12e431445aeeab6c2ea2ac372015a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.0.2.tgz","fileCount":15,"unpackedSize":45995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAsqXCRA9TVsSAnZWagAAq0sP/RTJoVaGk0T1LmpHfvZw\ntVKolqnVacAxYe+uvqvwUw44Nk+OaqVnqwnOv9mX5Bq71nVDsrOmDfsuQlrG\nU5HOr5L58SHJbKLFODh6/t4IW8K22BN3mwKbaunJLFIYFYAu5RuknMdoKzKj\nPXsmNwU8hMtAa1mB/MG9tUZLPdIw5meteUFSLA5sOJmxuxOzg9DzyApm6iQ+\nuKdSh4Jt8kiVnCMGSw35yWbovfT9KrTEwAJuzozvoifagB7kEaGKk8CMWJJS\ny3tqKgc+BAE2WCV3jMMEgN+cgYzAJOwFWFzQmfq00XOOi4PPcsYV8/mir/gI\nA1/IDH/0/33L9l+WGZO+pL1SNLDSWxR+ewNmVTXY9G6TjSbYCFFRyuga7uZ4\nnV+JesETpGIc1RaWeRCUln3BJSDkyr6zjEx6T0RYXM9OSXt93bu5P74uJH7a\nmtACrPq1yhF2YqwFZOcEb/OJ3cFycQAtvlkszgQ/jqRiq1S++NZrtunhO32f\nupB4VeomiDLbObpLY1v+kk5OXKaqBFGbGUi2e+K3IraUjrTPhvGRGxTQWFkm\nZVJtynKz1+MxABUze1FrsX2HzkIYbCI78ugNTI8d3lKGIQtwKL0689hCHwFe\n2go7z2Iq5CQt24n+nDd6G/pCVPJprY8gFXopR6VTfGsgAFZ6QmR61CqAQRHo\nNeZN\r\n=nNiv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIb8T6Rfw5PIh2m0/wEqOg+zAKUnUxzgEsA2cb9k9TSwIgbDLUKm8aEfXWNi4egj+6huHu7NK8gzbyzoytjWtLY8U="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.0.2_1627572887419_0.4005007909725571"},"_hasShrinkwrap":false},"3.0.3":{"name":"@architect/utils","version":"3.0.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.2","glob":"~7.1.7","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.0","@architect/inventory":"~2.0.6","aws-sdk":"2.880.0","cross-env":"~7.0.3","eslint":"~7.32.0","husky":"~7.0.1","proxyquire":"~2.1.3","sinon":"~11.1.2","tap-spec":"~5.0.0","tape":"~5.3.1","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"f59e1c9bcd42e75a9c8e7940c4b9330d7f337c6d","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.0.3","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-8I2W0Nmjy0/bMaswhbB3KbFyg4KIc9sFbvPUnMCx0a1MnT9rzdjP8QMaokzcxz7gHnyxr12GfZrLeNVGg23+sA==","shasum":"f5fdba3646623a2983fb91bc431eab7fee9c0c01","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.0.3.tgz","fileCount":15,"unpackedSize":46344,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1bpp+r3+4MvDG0KnwC3Fnf/cWOuhkLBTjyIWilok4tAiEA/2QY3ooeiHUFK02tSg6V8tuTJENwzHU2XoME0XnCaDg="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.0.3_1632019597558_0.33749239144968746"},"_hasShrinkwrap":false},"3.0.4":{"name":"@architect/utils","version":"3.0.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"~4.1.2","glob":"~7.2.0","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.1","@architect/inventory":"~2.1.0","aws-sdk":"2.880.0","cross-env":"~7.0.3","eslint":"~8.0.0","husky":"~7.0.2","proxyquire":"~2.1.3","sinon":"~11.1.2","tap-spec":"~5.0.0","tape":"~5.3.1","temp-write":"4.0.0"},"husky":{"hooks":{"pre-push":"npm run lint"}},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"67ca29c9534fd6da5fe0800334b20900ffc147e8","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.0.4","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Tmzw9p55n2euNMLUyqcNPy82FLCQ0/3jpZqv5xcZ8erq4w3ssb2Ok5Fclm+56YCioyM4xUiwsGU/uC09+BWgTg==","shasum":"e60cde79f5d1650e889088f11a4e69789538006d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.0.4.tgz","fileCount":15,"unpackedSize":46400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzFvRCRA9TVsSAnZWagAAd/8QAJGxxmdyIe69B0C6mAzx\nFDf7wHGKCnL6+Yarmi+bgxDhTIhfBStMnso8ip6IqJyPcK0JT23k7Iy9jmr8\n5v5WzTs27by9wIghV05oEq5e0GDIwX+OBt3FecNIosCB9Knb9TKolp2LDs7x\neg3LyEorlzy063DRWStwsjFUhCX7JCJGw3ZgKeB/vDKz4j8u25fR/LlSEmcj\nZfpzRS1KurHEg8tiu1Nz20c7e0Nc2XpryXTOV+H93wh0X6OnQn2hh3u73olK\nscmgPnc3DKfYPTrSjJhww6/yPwpvz9xRT4Dwmscx3Jqc5JqQK9vBYuBRXIBo\ncQLU5tz9vcDW3H2vfMcNodEZo7RJw7gGFdp5GiX4XDjnxaBh2Ki1RAyuPnoP\n2faKw7rBltg0zQB6/kYMPm1VIXp/zfpYfRG8xzsJoXFIkEpZgUi7G2UyREX3\nAq7mlZCFp1+YUOnd58pwbUeIJnrx2AzuOpPvFKTf1zgsfJGoPoQPTrHDOV6D\nVLaDSxdPfD3Moyo1UVp+tm6ebSoufNgMETMrNVEi4gEnvKi+WKYROUI03Dk0\nfyMteziON7YkpqUMQDRUhYbYBbRoL3G2ZDJVBbJFFVyW2EnfVD2dTguZ0smm\nbvqk/uN+2YRdf1czMjjR3Rss9uCWys3U4w+Dc9IZDKoYoGuKk8LL6nk+yebd\nGBjU\r\n=LxR9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGfuGUAISR1iyvetgwXyBeXVeFrh1owb06QSNIBVc5IjAiEAm477lqBI1udwBZrD1hB6xEg8mh1rLaAp4G2MM6nUGao="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.0.4_1634077751218_0.32339121472259413"},"_hasShrinkwrap":false},"3.1.0-RC.0":{"name":"@architect/utils","version":"3.1.0-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~7.2.0","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.1","@architect/inventory":"3.0.0-RC.4","aws-sdk":"2.1001.0","cross-env":"~7.0.3","eslint":"~8.7.0","proxyquire":"~2.1.3","sinon":"~12.0.1","tap-spec":"~5.0.0","tape":"~5.4.1","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"6a3dc56282c88f513842682fb6056db0777f7bc6","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.0-RC.0","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Z5e89NVXukFze/+fhDN9YrGTeTbgT4Vyn5utlaUbdbT0bNY6zSOPIsl5Npiv+y6K1uu+WJii0gMDhOwsb+BCXQ==","shasum":"57a4ff808dfb2545cc58dc6dd6157d25a3c01eb6","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.0-RC.0.tgz","fileCount":16,"unpackedSize":47402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAFCpCRA9TVsSAnZWagAA2Y8P+gMJMU7xaXBuYhiEwwEv\nXoeqh62IC+YkH5Z3QMJe4bA7lB4zUJkbwOWOugEOmUD8CUJMo/kFSmvPC590\nMBSJLM3TWq+Sfy+MzJ/+Puz6JY9A7pPQdAsFiAWYE1bxlOwagZbsFzHOKH3W\nqxUISpXcs+ORh+211VgxKiGoFDQFO6Qy0JxLPbRDut/S8V0mc8e3KhyU8Fv+\nuGUr5BjDy9vL9cT9BLmVqaoWLkalnaT/F8JL7WJnPnRDeBsEUiaflU/SkCN8\noVWCeQVWOuzdZdLKlZaZGgvp2vXQKmAurh+LmncDfMJUueG9FqnNoXYIPQ2j\nV11dawoG2C60CqKNk10/UW6shbT1aRKH5BWzFRccZg7sI+j/TgZdsgIdH7jw\ngjII4Af4blgRRTa3VIqo5pLkNOARMhIJSyopykLl6d+dHSuhmfyYk7i1QRLj\nzCqHB6TkdauxI7NnW9bPaoMfNV60oyzxgFwCHBCZPhAyK/fGtRgAjw63Oavb\n3Yp2eMnuUsiWhdxbOFCGT9gTXdLoMpkwykQsujLrMXLXAv5leICxzWki4nt+\nD59kWanThkgGUTw+AK41wtMxtUIBu7TQei7Y8XM8tEAaJqnwhIiSnzYyNJkj\nRAVFYkbn/oehsdWDlN4HvFK6hdecE/Vd5f9uiMXJg43EhpMsIHypKj5QeXUJ\nwimw\r\n=G0+b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFk/8mXebww7g9AuG+T/tsnf+DbmecJTicX9/cKANToMAiEA59Vt7FE28grGbBxV9ryPC3PCBGCF9o28Cnn2dzZKTqI="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.0-RC.0_1644187816890_0.9532341915051665"},"_hasShrinkwrap":false},"3.1.0":{"name":"@architect/utils","version":"3.1.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~7.2.0","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.1","@architect/inventory":"3.0.0-RC.4","aws-sdk":"2.1001.0","cross-env":"~7.0.3","eslint":"~8.9.0","proxyquire":"~2.1.3","sinon":"~13.0.1","tap-spec":"~5.0.0","tape":"~5.5.2","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"441eaf1209d001bcbd3c70f16e1f64c0a18ff75d","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-oKGTcGDdB5NggePEJZJURButbAjeKuP2Ea+CS2iHE6QfQ8vBzn5Ps6Rtix36kWqXpArNHNAaClz3S2aCZteMJg==","shasum":"d38eb7cbe9b31a873d8fbc97c661c7cc533ccb41","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.0.tgz","fileCount":16,"unpackedSize":47443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDT20CRA9TVsSAnZWagAASL0QAJuRwHsgOuJaPOP9lBsa\nNXfPcl4urDWGke6hhe9vCZnalDGdrPGaUFxQxI4vobRCH06yRiK6TDGrvRi1\nnroVOibFcWq0ZY02NIP42C2YYfaC3+a7ZKOhz5FCCAy4Mx83dyhwG1cd/z6l\njv3kqN5v3pi0zpJEB9/aRm+PKKkBOeYndEkDEybGtx9OPERP/WBUP2WfRtMt\nKUwOqLD3nLuFr9VB7osEOCJwuLLWxKg1wMpQihEr+j4+iP6y4N0Ymr/ZUOEF\nF/503qqZ7aLTjoBfmY4K9c8XQUaZI6S876o46QjTT4OBSSDAwXi5sdp4QNA1\nG1mdHftNletnAhNewk5DwYvKQnVc3Mp8SGHwP7Vx2lNUSD9/lZO3JLuo+d4t\nZe8DaQoaqFX0b5hh5Z3pBcbuJ75DgyNCcXy999vufH3F2ck74w0g/ipDzozz\nEVJfHb/sDTn1KkXGRKibfRbJSbWhd3VagxNZaWRJaYDJrmyvYftObTzbKqXC\nd+6uXlG/d+O8AZOmwwYqrJyYLefq1GToo8m2vZ9A4aZzfH1MIHEQU3JgIDGI\nepzULHX/DE7pUWQ4Fa8e36rKLH0q93dk88YdrdjOibhxlQJGf5/iXJdevDMV\nmzTNKW42pGILzdmyRpRz0oRgyr0srqF4RdmwncV341JjxxhGrCVAYDL5OAe9\nI3Rz\r\n=TJoN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvmSn+67eo3wDLAy0uddAvDKQ5ocTiG3Y/7M/fqWBWCAiEApvjs7H51p3vJ9j4atl0I3Vt+E4TMd0kMALcMBR3+Y8U="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.0_1645034932072_0.7482644685741822"},"_hasShrinkwrap":false},"3.1.1":{"name":"@architect/utils","version":"3.1.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~7.2.0","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.1","@architect/inventory":"~3.0.0","aws-sdk":"2.1001.0","cross-env":"~7.0.3","eslint":"~8.9.0","proxyquire":"~2.1.3","sinon":"~13.0.1","tap-spec":"~5.0.0","tape":"~5.5.2","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"a20fc9e87421608680c89c24fedae8d51d49c3ca","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.1","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Dr1+zuG0EZzqQuv+BhR7NRAIMsGSVB3GuGuR5znLTzJMvFlrsV/LpLlwAjFIa9POVWBpNQodt6Y5p+TpR5FaUA==","shasum":"bd0d42b88a4756fa232ffeb006da25fe2b216e43","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.1.tgz","fileCount":16,"unpackedSize":47649,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkB/uAQhybohvtBIWTZTNnOduP2EeuaoBywF22D3w9NAiA8f7qOxrKUuM+98nk9bGiCoJ35gODcVz6YwO3UxodmtA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiX32eACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKHhAAl8Wth3V9CFiLATL9Z8EoiV95uoxKL/D4Rs1nmOFXcT+b631r\r\n9O38zHqoFZYXon8P/HoM7srXANd8y1jijj48atyCHy3ciC9woi/xWa7RH4m7\r\n2MnTiD1Hq31sKMnhocf3o/wrPvoKyLM3QcxGJDAlxsOw+RA5RWzHypnVuUnx\r\nmbZ0bawTsudzEnLwr5BA4Sxsf18CIO8yP+cnkZRBv5X4hXajy0P3Kh2fH0nX\r\nbCUkd1YDwFHQPsnENorr//nX236mB9z25MVhG/LPusbeUe9btK4yfOiCcBOs\r\nRhMmmk7th1umOz+HMDrzxsM/MwnzfsfRG+A1Br0x/Y20HZ3GlvuKN81UHTsY\r\nR+S0aho6pIzTCP8Vbnn//WqESnq3EAzhdaLctty+73BtzgCxekG5np1etmzf\r\nuj0ncLcKS7FYNMM6W2zzZvGNNDVmr2M4vHicVl7kHCcJFo9Jh60ei6MK0JTN\r\nZbEmtiErV55McEgSYnwGcn2l4XNw8R7zSdwoK7zIW9jFHFUWXi6QRslhlC3H\r\nnznz2Pk+0jj6VImHLQzxcoZtzexRluR5uDPyw9YVKVBK/EXhvAMA8FC4lskt\r\nlVPn2PwZ1o85fwSEjqQnMZhY87OenTHyHF0iqd9Dz8IxRb1iQCfYlfX/NqcP\r\ntLFquzjlJ+dXztBmoxEgTKa0YIV+noPFo1I=\r\n=GgMo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.1_1650425246071_0.7191434347842665"},"_hasShrinkwrap":false},"3.1.2":{"name":"@architect/utils","version":"3.1.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~7.2.0","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.0.1","@architect/inventory":"~3.0.0","aws-sdk":"2.1001.0","cross-env":"~7.0.3","eslint":"~8.9.0","proxyquire":"~2.1.3","sinon":"~13.0.1","tap-spec":"~5.0.0","tape":"~5.5.2","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"0b8070f2e45e5b60e69c6fe4913e1664eee305e8","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.2","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-m4SE/FzTlWmy59QO0unv629LQZ1xIqcIEuMx8V/UlGrSB6aTDoZivRBGemrPfOU3FOAGMg9nsbOdi9QlHzLWYA==","shasum":"b87e17ce76b6e4eb50a9fc2e91ed12e45c03fb90","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.2.tgz","fileCount":16,"unpackedSize":47660,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCRlUpMK6LL4D+ZeH1bjtMIuW6AdwOja66IJ1to6drbAIgAuYOLUYba0a9TAz0mMt/NbzpGQBfoBUfgnWMS6DZPTY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigrtUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqt6g//fOSUXeEOfJc0NB4KxQqp70loumkteEQxGim9LVooU48tvPg5\r\nB3N2rEwMKzPSxF8cD6mEYRX8+w+/Z3jdv+AGFjcNZwEffpLnMdLqs+2MaTzG\r\nCQt+BZj/CIkYOENrxyXQmISWOSD7sFNEU0RR/bA7Lk7r3ZowvZmh6rThHvjK\r\nZAWmazku4euQmfHLPYqFsrFD4q0+9dbJBvRJ/ZPzWMXPgW6dlgu8ddIAzCvT\r\n4NwqasvovTUjnntCyzmzizPik6QnMRxov6OLPY1iSOqfCDezcT6B0tnN6Um5\r\n4ip5b+Gxsqkvk/4YigLqmnSSEs/y2QHR1Yq1vk/MAI2ceQNFXonxGrbdCipl\r\nS4ecVk0LALgC9iDq57A8/KlSrkQgZhS2efEe0t7axPj4i6xBx7lUiSZv972e\r\nelYBl+4UkzRI9EVDnD3Yrr6UNiGz/5g5LtH6gbnQwPg1hHgrIN32oBJOTVyN\r\n0GxV5Ht/KZVacx71oLmbdLkGQuXc+WEtjzWzhkkg67PL435/f5bP9WXDzIya\r\nwVPqTEdcut9Crh0Q/NvYmj/FkauzQDsq8JGivgEaqts0QSzBJpTdGdxDrTMF\r\nezLo4AV0fP277Z3Ey1WDqFboFs2TU61pHV6/NgGrg8o6kBsKKD1A4gh4Rkx2\r\nvMxOaHSHTxxDKh104n5QR7WenXgGx/IQlwY=\r\n=mE9x\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.2_1652734804723_0.6479497837376655"},"_hasShrinkwrap":false},"3.1.3":{"name":"@architect/utils","version":"3.1.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~9.2.1","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.2","aws-sdk":"2.1055.0","cross-env":"~7.0.3","eslint":"~8.35.0","proxyquire":"~2.1.3","sinon":"~15.0.1","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"1060dbd355c0bef61b36a94b8d2b465159b64a2a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.3","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"integrity":"sha512-oDFCc+01/0dUYPCWjs8LhjdXFEpCLMc7tygYy5F6VhMTltRrey6UeKRlDhHehBAFIyXYLTIJacmhnwPXovdUtg==","shasum":"2345b9e048a2513d5f4bf9290e2d1e9d19515a7b","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.3.tgz","fileCount":16,"unpackedSize":47871,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDpZs0rZj93HIMAbLd3I0LISzE3zmhSBi3fUA5wYm4ZZAiEA8HISdQc0xAt/MCyKgSA/ADMUfV19mIIvCAF4u0iX3dA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkClsXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoakQ/9Grr81Bz6U9ftH2eskc6Lc3i1kN2MRQClQIB7p0DEvyvGhDD5\r\nTgZs4gi+/mUDA0j3LY6RHkAtxsjsiU/pjQuCeVDSeTDQUa9Aqn4le9G/LYkL\r\nUsvt46nOMaWcCpFPTEIPHMS/FIc5/kf0InsgdaEKaXgO50cPKWEnVBOAY2jH\r\nexmiRlKDSu9A6zqVLOWyZl+aO5LFfGs8g1XxmDui11+BpdNQtAqa0vAyvq/A\r\np/ruaGU+i9r06aRaOt/GR7pXGzdOerfDSFpAf0o+G+lf+DAOz2meooTicwvs\r\nxXUddgycK28ncwmor6zOMfpbaCqlj1Gyq5+1X3Sru+NMlHnheoPX7P2JOdkI\r\nK0y7Si3xzo9Dj6rcrOU+IrvbBL280z7kvFY3fo+6LGZhkbZ9RCNeH8BiqF2l\r\nusZBMbQPiwk8hWLI4q/8B9um+yhWrA685AMZ6v4LiHcvgjKsRj1Yv8z7N/rS\r\n5QfWc19UZyo8lfyXOnkz5GOdzejPAS3pFjzNjIEMpnSlY0/ID5yl3YfLGIqH\r\nu4HhgVP7Fj++nmQvEY0JxzOLQnjX30utVeEzX1vS4bUFmHftRgD5vsI3RTUr\r\nJ28kHzt+AGxL6Hc20aXMgxTVzMFHfyPMajgbNeCzU2K6HXyGYm+qsdz+Di+P\r\npuLwU69PFFAHCv3N4Ev9Medq9beCzzEBkPg=\r\n=CrYb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.3_1678400279139_0.4571014685420005"},"_hasShrinkwrap":false},"3.1.4":{"name":"@architect/utils","version":"3.1.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~9.2.1","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.2","aws-sdk":"2.1055.0","cross-env":"~7.0.3","eslint":"~8.35.0","proxyquire":"~2.1.3","sinon":"~15.0.1","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"4ce243f3b9e0bbfdfe37dd147c979a346ee6a894","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.4","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"integrity":"sha512-8gp6aUga7RWlkmAdV5+Y6v8dbgo+Xe3+MDdy6tKCgO2M6Sf8q6zsxWwAi3pF3RVzStZWo1Ti58zCaVJmOtpK/g==","shasum":"33871ebbf234269cb042dfeb5dc884b50e3daeea","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.4.tgz","fileCount":16,"unpackedSize":47993,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmmPOTac6M4F/Y9PSqzxAaZlJSyp04I48EVxa7RUTFzAiBzxj9dq8GHEKQHLPGnNuLrEDvZYbqBqJZPzYZGQ7YYFQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCmMnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAcxAApN9bvjC9vv2Og8lBNEBpYoC08VBik3+NehdKy3LUDMp+nF94\r\n9LeJ45n7mQhjnDSKqnWWXPeyH2Az4nbQNcKob2NELDwRHP4DOmuqT3AKofwQ\r\niQCo6xgcd/fXkzUaeeIuUXbpybeYK4Pt/jcuiWmfVFXTcU+YQlwCFXA5sYr/\r\nqcTnPX7Olc/rx2dH05rECTzE5845Wb2WLPzf+JM+i+d39yKMG7EexaJwlvO4\r\nRSMqFiDhhg2mQBJ3jP8CiWgKZHY64rF69ZUO41HEyWAqVS3ysqmWmKwkgA4R\r\n6DgANXXG1y8o5aS3bZ82S/iOVrfpq/ypNL6BIvz0rkkJioTdTT656vaLBsX5\r\n16gVIJTsE/zT4NIgAFbQAi4R2nuKiZEu9VkUBA0UKhIvU6Eo58pQsfvpgvN2\r\nWC4vD6nS1S+halRC1N5nHIz0PbvkjvIDI8BJ53b6F4SlbcH5F3lh4hA01h7a\r\nymo1KLwBDk6otW7Q8uqtnrErM1kDcccY/2s7XQnHcbwEDB7VaKuFc0QrrNLH\r\nc9qa/PBLOGSLE3WlaPvR6PJOTWsX0JgsBVKx67VKSZpSfUB7esvNLXyiAKVq\r\nYw1FYh6+CkHWbfCJ4u/R4wdGxyzG93+xJ+KXQ4meJxpbJPNrAYKXYaSbagIz\r\nSDi874NncRf0BGzDXuGLjuF39dNnpv5gguI=\r\n=sGKL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.4_1678402343376_0.3881972719028415"},"_hasShrinkwrap":false},"3.1.5":{"name":"@architect/utils","version":"3.1.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~9.2.1","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.2","aws-sdk":"2.1055.0","cross-env":"~7.0.3","eslint":"~8.35.0","proxyquire":"~2.1.3","sinon":"~15.0.1","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"e43cca43d6138fa8c116d9bf56d87976403aee51","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.5","_nodeVersion":"18.14.2","_npmVersion":"9.5.0","dist":{"integrity":"sha512-tdE2M5I76Bj+omtOC5rwBv/ChdG+KFMus4HtwhSMvdmxlT+KIfzI+104eVw/jDjbYnG3Aat4N6CawnNUV/GgbA==","shasum":"71917e1c4879ad34f47db1540d1f6ada5d6abbb2","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.5.tgz","fileCount":16,"unpackedSize":48008,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzishi7teaAK+koEvIEvudybHhqAYphbB/9Q8Zm3McNAiEAqG4Ydw4SocwvpYguZnB8oFRi8vecEGMS0ls0z5FxecY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCnVrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+Mg//ZluItzpi2QqvGgDbTsFw1e+iL8anF/CbFSSeyrNFOrE8a/oE\r\neqm/z9q1tJlGcVnDnCLfhMq8O6ajid9QwxZwZX7fWVokjf+rpljzGlk8pgYC\r\nMi/k0eaTwxeSYNDugn3TEcs8IOQDKW2c9uNLx3NBrLn4cIKV+EwaSqhv1LVR\r\n64qP32fT+yJ/tBxd+9JsA9QDzl/yTSYHsLwbXEpTb/2SdpFWYZvN7g+WjlEr\r\nOGL+vRrDxW7vJ9KBP6qeGN7VYjpXjgCJ8pAbzXbI2jFkCl1U/AGwoNifCcX6\r\np5TtaT9XRemt/UetA+dtJw8+05xKBohPDXq5P+C7PRGTKTNJepaIXPYCZlMs\r\nJ1oE3lQsOu4tWciGmJ/RqG75aoiyTjLWa4BpdZ8N/iNKrgIQG8XXy0KgNm90\r\nx/YBzbG1j3vd7UfhgBeJ/JuewU/tQXkekZjPwXHs8cXrb7yXR3XUliO6dJrg\r\nrlSDdjsP9Oo6E6ZbwbepdFO8AMO/W4wJnJ5WDr0UWzC1hQWhLXu1zhLnATQO\r\nm5LgUPIiM5RnvwFTY3T3v28Td0P44kzcvh9Y+CCcukcIEoBVpoX7lC1CUWr1\r\nYHKeey6FjOiZ79t5MBr0VEuv454vqt9CqaWP3pPGy0de1EcAZqyJcCAqUg0w\r\nnYuB2OvGmpZhi4xs/8VCWQscjg5mvfFgY88=\r\n=Z6ky\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.5_1678407019819_0.7198875607136712"},"_hasShrinkwrap":false},"3.1.6":{"name":"@architect/utils","version":"3.1.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~9.3.4","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.2","aws-sdk":"2.1055.0","cross-env":"~7.0.3","eslint":"~8.37.0","proxyquire":"~2.1.3","sinon":"~15.0.3","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"cfebfb5887bf563bd2878a87b7a51a0dc3aed44e","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.6","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-n80n34PmZxyQZQycg/F4FVbfdQPQnx3rH4+RbOcb3feDBhw6qBy/WdBpqYSbjmO6UviDyB/MGgp2m94Hvza+FQ==","shasum":"e49cb363b6d8a2ae2905062bd481eb816077ebb4","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.6.tgz","fileCount":16,"unpackedSize":47836,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErSf8vBgQ24QgNrsFZxhAKbRq3JgjZm78CrdKt4ONuiAiAXwwO62ajFsT/ntpMEMdz8EoY/DyQAnverccweeKd9Ug=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkL4A/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmquHQ/+P/Ugq6rpL3MMRO4cpXGAieMyEzZ5AgPd+MFinKeysMNnBW1F\r\nzWvD8I7Xh4F4ecZi0ujz+iu+JdrhBXCwUGWLWILNXh2XuJPgp1/U8z7DnW+w\r\nYVIYBtReR+QB5MzNDvQIH4QNH0mfHVNmYqMctXDZ2HXlPGW3Wqzskm3UmHJh\r\nPFAFb3Ev+qiSHsoj5/bYqBgKmef1Q6NQI7zD3ekcfAkVe+ZT8O5o+kCvmsm5\r\nWMdGJf1it9WgpvK2bLdt0V9ypyc2LcCQBidXe0HqP28Xfo1L2/V727uXCBG8\r\nd9vKZeFSY7kfXcd2zmWrrUckx3EOHCIbhUBiMn9LOFOsv53iaWXqZwr92OK8\r\nFVrapi+vNBut3HDqW1lAZ4rTPncP+Rum3kzJCVoNqliQk3JNk5+xjsQxoGN8\r\nYHt0LD+34d1u4JdkeOak+dpVZv0Ekj8wcjUz4wHEOCPR9uCnIttupM63xRm6\r\nXxNUOuNnWnTctyMpx8xBIE8jyY3P+3fth18CCUhtlg4ZCJhm6rEwobx/nAbw\r\n6xuYzI4kLnBZxDlVMVhP9i9dGMWvMV5rUNJo16WLhc5/zazlfaGhefjKhYVQ\r\nwU7FfVXD/LGB6GZ/N86Hd4qOZoxICdVLmR65XUSL1vAz1UsA5Nr6EpzEb74k\r\nax5KVfGdA45Gou/BYq9mQJcGeRVCBhnW46w=\r\n=VYlC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.6_1680834623513_0.9672131308063256"},"_hasShrinkwrap":false},"3.1.7":{"name":"@architect/utils","version":"3.1.7","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.3","aws-sdk":"2.1055.0","cross-env":"~7.0.3","eslint":"~8.39.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"4a9f09d55ea0c16ffea87eebe3db8fecce766946","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.7","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-QRRbeKu2WJhwDu32n577r9Q8UcatgyXGD8JqxtN+H8+bE/Qp+/bI525+DM/TaP6OG+LnvKwDs1f/0ISYEzJ6Aw==","shasum":"795927a7046bde437a4e96e795ddf3ef73db9606","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.7.tgz","fileCount":16,"unpackedSize":47837,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNgP/P7tOBszrduCCoz3XyIphgbJvDeUud99dWQDCguAiBeFHCqx0lzdfN5h/ML1IueEKsk9K1OXsUiANFgru1mkg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRKQGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocVBAAjX9xGg38lwYpq3JNBcbYSrDkyihAasd1s3F6ZCFdSJ39gsT8\r\n5B6AcrNRAp09vR0qXpRbztGhrkp8BrFbfukzR65Iigjg9Zqlwg/j/w2Tn/IK\r\n/CBM4Skh/nMOt+PzqKjVWP6oI64Gg63onr9XqOoLx/2t9d73K1PtW//Tj2Sc\r\n+ReR4JBFwmW3q5IvztaqO9YDVoSv0hOy2RNCCSWPN7xsLxGF/ncfrwjZtupS\r\nvXVfyVgRoURToFmN2FDzXFwmXg9xOc+nXfjQ30LWq/Poqk1mtQlfLD7HbEqr\r\njJjO241EdkwKtcaWJaL+hSaqZH4VPxTUlTag8QtSR0egE0Qu1azFAcWY7tRq\r\nLKNwYodxtWyIns4aFgEQm4NQ6X30lPD+6uBzwyU05D/QnXPzhogUcNyrF+vh\r\ns/ZDY/eGapny6XCrHwn49fQrpXXSwDB5Z8FaSvYM/FWwdyHJNDJqvXEqcjj1\r\nuaxJYjLWB43uh5UudgHZIuU2cUhcJH4VTesdZcscBPDcafNrFK/a7cmifegy\r\nlRAX0u8i/R7yGx7miSJCdsmbcFFlZENUSheFg2BfvA4etd2Ny35FETQQ49xL\r\nQJ0CwBRtBF4Vib/KwsHArAChI8a2FVuYUUGmduzOhQIs7FR2W6ZzPnL3BEKB\r\nLAeOq7qvyOhKe0y2D7EydCnKaOncRWnUrrI=\r\n=yoQL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.7_1682220038374_0.42407218181246464"},"_hasShrinkwrap":false},"3.1.8":{"name":"@architect/utils","version":"3.1.8","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.3","aws-sdk":"^2.1363.0","cross-env":"~7.0.3","eslint":"~8.39.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"930f780a6487c6e87e859e6b64807ac6bc307317","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.8","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-3sQWaIAQpk5MmPJSEIQInimhDM77I+Xx84qu8QURmKl9t1n/jQv/lO4ajtF4XW/8ZJ+Iz5v6P/z48ktx8acx5Q==","shasum":"dfce335e2443297495eed92f47fe7ed8439503e4","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.8.tgz","fileCount":16,"unpackedSize":48046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFrRl7msBC406GKZGJDrjB6jrlZ1Ft3B/64sKwDCFhCgIhALlSTjIqMrA6upAcpc3JDPibqPBRi7dBRsVX5uipCw4+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRMUTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpjyw/7BsL3+B791CfcEChQC5QV5REWotHbvVE86pY5IFgguC5U/8Ke\r\n/jd6fBV208D6kzUKuqUmXDEzmMEh3TBWOCoX38llF/EGlL+jcYxaMZPD7iC2\r\nzcgfAhexKuFV++LKbyyNy2c7y+6hDJvcU//X7X2mYEZbcSFVIVtM8e5OFlqq\r\nA67GV5tHGFVbnHbjhzgqjw9J398NjdyDJHOGh5SEoNjol3PGe/XWAohkGXHX\r\nzz3dxlqDNEYpvoVrshK6GT+fMcVc9Lhhjm7TsLkyWTtqC3LUCOA+FTkuTiZt\r\nvZGq23/nwa12MlP0A/+nTs3i77cu7VyueLFlYgZWS/lE0bzHj2UKa6vWby4a\r\njEqTw2Lahdfm1bnyPiuX5mD4w098OgmjmX0ahEgHMfEr3NosIwEsaQTCngY/\r\ntOJaXdEVCDFCyYIX/JpwgI82ThRRo/w5YKms88aJeUMp5A/rcA93gu77F7vE\r\nb8gpAqW09m0FfjV+UNZApnziSMgzGvlTDSinoDlqKiGZmVM+X3eBBNwRPP4z\r\nAxh2Ytym8/BYKp1DyEOVgb6mXrUK5fEDVygetlYqTDEzA+RVuQeUy/j6/H35\r\ndaBJXZG4TtIJr+4uNO8hqrADcbZ6mfQDFLjqcQpn0MKW7c9byGKP+nHJoJKP\r\niy0G+5fKqSMOm8kQZJtN+Ir6uhPWwdKBZjE=\r\n=ENUJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.8_1682228498844_0.25293477858564106"},"_hasShrinkwrap":false},"3.1.9":{"name":"@architect/utils","version":"3.1.9","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.1","@architect/inventory":"~3.4.3","aws-sdk":"^2.1363.0","cross-env":"~7.0.3","eslint":"~8.39.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-spec":"~5.0.0","tape":"~5.6.3","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"gitHead":"29c024d5ad46e1d8f44902fa472251afebecce74","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_id":"@architect/utils@3.1.9","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-VSjIM3+JGHqjryrURd3bwBfPhc6K0znljjQOsxEOOUFEdB8XA2cZGS2kpfhIIz3ApovoEfrCvo6y1D8qhqKHNg==","shasum":"d6fa90ad40a905e4e9f89389f9ee6aa2cef81e54","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-3.1.9.tgz","fileCount":16,"unpackedSize":48038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6i3O/fhiqMlaE/0m3lflQjKLVN2QvUWW5iklagamHMAiA6pk4vWWUzzh4dwau+SUVX3XfiOjQlT4AGhRojS1vAtg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRtnoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoF9hAAjQD8kCMouNwouXuni6u0Pl32vnJ3lW+Un3oPARB7jVWrkr8D\r\nJLO29drc5kCnOQrzNvl3FzrGiFJcCikqY8n6rQI9C4tdI79SuDAU4u73TaWx\r\nisYIQy/NIyBe/g2y6RY5igJL4qVEo9QRYrLMYu8oaOrlnUC5E/Xth7LuOm4N\r\niIA6G3Q0aPLlm7EcfWC7DYeIinnWWDEDgujkQ02cWJ5op1xYmHXiMYOQ65ZL\r\nnbIf6CzDIlN7rQxs87+sJQnZhU6hkJeK0tmBEnkZCnVh2OICCzvUFQb8FrOY\r\nB628Qcv63IYy6nL+NNIjQoQbVpOk5yEK/SY3lhTaTgswkObg6MEzqRJxgbPo\r\nPaKfYeQJZwL/K7fUgAkgKtputZT3Qh1kjnJk9csR0DKKQjsP4hqUGn4n/jsG\r\nAdeo/nyKHCzzmJFGypw6lDwTduKKIbF0yWVjfsiPobOGB0fg9N2UwhAKstIS\r\nH/bFrFNUgiJY4m2h9afFz+yXtCdtJSF23pA6k7bON+OZ4Wp+9oAqlMWMVG+H\r\nWOCY+mlus6ziSxh7YtipZWMPxZECRHi5KCvxuJ08eevln6ZygvPKKZMKOeyG\r\ns+XPM1YlK+qYfBKYdEZ9UrowQ2fIUOTAdiioWDwjur7183/Gta1aleobBGdu\r\nSCsuRAt/2RzjkjeTi4doVxLw2b3RjgODRGs=\r\n=nBVe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_3.1.9_1682364903790_0.8626431897293088"},"_hasShrinkwrap":false},"4.0.0-RC.0":{"name":"@architect/utils","version":"4.0.0-RC.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-spec","test:unit:updater":"cross-env tape test/updater/test.js | tap-spec","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"0.11.1","chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.4.3","cross-env":"~7.0.3","eslint":"~8.49.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-spec":"5.0.0","tape":"~5.6.6","temp-write":"4.0.0"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0-RC.0","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","gitHead":"7dd623f0430f27f6875e5d0d478910e51c1f0006","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"18.18.2","_npmVersion":"9.8.1","dist":{"integrity":"sha512-Xv4sBdjExco6FD1HQIRFZOzB3vL4qNLpKtYCrC7cOMD6r7bH/U4stmLJ+SY7ftkGJk9PyQdCLh6BUwkHEGf+Yw==","shasum":"91b7bc0c208907708e264c40ab2fd258fe25d2b1","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0-RC.0.tgz","fileCount":17,"unpackedSize":45982,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWtAxRAFKHXRXhQGHNq94lLuKErG5sOq209UeRnCJhBgIhANd69bGKsT2HmzFxSb1pQRxkjH556gvUX/oib2YM6BoH"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0-RC.0_1697762672631_0.6196047035140344"},"_hasShrinkwrap":false},"4.0.0-RC.1":{"name":"@architect/utils","version":"4.0.0-RC.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"0.11.1","chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.4.3","cross-env":"~7.0.3","eslint":"~8.49.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-arc":"1.1.0","tape":"~5.6.6"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0-RC.1","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","gitHead":"8ff2756ff06b527e45e7c28f1349afa9104921ba","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.8.1","_npmVersion":"10.1.0","dist":{"integrity":"sha512-xMviMQ3Jgq5ayO7/T05ttLZz/4Q4uzetFwgnqCFrzsyYPya/4+txfjmyjPXdU1McjObyCgZlcmhxfyxpSyhjJw==","shasum":"22b4dabd1b6414043d8c7e42edcc2e064f5f3e53","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0-RC.1.tgz","fileCount":16,"unpackedSize":45200,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC0RmQ5co8mNwOvuSJU3tANFFHQDe8jUXI/c5xqzk6JoAiEA5/LPHezsC5/vVTpZaQ1ietMWHYOaezaplGxcuibMU2Q="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0-RC.1_1698270823364_0.3643295740637358"},"_hasShrinkwrap":false},"4.0.0-RC.2":{"name":"@architect/utils","version":"4.0.0-RC.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"0.11.1","chalk":"4.1.2","glob":"~10.2.2","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.4.3","cross-env":"~7.0.3","eslint":"~8.49.0","proxyquire":"~2.1.3","sinon":"~15.0.4","tap-arc":"1.1.0","tape":"~5.6.6"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0-RC.2","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","gitHead":"aac5b24026efde23c816243373a7f9e2306502b7","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-aig6FNEt1UGBLsKvZ8PCS/ghBVU2N++EoNQ/m8eZi32RJkGtjbVB6su/Jcb10Ergo/9Q5Q7WoAxBMFhZjNrjBA==","shasum":"f5cf69f15a1c34996e8457cf6350aba57ff9923a","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0-RC.2.tgz","fileCount":16,"unpackedSize":45416,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlWVedOQYMgeuK5TMeN6ldom/bNlJsotuVvFr/1okJIgIhAOsEtOX+IxNVE1eDo5B3VrOPIGfTKvKXEWxfAuFoveZd"}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0-RC.2_1704740210304_0.16462574597728907"},"_hasShrinkwrap":false},"4.0.0-RC.3":{"name":"@architect/utils","version":"4.0.0-RC.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"~0.14.2","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.6.5","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.3"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0-RC.3","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","gitHead":"24a83430279b3f16d3f027cd30166b7ace77464a","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-VmzfP08AcZAX76ZMXfn8AR3ns5KvDjb5ifGXZBB6ZMG1XpM9FEHFhAkn/I8hz3A2qFw4B8K+7jNIDvkEWi9NuA==","shasum":"b10fe7a4908aa1f57137b06c2329495a16b3cde4","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0-RC.3.tgz","fileCount":16,"unpackedSize":45418,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlL+HElrc1k0WI5UoK9r2yR6T5Mt1oMJZa10axeduAZwIgd8r4WztDBKpAx9kLw1jCp9wAwHuLZowP3xNeYZH00MI="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0-RC.3_1706110651958_0.27500227438963276"},"_hasShrinkwrap":false},"4.0.0-RC.4":{"name":"@architect/utils","version":"4.0.0-RC.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.15.1","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.6.5","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.4"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0-RC.4","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","gitHead":"1d704b3a12819c6e1a0fe9df4414fd08bd61ef2f","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-BCiMCJ2UUgYD4GdxJm9zm0C/vVh0kdMi3VZbNgHSDRyvyFpI53z3w0Xh4+aT3PMsb4RMRIbMXOwTiegttuCtIQ==","shasum":"9de0864f076c4a2c732c68ae6e05102bf25fa370","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0-RC.4.tgz","fileCount":16,"unpackedSize":45418,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFyNjfCDFuNxRN+nl5+D2FW8+idiZN2PHcR3twW9sa5RAiAhuG3gWidhL51cRd56nkKDzpSVp30XzrzCCLjQXVF6eA=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0-RC.4_1706717675102_0.4018670926882961"},"_hasShrinkwrap":false},"4.0.0":{"name":"@architect/utils","version":"4.0.0","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.15.2","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~3.6.5","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.4"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.0","gitHead":"a6a597b4287aa59427152e17a1672ef8b0784304","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-Y1987lfIS8RHK+oNZZFeMOfTZxz5QMS1TjD/pwEga2eQn9MZjuMCTT77G4osQwF60aq7h1IX9G6cw0apDnYOTA==","shasum":"10cbe52e64066ad581977bf425b7b8044c5d4009","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.0.tgz","fileCount":16,"unpackedSize":45413,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHxQ33cj0I2UamhHbULi1wIQg41Fduu8rFjE1oItpl7AiEA9B8twIaw/3iYVTpMt2ou40anwjTZ+Q8U8/Ix86xc5NU="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.0_1706844832148_0.9246600384998844"},"_hasShrinkwrap":false},"4.0.1":{"name":"@architect/utils","version":"4.0.1","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.16.1","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~4.0.1","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.4"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.1","gitHead":"ff675626fbcbb00bc47dc21fe2be2ab9fc5d32d1","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-L69JzRC5oRoXhJ02ux5x09oz9dnaixlY9WNG9LYBs1/2X3WA8IfChVZ6EPWPt29ROWdCgHkndSsPoGHOdHW/MA==","shasum":"4ad18c12e0d0b191de384d6052bb639ebd942f63","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.1.tgz","fileCount":16,"unpackedSize":45413,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/oGsVjIM+Jtlwy/AEQfdLrdn3tvBc80usH4BPuzwZ7wIgdMnYDZc0L2rxDUbVrKUehoixTa/1pQHVneupmxtVmaw="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.1_1707151613336_0.8828450245026223"},"_hasShrinkwrap":false},"4.0.2":{"name":"@architect/utils","version":"4.0.2","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.17.1","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~4.0.2","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.4"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.2","gitHead":"49e4c4f71ee693d5b97315a15e54b9919120fd88","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-y2Kz2/oCVHDxZ9zXU1Rwy3Q+uxhJzWQVaVlOM3PuobDXBz28qxdIlrKj16tWLDdR/MtIiTDer4BLBayuCPHurQ==","shasum":"36aac8f68d13067f9f336c20b2a5541743905583","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.2.tgz","fileCount":16,"unpackedSize":45460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVitc/c5ikU5Hbev/kqKUeBHfARdSxpQleTdhHzXtB8QIgMPWagLJEaZLwjARXMWt+OuOiz5ggMlSL+GXdCJk+6vM="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.2_1707274834839_0.6173312480772086"},"_hasShrinkwrap":false},"4.0.3":{"name":"@architect/utils","version":"4.0.3","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.17.1","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~4.0.2","cross-env":"~7.0.3","eslint":"~8.56.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.4"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.3","gitHead":"513c532283947a5be8c6d5962183c5360f800601","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-n+AaNhqN+atCagEkXXjMhj/ltdnyU+XtJ0+tN44A+VmMBcSWSGkUI7/SvEKAiOpXP1pXoc9hzCZDhCMF2c0bKA==","shasum":"1836893309f206c9b174ef3fdbeb2da5ac83a2d6","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.3.tgz","fileCount":16,"unpackedSize":46150,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBh1Y1AaxpwmOT132MynihC6DmTHTjmlgXEUrN5P7+AVAiBbhgDHLTiHVQcf8z3uhPixrBYHG7P9Z6r3DkmsUtCxQg=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.3_1707505835107_0.7542186954160461"},"_hasShrinkwrap":false},"4.0.4":{"name":"@architect/utils","version":"4.0.4","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.20.0","chalk":"4.1.2","glob":"~10.3.10","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~2.1.2","@architect/inventory":"~4.0.3","cross-env":"~7.0.3","eslint":"~8.57.0","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.5"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.4","gitHead":"f3b8a835a862db77dbf3e986fac4bfc30e0fb5c1","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-NaxwwqRBmEK7Hdt3t0pQX6soi3skQg5heG4qjK6+sDjmwL3Mr0chm3PhNkr2zjueSV6YYG/mvNZusOtbZjp16w==","shasum":"8748f0a8956438948e258eba57d8f225c41d7c7d","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.4.tgz","fileCount":16,"unpackedSize":46215,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0uBvzp7cPr/6HpJpV4ecvkQ7vH/hxOcp+rZ5uCZNRIwIgRenD/8zIJPpZtqe3FNPq7T1VB+z4a8PAovcEYfBbRMI="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.4_1711395632338_0.46216377312677603"},"_hasShrinkwrap":false},"4.0.5":{"name":"@architect/utils","version":"4.0.5","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test:nolint":"npm run test:unit:updater && npm run test:unit","test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=14"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.21.1","chalk":"4.1.2","glob":"~10.3.12","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~3.0.0","@architect/inventory":"~4.0.4","cross-env":"~7.0.3","eslint":"~9.1.1","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.5"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.5","gitHead":"c0190b616e4f5431311d65d55c5d6fa9f2299f04","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-VbefC/FFELzkY+pMNNtyl6l5PLt+yRQ2AzeUsudElG8/I09r3dYvT5n4d1QIuctpkOuDeqKYoZv4qt4DAp2Srw==","shasum":"36097fcfe574b301181c6fe5e9d185a1d5c64403","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.5.tgz","fileCount":17,"unpackedSize":46489,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuVBUIVlxz5c2cDmw9o18tUNa2jmBCDR2KERLNp/OANwIgKtez2cKcoTHZo57diBhquSKuqhCwhKs+olk+bYJp1os="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.5_1714413916359_0.48982057929644385"},"_hasShrinkwrap":false},"4.0.6":{"name":"@architect/utils","version":"4.0.6","description":"Common utility functions","main":"index.js","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"scripts":{"test:nolint":"npm run test:unit:updater && npm run test:unit","test":"npm run lint && npm run test:unit:updater && npm run test:unit","test:unit":"cross-env tape 'test/**/*-test.js' | tap-arc","test:unit:updater":"cross-env tape test/updater/test.js | tap-arc","lint":"npx eslint . --fix","rc":"npm version prerelease --preid RC"},"engines":{"node":">=16"},"author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","dependencies":{"@aws-lite/client":"^0.21.1","chalk":"4.1.2","glob":"~10.3.12","path-sort":"~0.1.0","restore-cursor":"3.1.0","run-series":"~1.1.9","run-waterfall":"~1.1.7","sha":"~3.0.0"},"devDependencies":{"@architect/eslint-config":"~3.0.0","@architect/inventory":"~4.0.4","cross-env":"~7.0.3","eslint":"~9.1.1","proxyquire":"~2.1.3","sinon":"~17.0.1","tap-arc":"1.1.0","tape":"~5.7.5"},"eslintConfig":{"extends":"@architect/eslint-config"},"_id":"@architect/utils@4.0.6","gitHead":"78c50e96a89bdf119e6ef7952128673fdcfd7568","bugs":{"url":"https://github.com/architect/utils/issues"},"homepage":"https://github.com/architect/utils#readme","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-aa6gNNoHxgKpQrIFOa5zNW5fD10v46AE2VZNcjToxAvm//8itbIBoGw2wj8oF3gqHMKKkeLAtdO8K8tlKVN8ZA==","shasum":"ba3973958618515ef12cfcd331f31cede5c31fe6","tarball":"https://registry.npmjs.org/@architect/utils/-/utils-4.0.6.tgz","fileCount":17,"unpackedSize":46573,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHThFNYXkoxCO4i9ItoyCRuHPqAMWx9TMvbE3fHDSotvAiB50KLopvwOpx+MDtUJ8NqZdLy2gfopC9Cy5tBstD98Cw=="}]},"_npmUser":{"name":"architectci","email":"ryan+architectci@begin.com"},"directories":{},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_4.0.6_1714414904490_0.9769848557446943"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-29T17:38:37.278Z","1.0.0":"2019-05-29T17:38:37.608Z","modified":"2024-04-29T18:21:44.926Z","1.0.1":"2019-05-29T17:46:36.512Z","1.0.2":"2019-05-29T23:25:37.004Z","1.0.3":"2019-05-30T04:43:26.360Z","1.0.4":"2019-05-31T02:45:42.680Z","1.0.5":"2019-06-11T20:47:03.197Z","1.0.6":"2019-06-11T20:59:58.652Z","1.0.7":"2019-06-11T22:08:14.186Z","1.0.8":"2019-06-11T22:18:17.538Z","1.0.9":"2019-06-12T20:57:22.642Z","1.0.10":"2019-06-13T19:20:03.914Z","1.0.11":"2019-06-13T20:25:11.180Z","1.0.12":"2019-06-17T23:09:41.658Z","1.0.13":"2019-06-20T23:37:06.994Z","1.0.14":"2019-06-21T05:31:41.239Z","1.0.15":"2019-07-03T21:38:19.464Z","1.0.16":"2019-07-04T17:36:53.707Z","1.1.0":"2019-07-11T23:11:07.794Z","1.2.0":"2019-07-16T00:32:32.742Z","1.2.1":"2019-07-16T04:00:06.032Z","1.2.2":"2019-07-16T05:16:04.854Z","1.2.3":"2019-07-23T22:15:13.082Z","1.2.4":"2019-08-10T22:51:18.321Z","1.2.5":"2019-08-12T22:21:22.288Z","1.2.6":"2019-08-13T05:23:12.117Z","1.2.7":"2019-08-14T02:42:21.076Z","1.3.0":"2019-08-15T21:52:26.821Z","1.3.1":"2019-08-18T15:44:17.262Z","1.3.2":"2019-08-19T04:14:48.014Z","1.3.3-RC.1":"2019-08-29T02:22:52.871Z","1.3.3":"2019-08-29T02:37:48.323Z","1.3.4-RC.1":"2019-09-09T02:33:51.012Z","1.3.4":"2019-09-09T02:44:50.504Z","1.3.5-RC.1":"2019-09-11T01:50:30.931Z","1.3.5":"2019-09-11T01:54:29.420Z","1.3.6-RC.1":"2019-09-11T18:42:19.031Z","1.3.6":"2019-09-11T20:37:19.901Z","1.3.7":"2019-09-22T21:18:47.833Z","1.3.8":"2019-09-29T23:43:40.860Z","1.3.9-RC.0":"2019-11-05T04:29:57.690Z","1.3.9-RC.1":"2019-11-19T17:38:26.308Z","1.3.9-RC.2":"2019-11-19T18:26:37.178Z","1.3.9":"2019-11-19T18:54:58.759Z","1.3.10-RC.0":"2019-12-12T18:38:40.101Z","1.3.10":"2019-12-13T00:11:08.864Z","1.3.11-RC.0":"2019-12-24T23:01:01.048Z","1.3.11-RC.1":"2019-12-25T03:54:26.841Z","1.3.11-RC.2":"2019-12-25T20:37:03.178Z","1.3.11-RC.3":"2019-12-26T00:18:40.868Z","1.3.11-RC.4":"2019-12-26T00:26:10.770Z","1.4.0":"2019-12-26T03:16:08.571Z","1.4.1":"2019-12-26T03:21:05.889Z","1.4.2":"2019-12-28T23:11:22.165Z","1.4.3-RC.0":"2020-01-04T20:12:21.421Z","1.4.3":"2020-01-06T20:52:31.843Z","1.4.4":"2020-01-06T21:03:47.388Z","1.4.5":"2020-01-31T22:23:58.798Z","1.4.6":"2020-02-04T22:48:14.960Z","1.4.7":"2020-02-05T23:41:19.764Z","1.5.0-RC.0":"2020-03-10T23:10:15.209Z","1.5.0":"2020-03-18T02:50:24.827Z","1.5.1-RC.0":"2020-03-22T18:22:34.601Z","1.5.1":"2020-03-22T22:53:12.269Z","1.5.2":"2020-03-23T02:34:13.676Z","1.5.3-RC.0":"2020-04-07T20:45:35.993Z","1.5.3":"2020-04-07T21:18:45.429Z","1.5.4":"2020-04-23T02:43:57.976Z","1.5.5":"2020-05-05T04:03:39.832Z","1.5.6":"2020-05-17T22:31:01.121Z","1.5.7":"2020-05-17T23:48:31.549Z","1.5.8-RC.0":"2020-06-06T21:44:37.059Z","1.5.8-RC.1":"2020-06-07T01:54:52.331Z","1.5.8-RC.2":"2020-06-08T03:31:34.964Z","1.5.8-RC.3":"2020-06-08T17:34:00.468Z","1.5.8":"2020-06-08T22:43:53.115Z","1.5.9":"2020-06-11T02:21:04.833Z","1.5.10":"2020-07-27T04:33:36.043Z","1.5.11":"2020-08-07T01:45:43.684Z","1.5.12-RC.0":"2020-09-30T21:10:26.148Z","1.5.12":"2020-10-08T19:22:50.037Z","1.5.13":"2020-10-10T21:20:58.546Z","1.5.14":"2020-11-05T18:50:53.748Z","2.0.0-RC.0":"2020-11-22T16:47:04.079Z","2.0.0-RC.1":"2020-11-22T17:05:19.511Z","2.0.0":"2020-11-23T02:45:00.555Z","2.0.1":"2020-12-01T16:02:55.199Z","2.0.2":"2020-12-04T20:49:10.704Z","2.0.3":"2020-12-20T07:01:29.574Z","2.0.4":"2021-01-06T06:28:56.253Z","2.0.5-RC.0":"2021-03-05T18:21:53.997Z","2.0.5":"2021-03-22T17:46:06.964Z","2.1.0-RC.0":"2021-05-14T16:14:39.680Z","2.1.0":"2021-05-18T19:50:40.257Z","2.1.1":"2021-06-14T17:08:17.874Z","2.1.2":"2021-06-17T04:13:12.629Z","2.1.3":"2021-06-21T20:02:10.453Z","3.0.0":"2021-07-22T23:06:57.528Z","3.0.1":"2021-07-22T23:42:16.214Z","3.0.2":"2021-07-29T15:34:47.539Z","3.0.3":"2021-09-19T02:46:37.731Z","3.0.4":"2021-10-12T22:29:11.341Z","3.1.0-RC.0":"2022-02-06T22:50:17.057Z","3.1.0":"2022-02-16T18:08:52.225Z","3.1.1":"2022-04-20T03:27:26.286Z","3.1.2":"2022-05-16T21:00:04.925Z","3.1.3":"2023-03-09T22:17:59.360Z","3.1.4":"2023-03-09T22:52:23.589Z","3.1.5":"2023-03-10T00:10:19.956Z","3.1.6":"2023-04-07T02:30:23.669Z","3.1.7":"2023-04-23T03:20:38.572Z","3.1.8":"2023-04-23T05:41:39.018Z","3.1.9":"2023-04-24T19:35:03.981Z","4.0.0-RC.0":"2023-10-20T00:44:32.796Z","4.0.0-RC.1":"2023-10-25T21:53:43.622Z","4.0.0-RC.2":"2024-01-08T18:56:50.489Z","4.0.0-RC.3":"2024-01-24T15:37:32.103Z","4.0.0-RC.4":"2024-01-31T16:14:35.320Z","4.0.0":"2024-02-02T03:33:52.382Z","4.0.1":"2024-02-05T16:46:53.488Z","4.0.2":"2024-02-07T03:00:35.045Z","4.0.3":"2024-02-09T19:10:35.237Z","4.0.4":"2024-03-25T19:40:32.489Z","4.0.5":"2024-04-29T18:05:16.560Z","4.0.6":"2024-04-29T18:21:44.649Z"},"maintainers":[{"name":"brianleroux","email":"b@brian.io"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"kborchers","email":"kris.borchers@gmail.com"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"architectci","email":"ryan+architectci@begin.com"},{"name":"filmaj","email":"maj.fil@gmail.com"}],"description":"Common utility functions","author":{"name":"Brian LeRoux","email":"b@brian.io"},"license":"Apache-2.0","readme":"# `@architect/utils` [![GitHub CI status](https://github.com/architect/utils/workflows/Node%20CI/badge.svg)](https://github.com/architect/utils/actions?query=workflow%3A%22Node+CI%22)\n<!-- [![codecov](https://codecov.io/gh/architect/utils/branch/master/graph/badge.svg)](https://codecov.io/gh/architect/utils) -->\n\n[@architect/utils][npm] are common utilities for the [@architect][arc] suite of projects.\n\n## Installation\n\n    npm i @architect/utils\n\n# API\n\n## `utils.banner(params)`\n\nResponsible for printing the standard banner, and loading the basic environment variables and necessary AWS credentials necessary to run Architect.\n\n`params` are required with the following available properties:\n\n- `inventory` (required): Inventory object from `@architect/inventory`\n- `disableBanner` (boolean): skip printing the banner and Architect's AWS environment bootstrapping routines\n- `disableRegion` (boolean): don't print the AWS region (useful in public CI scenarios, for example)\n- `disableProfile` (boolean): don't print the AWS profile (also useful in public CI scenarios)\n- `version` (string): the package version string to print out (e.g. `Architect 1.2.3`)\n- `quiet` (boolean): disable banner printing\n\n\n## `utils.getLambdaName(fn)`\n\nReturns a valid AWS Lambda function name based on its URL (route).\n\n\n## `utils.pathToUnix(pathString)`\n\nConverts any path to a Unix style path, with `/` as the seperator. This works around Windows issues where `/` is assumed across other parts of Architect.\n\n\n## `utils.toLogicalID(str)`\n\nConverts `str` into PascalCase for CloudFormation use.\n\n\n## `utils.updater(name, params)`\n\n`name` (a string) is required; `params` may include the boolean option `quiet` to manually override Architect's global printing status.\n\nReturns a function to be reused for standardized logging updates with the following methods:\n\n- `status` - prints an affirmative status update\n  - optional: arbitrary number of supporting info on new lines with each additional param\n- `start` - starts an animated progress indicator\n  - aliases: `update`\n- `done` - ends current progress indicator with an update\n  - aliases: `stop`\n- `cancel` - cancels current progress indicator without an update\n- `err` - pretty prints an error\n  - aliases: `error` and `fail`\n- `warn` - cancels current progress indicator and prints a warning\n  - aliases: `warn`\n- `raw` - just logs a message as-is (while respecting quiet)\n\nAutomatically respects Architect's global printing status, and also respects the following env vars:\n\n- `ARC_QUIET` - if truthy, disables printing\n- `CI` - if truthy, disables certain terminal progress animations\n\n\n\n[arc]: https://github.com/architect\n[npm]: https://www.npmjs.com/package/@architect/utils\n","readmeFilename":"readme.md","homepage":"https://github.com/architect/utils#readme","repository":{"type":"git","url":"git+https://github.com/architect/utils.git"},"bugs":{"url":"https://github.com/architect/utils/issues"}}