{"_id":"@-0/micro","_rev":"19-56e90581a77a87c6813841a606be4c55","name":"@-0/micro","dist-tags":{"latest":"0.1.19"},"versions":{"0.1.0":{"name":"@-0/micro","version":"0.1.0","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","@vobarian/tfbuilder":"^0.1.0","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"_id":"@-0/micro@0.1.0","gitHead":"248e3d2a05cf551f148f0128da55e6fa45efd122","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-UeAwhZkLWeBXDIr5lGyPhUQ6KOuI4urs1Msc7nRInDnID+p4egvpyr9NwWJtgY/fOq1uGDFZ2fn6gsJg+yB/oQ==","shasum":"00d8f4ead3e6c53741821fb6193a0ddff658765b","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.0.tgz","fileCount":90,"unpackedSize":40773032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA5xwC1Eww31cEb80alLWKSkyXhh331acpfKIDTMj6eGAiABJVl4dEBll14/kSIbcZX3xr0Y5YxlrGfUEvtfIDrOrw=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.0_1697482375826_0.5946129963378348"},"_hasShrinkwrap":false},"0.1.1":{"name":"@-0/micro","version":"0.1.1","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"gitHead":"c36bc6d68ec7d5433b80fb7f9ebd5ad596c504df","_id":"@-0/micro@0.1.1","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-RbUZmstdgh4vQlRe3XfxK8sN2WMr6qR52VC66Tq0pV7qqfIQgNoPQk8++OJZ0ZBhvT5MGzTSWsikOHw2pj0gMQ==","shasum":"152eb43b5ff369a40176c6ae0a218e2740b8d5de","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.1.tgz","fileCount":90,"unpackedSize":40772958,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPCfEIiCiydCleRi94nq6q67RDgEP1ThmH3rK1ijBnMAIhAMU928PkgP0D3dqN45mmZs9lI+wUKsI9bOWyPfZX24xM"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.1_1697499360511_0.23730083378385114"},"_hasShrinkwrap":false},"0.1.2":{"name":"@-0/micro","version":"0.1.2","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"_id":"@-0/micro@0.1.2","gitHead":"3d58424b412fd766b1d35d7ea737866d5b3757da","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-7mghhkmrV+DF4zW1EO0nzTE8gJQ/yWfJUWvfnImYSQjhXdV/ECdEOxnMy8gO8VxWIdZtS3jZLgQJwR3t/A8aUg==","shasum":"dc9673ece611398d97cf6a833b221d5d0f712039","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.2.tgz","fileCount":90,"unpackedSize":40494800,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd5MXPZwiyzZkxqULSOkEmEQpDBcCVhtun3bFSDjZEdwIhANSLocTbbaHd2OjD9m7v8dg92/lrrOnjmpWKk1dUo7+T"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.2_1697550689015_0.39318901387488836"},"_hasShrinkwrap":false},"0.1.3":{"name":"@-0/micro","version":"0.1.3","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"gitHead":"72580f3b708d7ec2281c9987c98cb3fa8c050a86","_id":"@-0/micro@0.1.3","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-N81IImwqDHS9XDdg7XoDKroy/NiM2K4P8RGD8BRWi8V/BqvEEuzqsVC9x9d9FGd+bKSqZ8SRHbgSgqzs3ojwoQ==","shasum":"412d9d863d04bbd87cec6c3385d808ccbd415927","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.3.tgz","fileCount":94,"unpackedSize":40513048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVTzWbWdAqF5ZXXyQz1aDbgA/AtFoQh85dDAIsIQZlKAiBcgV/A4Egx7hM18VB1iOCeSabOROAR+VzfWklPrArvGA=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.3_1698026113286_0.8482892759008602"},"_hasShrinkwrap":false},"0.1.4":{"name":"@-0/micro","version":"0.1.4","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"gitHead":"7c42e418bdb6db19dba462988c179dc883e01237","_id":"@-0/micro@0.1.4","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-AmU81F+MnjMl8mBKZN1NTJBY7T+heqDLydKuCKdVlaXG/yoDA7+aO3WutiXVAK34oNMcEzGR0dkF5vIdR2JN7Q==","shasum":"a1688b737458b7e2b0c1606eb352f285162eb043","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.4.tgz","fileCount":94,"unpackedSize":40507963,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCudFKwW9V102HNsQ+FyqOwP6CnTp1QOJnUNCooUQSw9gIhAIq1IfgevUJ3RtarFAO4mvdCMqUn9xF4CwNQqWUmsSSB"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.4_1698026904997_0.6285517872563797"},"_hasShrinkwrap":false},"0.1.5":{"name":"@-0/micro","version":"0.1.5","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"_id":"@-0/micro@0.1.5","gitHead":"6ae587b210a9759bde5f64a3c8a8475b00b52904","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-diHYmSBr2QRdHstRnVt4i8okcdw+jzraxqoj0Zg7D8oZorbubpuYAomHTpfUeVz7po4YIiVc9ZM0blsvvOFgSg==","shasum":"788729957896585a9007c0939de9fdae6f4cf316","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.5.tgz","fileCount":98,"unpackedSize":40517883,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDruncbEQRRsmih1nOx+SojM/4LEaCzr+p+/6Ajpi6a0wIgW1YwYdrg7VUd/IaxjTwFfWsETzl58gtIUC674r1AtIk="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.5_1698073449740_0.6239880262253301"},"_hasShrinkwrap":false},"0.1.6":{"name":"@-0/micro","version":"0.1.6","description":"## Overview","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"_id":"@-0/micro@0.1.6","gitHead":"7bcdcaad48e5d0a41e2a4fa17395400f5a45ed31","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-2oC2oiOrLFYRbrGpfyQUPP+p8dGOarwDqeFWFUsrZ8367e2UvSij9VBbiq4JQBm2jzS+4W9uhdROUkzzePaU8w==","shasum":"c17b2a195441e9045c3e9042aa6c694715c3c4cc","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.6.tgz","fileCount":110,"unpackedSize":40488977,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCESYNLAKCYhH78962ERfI+WjjJPjvxEzCjs5goJAc14gIhALapuGq6AgXjNrtyAcn6vzF+kRxhj+GyhouBnlg8i1s2"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.6_1698368175523_0.014830489443633299"},"_hasShrinkwrap":false},"0.1.7":{"name":"@-0/micro","version":"0.1.7","description":"## TODO - [ ] add warnings about missing or inaccurate refs (none found at path in output) - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.7","gitHead":"a69eedfd696a3ba719a29593946ad6fc4eb3ad03","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-V19Rh/6vzLGM4vtPVhCzDxM3NB7ALWXwwoUtzPG2j38RkpUsYGThC9sIK+MtesjmsIk/24m+r46vF2vPn4W5fQ==","shasum":"e840c7e6842aad022614e3e53c679e9b01767817","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.7.tgz","fileCount":158,"unpackedSize":40615986,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWi0ePVHrFLS/QULXItpqlQKgc9mXBU59YW+d5TqQLuAiEAmy34pFD0yuw9MZxJSYeMxUG7BnvQioC7jKsX1UjVtPU="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.7_1699799372945_0.8558320018397292"},"_hasShrinkwrap":false},"0.1.8":{"name":"@-0/micro","version":"0.1.8","description":"## TODO - [ ] add warnings about missing or inaccurate refs (none found at path in output) - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.8","gitHead":"83ce5673d8c67bb724dfc805a5911a58ae349828","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-ooyLABOqHdRb9aPAXmRlhkC+svmH5AQoySQGiK9t3nJga1/rv4kItB95QAC1YVo5neqzbd7xfFOgjnSpvkCX5w==","shasum":"c1b105bf2b9a30f63c935109ab657198a4f193f1","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.8.tgz","fileCount":158,"unpackedSize":40615474,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETvqLQ9Q+hfTbEeHW7Hwx5LxttjuCHD9wWSAjfrywL2AiBwwfXM3PMwS+fIgsKoq1XqXCvXYFydJ38xc+Rdn45N9A=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.8_1699802138680_0.6079746972359077"},"_hasShrinkwrap":false},"0.1.9":{"name":"@-0/micro","version":"0.1.9","description":"## TODO - [ ] add warnings about missing or inaccurate refs (none found at path in output) - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.9","gitHead":"e9ecad6d08cf0cfa3cbddc5c0837832424d019f5","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-IQjGTiFdvNHMxosJRHIgUenXpBIJPX3mUXHTwbaUSEP2oz+1jKe81sGohObS6/pJ4xakKtY+Cd5DHJcCOHTfhA==","shasum":"45fe0224f9f06fcc0e5af66f64d11ef677fe77fc","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.9.tgz","fileCount":158,"unpackedSize":40593555,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwCxyu3e7qDu3TC6uKuclxMNBswJ2xb2n7oJHqKfnSTAIhALxWAoaztdYopF1gDFpEXD4jgu7qFStHbQNbiguD+KBZ"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.9_1699829277132_0.7749035808104348"},"_hasShrinkwrap":false},"0.1.10":{"name":"@-0/micro","version":"0.1.10","description":"## TODO","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.10","gitHead":"6d24c2407873aed2ff0d747104c96083629f47af","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-rW156pwZxdSKBc7COjbAKfEg7HTPPBi0D87jcNFPXZIlIG9M0DLGGPQ864ZgaOB4ipQaD7IwiO1l2hBL9z+BEA==","shasum":"8c7952923a4d2ad26c35c6d1f4bead9befb1819e","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.10.tgz","fileCount":162,"unpackedSize":40593313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvPJLDv5EY45IDJiZEQJra8KfPKnUy0oBzRjXErKyXAAiEAhbotWjyhu9siqDN2FlTD0zEHJkkChN55p/oxKLBRH4Q="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.10_1699843050528_0.12791532315191323"},"_hasShrinkwrap":false},"0.1.11":{"name":"@-0/micro","version":"0.1.11","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.11","gitHead":"8ac811b3935787f12099f03ad94cb013d9a1df5a","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-K7H0RPKtkMfd3njOjAp4FdoL+aXvqy0KceWeBz6novxqGdJAj95Gc6BWtPUNWEBRNGK+goj449GIkKfIe9UY+g==","shasum":"0c1102abe147782c18d14031c32667f408fb88e5","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.11.tgz","fileCount":162,"unpackedSize":40593457,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlbzdD7XxD0aozO9Kv/dy/56j4MBOFQ0grn2jMDqvT3AiBOjNXh0PjUAqIhJ+M9ambS4QD7h0xbTIHKHOSQsQl/tg=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.11_1699843971622_0.7596830179731726"},"_hasShrinkwrap":false},"0.1.12":{"name":"@-0/micro","version":"0.1.12","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.12","gitHead":"475c8350ca5f4c60a77d8da1c76f663d49f82275","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-mPsuOZB4zsV9lGBxgveGF2cMBjnbW2qGWgy2mRtrlujyPRqsQyQARYIUAb2IILTaHBl57RRHZJj0hheDgUejHA==","shasum":"0a112c7a62057023abec5eaac112bdf7521e0288","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.12.tgz","fileCount":162,"unpackedSize":40593870,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHxTS9hfMKZ7+wfXfCgrQLE+O/8t4ahP6FLGQvbpqs0AIhAIEHjoitxSl5z+DNBsC44K6RlLRpveLcWPEUwmle6i/g"}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.12_1699846194666_0.020866026198159027"},"_hasShrinkwrap":false},"0.1.13":{"name":"@-0/micro","version":"0.1.13","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.13","gitHead":"4b6ded1a68c27e3fadc163159e21ccbbcd21c165","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-SNHCToLQGLcJjiOIoa2WhaBHKigwe5dwaVisylzAVZeskVymwCfTykETFqTbLA2KvjJfHD1+dUIn/R1QnUtv2w==","shasum":"5e015dcc2512791e6f551aed25ebf0239c4eaf3d","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.13.tgz","fileCount":162,"unpackedSize":40593870,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+qzZ+YZUESO0zgIVhHJqtYoS1akQIloQUGF0oFyVHWAiBzeZbrT1+HWbry8h+Ek2FdU0dT4hN8dCqoj2sSgVXlBw=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.13_1699846547113_0.3186733303348961"},"_hasShrinkwrap":false},"0.1.14":{"name":"@-0/micro","version":"0.1.14","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.14","gitHead":"2c680068e4079532f8171d1e8f9c7521ec84486f","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-x7GkI3wXBIpY2ZD+bShH5w0sbUesfEMI9vrv9ZgztCrxixX4xSN001vQxLeTmGaJbW0lK5h/KYkp1bluPH3IAw==","shasum":"af3120185c544906648719b4db89df3ef347d19b","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.14.tgz","fileCount":162,"unpackedSize":40594152,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKiFFuRzqYcSHrqOlWp8aabw+k9h2Z9+i40lELqJDUWAiADMFx0Vnw45QYa+jeeviQEZk9eN3Ju1AP81e3XGmQt1g=="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.14_1699846648967_0.13321310559247768"},"_hasShrinkwrap":false},"0.1.15":{"name":"@-0/micro","version":"0.1.15","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.15","gitHead":"baf6c6b6687d9299a20f886bd79f1510fa0a4329","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-c6fgEVzqQewN9KMIq8+U9ze29CkDdCASdct6TEWFVI7H0ogVKOLrxMZalo+sDqqKLUYmDQ1WshAAfy4YdEid0g==","shasum":"e6c05cde9f488a356363d51205420eded5364f69","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.15.tgz","fileCount":162,"unpackedSize":40594223,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDecUoO5/bGLmoTe7QHQgUT4kroyLDK8oNp0Ue/qGYLIgIga4+JLRIBxPhgfdvrYOvAsuBHGhZEE2COn7nDvA3A1i8="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.15_1699847483719_0.24680046138023526"},"_hasShrinkwrap":false},"0.1.16":{"name":"@-0/micro","version":"0.1.16","description":"## TODO - [ ] add `region`, `profile`, etc. for `provider` - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warn","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.16","gitHead":"a9d90991738233018ba40e12175abcbaf96e975c","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-zAkLvn79jAkfMqCfI6gSEzq3bU4UHHyM7okDtTHS/nNPSpCev2ThaF/eKmKq/EJj83UIsCpJe9CQquKg/Z4YsA==","shasum":"6d555c53052b473aa4c9323ba1f989b92e51ce31","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.16.tgz","fileCount":162,"unpackedSize":40594339,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6+x1I8IJK055KtaxgfAvqSiOnJ3ZQbQNLUcRS8U9UIAiEAhvG5VeOsQ4nxh0KRcdwn0EaZVcBjuH6nv7ZcbOVkQpg="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.16_1699848422302_0.47869275048971804"},"_hasShrinkwrap":false},"0.1.17":{"name":"@-0/micro","version":"0.1.17","description":"## TODO - [ ] fix API Gateway  - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warnings about missing or inaccu","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.17","gitHead":"15545be80ca6726604fa22800247d80cb455105e","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-pzqyqq0onDnnWjy2zpXsZUvXPQfLIhlb19glGONbk2i5dololML4zWOD4bw0FEUhmJ6sJzIZ7C0A45dtqR38qQ==","shasum":"aab67b9015550baeb0d31f69ae9be8e8672c1bfe","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.17.tgz","fileCount":162,"unpackedSize":40600879,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ1bZJApLOaeuh6kYVXPxENhqi+qyz3fEN/1pazdW1eAIgMdzZDKKwn4Th8C/uxPDyIOCbRkQmhMsc9IOkR5HrRYE="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.17_1699931575354_0.6775381127827174"},"_hasShrinkwrap":false},"0.1.18":{"name":"@-0/micro","version":"0.1.18","description":"## TODO - [ ] fix API Gateway  - [ ] Dynamo DB - [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`) - [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"` - [ ] add warnings about missing or inaccu","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","typescript":"^5.2.2"},"dependencies":{"quicktype-core":"^23.0.76","@thi.ng/paths":"^5.1.44","@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.18","gitHead":"d8159e274c31430cdf7d7c521157d7a54814af3e","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-kthKKR3Xpz7YwyOMNbk1UiDgU+t1o1SDms2Umo7SNo62QzUrKNjK9tg2OT+wc772NT95uWld8WgHRGdcPiq00A==","shasum":"16f037ea7ed7c8c788a96ada28a2c3c853149ec8","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.18.tgz","fileCount":162,"unpackedSize":40600313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF92vru7C9WVREx7aAcMD/nnbIbbrPM2pFiL3dhmAXmBAiEAzWRuuul4zqkK+aIWLaRAjR1r1w7kE4RxGYFoeFMGym0="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.18_1700089950989_0.6837571452142617"},"_hasShrinkwrap":false},"0.1.19":{"name":"@-0/micro","version":"0.1.19","description":"## TODO - [ ] add cloudwatch (iam only, resources already handled) - [ ] add lambda role arn as principal to bucket policy        (iam only, resources already handled) - [ ] refactor lambda env var dependent code (SNS, S3) to handle JSON.parse()d collecti","type":"module","publishConfig":{"access":"public"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build-types":"bun registry/utils/typify-provider.ts","plan":"node main && terraform plan","check":"madge --circular --extensions ts ./src","apply":"node main && terraform apply"},"keywords":[],"author":"","license":"MIT","devDependencies":{"@types/node":"^20.8.2","bun-types":"^1.0.5-canary.20231006T140143","madge":"^6.1.0","typescript":"^5.2.2"},"dependencies":{"@-0/build-lambda-py":"^1.0.4","@thi.ng/api":"^8.9.5","@thi.ng/associative":"^6.3.8","@thi.ng/checks":"^3.4.5","@thi.ng/paths":"^5.1.44","quicktype-core":"^23.0.76"},"prettier":{"printWidth":100,"singleQuote":true,"trailingComma":"all","arrowParens":"always","semi":false,"tabWidth":3},"_id":"@-0/micro@0.1.19","gitHead":"ce3d0db0a597869318d53d6d58155961a170cd3d","_nodeVersion":"18.16.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-0hw7xnyyJoUWqYHbo+bWrWHXCrECnv38wIdDM080UbRGmEbt5vWp8TjE9jSTFY9QEg/x8kudNHiGfgtamI3kUQ==","shasum":"c8b47fc016f5d476f9298b765a06b5d6d781f8af","tarball":"https://registry.npmjs.org/@-0/micro/-/micro-0.1.19.tgz","fileCount":178,"unpackedSize":40708429,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHeN58tP5hXQo9b4HHKJk/nv/ttotJThFRJz5dcYqTPLAiEA2UK2Ex+Vosnat2R6IZge6UuwZerpOO4DhHD7dI3b4js="}]},"_npmUser":{"name":"loganpowell","email":"loganp@tepper.cmu.edu"},"directories":{},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/micro_0.1.19_1702158268767_0.47488155061522064"},"_hasShrinkwrap":false}},"time":{"created":"2023-10-16T18:52:55.685Z","0.1.0":"2023-10-16T18:52:56.085Z","modified":"2023-12-09T21:44:29.367Z","0.1.1":"2023-10-16T23:36:00.934Z","0.1.2":"2023-10-17T13:51:29.409Z","0.1.3":"2023-10-23T01:55:13.499Z","0.1.4":"2023-10-23T02:08:25.270Z","0.1.5":"2023-10-23T15:04:41.470Z","0.1.6":"2023-10-27T00:56:15.729Z","0.1.7":"2023-11-12T14:29:33.262Z","0.1.8":"2023-11-12T15:15:38.999Z","0.1.9":"2023-11-12T22:47:57.575Z","0.1.10":"2023-11-13T02:37:30.824Z","0.1.11":"2023-11-13T02:52:51.911Z","0.1.12":"2023-11-13T03:29:54.967Z","0.1.13":"2023-11-13T03:35:47.422Z","0.1.14":"2023-11-13T03:37:29.288Z","0.1.15":"2023-11-13T03:51:24.065Z","0.1.16":"2023-11-13T04:07:02.511Z","0.1.17":"2023-11-14T03:12:55.697Z","0.1.18":"2023-11-15T23:12:31.380Z","0.1.19":"2023-12-09T21:44:29.153Z"},"maintainers":[{"name":"loganpowell","email":"loganp@tepper.cmu.edu"}],"description":"## TODO - [ ] add cloudwatch (iam only, resources already handled) - [ ] add lambda role arn as principal to bucket policy        (iam only, resources already handled) - [ ] refactor lambda env var dependent code (SNS, S3) to handle JSON.parse()d collecti","keywords":[],"license":"MIT","readme":"# `micro`\n\n## TODO\n- [ ] add cloudwatch (iam only, resources already handled)\n- [ ] add lambda role arn as principal to bucket policy \n      (iam only, resources already handled)\n- [ ] refactor lambda env var dependent code (SNS, S3) to handle JSON.parse()d collections\n- [ ] fix API Gateway \n- [ ] Dynamo DB\n- [ ] add `stage` to api input pipepline (all the way down dependency tree from `node`)\n- [ ] add way to warn for unresolvable references, e.g., `my?.data?.x || \"!\"`\n- [ ] add warnings about missing or inaccurate refs (none found at path in output)\n- [ ] document convention that if the module accepts a name, it will be used as\n       the root key for the module's output (names can contain only letters,\n       numbers, underscores, and dashes)\n\n## Overview\n\nThis module has Three primary components:\n\n1. A very large set of Terraform Typescript Interfaces, which provide IDE\n   suggestions for required, optional Arguments and output Attributes on TF\n   Resources/Data\n2. A `micro` compiler, which takes in POJOs and outputs terraform-compliant JSON\n3. **For contributors**: A terrorm type generation tool the outputs typescript\n   interfaces, which align with the specification for a given provider and\n   version. This is not a necessary step if you just want to use interface that\n   have already been generated. However, if you want to generate interfaces for\n   a new provider or version, you'll need to use this tool.\n\n> 🐉 🐉 🐉 (Dragons)\n>\n> This is a brand new project and the types are generated from the\n> documentation, so the process is not perfect. There are some types that are\n> not generated, but all terminal interfaces are set to `any` to allow maximum\n> accommodation for missing parts.\n\n#### 💡 The generated types will assist you in creating the POJOs by providing IDE hints.\n\n## Installation\n\n```\nnpm i @-0/micro\n```\n\n## Using Micro\n\n> Note: for building lambdas, you'll need a copy of `package.py` located in the\n> root of this repository.\n\n### Example Lambdas Folder structure\n\n```sh\nfunctions\n├── zip_example_py\n│   ├── main.py\n│   ├── micro.json # <-- microservice config\n│   └── requirements.txt\n├── zip_example_js\n│   ├── index.js\n│   ├── micro.json\n│   └── package.json\n└── docker_example\n    ├── Dockerfile\n    ├── main.py\n    ├── micro.json\n    └── requirements.txt\n```\n\n### Example `micro.json` microservice config\n\n> NOTE: either `docker` or `runtime` + `handler` are mutually exclusive. I.e.,\n> if a dockerfile is present, the `runtime` and `handler` will be ignored.\n\n```jsonc\n{\n   \"name\": \"docker_me\",\n   \"handler\": \"main.handler\",\n   \"runtime\": \"python3.8\",\n   // builds an AWS ECR image as lambda\n   \"docker\": {\n      \"dockerfile\": \"Dockerfile\", // path in the local dir to the dockerfile\n      \"platform\": \"linux/arm64\"\n   },\n   \"architectures\": [\"arm64\"],\n   \"memory_size\": 1024,\n   \"timeout\": 120,\n   \"bucket\": true, // dedicated bucket (`S3_BUCKET_NAME` env var in lambda)\n   \"tmp_storage\": 512,\n   \"sns\": {\n      // if connecting lambda to sns\n      \"upstream\": {\n         // topic to subscribe to (creates subscription)\n         \"topic\": \"topic_a\",\n         \"filter_policy\": {\n            \"type\": [\"lambda\"]\n         }\n      },\n      \"downstream\": {\n         // topic to publish to (`SNS_TOPIC_ARN` env var in lambda)\n         \"topic\": \"topic_a\",\n         \"message_attrs\": {\n            // (`SNS_MESSAGE_ATTRS` env var in lambda)\n            \"type\": {\n               \"DataType\": \"String\",\n               \"StringValue\": \"lambda\"\n            }\n         }\n      }\n   },\n   // if connecting lambda to api gateway\n   \"api\": {\n      \"subdomain\": \"api\",\n      \"methods\": [\"GET\", \"POST\"]\n   },\n   \"tags\": {\n      \"hello\": \"world\"\n   }\n}\n```\n\n### `micro` compile Terraform JSON\n\n```ts\nimport { micro } from '@-0/micro'\nimport fs from 'fs'\n\nconst compiled = micro({\n   name: 'micro',\n   source: './functions',\n   tags: { env: 'test' },\n   apex: 'example.com',\n})\n\nfs.writeFileSync('main.tf.json', JSON.stringify(compiled, null, 4))\n```\n\nThis will provision three lambda functions with all the wiring needed to\nproperly connect the resources together. Just run `terraform plan` or `terraform\napply` to provision the resources.\n\n## DIY Modules\n\nSimply import the generated interface and start creating POJOs\n\n```typescript\nimport { modulate, namespace, AWS, Provider, Terraform } from '@-0/micro'\nimport fs from 'fs'\n\nconst lambda_policy_doc: AWS = {\n   data: {\n      iam_policy_document: {\n         statement: {\n            effect: 'Allow',\n            actions: ['sts:AssumeRole'],\n            principals: {\n               identifiers: ['lambda.amazonaws.com'],\n               type: 'Service',\n            },\n         },\n         json: '-->',\n      },\n   },\n}\n\nconst lambda_role = ({ name, policy_json }): AWS => ({\n   resource: {\n      iam_role: {\n         name: `${name}-role`,\n         assume_role_policy: policy_json,\n         arn: '-->',\n      },\n   },\n})\n\nconst sns_topic = ({ name }): AWS => ({\n   resource: {\n      sns_topic: {\n         name,\n         arn: '-->',\n      },\n   },\n})\n\nconst sns_sub_lambda = ({\n   topic_arn,\n   lambda_arn,\n   filter_policy = {},\n   filter_policy_scope = 'MessageAttributes',\n}): AWS => ({\n   resource: {\n      sns_topic_subscription: {\n         topic_arn,\n         protocol: 'lambda',\n         endpoint: lambda_arn,\n         filter_policy: JSON.stringify(filter_policy, null, 2),\n         filter_policy_scope,\n         arn: '-->',\n      },\n   },\n})\n\nconst s3 = (name): AWS => ({\n   resource: {\n      s3_bucket: {\n         bucket: name,\n      },\n   },\n})\n\nconst lambda = ({\n   name,\n   role_arn,\n   file_path,\n   env_vars = {},\n   handler = 'handler.handler',\n   runtime = 'python3.8',\n}): AWS => ({\n   resource: {\n      lambda_function: {\n         function_name: `lambda-${name}`,\n         role: role_arn,\n         runtime,\n         handler,\n         filename: file_path,\n         environment: {\n            variables: env_vars,\n         },\n         arn: '-->',\n      },\n   },\n})\n\n/**\n * Notice the `Output` interface. This is a best practice for ensuring that you\n * don't accidentally misspell a key when referring to my?...\n */\ninterface Output {\n   lambda_policy_doc: AWS\n   topic: AWS\n   s3: AWS\n   lambda_role: AWS\n   lambda: AWS\n   subscription: AWS\n}\n\nexport const microservice = (\n   {\n      name = 'module',\n      file_path = '${path.root}/lambdas/template/zipped/handler.py.zip',\n      handler = 'handler.handler',\n      env_vars = {},\n      filter_policy = {},\n   },\n   my: Output,\n): AWS => ({\n   lambda_policy_doc,\n   topic: sns_topic(name),\n   s3: s3(name),\n   lambda_role: lambda_role({\n      name,\n      policy_json: my?.lambda_policy_doc?.data?.iam_policy_document?.json,\n   }),\n   lambda: lambda({\n      name,\n      role_arn: my?.lambda_role?.resource?.iam_role?.arn,\n      file_path,\n      handler,\n      env_vars: {\n         S3_BUCKET_NAME: name,\n         SNS_TOPIC_ARN: my?.topic?.resource?.sns_topic?.arn,\n         ...env_vars,\n      },\n   }),\n   subscription: sns_sub_lambda({\n      topic_arn: my?.topic?.resource?.sns_topic?.arn,\n      lambda_arn: my?.lambda?.resource?.lambda_function?.arn,\n      filter_policy,\n   }),\n})\n\nconst provider = {\n   provider: [\n      {\n         aws: {\n            region: 'xx-xxxx-x',\n            profile: 'xxxxxxxx',\n         },\n      },\n   ],\n}\n\nconst terraform: Terraform = {\n   terraform: {\n      required_providers: {\n         aws: {\n            source: 'hashicorp/aws',\n            version: '5.20.0',\n         },\n      },\n   },\n}\n\nconst lambdaModule = modulate({ microservice })\n\nconst output = lambdaModule({ name: 'testing' })\n\nconst namespaced = { output, provider, terraform }\n\nconst out = namespace({ namespaced })\n\nfs.writeFileSync('main.tf.json', JSON.stringify(out, null, 4))\n```\n\nProduces:\n\n```json\n{\n   \"data\": {\n      \"aws_iam_policy_document\": {\n         \"namespaced_microservice_lambda_policy_doc\": {\n            \"statement\": {\n               \"effect\": \"Allow\",\n               \"actions\": [\"sts:AssumeRole\"],\n               \"principals\": {\n                  \"identifiers\": [\"lambda.amazonaws.com\"],\n                  \"type\": \"Service\"\n               }\n            }\n         }\n      }\n   },\n   \"resource\": {\n      \"aws_sns_topic\": {\n         \"namespaced_microservice_topic\": {\n            \"name\": \"testing-topic\"\n         }\n      },\n      \"aws_s3_bucket\": {\n         \"namespaced_microservice_s3\": {\n            \"bucket\": \"testing\"\n         }\n      },\n      \"aws_iam_role\": {\n         \"namespaced_microservice_lambda_role\": {\n            \"name\": \"testing-role\",\n            \"assume_role_policy\": \"${data.aws_iam_policy_document.namespaced_microservice_lambda_policy_doc.json}\"\n         }\n      },\n      \"aws_lambda_function\": {\n         \"namespaced_microservice_lambda\": {\n            \"function_name\": \"lambda-testing\",\n            \"role\": \"${resource.aws_iam_role.namespaced_microservice_lambda_role.arn}\",\n            \"runtime\": \"python3.8\",\n            \"handler\": \"handler.handler\",\n            \"filename\": \"${path.root}/lambdas/template/zipped/handler.py.zip\",\n            \"environment\": {\n               \"variables\": {\n                  \"S3_BUCKET_NAME\": \"testing\",\n                  \"SNS_TOPIC_ARN\": \"${resource.aws_sns_topic.namespaced_microservice_topic.arn}\"\n               }\n            }\n         }\n      },\n      \"aws_sns_topic_subscription\": {\n         \"namespaced_microservice_subscription\": {\n            \"topic_arn\": \"${resource.aws_sns_topic.namespaced_microservice_topic.arn}\",\n            \"protocol\": \"lambda\",\n            \"endpoint\": \"${resource.aws_lambda_function.namespaced_microservice_lambda.arn}\",\n            \"filter_policy\": \"{}\",\n            \"filter_policy_scope\": \"MessageAttributes\"\n         }\n      }\n   },\n   \"terraform\": {\n      \"required_providers\": {\n         \"aws\": {\n            \"source\": \"hashicorp/aws\",\n            \"version\": \"5.20.0\"\n         }\n      }\n   },\n   \"provider\": [\n      {\n         \"aws\": {\n            \"region\": \"us-east-2\",\n            \"profile\": \"chopshop\"\n         }\n      }\n   ]\n}\n```\n\n### But, Will It `terraform apply`?\n\n```sh\nterraform apply\ndata.aws_iam_policy_document.namespaced_microservice_lambda_policy_doc: Reading...\ndata.aws_iam_policy_document.namespaced_microservice_lambda_policy_doc: Read complete after 0s [id=2690255455]\n\nTerraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:\n  + create\n\nTerraform will perform the following actions:\n\n  # aws_iam_role.namespaced_microservice_lambda_role will be created\n  + resource \"aws_iam_role\" \"namespaced_microservice_lambda_role\" {\n      + arn                   = (known after apply)\n      + assume_role_policy    = jsonencode(\n            {\n              + Statement = [\n                  + {\n                      + Action    = \"sts:AssumeRole\"\n                      + Effect    = \"Allow\"\n                      + Principal = {\n                          + Service = \"lambda.amazonaws.com\"\n                        }\n                    },\n                ]\n              + Version   = \"2012-10-17\"\n            }\n        )\n      + create_date           = (known after apply)\n      + force_detach_policies = false\n      + id                    = (known after apply)\n      + managed_policy_arns   = (known after apply)\n      + max_session_duration  = 3600\n      + name                  = \"testing-role\"\n      + name_prefix           = (known after apply)\n      + path                  = \"/\"\n      + tags_all              = (known after apply)\n      + unique_id             = (known after apply)\n    }\n\n  # aws_lambda_function.namespaced_microservice_lambda will be created\n  + resource \"aws_lambda_function\" \"namespaced_microservice_lambda\" {\n      + architectures                  = (known after apply)\n      + arn                            = (known after apply)\n      + filename                       = \"./lambdas/template/zipped/handler.py.zip\"\n      + function_name                  = \"lambda-testing\"\n      + handler                        = \"handler.handler\"\n      + id                             = (known after apply)\n      + invoke_arn                     = (known after apply)\n      + last_modified                  = (known after apply)\n      + memory_size                    = 128\n      + package_type                   = \"Zip\"\n      + publish                        = false\n      + qualified_arn                  = (known after apply)\n      + qualified_invoke_arn           = (known after apply)\n      + reserved_concurrent_executions = -1\n      + role                           = (known after apply)\n      + runtime                        = \"python3.8\"\n      + signing_job_arn                = (known after apply)\n      + signing_profile_version_arn    = (known after apply)\n      + skip_destroy                   = false\n      + source_code_hash               = (known after apply)\n      + source_code_size               = (known after apply)\n      + tags_all                       = (known after apply)\n      + timeout                        = 3\n      + version                        = (known after apply)\n\n      + environment {\n          + variables = (known after apply)\n        }\n    }\n\n  # aws_s3_bucket.namespaced_microservice_s3 will be created\n  + resource \"aws_s3_bucket\" \"namespaced_microservice_s3\" {\n      + acceleration_status         = (known after apply)\n      + acl                         = (known after apply)\n      + arn                         = (known after apply)\n      + bucket                      = \"testing\"\n      + bucket_domain_name          = (known after apply)\n      + bucket_prefix               = (known after apply)\n      + bucket_regional_domain_name = (known after apply)\n      + force_destroy               = false\n      + hosted_zone_id              = (known after apply)\n      + id                          = (known after apply)\n      + object_lock_enabled         = (known after apply)\n      + policy                      = (known after apply)\n      + region                      = (known after apply)\n      + request_payer               = (known after apply)\n      + tags_all                    = (known after apply)\n      + website_domain              = (known after apply)\n      + website_endpoint            = (known after apply)\n    }\n\n  # aws_sns_topic.namespaced_microservice_topic will be created\n  + resource \"aws_sns_topic\" \"namespaced_microservice_topic\" {\n      + arn                         = (known after apply)\n      + content_based_deduplication = false\n      + fifo_topic                  = false\n      + id                          = (known after apply)\n      + name                        = \"testing-topic\"\n      + name_prefix                 = (known after apply)\n      + owner                       = (known after apply)\n      + policy                      = (known after apply)\n      + signature_version           = (known after apply)\n      + tags_all                    = (known after apply)\n      + tracing_config              = (known after apply)\n    }\n\n  # aws_sns_topic_subscription.namespaced_microservice_subscription will be created\n  + resource \"aws_sns_topic_subscription\" \"namespaced_microservice_subscription\" {\n      + arn                             = (known after apply)\n      + confirmation_timeout_in_minutes = 1\n      + confirmation_was_authenticated  = (known after apply)\n      + endpoint                        = (known after apply)\n      + endpoint_auto_confirms          = false\n      + filter_policy                   = jsonencode({})\n      + filter_policy_scope             = \"MessageAttributes\"\n      + id                              = (known after apply)\n      + owner_id                        = (known after apply)\n      + pending_confirmation            = (known after apply)\n      + protocol                        = \"lambda\"\n      + raw_message_delivery            = false\n      + topic_arn                       = (known after apply)\n    }\n\nPlan: 5 to add, 0 to change, 0 to destroy.\n\nDo you want to perform these actions?\n  Terraform will perform the actions described above.\n  Only 'yes' will be accepted to approve.\n\n  Enter a value: yes\n\naws_iam_role.namespaced_microservice_lambda_role: Creating...\naws_sns_topic.namespaced_microservice_topic: Creating...\naws_s3_bucket.namespaced_microservice_s3: Creating...\naws_iam_role.namespaced_microservice_lambda_role: Creation complete after 0s [id=testing-role]\naws_sns_topic.namespaced_microservice_topic: Creation complete after 0s [id=arn:aws:sns:us-east-2:477330550029:testing-topic]\naws_lambda_function.namespaced_microservice_lambda: Creating...\naws_s3_bucket.namespaced_microservice_s3: Creation complete after 1s [id=testing]\naws_lambda_function.namespaced_microservice_lambda: Still creating... [10s elapsed]\naws_lambda_function.namespaced_microservice_lambda: Creation complete after 14s [id=lambda-testing]\naws_sns_topic_subscription.namespaced_microservice_subscription: Creating...\naws_sns_topic_subscription.namespaced_microservice_subscription: Creation complete after 0s [id=arn:aws:sns:us-east-2:477330550029:testing-topic:8732c088-cff1-4c1a-9077-b4bc02498548]\n\nApply complete! Resources: 5 added, 0 changed, 0 destroyed.\n```\n\n## Port Syntax\n\nAny reference you wish to grab from a resource must be exported. This is done\nwith one of the `-->` arrows as described here.\n\nThere are three arrows that produce special effects:\n\n-  `-->`: EXPORT\n   -  stand-alone: basic export syntax. This will export the value of the given\n      key so that it can be referenced by other resources.\n   -  with `export` key: when prepended to the value of the `export` key as a\n      sister to `resource`: this currently is used to support the `depends_on`\n      terraform meta-argument. See **Exports Example** below.\n-  `-->*`: EXPORT `one(...)`\n   -  this is a special case to handle terraform sets with a single item. This\n      export will produce a `one(...)` function call, grabbing a single member\n      of a set. You must pair this syntax with a array wrapper around the object\n      containing the keys you want to export. See **Exports Example** below.\n-  `<--`: IMPORT\n   -  This syntax is used when referencing shared resources that are created\n      outside a module/namespace, but are referenced within a modules. This is\n      only necessary prevent a namespace from being added within the module\n      See **Imports Example** below.\n\n### Exports Example\n\n```ts\nconst archive_plan = ({\n    build_plan,\n    build_plan_filename\n}): AWS => {\n    return {\n        resource: {\n            local_file: {\n                content: build_plan,\n                filename: `-->${build_plan_filename}`, // --> reference filename\n            },\n            export: '-->local_file', // --><the attribute for depends_on>\n        },\n    }\n}\n\nconst archive = ({\n    filename,\n    depends_on,\n}): AWS => {\n    return {\n        resource: {\n            null_resource: {\n                triggers: {\n                    filename,\n                },\n                depends_on,\n            },\n        },\n    }\n}\n\nconst acm_certificate = ({ domain_name }): AWS => ({\n    resource: {\n        acm_certificate: {\n            domain_name,\n            validation_method: 'DNS',\n            domain_validation_options: [ // 👀 must wrap in [] for proper export\n                {\n                    resource_record_name: '-->*',\n                    resource_record_type: '-->*',\n                    resource_record_value: '-->*',\n                },\n            ],\n            arn: '-->',\n        },\n    },\n})\n\nconst route53_record = ({\n    domain_name,\n    type = 'A',\n    records = [],\n}: Route53Record): AWS => {\n    return {\n        resource: {\n            route53_record: {\n                name: domain_name,\n                type,\n                records\n                ttl: 60,\n            },\n        },\n    }\n}\n\nexport const module = (\n    {\n        build_plan,\n        domain_name,\n        build_plan_filename,\n        builder = '${path.root}/src/utils/package.py',\n    },\n    /**\n     * this is a self-reference to the module's output\n     * before it's converted to terraform-compliant JSON,\n     * so that exported values can be referenced within the module\n     */\n    my // 👀 See `./src/config.ts` : `modulate` for details\n): AWS => {\n    return {\n        plan: archive_plan({\n            build_plan,\n            build_plan_filename,\n        }),\n        archive: archive({\n            build_plan_filename,\n            filename: my?.plan?.resource?.local_file?.filename,\n            depends_on: [my?.plan?.resource?.export],\n            //=> \"depends_on\": [\"local_file.<namespace>\"]\n            builder,\n        }),\n        acm: acm_certificate({\n            domain_name,\n        }),\n        route53_record: route53_record({\n            domain_name: my?.acm?.resource?.acm_certificate?.domain_validation_options?.[0]?.resource_record_name,\n            //=> \"name\": \"${one(resource.aws_acm_certificate.<namespace>.domain_validation_options).resource_record_name}\"\n\n            records: [my?.acm?.resource?.acm_certificate?.domain_validation_options?.[0]?.resource_record_value],\n            //=> \"records\": [\"${one(resource.aws_acm_certificate.<namespace>.domain_validation_options).resource_record_value}\"]\n\n            type: my?.acm?.resource?.acm_certificate?.domain_validation_options?.[0]?.resource_record_type,\n            //=> \"type\": \"${one(resource.aws_acm_certificate.<namespace>.domain_validation_options).resource_record_type}\"\n        }),\n    }\n```\n\n### Import Example\n\nOnce a module has been `modulate`d or `namespaced`, it can not be `modulate`d\nagain. This is because those functions reconfigure the object to be\n[Terraform-compliant JSON] and - thus - are no longer amenable to the `my?.`\naccess pattern, which enables references to be shared within the module.\n\nIn order to share resources that are manipulated within a module but passed in\nfrom outside of it, you must use a special syntax to prevent them from being\nnamespaced within. This is done with the `<--` arrow syntax.\n\nLet's extrapolate on the **Basic Example**, so that we _aren't_ creating a\nseparate SNS topic for every lambda we create and, _instead_, share a topic\nbetween the lambdas.\n\nSince the lambda module internally references the topic's `arn`, we want to\nprevent that reference from being namespaced within the lambda module (the\ndefault behavior), so that a single topic reference is created for each lambda\nrather than internally namespaced references to the topic.\n\n```ts\n//...continued from Basic Example\n\nconst snsTopic = ({ name }): AWS => ({\n   resource: {\n      sns_topic: {\n         name,\n         arn: '-->',\n      },\n   },\n})\n\nconst sns_sub_lambda = ({\n   topic_arn,\n   lambda_arn,\n   filter_policy = {},\n   filter_policy_scope = 'MessageAttributes',\n}): AWS => ({\n   resource: {\n      sns_topic_subscription: {\n         topic_arn,\n         protocol: 'lambda',\n         endpoint: lambda_arn,\n         filter_policy: JSON.stringify(filter_policy, null, 2),\n         filter_policy_scope,\n         arn: '-->',\n      },\n   },\n})\n\nconst s3 = (name): AWS => ({\n   resource: {\n      s3_bucket: {\n         bucket: name,\n      },\n   },\n})\n\nconst lambda = ({\n   name,\n   role_arn,\n   file_path,\n   env_vars = {},\n   handler = 'handler.handler',\n   runtime = 'python3.8',\n}): AWS => ({\n   resource: {\n      lambda_function: {\n         function_name: `lambda-${name}`,\n         role: role_arn,\n         runtime,\n         handler,\n         filename: file_path,\n         environment: {\n            variables: env_vars,\n         },\n         arn: '-->',\n      },\n   },\n})\n\n//...\n// NEW! very tiny module :: module syntax = { [key: string]: (args) => { [key: string]: AWS } }\nexport const topicModule = modulate({ topic: ({ name }) => ({ sns: snsTopic({ name }) }) })\n\nexport const microservice = (\n   {\n      name = 'module',\n      file_path = '${path.root}/lambdas/template/zipped/handler.py.zip',\n      handler = 'handler.handler',\n      env_vars = {},\n      filter_policy = {},\n      topic_arn, // NEW!\n   },\n   my: Output,\n): AWS => ({\n   //...\n   lambda: lambda({\n      name,\n      role_arn: my?.lambda_role?.resource?.iam_role?.arn,\n      file_path,\n      handler,\n      env_vars: {\n         S3_BUCKET_NAME: name,\n         SNS_TOPIC_ARN: `<--${topic_arn}`, // 👀 import reference (prevent namespace)\n         ...env_vars,\n      },\n   }),\n   subscription: sns_sub_lambda({\n      topic_arn: `<--${topic_arn}`, //  👀  import reference (prevent namespace)\n      lambda_arn: my?.lambda?.resource?.lambda_function?.arn,\n      filter_policy,\n   }),\n})\n\n//...\n// for the the topicModule provided herein, the name is snake-cased\n// and used as the root key\nconst [topic, topic_refs] = topicModule({ name: 'my-topic' })\n\nconst topic_arn = topic_refs['my_topic']?.resource?.sns_topic?.arn\n\nconst lambdaModule = modulate({ microservice })\n\nconst lambda1 = lambdaModule({ name: 'testing1', topic_arn })\n\nconst lambda2 = lambdaModule({ name: 'testing2', topic_arn })\n\nconst module = {\n   topic,\n   lambda1,\n   lambda2,\n}\n\nconst output = namespace({ module })\n\nfs.writeFileSync('main.tf.json', JSON.stringify(output, null, 4))\n```\n\n# Contributors\n\n## Using the Typescript Interface Generator (CLI)\n\n> NOTE\n> While building the library, I used [bun]. This proved to be very fast and\n> didn't require me to compile the typescript before executing it. If you'd like\n> to use another JS runtime that doesn't natively support typescript, you'll\n> need to compile the typescript first.\n\nWith native typescript support, you can simply run:\n\n```bash\nbun run src/cli.ts '<terraform-provider-name>' '<version>'\n```\n\nExample:\n\n```bash\nbun run src/cli.ts 'terraform-provider-aws' '5.20.0'\n```\n\nThis will generate the typescript interfaces for the given provider and version\n\n[bun]: https://bun.sh/\n\n# Initial Use\n\nBuilding microservices with serverless technologies on AWS\n\n-  API Gateway\n-  Lambda\n-  S3\n-  SNS\n-  DynamoDB (TODO)\n\n## Microservice Schema\n\n### Provisioning Dependency Tree\n\n```diff\n+ SEQUENCE             000 001 002 003 004 005 006 007 008\n- μservice              .   .   .   .   .   .   .   .   .\n  - name                I-->O   .   .   .   .   .   .   .\n- S3                        |   .   .   .   .   .   .   .\n  - name                    I-->O   .   .   .   .   .   .\n  - arn                     |   I-->O   .   .   .   .   .\n- SNS                       |       |   .   .   .   .   .\n  - topic name              I-->O   |   .   .   .   .   .\n  - topic arn                   I-->O   .   .   .   .   .\n  - subscription                    |   .   I   .   .   .\n- λ                                 |   .   |   .   .   .\n  - env vars                        I-->O   |   .   .   .\n  - name                                I   |   .   .   .\n  - arn                                 I-->O   .   .   .\n- API Gateway                               |   .   .   .\n  - route                                   I-->O   .   .\n  - authorizers                             I-->O   .   .\n  - api arn                                     I-->O   .\n- Route53                                           |   .\n  - subdomain                                       I-->O\n```\n\n## Dependency matrix\n\n| service/dep   | μs name | r53 D | r53.D | agw | agw/ | topic |  λ  | s3  |\n| ------------- | :-----: | :---: | :---: | :-: | :--: | :---: | :-: | :-: |\n| r53 domain    |         |       |       |     |      |       |     |     |\n| λ             |    X    |       |       |     |      |       |     |     |\n| s3 bucket     |    X    |       |       |     |      |       |     |     |\n| s3 access     |    X    |       |       |     |      |       |  X  |  X  |\n| r53 subdomain |    X    |   X   |       |     |      |       |     |     |\n| apigw         |         |   X   |   X   |     |      |       |     |     |\n| apigw route/  |    X    |   X   |   X   |  X  |      |       |     |     |\n| sns topic     |         |   X   |   X   |  X  |  X   |       |     |     |\n| λ route       |    X    |   X   |   X   |  X  |  X   |       |     |     |\n| λ sub         |    X    |   X   |   X   |  X  |  X   |   X   |  X  |     |\n| λ pub         |         |   X   |   X   |  X  |  X   |   X   |  X  |     |\n\n<!--References-->\n\n[topic]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html\n[authorizer]: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/apigatewayv2_authorizer\n[API Gateway]: https://github.com/terraform-aws-modules/terraform-aws-apigateway-v2/blob/master/examples/complete-http/main.tf\n[Terraform-compliant JSON]: https://developer.hashicorp.com/terraform/language/syntax/json\n","readmeFilename":"README.md"}