{"_id":"monocle-ts","_rev":"64-9f83257709d7b54c3aa4209c9fc0a5fc","name":"monocle-ts","description":"A porting of scala monocle library to TypeScript","dist-tags":{"latest":"2.3.13","next":"2.3.9"},"versions":{"0.0.1":{"name":"monocle-ts","version":"0.0.1","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"test":"mocha -r ts-node/register test/*.ts","build":"rm -rf lib/* && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","fp-ts":"^0.0.1","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional programming","optics","lens"],"keywords":["typescript","functional programming","optics","lens"],"gitHead":"f397add9d474d7cc5ebb599345b960a7d4120145","_id":"monocle-ts@0.0.1","_shasum":"2d0edd13dfe1f10e2685ecc741f2e62ff564218c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"2d0edd13dfe1f10e2685ecc741f2e62ff564218c","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.0.1.tgz","integrity":"sha512-ihokscgkzFa1iOiQEkYDRNv7CxN9u43JN5YDhReiBjTfMO4mkLrOBw7fDL4U7aN94rhpi/+VDF1jBLjqBcgPbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwO5r95bWhtkHZNgHUCkD6dF0enEbFcKJUYUYqErp51AiEAmkineyvHTM5fO4qJdG6nZsva3uv/yGqoSiRjQe5ODpQ="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/monocle-ts-0.0.1.tgz_1487270962684_0.34675993490964174"},"directories":{}},"0.0.2":{"name":"monocle-ts","version":"0.0.2","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"test":"mocha -r ts-node/register test/*.ts","build":"rm -rf lib/* && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.0.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional programming","optics","lens"],"keywords":["typescript","functional programming","optics","lens"],"gitHead":"0732b9d22fe778d44939daf31c49240f5e8e1d6a","_id":"monocle-ts@0.0.2","_shasum":"299eaf6f99b19bd4e539f5f134d605670b57f9f8","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"299eaf6f99b19bd4e539f5f134d605670b57f9f8","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.0.2.tgz","integrity":"sha512-zftWU4fsSmrWTunpCxIZOH4Um1L6s3WH2CAXIm2JOJXoxofn75tsCA3loXF5SGLWEU40hUeFyaeLOUynuXfQbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzDhSAvxmYi/HxQrbaCYviIyBsg9cOT6nkOVIF7IgAZgIgK8FPglI0Kn4ZMLWTIM/4tKUk4rnLeyWVcElSbFDMaKw="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monocle-ts-0.0.2.tgz_1487271234445_0.6753756618127227"},"directories":{}},"0.0.3":{"name":"monocle-ts","version":"0.0.3","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"test":"mocha -r ts-node/register test/*.ts","build":"rm -rf lib/* && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.1.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional-programming","optics","lens"],"keywords":["typescript","functional-programming","optics","lens"],"gitHead":"d56fce692647fc56307330649bdc67e45a13ff50","_id":"monocle-ts@0.0.3","_shasum":"d2b66ce8430b7ee9c01231456d19295d62824979","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"d2b66ce8430b7ee9c01231456d19295d62824979","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.0.3.tgz","integrity":"sha512-it0MXqmvqQfgXKvMftdBIzFpvX3djnOJnmryHP1n7fTISutsf4nuJ91WiMBfiI5LHHTIBmMtwN4pv+C9bOMDfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUtLu3vMymTWdPh42DRBg7TT2l0veXISu0qklYsU+2kAiEA2Se+/Uikte9UOCzJGgHamqcAOz1Ou5lQKeB15xRvftY="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/monocle-ts-0.0.3.tgz_1489821195448_0.4462571241892874"},"directories":{}},"0.0.4":{"name":"monocle-ts","version":"0.0.4","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"test":"mocha -r ts-node/register test/*.ts","build":"rm -rf lib/* && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.1.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional-programming","optics","lens"],"keywords":["typescript","functional-programming","optics","lens"],"gitHead":"3741818a3fbabfe9fc12381c3981aad7e4efc063","_id":"monocle-ts@0.0.4","_shasum":"e12807d217b03e3b7fa128695574481f2bf19680","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"e12807d217b03e3b7fa128695574481f2bf19680","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.0.4.tgz","integrity":"sha512-0NX2ohbOFNVKqE/DvM2lptbEesvMLVUPQ+UeGRyRj9Ppb1hao6tje+xGIvp5DCMu/vZQEYAu0nso7Ugad57s9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTT7S4Wfgj062baA7/v2K3vFFhR0dg1IwiNKSRG6hCWwIgMo4r9pXpb+M6xYnbz5PVcE3trdVmfDxO8wTzFFsePe8="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/monocle-ts-0.0.4.tgz_1490349682253_0.5190636413171887"},"directories":{}},"0.1.0":{"name":"monocle-ts","version":"0.1.0","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"test":"mocha -r ts-node/register test/*.ts","clean":"rm -rf lib/* && rm -rf lib-jsnext/*","build":"npm run clean && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.2.0"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional-programming","optics","lens"],"keywords":["typescript","functional-programming","optics","lens"],"gitHead":"b8e05f43440557c6ccdbe5f66be701be477ccd0a","_id":"monocle-ts@0.1.0","_shasum":"814618e2b92ff60b32ac95f5e617d5ab20ccfb2b","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"814618e2b92ff60b32ac95f5e617d5ab20ccfb2b","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.1.0.tgz","integrity":"sha512-psHDd5rKCI0g9dfkblH9q/O5UU9Ne2Dp9VZ4KHJII07J0PFjTWkT4Gu9c57nwyOCN+uwxKJoeEGbro0jSIy/Tg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTgV3JQEZQi10Q0OQ/ni02ueeeY5N/hQQAkO22rqYsrwIgFaP5E4QvEJ/u+hK7x6mp0+SKW6rn6tv4/jbC6YgIdyo="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/monocle-ts-0.1.0.tgz_1490981238086_0.8882155842147768"},"directories":{}},"0.1.1":{"name":"monocle-ts","version":"0.1.1","description":"A porting of scala monocle library to TypeScript","files":["lib","lib-jsnext"],"main":"lib/index.js","jsnext:main":"lib-jsnext/index.js","typings":"lib/index.d.ts","scripts":{"mocha":"mocha -r ts-node/register test/*.ts","test":"npm run mocha","clean":"rm -rf lib/* && rm -rf lib-jsnext/*","build":"npm run clean && tsc && tsc -m es6 --outDir lib-jsnext"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.2.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional-programming","optics","lens"],"keywords":["typescript","functional-programming","optics","lens"],"gitHead":"d1e281c4c677c088281e8add56360e9adf58a63a","_id":"monocle-ts@0.1.1","_shasum":"44b3e4b18af71165fd9fb0ae3d2c73b967f64ab2","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"44b3e4b18af71165fd9fb0ae3d2c73b967f64ab2","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.1.1.tgz","integrity":"sha512-eIha/RFIJ0X2/kH5uqoDKMBoUaazLPU5vlMhI+e6qHQnlvNUoANMJJ/N6F4uelyYxh5W8v4mR2jWaq24+2e3xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyJB6v5w+2v0vWPUivC1E6yTh6Uqsp45+R4LhuVGACIgIhAKYW1SFFpGEeGMYg+/zK2sBz8TvLNTFySQhAtAz8sMKz"}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/monocle-ts-0.1.1.tgz_1491752007066_0.47538533294573426"},"directories":{}},"0.2.0":{"name":"monocle-ts","version":"0.2.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"mocha":"mocha -r ts-node/register test/*.ts","test":"npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.3.0"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","ts-node":"^2.0.0","typescript":"^2.2.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"a868c4a1994ec4e458b96eb6d72721b6ce61b426","_id":"monocle-ts@0.2.0","_shasum":"426d8e51146771264a6b8f7b6cc04bf02729a16c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"5.5.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"shasum":"426d8e51146771264a6b8f7b6cc04bf02729a16c","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.2.0.tgz","integrity":"sha512-gD4yYLWJsJMc7TttzWSOnbfMzs2+61l/kzJCVyggabIU6QdWgVfTrhfPMQlvwmFr0BzUiiBnzf5KtBZKn4Hcpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXGNWkyReQhR3WDxLGnrshaWw4hMRlZcw0wyMODLe7YwIgKrK0QnIT4fJ286OfNeEE+P1cxkohh7RFQ/7eXKdV44A="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.2.0.tgz_1496332300153_0.9515211733523756"},"directories":{}},"0.3.0":{"name":"monocle-ts","version":"0.3.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.4.0"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"c3a04979ba6b017ce9faa9a832c6de2dde5158c0","_id":"monocle-ts@0.3.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"integrity":"sha512-4yHTnTqDpCPZ2Tqz6bfm5fTcm6xETJunWVNJDI3JUjfpb+Zc8M5RFQZBxhXhZb2ttgoxBQc4SuZzldL6BHryZw==","shasum":"e8ce98769606db96ae746b00425b70c7312c251b","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGXrZC4JhVKm7u6PdBejFipAkdGhinQjm/S9gS1YhVHYAiAyMC5tCYRzyor1FaTpqyTYwCEU7C5kZU4sIo59SG6ysg=="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.3.0.tgz_1499682220393_0.5382092560175806"},"directories":{}},"0.3.1":{"name":"monocle-ts","version":"0.3.1","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,exercises}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.4.0"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"03f6e5fc9b81434079db3ef88dabc05d57f904de","_id":"monocle-ts@0.3.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"integrity":"sha512-DhuN89LB9qcVJmENAt3HkD3rWHDrFSJzMxM6sY9qJEX1OxBYxzU76urP8VwmkPBYqmPW8/8pK0BNXzNMduJmNA==","shasum":"054eaddcf4821fecc7a05d6bbf4ca6a594d00d40","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.3.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVUpVYwwhVeQ/IQ6y3iMQ1TfD876XfUzOBkmsyCr5TfgIhAK5Y3pNfIxUj9bykyX852GXkjhXtbsDniBR7HSN65pHe"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.3.1.tgz_1500616874776_0.5866695558652282"},"directories":{}},"0.3.2":{"name":"monocle-ts","version":"0.3.2","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,exercises}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.4.3"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"ece5950da131c03fd55d28878a98153a03f7f049","_id":"monocle-ts@0.3.2","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"dist":{"integrity":"sha512-VBMM2IXTDcWiVJ9QeFF00j8Rs7+pBZFlQNACbxkTD2YIfRqqARSxzvhqh0p1hGA0hblKJ4cCTBwOixllebXuQg==","shasum":"c601b05d51f0ddef9d9b2961bcc615da1790f9c0","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.3.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfICVspnKsU11/ODiclJ9AzdMbkFq0y7navgAlXS3uxwIgajBVZhk8A3Gp0E9B/MOSAF59JP89wKaQXfbyGdTGn5c="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.3.2.tgz_1501244389703_0.9125813473947346"},"directories":{}},"0.4.0":{"name":"monocle-ts","version":"0.4.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,exercises}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.5.0"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"691f0de27181f21c9cc91c2d9f32ad7553277ecc","_id":"monocle-ts@0.4.0","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-G9TD+mPWoCFWT3uvV/EAcjUySz5P3MZCzFkMjx+Spi6A2vTmpdLL5rYaawNaX+9RU42t1YJ7/f+xeEvGK1i8Mw==","shasum":"90d33ff7d51e77182a6b6bbf9dbca991410ebdf6","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.4.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDROfE2tuspcJ2RZ9dL+/0UTzKm5Md2053KjfpP976+qQIgHwFL0qeQHpjtnXtbsisC4u7w3sVV+X4980FPTVSiDiI="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.4.0.tgz_1503483299733_0.09471083013340831"},"directories":{}},"0.4.1":{"name":"monocle-ts","version":"0.4.1","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,exercises}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.5.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"a104e543ea5c7fcc6ae1e7ccc7c57280551b2542","_id":"monocle-ts@0.4.1","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-pzBi1oAsve99VRU+fXSGVRfQlQzsjNdHbbK/S3ddaRoM2TwPm0w07PCEiYLVfDh6ShsdvuoxBHvKibM95Q43hw==","shasum":"adf90bf0c5ea89d51c1dc898447963d52b2804e7","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.4.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHs/BqSZQGpOckBbt2ESAxf+V5DlT7fYYu6kFqMR1FC4AiEA6YFznpfbvTkLJPzbUfAL0fmr1qH66fNcviU8karJRa0="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.4.1.tgz_1504283796610_0.15999509347602725"},"directories":{}},"0.4.2":{"name":"monocle-ts","version":"0.4.2","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,exercises}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.5.1"},"devDependencies":{"@types/mocha":"^2.2.38","@types/node":"^7.0.4","mocha":"^3.2.0","prettier":"1.5.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.4.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"38bfe4d364e021440ba33e3a9eb41d4a0d86612f","_id":"monocle-ts@0.4.2","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-VwQViEIsQzRlukIu0dIgiyLImthgmrNR7dabfsgswHRx3JqVniXFx2917iyjjuH+m+NlcFGhYE87J6GqOFugfQ==","shasum":"aa71c6312916f8058938a6aaa10c047475440330","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8x499E6DAmilfniFVuK5hIomcX6mly9zpvTwatm3MkgIhAKCx7/jqnx4orZoOQgMjnaQyUR09TWEssQns7i2tqVt+"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.4.2.tgz_1505974768677_0.6343562095426023"},"directories":{}},"0.4.3":{"name":"monocle-ts","version":"0.4.3","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc","doctoc":"doctoc README.md"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.5.1"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.7.0","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.5.2","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"79dceb010d9cf578627e65101f704e73657e5f63","_id":"monocle-ts@0.4.3","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-Hsinmj0vac9RqilipN5ND+BAalkt5FKeJVwTUp3iK+PR21oupEZ1xQxeDKgDv3WZTBtEnokelF87B/ikemrY1Q==","shasum":"513a3953bd3155a6d9d961f70fdf689c5e4993d5","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.4.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvTWHU71QOQoAz6WUycgGcjCrP+HxdOQgvsFMPWrJMaAIgOuWwTQoEyTzy9624J+Rgn+L5aYX2tK/6OA9IPmQDdo8="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.4.3.tgz_1507719107924_0.06657793652266264"},"directories":{}},"0.4.4":{"name":"monocle-ts","version":"0.4.4","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc","doctoc":"doctoc README.md"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.5.1"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.7.0","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.5.2","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"f38da631c50fbb6f6fe8baf2d48e7f5773b31548","_id":"monocle-ts@0.4.4","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-BXRvvLKnXSH/qPgdnQtkNx3YqV44/1Lcs2eR+vbSdB3nuz2OBjwOPb5Axny4Shg1Rl6JdLvUNqa3KZmG0aV5Lw==","shasum":"85d3be11142eb6e06bbaddec28d7a0076d6071a1","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.4.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjYZgLXk4PwhmHFmW0Zp8K4ZJkgVNssfI2JuYswNq9JAIgUcezzeItsl3h9iVkfy1iT4ysmaTrQnA5wKoZOOrNp0I="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.4.4.tgz_1508410942121_0.31274549500085413"},"directories":{}},"0.5.0":{"name":"monocle-ts","version":"0.5.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc","doctoc":"doctoc README.md"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.6.0"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.7.0","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.6.0-rc","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"e4766cda511a12d620a9750c007c661232d2d266","_id":"monocle-ts@0.5.0","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-KLmGqx9pLCXcJPUg6rdlYwUokjBfxU4MSy/fhZJUYA9CWqgxDTvcucejR+p+Vw48yYHNeI3cFAdi8iL/0zKDWg==","shasum":"05e6f419a14092554a1f1bcda12c4225303454a8","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.5.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHm9/SPLMLwMimjxx8T+NaUJtiBSsSodau6ze3C1HIpeAiEAveggwMXKsYhZOvf9P4IrULyES852POgQlbkfgsDChM0="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.5.0.tgz_1508858941476_0.06575811700895429"},"directories":{}},"0.5.1-dev.20171122":{"name":"monocle-ts","version":"0.5.1-dev.20171122","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","flow-copy-definition-files":"cp src/*.js.flow lib","flow-test":"flow status","flow-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser flow --write \"{src,test,examples,exercises}/**/*.js.flow\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc && npm run flow-copy-definition-files","doctoc":"doctoc README.md"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"0.6.4-dev.20171122"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.8.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.6.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"6f5d9c54555cc42842b5c705bd619fe3f98c209c","_id":"monocle-ts@0.5.1-dev.20171122","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-bHpW2bnOaa95jbVf/yNvRYqeAM7KNMPoiZ6zB9YyFi0A01jxTw7voNEMAP9dbxyIxYUo3SlBm8YEvA2lKh2j3g==","shasum":"fca12c86ce58f9ef3e4cd3742338f094245f496c","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.5.1-dev.20171122.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUw7tAORZ40VZEildqSa4LopFjrHQ1r0QH6dLnzkM9PwIhALfPrMzETDAudcZr3uD3Y8sK5RRvoad/t7n0g4nxpNoR"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.5.1-dev.20171122.tgz_1511344240425_0.05984634696505964"},"directories":{}},"0.5.1":{"name":"monocle-ts","version":"0.5.1","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","flow-copy-definition-files":"cp src/*.js.flow lib","flow-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser flow --write \"{src,test,examples,exercises}/**/*.js.flow\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc && npm run flow-copy-definition-files","doctoc":"doctoc README.md"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.6.4"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.8.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.6.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"754d96f8e534f76cc633aa89964afca31c15de20","_id":"monocle-ts@0.5.1","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-X2EgqLFh7XOwnvdcsnIO9Py/BcBzgSGEIvfs+r0r6Im692MsFxKdVSSxfiID33bzvFpi5wI38GSE70fp9CYftQ==","shasum":"01f83f6dbae173c82ef1aaf9440d48b23212c3d7","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.5.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKrEWnFcCUURj34UaTmLMGtLJwBP/pUCBMz/HDuCG48AIhALTPDmUSPbjeEJ6jNUumSqlO0UlBx6eDlZXrkwux6rK+"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.5.1.tgz_1511776829771_0.9252332802861929"},"directories":{}},"0.5.2":{"name":"monocle-ts","version":"0.5.2","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","flow-copy-definition-files":"cp src/*.js.flow lib","flow-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser flow --write \"{src,test,examples,exercises}/**/*.js.flow\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc && npm run flow-copy-definition-files","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^0.6.4"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.8.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"2.6.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"d1ebe6bc3b8f1ef846ef04cbef3180675369cefb","_id":"monocle-ts@0.5.2","_npmVersion":"5.3.0","_nodeVersion":"8.1.2","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-Ba4GbxKw1MiBTbGKzKT6e5XaeegGRUnZP6HuRiAQ/ne8az/bGVCJmRjeTCoVCamJQvY37uSauAJ/d11coH6Raw==","shasum":"9a1cc719872c9792eee4366527582805d242e016","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.5.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGtKA1coaKCitBgvsJwy02tuxGsumdpuHQhQr4fhufs1AiAb8uzR+VB73GCU5P5P66SHqQoOCyEoue3lgdwmvfScZg=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts-0.5.2.tgz_1512053728713_0.853015101281926"},"directories":{}},"0.5.3-rc":{"name":"monocle-ts","version":"0.5.3-rc","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","flow-copy-definition-files":"cp src/*.js.flow lib","flow-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser flow --write \"{src,test,examples,exercises}/**/*.js.flow\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc && npm run flow-copy-definition-files","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0-rc"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.8.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"^2.7.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"readme":"# Motivation\n\n(Adapted from [monocle site](http://julien-truffaut.github.io/Monocle/))\n\nModifying immutable nested object in JavaScript is verbose which makes code difficult to understand and reason about.\n\nLet's have a look at some examples:\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n```\n\nLet’s say we have an employee and we need to upper case the first character of his company street name. Here is how we\ncould write it in vanilla JavaScript\n\n```ts\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employee2 = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n```\n\nAs we can see copy is not convenient to update nested objects because we need to repeat ourselves. Let's see what could\nwe do with `monocle-ts`\n\n```ts\nimport { Lens, Optional } from 'monocle-ts'\n\nconst company = Lens.fromProp<Employee, 'company'>('company')\nconst address = Lens.fromProp<Company, 'address'>('address')\nconst street = Lens.fromProp<Address, 'street'>('street')\nconst name = Lens.fromProp<Street, 'name'>('name')\n\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n```\n\n`compose` takes two `Lenses`, one from `A` to `B` and another one from `B` to `C` and creates a third `Lens` from `A` to\n`C`. Therefore, after composing `company`, `address`, `street` and `name`, we obtain a `Lens` from `Employee` to\n`string` (the street name). Now we can use this `Lens` issued from the composition to modify the street name using the\nfunction `capitalize`\n\n```ts\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n  .modify(capitalize)(employee)\n```\n\nHere `modify` lift a function `string => string` to a function `Employee => Employee`. It works but it would be clearer\nif we could zoom into the first character of a `string` with a `Lens`. However, we cannot write such a `Lens` because\n`Lenses` require the field they are directed at to be _mandatory_. In our case the first character of a `string` is\noptional as a `string` can be empty. So we need another abstraction that would be a sort of partial Lens, in\n`monocle-ts` it is called an `Optional`.\n\n```ts\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetter = new Optional<string, string>(s => (s.length > 0 ? some(s[0]) : none), a => s => a + s.substring(1))\n\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n  .asOptional()\n  .compose(firstLetter)\n  .modify(s => s.toUpperCase())(employee)\n```\n\nSimilarly to `compose` for lenses, `compose` for optionals takes two `Optionals`, one from `A` to `B` and another from\n`B` to `C` and creates a third `Optional` from `A` to `C`. All `Lenses` can be seen as `Optionals` where the optional\nelement to zoom into is always present, hence composing an `Optional` and a `Lens` always produces an `Optional`.\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n* [Iso](#iso)\n  * [Methods](#methods)\n    * [unwrap](#unwrap)\n    * [to](#to)\n    * [wrap](#wrap)\n    * [from](#from)\n    * [reverse](#reverse)\n    * [modify](#modify)\n    * [asLens](#aslens)\n    * [asPrism](#asprism)\n    * [asOptional](#asoptional)\n    * [asTraversal](#astraversal)\n    * [asFold](#asfold)\n    * [asGetter](#asgetter)\n    * [asSetter](#assetter)\n    * [compose](#compose)\n    * [composeLens](#composelens)\n    * [composePrism](#composeprism)\n    * [composeOptional](#composeoptional)\n    * [composeTraversal](#composetraversal)\n    * [composeFold](#composefold)\n    * [composeGetter](#composegetter)\n    * [composeSetter](#composesetter)\n* [Lens](#lens)\n  * [fromPath](#frompath)\n  * [fromProp](#fromprop)\n  * [fromNullableProp](#fromnullableprop)\n  * [Methods](#methods-1)\n    * [modify](#modify-1)\n    * [asOptional](#asoptional-1)\n    * [asTraversal](#astraversal-1)\n    * [asSetter](#assetter-1)\n    * [asGetter](#asgetter-1)\n    * [asFold](#asfold-1)\n    * [compose](#compose-1)\n    * [composeGetter](#composegetter-1)\n    * [composeFold](#composefold-1)\n    * [composeOptional](#composeoptional-1)\n    * [composeTraversal](#composetraversal-1)\n    * [composeSetter](#composesetter-1)\n    * [composeIso](#composeiso)\n    * [composePrism](#composeprism-1)\n* [Prism](#prism)\n  * [fromPredicate](#frompredicate)\n  * [some](#some)\n  * [Methods](#methods-2)\n    * [modify](#modify-2)\n    * [modifyOption](#modifyoption)\n    * [set](#set)\n    * [asOptional](#asoptional-2)\n    * [asTraversal](#astraversal-2)\n    * [asSetter](#assetter-2)\n    * [asFold](#asfold-2)\n    * [compose](#compose-2)\n    * [composeOptional](#composeoptional-2)\n    * [composeTraversal](#composetraversal-2)\n    * [composeFold](#composefold-2)\n    * [composeSetter](#composesetter-2)\n    * [composeIso](#composeiso-1)\n    * [composeLens](#composelens-1)\n    * [composeGetter](#composegetter-2)\n* [Optional](#optional)\n  * [fromNullableProp](#fromnullableprop-1)\n  * [Methods](#methods-3)\n    * [modify](#modify-3)\n    * [modifyOption](#modifyoption-1)\n    * [asTraversal](#astraversal-3)\n    * [asFold](#asfold-3)\n    * [asSetter](#assetter-3)\n    * [compose](#compose-3)\n    * [composeTraversal](#composetraversal-3)\n    * [composeFold](#composefold-3)\n    * [composeSetter](#composesetter-3)\n    * [composeLens](#composelens-2)\n    * [composePrism](#composeprism-2)\n    * [composeIso](#composeiso-2)\n    * [composeGetter](#composegetter-3)\n* [Traversal](#traversal)\n  * [Methods](#methods-4)\n    * [modify](#modify-4)\n    * [set](#set-1)\n    * [asFold](#asfold-4)\n    * [asSetter](#assetter-4)\n    * [compose](#compose-4)\n    * [composeFold](#composefold-4)\n    * [composeSetter](#composesetter-4)\n    * [composeOptional](#composeoptional-3)\n    * [composeLens](#composelens-3)\n    * [composePrism](#composeprism-3)\n    * [composeIso](#composeiso-3)\n    * [composeGetter](#composegetter-4)\n* [Getter](#getter)\n  * [Methods](#methods-5)\n    * [asFold](#asfold-5)\n    * [compose](#compose-5)\n    * [composeFold](#composefold-5)\n    * [composeLens](#composelens-4)\n    * [composeIso](#composeiso-4)\n    * [composeTraversal](#composetraversal-4)\n    * [composeOptional](#composeoptional-4)\n    * [composePrism](#composeprism-4)\n* [Fold](#fold)\n  * [Methods](#methods-6)\n    * [compose](#compose-6)\n    * [composeGetter](#composegetter-5)\n    * [composeTraversal](#composetraversal-5)\n    * [composeOptional](#composeoptional-5)\n    * [composeLens](#composelens-5)\n    * [composePrism](#composeprism-5)\n    * [composeIso](#composeiso-5)\n    * [find](#find)\n    * [headOption](#headoption)\n    * [getAll](#getall)\n    * [exist](#exist)\n    * [all](#all)\n* [Setter](#setter)\n  * [Methods](#methods-7)\n    * [set](#set-2)\n    * [compose](#compose-7)\n    * [composeTraversal](#composetraversal-6)\n    * [composeOptional](#composeoptional-6)\n    * [composeLens](#composelens-6)\n    * [composePrism](#composeprism-6)\n    * [composeIso](#composeiso-6)\n* [fromTraversable](#fromtraversable)\n* [fromFoldable](#fromfoldable)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n# Iso\n\n```ts\nclass Iso<S, A> {\n  constructor(readonly get: (s: S) => A, readonly reverseGet: (a: A) => S)\n}\n```\n\n## Methods\n\n### unwrap\n\n```ts\n;(s: S) => A\n```\n\nAlias of `get`\n\n### to\n\n```ts\n;(s: S) => A\n```\n\nAlias of `get`\n\n### wrap\n\n```ts\n;(a: A) => S\n```\n\nAlias of `reverseGet`\n\n### from\n\n```ts\n;(a: A) => S\n```\n\nAlias of `reverseGet`\n\n### reverse\n\n```ts\n(): Iso<A, S>\n```\n\nreverse the `Iso`: the source becomes the target and the target becomes the source\n\n### modify\n\n```ts\n(f: (a: A) => A): (s: S) => S\n```\n\n### asLens\n\n```ts\n(): Lens<S, A>\n```\n\nview an Iso as a Lens\n\n### asPrism\n\n```ts\n(): Prism<S, A>\n```\n\nview an Iso as a Prism\n\n### asOptional\n\n```ts\n(): Optional<S, A>\n```\n\nview an Iso as a Optional\n\n### asTraversal\n\n```ts\n(): Traversal<S, A>\n```\n\nview an Iso as a Traversal\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview an Iso as a Fold\n\n### asGetter\n\n```ts\n(): Getter<S, A>\n```\n\nview an Iso as a Getter\n\n### asSetter\n\n```ts\n(): Setter<S, A>\n```\n\nview an Iso as a Setter\n\n### compose\n\n```ts\n<B>(ab: Iso<A, B>): Iso<S, B>\n```\n\ncompose an Iso with an Iso\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Lens<S, B>\n```\n\ncompose an Iso with a Lens\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Prism<S, B>\n```\n\ncompose an Iso with a Prism\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Optional<S, B>\n```\n\ncompose an Iso with an Optional\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Traversal<S, B>\n```\n\ncompose an Iso with a Traversal\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose an Iso with a Fold\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Getter<S, B>\n```\n\ncompose an Iso with a Getter\n\n### composeSetter\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose an Iso with a Setter\n\n# Lens\n\n```ts\nclass Lens<S, A> {\n  constructor(readonly get: (s: S) => A, readonly set: (a: A) => (s: S) => S)\n}\n```\n\n## fromPath\n\n```ts\n// other 9 overloadings\n<T, K1 extends keyof T>(path: [K1]): Lens<T, T[K1]>\n```\n\nExample\n\n```ts\ntype Person = {\n  name: string\n  age: number\n  address: {\n    city: string\n  }\n}\n\nconst city = Lens.fromPath<Person, 'address', 'city'>(['address', 'city'])\n\nconst person: Person = { name: 'Giulio', age: 43, address: { city: 'Milan' } }\n\nconsole.log(city.get(person)) // Milan\nconsole.log(city.set('London')(person)) // { name: 'Giulio', age: 43, address: { city: 'London' } }\n```\n\n## fromProp\n\n```ts\n<T, P extends keyof T>(prop: P): Lens<T, T[P]>\n```\n\ngenerate a lens from a type and a prop\n\nExample\n\n```ts\ntype Person = {\n  name: string\n  age: number\n}\n\nconst age = Lens.fromProp<Person, 'age'>('age')\n\nconst person: Person = { name: 'Giulio', age: 43 }\n\nconsole.log(age.get(person)) // 43\nconsole.log(age.set(44)(person)) // { name: 'Giulio', age: 44 }\n```\n\n## fromNullableProp\n\n```ts\n<S, A extends S[K], K extends keyof S>(k: K, defaultValue: A): Lens<S, A>\n```\n\ngenerate a lens from a type and a prop whose type is nullable\n\nExample\n\n```ts\ninterface Outer {\n  inner?: Inner\n}\n\ninterface Inner {\n  value: number\n  foo: string\n}\n\nconst inner = Lens.fromNullableProp<Outer, Inner, 'inner'>('inner', { value: 0, foo: 'foo' })\nconst value = Lens.fromProp<Inner, 'value'>('value')\nconst lens = inner.compose(value)\n\nconsole.log(lens.set(1)({})) // { inner: { value: 1, foo: 'foo' } }\nconsole.log(lens.get({})) // 0\nconsole.log(lens.set(1)({ inner: { value: 1, foo: 'bar' } })) // { inner: { value: 1, foo: 'bar' } }\nconsole.log(lens.get({ inner: { value: 1, foo: 'bar' } })) // 1\n```\n\n## Methods\n\n### modify\n\n```ts\n(f: (a: A) => A): (s: S) => S\n```\n\n### asOptional\n\n```ts\n(): Optional<S, A>\n```\n\nview a Lens as a Optional\n\n### asTraversal\n\n```ts\n(): Traversal<S, A>\n```\n\nview a Lens as a Traversal\n\n### asSetter\n\n```ts\n(): Setter<S, A>\n```\n\nview a Lens as a Setter\n\n### asGetter\n\n```ts\n(): Getter<S, A>\n```\n\nview a Lens as a Getter\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview a Lens as a Fold\n\n### compose\n\n```ts\n<B>(ab: Lens<A, B>): Lens<S, B>\n```\n\ncompose a Lens with a Lens\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Getter<S, B>\n```\n\ncompose a Lens with a Getter\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose a Lens with a Fold\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Optional<S, B>\n```\n\ncompose a Lens with an Optional\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Traversal<S, B>\n```\n\ncompose a Lens with an Traversal\n\n### composeSetter\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose a Lens with an Setter\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Lens<S, B>\n```\n\ncompose a Lens with an Iso\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Optional<S, B>\n```\n\ncompose a Lens with a Prism\n\n# Prism\n\n```ts\nclass Prism<S, A> {\n  constructor(readonly getOption: (s: S) => Option<A>, readonly reverseGet: (a: A) => S)\n}\n```\n\n## fromPredicate\n\n```ts\n<A>(predicate: Predicate<A>): Prism<A, A>\n```\n\n## some\n\n```ts\n<A>(): Prism<Option<A>, A>\n```\n\n## Methods\n\n### modify\n\n```ts\n(f: (a: A) => A): (s: S) => S\n```\n\n### modifyOption\n\n```ts\n(f: (a: A) => A): (s: S) => Option<S>\n```\n\n### set\n\n```ts\n(a: A): (s: S) => S\n```\n\nset the target of a Prism with a value\n\n### asOptional\n\n```ts\n(): Optional<S, A>\n```\n\nview a Prism as a Optional\n\n### asTraversal\n\n```ts\n(): Traversal<S, A>\n```\n\nview a Prism as a Traversal\n\n### asSetter\n\n```ts\n(): Setter<S, A>\n```\n\nview a Prism as a Setter\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview a Prism as a Fold\n\n### compose\n\n```ts\n<B>(ab: Prism<A, B>): Prism<S, B>\n```\n\ncompose a Prism with a Prism\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Optional<S, B>\n```\n\ncompose a Prism with a Optional\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Traversal<S, B>\n```\n\ncompose a Prism with a Traversal\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose a Prism with a Fold\n\n### composeSetter\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose a Prism with a Setter\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Prism<S, B>\n```\n\ncompose a Prism with a Iso\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Optional<S, B>\n```\n\ncompose a Prism with a Lens\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Fold<S, B>\n```\n\ncompose a Prism with a Getter\n\n# Optional\n\n```ts\nclass Optional<S, A> {\n  constructor(readonly getOption: (s: S) => Option<A>, readonly set: (a: A) => (s: S) => S) {}\n}\n```\n\n## fromNullableProp\n\n```ts\n<S, A extends S[K], K extends keyof S>(k: K): Optional<S, A>\n```\n\nExample\n\n```ts\ninterface Phone {\n  number: string\n}\ninterface Employment {\n  phone?: Phone\n}\ninterface Info {\n  employment?: Employment\n}\ninterface Response {\n  info?: Info\n}\n\nconst info = Optional.fromNullableProp<Response, Info, 'info'>('info')\nconst employment = Optional.fromNullableProp<Info, Employment, 'employment'>('employment')\nconst phone = Optional.fromNullableProp<Employment, Phone, 'phone'>('phone')\nconst number = Lens.fromProp<Phone, 'number'>('number')\nconst numberFromResponse = info\n  .compose(employment)\n  .compose(phone)\n  .composeLens(number)\n\nconst response1: Response = {\n  info: {\n    employment: {\n      phone: {\n        number: '555-1234'\n      }\n    }\n  }\n}\nconst response2: Response = {\n  info: {\n    employment: {}\n  }\n}\n\nnumberFromResponse.getOption(response1) // some('555-1234')\nnumberFromResponse.getOption(response2) // none\n```\n\n## Methods\n\n### modify\n\n```ts\n(f: (a: A) => A): (s: S) => S\n```\n\n### modifyOption\n\n```ts\n(f: (a: A) => A): (s: S) => Option<S>\n```\n\n### asTraversal\n\n```ts\n(): Traversal<S, A>\n```\n\nview a Optional as a Traversal\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview an Optional as a Fold\n\n### asSetter\n\n```ts\n(): Setter<S, A>\n```\n\nview an Optional as a Setter\n\n### compose\n\n```ts\n<B>(ab: Optional<A, B>): Optional<S, B>\n```\n\ncompose a Optional with a Optional\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Traversal<S, B>\n```\n\ncompose an Optional with a Traversal\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose an Optional with a Fold\n\n### composeSetter\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose an Optional with a Setter\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Optional<S, B>\n```\n\ncompose an Optional with a Lens\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Optional<S, B>\n```\n\ncompose an Optional with a Prism\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Optional<S, B>\n```\n\ncompose an Optional with a Iso\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Fold<S, B>\n```\n\ncompose an Optional with a Getter\n\n# Traversal\n\n```ts\nclass Traversal<S, A> {\n  constructor(readonly modifyF: <F>(F: Applicative<F>) => (f: (a: A) => HKT<F, A>) => (s: S) => HKT<F, S>)\n}\n```\n\n## Methods\n\n### modify\n\n```ts\n(f: (a: A) => A): (s: S) => S\n```\n\n### set\n\n```ts\n(a: A): (s: S) => S\n```\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview a Traversal as a Fold\n\n### asSetter\n\n```ts\n(): Setter<S, A>\n```\n\nview a Traversal as a Setter\n\n### compose\n\n```ts\n<B>(ab: Traversal<A, B>): Traversal<S, B>\n```\n\ncompose a Traversal with a Traversal\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose a Traversal with a Fold\n\n### composeSetter\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose a Traversal with a Setter\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Traversal<S, B>\n```\n\ncompose a Traversal with a Optional\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Traversal<S, B>\n```\n\ncompose a Traversal with a Lens\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Traversal<S, B>\n```\n\ncompose a Traversal with a Prism\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Traversal<S, B>\n```\n\ncompose a Traversal with a Iso\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Fold<S, B>\n```\n\ncompose a Traversal with a Getter\n\n# Getter\n\n```ts\nclass Getter<S, A> {\n  constructor(readonly get: (s: S) => A)\n}\n```\n\n## Methods\n\n### asFold\n\n```ts\n(): Fold<S, A>\n```\n\nview a Getter as a Fold\n\n### compose\n\n```ts\n<B>(ab: Getter<A, B>): Getter<S, B>\n```\n\ncompose a Getter with a Getter\n\n### composeFold\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose a Getter with a Fold\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Getter<S, B>\n```\n\ncompose a Getter with a Lens\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Getter<S, B>\n```\n\ncompose a Getter with a Iso\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Fold<S, B>\n```\n\ncompose a Getter with a Optional\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Fold<S, B>\n```\n\ncompose a Getter with a Optional\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Fold<S, B>\n```\n\ncompose a Getter with a Prism\n\n# Fold\n\n```ts\nclass Fold<S, A> {\n  constructor(readonly foldMap: <M>(M: Monoid<M>) => (f: (a: A) => M) => (s: S) => M)\n}\n```\n\n## Methods\n\n### compose\n\n```ts\n<B>(ab: Fold<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Fold\n\n### composeGetter\n\n```ts\n<B>(ab: Getter<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Getter\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Traversal\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Optional\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Lens\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Prism\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Fold<S, B>\n```\n\ncompose a Fold with a Iso\n\n### find\n\n```ts\n(p: Predicate<A>): (s: S) => Option<A>\n```\n\nfind the first target of a Fold matching the predicate\n\n### headOption\n\n```ts\n(s: S): Option<A>\n```\n\nget the first target of a Fold\n\n### getAll\n\n```ts\n(s: S): Array<A>\n```\n\nget all the targets of a Fold\n\n### exist\n\n```ts\n(p: Predicate<A>): Predicate<S>\n```\n\ncheck if at least one target satisfies the predicate\n\n### all\n\n```ts\n(p: Predicate<A>): Predicate<S>\n```\n\ncheck if all targets satisfy the predicate\n\n# Setter\n\n```ts\nclass Setter<S, A> {\n  constructor(readonly modify: (f: (a: A) => A) => (s: S) => S)\n}\n```\n\n## Methods\n\n### set\n\n```ts\n(a: A): (s: S) => S\n```\n\n### compose\n\n```ts\n<B>(ab: Setter<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Setter\n\n### composeTraversal\n\n```ts\n<B>(ab: Traversal<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Traversal\n\n### composeOptional\n\n```ts\n<B>(ab: Optional<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Optional\n\n### composeLens\n\n```ts\n<B>(ab: Lens<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Lens\n\n### composePrism\n\n```ts\n<B>(ab: Prism<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Prism\n\n### composeIso\n\n```ts\n<B>(ab: Iso<A, B>): Setter<S, B>\n```\n\ncompose a Setter with a Iso\n\n# fromTraversable\n\n```ts\n<T>(T: Traversable<T>): <A>() => Traversal<HKT<T, A>, A>\n```\n\ncreate a Traversal from a Traversable\n\n# fromFoldable\n\n```ts\n<F>(F: Foldable<F>): <A>() => Fold<HKT<F, A>, A>\n```\n\ncreate a Fold from a Foldable\n","readmeFilename":"README.md","gitHead":"8dfe5b55dbf7bb7f6908fe989b05ecbb606ab4a4","_id":"monocle-ts@0.5.3-rc","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-jNKYobKy8dSK6ytOsptuMFkWLXdABF/WCxaHdkOh9FtvAXuR5L3C1CVrUlCvCrmbi/QYjrrlKkCtCUvjNkPokQ==","shasum":"ae7afe915fdecb6aa8f03452a4797842f72e4dbd","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-0.5.3-rc.tgz","fileCount":8,"unpackedSize":95684,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbeeiAOfzugyPBllBeX9EBry+laTpCiFOurdc7t3R19AiBLjYpWF6rXzYjC8pIUqLHZTkPB+8Rr2D7nWGWxOMBUYQ=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_0.5.3-rc_1518014341547_0.05325297206770774"},"_hasShrinkwrap":false},"1.0.0":{"name":"monocle-ts","version":"1.0.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint src/**/*.ts test/**/*.ts","typings-checker":"typings-checker --allow-expect-error --project typings-checker/tsconfig.json typings-checker/index.ts","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run typings-checker && npm run mocha","clean":"rm -rf lib/*","build":"npm run clean && tsc","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/mocha":"2.2.38","@types/node":"7.0.4","doctoc":"1.3.0","mocha":"3.2.0","prettier":"1.8.2","ts-node":"3.1.0","tslint":"4.4.2","tslint-config-standard":"4.0.0","typescript":"^2.7.1","typings-checker":"1.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"2526438ac083ccdb536538dd50f574a35d14d297","_id":"monocle-ts@1.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-3xnUHUr1t8+sV6Kc0lsCg12GmMtoOUFpPxhgvVi9YYwq1iYhPxWtpyurMQ8xRQEiauNzdXWjtKBycr12E1f9NA==","shasum":"6ea0f4c5c6b6959157452994bfec7ed170973b8c","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.0.0.tgz","fileCount":7,"unpackedSize":84808,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIIQtk8RMygyUvTA6CTkPRPQv2tjizBA+V4lonTod5aAiAJ+LpiizYGWCamHpA8mty4nG/1U1MG5FmFWnbWevrJpw=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.0.0_1518448035548_0.1496997485132312"},"_hasShrinkwrap":false},"1.1.0":{"name":"monocle-ts","version":"1.1.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^22.4.3","prettier":"^1.13.5","ts-jest":"^22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^2.9.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"8d9b4485ae7fc61e06e5ae45125e902c44ed6ee0","_id":"monocle-ts@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-deqWrzxsxzKA/KNgOJVGwM134VM6EfFE38gmt0d8gKD1FO6y7V2ODMJXAUkFAsB6hFZoxaMsEpbMVBL3WMKS6w==","shasum":"abdbe45c08648ed8973c59d6289fac6471b69ada","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.1.0.tgz","fileCount":7,"unpackedSize":86359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI8IaCRA9TVsSAnZWagAAh4sQAJppcuL6Nz0w3qcBZm0W\nV1vMXSbLd7U81NrOrhPMF4t0JMnhMMjEQXlvKUpOGQxFEFTR+8bsVLOYJ9Jo\nc9igVOeWocn+qsckkXU8shkGQjy6CMax9gzLP+WiUy+okHJ1iib/ZgpZrqrh\nxK3ylpnQUrp5pUiP+VnQxG1tEs4FROm3dBRI13Nb2+HNOc/6GywZiRbKMt3+\nAty7ofn+alTS9PKHmv3fhiSkHnySERcIlabSSZlnhQd1lc2/j0yq49CsRSuO\n5IiT6Lpg7YfnXiluAv2rWXzz0WZ0Agfje27VKZ+fSX30L4twBlJcWtXxCnXb\nJPnwMGGuzzyJpR8e9zfp4WV33nnEYRtkJ/phkBQrxWoq6kzPep0ZUC7RwHWJ\nkXKvtPM+NLWH7VeDQagBL4GR8UrhkI4hOim9/K50xyOusvrMnxzjT7ClgkvJ\npgTlg9PFt1geoSd0pMjE/hSGtsSNcX+UcxvqgWo2Sw4NhrsfMbcimxGvxbUs\nmhPt2uDhM1jzfXouJ3m77ssegh3fciYVpeEPYxr5Vn0ZrSzf7A+R2iai/t22\n5XFcozaZhwz91AqIsKi/6qz8sXIXkMaO6H2ZAe04N2kpbCcx0pkqiiW1Y+Qh\ntg82klzkob9sCdjn6U+IZjr6une29BSptwPJBoi17kJ8OSmahLRkOvOghYWK\nS0+b\r\n=yRsu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwDkKWjyBDSaHkGMc5r4Jl2eQROKBe0PetncdV2qFS8AiEAy7fZmTT6c4Eu8WvDF+9Tg0/nbOSE2mtaqlmSzvIXqlA="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.1.0_1529070105135_0.7736222623956714"},"_hasShrinkwrap":false},"1.2.0":{"name":"monocle-ts","version":"1.2.0","description":"A porting of scala monocle library to TypeScript","files":["lib"],"main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^22.4.3","prettier":"^1.13.5","ts-jest":"^22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^2.9.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"e0ca7956b4bbf0d1179dbe67bba4c3615fe0625a","_id":"monocle-ts@1.2.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-z+YE9WTmE6pm218ao/riGokzH35gDetLt3Fdt8Y0jSXR/AVV1rTtIAvmgMvNNAa0mqPoRhKRkoERMeCiKSkIxA==","shasum":"6009deaee379243a1e28651b01a054502258c782","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.2.0.tgz","fileCount":19,"unpackedSize":94189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMRbkCRA9TVsSAnZWagAA4kkP/2cObam01KHlBQntyGKm\nh6NLOQ05fEoBeFTNFgR573+kkszDADgeTLhtdHRaWmjMGTJjAmi1HBGpTUIN\nPlqa+13+TD5LPaDWrErgvOT9KOwzZMBfwLd2Y2fioHnUykxMlbMs2txo1hVM\nEni69PWmOkdWP6bEUJfhs8NiWtYnABEgvwJoeFAvzd96YerNDfvE364eJymX\ndJZ+EvcjENWc5fA1yk4H1OLb3j1xvzmo/n5eMNK1W7UJ7G0I4A3ESXQIoloK\nTec1B1ayLObdpqCq9Ev+0G95pctvi7aruYIfkMOw6ALfKdbTxPfzhd6F9r5Q\nIhhF+z+b3iM7urNcNcW+IGFvhpsmlxDJahsqiULgiQ0qMf5TZkVOAww462yY\naSFB3jNA7RqmQ0mNsH2ew79ap0z/zCknaP2PEOvB28pt8CPkaXnAKNocV8xB\nY2Kuk17zFcqPr6NOdUs79FXaa9cY9twf6OE254uHhzQUO/WawXaE/cQAauE6\nKo8qPsouoy3Cf5wKJ1WTbHBCvuKi65feI8YegMtlzYh39JtkTGcD21SYxS1t\nwFBeOOzeo1iydLTLVsdcBGkQFncd08DB1WTxvjzPdkfgIPNtKIGlS6DgfUNz\nfbxMPV5KRen05aOrbYrkBAIUm0Po4Z196rUm/AXcSolJz2AWhrXh9qkJQj62\nCC71\r\n=fC2j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFR1RyAQ9+0bCqq28tbMl2WAVesaol4rMrFcoGxhUpnPAiEA9iRz0c8ia8pFVjJnhg6pDq3vX49yMJFBOwKyBLjyGNg="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.2.0_1529943780344_0.5096362683733335"},"_hasShrinkwrap":false},"1.3.0":{"name":"monocle-ts","version":"1.3.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^23.5.0","prettier":"^1.13.5","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"dde7b747597a83c7a10c4c600f32a690b70cb19d","_id":"monocle-ts@1.3.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-oQrsdhh8ut2zRljic2y6EjjWs/NsUj2vDpEY1tLTTo3jE9WS70JOO72HzOY0lWkmgDRsu29pvDbE1aBD8LBkOA==","shasum":"4e463efaaae8d8e988c0ce886cd1514f54158f59","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.3.0.tgz","fileCount":14,"unpackedSize":71276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvxHqCRA9TVsSAnZWagAAjC0QAIs6fzR4rkwhIzG33+Py\n6pWEO7qeSFPA/0YJ0EMFK+7Rua0bxQfLDUra7zHx0s46FOs4b1FjwBIJlxc2\ndjFTil/Z+AFSZ2KQ5x0FCd+agxiDIyfBCmW9ZT46Ci1eAKtklJcANA0orB8s\nuZc6+wkfjpMH/vStZILA8nnuC8HCgF1BG/vUpsNqT6qPYERoprdM8kEIfAQh\n69XaGGjMhiFc8PxWlSkpuIfSRjwpf8OkVtXGE/LNvam3PueFGXD7JDBt7BqA\nB7WzPIFZQiL/z0KvhenJSUhY+pArfPJjT2KgMV55ENN4um15RqnNmj8eyIQI\ntmNRUFGZA5Z61isNN8z+75vD3o107LaU73ON9npNw41Dd8uJhxThf4KF7bTM\n6fIlJF90fD0bL0N1PKG3M83l/lZ30HINKQ+PQCtyyY385DeNn8aZxfFNTvwh\n1Knmlt6JEF5xuMRT5BYg6HmSbDguj0pA1DVmrSRVLffX96eJjLhcjWHVV2JQ\nEJKyMO5dBpv2VXL2egqmDD4aqDdLMMtTp/5FSFkB9qCls25o/bU8xq/FALEv\noKvHiZ88H3wd1oXuCZtrHUPEZLroW7FgeJ3rHtxftTHdGd0W46zbOFI94KUr\n0pFDOekyLhPDlYpUg0lTn5K40pn/PnvvglCMC/9kWYc7SFKN9CllC1qvLiyt\nuJkt\r\n=npMr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAaEsL4p4JLvSeVJlU8pLg6tGDL2HQh+5t46quK74Z1QIgIa6j4Tb+81P3weMJIfEdObrvxGue11OUmfp5gMroY4k="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.3.0_1539248616569_0.1652988322262967"},"_hasShrinkwrap":false},"1.4.0":{"name":"monocle-ts","version":"1.4.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^23.5.0","prettier":"^1.13.5","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"a644245f75ca9cc8965d36a651670d372be5639c","_id":"monocle-ts@1.4.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-6v+RFmAOK0GqI5x9DkBKUCgs4q7zD+JzpSNzyK84yjhIZJN6j1qXbCDARpMxCutwUHAIVxztBfqe6uU7hpKMjA==","shasum":"aeb83fdc2eacb975770aa7c75b5f04017124c194","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.4.0.tgz","fileCount":14,"unpackedSize":71620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4XbeCRA9TVsSAnZWagAAzLMQAJaVHuszrRrS/ZqQAUpQ\nfsPNIQAbgs01eqQmIkvQ6Vol9HEboCWMhLK0c9CMUJU3ynJmeey+AoEmG6uS\nlVR025GiZNGp8GJCxPgdt6O+0dX8afUTe9mIEzh4C4HHLaGvpnAqJcuzNu8N\niVbXIe0wws43gNvo9WqOe6xNogmX3pr/tYzqrKsjKeg/mo4fBKIYBWleFtSj\nd8HOnLW2BoC/LQNqgBmrYmvjlEisef5bKqzZLX00yBf8Y0ph7tNpKRTpqPi5\nNMBCWpdDvFoEZdVlI7q8FO8L50oIvYkpxVM3DO6GaNU+JNlMo3ANtpHnD4HO\nyUHNLbE1G+wnj0NauA6sIp8g3G7QjexS9Scx8mCGAL4OpqC5+b2K3CZbWdyH\nkUjsx3nrRlRqYHh8c4TazMyurraiKIo6bXKoOja/EMc4ALeyKDV3o+6aYmt7\noGebRen6ciGLhTTbcYfb+BDhzXOihCS7m5bU7yTc4coyA8whQfw9qjAk++cL\nhyaZfm34cfPuOvGVCSPFjFOIH8A4dfemgZpttSVuars9y0IxgxaeJauYJJ8H\nBCCOKOV8ixcKHctLXUXAFHaZzW/XMCPJypkBX4N2Ip12zREdn/ddlzvTi09C\n+JhWKLn0jXiYLPkULpuT9cIp7imwaae9yo1zZJbbJR8rPdW1DeMyMgKE8yvi\nNIBc\r\n=I3lX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZrZcKu+kjr77aqR6FUc0iRzgd4NXEWsjxbp8sQ7SSUAiEAzHP4fjLl37okVg1b3ltpENQdGax2OEcPPW66/29yQXc="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.4.0_1541502685978_0.5367365860082429"},"_hasShrinkwrap":false},"1.4.1":{"name":"monocle-ts","version":"1.4.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^23.5.0","prettier":"^1.13.5","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.6"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"b9e0d531e9df40882b9ed5bb39913c72895b7d35","_id":"monocle-ts@1.4.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-sSuMpPN2QcY4lLOLTytOudVLaQGSfjzI1VTGBmr9JFdnWGROhoat3RnTJVrnRSo4vdL6+wA/Si3hjGBOoV4Esg==","shasum":"9cbead166e6bda7e76fe8772c8c1bfe642b6cb85","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.4.1.tgz","fileCount":14,"unpackedSize":73105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6WbyCRA9TVsSAnZWagAAZk4P/1ibc6B0zv7SEsOWdwFf\nWwS/t38dJIg6nQvBMTV1Txb9zryH3wgJWGNe1eWKAn+S1R/cD0MKWtQsd0/f\n/w3L3/A1sGUGnN4QZQbUSoqrwq7CZ4+O/t1OHgh/kK8GxPPUKrGKKcxER6FT\nA2TYRltoILVfaMuqv8cl7kybSKRehgiOPJ/9nnpu6gOmlImI3HcpTX0wSzJC\nQb9EuKa/kirF5X44/fogbsexAIVFOjAso7fo69PQlq82vym4mVHJgxPssUyi\nhEw6xExiUGPS2xfa9mxRPR01kEjfslj68RYWHGo7rL7Ghrn5QaNSd0ZQJ+Dc\ncRImwiuLEEPoOJORL2UZ4yhS7FgFk2KmRZbIgIoSuSZ3OkcNY0WGkKpCgyhq\nubhekpWFcpCcQ4IemhsrfbEDOUqKE21Jfs+0lB1ZNK3R1DLaHXqClIozHYZ1\nDaFPYkm7OiOgLbnymyUOpc4rrh0vaojlidyYQMZEp2hNilbkhDiobodPCCkL\n4t6nwlNnxhJTYehTp4id9H+WrQaKsbayGByzaFHNTw5SmJ8c+FgE9Us9JO+7\n719NGqnhwc9Aiz1Mg63kg4w+JYbGqcBdZkseFNqO0GkulQBHgFaEeI2jpePv\nixRypsX4ePUcupBf/fVfzIPo18MQukXwvJ+GGoXCUvTyYTbhAh5cgbrCxq9a\nZuzD\r\n=4iXm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaoEOlIJvlTx/LGkXrpaPlV5RDAn1mzRuv69tZuVnurQIhAKN9g8+3ygfC9F5wKk7CMBqSHDS/HMpXG76PtnZ7gHM/"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.4.1_1542022897354_0.08872204596228861"},"_hasShrinkwrap":false},"1.5.0":{"name":"monocle-ts","version":"1.5.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.3.0","jest":"^23.5.0","prettier":"^1.13.5","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.6"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"2ec17b8bf97984d977d660f2d695e2574e90e838","_id":"monocle-ts@1.5.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-b7cHFEX1ObB/Zm8SHd1eAtSRWKnEqeaH0/Ejd77TpdNQ64IpC5OeHL8lopONiBQkMvSdkVQ7hVdkzDlI5HjfgQ==","shasum":"f0a4a4a8c4bacf945eed26ab0ee1dec4452195d0","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.5.0.tgz","fileCount":16,"unpackedSize":74323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9liHCRA9TVsSAnZWagAAkLIQAIJCBejuFtNMCcFOzetj\nzKlI560u8klJI6YjLrn1lPeKdfMlrVmPicjCyVz6ogzLau95PqMqCAIapqmQ\nNgc9lDD7iKWrOxmfMm8el5c86C7OXIxuhWMh6mvVApKDuo2vHD9vi3SiZXVt\n/8LqayE1o6EOZOJEoYqr/xU2AQX16sV7Nim3t+GjRuhm6HJB2rBVurLLhJ/I\najc0LOBfWaXCwOHXCh/9it+Ia+bVZOoqKZAgHHizqGC0FhnEXah5q2kmdu6n\nquYZrMdJ9iXBr9MItCzTPpNBRqk/fSxYj60Q9GgqjoCyNpvlDNrOxqslwHTO\nri2qQO+/NW37AU6E6ukvX1wTsU35avnh6RpuiZ9kMcN9QtydsFHt0RdUqC6s\neV3aGsNgOMm4v7BezPRTvnQquFoqSlM1ajzG37j4lfsWJNRVQyuaDAZ16zDV\nEfE67jXuZIg31M5WtmdnKNbIm/9nnljIa4pLB1lH6F1G+EqOWzDc26mBBq4v\nL5aVmRq3AUv9JTfe1g+K2meDa8YAEMGTB0CAkS5nmviC7hO/d0HSGmYV4EY9\nbzCuyOsI6RbmivoXg0ohI8Kbd21mAs5+o6XniaMqpXLfgrbtCJjrHTOqW3Bu\nVpF7SMmJ4gLV5SylK2eARwJno3bZfl7I7JST9sbzdEwFNFSsICWEqL4mPoIC\nYA8b\r\n=EboT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCounzxFBE1sWmAbnEfy5oeYE0CheQ0vuUTLReAKhw1dgIgdnaLkqb5qVDalS0KFlo47/FETjbDlVo+yrdJWDI76x0="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.5.0_1542871174575_0.6822317043997332"},"_hasShrinkwrap":false},"1.5.1":{"name":"monocle-ts","version":"1.5.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.4.1","jest":"^23.5.0","prettier":"^1.13.5","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.6"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"2eb6fea78cd05541a8ab0fff8a851ee0ef3c85da","_id":"monocle-ts@1.5.1","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-sllYVUdfXTkF88yr5Rqf4Rut3ieUHMV2O6KmkNe6aa+ZueRzOqd5VGpOeenBMicb/d9tpXbgYk8CZbwAQ+rwqw==","shasum":"1e2522a663b0192539c94089c1a8a626aa8f0f84","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.5.1.tgz","fileCount":16,"unpackedSize":76796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE5uXCRA9TVsSAnZWagAA5KYP/is0UDJwgnlB2ZE9y29Z\nIsSaoMLSIj85G24gYbt2Br6x3sDSD9UhyafMKGb4AEOKsUc7Pw4eyOqZ0t4E\nqVPmliNRa39BD9ZHUNC5befbZzVYHfqFqFZAEzqET6ZTp91ztjJ4XKe75uL7\n3oqehEG2PGnkimifQgRwP6kVJse275aZr9fLtGKez8Ch9h9uBW+m1dzqOUYn\ngsPll1FvGA56voM63rdX2L6AZpcRdfMxhkCXzyfidis8ZUdaYwiH3Ng8ZvLc\nGcu3zaE08Pxeb4ih2ZWYrox43dnahGdo0Nb2v+WBHiMzNNOi/C6HazTi9EK+\nbRh8AUSGt4vG7G2Aisv9W4fsO6um/JSqJ31otGTkeQlugRzVgo0gjrcViujK\n80lvoO0D8R/K34evYkwr9tHyehpZMckmDAW4hw1kL0+4h8ziOas5TxN+uftF\nWxvY6Z/W8QOoGAbnpc+hY/wzdKO3Oa2a+GXxb/w70sxy1/iXN/5WAZ04gly8\nZIL2RM8x6JAsiWz1JLATlhHZTFDmPvddv6ObZ266LRTwVGNK44dWcY7xZhUT\nZZsWIlyvgwdA9EkXDWCS9b/Iz2yE9cGL3+dHVBhVPOt4KI150pFf8Ri7SKT6\n9RBTwdvhgfhHyarRFF4Q+N0mdowJKM/YzRAHLSUU7O42EeACKKlNpJt903DX\n8yLa\r\n=wNeO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACCjQYXsC65ug5kCF/Ve9xGVmgaRQrCqdSYFvN06Z0aAiAbu95Y53pFxme5SOLEAG6nGanNuKbCGbmWNJyu3TpDOg=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.5.1_1544788886588_0.010935197912987915"},"_hasShrinkwrap":false},"1.5.2":{"name":"monocle-ts","version":"1.5.2","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.4.1","jest":"^23.5.0","prettier":"^1.15.3","ts-jest":"22.4.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.2.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"4c59806587f89ad9f77ea00df86c60882a28fdc5","_id":"monocle-ts@1.5.2","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-XbzXTQm1LuTTEH0YZvOo6CmLJbO1lRM3ekvsdEhkEvC1qFyp/TklTsbgg/uwZldC82Q7ZnMbFIPXxbDrhStd8g==","shasum":"d9385e9118c9928e897c8f5353db92fc438496b1","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.5.2.tgz","fileCount":16,"unpackedSize":77405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLJ8jCRA9TVsSAnZWagAATJQP/0SPyfI2zj9gC3QVu5qM\naIso7ItVEBhksTbo0u+54HTmlODJYy9DPiBDZlWtKo8CirKH2ajrej988pc+\ndt0LS38yWjf2tOpaP0Rwo96/pYXfvdWcGSiCbMW4MN1yCFTbX5QBZQThC681\ntzzeaBLEgvVkGZQA02AUz4/DkDNRlL9FcbtTBFZCx44zynTGNoCA98hX2EVi\n5zUrv5bxDCPhQZvZM8pRQDT9SBq+XsU9xg9NFf1qriGbbE10BB44/qpyHqMm\nZ2h8N0wWIjPkUxsg6dKlt5IonVXJod/NVEQ8SofQB3AM4RUY077WNIs8flgL\n6psqrd7jExhMEChbaFGTVz7o1M7tg4ZK8OWHHaMmCYdp7KgLZZwc2KOByvML\n9TPCruUiHancCnf9GStl2xWISdmabWG6Kxkd28quxQAXPNSmf42BAVWbpySQ\nvirgB1aF4r1lSXhLQWAmTp/4NJgmZOCIniIfzeCeKRFi6Xiqfds0onEy9qwC\n0n2wwO4oRf2+JlBJ2GzE3/k3xBfMFd24Jb8BglgGs9h/DSW5LRj7URiQHtae\nC4kha+400omKP45NoyJuhOH7dD3n72NW7TQhqcWwF6jlEtUnba9E87+dPbDb\nr5PR5JeGtYZtzbh8o7pmMql/AlvHSbWOXOCZEzvcxPUNYq4sc5axv1O59mFq\nQ/zd\r\n=u7uT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYEIClFvONmQam7s3B4ZIl+ZeIJ+PeMGNJBR79c9pq5AiEA0xYmQw98naopW+Y+92v/jpulV2imFqujFsY1SdsVrQU="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.5.2_1546428194408_0.23557441828754788"},"_hasShrinkwrap":false},"1.5.3":{"name":"monocle-ts","version":"1.5.3","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"^0.4.2","jest":"^23.5.0","prettier":"^1.15.3","ts-jest":"22.4.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.2.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"57c143e09979b06916280dedd7aa3df0d4c2aea5","_id":"monocle-ts@1.5.3","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-5AMXaJPkTU/CT2c3Imi/mFVUF0xVTWD/rz+JmZZd2uh7nZQuG3mxbv5kfzBWtFRtajnPQ38saLZKgV6AEr627w==","shasum":"70c4253255b6374a7ec2ee1d334bbd4cd44db7ce","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.5.3.tgz","fileCount":16,"unpackedSize":77141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPEScCRA9TVsSAnZWagAAbwAP/3bmsFB0CyQaKwJSu9lb\n51bLXhRK6ul7U7sQ2fhL3sZfJF4jz5EEVBfY+Kk1jeDLaQffWSTpQVIL2RQj\n56DJFOX0Xn7F3NpNhp5b62YfcqcVkPuOIBeH/ZepA4LhR4rXEn67xTHlJPjg\nr1j0YUyrF9T4aENMAtIAc+CJMOzEdL5scSox8fuH1yjC3y+TfllK1mY2+vFR\nt4RLcTvyLg2Ys5N0FhUgU9KIyGXfeSd/qg3CQYoT4W00Hrimfc6GYaMVwgso\neCiyZvywLSEZSVGOLnm+gkzDt9rNhbirw5BFOhZi7bAGd83iS0hufbzrekyX\nZlMuNHvITdkF9jO6vac/3WzODnQW7vl6XrwNGJgrMb8v6biQn6tZCgdKb9Be\nMmIIR+ZHKoDikEAD9xBIiunvDUyAQ0DI2RSjHTKu6cA/4QrnXiFaf/2SW93U\n/ph3MZzI8t5ei2BR9JOkD0GD7jXeun0LHlgl2lOYKAkoh8y8P0PdCOTPdtZx\nnMwbjpmiLCyG+03cveFIUvOF1e/uzM1i5a4NoK4c0ju6v6n9HP+WlgBQweyz\nI+fiokLK6CvDsRmQvW+w6qsED6XDRZmC3/8GwCRPBFX+osJvfCxBAyEkSyfg\nGZOudKm1FP8+u7ZCsVefveh8Vi0IXiss/WQMdd42anSRfWkWRWk1bYT9PT/N\nt91k\r\n=UeV7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFeUf5lRPeXz2birp6793Z8xdlOyyQb2CWMDq3ny0DXNAiEAxbSdO/d9plcu7HfT0EsfxAImpkTbwYnrckNRQHFjB2w="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.5.3_1547453596000_0.7067685088619398"},"_hasShrinkwrap":false},"1.6.0":{"name":"monocle-ts","version":"1.6.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"github:gcanti/dtslint","jest":"^23.5.0","mocha":"^5.2.0","prettier":"^1.15.3","ts-jest":"22.4.2","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.3.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"5cf396608150abef625ae1dd9f22a85f2a076b67","_id":"monocle-ts@1.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-OLnNKLCHiwojzIpsQ6L90vS4GOp/fX4r1WEoTv6w4udpVpDJHsDGT9MSaellEhnqa+ZC5Z1Xbr4ksB8teMosDw==","shasum":"84840ef81b79633ef4d34b94127a2fb489f8c3e9","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.6.0.tgz","fileCount":18,"unpackedSize":78961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXHIrCRA9TVsSAnZWagAAT8cP/iLs4nQEn5ABFkcGQIjA\n7F8ivQqVRgTYquP73A40C5jAtXRLKFMfzj8hJ+uiw8UgPhQJZckfsKxEQ8Hj\nVhKvusAI8iu6ULu3JgW58n5IaPXjQb98eRInGbVp07CtvmWs3ZlksuWYh9F7\nM2AUd3Pdrt9ffASfuBNvQiUtesPYjPNJd+4M/LEFATfA8/lUwX3i102XiWCd\nLbkn4dETkIPcwc5MK2Gor973qSESODWqqcelpU3awUyVc4tSW/94jdKmkHm2\nQvcHPNVvGrxPNH/ME/Ki7dlrZOhIInkBwKB4xa9LFT7TUT+KljiW2+c4a7/C\nQw0cCyWN9IPuAb2rSyySQUqG1Tah0xQSxGI71bCxhbx+sZ1jYGJdCVx127TF\n+TwKedj7c2gqAtZzAHFmI2BgeIwD6B3xb1xB59rEahFuNb78cuU0ulbIlhhx\nJ0md8f7wFdAY2uYIC/kl8jkK87hwhkskplzR0RXNWqvURjIY89Ewd5so6ElW\nAAmh5ipkLWPFcgTPDow034ik2gjv6SlY57JTc6PEhl88ykeiNIGMdPfyQ3un\nhPvAD+4usmyw6JJaIw6HmnkCHcL4fBvoNCr9Pqqt35gYYiqO993SpzOG7U+X\nVugLPkybLO/PUzo7dD0desFzq6AzE0MS21eSuMa8W7cu0bFotOa5nQMBtX6/\nlPXw\r\n=1/O6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAokC8Ennn603SlgQ9/ACrA0KqOSantG0M+DLjXbuPK+AiAJZ212w63oKNb3EpfdyHLjR3QS30U4204HqNcNfb9FkQ=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.6.0_1549562410603_0.6861086546703714"},"_hasShrinkwrap":false},"1.6.1":{"name":"monocle-ts","version":"1.6.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","docs":"doctoc README.md && npm run docs-fix-prettier","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","doctoc":"1.3.0","dtslint":"github:gcanti/dtslint","jest":"^23.5.0","mocha":"^5.2.0","prettier":"^1.15.3","ts-jest":"22.4.2","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.3.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"3d5d6828a738d6fceca652571ac94747634a78e9","_id":"monocle-ts@1.6.1","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-AOUc4KJ9PZNV8HYRcH9Xdbml78aFZwB/J2volA6tLN1R2hqL5WqrzGOvX2XNDSqkTBCbrCRYMmBwBHng/B+4BQ==","shasum":"6f171526230e9305f2c752fd585ba69f02110816","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.6.1.tgz","fileCount":18,"unpackedSize":78925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYZznCRA9TVsSAnZWagAAZpcP/Av+lxs8aCej0RS3Q/kL\nlwNNtpgB5t30afTwa49w+hwkJWtem9KBJXyQXZ7MgygSphudQvjuZo0ANA5q\n05ksTg3fOZ2J5BueBkpJ8pJ+uOSR2wh/OS5w2UKRJARnOpnLQIOepgVik3eI\nlAr2jFkYEoG48Mn3fCWi5EOhR1ZQS/whcZH0q0I30OKWaxmm2RCrXZnVVGjw\nBkoZqxfG88YFzTGUZUCpWg5FU9uiYi4IZzZMT6blE6HXASo8vgVNt2wEKujo\nrlgMfzsV9yczgJBZj52ryc6BrrXBXrqaqn/0OKhNP0Szc/FAm8JwGrnMi6Oj\n9eQ24k9DMTacLV/oZ8UxoEhMmJHhb2/A5k0kmLI7cTnslUZ19UbYEIiXIYaa\nT3hkuk/WV8kuwheHwph6/EHCozPEziYiWAliksQ1Pvf86msaF/i3ich5gMCN\n8uYKK6eRAA+rGVuxbsdPO90r6wrRwE8j5OakIK72drpOcsnH/JWPbspyW7sd\nXhW65H1PoodMhzajcDy3Xm80F7/zGUxLKm/JcpCg54kG8CfUWQpmtGfQ2MLp\nELbairo3WNQTVQ0U9mVrt+I1QW/+JvlgbXV/OKhujBkR4IsbZbWeEj3o+APD\ncjSkFPQe+ERXVBvvTOMYILN9YFazADmFlGqnlOBlukmZSiaaIY4nXNqRaZnv\nh2iv\r\n=2L/t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnEPqg0OvRG/34uHrTni88a1RDn0ULspy/ke5b94EABQIhAN5YPF0Dn1ehU6i6bog3c0A8LkKQk3so2eokbaCgnwL2"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.6.1_1549901030324_0.9821058528587969"},"_hasShrinkwrap":false},"1.7.0":{"name":"monocle-ts","version":"1.7.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","dependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"github:gcanti/docs-ts","dtslint":"github:gcanti/dtslint","jest":"^23.5.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"22.4.2","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.3.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"globals":{"ts-jest":{"skipBabel":true}},"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"62c1c6422a7cf78ff6cd2cf0188999a721d72025","_id":"monocle-ts@1.7.0","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-tgtJOBoU+Kb3m952hemxwPS5eY7I2mck9JaShxXqG70FiWp32VjniaKqBzb2+OOOk1mONMOAOBYM7KoxowCH8w==","shasum":"bbf51036446d673f67b8fc3570eab5633fddb712","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.7.0.tgz","fileCount":22,"unpackedSize":64770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgMbACRA9TVsSAnZWagAAGakP/3K/eLTDTHqLuTI4y3nF\nMPCCm9E7VZZTA2z8npfRC+7LWyCqnUOwr7LgNHCacpYj364p0AQCNQVmuqt6\n1uUexBhjubmRpWRn135H2Z0lahCYZJQJUoGkQWbcOvMY4tWWkdZ+75ejX2yB\n3VRpoHgCO03lXYEkW9koPnbHrorHr3ZLSHEpmzqCr5T5H5UBTUPOHq0txZTG\ng0V3fDzac4cv5X+MJuHoWJEzEoIfn13VQfguVaX6rIYi/yKxm9k9jBvGCLR2\n6MAEeGJ5LrSZJeN+rT/dRxZgC1wupw5LBMhcXOn5Cj8aXfXyZv5DGiyzcN3s\nFOIRHU3AUX17s97QkWO2X6P4gkXRs7/8t9fBnizN9ip1aSK0NWsrIR7n3/2k\nbiWPvBOK5T0ujGuqS38uh6XuAe1S/M3AyRoG3C7IsdjE35pd407i2kAXJ4RN\nlkEv37a2wMOYkaT6ETG62suEjfcaUCQ92qEUPA6DwdEY6o9+iI8xB9+NfNID\nnpWR0ekXwBZo/qKVQ2AfLXAzU72B2dmIKtWD/Bqn7cael7vh1UBjvBZgYAw1\na8vVrxWA5imJC7t9AStYliNg4vh35bvbXEAtDtK/BrXSe0zYj/Eh9a8mhMkI\nBw3z+uU88V7cgGE21E5T6kxPT0YM++AtbvDm+sknBgYkd6lUdBJNOXXMasB8\nBkiM\r\n=xkOi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEC0YL8vO99fq/n6Mkhh61yVlqYowrPk5IwpPyiLBLpAiEAg8m7d8aTY6hI8cS9VECFcYAN8YoKHbHdz8n7M/54zns="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.7.0_1551943358737_0.5919318565545968"},"_hasShrinkwrap":false},"1.7.1":{"name":"monocle-ts","version":"1.7.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","typings":"lib/index.d.ts","scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rm -rf lib/*","build":"npm run clean && tsc","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"github:gcanti/docs-ts","dtslint":"github:gcanti/dtslint","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.3.1","fp-ts":"^1.11.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"d2a3964939b93585f7e53a339f4230bff56d4a93","_id":"monocle-ts@1.7.1","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-X9OzpOyd/R83sYex8NYpJjUzi/MLQMvGNVfxDYiIvs+QMXMEUDwR61MQoARFN10Cqz5h/mbFSPnIQNUIGhYd2Q==","shasum":"03a615938aa90983a4fa29749969d30f72d80ba1","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.7.1.tgz","fileCount":22,"unpackedSize":64792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchpu9CRA9TVsSAnZWagAAd1AP/R1B7R1/83FPrRUDJQ+s\nPvyoEUZLKR5YeQBeETmPDuul3aP0IG+e6nzJiCQ5JcHpbb1Gy2iqk164OMEr\nL6Fpr9EHUxawcG0g1/Rg/rVdQDjcpQqw8GtV/tpmF2LEGotcxkV0tQ6KuT2s\n4de/VOCQCIg8QClkR6nqgc6w7hWeMPK6ChuSNvmIsCi7h2apdolY+CCo7JkY\nKa7KPvA9FuFU0AvAap9dOWCFCrkr0YyqqX1qnFPH3iUYHkA/EdnA7kokdZ8c\n5oEdtdIBQSwmL180EKdPIr2CXZIWSlpXCkDTvKeEDnfVjVb0ks6w6afazXXn\nzFQuCm+MS9WBt939HoybP4cuJKkvnOqdZXyiAWpNB1sRGPzJOTQxRpH5o1x1\nbt7a2HxyjfMWG7baHdB3C/1uZnu+s7fsNqrWaVXJL+j52WW+7Sc//omyUgrx\nDfE5g1pW+WMr7Y9M4A8AyLWi7T9S7cDGedz/bpohbKFYGxx4eFgweenyH7TI\ng246Tigc2uNFt6stFPW0giwErqB/IAYoGEihWvSsHrqqyfLqTW21lt5sYkbw\nuDIvb+wnMhL9CbHz2qaT4AjQ8y8wl5OfiKps+t1qx0wDFKv7/FwIA2L4mLCV\nIq3oLariXmJis5gPlk4tYNLHYwcgplIiseRsUrYVUr67F5bNXd8zMH6Xb+j3\nDDXe\r\n=AlbR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDHGyNXC7U5mIJv0rf+Fiwqraq8r0AZR0wVLJc6JNR7PAiAVuaZuJmEW8YsNmNCHIePlA6f3GBmU/SmcsxwDfJAc4g=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.7.1_1552325564478_0.04351845558034406"},"_hasShrinkwrap":false},"1.7.2":{"name":"monocle-ts","version":"1.7.2","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^1.11.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"github:gcanti/docs-ts","dtslint":"github:gcanti/dtslint","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.3.1","fp-ts":"^1.11.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"97af3406094f24d637893b21fc82def3a0157b88","_id":"monocle-ts@1.7.2","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-F08hPUzQ14vOtac2vOagnvXPr0R0MRKWXF6Bwd3gQ4XnV2qfU0MzPL+L18kX4dXBkat74pxbL88V1BjAj3YOWg==","shasum":"d9825ae18846ab63f915cb6f2194a78a40025610","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-1.7.2.tgz","fileCount":40,"unpackedSize":117032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2TZoCRA9TVsSAnZWagAAvCgP/1G4tuFONJsmE0J+eCBz\n6kbRDpFhINaPixzA0+CdeifWQzVvWqSdhLhM/hvxl5woDvJfbBnUGFpefN06\nvXM5C0CCS3pRKdQNjUTB8Ea6z3Sn/KAZ/99pFLkpZcA9+xJxmr77yxyHOUgN\nhuc1/updnUFVAYlbAZ4wiCYICpGrYAU5s63bKFvGlGexy9cDAf4JIRWk3WS1\nBXEg+ScvXgEzZDGEL+6F6evslv72k6W/MxvjCBEfO1zVaW/p1HW3UzbJlkD6\nCuX87VSK+0cM2vC3M0vAk7Gs/9poESyPZcu0DjF4EfGPEMnD9xV8COdPaEnU\nGfP4+yuj4rFE+xCGHp1C3VSNzteGv3fia93EU62PNiRhgybUWleeUUqWnpHX\nopbZjTf05Q7TlkT6eHtlgtIvV/oxUz8620yO9lpS7krQHO4mb3ddK1yJA87d\npIGIf5pF7CAMYgyvVv/B9TF++CGngEg6AjygwhPnrYWEiqpDPaeo6breBve0\n9AAygxEx/UMeCRHbEI24i6T2TC0dmCpgWMi1+oeUrUtJrhrFbFsJb6YPt9S+\nCB/0V8D059abayd+n99mmnT4mg3xwH6DwUD0mXVNURxDeS/U6iw4OvdEas8r\ngAM+9YLmRRfFMhjpW5u+VIbt97UUiyC6CMjR9Cdd9ULU7U/QuC412hbaW26P\naDFO\r\n=0Gju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3SOyVGnPQhV5DltUHY9ggNNke48Yz+8m7imcnYIUvGAiB6doy8jbo6kTl+e0NcE3qSV8EJKLjNH/cZxcEzlpmw0A=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_1.7.2_1557739111517_0.532713146669983"},"_hasShrinkwrap":false},"2.0.0-rc.1":{"name":"monocle-ts","version":"2.0.0-rc.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0-rc.6"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"github:gcanti/docs-ts","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0-rc.6","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.5.1"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"readme":"[![build status](https://img.shields.io/travis/gcanti/monocle-ts/master.svg?style=flat-square)](https://travis-ci.org/gcanti/monocle-ts)\n[![dependency status](https://img.shields.io/david/gcanti/monocle-ts.svg?style=flat-square)](https://david-dm.org/gcanti/monocle-ts)\n![npm downloads](https://img.shields.io/npm/dm/monocle-ts.svg)\n\n# Motivation\n\n(Adapted from [monocle site](http://julien-truffaut.github.io/Monocle/))\n\nModifying immutable nested object in JavaScript is verbose which makes code difficult to understand and reason about.\n\nLet's have a look at some examples:\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n```\n\nLet’s say we have an employee and we need to upper case the first character of his company street name. Here is how we\ncould write it in vanilla JavaScript\n\n```ts\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employee2 = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n```\n\nAs we can see copy is not convenient to update nested objects because we need to repeat ourselves. Let's see what could\nwe do with `monocle-ts`\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst company = Lens.fromProp<Employee>()('company')\nconst address = Lens.fromProp<Company>()('address')\nconst street = Lens.fromProp<Address>()('street')\nconst name = Lens.fromProp<Street>()('name')\n\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n```\n\n`compose` takes two `Lenses`, one from `A` to `B` and another one from `B` to `C` and creates a third `Lens` from `A` to\n`C`. Therefore, after composing `company`, `address`, `street` and `name`, we obtain a `Lens` from `Employee` to\n`string` (the street name). Now we can use this `Lens` issued from the composition to modify the street name using the\nfunction `capitalize`\n\n```ts\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n  .modify(capitalize)(employee)\n```\n\nYou can use the `fromPath` API to avoid some boilerplate\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst name = Lens.fromPath<Employee>()(['company', 'address', 'street', 'name'])\n\nname.modify(capitalize)(employee)\n```\n\nHere `modify` lift a function `string => string` to a function `Employee => Employee`. It works but it would be clearer\nif we could zoom into the first character of a `string` with a `Lens`. However, we cannot write such a `Lens` because\n`Lenses` require the field they are directed at to be _mandatory_. In our case the first character of a `string` is\noptional as a `string` can be empty. So we need another abstraction that would be a sort of partial Lens, in\n`monocle-ts` it is called an `Optional`.\n\n```ts\nimport { Optional } from 'monocle-ts'\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetter = new Optional<string, string>(s => (s.length > 0 ? some(s[0]) : none), a => s => a + s.substring(1))\n\ncompany\n  .compose(address)\n  .compose(street)\n  .compose(name)\n  .asOptional()\n  .compose(firstLetter)\n  .modify(s => s.toUpperCase())(employee)\n```\n\nSimilarly to `compose` for lenses, `compose` for optionals takes two `Optionals`, one from `A` to `B` and another from\n`B` to `C` and creates a third `Optional` from `A` to `C`. All `Lenses` can be seen as `Optionals` where the optional\nelement to zoom into is always present, hence composing an `Optional` and a `Lens` always produces an `Optional`.\n\n# TypeScript compatibility\n\nThe stable version is tested against TypeScript 3.2.2, but should run with TypeScript 2.8.0+ too\n\n**Note**. If you are running `< typescript@3.0.1` you have to polyfill `unknown`.\n\nYou can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.\n\n# Documentation\n\n- [API Reference](https://gcanti.github.io/monocle-ts/)\n","readmeFilename":"README.md","gitHead":"79548dea0c52622656bd1aa13fe609807cde2852","_id":"monocle-ts@2.0.0-rc.1","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-kY4ruK7d+3khTkm0naN/JNwjNp5etXUx7BXe6Rzc0eKFmG3F7q6rYMiFDMUcaexQfG8u1KGi6iCjaj8/nQcRGg==","shasum":"e689294440b3e44d8a9ed31bb17cffafb44a0ec4","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.0.0-rc.1.tgz","fileCount":32,"unpackedSize":121486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCjbmCRA9TVsSAnZWagAAaNoP/iu3JM0WpG7dvfdltCXQ\nbS4GYaK1kgtXKF1IOYuoTsI8YREbNpXleUvOU2j+PFySLAoqRYKssRSw9fUE\nYEfFQP0EDKw4bjBpCau81gNTyIvP7gKnXk+i2LdjZF1+eT37YI8rPQ45nbk0\nt2wfU5R26UDjpFX25vqWwv+W5lbNodWDNLBL0qYGarf2i7pEOQjXCS+15aNh\nHeOwcoHJPxdo/zgnNZzBt5NaQWhpYLtYWhRH1zhsRmvisL23XciOVu66hhbY\nqDLQeN22r9kKS9N/KQd3gSRpdT8kZUNZavaOOv9WfGs94KhAlkv/rsbFwGPe\nUcKKL/07fixU4puDonxa9FRC9WoMayV2AACvega0tPgicE4WkJHbtWskGpvb\nAXtFLPcjeCkq7dwcI8i21X0KfO7mWf6oiYzK9u4LaZzXJ3O2LiJpBHI+w7by\nUwuQZOaklqlnoFdgNUJ1j8W6Z8dV8qDhZwn9bQyb72U1zw/faU57+xykv2bN\nx7Yel5aFrQopw9Lmm9deNnKPtAqCDtVI0KH+GIOKcQx/QGV0Rv20GKJUvQen\n6TDMGLt17XoQsNLhn+DeHtQm32xEMn7KFMIKhAe25udRz6pc0JR7Is6bSEIO\nwebr/sNdI6HoJAw11wBUxMeSMtC+5VV6ItlLA2D9DWRk+QtQPh+b+Pd+uVO7\nm0qJ\r\n=76fi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAeqCoj1UEuIo/P5iXLYchHaf+EiAKAOkSepcvF9T/07AiBtwYDrX1R3ac4Lyn5o3lQEgZv/+x+rh+221N7Ua5fWpw=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.0.0-rc.1_1560950502042_0.8096801461963752"},"_hasShrinkwrap":false},"2.0.0":{"name":"monocle-ts","version":"2.0.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.1.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.5.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"ec348cf60045e5b2d716212ede88512edac79887","_id":"monocle-ts@2.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.1.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-vPM02WypUz0Xo2MtLUPgvdelCRn70VT05pdAB7qmHJSNY4CAoQt3ClpH77AG3yZk7PY8CA6++ezHcENUDOiuEA==","shasum":"f695dbfb5b017846d95f0c377bd4c8acb10f7e02","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.0.0.tgz","fileCount":32,"unpackedSize":121680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGikUCRA9TVsSAnZWagAAw3oP/ica0sUVdXTmlQb2brMJ\nDtlZ+aLL2qlR3H5NfNzuZfDEf9y9jSWgnFDfiSxoNgbuLg+WwcoBN5DsT7hD\nT+kQBj5bd4A+THAb/bWhHoA/dP6jJFrpcrtmcJOyK24hiqLbRPIfjPbgh5/P\noJu4uenxlHp88FzHuUV6vTssezzfqX3sTS03w2g0n/YRxWZSb5b4NqDzgzLY\n2iqlK7BedojSjJ2A8LMsx91m0qD15nalPiGc38qBA1uxS8/nNFHbdE49A63F\nEatuRnHi99Ubs+UhbrrQW9RGDV31EwSo6MiZDbsJ/yRPtvBwXzzo6VVGLrxC\nZsA2cqF3gDzaIxfwokLBRpw5hljAflG8qDaXv4+6aDK7cwKtycQUAyyBVROD\nfixm205n0+3IYCCv69W4PkJuyNlNOJ8ds+s6X9qmvu7+26Ix+klfd8O2LMr6\n04j37sFpO9GEf/lqQs7PV56vAI0PpPFqejS2GG4b3u8NzWmS4a83dOuwjQyK\npmE/ay3Wpmtu6xfHuJJ+MwAvSlFboVhXgRgX04fvuQ9pZ0opRQ7QyzhJPiRV\nBSZq9x8p1r1viIBXo3ocMsDBs+2Uv95i0tR/FxFLJu/G6wuVa2jazNnr9eja\n9+Xp65HMlXDgZaUwLpIXcGFq1QuOAROGX3cHSiuxWiMbeoJOhHLhRWCmiod7\nOahH\r\n=IAyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRe4C68h6Lc4euHSXYnqRQFmjiagYW7SdyRbGAcNoE+AiAoCMzHNJYqixiRM7Yg6ft+yuQU5EbKZKfU/iV+x3jaIg=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.0.0_1561995539424_0.7868467861064228"},"_hasShrinkwrap":false},"2.0.1":{"name":"monocle-ts","version":"2.0.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json && npm run import-path-rewrite","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts","import-path-rewrite":"import-path-rewrite"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.3.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.7.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"3801d2e0307785332a16809d0d3d343a171b9308","_id":"monocle-ts@2.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-e1ulohxv2LXuaU1hyziPWmNQRcEL2kRawU60+SVzHjb7i3AKs65KWKLHcXreONJah6I0kibeAnQaCTJ29txWXA==","shasum":"743b7a021144e2501e8162c66a2525b9f226d6b1","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.0.1.tgz","fileCount":32,"unpackedSize":143883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDvrbCRA9TVsSAnZWagAALl0P/AzTOq4dyEDUzqnqndC8\nTaJfUUWcbb+E3OHlWRGUmQmeL9WCTS8Rp/GzrzwBJuH1NylsbMF4olbI9wbO\nN+ZadZ95Z0IobFf9jPvDVegAhllUIUsD0J2ZuVydZGzFHTAN0CxjQS8fdMX3\nGnmPO7rxEwQ73hNorgIjMR+V8KAw8v5emlOkXQdSkW89ax3fBE3Jz+kYUgzZ\nZfZ/VOUOKFiQToNUZVlHlTSpJIrVxzDk+smU760fL5UFWZSSoWi7IMfoUgcs\nzeK4bV4FdadXWW6TnGFeOyDsoKZBmPgP/3pWrECgSBNQK2UTZLVkUV00oTdp\nQxpOzZ2r7i9WjpMSnLJJlPt++A4aCw6hpNxw/P4SxvnPcA4HODScREuPKSWO\nAu8SZJOO8VFb5Npw9jHtL/kmwKifTbNKk8n+6wJO9hyacYgC6Ohvj3/cc1Po\n4byyd0P422Dg9UnsqBolHR8BqgZHqxoU5osmzDuVOvEe9z0bgcHsHlT/R2kK\nwYQGZSc7lE72wRWaK1GVss7Ok8G2czaq8eTzaXif25s8xw0fiuMtHtT9XdmT\nI/0nbS0q/u81yNjB4ClN/HXPqbESY99PaqIclQ4ZynrXDTmXMwZUW6t1zsr+\n6LE400CNZu9I2P0EpZR+6nFvrZFhxoAyUD4rWkoSbWmedi0gixun/LROiDIl\nPxE2\r\n=Tyz9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmQcFEnY69LBalSMJo90urJVmqfb9VFRpmDRh8nTb2PAiBZzqIZf89LppIsSjxGtG8PQ5jNmhm5g36AtdXSYeiYKw=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.0.1_1578040026973_0.3657916653655573"},"_hasShrinkwrap":false},"2.1.0":{"name":"monocle-ts","version":"2.1.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json && npm run import-path-rewrite","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts","import-path-rewrite":"import-path-rewrite"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.3.1","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^1.15.3","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.7.2"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"106ec023cc31d0926a228371cda7780765f140e5","_id":"monocle-ts@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-YWH8TDcZSEeCaxp0ZjgccLChnaDvTiUHILpuI0DSZeASYSCgwdz+h6+uEG4QCwYreGsn1oI18ysrcUPv6xWK7w==","shasum":"5c1bbade7952b57e33f2179866467e87d9ed5977","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.1.0.tgz","fileCount":32,"unpackedSize":147197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMxh5CRA9TVsSAnZWagAAaG4QAJ58LI2euaYYUtcXcXFJ\nux1qZ1eyMR/XN2mpQxBFn8M0mtrv4szRlcz8IaQu24oNQFBwbWCV1r8PIMpO\nB8/3FBX0k4WFf780pbdmPxTmRP9GqZ3WJeMH4Z5W3aNEHUVaqaVALiwuQYcF\ne/l+GZEy98XVxIZ80WinHiQ2SnRzqFZ3Yo5Tn2bjPDBtMnfICU7u/kGSb97g\nz2wMBtJar56E08kXMi5Xbv3E7URqp5qrXOLJnHi9bcv+rSTBXa8r1FNUUnIv\nQQtKXcLwFEzRsVn9OU4yJRNAbj/0fkh9T9ZwziKnPPI1E2A4datQ4Sz5MIG4\n7Wp1wORJ9WD0XPDG56ErpPD+tL6bFMutlZvG0R0nHKpv8VhtZ3rlvW6zjS04\nwMxeazLa+uVcv7LQIvfZHYGj+/0p9y26b5LTa/DxSD55ZnCKjZyhaE/YZp5h\nWBe0eWi5VfxMnYw3XFS2UjDhjARqwT0CwDhj3r5WBm2OPv2v1tbHH+c42bEm\nvOwNodzoA3Q1WgwL3gbrxwuehwQX8/q3T5HSKU4PMok5IA3arM0aFfyBt9be\nUFTQJgDjznpLXwGW26ZR5b3AWBNaY2u+r91SMUtiRUVUdiRmInXwJhMa7Djb\ncjSaZxGMFy4tUiQ1H1N0Ku+GYrHqLzHKes+enUYtFPkBj9fJ7/UTmvn2SlDW\nP+Q2\r\n=8NL8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJS9T/rRnD6zX58Iv1FZwR5TT3rwv1ZrWVoffZDUYGuAIhAIX3XpOCFJ+lZ1eKroMT2DyYm4UVRGM4I2opoiAu5IlU"}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.1.0_1580406904916_0.540395760171053"},"_hasShrinkwrap":false},"2.1.1":{"name":"monocle-ts","version":"2.1.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p tsconfig.tslint.json src/**/*.ts test/**/*.ts","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json && npm run import-path-rewrite","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts","import-path-rewrite":"import-path-rewrite"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.4.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.8.3"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"fa27988b37ad39766febdec31d92f4dbfa2b6369","_id":"monocle-ts@2.1.1","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-4+dtDbYd+ixvyfILPNrbRGYrXVZF7IogQ8qVD+bUYKc9o+AggdkqM8AmN8v34cDjDgskkoT9VT50iDVRzUy56A==","shasum":"9c3b098abf6b5c728f999a4d919bd9cc37662bd0","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.1.1.tgz","fileCount":32,"unpackedSize":149664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeznzFCRA9TVsSAnZWagAAQMYP/1YEfoan4fvEmeAkMJ9z\naDI55zLTlbHFpUc0ePD72Ph1kRs1dJ/lCW9NPxkCRtp/kIN900gzE7XWcsQS\nxxXHZiuKT2a7bzxi2Gn6IsET0ZacAFKGa58xALPAzX++umZJ5YU1fYFa/2Pv\nQ+ctucjbvw+AIx5EVOlYgVdZJKbdeYPptX30jTJCrIqo14G6g/UbbKpybhNj\nQjUwvC77ZcP6iG9M53i6G/kXouWeX40urpucEQunHJkKqFR6F/8mTpl7TDCt\nH9bR/8QV83SX0QRzbdxasLQLrzxpC70HAVG9qSt+6wn+d8cmOoP3rJPbcIB2\nIGCvzYFd8vSP4bDsTwmhTQipAK9y1teC4sibOFPsbp2CjkxOUpEER4TpwsVG\nw4DItByaRdimNtK+b6SdT4eOJXROPdHRr8dqqlKAh/aoH08hKw7tQhya2nzh\n6EUi5G8WAY3a04ho5Ns9SvjjIe1lMEbI8aczsCI7ne+NAMi2Spi8Z+RcAZDP\nzDU4BV+QtquRZDytpAS3R9rHWibEgb+YqrCebg58q/5JU7T/Siyplh/EHsA0\ngEUXaoW/AOw4uJx1jMIyqlQ0skIgZL90cULKWlO7Bf+NwEoWdaneg/R3i4gA\nKCWbLL9uocMH2YZkpX9uuzR8KsSPM5MKrUoMEP2oxIeHwpmxCQdG2ZEqt8Am\nQpo7\r\n=CHFZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQN0wov/sMqGd8wa/wwrwXAttnO1kTv2Dpvtx8wWwakwIgNOJ3rxAqTVb5RIo4oASILN2EvjcfO3r3ByN3qpM8Tn0="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.1.1_1590590660658_0.94661236998383"},"_hasShrinkwrap":false},"2.2.0":{"name":"monocle-ts","version":"2.2.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc && tsc -p tsconfig.es6.json && npm run import-path-rewrite","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts","import-path-rewrite":"import-path-rewrite"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.4.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.0.0","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.9.3"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"jest":{"collectCoverage":true,"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"test","moduleFileExtensions":["ts","js"],"testPathIgnorePatterns":["helpers.ts"]},"gitHead":"07725da1775e010fe6fb9598a05c908bc03df200","_id":"monocle-ts@2.2.0","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-ilfckgLMtfg+5ExxzdQxuEB2o7HcZjuevBkxwZ78d8p4Yo6QPwd8MRAfEgFXYBSyALgPV93RmRV7eHCfVP8jYw==","shasum":"0837e9ab882e89ebf8fc2dd2514ec97c07baa0fa","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.2.0.tgz","fileCount":52,"unpackedSize":154092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2RklCRA9TVsSAnZWagAAWHkQAJ9s8fAv9D5n0D13kckk\ncInyAulD7tYu60opwswmlnN7YP331m3wBnc21KiKdKqp8SAzh6Wau1FLA4pW\nkvnu/zYZZ62KJnCqkUF0icAzMmntCIw//PDKSD4SB7keUH1igx303tAc5j4y\na89eGEvR4YoAzX7E7K22U9R9agFArLsi+UjLoB6irrt818yR6O4i1NNtlEwQ\nvmJeqQkyUKnwLAypSTbAfGsg0UCeUExJjhGmSyLpS2xyLhh9FHV/p91ZX9/4\nAZg7rkboEg1lCcSsL8HSIeJ74O9KQSpcejwl0/KS7tbGov6ofte1e79Dx4jw\nXTGztPkyS0efHpf0ozP3kgDtwc/qsKg4jU0KENarFXDSGQlS/9HhLAmvFNjH\nklNbPTZ8pHbn1Cy3VR+fcNDMcd/L776jFWwQjEZRwXHmZ3GPbnSP60Rqvm8f\nJgXwMLguKOuOejwVXsG8FLIZAYUZ8B9v2XGidDTd+Sim9gLJuO/7VsqMN6na\ne4+BCEU2JC9duzdyhIj/VvYZ9+A6+UPngKnX78JMHVvuCD8dhjzgyzNl3A+9\niq8Of9d07fjs0rUSS2NzfsuPfvMPFCtCPM+3Ms3nMcPlPUvFrr4yFqCK4vlp\ncgSBZkWXYa7Z+miiN3oK8+R+BEVdpIPqP4X87prANmaNKNTDwZI7iUctpRtI\n+hoy\r\n=jsSj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQGk/bNsSrtaIGhtWmmT89nEcTNwcm9FO64rLrqESnBAiEAtyLLp84AWPAppbBvc5RLxD6u8uWtXPtQxorkmGARbuU="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.2.0_1591286053247_0.32187253142297"},"_hasShrinkwrap":false},"2.3.0":{"name":"monocle-ts","version":"2.3.0","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts","import-path-rewrite":"import-path-rewrite"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.6.5","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.9.5"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"eb4eaeb55885b143b7a9627b40184ef5fa3f93d2","_id":"monocle-ts@2.3.0","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-1f9he9E39uS4zsj7Ueji9l+tYiiIb/EAoYTqVx+qPZ2UGcztUSXTQzwKSrvEglrATO0AR75dhNWrWW8HLtGCnw==","shasum":"9e076cc959c0bf42fb87084699308bbc28d202bd","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.0.tgz","fileCount":84,"unpackedSize":276538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBeIJCRA9TVsSAnZWagAAaBMP/0RJQf9Ody+L9HiG+yKi\nF7ExWolAOXiKmNp08EyC6T3fkb5Hph+iXp+I3r3DwrfuAtgfhSosyhJH301M\ndjhhXAAC+m2yYB4Am2uBGUqdeei0z/R6+oiFjDNx4QKzFsN5TBY3qE2Em5iR\nLP+S/3264dzPP9drPUAWJLE2HLTUJhzQdt44OWpvVf/upDwfdgkgzuVDDxFt\nNFjjVeEoG+Gp5VS+rrqdvIFW59ZLHunxdSHy1J63q3NO28JFlDioYZMyuiQU\nzH4X5gP9PKnyGmx6of6MW4D8647Jnv/JVKIjBuMGq6ZIC5jMyI0GKouG0E6O\nOFaotRDfNt7gfzyKgkLmbGs311ZFJDm47kNoynz1cbKqjqu2u3laZilRjv6Y\nTFq2hlAkm0gStxV48qrWQIQ+OIrtdh+RbSvCmypSPAgC1jjyiud6f6ePo+Ry\naaBO5caxuVUtFUVItz4fQK0JxjCQrjc736/FWpLzjf/n81fcnghdG5Udcm5B\nerhOSB80kq69BaRKK88fq1+IFfo8FcLwtPqX1/bYwxedUIk710TElLa1r0cZ\nZXjf9ogOxVYxYne3MNdhmQPCN0FvceJsJEKDiaHySqgcr9Pp/h95LDztqkxn\npUzXwTgMqAJj78+a6q6fIraOTDwmyUDE2Q0NNGzP+zclpYN1drjmMhZ8668e\n46+F\r\n=8O3J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAa4kUhRCkhGrTrSmZ/quKmETNczFu6kvDq7Bb2bMKfgAiEA2UWkHJKku+SJhFc5HGkM2hwModZdKvVuQcGqlFXy3F4="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.0_1594221065298_0.29082213300018944"},"_hasShrinkwrap":false},"2.3.1":{"name":"monocle-ts","version":"2.3.1","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"import-path-rewrite && prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.6.5","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.9.5"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"e947005c37ec2f2c6d82b5ef44dda6fa51660bd0","_id":"monocle-ts@2.3.1","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-VYfbzBZBHwsWsyrsnpneu0Ma6Tkjof1LOGQtgIhm3NJT1u4oJCPY8EeBgfvS43rmMOQzBLM2LCkFrUfiLFjlAw==","shasum":"1f3768cde3a61e9f189fbb6cc9a70f87fa6d7ea4","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.1.tgz","fileCount":84,"unpackedSize":276528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBsCJCRA9TVsSAnZWagAARxsP/i913DgWZDO+zwXyP92n\np6gdzNiRD7jAnv3F6FcLqLIqVR4BMAYkkyCGaGn3rAcAWXSUTVnJC1rnn5ee\n5/Aiq8bGQK7v47OQxDbX3y7QJpSWHTxpmEjal3TvoXfIL3sAotdjRuAvLalm\n6AGi9lz+mVvsuL2y/2/JTY/YjlUg7BVfBDKE2BKkq7GvbqMH0KDED160wJ0Q\nA0bSdUNLkYS6SjuTYqNnThQejLMk1awr7LqeAIpnWaPXUrPXjvyDlAhXRkhC\nxsqe+v3MQmkp8dIavCPeuiRU8XwvvMGAShhLbH/YYgU65lw/CRRfRl/ea8dQ\nka7kHrr8KGZjz10SEExKzF4GiMo+tm52KY2f98vlv2nu4x1RPmhf92hqAYwZ\nlrtqLp69PRiAHIgbYegzaimYwt/lvhydKgXGsBKSq80TrFUhR+FiPUXw0zqJ\nurhsBM8xjplYru/hP9YBqmnljFH0s3fkcgHwi86PWzZCFq9Ds0jvah858Cfi\nUAgZ/BVb7A76aorODJ0DY5QeKeIREVF7wzqUrAUDH+Rp/xjBpqekNK3hq0IP\n6PdAN5KKL7X/q+avyMdavtnxjhP6tPD1IIV2m9BlHPF8zHRWgj6qHxvRPeM2\n47/vjetrbd/fNh6hWkMouJb5EFIVhJNqMwlEI14h4FOx6aY7le9W1CFk+qb9\ncLpC\r\n=Vtvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICv8EM+llRDhNwMZSl1xUSTTZEisRes4HKfg+O+DEgRUAiEAx3642W99mZPx9BUDbzvAjf23SRMbXvjsL6jRv3U3UCE="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.1_1594278024812_0.30253626343425366"},"_hasShrinkwrap":false},"2.3.2":{"name":"monocle-ts","version":"2.3.2","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"import-path-rewrite && prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.6.5","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.9.5"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"798d7bcc51d08a5e9fe0223846de6d916fc118ce","_id":"monocle-ts@2.3.2","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-1devyvOJyskBvmybp3iXPdG+MhCMwPnYIqA8wwSm+Yjeu0SW0HRDjgC2tb+f4T2W4CA0wKwEjaTlSISiEL4JVw==","shasum":"62355c4a3e01355f78ae675d5b3959a46f82ac20","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.2.tgz","fileCount":84,"unpackedSize":284186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCEhhCRA9TVsSAnZWagAAkcUP/jEeESwG1NTrpa6tIFwv\nBtUA8a26UH9z/FIytmHBtfItuknbf0rC4+u4/1zko1KjN0mXh/+WitzGjhbg\nJ1jZ6wVNkCxalWEKWe7fZwnEK4407h3B6VYoTTKgR8XmzeLvVrPXaKXFGhl0\n5jRyzpljDuox2ir5YWsUcKyfHIpdsJrE32k8v7x/h/odh6qfpYh8jTxdZcVO\nY+pjnNe0eZcd7EmnQVT363n5HvyuUME8RT3fAvR+IPz/jhyGrLU80bex9AdS\nLCffmL5sBiyd+0W8N0Mf34vsGF1Sm51iykSz7Dwp2GVATgU6qkU8l99tZNB7\nBTehCjtajnIc9kjLMuDy6C+CiikwlapIc5JwGLgSeybMe0CqGd0f7WwRB6ZJ\noIrylwb7Uo6QSxre+tnkiSx0AasPGAP2tdRUobKMY/JhqtB4cDARFx0YuxR4\nc7ti+J/Y6e5vuv+I8gVOiiRU0YQjXGxH/9Xvx+oPca7p2MYheSaMWf5OZgYw\naWxsE4nOACCmeZc9bYNsKA6VrB/rNFL24VDZcgaWHQCxxmDqPeF3wkZ2vFDc\ndjDbpr7IxwaPlISw4XofmhweJ762/KupPOo3HBruci23FRNwcDYuz6zxGcGZ\nMPrVRu6y0C5aCxtOsshKUlxadDpyw9yG9rEAaIs58iDsz+ntw1qtVIMTB9Sf\nxHt7\r\n=fVTl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhnOod5a2ZmDMwW5MTugvWwa9jvLNZbdviWV6B5hbSAAiATDGk42VZbZ0le8ojqkpGTsUTHl7O1RIGjTcLaB8PyIg=="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.2_1594378337225_0.32087598621220326"},"_hasShrinkwrap":false},"2.3.3":{"name":"monocle-ts","version":"2.3.3","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"import-path-rewrite && prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.6.5","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^3.9.5"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"28868eaad43388a2e54ebe6703d1bb35c4d3b779","_id":"monocle-ts@2.3.3","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-pcQyauWO2vapxyZgbhTd73Dv8TmTELx1rL81bvrtPO2sUYTi1MIHmw3j/iMyeNaJwTmnGNAjqJpYV8Gq1Eu68g==","shasum":"1e6d83dcf42bcb96b74fdda07813c2a47ec6cfa4","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.3.tgz","fileCount":84,"unpackedSize":285267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDKQ6CRA9TVsSAnZWagAAHkEP/R3RLTP8wnPrRAzWJf8F\nENoW2gyd68NcAH5eKyamcb/t4qcy8zlPd4sCg29jYlsli13pyIFnUGGDs+Mi\np2U9EPoRn5DDysh32yEfcrIHei6gOG4aaVFZimJqPX8u5pHaPK+1MqeIThIU\n2p++nhzmnGdejzulUI8/mzmT0/brQvfWvQJkrG5Cxq+UW7rA1LxJSMSbHvsM\nuKJ0DZaQvIgimrf/hHjO3eTZt1Zj8h8JTQBKKEM8PJBLL+1s5SK/LUAazEvP\n+twRdhrtJzG5rCHpBaPTOf7/Y6Ff6nAnIEMQRDpquJEUUf62ty0rH07DD115\n+df3OcfDMQWXYfUGVfzMeAGMwhuCj4TyyeqGpgQWNEulCEhyvnuu1mkurOC/\n71casyi4PXC448dby1iMla1GrSwTs14NNCfnAvFt15fuyAma66bdqSeBUHRo\nIpLoy4R8xiKxpfjvES9gQGHi1+xGDASTStx5rYzyeMY4TcqncgakunU5rQvb\nZWteMNAKPEYuDMkQmI1zqo3wxhnHBUB08EKsabtvraSWDp9zeQiZ82ckNo4a\nQOrs7ngZS0EfF4kaGW6gSByVz9V8f2TKk6xCMG/9iEKkLR2Kwwa119sBVxp0\nAYcQaoIdd1rB7N/LOzKjy6i9ahGGQaG95e7cTvjuEhRdUKHpP3N7aAMnOfc+\ngDdt\r\n=wUM1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHfG3oSz1xNs6E8AI5837CZ6V7Xe+xJ8oNid2MK65GgHAiEAt/LRQ+Kbwwo1D9YmCjBqnqr+Fi7lwY4rnALqpHBPLpA="}]},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.3_1594663994264_0.0696040905894939"},"_hasShrinkwrap":false},"2.3.4":{"name":"monocle-ts","version":"2.3.4","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"import-path-rewrite && prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.6.5","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^4.1.3"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"2cbd238f6b03b5f5b9ba1991a5d7a00034c7c1da","_id":"monocle-ts@2.3.4","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-94QvNtNRyh5CwLzZpJADCsSuv9mfuXucjz2Xs7nB3Jhij/rYKNMW2ugKvg7OxWIdnPQTYApEivdoR0rGhMCirA==","shasum":"19136b1c9ed6d01b7f0f4cbdc5e06e24658bff0a","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.4.tgz","fileCount":84,"unpackedSize":288110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9W9PCRA9TVsSAnZWagAA71MP/02Ph1N0D2+NHFj1VVxh\n5gliA9usB+3gQvMvBciOVhv+SKfOUd79oDmp6qFGyHZSWpm7sZAzaKCalTUz\neODnKqZRKneBswIJrlUMBp8/3KGyRPSUBGL1WZzXFCn62kwgY36WAIu3maZ2\nK7peWgTcDbPXrx5Yow71NDI1HxT0kvn60+VjeVGtY/BH34k+/x0inwea6d36\nZ8ASGXnJ5tKPDB2CW4a6W6sXuVmpDx0t/rqDQmuJzarKBGLWIC9//2EzMzJc\nmh23N+8IBvq3LjNibAY1NpwA/lvUdoySilsH7zjJN9qpYgvv/8Xh06Dwk+XB\ncoOw5K+exOhBbuEutaATJbdH6MvuBXg+RyKQU7wZHXsFVStjbenl67yZzQ3z\nkCZpFQMMNQfhk2odk6cmhY0uvn722490anBdDykxOfzGfq+HRYFBE4HJp+1s\nuUfd75KRRpA8CDXUwwiMvNIdrpRNxj6wxM48p9JTkpU5+9z7UZKsvm4TV3kk\nMucUsqxvNY7ohCpWKkbWneLKOjSVsILmfj9bc91ZK/juBFPVQIE0xM5bGFDB\nAbif6YhD9i1TpQ8kd05jT9zR16Vpqo7D3chg35RTOoZMgfQqAi8vgSYpCAnF\nVn0f0qsZBtSXXX1GaEkB9ud043CSqKmR/eKn9I/NCMGRnbOmlGoN15AUlJZr\nyBEa\r\n=uZ3+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuGNiU957z7rw3ws7en/VD8vVp90CorV8usKrobM4TXAiEAvHWLO+jPTK+OGibRINgrga+Zn6KlEcj2zJTjoJ1B3AM="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.4_1609920334864_0.8090652720974865"},"_hasShrinkwrap":false},"2.3.5":{"name":"monocle-ts","version":"2.3.5","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"scripts":{"lint":"tslint -p .","jest":"jest","jest-coverage":"jest --ci --coverage","prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --list-different \"{src,test,examples}/**/*.ts\"","fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser typescript --write \"{src,test,examples}/**/*.ts\"","test":"npm run prettier && npm run lint && npm run dtslint && npm run jest && npm run docs","clean":"rimraf lib/* es6/*","build":"npm run clean && tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json","postbuild":"import-path-rewrite && prettier --write \"./{lib,es6}/**/*.ts\"","prepublish":"npm run build","docs-fix-prettier":"prettier --no-semi --single-quote --print-width 120 --parser markdown --write \"README.md\"","dtslint":"dtslint dtslint","mocha":"TS_NODE_CACHE=false mocha -r ts-node/register test/*.ts","docs":"docs-ts"},"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"devDependencies":{"@types/jest":"22.2.2","@types/node":"7.0.4","docs-ts":"^0.5.0","dtslint":"github:gcanti/dtslint","fp-ts":"^2.9.3","import-path-rewrite":"github:gcanti/import-path-rewrite","jest":"^24.3.0","mocha":"^5.2.0","prettier":"^2.0.2","rimraf":"^2.6.3","ts-jest":"^24.0.0","ts-node":"^8.0.2","tslint":"^5.12.1","tslint-config-standard":"^8.0.1","typescript":"^4.1.3"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"gitHead":"5eeb6f2f634a7b4aa91e3b6746026bb5306b15ba","_id":"monocle-ts@2.3.5","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-Xm9jdWvqFrlV0k965eY5AlCpWIIUBY2ExzGbEG+byMs+mZI4J7zvaUOLpQ8MTFgkpgyEnu4qUhuZT/Or3QeRiA==","shasum":"1ff90b08616254b887e4c2bc5b2a9764fed16723","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.5.tgz","fileCount":84,"unpackedSize":296568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCocgCRA9TVsSAnZWagAAFtEP/0/Gfei2sHDx1pZmQWU9\nFAVbaWY9MQXLDb5v9pVmBU1CICOrCa7Nf3Qo8hBagpG9mLeTxqNp9p5kIvrB\nZdpNIaPXDEfWlwXWhLmR8YURUQiWubTPdz/DzT+Q5MEItKTnnUNrsBmoAaRo\nGzG/dg8z/pQzy76eicvh7E1d93cPcmjkslsiRO62Q6IvvnL1Lp7z/vAmWXnW\nl9khi+a2M+T5w4btcAc+QB7ttdEm+jh5LJPUkxAy67/VLcDG7f8/pJxaHFRo\n+PZTDj4cR5ZsqeMMuB8VVoKFuDBk2Ap8DskHwFL+0Oa7kDM+Ifo0IAqcBmpN\nv0czEC3YrNk32QmtcDioW5vw+Xux8CICd2HGBfTqDnRMZP+nI69M9nX+OoZQ\nQ02xnlpBi+eMSPYSqh15RVg3thm8rXAubHXosLIvCgF88/QVc9I+2lZ7Aspg\n9zZdL19y4UiZKWQGusc8OizrISTkLO5v/uzdxlpJHWrNB3w0egnCfQYpw2/G\nvVB3G2pVEBZ3HpPoJTas/CtmvJA9nnixuI2j+GqhJTJUxxi5rO3/O8ox21GT\n4CbQ5WfG+2je7OaB6KlQFUjGLsXVqdgD8atMHazcSVmPVrNYiWuZzW6Mp+Ip\nwLucAAz68YCy+aPcWoxYIvuArEaCVX9yoFRgp8Q2PwELKeuOUSZ7srkgB5Qb\njCU3\r\n=fnAO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlYv0tTIw8IdRXFzuuEZP9kgfXbUkxhYOFMJkoIVzNeQIhALfPSIYuIF3sz4g/nfHBZYBOo1mCsaqkJgtLLlplcBXG"}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.5_1611302688058_0.38410795030926526"},"_hasShrinkwrap":false},"2.3.6":{"name":"monocle-ts","version":"2.3.6","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"readme":"[![build status](https://img.shields.io/travis/gcanti/monocle-ts/master.svg?style=flat-square)](https://travis-ci.org/gcanti/monocle-ts)\n[![dependency status](https://img.shields.io/david/gcanti/monocle-ts.svg?style=flat-square)](https://david-dm.org/gcanti/monocle-ts)\n![npm downloads](https://img.shields.io/npm/dm/monocle-ts.svg)\n\n# Motivation\n\n(Adapted from [monocle site](https://www.optics.dev/Monocle/))\n\nModifying immutable nested object in JavaScript is verbose which makes code difficult to understand and reason about.\n\nLet's have a look at some examples:\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n```\n\nLet’s say we have an employee and we need to upper case the first character of his company street name. Here is how we\ncould write it in vanilla JavaScript\n\n```ts\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n```\n\nAs we can see copy is not convenient to update nested objects because we need to repeat ourselves. Let's see what could\nwe do with `monocle-ts`\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst company = Lens.fromProp<Employee>()('company')\nconst address = Lens.fromProp<Company>()('address')\nconst street = Lens.fromProp<Address>()('street')\nconst name = Lens.fromProp<Street>()('name')\n```\n\n`compose` takes two `Lenses`, one from `A` to `B` and another one from `B` to `C` and creates a third `Lens` from `A` to\n`C`. Therefore, after composing `company`, `address`, `street` and `name`, we obtain a `Lens` from `Employee` to\n`string` (the street name). Now we can use this `Lens` issued from the composition to modify the street name using the\nfunction `capitalize`\n\n```ts\nconst capitalizeName = company.compose(address).compose(street).compose(name).modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n```\n\nYou can use the `fromPath` API to avoid some boilerplate\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst name = Lens.fromPath<Employee>()(['company', 'address', 'street', 'name'])\n\nconst capitalizeName = name.modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized) // true\n```\n\nHere `modify` lift a function `string => string` to a function `Employee => Employee`. It works but it would be clearer\nif we could zoom into the first character of a `string` with a `Lens`. However, we cannot write such a `Lens` because\n`Lenses` require the field they are directed at to be _mandatory_. In our case the first character of a `string` is\noptional as a `string` can be empty. So we need another abstraction that would be a sort of partial Lens, in\n`monocle-ts` it is called an `Optional`.\n\n```ts\nimport { Optional } from 'monocle-ts'\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetterOptional = new Optional<string, string>(\n  (s) => (s.length > 0 ? some(s[0]) : none),\n  (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n)\n\nconst firstLetter = company.compose(address).compose(street).compose(name).asOptional().compose(firstLetterOptional)\n\nassert.deepStrictEqual(firstLetter.modify((s) => s.toUpperCase())(employee), employeeCapitalized)\n```\n\nSimilarly to `compose` for lenses, `compose` for optionals takes two `Optionals`, one from `A` to `B` and another from\n`B` to `C` and creates a third `Optional` from `A` to `C`. All `Lenses` can be seen as `Optionals` where the optional\nelement to zoom into is always present, hence composing an `Optional` and a `Lens` always produces an `Optional`.\n\n# TypeScript compatibility\n\nThe stable version is tested against TypeScript 3.5.2, but should run with TypeScript 2.8.0+ too\n\n| `monocle-ts` version | required `typescript` version |\n| -------------------- | ----------------------------- |\n| 2.0.x+               | 3.5+                          |\n| 1.x+                 | 2.8.0+                        |\n\n**Note**. If you are running `< typescript@3.0.1` you have to polyfill `unknown`.\n\nYou can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.\n\n# Documentation\n\n- [API Reference](https://gcanti.github.io/monocle-ts/)\n\n# Experimental modules\n\nFrom `monocle@2.3+` you can use the following experimental modules\n\n- `Iso`\n- `Lens`\n- `Prism`\n- `Optional`\n- `Traversal`\n- `At`\n- `Ix`\n\nwhich implement the same features contained in `index.ts` but are `pipe`-based instead of `class`-based.\n\nHere's the same examples with the new API\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n\nimport * as assert from 'assert'\nimport * as L from 'monocle-ts/lib/Lens'\nimport { pipe } from 'fp-ts/lib/function'\n\nconst capitalizeName = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.modify(capitalize)\n)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n\nimport * as O from 'monocle-ts/lib/Optional'\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetterOptional: O.Optional<string, string> = {\n  getOption: (s) => (s.length > 0 ? some(s[0]) : none),\n  set: (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n}\n\nconst firstLetter = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.composeOptional(firstLetterOptional)\n)\n\nassert.deepStrictEqual(\n  pipe(\n    firstLetter,\n    O.modify((s) => s.toUpperCase())\n  )(employee),\n  employeeCapitalized\n)\n```\n","readmeFilename":"README.md","_id":"monocle-ts@2.3.6","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-J/FGWJVAMexX1s3Ak8IIzFCBnAtQt4r2idlvRlPt9J2gYc2OZ/EyJaYcDFRkOObmu96YHSkT4aYmIrmUtYoFNw==","shasum":"2b7524fc7f4257a5053bc1a9f4ed8a33079ea162","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.6.tgz","fileCount":103,"unpackedSize":297826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPl7YCRA9TVsSAnZWagAAkUkQAKN43jXrQaTMbWJQlNaQ\ndFnsgmrx1EcnHCLWcImanihHjamRcnzP2Etw8h+2oEslWygsfj9za6h3bbJ4\n/LyEHx6FdPYtTqMjErqS/heQeVV5q5wrS1XYCJFUwdWubhImIp94Is/Hz+Kz\nhx0Hma+ONcSGaU/cWQnsE1BGN7CAYiQWwedfsbjW//bZnMdWC/W0vpDjTzh2\neEpIDjRXH1TfpxXNH1Q4tKyyj+KjQuQfDNeokyujQFUFz6YPxmyLUlagMLDI\nWJr1yYZ3YgbgZUCbflmdh1arWHra/D21DqX4ZiEdq5Fvtn18MZ7EnoFH+Yf/\nJvTeh7Ogda62UfufgBNlfm4ls5CXhkk0+h6ZKVccjuLa0PmLRgJeMruSNao9\nXBc6nN41KG92GV93bczfz7yjMTmwGYCjAqip3O5n4yEEcH9+3gYInhcvkCLC\nVNuYSI5xzjElINS1RRPmTeuB3kgWbdb+PgPQ3xmqxB+UwfydJFz60Rz/2G2S\nNUAwKc+KpsIAwUmpZv8DR4Nv9XwBoMxNsd6b9vb4G8B7kUBsPwKiNTMafreg\n+q3wY9o4xD2r7qNaiMOgvzPMP25YQmkawQa4hZOi8FdsOdtmdcTtae94Huny\nghRPh4RE6tP8w8eyPSW0/yVWQ+WYkwKNqRqMRC8QALrRgZLXETctFC/sxyFI\nEKHR\r\n=DJ29\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+7Q3HRxW5WyO1+yvNJkhSfVfUaPN/tXgZkiR8gJc89wIgdEQJyC0jzFKZv6ci+1Qw4P0hU02HaHskEsAgiWLAVhA="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.6_1614700247577_0.5406729510195711"},"_hasShrinkwrap":false},"2.3.7":{"name":"monocle-ts","version":"2.3.7","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.0.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.7","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-fPWH8gDfZEXk1Ck9Dkasne8rDnd3wnIHjNydZVhJSSmcE43gT0djzgdAH6CGC84geXEtnX4D5FKORaYp93V9VQ==","shasum":"d9cd8e8daae75bf11e5b25f92020678bb9385bfc","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.7.tgz","fileCount":103,"unpackedSize":309886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQQbjCRA9TVsSAnZWagAAGhUP/jSWLFqn0D6b+L6ervbQ\nwMqFBCR4TC7XA0zT6Z028H5kgQtv1nLO+3YqrqvwY7EkchnW85E4+h9SNYKk\nTzcse3QdoluE+nIoNISCHeFjQ3uX5DWhRc02jY5yuVvQCQfqsMABOa3PXY3n\n+XysoCwVbt9FjTlJ0C+cdMBM/rTgOa6ygYdSWVs/dQIYn7DHo0ek7TWw2Ygp\n9qZaJPfGW0CpTS3rVNdsK2t4iE1S+EvX3lJSH5Vu9FGTPzmej58/y8HpRJQc\nHEDwbkSLymm7lJvn+e+ms+PBTFyOVbSeOOg+DR32Ct3LjfsAJn5v9VG0Xq2j\nqA098np73MxFvfpchDImQ7gJet49HiEjvFhoGa3X2q7e29Jf1XCn8YWxaZy7\n8kjkG4E6l9oeTLCRRe82v0yvXP5wm3BTyrSVZjEGy0SqahuxrVuJN8NXAIwY\nIb6jjPSaQgUgpLYehWlZZcx2juSKGUD2Ind+830yXDMULHBqEP5Am1M38mRT\n1I2DjQXd0leno3WNuntD/BxcUg/cB/augXEl/4soheUtvfZtVn+U7FvfmMxH\nLKIj8JKDSYN6pDwUFhvK2TSOTMnPZuzCdW78pVIrhMQyloiZigxXq5JnDQxv\nTnmpU5fddR8/gwVfTzzq5toWnM7Wfwat9HoHgE2eUm+t06MpYWPElaAHcSKR\nslcR\r\n=xR1i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD70/kQmSK3me6ilJzQaKoujOno1kSKh6W9/2YN6yIIewIhAOLpjZOFsBmQG3BYzJo8A9yuviDJ/+bAfn/KqGRn2nZ1"}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.7_1614874338847_0.6232370618497203"},"_hasShrinkwrap":false},"2.3.8":{"name":"monocle-ts","version":"2.3.8","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.8","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-77DZ+9FaDNk43AOYEMVdwC8yHsle1OL0IcgaBv+tCS/HnY6mV2kRMsxxgqnj1uL7/LrR1eCpyrRlpquq8bQQoQ==","shasum":"f11831df5a0c450f754b87da174480e35987b441","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.8.tgz","fileCount":103,"unpackedSize":364516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRgZTCRA9TVsSAnZWagAAzXIQAIx0dSxnd8KMNzYiR1Vi\nrvzeUjvh9MTykZKjNZYdG/gr6YI/m6Ycw5FEiW/z+IlVfMqQNKxjF7qqwGt3\nUeU9kuLUj3FVdi4euFrkBAOU+GfiXos74xVBt17ab/YEW5gLvUAbCWCJ6mPM\nLYzW7ULfDt4uWdKe4l+MSxbprL4FQsJB2DyCgHHHA0Lu5rrv6bqwOs/00fYo\nR91WxVI20ljwmhuLljURBuV2jJ3gbfGVenPcQVsGKzwoZdzBUTJmfywapLM8\nBnVT4RDdmD46lBOs9iWgcb5gQsbvLhHYubYrAdtNEnnvfWZD5zwpFi9qcIXt\nFH3gUATj8S1S17FjcdLwW7eqa7UhKqjFUPOpiinnAGjSDmuwemUpPUMAqBho\nVwNMlafFHsLItLXfb7KoL5o85dTCQmgxtzru3Djias8bGMz0gQYj59xM0o+L\nKFZ0QXdQDvRgYPmEVl9xvxd4UsYtYjOLt4s1NSqE80+6pwhc/k1hnga8gtFC\nDmTvW3xD4WAvhVk86ZOhlUR1bYvmQbQMXP49jcZSVePdagcrX8542ah1syTf\nGPfMtFsXS9AKWOFv/rNy9uYdGj1bBfUGj7SfKdxk4bft6Hb1BtimrqgumsFO\nfhYEoxIl5Mus6psQKxbrOary8tv9iVTunsJ8oRMpETnVRmdov0fvgNlTHSBy\nRb/a\r\n=Iqs5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFYA/cQdTBT0Aif5VDD2FyJwfB/Y8/ogtqpd/+qmwGECAiEAvwihXu6+5+OOn5SyFSqn6jEZF3XMTrQZPLIWeeNYnQQ="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.8_1615201875156_0.5977521012088165"},"_hasShrinkwrap":false},"2.3.9":{"name":"monocle-ts","version":"2.3.9","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"readme":"[![build status](https://img.shields.io/travis/gcanti/monocle-ts/master.svg?style=flat-square)](https://travis-ci.org/gcanti/monocle-ts)\n[![dependency status](https://img.shields.io/david/gcanti/monocle-ts.svg?style=flat-square)](https://david-dm.org/gcanti/monocle-ts)\n![npm downloads](https://img.shields.io/npm/dm/monocle-ts.svg)\n\n# Motivation\n\n(Adapted from [monocle site](https://www.optics.dev/Monocle/))\n\nModifying immutable nested object in JavaScript is verbose which makes code difficult to understand and reason about.\n\nLet's have a look at some examples:\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n```\n\nLet’s say we have an employee and we need to upper case the first character of his company street name. Here is how we\ncould write it in vanilla JavaScript\n\n```ts\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n```\n\nAs we can see copy is not convenient to update nested objects because we need to repeat ourselves. Let's see what could\nwe do with `monocle-ts`\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst company = Lens.fromProp<Employee>()('company')\nconst address = Lens.fromProp<Company>()('address')\nconst street = Lens.fromProp<Address>()('street')\nconst name = Lens.fromProp<Street>()('name')\n```\n\n`compose` takes two `Lenses`, one from `A` to `B` and another one from `B` to `C` and creates a third `Lens` from `A` to\n`C`. Therefore, after composing `company`, `address`, `street` and `name`, we obtain a `Lens` from `Employee` to\n`string` (the street name). Now we can use this `Lens` issued from the composition to modify the street name using the\nfunction `capitalize`\n\n```ts\nconst capitalizeName = company.compose(address).compose(street).compose(name).modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n```\n\nYou can use the `fromPath` API to avoid some boilerplate\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst name = Lens.fromPath<Employee>()(['company', 'address', 'street', 'name'])\n\nconst capitalizeName = name.modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized) // true\n```\n\nHere `modify` lift a function `string => string` to a function `Employee => Employee`. It works but it would be clearer\nif we could zoom into the first character of a `string` with a `Lens`. However, we cannot write such a `Lens` because\n`Lenses` require the field they are directed at to be _mandatory_. In our case the first character of a `string` is\noptional as a `string` can be empty. So we need another abstraction that would be a sort of partial Lens, in\n`monocle-ts` it is called an `Optional`.\n\n```ts\nimport { Optional } from 'monocle-ts'\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetterOptional = new Optional<string, string>(\n  (s) => (s.length > 0 ? some(s[0]) : none),\n  (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n)\n\nconst firstLetter = company.compose(address).compose(street).compose(name).asOptional().compose(firstLetterOptional)\n\nassert.deepStrictEqual(firstLetter.modify((s) => s.toUpperCase())(employee), employeeCapitalized)\n```\n\nSimilarly to `compose` for lenses, `compose` for optionals takes two `Optionals`, one from `A` to `B` and another from\n`B` to `C` and creates a third `Optional` from `A` to `C`. All `Lenses` can be seen as `Optionals` where the optional\nelement to zoom into is always present, hence composing an `Optional` and a `Lens` always produces an `Optional`.\n\n# TypeScript compatibility\n\nThe stable version is tested against TypeScript 3.5.2, but should run with TypeScript 2.8.0+ too\n\n| `monocle-ts` version | required `typescript` version |\n| -------------------- | ----------------------------- |\n| 2.0.x+               | 3.5+                          |\n| 1.x+                 | 2.8.0+                        |\n\n**Note**. If you are running `< typescript@3.0.1` you have to polyfill `unknown`.\n\nYou can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.\n\n# Documentation\n\n- [API Reference](https://gcanti.github.io/monocle-ts/)\n\n# Experimental modules\n\nFrom `monocle@2.3+` you can use the following experimental modules\n\n- `Iso`\n- `Lens`\n- `Prism`\n- `Optional`\n- `Traversal`\n- `At`\n- `Ix`\n\nwhich implement the same features contained in `index.ts` but are `pipe`-based instead of `class`-based.\n\nHere's the same examples with the new API\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n\nimport * as assert from 'assert'\nimport * as L from 'monocle-ts/lib/Lens'\nimport { pipe } from 'fp-ts/lib/function'\n\nconst capitalizeName = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.modify(capitalize)\n)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n\nimport * as O from 'monocle-ts/lib/Optional'\nimport { some, none } from 'fp-ts/lib/Option'\n\nconst firstLetterOptional: O.Optional<string, string> = {\n  getOption: (s) => (s.length > 0 ? some(s[0]) : none),\n  set: (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n}\n\nconst firstLetter = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.composeOptional(firstLetterOptional)\n)\n\nassert.deepStrictEqual(\n  pipe(\n    firstLetter,\n    O.modify((s) => s.toUpperCase())\n  )(employee),\n  employeeCapitalized\n)\n```\n","readmeFilename":"README.md","_id":"monocle-ts@2.3.9","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-X5ppMOPAQV/BeENhPpEI0hJelXMoNVtHlTVk89ugZL7ZvK6JtBDFW/762aq1MOzCCaBAFlxGz1Wmxa0DW7tshQ==","shasum":"037d8a14f72dfd5ce6928c8730de1f0e504da94d","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.9.tgz","fileCount":103,"unpackedSize":364322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSQZGCRA9TVsSAnZWagAA/xIP/3+6ooXC01NAT+6AEVsK\nrPfPg0XNPZuOrgOhqQF4hCRXsljvxcl+vG7CS+oBv/NSe/1drtijetNwTl2m\n+MEVKEayjpqSrubgwPgWSzNO5ek06Jrf4254d4Ir4E6cR34847l9j/v6w5y+\nAhidmkgRlpA4EnUzVOpKW6UTJV8UFZLx5jq0vSknImocORcwKEvX8Od3oBK7\nSL7HkMBEwOcuhnkD6AHuCu49qltKGnbfNFZXwm71pK3oWvIH1b5g/5/49N/e\nhWMy8LQ4IUp0qjVF0OGLJshrI8F/93B4wP4thuz6IDauZtlENYQ/pvVCBq8X\nbrmO3SdsCvL1xuCAfJcybmqrSVdwvpVC8YEh4b+rnAC3iAgbC+i49LmxA1pL\nM82NgWRyLCznps1YYRgLJhdgkR01PxOxkDSBPgxnpWG078b2a9L8XFp2TJ3C\nzqd7a8RHyIjtjDh15glCv0VwBvGIJkwGPCpVMRYTXqMn/b2cfKYWm7/zFQ28\nIPBjSNKRAdOoETUtGjEBwVQQnn+laVd8PnHBhpmsKl0MNZfB8TJSN4TnP/qn\nnY2Izk5ARjRxY3n94H5RtSThcXS9HnHK5yuuoeY1Eoqko2CBHuBqJxsQJPbg\nQOZKWyrHyO3kqkuNrJoXLOpMnQlS/CAMouI8q218ACoWlvyhs9XAfsjLR8gU\nCBaL\r\n=bEuG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXJ9jbr08sbfTbIsH6/810QYQnV5iQtQjrq3zqBOLdhAiEA+4FQUShS2GBVS2NTB2wA4hOvJ9AXG01yz5T/bFct9K0="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.9_1615398469633_0.549607917632496"},"_hasShrinkwrap":false},"2.3.10":{"name":"monocle-ts","version":"2.3.10","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.10","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-UvzfU1LR0XMfPN0ySPvMhIu54mzfuAzoggtIOc2JlEAfnR6sfv/5zGkxrNtYvLNYzm5bo/qc1v0DlUq4VlzE0g==","shasum":"f5edaacc459103ab6dda07ed0e297f0cd6455ed8","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.10.tgz","fileCount":103,"unpackedSize":365090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmTjuCRA9TVsSAnZWagAALCgP/jj2IwBpWz4XQl+6C9VP\nkbNbX52x7xQW89SX4fL3bCKDKBwdwmmKE94AzLfMqbYZBsPsnl/aOXCB3keb\n7PpZwq4K+bwx9PhcWT5Ct186M7qJY0zlHR7VMehbqyuQSgbEO74av9BZd0HC\nMOG90IPD/8X/gCa+3eZO656yZdVIre9NlL16vGV36lzUp9KFQazAiXlepdNs\n7QFqbKD2ZjQrUWuM3p8SCnmZMGBLp5zEC6gYjSuk9cshAKFCOR7QOTUBqbef\nl/JQCTtBJ/BrQqQhQycaiLqlKKyVxnStPDjVlkQuQb0BPtwIZLEBCBjnPK6P\nq/lnp6Kn0We/nDdQLLz19jrmnbC+DXIgEZYMikj2NilpG0FA9AD1XLAe/RzN\n8QSfN9DHFR3hlzgR8wIypOoyd2H58RXq7WK4HVEsFDUfPdzdDtKfQm24svTf\nQD3i+TaQrTxlMTxePjmdV42knzHzGGsrdnoPyKXYsDojQ9V8HgIsRd1/AXI7\nn5swy6j9+IBEo27qJs0MXxbix5EuY1m7KgNwYCCpcRLihxFL/IphrWgeGKQP\nCFxkbm/ncKVHjQPSSsYlEBUgv8TmuKuQKocVTgnWPP4gp+Ji3RLVSb0pszlc\n4K1rPSrFgQgchDI2UINK1Inq9coILS+f+tNEPto8T8pAmSl9QEv+cEjCe097\nF4Ek\r\n=5b/9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCH8cnCLLJlYf8HfpeZ8kN301rvMHANjvp1xceD2jo9/AIgPDYO//iTVUcfMaM8toDsxNEIOoI1y4iwl5umyrB6rXE="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.10_1620654317958_0.8387688631120851"},"_hasShrinkwrap":false},"2.3.11":{"name":"monocle-ts","version":"2.3.11","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.11","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-YJQdpDeKU0NNAecDjFgDDnDoivmf2nXsJZTRQdKh5jsPKG2lT/15dFnSuUcQoKB/VZN1z7jQ0B0bffbRFUtLmg==","shasum":"562cd960bc24eaa84d9b6118d46a5441f3c0aac0","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.11.tgz","fileCount":103,"unpackedSize":365528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH2hfCRA9TVsSAnZWagAAlnUQAIUQ78ae+dRBZ5mQQk0G\noaQM8yFb3GEYTSovdIWGWG19GRps409h3+htD1Gy4cK0h3sqSgA4l7D0utce\n4TuER7bjdY8ikZbOOxDbleA2veXo/Jc5ME7+mLEPI7XQ9kFl9mEcpsyFo/Jk\nsQ6p0djN8hRj3Uy1DKUJMMOfNCEsfalGh61/LKKhNNYHBp+IVnJK8YDia1YF\nV3lFWbLKVl3G/26WBU1D7UAQkVNzZ0zpGcA7RkYXQBsSxAlMyvsPPpFH1lrZ\nT559gMS3dYXgr6Q0V1wFL/tvIs1NBYo/evw7DmM29/2uXoIc4OEffV5hUS7U\nOXDtngJfqZ4dIRNPUFpTJ9grwXCEReVNp+wvaxXAEYtcvzk+U9D1otmXvhwd\nB7jCynf7hIbZScF24S7ppegK/ZHfIiZUaU6sZdJTmpU7wln2gaQHlXcTzZ3f\nNHMJS+jG8SyQE1oYHoTX0PPlJeV3WVWgfSnsj0+6ARwI5HproDjtwIhLKmbQ\nG1Gk38v18IsRmn5TCm1qQsQRwQpuxSg7I+M25U7DMntAgYo3QSCwZVjuQenP\nSh0MyzY2nBEwHTxthkxcUhycKxS5MurEMDRqEuogKC5Mmy4NPLYFMl1Uin7S\nJdTjWkojt2zGAz5VxAP9Ea/dwXtIpeu9NXN+aqk3W93exUqh0wW4kbwDR6Xr\ne+xm\r\n=1Nyl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFhpzYHm9TBJOxGpuv56fl7ke84wP1Gf8amLittGE/EAiEA5+YYaifDBvXfopivaxyp34Tr8m1GQn9mkRq/Yu0YLqU="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.11_1629448286927_0.9621765016094521"},"_hasShrinkwrap":false},"2.3.12":{"name":"monocle-ts","version":"2.3.12","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.12","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-mf753m69aRNApcL2KCKfLRwfWbraeqQfRRgm3a8D+5lvkhCcMtVp8/vnM04Cmhsd6YXJeInMeQFFETrd7jWYww==","shasum":"73e7d59841b3843bf76eb840735a9641fdd3bd93","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.12.tgz","fileCount":103,"unpackedSize":366307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5ZPhCRA9TVsSAnZWagAAftEP/1I9qInJIUn+WoaTEPvY\n6CXjMALAep103N6x4SxB3bLAFHcDXeoNVlajTOkkFlpdoPIzwjNexe0ycpw4\nX7d1dn6aiBVe5MNdgB7E842ocCEQC0ReEm16RerUPLIWYv0lICzeYOCoqMzI\n2aodgXiDoI0f3/MKPwGHwfuK5soUAdLTijk65+kWM5ZoOveCCjSrN/zujAjb\nUxQUxzCjifWi5tBSGEkruMfPTHgLiFGkVp7tjiZc1v7TdO9R6oP43hmDD5rc\nefWtd9Zq/8iQ1LRfzrt5LIFroaVR4bhiVTp0/aSUzNi+PqBctVcJpNcqpks2\nodZx88Kgvgn/ZAKTMchQCxCCW8dKeQllZE533qt3QGtmjZX812n7on0mX/+A\nxp2WuR7IxTY7S8yE3hz76JxdzVLZ5NXCNfyLNGzv5bSjRetocYfvqd2jgWsZ\nEKiYzcwBlWeykMeYAMJjPAMfxE0J3OiNcUcU+ujhks8Kyo93gRImAif953Vx\nFDG0rTBD8SYxSphHxxpJliSh1mzWmOe+HjZlTXCytw5hMq4LUx13biHHIybJ\nlxb9Xz/Ey2hN8Fb+5TcHGIeKK8MNOcql/oNp6HyHvD9GGskkLQzne4WL090g\nLd4JXMK/nIaNmwFOt03e/nw8F7DFDQfL5FfrjOSqDMHWYn6MIwUZq0SLciP/\nAvtb\r\n=X05t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApy9xtirOhrWAkN214e07y0OjSq3YvOkx6kvWJO1ISwAiBvZM2R4JnMIoKctoXytwMk6CPrPGEiXeNRea0NQRFAOA=="}]},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.12_1642435553608_0.2246959624130731"},"_hasShrinkwrap":false},"2.3.13":{"name":"monocle-ts","version":"2.3.13","description":"A porting of scala monocle library to TypeScript","main":"lib/index.js","module":"es6/index.js","typings":"lib/index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"homepage":"https://github.com/gcanti/monocle-ts","peerDependencies":{"fp-ts":"^2.5.0"},"tags":["typescript","functional-programming","optics","lens","fp-ts"],"keywords":["typescript","functional-programming","optics","lens","fp-ts"],"_id":"monocle-ts@2.3.13","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","_npmUser":{"name":"gcanti","email":"giulio.canti@gmail.com"},"dist":{"integrity":"sha512-D5Ygd3oulEoAm3KuGO0eeJIrhFf1jlQIoEVV2DYsZUMz42j4tGxgct97Aq68+F8w4w4geEnwFa8HayTS/7lpKQ==","shasum":"7c8af489613cd5175df2ea3c02c57c6151995e5d","tarball":"https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.13.tgz","fileCount":103,"unpackedSize":368346,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEE9vH3t4p4dkUGVi38Uad9u3fcYbsD3FIx9AUJrEb2BAiA6C3ZsZOyxqhackkUk0vGOuPWbJX69nMxDjm7Com4vQQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTATXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiZA/9Hn4B4x5YFLc4KkZORUBNJMzynh2vOuQibQKhk4pWwJ9AJmnu\r\nawTObW+LkiRsQJPwjm3uUN9oPwxXtn6nnMUVKJK/klmcz45TKL5BYy/Sw8lB\r\nFUwNcE3TiVNw32Na2zFO75j54DT8WhE0qN4X3YxWG9y9AF7MbiPV1TO3zc8H\r\n5bGUqnFN/4AB67437iBgepwRj/QlNs2qL5NsEI4hzmu/gtKTI6zJutt5U/Ey\r\nMTsXrEhiJjG403QwDmfw1GkOKDtMienpNCFWMDQXLxjmb+gQbEDf4qGjkAlq\r\nUL7vD6hyV17jLLFSIUwIT04p/dz+oFHqk97GIY+YsFkwMpJYNm7qVJ+ZHmHa\r\n9qRoejwxenkpCa/znMG2ErwEKR05NAXKA1r0OwfKJracARU+IqdsaVpbUosQ\r\nNfYxZUObHld5A+vCdBkkaSFFJeG84QZZYo09zDywD8wcegERcxl9OJrXQTpj\r\nOv0inQoEciGzlX6uQoOYGCAwykFUnco2md3LarcWf3/H4U5Gwg8aDlQDXIY+\r\nY/uI5RfMkayjn/J7b2klyBD5Ul9aMnUk/Da83jTrUXtpL2Zd7eSxMNqyaCOX\r\nQ0ITgBJqwO5hQq+8IXK5t5kjLA3JXGbl4s9GOFlfCzyX5qQu/DRA9S0lOkWs\r\niNtKsI78XCteXI2uPbqExlebQYmSNZrpEco=\r\n=O5b4\r\n-----END PGP SIGNATURE-----\r\n"},"directories":{},"maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocle-ts_2.3.13_1649149143123_0.2836493628268373"},"_hasShrinkwrap":false}},"readme":"[![build status](https://img.shields.io/travis/gcanti/monocle-ts/master.svg?style=flat-square)](https://travis-ci.org/gcanti/monocle-ts)\n[![dependency status](https://img.shields.io/david/gcanti/monocle-ts.svg?style=flat-square)](https://david-dm.org/gcanti/monocle-ts)\n![npm downloads](https://img.shields.io/npm/dm/monocle-ts.svg)\n\n# Motivation\n\n(Adapted from [monocle site](https://www.optics.dev/Monocle/))\n\nModifying immutable nested object in JavaScript is verbose which makes code difficult to understand and reason about.\n\nLet's have a look at some examples:\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n```\n\nLet’s say we have an employee and we need to upper case the first character of his company street name. Here is how we\ncould write it in vanilla JavaScript\n\n```ts\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n```\n\nAs we can see copy is not convenient to update nested objects because we need to repeat ourselves. Let's see what could\nwe do with `monocle-ts`\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst company = Lens.fromProp<Employee>()('company')\nconst address = Lens.fromProp<Company>()('address')\nconst street = Lens.fromProp<Address>()('street')\nconst name = Lens.fromProp<Street>()('name')\n```\n\n`compose` takes two `Lenses`, one from `A` to `B` and another one from `B` to `C` and creates a third `Lens` from `A` to\n`C`. Therefore, after composing `company`, `address`, `street` and `name`, we obtain a `Lens` from `Employee` to\n`string` (the street name). Now we can use this `Lens` issued from the composition to modify the street name using the\nfunction `capitalize`\n\n```ts\nconst capitalizeName = company.compose(address).compose(street).compose(name).modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n```\n\nYou can use the `fromPath` API to avoid some boilerplate\n\n```ts\nimport { Lens } from 'monocle-ts'\n\nconst name = Lens.fromPath<Employee>()(['company', 'address', 'street', 'name'])\n\nconst capitalizeName = name.modify(capitalize)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized) // true\n```\n\nHere `modify` lift a function `string => string` to a function `Employee => Employee`. It works but it would be clearer\nif we could zoom into the first character of a `string` with a `Lens`. However, we cannot write such a `Lens` because\n`Lenses` require the field they are directed at to be _mandatory_. In our case the first character of a `string` is\noptional as a `string` can be empty. So we need another abstraction that would be a sort of partial Lens, in\n`monocle-ts` it is called an `Optional`.\n\n```ts\nimport { Optional } from 'monocle-ts'\nimport { some, none } from 'fp-ts/Option'\n\nconst firstLetterOptional = new Optional<string, string>(\n  (s) => (s.length > 0 ? some(s[0]) : none),\n  (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n)\n\nconst firstLetter = company.compose(address).compose(street).compose(name).asOptional().compose(firstLetterOptional)\n\nassert.deepStrictEqual(firstLetter.modify((s) => s.toUpperCase())(employee), employeeCapitalized)\n```\n\nSimilarly to `compose` for lenses, `compose` for optionals takes two `Optionals`, one from `A` to `B` and another from\n`B` to `C` and creates a third `Optional` from `A` to `C`. All `Lenses` can be seen as `Optionals` where the optional\nelement to zoom into is always present, hence composing an `Optional` and a `Lens` always produces an `Optional`.\n\n# TypeScript compatibility\n\nThe stable version is tested against TypeScript 3.5.2, but should run with TypeScript 2.8.0+ too\n\n| `monocle-ts` version | required `typescript` version |\n| -------------------- | ----------------------------- |\n| 2.0.x+               | 3.5+                          |\n| 1.x+                 | 2.8.0+                        |\n\n**Note**. If you are running `< typescript@3.0.1` you have to polyfill `unknown`.\n\nYou can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill.\n\n# Documentation\n\n- [API Reference](https://gcanti.github.io/monocle-ts/)\n\n## Experimental modules (version `2.3+`)\n\nExperimental modules (\\*) are published in order to get early feedback from the community.\n\nThe experimental modules are **independent and backward-incompatible** with stable ones.\n\n(\\*) A feature tagged as _Experimental_ is in a high state of flux, you're at risk of it changing without notice.\n\nFrom `monocle@2.3+` you can use the following experimental modules:\n\n- `Iso`\n- `Lens`\n- `Prism`\n- `Optional`\n- `Traversal`\n- `At`\n- `Ix`\n\nwhich implement the same features contained in `index.ts` but are `pipe`-based instead of `class`-based.\n\nHere's the same examples with the new API\n\n```ts\ninterface Street {\n  num: number\n  name: string\n}\ninterface Address {\n  city: string\n  street: Street\n}\ninterface Company {\n  name: string\n  address: Address\n}\ninterface Employee {\n  name: string\n  company: Company\n}\n\nconst employee: Employee = {\n  name: 'john',\n  company: {\n    name: 'awesome inc',\n    address: {\n      city: 'london',\n      street: {\n        num: 23,\n        name: 'high street'\n      }\n    }\n  }\n}\n\nconst capitalize = (s: string): string => s.substring(0, 1).toUpperCase() + s.substring(1)\n\nconst employeeCapitalized = {\n  ...employee,\n  company: {\n    ...employee.company,\n    address: {\n      ...employee.company.address,\n      street: {\n        ...employee.company.address.street,\n        name: capitalize(employee.company.address.street.name)\n      }\n    }\n  }\n}\n\nimport * as assert from 'assert'\nimport * as L from 'monocle-ts/Lens'\nimport { pipe } from 'fp-ts/function'\n\nconst capitalizeName = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.modify(capitalize)\n)\n\nassert.deepStrictEqual(capitalizeName(employee), employeeCapitalized)\n\nimport * as O from 'monocle-ts/Optional'\nimport { some, none } from 'fp-ts/Option'\n\nconst firstLetterOptional: O.Optional<string, string> = {\n  getOption: (s) => (s.length > 0 ? some(s[0]) : none),\n  set: (a) => (s) => (s.length > 0 ? a + s.substring(1) : s)\n}\n\nconst firstLetter = pipe(\n  L.id<Employee>(),\n  L.prop('company'),\n  L.prop('address'),\n  L.prop('street'),\n  L.prop('name'),\n  L.composeOptional(firstLetterOptional)\n)\n\nassert.deepStrictEqual(\n  pipe(\n    firstLetter,\n    O.modify((s) => s.toUpperCase())\n  )(employee),\n  employeeCapitalized\n)\n```\n","maintainers":[{"name":"gcanti","email":"giulio.canti@gmail.com"}],"time":{"modified":"2022-06-20T08:40:35.400Z","created":"2017-02-16T18:49:23.239Z","0.0.1":"2017-02-16T18:49:23.239Z","0.0.2":"2017-02-16T18:53:56.211Z","0.0.3":"2017-03-18T07:13:16.041Z","0.0.4":"2017-03-24T10:01:23.150Z","0.1.0":"2017-03-31T17:27:19.939Z","0.1.1":"2017-04-09T15:33:27.832Z","0.2.0":"2017-06-01T15:51:41.114Z","0.3.0":"2017-07-10T10:23:41.367Z","0.3.1":"2017-07-21T06:01:15.738Z","0.3.2":"2017-07-28T12:19:50.742Z","0.4.0":"2017-08-23T10:15:00.681Z","0.4.1":"2017-09-01T16:36:37.591Z","0.4.2":"2017-09-21T06:19:29.743Z","0.4.3":"2017-10-11T10:51:49.143Z","0.4.4":"2017-10-19T11:02:23.315Z","0.5.0":"2017-10-24T15:29:02.624Z","0.5.1-dev.20171122":"2017-11-22T09:50:41.610Z","0.5.1":"2017-11-27T10:00:29.869Z","0.5.2":"2017-11-30T14:55:29.997Z","0.5.3-rc":"2018-02-07T14:39:02.340Z","1.0.0":"2018-02-12T15:07:16.335Z","1.1.0":"2018-06-15T13:41:45.193Z","1.2.0":"2018-06-25T16:23:00.390Z","1.3.0":"2018-10-11T09:03:37.289Z","1.4.0":"2018-11-06T11:11:26.109Z","1.4.1":"2018-11-12T11:41:37.508Z","1.5.0":"2018-11-22T07:19:34.740Z","1.5.1":"2018-12-14T12:01:26.756Z","1.5.2":"2019-01-02T11:23:14.585Z","1.5.3":"2019-01-14T08:13:16.133Z","1.6.0":"2019-02-07T18:00:10.741Z","1.6.1":"2019-02-11T16:03:50.420Z","1.7.0":"2019-03-07T07:22:39.081Z","1.7.1":"2019-03-11T17:32:44.665Z","1.7.2":"2019-05-13T09:18:31.652Z","2.0.0-rc.1":"2019-06-19T13:21:42.211Z","2.0.0":"2019-07-01T15:38:59.574Z","2.0.1":"2020-01-03T08:27:07.135Z","2.1.0":"2020-01-30T17:55:05.034Z","2.1.1":"2020-05-27T14:44:20.830Z","2.2.0":"2020-06-04T15:54:13.386Z","2.3.0":"2020-07-08T15:11:05.423Z","2.3.1":"2020-07-09T07:00:24.945Z","2.3.2":"2020-07-10T10:52:17.330Z","2.3.3":"2020-07-13T18:13:14.418Z","2.3.4":"2021-01-06T08:05:34.991Z","2.3.5":"2021-01-22T08:04:48.228Z","2.3.6":"2021-03-02T15:50:47.748Z","2.3.7":"2021-03-04T16:12:19.043Z","2.3.8":"2021-03-08T11:11:15.323Z","2.3.9":"2021-03-10T17:47:49.853Z","2.3.10":"2021-05-10T13:45:18.129Z","2.3.11":"2021-08-20T08:31:27.093Z","2.3.12":"2022-01-17T16:05:53.787Z","2.3.13":"2022-04-05T08:59:03.237Z"},"homepage":"https://github.com/gcanti/monocle-ts","keywords":["typescript","functional-programming","optics","lens","fp-ts"],"repository":{"type":"git","url":"git+https://github.com/gcanti/monocle-ts.git"},"author":{"name":"Giulio Canti","email":"giulio.canti@gmail.com"},"bugs":{"url":"https://github.com/gcanti/monocle-ts/issues"},"license":"MIT","readmeFilename":"README.md"}