{"_id":"type-lenses","_rev":"34-c7fca5723b77d97968a7bc561e63df72","name":"type-lenses","dist-tags":{"latest":"0.11.1"},"versions":{"0.0.1":{"name":"type-lenses","version":"0.0.1","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.0.1","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"0a0eba3a24e7c52dd385c79ccacf225d50b0f338","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.0.1.tgz","fileCount":15,"integrity":"sha512-XfQcq/FVfh9QHoSqD/G0JvZSNx3GTHzGYA56c8zE7F9sWRc6Ll0Op6X+kG6iExx4tBfGPKeBevZ2Y2oKon0Brw==","signatures":[{"sig":"MEYCIQDyVXYP3yQ5cX4qenLnRF0f4Tk8v+egO01plAEChO8ZOQIhAIUFQJvwhWV9AMHrlC0042NwN4e3y6sUbOXJeFIqGOQA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWs0DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9WQ//ZSTPfkrcduxVnd/OE8/tyEjlskaJqRySNBHCgftq4qJISu+P\r\nmu7ebvCATOxvGtkWZpZ5nWqv8BaqXzu5UpOIgqsvjIz/HR3XHeY6C1YTKm14\r\n2k197FtJ0X7usBHH+cN9m2yB2qqSnQEsxOayObv9DbHn50KdWP5Dum6s44qP\r\nomNikarADpLAaQ5ZHIROI41WhmFF3rtC95NjMWeIG7QlazOET721zx7e4VK2\r\nVE7xEcUHI9NXOmruzx3wEPFw4KV3+cH1k1Fh46VvVvwinobJz0t7vkQe8dJs\r\nqaYu4trV+DwOd4yzwvhO9k9okHaPz0s6V40jT65I/iMeksUvW1nltEdTuPKp\r\nIancp/xGPP0FYiU1Y3fT3ZOGnn8gJni/1/DuStcqTdJTZCOYmDnu6JNOXtpW\r\nYua2BKcuNnEx74JfthO/dRbzx4uY9xdZ+eeq5FhSRfpDZbPyS3+GuyZcbvYm\r\n2u3bzUyszvj8n+Ponk1Ivz2jiVry+ahmTwtqgexnakbrGSMCePFJ3JVy6zj+\r\nNvTsfWTsJ9meecTHpqeZbPfM02J5UosOYdNQwaMORZJVWh837ybyfa0zXH4b\r\nX2GWtJ21/Fh8e4itHVry6UGvHJjWp0yb3o7ymDSNfJxzk+5xHPhhCfVUIgau\r\njzzh4K9Diy9h2uNIorjQRE0CMja7/G7MaRY=\r\n=JhFE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.ts","gitHead":"5a1a8eeafe74415ebb4391fbda41c1fc82eb1c71","scripts":{"build":"tsc","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.0.2","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.0.1_1666895107035_0.40730485163052266","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"type-lenses","version":"0.1.2","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.2","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"259aad41d2cf638b5fc12f3dad9fc9e07ba9f066","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.2.tgz","fileCount":15,"integrity":"sha512-AVsk/2mzpvFsNB9KOEMCap4FIrfVDFKzu/mET22oLXZrW3OWy2DyDjZEnP/GvfYjROR/bRXS0o7SjVs1XHgLUA==","signatures":[{"sig":"MEUCIQCJYkow53+PH1bpAwHuJVELnbrSiKwEhgVCx5h2wdbYzQIgboMV4JL2urcqANIfUHtHF4S7FFf2AK5Wn5JB1+HGkUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYU0ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpu9g/+IO44p7EIph4oq9ath8KEu7e0gL7T+vvDd8rIyi5rPLyP6btT\r\nmjUcoBCgI3F+BhaRH2im5REokuSruSMO5Zg3Ff1zHs0DF59cPq2CQeFSf8p8\r\nejYvHnJqFSwpUqFNRk20I+eGJldgb2xbtJDw6C5rRyug26OZcl/8NGFyCoBY\r\n2KmAXKanYaMxGaq++a3cP+02omfqu3HJ9BjJrqW/FQBE2q4GY+GCuJUmnIFq\r\n/6SucqaL5yyjAxWkd1L+950r/wZ+xhcwdDPHjjrUBCn0GyNuGBy4mUg8UVht\r\nqa85yiKo8nxQFsNEoWOSNS8WNg+1/ic6NuamvhYDGUU1afc5/1DzTW30qt4U\r\nuOhqRqwlYONGLbxkFKtXmuSBr7an1lc720LOVtsyhF9v9BiBdWyJEhAxMYLC\r\n71DEIHLqaPKlTTDPSt8N34zzks2/NKu9w4iX0oe+H9iaUK6cySz+0a5oyBCr\r\nLgwgRS1NLDspA4d3aaBiKVtq85H067zjNfA13A9sPif2/Z38SjJ6C6JBHoHW\r\njOdB9VZ96h8C9YXdcRInjDXai93+f+Ja+hx5RwDdkLLXKK2svtGS/oudJcUr\r\nAFYi0KDjtYpcFf+GqvFR3LuuHOYFGBXheVzC8FAdY/IGdslje0d1Q9cf0kH1\r\ns0WCnUWDHVwz7tt16wZEwuzbBUW+eqMKaRs=\r\n=1/o0\r\n-----END PGP SIGNATURE-----\r\n"},"types":"./src/index.ts","exports":{".":{"import":"./src/index.ts"}},"gitHead":"d17e7c915857f1b3a839fdabb46741ac96a387c2","scripts":{"build":"tsc","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.0.2","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.2_1667321113508_0.3695189686270448","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"type-lenses","version":"0.1.3","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.3","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"930ae0943936cc5bbfde7b22a0c128a89c929c71","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.3.tgz","fileCount":15,"integrity":"sha512-t0IntEZYj9Xj6XK2i6MXYKiBEpZ6Nwwmv+8meKZfF+2MmRndxi2MBQ7dCZqZoPN0+wHdTmgK56j+RVkYsJuATQ==","signatures":[{"sig":"MEUCIQCFniXXmYBWXoaSoixrc4DAXrLNIDoXGxVXl865idUPcQIgGlipe841zyphN8C2IoVojcB9nItNoDWGnMrE6LR0CZk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuZonACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSbw//QUxJsZoSgD8pFimjUeqrj5N3oHsI2wJbJtr+zKvOB9VO4Vxp\r\ndMqvQfBICxv2Wi2VvbxFivsaiFGpr+e3gfWDdDWMqrysDH6A2TWZYS3ae1pH\r\nrJXXip+D+AhKUoijUYQUlHDam9FwLPT+TFQhkFAFxWkw2t34AcJypqFNOLmZ\r\n2Z5LrI2H8zoxncckjlk8og960hyDaprUqTjt2j7q3dmESjpWCNpsDKeH6tVX\r\nxlkUje+jk5d557Jf9jq8q5ATsimeFpv8Umn1YSWh8vLo/V9xHBdsfZIH+YTy\r\n5Hm+nfvyg0Z1ULwu0DC94K9oR80J2hDxFfCI9SM6A2n68kzpuG1LPC3Y5L/W\r\nyNfwL/V3ElEkRjlbMAySjFEjW42GbOHwCOCozbAX2EpaqX8E2dQ4qZYuWofS\r\nGemvpOX2/UWFkZEmgsyWH9rOepXqrAYomlrM3RHsAlfbv4mcSdW4P/QI5mTG\r\npjmzB3CqeD/ykdIXAbzF+Z0iSR1MUMWgGHt+G3ER/DK+F5Hr8pNICKk1bwsz\r\n0Jk2triD2Xxzuf1Xv1TrnyYxnHuhdZ+TiQb69J+qxmCB0yGI7LysWWiz9PM7\r\nMcEGKy2dBpJDIKEb1yKvizp+H3YlduQC04OJgNboA9AatlUEJH8x6F94RwQt\r\niGxYPnzE+pkje3cqAD8fAZa7VqMBGI/qMh8=\r\n=z1wa\r\n-----END PGP SIGNATURE-----\r\n"},"types":"./src/index.ts","exports":{".":{"import":"./src/index.ts"}},"gitHead":"5c413600d029895e015e3bf601ff89eb0f5d4d65","scripts":{"build":"tsc","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.3_1673108007321_0.6602131642484037","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"type-lenses","version":"0.1.4","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.4","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"82dc5a79d70d8b65fff2e4222401a25c03f5f4be","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.4.tgz","fileCount":23,"integrity":"sha512-6oQmbviClrbKfGtXoagP0IwAxoQXrsBlN7k1j+tEq68GIf8H6MUqn415xRaG78upxWIxPSOu5B+kQuyYK7OhYw==","signatures":[{"sig":"MEUCIHdfp9kghYb7D5TchwE6M2ulYHR5li6iuBiDp4DwoaieAiEA2Nzp3PhwbVvdml9UO41PGxxIMRsAxV2yT8QwGN5aEwQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuqTKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoM6A//d2BkZ6a124vhkq91uP7MOR/A7pWeJe0nVY2Va6LDpomnE9ZK\r\nT5iwEucsqou3nzYT8AyVGtOb/RL82TgEUas3mgb8Hr9DxKI3699nHFk5CgI1\r\nJFfKSj20t3D+FvYIO5j4dpxHbQAtJn/CNjoOaf23pX08cenXUOR4iAj8r47V\r\nY+cqYGpyESi5aezTfyIN66zMmE61ZPqn4iB0tk0lPngM8y9x6J6dzJ6Hellh\r\ncIuaHZYJ67ue/Fkn9V1g2NoAcLGeC7+Y7bPDyT7Gj/xEYS+q653Zo8o7zb8H\r\nBJELrFMqMupxShATyOzMLnNMeMDlGp3aM6XGD6Pc+XWioB0V1fLamiDaBpr9\r\nC4vflwa79WWTVqoV/rJq54gx26DWhnznwLGOuD23kE62PODOcFAShkKtHihi\r\njFFoHUkSVHJjPobvcHT2g4srZS0y0qOyz1f4tfh67CIRQ9Apfo3pHIYJ1IX7\r\nmu85LeP/HHCQ3Z/3bjD/COAXQJC7Fa9Vz86tZkqwm1xRJIDSGvU69WuQABJT\r\n7rHcxkbGNdd9OUYPpqPzJyv0iXE6AiuVaT7lzQ2ctLpTezWpxwmsQ2uxxeEE\r\nVtqMXTOl7Ss4Sc5X3csF5IHoRB6llUoCbovglymYvg/Eqj1onIX29AkSzsqd\r\n53v2rOMxV3So/QbR1XOO6wyOZlN+65aURHs=\r\n=uZSE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"b40a5ecb28b85337e0b52effcb99784dcac651da","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.7"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.4_1673176266595_0.29106863151917484","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"type-lenses","version":"0.1.5","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.5","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"197abb4e344d1ae37183e9a1afa7a5aa7e949bd0","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.5.tgz","fileCount":23,"integrity":"sha512-tW4NO1RbCTIV3VSgaTQawqNrH51B9O8BschWfnQE+4jliN+zMt0TM4qWRLx6Zvyfhq2H2EnbYTLKus2qZ9+/bQ==","signatures":[{"sig":"MEYCIQC9EPUyXmkDIKCnibd0rVEjdVf2kTg2p65X8tFLzXN/QgIhAL30z4mISCIcQ/CAb7nW32CMGSpCcvuMcuuIRU4KtHWJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjusapACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr07RAAgN/uSog2NNqhArtxY+fHo0KbapPjqGtQD7xcr50pcLJomCCu\r\njcICfwWB02iI6ZV5t+ngbZlZktjFbvax2NG0xMxy5wy43AgaOUcce6C+24sj\r\n7c30QoUyVDajB1zQ2DGMiZg004FkyNcN9dc5gAIJMzuUvCRNYYN/rRYCULIv\r\nEW3FRZuKT++0+L97Xzy2QPc23HIHPIM5cS65czVcVwttz5yxsQvL9e+n1Bq5\r\nD/WW5TjBITzSuEpilqXYtIICxl3lcz5eKOhuPOJz5kSl4iFGipXM++87RzH6\r\nog9du0NmxOxwh5N8L+vsW9bALDlSrlliuViLzKrSdVgJ2vsffFvdaGQqxyot\r\nM7zN+1Z6wvopZhq2IDqO5x+HaCJPBoDCLYB90Ggz5dQTG5RKDlYmsFzRqDcO\r\nYlsu2trJztUFUGyi90H8RYhC8WULblv8mUjDa5krfQdBETejkwyXPpXQjs0A\r\n0YnTpAGTt61rIN/YWvR0ECf1bp23h/sWA2eaBEdSGpoOv+OpZVMpCftF8gDu\r\n7wwKYdce5q3SMdqyqHCrekSgtjwO8hX6e7FtXovcpb9Rapkm0V+e9IyaaSvQ\r\ncZQacHQSB0sU2Df4A6fvRx1p7KgrSv2F+23T4DVVK8n4qj31RucQlKUSTiWU\r\nHY+rDhPc2m9v4owfHjO42rE7oDQPNtwEhNk=\r\n=lBgy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f653be8df76831f89b522b4fd80e9b3c90c18434","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.5_1673184937802_0.31367984031012686","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"type-lenses","version":"0.1.6","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.6","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"88907a25ded92747149ea0210667ff8ee8da8a3a","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.6.tgz","fileCount":23,"integrity":"sha512-iwZP8FQ1nBNGf1SmXZ1v/Hm1ZLPoZJfkXTIQZsnf8QZQD4GbEGEvGIJSryIfAsPvHyi2eG0BdNc75u3so/xAFA==","signatures":[{"sig":"MEYCIQD056jk5GQyTe0LaGGaneT07/jGjycoFv/MOHxRC8M2QAIhANvncWLdp3Fu7dTJKGs+47O3O5w4q8AVK/zUNfbau4k4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjusl8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrC5A//dea/TYFhzbSq/JpfxCXxjGtuKvmqC8+l4Tkvsg83+3yjKkrV\r\naPmqks0Iae3zAYRSVKbo2Nuvoli5OKgs3aAFgIeIsXi13AcjhbdhI6IkrI97\r\nOjmqMmabkS1ZGLknm+kSWW39hNzjvm6ubYDkwXwpGa0Ef+Um8ayCENSYlNsu\r\nDXEXmvo3amZBNAT3h5oUmovzw5hB40b4tsvbxBH9FXd7qYLo/L94UbACkej/\r\nDDKCqTzyuZmM0hNiqXmJGuVztsQSfcpKmN5hTPHeJ8X/L/7jDC66AmyFTQ3P\r\nV5JIq3FqxcRiuItsa3xoLuXScvyScMNqvVPliNTy04gWp7xdxz6JtHhDTwW6\r\nKEm82WMg+oXwBi6qmlkPOaUti0E1gHVe32JmuBpqBUnK8L6Bg6w1u2yiG8zP\r\nTJrDiRokQM4B/R5UWRLaKE8Ur6vqTzm8wt9Pk5XPkqqby+tXTrZgvnivpRLK\r\nOUKyJQiajqWiQC71D6lioeXfH+RXIasDDUzbERqoOwvnYzdPwp2tMtQ2EEUe\r\nCCPn801jSJRynMpzFB4PpPg8RWh95REV5nqyK2Uyh8sH8lUBO+T8NSgvHomz\r\n0RbF6B0n5WiZf7Xed3FYUw9Pzw6TlGaQILu5F4yiVby6fzqWjEE53/LPDBGN\r\n2O9+njKKWD4/d3SUiyf6fWicSdfF6zhzTVA=\r\n=YZjG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"a32f4f539a7f9be8415e29794c23e93dd6dd0cf2","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.7.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.6_1673185660496_0.6033368469726015","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"type-lenses","version":"0.1.7","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.7","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"9becad4c6157bf78da76d9349c73338c1c55ef3a","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.7.tgz","fileCount":23,"integrity":"sha512-/koDJj4eWCff4oYRRt7RxhOprCTzolLLBMiZi8P/8gdDAtMdeA+kDyMinvEmsZw7qpfEV3jD6kB09QnGDP0FlA==","signatures":[{"sig":"MEQCIHMWzK8uEqrMjdir+hOc1sRZJ3CwW29qhBqtSQPtiihqAiBfiSbvkzyEqO4fitZNTCFJJi5mwwi8k2CQGk4YHE5uNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxqFmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqSw/+LIRm0zGFz0UXqUjWxFPI03EFtscuQ2gF7fU/88vd8/TQg/7T\r\nvR2jTLFcFeUaGKo1UYY5Eqhb1egQdfDpXZS+9OZAACaoedf8RiO1YOxCo33D\r\nh+f32VSuqZBWNowsMidy6uol9dZiLmxSQ1wFtDZtscPxuvNh58ndH6aqt1di\r\nqqAFcCeAgFo5t6+anFDdU7zq3SpbLg8BpsJHBxpXu9LMt0fpW/axeNkZRBlE\r\nOnkTmgKe+0a8wnZRo4C0TWgKNLM3NQH5h3+K67h/RNcWh29zIlBt8Kt+iYdu\r\nR21+WUXUpKCqrcd9oJzNeAKHJ4SDt0L6szGSsoVtR0T2GjcfZ65b/urGikoD\r\n9buUPhoGk4yExYyWp0tqw01qvTHypgFbXdbSH1J5Z3m/lrowfEYPLbKrhxoZ\r\n50hMllsNUoUuK1jAlz6JarYTFo7U7WURDNnSsDaUH71+c23EWqz4rUbmichV\r\nVSamAFz7K0rbTbk6IXJ6HoVISsja8xUopzg9y4fYEt8xaNFcHf2xG68t5Ace\r\nrSaQ6QMdewx+a8Lzhb6NlKeDo/yz+koppfL6QHPb6g9oXpwnW5qVDLQpEKI+\r\nT0PMQfvWOl3PRFQDy4ggsdPfSNGZqeMxRLw5KWNZKWPnabAToKSFZOKQx5Dt\r\nDbdbABZ3a/tyYXx4ngmwh+vcbPBX7U23MWA=\r\n=axeF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"7a09f73d8ba5794d12c36087223c8d4f47b93ac4","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.10"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.7_1673961830524_0.03439713273480294","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"type-lenses","version":"0.1.8","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.8","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"eb0cb5eb2f15bc4977c6752e847a773a08114cf5","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.8.tgz","fileCount":23,"integrity":"sha512-SkDJx2OU0k/aRO+Fxms0xVtiOonYDL+SCZMmpLIXJlPE3T7Qml9sAo5wIYhhiYGS2cgE79N5pcmm+AujvVWLzQ==","signatures":[{"sig":"MEYCIQCbiQSL9PGhwsUlW/fbyJvSEk00RSBBXoLxKK+33ObcDQIhAJ8V4EjLJZCRCdNqrrlIICR+wusA3WdugASwj1p9AHLp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxqujACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2gQ//cy4D5ocMkQJGtEwjbJrx4eeStDmiwuCOuDMHnKjxg+Q2WjoR\r\nx8UU5b8XFEgdcXYSWR+cHdDrgp8W53Xqwz9y2DpaW3NobSwspJGtn3fx3Z2j\r\nDESWLzukeDDWHt+9t6C9yXGf0Bicnr5JE605o/ewC4s0oO6niqTYDfn0cn4b\r\ndbgbHNkpQQ+wtefe3Y18DiynTl+3/cqiJphlkJGvcA/+n4lvOOeHu6zrh2DD\r\nNUOsSQA6nqdJmTBvvWOvR47BYC2PTZlfJSjkJzjyW1cIKPO8OAeQJSkTEHjy\r\n+Ddcml0l5Tju1s6kyIP7boGdD98wmBpyuX889esMdANHiVD6gf1hppES1m17\r\nZPuK7pR/j5T++FfT05kGDXaRQ5/9gvoaIE1CWMDnSR97F701Ej1jSzJ3HT61\r\nJKVQU80UqT4CCE/chQ4eSReCIvu4K1BBe+zWljosNVdaDIf8GZO+Wm/SwVBx\r\nb41apIyNYtQJHupAxydm+7jDZ5J0JT3kJskXpcTbmNlMKd6+l13r7KvB5mkl\r\nOtB1phhV7/V2QhbqloY6/15nqcvZh1pz5smbScOw15E+3JvhfIEiqgm+Su90\r\nTnFp+3ZMzFCwpsdeIPQCcWsry3g+KLWZyAvIgSe0Fp0wQSms9b5m8q32iKNi\r\nx20iGXrtEtOiB+ruTuBfX9kZNOG8/nufl70=\r\n=9k7l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"0cdabc2113ca1e0dd02aa15e3189b72a65310a5e","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.10"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.8_1673964451762_0.15910601104998867","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"type-lenses","version":"0.1.9","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.9","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"fb1a0f9815797aa9380f7c5ba61a04a063a0d8c1","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.9.tgz","fileCount":23,"integrity":"sha512-pIB/buzeqa35bBYg0cWIk6c6AZvnhjrmoaeCOD4gAPDNdUnatgZstOtwqWLAXQGR8dpGHVBytKO4uEFIYmCDUw==","signatures":[{"sig":"MEUCIQCqCLqsuTbgEfLptgPzKj2cZRpAOpwC/4Rp+CkY1fOVBgIgFnrbaEo4fLSchYGpmLb9mPgSNgGpUekEw8xEgdx0kxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxqy3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkPg/5APjbxqIWdOfTB85eiAEMUmNZS/pD03o2VI7qpj1smQfi1AAs\r\nTwfJp22NVnVOaMkbeJ6d9wyZuUshGuOy3CcmdmqqK4xqDE5M6qRBCaXIz0bt\r\n3/5wZ+aQALnmZMAeJIjuph0etXgRdcpLLSCrauGtvTQ3lAlryAEk/veJYENW\r\nGzqiTJ7ZvdT6yCBF9wA6MkVCJSAMUPSrI4LqMb8+UYgkBj77pLjMWRF/cxBm\r\nz1e0a6rcPRHS79kka08uaDqu6vk7tCZ0GacdNYX9muoVuQL0Ad685aavd5Ux\r\nlHuPDeJZYqlhZduMkjzjpHo3xxMWKt7mS2spIJtLpU+jROMte9Sr4rPnWWpp\r\ng+v5AIQzVs2XNWnOrzxJsrjdQmOLn/nIj14QlfbD4rOlFmE9+CiY8wxL6DQl\r\nKaSwzwRog5yVXyAvXvdGBrNla2+DKlzKUNBLht/JaSkDTps0uZ7jsY5ouxQH\r\nZ1jbPiu7ZOwVFsORkG0sk+ChkMM/V7oKu9O2lpLKxSzJKyCIy3lGKX8k2Nh/\r\npV4XL0I8/VljuiqrjVYFbcxi1YgcRLDPLdXOVJmE3jJ3kma/J6hV9ZUmZd1S\r\nmaZxJ6np9JgCkDqE2y4xIISiaWZ94LxcquU71iHn8ZqlldWDqKW5KMhictVC\r\nb2vyL3cnHbbce4mkB8alESRDofKQxaGTlLE=\r\n=q0WU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"3a75a6d74a61dffd498f268861b9cc4ca73f2a39","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.10"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.9_1673964726835_0.8589269099294634","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"type-lenses","version":"0.1.10","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.10","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"238f34dadcd3a60e30c5564a5d93da547788c982","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.10.tgz","fileCount":23,"integrity":"sha512-3HZiQe1L5B15FAoR3Vd5OpoGHhwXm/9p6R2dbbxCyOK2TMfcZMFyPyLhwkJAYA6ogSWG4f7XazcfManiVdSy3g==","signatures":[{"sig":"MEYCIQCTiv17wHVjqYAPT3VPrzjHJfrEuxWU/VYOhg2k4AtxYwIhALG83d72P3LCyqBOvCSrEVyNaJj/txRkRbFbAeWASYTN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxq41ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtwRAAmcgI3uRRxheKpKZ+smLhQ+SiVxdk8GVuH6p2hw1FSVpaUrfa\r\n5wG//Xtn+OUb/2xSL0RfnNXkt/6Mrpr/BxqdNRScMYtVHHTpathzihRYNk/9\r\nzxrfFJFfmjB5Sr40m/HnCeTQuhI+hnxZRROBHfbDBRfOgVGXXPPR7cNJNfUI\r\nAS3u++q3Oeux5knNQgJaBDwY0PSQa4OBxtLxwHRYfOzeK76NWukK6uZCRjEd\r\nlI6WOiABjbRVq+QrmCKe7wMjFKQ1lsYauJ99XloNrPARjbsHJJjoKvoWT54L\r\nUCuOO8aYXzRqzkEhhuj4JSyNojWNsiC2vrVke0WH8VDqKUqMEyd6tVi1Q3Mj\r\nz1LNc45+m9kUmXzMWaUfj29MQHrxNJH6f1iCOuR/vc1zcIKskzb8Qchcnrgz\r\nEiZfQvyegW9pmx3APTzydBDesL5AqSHXl1zuQVeAsHwq9aqsbFq3Mmeau7g/\r\nFHjZQjYuqF9awcpvWEIfFjpJK/m1wO3L6EO6Ucx2+FpaEGM7HfoFossbhNZC\r\nKOQknMqXxR0Fs26++HbKrqlVs+GC3dnerHleo/X4shfkanc3Pq1lNV1GejND\r\n3A5PbjZ3V1Taej3Nz6EExw8JeNknvsL7r9Ihz0mzWoyk6yh/k0S1VV2V0wWk\r\nEmCkWo9HJojtE5AYUGkgQhimgsIwvlb5rc4=\r\n=TDsd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"8f8f5d9bb008f4dd7363d0a2e8e00b850a9121bc","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.10_1673965109227_0.7831762525245987","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"type-lenses","version":"0.1.11","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.1.11","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"8279f2e36d3ad49e95ddbcea1fb5e5d3bc5f66ce","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.1.11.tgz","fileCount":23,"integrity":"sha512-QVVWNJQ6C+U6lY3HdNqJrMfJz7TGFmNc2pMgVFLdOg9es2bLWJhjOCqZYkxFRTqrXQiRccLoAgeIoLGvbK7PHw==","signatures":[{"sig":"MEUCIEmETi7XD/pmu4JpxkIIdWaiaTDt2+9Eq/haFQr6ff4mAiEAnfqQ+Vxew0wGEV2QvkejNdQEfpkF1fwMsB8BKGLBSAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxq+LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2dQ//RAWbWpl/Lm32zz7+K6ncAVzzsz1eyGLockjoa4+gBLRnUebF\r\nAx2+A8JVjRQgotJ53xbcV0PCqKe+V51JK5dIC4XNEYxHyM+k4begb/v2s/Hc\r\nmk7hkQdByF8GTCHHb109ItVDxrai15lmEZt1ja85z8bTpbrC+Pzk4tQ3a43m\r\n6BCrq392pB0vl75Junj7bj8HbQFpWJbdKysKR/0VX5aWF+qNoLXfSQoYalaw\r\nOURiiWmdH01cpW+vN69bhwnR129ES5yxWmWc6LjHkZl83EGcjWVqlg7OIKAh\r\nDjDFSauzDG4cvqlenNYezgNrE9pMWOAishmm2uL0bt9vL7ufJ3fG78MJU4iO\r\nOT5ASipMakbLLEQAxqAqzuHo5oNmLSUsiV6e9E6kBroXpH1aLBlYDDexyDgP\r\nHqdnH+g9Wr9GPW9+zYDDEOYlj+mjoDePzrTUEwS405R2ulzCRiXbN7Pz3qtt\r\nnB6jzg2X1Usa5NhaJqd9+M5yf/e/J+VIKtIrToXpJ9LKsEBW0zSbqjQcC+AF\r\nIieNVLAQhjiCwXe7tPSalF4sdmla3/kVZmip5GiEL5NFjewQ24m++Cxpr+GE\r\nCIO79Z5U92mU9d4a98TbjqRUYBFGlHmZZusDSgEjk+EudPM4k/5mPF20BBdP\r\nrOr9sQfRti2nbL5PCxyPoMdbKvrcuqUn4Ts=\r\n=/2Tb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"21ed619cc6e2722d04677c4a09375b32413a8986","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"8.19.2","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.10.0","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.2.1","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.1.11_1673965451293_0.9375018925336995","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"type-lenses","version":"0.2.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.2.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"1ecacd2afb5e2882bccb1f1336dfee8dafff6ca1","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.2.0.tgz","fileCount":27,"integrity":"sha512-7mk2Fzes8M38Ya0jf1cvrAywUmlJCrADfbsapbMaKy8khdf51Rq/PO4asvYHn6hXGGnung3U5mBZL5CKH5Ei7A==","signatures":[{"sig":"MEUCIQDwBUEximtl67Wh0M+B5SQ59DKnFtdlYOBap+f1IYM2RgIgJKDuY6HtQEajQeKMJWYSc+ErqXHX2kwWZ0eR+200ml4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17717},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"b0610d1029f35b5d0ded847d6cb59895c94fd0fa","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.15.0","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.2.0_1691351527738_0.3673724548388273","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"type-lenses","version":"0.3.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.3.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"52c7c209e05ffee935cc92cb3bc7cb2c818601c6","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.3.0.tgz","fileCount":27,"integrity":"sha512-P6pnyZZFeuuTeLAk7XeyVcjaboitTWcGeHrsEAwKDKP7SBQl0ZnKqegGPBjOls0Qepioq31mLqZRP1y13oxwzg==","signatures":[{"sig":"MEUCIQDL8s+wHtzfkAtlE6md4Kl1CqwCtLWdcBD/wV0anJC6twIgR00tNknCufUl4D6E2t6f+ZXKNa+0K5WMxJJ2BqUQXKM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17857},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"6d5d03bd6605bdd94b63cf36083f2ce2814e8a04","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.3.0_1691354475122_0.23109758499171518","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"type-lenses","version":"0.4.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.4.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"297e8da018abcd6b150d7a9558cf63892ebaf057","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.4.0.tgz","fileCount":29,"integrity":"sha512-G+fI6v6lPnQxXIk3OS75NPNecTabfsILzaAzrM8uxJkD9L8VxmD2z5Z3axWb0K5e6BHQ0AMsG03D1KNBCQMYIw==","signatures":[{"sig":"MEUCIQCogcn8UD7bJ9rYVKGMTf/mVcAIALdQ0zoEqTI8WOhpYgIgSnEK6xoqs7ab+hTyuP9HlbcvVEjQFS2NU9oGThGDJtA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22490},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"ecde3d33d3f84bb23f746428cd1b21e7d55ed2e6","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.4.0_1691421412662_0.7989688991596564","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"type-lenses","version":"0.5.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.5.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"eca206cdac0d7399b16498ec2199a514aaa6bf2e","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.5.0.tgz","fileCount":27,"integrity":"sha512-z69w6steE154AN9cpQeZvyQ35m6ybSw1zInWOqvc9Mb9ROGDD8f5FYYUua1mcz7eVODWZ3QSCsK8Qu4Rq9ToyQ==","signatures":[{"sig":"MEQCIHPyrlHhP1dODTDJ/RpKMHb8d6EeNoxSTw5ZRpWPjK0OAiBvgvr/2stBWrG1HK9fMWgdUNuVGCmudapA6TlxKgsH8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22814},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"82a3cb31d831b0f84db6b0ba6633722aecc2a1cd","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.5.0_1691486997037_0.8050705099669804","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"type-lenses","version":"0.5.1","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.5.1","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"beefb45d3e3e84f70a9144f5993298082e7bb64d","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.5.1.tgz","fileCount":27,"integrity":"sha512-6BUUBB19UfizTsxRGggz7MdAB1V8WvcqqR55yXu8GqbVqhJ7XAxx94gud8HmktRqweRt17+8X0alBLmBh1xbLA==","signatures":[{"sig":"MEQCIGkGXU8Xm9ztpstp5Y4kKLzdgCAdWciDDuGZJuFGfkVTAiAStVZaF2YU88XBE9UOEj1a0DksKmu5VYyOhzRw/14jSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23100},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"512f554031f527460ab9c6eab0836fcb88a1ac3d","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.5.1_1691488977474_0.5020854956892133","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"type-lenses","version":"0.6.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.6.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"7f33e522be200c5b62a65b688fd5412fadccb086","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.6.0.tgz","fileCount":31,"integrity":"sha512-elJtQ2tKFKcjtYvmA/uwnv7fd0n6GW7cq7EDo1mKKwJfhi4xbXVRkOWHt7gJhA7ffpJ5ZlDvBPRuptiqB1CUZA==","signatures":[{"sig":"MEQCIG48CU9IZELkPf5cQwkkywOwtmRaEVNf4iUaL6bPQyMqAiBUp4o/bcDJFGnvG0iR1Tg2FQDkLaXqjUnsECUKTkvzuw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36459},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"1ace9a3cb107a1c9850e3415cdcaa27c3028b70b","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.6.0_1692128689763_0.6361623818152873","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"type-lenses","version":"0.7.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.7.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"09210ab1c50001dd8831a4347d0b4483aa8244fb","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.7.0.tgz","fileCount":31,"integrity":"sha512-meTZDY2iLtUpRFW/AoizBNJLIXgmygnmiX9JBAdAFYQ50Gg/SK+V6ZlQLuTgZEaJpw4ixVLF+E3v0ejOVP1ukQ==","signatures":[{"sig":"MEQCIAdTo3XJKmC/8O54H/loId1SJkOvBoXiqYUz+p8WNuAuAiBBnhxfRtDxg/AxrSpBb5z2jVsGSOsToVu4JShBXUp5GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36700},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"0609ad738fdef2da97f2910fbe0fb428eccf231a","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.7.0_1692178245392_0.586379530112876","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"type-lenses","version":"0.7.1","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.7.1","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"6ab4c217a762da757ecb7c3c0efbe7370b7433e4","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.7.1.tgz","fileCount":31,"integrity":"sha512-qd/fMa0TA6Uad0oXxyyCL4S2lhIxWpI95PleeisyGjbqz3VYlsGu53c5tajkXxYF8UYEPsAVFoNNLnn5/N5Nsw==","signatures":[{"sig":"MEUCIQCmqhHczCrKCVnehusw01EijBeKdIp1fnzvmJWoEUU3oAIgVSU95B0nYTLTzhXyrng/SyZgNHXmhGLCchGgJMUjxfM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36704},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c5e3929ad3c34bcf30840789241a7c8fabe47865","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"tsc --generateTrace traceDir","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.7.1_1692183960795_0.3346525857384701","host":"s3://npm-registry-packages"}},"0.7.2":{"name":"type-lenses","version":"0.7.2","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.7.2","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"6b0125a7014f8264efcd91a03430715b280525c1","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.7.2.tgz","fileCount":31,"integrity":"sha512-1/UobcPb8CHiTrQnrS+X+1K5tsiKk+JWMbv3X8+doM9ofn9Df8YNKn6ywTnSU8el+FzDdldEi4n8ltQPhxPHJQ==","signatures":[{"sig":"MEUCIG7lGrmZ7HwXZ4DCoyqsaW8xt6gOGFF21AhHpSWIeSAbAiEA88ZZB9MMHaz14e1eCDBo3HtTXXJ2lpvllFxb+EqXGqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35205},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"13402449a71b311be4fd64ae3a60dd8f1467c755","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.15.0","dependencies":{"free-types":"^0.2.10","free-types-core":"^0.4.6"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.7.2_1692297240878_0.03304776321424985","host":"s3://npm-registry-packages"}},"0.7.3":{"name":"type-lenses","version":"0.7.3","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.7.3","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"935caa7d85e3fbc9b0e557ce342f90e8b41be233","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.7.3.tgz","fileCount":31,"integrity":"sha512-mERegZvv5OR8Goyo01Tcf6rcZiC22qhpHZOp+7ZMtb++5NouZY700gk396lQed+wEze0TWqFYmfAlAPyaPDmbg==","signatures":[{"sig":"MEQCIFgHPiyeAg39+oN9P+vI+ABgtheFfepDURP2Gxe9zDcVAiAz56MFFMTpjGUZydR/FwxV9gJTuWpgZ2jG7LNFDiVa4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35239},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"3e487feded59ba3f01ccf4572e6b438baf826211","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.1","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.16.1","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.7.3_1692797511845_0.4989870520881805","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"type-lenses","version":"0.8.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.8.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"c88e9402db9eb38e8d8ba214249ea98afdf26d3f","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.8.0.tgz","fileCount":31,"integrity":"sha512-ocLlIQfI7AIp87zmhI1Fv3U4M+Y5e9XOQLFAsW4275BJFCXsWFYFmW5NhLvxHuoQipN7yEhY0YyB8BrmGHkT8w==","signatures":[{"sig":"MEUCIQDrPye3iRweGxIAZq0regaHtgbS9yxFU1weN4WEtVSvnwIgQ/VkWKZFtj4ldlqGcUHfb/iiAZTDIOBlcKJXJjGRf9w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37455},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5cbc67993e815193f67b821b41f4f44bf052b52e","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.15.0","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^4.9.4"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.8.0_1692823404944_0.87523661971345","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"type-lenses","version":"0.9.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.9.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"b82583a1dbd6d22b4a95c20ec02f058371c79cde","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.9.0.tgz","fileCount":31,"integrity":"sha512-QZmKNHUxu1mYbzrksEovzZacAVtxGMIhgJZOZPIOnDlvWpIazTExK2VoOF3jVaLS4wdtnHC/zuY0B35AcZcYyQ==","signatures":[{"sig":"MEYCIQCf3caGXaAguFmk5tbrdQeQSXdNX+nCCmYKbBLhTQq7RgIhAKWrONgFBvLUXhIkHuQj14YPa/ZtlICvK+zGDVxUEDJY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38416},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"14b2898eb6fb11c120b89f11712359ca9cfcc421","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"deprecated":"Missing files in dist folder. Upgrade to @0.9.1","repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"9.5.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.15.0","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.9.0_1692879052788_0.54864147730353","host":"s3://npm-registry-packages"}},"0.9.1":{"name":"type-lenses","version":"0.9.1","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.9.1","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"a9115ed2ae2ea926a386b2520079e965202d5a25","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.9.1.tgz","fileCount":51,"integrity":"sha512-4D1DLL+Rsiv0rZRGcBJizB3Dsq/f9NFafEoke3SOwhFfYZODH/HOMQpyBdeqmfVmZeRtoTQ2dCL/rpDT3oH8Ew==","signatures":[{"sig":"MEUCIGak3cvMbJr2IeLFhIfuqbqWJElo5NGs7Q7MsP7/FbNfAiEAhzofIiaf42lnJcoEBS9DQZPY0yZASeIS8pyHSgI1l7Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47593},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"942af9f8acdad3ebe91bfec2d2e308cae92eba6e","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"10.2.4","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"18.19.1","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.9.1_1709814645884_0.572545327834288","host":"s3://npm-registry-packages"}},"0.9.2":{"name":"type-lenses","version":"0.9.2","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.9.2","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"10d266af760660444745efeeb1f02eace37ff245","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.9.2.tgz","fileCount":51,"integrity":"sha512-EHQyqohtwW49QmSpwSw5s2FQxlQZpqf5GGhdea2Vp8jJsOTuPxn+FZhh4dMRn1eBAfwBrCHBMJziXMbFmXqr9g==","signatures":[{"sig":"MEQCIByBMVlrLn6ZrMuQRfiC1MXSIbL6oFQw2VKGgui5HbVYAiAgx2uTGTYpR63v41ZxHbGUoHttA5zvxy49GIUcR8wT7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49991},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"10b8db1e972d25d283a9afe1f1abdac63d038682","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"11.9.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"24.14.0","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.9.2_1787498572919_0.9661421814553368","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"type-lenses","version":"0.10.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.10.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"796569b4daca74e35ea8e74036f7e469d6bafcc9","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.10.0.tgz","fileCount":51,"integrity":"sha512-7A34MHxNqou7ale/LZQJeIF1UHbTH45jjtCco/zGSHHiFRuG3FNEfdQJQNWtejX3wj6XJHZs75htWT4c+zuNpA==","signatures":[{"sig":"MEUCICnnblt+wck0n7eCgRrQmAgo+NhjgWO7qW7ikpAyLKFhAiEAh6z8XXl1Il+A1V4glObHzCW7YwcRpy7I6CUpaDODSec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51822},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"3cb839fb8a2851d831d7044bc563c2f3eca3f1e2","scripts":{"build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh","watch":"tsc --watch"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"11.9.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"24.14.0","dependencies":{"free-types":"^0.12.0","free-types-core":"^0.8.5"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.5.0","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.10.0_1787504921870_0.8352240953751173","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"type-lenses","version":"0.10.1","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.10.1","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"a97005ab7bca6aac25fd51a55fa421a10de2d9fd","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.10.1.tgz","fileCount":51,"integrity":"sha512-+Cfujm3lKVo7PYMs55DVHDB74s4IrGuhDxyGiZeZu7E2x3wu/pnsmpA1DQ+ihUkLHi2G9b8n7KwFlc7MWigNFQ==","signatures":[{"sig":"MEQCIGE0OGoPUIjSDZM0pr9XQPhFUa0ISF32NpqOOayJIhQjAiBqj/rn6sj9Ttgyo3sUs1CE8wntHoRAYM1vJHNfKakyog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52390},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"7d126601a2f51c47fc4bada3fed63105e8d8d7b0","scripts":{"test":"tsc --watch","build":"tsc -p ./tsconfig-build.json","trace":"bash ./node_modules/ts-trace/ts-trace.sh"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"11.9.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"24.14.0","dependencies":{"free-types":"^1.0.1-alpha.2","free-types-core":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.8.1","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.10.1_1787549766139_0.5722549028972417","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"type-lenses","version":"0.11.0","author":{"name":"Geoffrey Gourdet"},"license":"ISC","_id":"type-lenses@0.11.0","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"homepage":"https://github.com/geoffreytools/type-lenses#readme","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"dist":{"shasum":"dfe76b3fd7420bdbc345e536d7900e54cc7935dc","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.11.0.tgz","fileCount":51,"integrity":"sha512-kDTjYdJpCUHoMc1OJoLil3v2JTcM7xMcEQbydnQmseEoyD1c72nSg47AAqxTS2Frb3O81tYLWjSHCFxcv/RFoQ==","signatures":[{"sig":"MEUCIQCznnk2r1Kfky11zTVeQublsiuWoafk4FuieTgl5IjB+AIgZ9E11NOAijQv3vfhgyw1kCyf6mWv236CfDUQpYncNl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52796},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"6b418383111bf0e74ea216d6c39e0db9132a21c8","scripts":{"test":"tsc --watch","build":"tsc -p ./tsconfig-build.json && tsc-esm-kit --project ./tsconfig-build.json --files","trace":"bash ./node_modules/ts-trace/ts-trace.sh"},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"repository":{"url":"git+https://github.com/geoffreytools/type-lenses.git","type":"git"},"_npmVersion":"11.9.0","description":"Extract or modify pieces of arbitrarily nested types with type lenses","directories":{},"_nodeVersion":"24.14.0","dependencies":{"free-types":"^1.0.1-alpha.2","free-types-core":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-spec":"^1.8.1","ts-trace":"github:geoffreytools/ts-trace","typescript":"^5.1.6","tsc-esm-kit":"github:geoffreytools/tsc-esm-kit#v0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/type-lenses_0.11.0_1787550580587_0.08322099782148551","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"type-lenses","version":"0.11.1","type":"module","description":"Extract or modify pieces of arbitrarily nested types with type lenses","types":"./dist/index.d.ts","main":"./dist/index.js","author":{"name":"Geoffrey Gourdet"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/geoffreytools/type-lenses.git"},"devDependencies":{"ts-spec":"^1.8.1","ts-trace":"github:geoffreytools/ts-trace","tsc-esm-kit":"github:geoffreytools/tsc-esm-kit#v0.3.0","typescript":"^5.1.6"},"scripts":{"build":"tsc -p ./tsconfig-build.json && tsc-esm-kit --project ./tsconfig-build.json --files","test":"tsc --watch","trace":"bash ./node_modules/ts-trace/ts-trace.sh"},"dependencies":{"free-types":"^1.0.1-alpha.2","free-types-core":"^1.1.0"},"gitHead":"80c79e78a89c8309abe0f1566cd9ed6de6852930","_id":"type-lenses@0.11.1","bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"homepage":"https://github.com/geoffreytools/type-lenses#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-qJdhi3E/bBzviA2+/1UpydxB8uuZoGDp5W9eyJmPpRaOQcOHDkkPfXdH4WQssGsMwxO7obWkcBvQuf+nwQX94g==","shasum":"95cf1ad5ad4d4e67d5482a8fa06c33a4c1aae008","tarball":"https://registry.npmjs.org/type-lenses/-/type-lenses-0.11.1.tgz","fileCount":51,"unpackedSize":52811,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBgHUPxUwh3yyuq6LeLZAMlRciwKYjapZLGE/Y0Jsoi7AiA/e8rgBTtHmGw2JOs6CLbD8IV2i2lTp4Fcyv8xmprLSw=="}]},"_npmUser":{"name":"geoffreytools","email":"npm@geoffrey.tools"},"directories":{},"maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/type-lenses_0.11.1_1787550972771_0.6393408935886673"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-27T18:25:07.035Z","modified":"2026-08-24T05:56:13.106Z","0.0.1":"2022-10-27T18:25:07.273Z","0.1.0":"2022-11-01T15:57:31.801Z","0.1.1":"2022-11-01T16:07:13.286Z","0.1.2":"2022-11-01T16:45:13.631Z","0.1.3":"2023-01-07T16:13:27.513Z","0.1.4":"2023-01-08T11:11:06.799Z","0.1.5":"2023-01-08T13:35:37.941Z","0.1.6":"2023-01-08T13:47:40.689Z","0.1.7":"2023-01-17T13:23:50.661Z","0.1.8":"2023-01-17T14:07:31.947Z","0.1.9":"2023-01-17T14:12:06.978Z","0.1.10":"2023-01-17T14:18:29.388Z","0.1.11":"2023-01-17T14:24:11.454Z","0.2.0":"2023-08-06T19:52:07.919Z","0.3.0":"2023-08-06T20:41:15.338Z","0.4.0":"2023-08-07T15:16:52.868Z","0.5.0":"2023-08-08T09:29:57.211Z","0.5.1":"2023-08-08T10:02:57.682Z","0.6.0":"2023-08-15T19:44:50.137Z","0.7.0":"2023-08-16T09:30:45.607Z","0.7.1":"2023-08-16T11:06:00.980Z","0.7.2":"2023-08-17T18:34:01.046Z","0.7.3":"2023-08-23T13:31:52.064Z","0.8.0":"2023-08-23T20:43:25.145Z","0.9.0":"2023-08-24T12:10:53.061Z","0.9.1":"2024-03-07T12:30:46.069Z","0.9.2":"2026-08-23T15:22:53.082Z","0.10.0":"2026-08-23T17:08:42.007Z","0.10.1":"2026-08-24T05:36:06.289Z","0.11.0":"2026-08-24T05:49:40.726Z","0.11.1":"2026-08-24T05:56:12.903Z"},"bugs":{"url":"https://github.com/geoffreytools/type-lenses/issues"},"author":{"name":"Geoffrey Gourdet"},"license":"ISC","homepage":"https://github.com/geoffreytools/type-lenses#readme","repository":{"type":"git","url":"git+https://github.com/geoffreytools/type-lenses.git"},"description":"Extract or modify pieces of arbitrarily nested types with type lenses","maintainers":[{"name":"geoffreytools","email":"npm@geoffrey.tools"}],"readme":"# type-lenses \n\nExtract or modify pieces of arbitrarily nested types with type lenses.\n\n## How to install\n\n```\nnpm install type-lenses\n```\n\n## Overview\nWe are interested in `needle` in the type bellow\n```typescript\ntype Haystack = Map<string, {foo: [(f: (arg: string) => needle) => void, 'bar'] }>;\n```\n\n### Define a lens\nWe write a path pointing to our needle:\n```typescript\nimport { Lens, free, a, r } from 'type-lenses';\n\ntype FocusNeedle = Lens<[free.Map, 1, 'foo', 0, a, r]>;\n```\nIn plain English, the steps are as follows: \n1) Focus on the type `Map`\n1) Focus on the argument at index `1` in the arguments list\n1) Focus on the field `\"foo\"` in the object\n1) Focus on the element at index `0` in the tuple\n1) Focus on the first parameter of the function\n1) Focus on the return type of the function\n\n### Extract a piece of type\nWe can extract our `needle` with `Get`:\n```typescript\nimport { Get } from 'type-lenses';\n\ntype Needle = Get<FocusNeedle, Haystack>;\n```\nIt results in:\n```\nneedle\n```\n### Replace a piece of type\nWe can replace `needle` by any compatible type with `Replace`:\n```typescript\nimport { Replace } from 'type-lenses';\n\ntype YihaStack = Replace<FocusNeedle, Haystack, 'Yiha!'>;\n```\n```typescript\n// result:\nMap<string, {foo: [(f: (arg: string) => 'Yiha!') => void, 'bar'] }>\n```\n### Map over a type\nSimilarily to `Replace`, `Over` lets us replace `needle` with the result of applying it to a compatible ready-made or custom free type:\n\n```typescript\nimport { Over } from 'type-lenses';\n\ntype PromiseStack = Over<FocusNeedle, Haystack, free.Promise>;\n```\n```typescript\n// result:\nMap<string, {foo: [(f: (arg: string) => Promise<needle>) => void, 'bar'] }>\n```\n\n### Find and replace\n\n`FindReplace` removes the need to construct a path, as long as we know what `needle` to target:\n\n```typescript\nimport { FindReplace } from 'type-lenses';\n\ntype YihaStack = FindReplace<Haystack, needle, ['Yiha!']>;\n```\n```typescript\n// result:\nMap<string, {foo: [(f: (arg: string) => 'Yiha!') => void, 'bar'] }>\n```\n\nIt accepts a replace table if you need multiple well defined replacements:\n\n```typescript\nimport { $ReplaceTable } from 'type-lenses';\n\ntype Data = { a: Buffer, b: Buffer[] };\n\ntype Nested = FindReplace<Data, Buffer | Buffer[], $ReplaceTable<[\n    [Buffer[], { cells: number[][][] }],\n    [Buffer,   { cells: number[][] }]\n]>>;\n```\n\n```typescript\n// result:\n{ a: { cells: number[][] }, b: { cells: number[][][] }};\n```\n\nIt also accepts any other replace callback of type `Type<[Needle, Path?]>` if you need to run arbitrary logic:\n\n```typescript\n// any unary free type can work\ntype Foo = FindReplace<{ a: 1, b: 2 }, number, free.Promise>;\n\nimport { $ReplaceCallback } from 'type-lenses';\nimport { Optional, Last, A, B } from 'free-types';\n\n// or one of your design (don't freak out, see the doc)\ninterface $Callback extends $ReplaceCallback<number> {\n    type: this['prop'] extends 'a' ? Add<10, A<this>>\n        : this['prop'] extends 'b' ? Promise<A<this>>\n        : never\n    prop: Last<Optional<B, this>>\n}\n\ntype Bar = FindReplace<{ a: 1, b: 2 }, number, $Callback>;\n```\n```typescript\n// result:\ntype Foo = { a: Promise<1>, b: Promise<2> }\ntype Bar = { a: 11, b: Promise<2> }\n```\n\n`FindReplace` gives control over the search, the number of matches and the way they are replaced, with some limitations to keep in mind. Make sure to read the documentation.\n\n### Find paths\nWe can find paths with `FindPath` and `FindPaths`.\n\nThe former is guaranteed to return a single path pointing to `needle`, or `never`:\n\n```typescript\nimport { FindPath } from 'type-lenses';\n\ntype PathToNeedle = FindPath<Haystack, needle>;\n```\n```typescript\n// result:\n[free.Map, 1, \"foo\", 0, Param<0>, Output]\n```\n- `Param<0>` and `Output` are aliases for `a` and `r`;\n- `free.Map` is a built-in free type, but you can also register your own so they can be inferred (see [doc/$Type](#type));\n- The behaviour for singling out a match is documented in [doc/FindPath(s)](#findpaths).\n\nThe latter returns a tuple of every path leading to `needle`. If it is `self` (the default), it returns every possible path, which can be useful for exploring a type.\n```typescript\nimport { FindPaths } from 'type-lenses';\n\ntype EveryPath = FindPaths<Haystack>;\n```\n```typescript\n// result:\n[[free.Map],\n[free.Map, 0],\n[free.Map, 1],\n[free.Map, 1, \"foo\"],\n[free.Map, 1, \"foo\", 1],\n[free.Map, 1, \"foo\", 0],\n[free.Map, 1, \"foo\", 0, r],\n[free.Map, 1, \"foo\", 0, a],\n[free.Map, 1, \"foo\", 0, a, a],\n[free.Map, 1, \"foo\", 0, a, r]]\n```\n\n`FindPath(s)` give control over the search and the number of matches, with some limitations to keep in mind. Make sure to read the documentation.\n\n### Audit queries\n\nFinally, we can type check a query, for example in a function:\n\n```typescript\ndeclare const foo: <\n    const Path extends readonly string[] & Check,\n    Obj extends object,\n    Check = Audit<Path, Obj>\n>(path: Path, obj: Obj) => void;\n\nfoo(['q', 'b'], { a: { b: 42, c: 2001 }})\n//   ~~~ Type \"q\" is not assignable to type \"a\"\n```\nThis behaviour also enables reliable auto-completion:\n\n```typescript\nfoo([''], {a: { b: 42, c: 2001 }})\n//   -- suggest \"a\"\n\nfoo(['a', ''], {a: { b: 42, c: 2001 }})\n//        -- suggest \"b\" | \"c\"\n```\n# Documentation\n\n[Type Checking](#type-checking) | [Lens](#lens) | [Query](#Query) | [Type](#type) | [Get](#get) | [GetMulti](#getmulti) | [Replace](#replace) | [Over](#over) | [FindReplace](#findreplace) | [FindPath(s)](#findpaths) | [Audit](#audit) | [Free utils](#get-getmulti-replace-over)\n\n### Type checking\n\nThe library type checks your inputs in various ways, but these checks never involve the `Haystack`.\n\nThis is because the type checker fails to check generics, even with adequate type constraints. Since working with a generic `Haystack` is a very common use case for lenses, I chose to ignore this check for ease of use.\n\nIf you need to check your query, you can do so with a `Lens`.\n\n\n### `Lens`\n\n`Lens<Query, Model?>`\n\nYou can create a lens by passing a `Query` to `Lens`.\n\n```typescript\ntype A = Lens<1>;\ntype B = Lens<['a', 2, r]>;\n```\n\nUtils such as `Get` or `Replace` promote every `Query` to a `Lens`, but it is advised to work with lenses when you want to reuse or compose paths.\n\nComposing lenses is as simple as wrapping them in a new `Lens`:\n\n```typescript\ntype C = Lens<[A, B]> // Lens<[1, 'a', 2, r]>\n```\n\n`Lens` optionally takes a `Model` against which to perform type checking.\n\n```typescript\ntype Haystack = Map<string, {foo: [(f: (arg: string) => needle) => void, 'bar'] }>;\ntype FocusNeedle = Lens<[free.Map, 1, 'bar', 0, a, r], Haystack>;\n//                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n// Type '[$Map, 1, \"bar\", 0, a, Output]' does not satisfy the constraint '[$Map, 1, \"foo\", ...QueryItem[]]'.\n//  Type at position 2 in source is not compatible with type at position 2 in target.\n//    Type '\"bar\"' is not assignable to type '\"foo\"'\n```\n\n### Query\n\nA `Query` is a `Lens`, a `Path` or a `PathItem`\n\nA `Path` is a tuple of `PathItem`.\n\nPath items can be one of the following types: \n\n<table>\n<tr><th>type</th><th>description</th></tr>\n<tr>\n<td><code>Lens</code></td>\n<td>As we have already seen, nested lenses are flattened.</td>\n</tr>\n<tr>\n<td><code>Param<&#8288;index></code><br>or&nbsp;<code>a</code>,&nbsp;<code>b</code>,&nbsp;...<code>f</code></td>\n<td>Focuses on a parameter of a function.</td>\n</tr>\n<tr>\n<td><code>Output</code> or <code>r</code></td>\n<td><p>Focuses on the return type of a function.\n\n`r` can be an alias of `Output` but can also optionally take an argument: `r<a>` is equivalent to `Lens<[a, r]>`.</td>\n</tr>\n<tr>\n<td><code>string</code></td>\n<td>Focuses on the field of a given name in an object.</td>\n</tr>\n<tr>\n<td><code>number</code></td>\n<td>A literal index focuses on the item at that index in a tuple. The <code>number</code> type itself focuses on the element type of an array.</td>\n</tr>\n<tr>\n<td><code>self</code></td>\n<td>By default it refers to the haystack, but some utils enable providing a value for it.</td>\n</tr>\n<tr>\n<td><code>$Type</code></td>\n<td>Focuses on the arguments list of a type for which <code>$Type</code> is a free type constructor.</td>\n</tr>\n</table>\n\n### `$Type`\n\nIn a nutshell:\n\n```typescript\n// A class we want to reference in a path\nclass Foo<T extends number> {\n    constructor(private value: T) {}\n}\n```\n```bash\nnpm install free-types\n```\n```typescript\nimport { Type, A } from 'free-types'\n\n// A free type constructor for that class\ninterface $Foo extends Type<[A: number]> {\n    type: Foo<A<this>>\n}\n\n// Imagining a haystack where the needle is the first argument of Foo\ntype Haystack = Foo<needle>\n\n// Our path would look like this\ntype FocusNeedle = Lens<[$Foo, 0]>;\n\ntype Needle = Get<FocusNeedle, Haystack>; // needle\n```\n```typescript\n// We can also define a free utility type\ninterface $Exclaim extends Type<[string]> { type `${A<this>}!` }\n\ntype Exclamation = Over<['a'], { a: 'Hello' }, $Exclaim> // { a: \"Hello!\" }\n```\n\n`type-lenses` re-exports a [dozen](https://github.com/geoffreytools/free-types/blob/public/doc/Documentation.md#free) built-in free type constructors under the namespace `free`.\n\nIf you want `FindPaths` to be able to find your own free types, you must register them:\n\n```typescript\ndeclare module 'free-types' {\n    interface TypesMap { Foo: $Foo }\n}\n```\n\nSee [free-types](https://github.com/geoffreytools/free-types) for more information.\n\n\n## Querying and modifying types\n\n### `Get`\nReturn the queried piece of type or `never` if it is not found.\n\n#### Syntax\n`Get<Query, Haystack, Self>`\n\n|parameter| description|\n|-|-|\n|Query| a `Query`\n|Haystack| The type you want to extract a piece of type from\n|Self| A type which you want `self` to point to. It is `Haystack` by default\n\n### `GetMulti`\nThe same as `Get`, but takes a tuple of `Query` and returns a tuple of results.\n\n#### Syntax\n`GetMulti<Query[], Haystack, Self>`\n\n### `Replace`\n\nReplace the queried piece of type with a new value in the parent type, or return the parent type unchanged if the query is `never` or doesn't match anything.\n\n#### Syntax\n`Replace<Query, Haystack, Value, Constraint?>`\n\n|parameter| description|\n|-|-|\n|Query| a `Query`\n|Haystack| The type you want to modify\n|Value | Any type you want to replace the needle with\n|Constraint | A mean of turning off type checking in higher order scenarios\n\n#### Type checking\n`Value` is type checked against the `Query`:\n```typescript\ntype Failing = Replace<[free.WeakSet, 0], WeakSet<{ foo: number }>, number>\n//                      ---------------                             ~~~~~~\ntype Failing = Replace<[free.WeakSet], WeakSet<{ foo: number }>, [number]>\n//                      ------------                             ~~~~~~~~\n// Type 'number' does not satisfy the constraint 'object'\n```\n\nIf `Query` is generic, you will have to opt-out from type checking by setting `Constraint` to `any`:\n\n```typescript\ntype Generic<Q> = Replace<Q, WeakSet<{ foo: number }>, object, any>\n//                                                             ---\n```\n\n\n### `Over`\n\nMap over the parent type, replacing the queried piece of type with the result of applying it to the provided free type. Return the parent type unchanged if the query failed.\n\n#### Syntax\n`Over<Query, Haystack, $Type, Constraint?>`\n\n|parameter| description|\n|-|-|\n|Query| a `Query`\n|Haystack| The type you want to modify\n|$Type | A free type constructor\n|Constraint | A mean of turning off type checking in higher order scenarios\n\n#### Type checking\nThe return type of `$Type` is fully type checked against the `Query`, however its parameters are only checked loosely for relatedness, because they also depend on the `Haystack` which is purposely excluded from type checking:\n```typescript\ntype Failing = Over<[free.WeakSet, 0], WeakSet<{foo: number}>, $Next>\n//                                                             ~~~~~\n// Type '$Next' does not satisfy the constraint 'Type<[Unrelated<number, object>]>'\n\ntype NotFailing = Over<[free.Set, 0], Set<'hello'>, $Next>\n//           will blow up with no error   -------   -----\n```\n\nIf `Query` is generic, you will have to opt-out from type checking by setting `Constraint` to `any`:\n\n```typescript\ntype Generic<Q> = Over<Q, Set<1>, $Next, any>\n//                                       ---\n```\n### `FindReplace`\n\nFind a `Needle` in the parent type and replace matches with new values, or return the parent type unchanged if there is no match.\n\nThe search behaves like [`FindPaths`](#findpaths).\n\nIf there are more matches than you specified replace values, the last replace value is used to replace the supernumerary matches:\n\n```typescript\ntype WithValues = FindReplace<[1, 2, 3], number, [42, 2001]>;\n// type WithValues = [42, 2001, 2001]\n```\n\n> **Warning**\n> Do not expect object properties to be found and replaced in a specific order. If you need to find/replace multiple values in the same object, use a replace callback instead of a tuple of values.\n\n#### Syntax\n`FindReplace<Haystack, Needle, Values | $Type, From?, Limit?>`\n\n|parameter| description|\n|-|-|\n|Haystack| The type you want to modify\n|Needle| The piece of type you want to search\n|Values \\| $Type| A tuple of values to replace the matches with, or a replace callback\n|From| A path from which to start the search.\n|Limit| The maximum number of matches to find and replace\n\n#### Type checking\n\nIf you use a replace callback, its first parameter must extend your `Needle`.\n\n#### Replace table\n\n`$ReplaceTable` is a replace callback which maps each needle to its own replace value. It takes a tuple of `[needle, value]` entries:\n\n```typescript\nimport { $ReplaceTable } from 'type-lenses';\n\ntype Table = [\n    [Buffer[], { cells: number[][][] }],\n    [Buffer,   { cells: number[][] }]\n];\n\ntype Data = { a: Buffer, b: Buffer[] };\n\ntype Replaced = FindReplace<Data, Buffer | Buffer[], $ReplaceTable<Table>>;\n// type Replaced = { a: { cells: number[][] }, b: { cells: number[][][] } }\n```\n\nEntries are tried in order and the first needle matching the value at a given site wins, so an entry must precede any other entry it extends:\n\n```typescript\ntype Broad = $ReplaceTable<[[number, 'broad'], [1, 'narrow']]>;\ntype Narrow = $ReplaceTable<[[1, 'narrow'], [number, 'broad']]>;\n\ntype A = FindReplace<{ a: 1 }, number, Broad>;  // { a: 'broad' }\ntype B = FindReplace<{ a: 1 }, number, Narrow>; // { a: 'narrow' }\n```\n\nThe `Needle` is a separate parameter, so it must cover the same types as the table. Deriving it from the table keeps the two in agreement:\n\n```typescript\ntype Needles = Table[number][0]; // Buffer | Buffer[]\n\ntype Replaced = FindReplace<Data, Needles, $ReplaceTable<Table>>;\n```\n\n> **Warning**\n> A `Needle` matching more types than the table covers still replaces the surplus matches, because a replace callback is applied to every match the search returns.\n\n```typescript\ntype Table = [[number, 'hit']];\n\ntype Surprising = FindReplace<{ a: 'x' }, string | number, $ReplaceTable<Table>>;\n// type Surprising = { a: 'hit' }\n```\n\n#### Replace callback\n\nIf you want to define a custom replace callback, you can extend `$ReplaceCallback<T>` which is really `Type<[T, Path?]>` where `T` is your `Needle`: \n\n```typescript\nimport { $ReplaceCallback } from 'type-lenses';\nimport { Optional, Last, A, B } from 'free-types';\n\ninterface $Callback extends $ReplaceCallback<number> {\n    type: this['prop'] extends 'a' ? Add<10, A<this>>\n        : this['prop'] extends 'b' ? Promise<A<this>>\n        : never\n    prop: Last<Optional<B, this>>\n}\n\ntype WithCallback = FindReplace<{ a: 1, b: 2 }, number, $Callback>;\n// type WithCallback = { a: 11, b: Promise<2> }\n```\n\nThe types `Optional`, `A` and `B` let you safely index `this` to extract the arguments passed to `$Callback`, while defusing type constraints.\n\n- `Add` expects a `number`, which is satisfied by `A<this>`;\n- `Last` expects a tuple, which is satisfied by `Optional<B, this>`.\n\nMore information about these helpers in free-types' [guide](https://github.com/geoffreytools/free-types/blob/public/doc/Guide.md#helpers).\n\nHere I also created a `prop` field for clarity, using `Last` to select the last `PathItem` in the `Path`.\n\n### `FindPath(s)`\n\n`FindPath` is literally defined like so:\n\n```typescript\ntype FindPath<T, Needle, From extends Path = []> =\n    Extract<FindPaths<T, Needle, From, 1>[0], [any, ...any[]]>;\n```\n\n\n`FindPaths` returns a tuple of every path leading to the `Needle`, or every possible path when `Needle` is `self` (the default).\n\nThe search results are ordered according to the following rules, ranked by precedence:\n\n1) Matches closer to the root are listed first (breadth-first search);\n1) Matches honour the ordering of tuples and function arguments lists;\n1) Matches **do not** honour the ordering of object properties;\n1) In function signatures, matched parameters are listed before any matched return type;\n1) the needles `any`, `never` and `unknown` match `any`, `never` and `unknown` respectively (use `self` to  match every path);\n1) When the needle is `self`, the ordering of paths which do not lead to a `BaseType` (a leaf) is unspecified.\n\n```typescript\ntype BaseType = string | number | boolean | symbol | undefined | void;\n```\n\n#### Syntax\n`FindPaths<T, Needle?, From?, Limit?>`\n\n|parameter| description|\n|-|-|\n|T| The type you want to probe\n|Needle| The piece of type you want selected paths to point to. It defaults to `self`, which selects every possible path.\n|From| A path from which to start the search.\n|Limit| The maximum number of matches to return\n\n#### From\n\n`From` enables you to specify which path should be searched for potential matches. It can be used for disambiguation or to improve performance:\n\n```typescript\ntype PathsSubset = FindPaths<{ a: [1], b: [2] }, number, ['b']>\n// type PathsSubset = [['b', 0]]\n```\n\n#### Limit\n\n`Limit` enables you to ignore matches which are of no interest to you. It also improves performance:\n\n```typescript\n//     provide an empty `From` to access this parameter  vv\ntype PathsSubset = FindPaths<{ a: [1], b: [2] }, number, [], 1>\n// type PathsSubset = [['a', 0]]\n```\n\n### `Audit`\n\n`Audit` is the type being used internally to type check `Lens`, but it can be used with functions as well.\n\nIt returns a `Suggestion` which is a type related to a `Query` that can contain unions and be open-ended:\n\n```typescript\ntype Suggestion = Audit<['q', 'b'], { a: { b: number, c: number }}>;\n// type Suggestion: ['a', ...QueryItem[]]\n\ntype Suggestion = Audit<['a', 'd'], { a: { b: number, c: number }}>;\n// type Suggestion: ['a', 'b' | 'c']\n```\n\nSuccess is represented either by `QueryItem`, `QueryItem[]` or `readonly QueryItem[]` depending on your input. You should not need to check for success, but if you do, consider using the companion type `Successful` which returns a boolean:\n\n```typescript\ntype OK = Successful<Audit<['a', 'b'], { a: { b: number, c: number }}>>;\n// type OK: true\n```\n\n#### Syntax\n`Audit<Query, Model>`\n\n|parameter| description|\n|-|-|\n|Query| The `Query` you want to type check\n|Model| The type that should to be traversable by the `Query`\n\n#### Generic Query\n\nBe mindful that type-checking the query will make your function unusable in higher order scenarios.\n\n```typescript\ndeclare const foo: <\n    const Path extends readonly string[] & Check,\n    Obj extends object,\n    Check = Audit<Path, Obj>\n>(path: Path, obj: Obj) => void;\n\nconst bar = <\n    const Path extends readonly string[],\n    Obj extends object\n>(path: Path, obj: Obj) => foo(path, obj)\n//              cryptic error  ~~~~\n```\nAn obvious workaround is to check the input in `bar` and pass the check to `foo` as a type parameter:\n```typescript\nconst bar = <\n    const Path extends readonly string[] & Check,\n    Obj extends object,\n    Check = Audit<Path, Obj>\n>(path: Path, obj: Obj) =>\n    foo<Path, Obj, Check>(path, obj)\n```\n\nAlternatively, you could make type checking optional:\n```typescript\n/** pass `any` to `_` in order to disable type-checking*/\ndeclare const foo: <\n    const Path extends readonly string[] & Check,\n    Obj extends object,\n    Check = Audit<Path, Obj>\n>(path: Path, obj: Obj, _?: Check) => void;\n//                      ---------\n\nconst bar = (path: readonly string[], obj: object) =>\n    foo(path, { a: { b: null }}, null as any)\n//                               -----------\n```\n### `$Get`, `$GetMulti`, `$Replace`, `$Over`\nFree versions of `Get`, `GetMulti`, `Replace` and `Over`.\n\nCan be used like so:\n```typescript\nimport { apply } from 'free-types';\n\ntype $NeedleSelector = $Get<Query>\ntype Needle = apply<$NeedleSelector, [Haystack]>;\n```\n","readmeFilename":"README.md"}