{"_id":"lonad","_rev":"67-0f9e264601cc0e1bb49c5771d96e1f9e","name":"lonad","dist-tags":{"beta":"0.3.0-beta.1","latest":"0.3.0"},"versions":{"0.0.1":{"name":"lonad","version":"0.0.1","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.1","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"06668e05110a20edf1ac18a39cdbbe9549b28ddf","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.1.tgz","integrity":"sha512-36QKm/xEPK86V2cQ84Bg7Qsf9PL7TMhx0ZwS1wzpjck4W+hZMx+4munGzN32Xqn5kLMV+m5+6ROHAT/TsH6K/A==","signatures":[{"sig":"MEQCIGldeDBzCpAT4xI9dsF5bzKi/l36qQZAoLSgtusyiJ4tAiA0HtUvU1WkGaXIa5/c0uOnBXtIVFVemxogAoAneROiUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"06668e05110a20edf1ac18a39cdbbe9549b28ddf","gitHead":"e65719a45bc69f0952d19cb3279dc465217074d9","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.1.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.7.1","_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.1.tgz_1499432615681_0.17364387237466872","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"lonad","version":"0.0.2","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.2","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"5457afe18d4a9761c33d120f589ae55b07357091","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.2.tgz","integrity":"sha512-7aF3js/AefO+QZvqFP86nWoi0W16tfheGzU3xRYXuIqGi6QHPv1MZ5YT9oLSfx1WmsAOw7hZ5pxb21BUXgxudA==","signatures":[{"sig":"MEUCIQDiddqSjoNK+ZTw1P4aTzLaUOSipaogDftVAPoeZghmeAIgZEDc6OIu9WMZmVhyhUiL45T69m/ZQN/+sr72J4yNAnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"5457afe18d4a9761c33d120f589ae55b07357091","gitHead":"edfcdceaf9344a02164d55d646edf00ac3c54c0c","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.2.tgz_1499516419680_0.3914924440905452","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"lonad","version":"0.0.3","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.3","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"d74df71f86cad05af4a589f9defeb8a4d585b6c7","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.3.tgz","integrity":"sha512-6CkJPR0myF/DT5Q7xfoeKj82Fr/cMsFDezUMRLqa73SYMr9sQGMliL0cSWDnG/6iSfSDDfjGcuLsCULGj85lRw==","signatures":[{"sig":"MEUCIQCEZ+LdlZvzKzlVG5W2wjSHGMQyKZOwohKa3rRs1C9FDAIgdm4r0zwKvAycqM0gA8O4b3dTaalN5P+EXNcewsWPPwA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d74df71f86cad05af4a589f9defeb8a4d585b6c7","gitHead":"dbffac5e2d545026fb127790f04d825cb8e51e57","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.3.tgz_1499603661786_0.9151346266735345","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"lonad","version":"0.0.4","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.4","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"8d83eb71a331b3ff6dd0cd606863cea6108ee692","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.4.tgz","integrity":"sha512-CqVwTWqhTMq1xw+sueMOAdkXw7hpBcVe9tKs2m0lIK3VzAY76JGcP6Til4FLRXB3OJItX0HGDyAaFnxebnT8Yg==","signatures":[{"sig":"MEUCIQDd/idcYhwoaB5IbHgr+3w6Z+28sO0tTizv0+Ygvx1+OQIgAYJrP3XvI8E6yJCUAFUB5sisOjkm2UfFbxpVfWgoPEs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"8d83eb71a331b3ff6dd0cd606863cea6108ee692","gitHead":"96dac5583ac86ea3ab4362dd58cec1940c307e77","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.4.tgz_1499609726414_0.577079685870558","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"lonad","version":"0.0.5","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.5","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"d0abd2cb40898696aa656a9c1bff76903c303bec","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.5.tgz","integrity":"sha512-R4S8QSwuZNytLhQgULE0BP+a3/D8/gHVs5+iNpCqnt0Ncrnx4tOJnFJjGomI7/s01GdVXhrrCoDdGDZGqurpPw==","signatures":[{"sig":"MEUCIC3CXUGUCYmaA+vgvGamDrCYPb0txMegg+ZZzAfHPSRMAiEAng2cZjhWM1PFwmDlTBlx9Q18hvWLTX1L6TzEKwbysxk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d0abd2cb40898696aa656a9c1bff76903c303bec","gitHead":"5bc1fc051662c75387a54a28e5a386bb1362da36","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.5.tgz_1499611946565_0.6546912300400436","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"lonad","version":"0.0.6","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.6","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"35e3bc65d47f6f5030d8304bd7e81731b4f271a2","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.6.tgz","integrity":"sha512-TlY99RGuB0UZR4mQGidFTCA1ukHjAkKo2Z0RIgF4GNt9DwWeryaB87t+JNzyl/D8Fi4JIdAn5ZsZ+w4jfROAwg==","signatures":[{"sig":"MEYCIQCYUzGiNlFQGM/1Ngh3gOTj1imNUrzCioNuQhadSbOGAAIhAP16QFuI2eH2WZxOckKHV9z8DI3uGOepeUVXNmUzrE90","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"35e3bc65d47f6f5030d8304bd7e81731b4f271a2","gitHead":"d58090f65c9d902f7dad14c6c6840617d2af3af8","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.6.tgz_1499613255935_0.06554260174743831","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"lonad","version":"0.0.7","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.7","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"d1ab13364fcf3f61191fd035a420ce718a0e1949","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.7.tgz","integrity":"sha512-VXuSrkVCRqkTtLKkhqxzTpYL6C6XUgr4AgibjCEwxGsEABOgJw3MHAgHHsU3/zTQoTdsgrVO9deLIiUoDsyJJw==","signatures":[{"sig":"MEUCIGSd960NxPnni1bP0Bqv8xQnmHu/tMgTh/CcCCLAKTFRAiEAzo1JQzLqJOTgRw3MRmkBOiPppYwDU9+9PKfB8mejGps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"d1ab13364fcf3f61191fd035a420ce718a0e1949","gitHead":"87ebce9da0219b86a6cf03dc4cb66981c5d506bb","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.7.tgz_1499614749145_0.5743497340008616","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"lonad","version":"0.0.8","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.8","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"355bc42d30e44b5fbeff1c56714699c4e53ee8c9","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.8.tgz","integrity":"sha512-DhcAMnfgklf/Nf3vTL8w+7+l6cuaJF+R9KYsoFBuM3AYNZAqBHl7lf2o3LnFWLaL+7hxNXP9m4J7ZU/X5IqCrQ==","signatures":[{"sig":"MEQCIH4QnWNXq/cg0Kot9T1hhe+LMuZEnWB2Ggs5y/DZTslaAiBJoa9BlRbpD1MCKyFRXi15zL6SlsHlTD9YiciCKh6AXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"355bc42d30e44b5fbeff1c56714699c4e53ee8c9","gitHead":"e5819f9d9b58ab00aebbd98e2a40af84886a9fe8","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.2.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.10.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.8.tgz_1499615991349_0.47403453360311687","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"lonad","version":"0.0.9","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.9","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"7a64a326398891b8570127b923e8d73147d12853","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.9.tgz","integrity":"sha512-lathe82Mv+eTWzuQRuOtDVDgabrW72QGoBlj42G3DaOlP3TmqaH5JYkZ4z3tJVZEFt9dSRTrqhQJDEqqClwCrA==","signatures":[{"sig":"MEQCIClk7W7B8ZkTrluZx5PayfqTBoflS2nFXZckrrHyHI6oAiBQMMsJKj8JechWi6rcGa2drnCY7n+Sz1EGzVAExzPDdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"5cb988ca80d19164bda859f7f9f12aae5d6e28b4","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.9.tgz_1499632369292_0.20496613485738635","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"lonad","version":"0.0.10","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.10","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"ca854ef692315877f867385b893360c5e7eb0ae0","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.10.tgz","integrity":"sha512-a38KT58lSwCVVlYO9BCdY+Ozd+Nb/Qhlvk35hBSkGskaq5EnQvLYs15IYtloBq5OwiIyoysBSfi3DTBycP7bqg==","signatures":[{"sig":"MEQCIBOn5ptGlD24iMAHSl08j4XccoXdoPVBs+5R4tMnTYvPAiBMtcRJeUoBn5l/og0AfvS1EQhWX/bzs1srcVi4nMS+dA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"ed04f396375f031d313e009fc36f0e883cdb5fbf","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.10.tgz_1499641528513_0.9838863397017121","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"lonad","version":"0.0.11","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.11","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"f1f427da7e4049e76eec926e7a735d76cc4d5ba2","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.11.tgz","integrity":"sha512-08Tp6axe2YUJx9/Bgw1diPYF7/TRXk6m5f6A/QDvNVQdohPb4Xt2bzeJNZkCHkKaze89d5BZAPODJsyaZg0RVA==","signatures":[{"sig":"MEUCIQDWrc2qRnpcrxqkqVYgXCoGzJaRzPDd9KymcduFl2XHIwIgL6g2kP3rVPOQkcx6hi8eekndAuzcZ9vmavnlcBC0a7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"bf91e64234d26ebcccc7946ceeb1a8f2df493b89","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.11.tgz_1499644817974_0.72463717777282","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"lonad","version":"0.0.12","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.12","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"fca9aa7ad85c4fe162c56cf73713d5a8904b5bcf","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.12.tgz","integrity":"sha512-NE4PbPUsz7aok5LEUCRVzQ3zirf/c8i1t05fCtb9Jrz9S7EsdPfVXaROR52uM0yKuW5MTdr64OLSUk6mFnI6cw==","signatures":[{"sig":"MEUCIQDCFL5kHd+iHGarEQpt8shMQ12EHUc7NvdVvpdaQb1XnwIgDx2xcOmbcwLsrLmSLx7P/7wGLbsa64/6ScWcIGJ3dD4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"d8e6b55024a2389c88529c3ad831f38a18a8bc8c","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.12.tgz_1499645392205_0.23545298003591597","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"lonad","version":"0.0.13","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.13","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"8760e06bb6015bcf9de071d06b6977cbb25a3563","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.13.tgz","integrity":"sha512-0cxpty+iZfaiYPWzwa6Sa/vhljgnw0XyDUmotkFWzShz0ywIm01OPg4rQFAYjnFBB+C7SADscTP3TlaFXB4ZfQ==","signatures":[{"sig":"MEUCIQDlwJoxQDLOFYjT79uCUkp/rZgktR6b9UOp4Dxi16R9qgIgMNsPvPaHoVK5woE5VKK5WuDXYKgzgZNs/iXGNZuCUh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"8760e06bb6015bcf9de071d06b6977cbb25a3563","gitHead":"da3ab743e2ec75cd24fec339fb6299bbc19ccbb3","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.1.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.7.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.13.tgz_1499780609926_0.820821751607582","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"lonad","version":"0.0.14","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.14","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"ba078c5ec4e3878686d8ce2d0c02f59807fb7860","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.14.tgz","integrity":"sha512-x/DOadfbpg5edrK7+zLOCnMvqKwGP2G3fXzO6vf8jpOeS//3UCCoBa0mSy8xWAL8ChF3jXuP1PxfCz2XUyiJfg==","signatures":[{"sig":"MEQCIAR8GYj00XTzYKr9Lg7q/OiXNgQiL9hDnBBgDetW/gazAiA5B/IktXH9Z2xJzHJ94WXuHnBGe4VBaONJmdsI51NHOQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"ba078c5ec4e3878686d8ce2d0c02f59807fb7860","gitHead":"6202294ac8c36e8f7a322dfcebf9b904253df89e","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.1.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.7.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.14.tgz_1499785667799_0.7060196469537914","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"lonad","version":"0.0.15","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.15","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"f2090be9566b6b8ff2cc32d19a004258dc63bcfa","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.15.tgz","integrity":"sha512-RYtvY3HXjNbP6TXnedkt2XnJYa7/5HDb/kB6Mt6rw4z6U50UqXsy19/11XuvR6RYMQxf5AV1BmjheifFrRz08A==","signatures":[{"sig":"MEUCIQCVZD0FE4Uv2oGzuVT2sa5DMuu9RU8YvWus9n46bmCcNwIgAOb5W6sDvvtfBcIbqlIb1CZHOONMB3b3kFXAymCVfus=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"f2090be9566b6b8ff2cc32d19a004258dc63bcfa","gitHead":"e9eccc5bcc7905d5f82d670d82c0720a15f63bf5","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"4.1.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"7.7.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.15.tgz_1499789993221_0.4563959976658225","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"lonad","version":"0.0.16","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.16","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"11fef300241189a7cd49ceb08487639efcdecde2","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.16.tgz","integrity":"sha512-B+uZA0nmPV4v9s3vVEPp+euxHR1/883b+aAZnkaQ0/a0EZZcEF8xoZz7B2//lBfuLJnHTP6J6I5+Rw8cRSbQeQ==","signatures":[{"sig":"MEUCIFfg2YTpDtZXbIGX5t7yhvi3yPhvcWA154JfaQ3sQGGEAiEA0AdWcEf9tlqT3AnTKJbDMsuFmzGnabqeH3fTMzV+VoU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"5990b4907078a712d3f8591f8587d5eaeaceff61","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.4","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.16.tgz_1499858488866_0.2778591872192919","host":"s3://npm-registry-packages"}},"0.0.17":{"name":"lonad","version":"0.0.17","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.17","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"21815734bf341d2e533e79dc390f86f08fffbfe5","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.17.tgz","integrity":"sha512-kSVsuod+wJaU5A7TDLqWE/wVyGRgTUQtsCXpLDCyBbjUbY+SLuY9UfYobd0MhQwIGRMbcjB1h7sOEEmHuGDQwA==","signatures":[{"sig":"MEQCICCIiuuxE/nQM1BA3mc46AxEOHOw/TfZd0msVQcDM5QlAiBsaArH4r6eCBheBxjZ6Ca+6Mr2r8LlnjdZigRCau4FrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"b95806ea1667cea408c0c5de23eba1f672d4f7eb","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.0.3","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.4","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.17.tgz_1499861052794_0.5529982168227434","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"lonad","version":"0.0.18","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.18","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"240f4715d8b7ab6a73955be6b54b43594ff5b995","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.18.tgz","integrity":"sha512-fjx6XVi4iDMpaqWKJFvx81nw3OZEU2opFkr/dK7+/XHhgweR64JH9QnIvEyNCuNfIz36RwCs9ICkwcXknFfUaQ==","signatures":[{"sig":"MEUCIQCgtw7t6p9JfXKOuOAahTOhPdIVXgWVbiKOXhK+bOOVmwIgLa6ofVSMh70jFZ2IMNV4ubwG3mNFQEyWltKlHSGS360=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"21bf26e4520c1fa55d34c98e8c10d6d50e86e95a","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.3.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.1.4","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.18.tgz_1500380676729_0.5009407424367964","host":"s3://npm-registry-packages"}},"0.0.19":{"name":"lonad","version":"0.0.19","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.19","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"f8651d23df37c5a69b468de7d9783f1377c68069","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.19.tgz","integrity":"sha512-QUAG1Zru/gRJWxC7T0i/29Lepd1HgC+WXqeaKLSM2yoG95QbrLGWPU/qTt4pJ+e00SiKfgOOr6aOR0drzO9BAQ==","signatures":[{"sig":"MEUCIEweytW6/nJpuwcRidy8Vv9G+jEoUz2hKPkaO/tDN/mpAiEA441yiS74FDMJGRdqkO/nB2sqkJc4p7hmiphOFk7ap6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"a50301f10c922ed47a54816d4a8e27b913870200","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.3.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.2.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.19.tgz_1501855488317_0.27284324215725064","host":"s3://npm-registry-packages"}},"0.0.20":{"name":"lonad","version":"0.0.20","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.20","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"c101b2bb5ad2c4d731c805c9fa52b770c91db645","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.20.tgz","integrity":"sha512-PoI2y83c5JchAP28msZTrf91dO5uT00VzBmUpxU4qcLD5pb7d+n7YhM81+9s9958njnoUeOBBZ06WTRzPk4FcQ==","signatures":[{"sig":"MEYCIQDXl2gF5AGG+X+HeAcqqWvct4CCiDo9Rh0j0BCMOhPi7wIhAIIycQ4J4AtAkO63IWvFJusYaDfaG3WxQOAxHJqoORXU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"102522ca5f05408295fcbf0aa384e1627347761f","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.3.0","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.4.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.20.tgz_1503328780810_0.793968120822683","host":"s3://npm-registry-packages"}},"0.0.21":{"name":"lonad","version":"0.0.21","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.21","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"b27acc52d2b7f5dbfb93ca46561ba8e016d7ab6c","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.21.tgz","integrity":"sha512-NdPpAfWJsXFAVt59F677H5ZcOJfG6Z5Rd+6xZe2JOxCAaKNB0jTxkW8jd3uvi9Nj6LQKAKiZmyAaghwE5jFN5w==","signatures":[{"sig":"MEQCIGDv+Z71Of6U9MmQvuoXFGOPGrgcgKcOVk99UFYls2nhAiBnKGvw+5BsCg8XYTsLRepwxol6BvvDRVvkebzPT7fi4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"9bc2f40250520d443b40bd673c9ba1e50bfdac3b","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.5.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.21.tgz_1505810334249_0.4952384664211422","host":"s3://npm-registry-packages"}},"0.0.22":{"name":"lonad","version":"0.0.22","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.22","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"7b0e3067eb8760c56d35b81e497a835714cb0b2b","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.22.tgz","integrity":"sha512-rmHlRVZF6ZJwQH3w6+zPedHwJaTcpRU+ST/yfDcE+23jgPnSnk6t0p2sbCo8mROLlGAgn5JjWZvLIrz0QfCqTg==","signatures":[{"sig":"MEUCIHIk7H50grBo1rUlZdP28y/UWD5tbTrLD3liXjYZaqC4AiEA47iGKb+212q0Tebkegfw5afPO3LmEJTLUjGi57VZ/Hk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"e2e1f33845c6fb3daa268164e32f8a326adc56d6","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.5.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.22.tgz_1506431610877_0.9209266412071884","host":"s3://npm-registry-packages"}},"0.0.23":{"name":"lonad","version":"0.0.23","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.23","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"4ba9afecaf757564a8ec91c285a39606f1340433","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.23.tgz","integrity":"sha512-rab+2DLa7OU9ofZ4PUNa5YO4FeCSNsiofug1HAfeSbRpMu6fW1M8sAb1avffId2+i4FzSTMC2a0MnQ3MOefOqw==","signatures":[{"sig":"MEQCIE/jPQoCUht/7Y20W+JZJVF5bMoUxC9hSkkyZEz2za0rAiB/OaphXIPZLtVAGyOaNbg8NVzbWpXkCFv4B2zbpoiwyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"7e41c5bc58a697c7bb5858974452f0954387c009","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.5.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.23.tgz_1506516738561_0.019949690205976367","host":"s3://npm-registry-packages"}},"0.0.24":{"name":"lonad","version":"0.0.24","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.24","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"bc0301aeece2deb8a000c6e2d7b413138e5ca100","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.24.tgz","integrity":"sha512-1V8mxwoP1SZJlhkQauA0bKt8X0teDiwMPTsohTj+2re7srgRo/U18Uup3rWXqU2cDGajeMIUnygQkxnNUZA7BA==","signatures":[{"sig":"MEQCIBvwbohaqye282RaJ6puwp3WCEsdkTaOmk1wQo6sN8ABAiAAjCEHM08ZkRp2IGiEys2Q7sITSe124mvoqYg/ujAf7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"045b0efbaccb87f291ef2bd68872652ebc621bed","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.5.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.24.tgz_1506595111454_0.3952108488883823","host":"s3://npm-registry-packages"}},"0.0.25":{"name":"lonad","version":"0.0.25","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.25","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"a29c35e30f553abd416e4da7c6609c916db1e711","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.25.tgz","integrity":"sha512-7c6KfnESdj5dGaPlfmXq6UmmVHOFPGxxjhqNTzljeCmkGXDSm0lX26h5sH47zilYqzWMtNzV2kg6NLSM5G6Dbw==","signatures":[{"sig":"MEYCIQDJ4PdWizQW2Rc5U2OS/B8uYhULqgQcR9o8HhQy5KugpgIhAI6+TIfQ/YsNrEsJH/+vsYmrBlEgd8gDAevDH5zsaeFD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"f4ac5fb493efc11ac2e67e890919809d10611246","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.5.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.25.tgz_1506602853414_0.26464988198131323","host":"s3://npm-registry-packages"}},"0.0.26":{"name":"lonad","version":"0.0.26","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.26","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"ba90d288b7d68365cffce7db5417b18aa2150232","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.26.tgz","integrity":"sha512-McFvpfbK1fGr4b4+rmFClDI9ja3RuUlTfCMReBbxJJ/8UM4NCt7Lxbg3bIH3nGTFTqWcoXJUtN2jJwQ27rnlmw==","signatures":[{"sig":"MEUCIQCK8Hi5FsedhPuF+fj0yFaL7kiZvPKMruc9g9NadbX33QIgYpFyNRHggjfda8bran5dWukiEzamPHuq7hdW1+rzA2Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"ec39ac3b953f79cbeff1bcacf1693164768c1fdb","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.6.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.26.tgz_1507033763879_0.5514026135206223","host":"s3://npm-registry-packages"}},"0.0.27":{"name":"lonad","version":"0.0.27","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.27","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"2c0a44f36f55f864a9349b7643fa023db90f2fcb","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.27.tgz","integrity":"sha512-4EtxezrNfWFCFCkLk49VXtc68cou1934kSebwPon4xlNmBGsgleaKBSCknFpezcoH5bNhpz8iFpBwJbz4XrJhQ==","signatures":[{"sig":"MEQCIEdYTvlD3jIbUDM9Y+DKdVr+lLPx2w8j6d9kHsYMCryHAiBTQaTtFSQj1176IgEews1RhgqLHAkYfWyoj3LHto/nYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"00d0c947d6cb8a5c5ae6ee8cd6d060d85827222a","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.4.2","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.6.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.27.tgz_1507563284362_0.032751771388575435","host":"s3://npm-registry-packages"}},"0.0.28":{"name":"lonad","version":"0.0.28","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.28","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"c248eda34a1e8cfff14f3b7f12e55bb1a00ad395","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.28.tgz","integrity":"sha512-FHQWYwMslMpZews5cacrfAOmn18Brg4to5DcfO8CG7uKqnls71maNmLwGRaFG/6z0UnxIIRdB+LhFnMFByW7vA==","signatures":[{"sig":"MEUCIQCI/8gY/DLniqQkOJwx/WS2Sh9ZZqjvoArqfc09jOQJfwIgEdfA1g0935w5OfnbzvW9ge25fz9/r1sENSNX3oXdLU4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"c17baa50a105094c1ca8e3308465491eb7b7b7f9","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.7.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.28.tgz_1508507205565_0.27702690521255136","host":"s3://npm-registry-packages"}},"0.0.29":{"name":"lonad","version":"0.0.29","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.29","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"7b4cf70ca0ff94b08571844bb8cbbb91b8e3d091","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.29.tgz","integrity":"sha512-e8SZU/q2NkMvNWjAVSSbMDbmMc5tO6T3e5PvqfLkGbMn6JMQCDjwtJWtnnmxUYr4akB7JPt0F1BIkfF6je3lKA==","signatures":[{"sig":"MEYCIQDyb6GTNrmpijt86xabUK3qNNBgW2SZ2pm34Y/6tv0ZWwIhALiiSYPwq+2LW7x51pvdQZ4WPwfRA2mCJfkn2bGulVC9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"a09baffce7cd997f764aa947e4221bb96331f86e","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.7.0","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.29.tgz_1508741530583_0.6245207246392965","host":"s3://npm-registry-packages"}},"0.0.30":{"name":"lonad","version":"0.0.30","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.30","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"624cb48b627aa47861c46f77260303f4d9db7ae8","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.30.tgz","integrity":"sha512-BCfTF1RVvfk+nBC+licWSjgOpPM/fHb4ielFoZUyJP5x8ls6fmmNnaVPMSjuE4XnoWD56A0Xby9fIPNP1s0bSA==","signatures":[{"sig":"MEUCIAD5HrmMoi/9i277X59EvkPf/0+JF0CiKIrUGJb0asUQAiEAqFr8s1G5S7PkVCyMydAx+zPG/1Jq/GDt5NPzYRgBf7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"4b9e4a74f0689d42a4667b9e91d184d33d56bf5a","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implentations","directories":{},"_nodeVersion":"8.8.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.30.tgz_1509117068852_0.19032088946551085","host":"s3://npm-registry-packages"}},"0.0.31":{"name":"lonad","version":"0.0.31","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.31","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"efe2d2d1f335b51ccd12c471572818ca94ff939f","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.31.tgz","integrity":"sha512-nieQLF8IB9jPIsoxRGoUI0/PsSG4QtfA4rzK+3iZBzGQSlj49V5xsFKqexqkQ3utfV8GgG+Maqg3E5CljJVHwQ==","signatures":[{"sig":"MEUCIQCQ1IALrGGD0y2V9s22nUOtoPXIWsX7uCaO+/6NafRodgIgRGRJugO4VSYgoTw7D9C/DRd043cmuuNJWOVNgfHYpjU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"cd219db618e40e20cf15e77500f491f902da253b","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.31.tgz_1510336017963_0.9413170702755451","host":"s3://npm-registry-packages"}},"0.0.32":{"name":"lonad","version":"0.0.32","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.32","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"77cc2d9dca8f3931bd9443c73b98d416299b12c2","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.32.tgz","integrity":"sha512-L7AdkeSN1ybbjdAjRfMevETM9chDI1wgi8ihiq3DQsSNgOLYXpJs8fJSgDwZvAdqmVya/fO/d/G/AfMKbtrzzg==","signatures":[{"sig":"MEQCIGNDt69nqDmWAdRbXDkoCbM+BToA5zsIIVz48cnRMtbmAiBCHWHqKAs70X7keV2Gy3Ip5B0hvkVDsBVg+6kmIBlNhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"eed84e803d28b1484cf5b811b613c6b87ccb976b","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.32.tgz_1510769456366_0.621378458570689","host":"s3://npm-registry-packages"}},"0.0.33":{"name":"lonad","version":"0.0.33","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.33","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"76689d3031cab4dff3237b25b1d69e0d2946450f","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.33.tgz","integrity":"sha512-ZLWXpTwgOyCpWvanMbVQXB9Uphf1bPfSE77sl2vgnUQuWCxM99t3mqSvCkhbBRbeSSqzi25crozV23KYHN70Tw==","signatures":[{"sig":"MEUCIE1lqJWFNQKPJI+1/R1/g/mTQqELpj3J9UF+uItZOJSaAiEAnETG4Xcs9ec+IJy+LLrPdosf6GZTcPXpozBefG/T/7w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"ad17dbafb26070f339460d0bfbfdf306c45a2a98","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.33.tgz_1511180305657_0.4617673708125949","host":"s3://npm-registry-packages"}},"0.0.34":{"name":"lonad","version":"0.0.34","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.34","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"7ff80378f0b453880921640993bab4c5d6cb150d","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.34.tgz","integrity":"sha512-2TgJib6tj54QRjIglOY/3Zzz/nYAUkky+fHtg5YkCJ2/tswzWdKa95vJXVV1G3SVhu5m7TJFSk67RkO2ELchBw==","signatures":[{"sig":"MEYCIQCSaNEFtL9uy84QFRCCcvfZrvLck66q8cw3mpxja4kVTQIhALrzb4/vs4vTEgVr5IKnDt/kzz7dEltxwCqNkhdvyWE9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"4902cf77352dae485a084ff7970b2360bc80355c","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.5.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.2","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.34.tgz_1512570134417_0.4323709143791348","host":"s3://npm-registry-packages"}},"0.0.35":{"name":"lonad","version":"0.0.35","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.35","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"15f95d3e153d849d94d31ac334fcf2a2705fd401","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.35.tgz","integrity":"sha512-jgac6RVw4o9MuBwOjNqbSrvttDuWBP+OXtKf1h1ZMUMhchffuG8UhpmYYZWvD1xtIkFGC1NHpnzGckUd4QDCqg==","signatures":[{"sig":"MEYCIQDdQZlLz/27mi0IWBsQka2Hf+oXxixfVCkJK98y6DbH3AIhALHZPpOmORJLO9zhpJ8ZmH+CVR/h1gu4Ae7PDD0EGMg3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"367a6aff1db6dd720abb8ab0fc883395176f3a23","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.6.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0","lodash.some":"^4.6.0","lodash.constant":"^3.0.0","lodash.identity":"^3.0.0","lodash.property":"^4.4.2"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.35.tgz_1513162513531_0.3533591986633837","host":"s3://npm-registry-packages"}},"0.0.36":{"name":"lonad","version":"0.0.36","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.36","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"76601ddc58b85d73165e5e044a423346039df2be","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.36.tgz","integrity":"sha512-CubpIiYvdoMcdFf4AcsqSJoKE5Tyk6lY5vRoLtfCkQXUpqUp2WwWN12UtpsrSvrdm3NkbuPZxnBrR57lSP4E9w==","signatures":[{"sig":"MEUCIQDAxYnAWXz0T7HsM+w8RXAWWOakPXEcnwXw+VEoPRsGtQIgc1yVg1iclRfv0JyZDTXohywT2Uz7lJ3bgNfcx61SsFE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"80dbaeab7e322c65de60665a26d4453f9e0f48fd","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.6.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.9.3","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0"},"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad-0.0.36.tgz_1513620543657_0.5266003031283617","host":"s3://npm-registry-packages"}},"0.0.37":{"name":"lonad","version":"0.0.37","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.37","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"e7415b9f0c3316f320de1da60fe266a90e379392","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.37.tgz","fileCount":13,"integrity":"sha512-rwUIrTbwGTxU3RUHU1QmUGU70E69DWkg8z7W06YCVmffSjvdiV3uCjr8LIV4DGYyQOrSKezq3sUNXn1LU5Wxvw==","signatures":[{"sig":"MEUCIQDMtn4W1NTk4O00hV+c7xGH6NoUlIwHwFaoDh+bO9ZlmgIgBh2ujU7fk98HUq+G/0R7rLOvEDMSK8VQtkcyuIvfa8c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":84211},"main":"index.js","gitHead":"96e539444f9c25af03788e99f88b8cd1d70777d6","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"5.8.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.11.1","dependencies":{"helpbox":"^5.7.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.37_1523369981765_0.7121410846378922","host":"s3://npm-registry-packages"}},"0.0.38":{"name":"lonad","version":"0.0.38","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.38","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"e95f85fbe7169f092a4cd517bc5c39bf85a76f07","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.38.tgz","fileCount":13,"integrity":"sha512-5BMISiU/3SVUbbNDQavlmRBQc0WKD5OOFMXEzucNdE18rXWLv9P5eOaNCCaZGxiUyRlMWPIjsIiSCPgnQqJjTg==","signatures":[{"sig":"MEQCIGfjOeVU+e+4ZGTiS2M17XjUW1AchAJq1n0GrFaTnB3fAiAz7RJIInDbmo0eTuFCZXIFjxIdeT0omh6dwKYtBrPDDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":84211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTIWaCRA9TVsSAnZWagAAiEAP/iQjTId+gpYxiFj9JKRb\ngEgkhDWzc8nvBq0i9tPEQ9nunME7L5pOJWByb/qspiM8Sb5KG1g9S4wBOWWL\nbhDoaIhLV9pdgjhHabZgtPCuIQzg1ymxA55VqOBaNAax1nrpYvG2KT1U4XM7\nUdOYf8Y/5v1910eENcVhFs5VzWJMin7hdauQbK4aIO2pxxNTmXkZd6hPy4S7\nq3pmRPi5iEvhuMMDtb7mWkkThJABISqh20SEWNXaLePycelBmWVlB+8gHHXw\nCbgcR99u5OerHEwoz2yi+LA//Gl20E4MeP2L0HiidnaEGUcKbOlYF5lovPXw\nWsoDW4DfNdDKQSvBjDePAtXsS0cffXz1C42lKtFX9SfPRSUPxezW9f9jH+58\nN2cc0t7zJgYs2KgmHXoh2bKqt1T2mWDJGrWpXELR3riWQ/ctKnR9NE1Trmwk\nJ9cYdOkZ0zS6hX4mjx7Eh4ubh8UTRpMSOIQWK6u6Ukn9fTZGgRD/S7Y1OJDB\npnDU0OdvakFb/iGudEQQq1G6BhREs9o4vVlJwD494yrPVPGsipV2w99CCMg3\nTgTVCkYyTm4UCbK9O22OS7OjlaOVJDDZ+xEAJo2OaxsKbItbR7It/Lk9w4SC\noguVt209zeB9hjyGbXoO8km/IygoTyGXvzkD+4Gl6u9jEGv7yYqZH73W+k5A\nEKOq\r\n=8jmp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6a65caf531c526b1f8f1c5e49e54d916fd712018","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.2.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.11.2","dependencies":{"helpbox":"^7.1.1","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.38_1531741594641_0.3512888501749767","host":"s3://npm-registry-packages"}},"0.0.39":{"name":"lonad","version":"0.0.39","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.39","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"fd50ef4f08433c0eb9de291cbdc03b1bdbb08dae","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.39.tgz","fileCount":13,"integrity":"sha512-g5Y1vpjs6iiYKe5HHrlJKnO45kcO1Hq/EQ2Bd3ezLsaIiklLNGUsYiZ8NJj8yEXlHCNKkjTN7+HH7dv9O16+UQ==","signatures":[{"sig":"MEQCIAtpiYcYGP3O2r8hPK5TOz9pv46kWTPpfXsVk2X244uTAiBKGkjA8l19sS3uIpPHTcRIaVAJIEr5BCXktaph6YpA1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZBPcCRA9TVsSAnZWagAADJkP/0xkVWwBZeR1O2sQfU3T\nHdkJ6o41CTHoT4DWIhWOSNqkjnUkleivMU8OktTY6wMHRZ1+U27WJz1wtjce\nqyoWkKKW0ZuhCSALbJmB+be+DCP85vwLkvb3Xk9hB0Fvwc5KRXPHVmmuEi8x\nEnChZs3IPawp2yVseQRWfU5ZxYGNQEIGtYDGUwsrW4NI2hua8RI4m4ugej95\njV26Q8ewCDtoeMEcW9rmu3888tWpoeD/9c6XuuA2b4Fu/fJUzurM2jdkJm3J\n98MMlehkSZw9eWrXAkgdnDi4zbtSKxuxR3Kvh+11yj0aSjCs2lN70egJnE1l\nWMHIwmkkEd/X6r273H2jCa5O0qrSTQj9STNL0zsqP3Bp3GFKdVleLicuUyXX\nVwCbgfHGhe8RX6BnjHgbWydc970iFDBSqZPLWvj25AYr/EmwAQcr/08xDgMh\nA7Y6hKERdXZrFfxLZQoT/GugyKIX5fi1YWXyeMk52YAIQVW3p2T5VqIe+WsX\nwIgiZuL+69sJXhD2eVTN6jtNzEjePpXX0NTuQ1QkpbLUDNSEpLZPsOrrg/41\nWUsDl4KRcZqcIt/o7Zes394wmCi1HoBV7la7sG04LbwmNi1TtP2iJ0ELBbaS\nbNGBOMqVZTSKR9kx82ELZbwxXQavAModBLGKc0/mAWLpLwWJ+edf/+DOHUB1\nz92s\r\n=OmZ/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"a6e580f5bd846eef5e4d6720e6e48e4270c424e5","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.2.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.11.2","dependencies":{"helpbox":"^7.1.1","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.39_1533285340338_0.9018637659327904","host":"s3://npm-registry-packages"}},"0.0.40":{"name":"lonad","version":"0.0.40","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.40","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"}],"dist":{"shasum":"f1efea209ef0a760cff8e9dc861acee8bae3ed17","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.40.tgz","fileCount":13,"integrity":"sha512-PfOI+RPTsSZyEp0QlK2ZIsXpTS1N0LO1QRJZElu1ySp+thYuOOkdPcr2yVW1GR5yOGeOlhw0jNEi115He4ZYVg==","signatures":[{"sig":"MEUCIQCq0hR6YwKXGm7ivuMMr62zDdMGFxadxgsKG7HiuOMjNQIgMDCH/Xb/wvt0WI8Dit5vB/+sF/oPGgd/ncKD+hKjXhY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":86637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgBfTCRA9TVsSAnZWagAAKi0QAJe0exv98/Gf24UCPfeo\nkZmcAeuf/uMFLe6XG4MeDXDfZJWMtaniOnflB+DtfV7QZB2Ob5U3e0qqA8E7\nrcWqxPvt578nrkZxUlld0gmwbJ6burjLZFGuDX2x+67/85gRynRLXK+MAvcQ\nULgnWij4PesbKqLh6EiH6fa7TtXsMGfDlyXi6gTHKlAzdeLtsLndjLbCSw6/\nN6z8XD1YogEHEL8XgBnFVthrgpfOolevP4d1RAnsvmZm8xacVK8e/3Lq9j0j\nFUrwgX1q2UhSEuQIeKKUKAdVUIXOej8cw3vCyHjxFnehlrd+XZx7tMqGo7BN\nA8IUge/X4ADn45E8uIbSYHdEE7tMleFZkaGoqLmcNGdPNEbGEUMj1vBYXKcv\nWyov9I+LmMhYibBZR+JJ0dxTpU3mP42AjvZivWa3Bjqphp7X+i6T/FyXnNy/\nxEVrQqrLM4wlGqIOY2XaK4Jmv4LUP72LNfTD9YI86QEvfWQZIabgywQQXlye\nyJ3iRNM2hyoD5Sm6ZdqgJUTkBJyOK9xyD2QfY6mA+/XtmItFcbaA06bOFWi6\nLIAoj01DRCgA9Cz+3j2MZsoXFMx3B2CZE2B8yaDXel8spyhHPpB8Osv9B052\nusBQh5qV2rTMyAms762NWLtN4spkfRVMDeK4mQbThW3J8mOqdxY92qoknmr1\nOUxc\r\n=kZP8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bb4afba16d7b9643e2ed1007ddda28be222465bf","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.4.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"10.9.0","dependencies":{"helpbox":"^7.1.1","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.0.2","mocha":"^3.4.2","eslint":"^4.1.1","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.40_1535121362946_0.17698668416775676","host":"s3://npm-registry-packages"}},"0.0.41":{"name":"lonad","version":"0.0.41","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.41","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"1de178d2a8a082be50701fa5b1edf19273405752","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.41.tgz","fileCount":13,"integrity":"sha512-zS1+M/yPp88hQNut5Ijr9zNDa9RXSYx5NBGQ7bnk6SvD+RObyY5Ye37+R2TuiSeiYUIYR4msbDJXdgHuB3dl2Q==","signatures":[{"sig":"MEUCIQDHIGECpK5vC34ZDjqKcS9EFw6k30nYFSzgV6FOnArHyQIgVEVdadYVhvxtNGP9ShWdfZYQ0z6sQNoAj6Kb/lB5zhs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDnGWCRA9TVsSAnZWagAAvfgP/3xhEETl+URrDEmfMfNB\nsnQbP/kabdXTa0YlvMGy+zLJU8UDWxYcKmNMx827dt/ZC4HFETz8DPvwe3xx\nFd0HEybNi5YZcasSWNDZwEevWDwTXO3zwRjx4c5PwNGMvm2GGJKJatatmn/2\naNQVSJynIhnOdsEVsMl3GfXCklNZmwYO4TuXdVmLVeCKVpDpr7SZ/1ZTChfO\nh5xmQoOXkJd+RlPn6U1jNC8DG9eeY+yPM6di6F3+uEQS6ajxBJp4SgD3xaXy\nD/v88gf3sDMyi4xzyqKhTKD2R36u5CHgzCSj9XMV8LfHO8kYB35djI6hrRrg\nHPUGHzJpKElpxbYr3kOOtO4N/10MUjKge/VvFBS/AGQ6V7mrY7zsvRcN5vOI\nuSe9vejtKIfIK5olmuCa30rllTR5hU8SlavNSszaZAJVekF8LddbwIXNMQeB\nWwKFbvEvFc5d+aIGB/DPasnuyMahJINhxKYxX+eSSvyFOPWnoYrPphBVZS+a\n0Ay+PXDib1+YJFCliF6bMl0Aki0rmMeLQoTD52I3FR4HL1EWY0DrI872Hugp\ndbqH8qXR1vstpaDxkq+/KzTRsIqmD1KEUNIPKL9dyUOrLtXwF566214+l8Ih\nkbSQ62i6TIvEBe1mdtN9mmGsZt3dvRy6zOoGyxmEZSD9NNA+vzsrOL0b0DK+\nl82r\r\n=yuBi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"58fad2f19f58508767fe2a1111f8c81c236f8db0","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.4.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.3.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.41_1544450453236_0.6723542038084873","host":"s3://npm-registry-packages"}},"0.0.42":{"name":"lonad","version":"0.0.42","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.42","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"3e97ef2c678f559bbd5b18de63e21ea6bb892728","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.42.tgz","fileCount":13,"integrity":"sha512-b8/HGXiL7JM0x/SihzJLrWgTwl9YvdlnGYJgAm+BE44SWHRsBytIOISk2t0y+ToVNONhvMwnrZ7N7OVhLapP5A==","signatures":[{"sig":"MEUCIQC/5PjDNkvn8y2e1xBndqWTZJSEY4EtiL6BUclLGFONogIgMCy2fPNWIykBz5AFPfwYXHoiTRQkF1DbwiWved8+ADw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcb+iVCRA9TVsSAnZWagAAxewP/2eerrDp2FJQvBr5A0kq\nU+e5q2mSHe8mfV0/+qYDzTIUnUXHjSU+qxqMFujc3NWzPMqGCJTZSLnC2G8C\nvmu7qsJtY5x5H5N3OyvTtFsOkZZhPiG8W09ZJfblxKUpRzU9ghZSxqSBu9SM\neXnczfiFBnMHvNB8E6IZLOX4TlI4oFvYsw4U2EEtJaACgAcVepeZVlrcEx72\nRdp7xRRw7W/LeD2hzeGCWBWa6HEwFs0agehLhZbmt4ukMJQ7LH7OX5ZHXSwF\nWDEEZ5qKt5Fm/PubqLfi2SUCWgujV5Cq6TS/fWWVZaNAn8XYJqU/sgWdZnIP\nnJ7twHVmdLzbMLPZaKtnVgI3WehdFVbX+cjtQZkh/xlGLJ0mm5e7wndquXgI\nI3/vsUtjVr1zYmT+5DdrIt5lSWoK81IKPbGpsHCe1ZLvErMeze1N2vGbmbKs\n7rL40k1a+4sF0CzRvlVd2FM7Q1IdhZmSIWik5YNCg7PVVwmJvfqYTOgoT53J\ngEMZakrgS58baMDX2CuCGlW/fZWuQw+bLQuPfG0SF8J5iPBMbFjPlASe8BKN\n0JrQXEesnyJYG+NWQMBCKNQBD55+6m5VsO0YUDFUqnSaFUCgEXRJ2AqfC2hY\nVcddwCTJWgsj0dzQDLVP1Nk2AG3HYQO500BJ2Y6vBl/sl+ukBQuz0ICWT/Zv\n6Mix\r\n=ewtx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b96e827b1f5237c7d7e26f49f8faae0d6e41cae9","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.8.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.10.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.42_1550837908991_0.8152857902965855","host":"s3://npm-registry-packages"}},"0.0.70":{"name":"lonad","version":"0.0.70","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.70","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"81bbf90ca934dcf51403aade6f0d9a61fdf01dfe","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.70.tgz","fileCount":15,"integrity":"sha512-IVm5jHP1N2Ul6Bq8azRbAeBgoZEWYU2KCxD8r3J8a07UKQH9QLT1eneFA+uMM4iGGfMdTPqJcFXm/Gna87CQ/A==","signatures":[{"sig":"MEUCIDQk+aFh5YmC/Jaj096Fgh2bCQRFxv2sU5pNIMrmyZ8tAiEAp6OWrKn9la7sooqn7xS+BvrAzsDYrNADmhjCKlSII5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfGIkCRA9TVsSAnZWagAAF0cP/jfSMf49oNqLPGkcxoNy\nsI703N43cU5KNf8afzzErDEhNsCc82FNiRY1zINavnZpbCw2lhOzZxT8iMIf\n5tnN7WlV5erMx/zsmexlr7sg9M/9FCkapmOPdKiFF0YRJEBe3GOeNEAgihsW\nUoNJCMFGNqIP/k2Gn8jnD2m3u366/ah1FqURFO/Qgnn4/MJI/HdCpC8ROSsX\nPPK8BOfSyzWuyCg6+CdgR6gp8F1+85vZBW4H9nLFB+ET1GaCDYU4inMIjSpz\nYduTjRVvMB5KFfFRWpGhMS34KqOb5CiGIqdVEQrR8tMLAVSvu4h63BMexNiM\nswfc3FfL8EcSrgCuiW536EYCWGlcPAiCVIus+qfE/1TOyBeSp0iEkKZ22GRH\nP5WK7CAn4nU/jZZOBYQfXuMiTNJbR83uwFDgRXplaW6WP499ziqb1z6+pQ0r\nIJxad2a0WiS+YIkbHenuAWn/ssPNIUxp1LXiyUhDD4Cqbhs3y67dSS6aKw6s\nInN5CgyPYsqaxXOxLaw+TSUpY09Q33+Od1b44lbpwGtKg2uuMhILO1skPVd+\ncTA5CPX4PxwOfIbvRwOKvY8KmNUIcGXL2wdCE0mkPRwZfMIqmIxHp4IKtAgb\nFhvl0AHXINEmBJMn120QpRBNV6p4NM3wLdfiBecNwBH/1FhG1xcq8n+41LT/\nscrr\r\n=w3Nc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b840118e01559a295e044e05bf5b28b549f65859","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.8.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.10.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.70_1551655459974_0.8130146417971651","host":"s3://npm-registry-packages"}},"0.0.71":{"name":"lonad","version":"0.0.71","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.71","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"fecbacd46f9b8972c0e79baceacea095acc71d5f","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.71.tgz","fileCount":15,"integrity":"sha512-eMYueznkGfyhfkJejEW+6PmcKCiP0tZZfE/1bfZvGAb8/5Gd0aZ0A0+ORTZQ9WTTkknY3NfDauluD3RL3nZuHA==","signatures":[{"sig":"MEYCIQD99hT6t4Vvs7rqZv/3bFE13c+zjz4kUVt8yI8vmab6KwIhAObjs0bJlrggv/5q4fHNxpweTgYDMOaMWnPE5KoIDETm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfG0+CRA9TVsSAnZWagAA954P/igYqwJoCbRMXrTWxkuF\nujpc+Yafk0PsMaDjakhiWT3dr8ubjyNEuVy0ThscQ8PvR/LrdEUwgCnorP8q\ng10SZ7h66A2zC4cw9ufIExdywHQrb4dGtMbJLG9FK+v0xxzpZHHKPLI97l+E\nh4A4JQmQ7y7ROBLhpK3n+labaLC3/AXvBh7RVUqGy9UJrPnMBzsmJNQIzl9b\nG3Hrn98GNwn7+IUHB6W+d36I/i7fEGU8KCulqtvRblaSS4KSQ1Od/QGch4L3\n1t6+1cgQsp//AiYXWbNsiIGxRY8YqYeIwjtl7s/oL1ttzWth+2NRwbv9srpA\nymMFeGsYeq0aja2uk8VLuHR/Lcg1Te19K8YImhm1uVchI8Vi3f1OXJ4qupIo\nMwiEAYNRUCW7jvaEO0NO1PS7OzSZJ2S5VQRWOvCDDTv7RlOQso+vR20Y8ub4\nLtlQPmshWWsZNYHGhvwPNPyZJ7oBXj/Ixw8jvkavzpXFW7Jl7We/Y66h79sM\nSrjqKA8DzZjr3t+NFOjGoQ95iSxqwdO3YbJJkJK7YM+a0sc7saj3yPg2u2d5\nbFJ6JWcIUTNhaHoKnftamzgxihCzNbyTOnIEOhYdkenETHT8YulVBW1FGlrF\nsyJwvNt0jubDBLvW/IqNMPDAsfZJvqg4bzBl11hK9GGqVq2D75+blsufZL7l\nOMub\r\n=JYYz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"cc9ee0de934aa78acec8ae594cfc73e8a6863815","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.8.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.10.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.71_1551658301279_0.6533911805859605","host":"s3://npm-registry-packages"}},"0.0.72":{"name":"lonad","version":"0.0.72","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.72","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"9ddeba0590f7593bbbc204025fabf4c0c2e6284d","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.72.tgz","fileCount":15,"integrity":"sha512-jqn/17tJeRbmkfCKiCwlJNwHA0AhUH/VdOnZ5dZTocz5NiweCmzfc7KazVYPo5XD8q1q7G13zubwJ3HemRABdg==","signatures":[{"sig":"MEUCIQDDxz+ATauHgKM53UWtR8ZHU1Tf5KYVWGr9ppFiYZo6+AIgfjkZ0152kjHcCegdVCOZZGhHMQmNnfVMT6G8D8doDRI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfHBCCRA9TVsSAnZWagAAHeMQAKD3hO7stLMRZMMkFTPP\ndaFP009sDgpAjbpr1do+7RNN4KCBX29X5IRDwf2M8Zlo5/7qYz4vqz2Rwx50\nHEsgPFr9eqh6PYy/JLnwa9+K9COHF7yxa9eDEhh3ueA8F0c9PFsm4GaSUWBE\nNVg+8KYP3+3dK1hi6G7nkz/s3Ij9OxMsWmhIkcfz+lwYcrPXyvQ3feZzQhAH\nMWnE5NF2D/6sV1SPwRo+tf/RBmeQqtT5JN8vJfGDitTWUnbqMzydUaM5xV8E\naQpeE3Fu1MPWrapkiPLwzeKw0/Imsx7lECICQmVc4gCsCeGg+fftp/dAS4z8\ns1xSQBqyi+13zb2T/ElLp2zlin/czrFauNnr/bCAXxy6X05Tm8xWfm3MaNxO\nDDSz9D3TmOiPArxyUNbyKmyKUIV2u2yqmLO9L2JYZUNvM1qr/OyY1bqPen8L\nPIjGI052BPKSUdRJwLlLJ4dizx1pzKF5/R3sIFcQK/1wUL+CnJXWorhXj38b\nAvgV4jGbk7yNHIKtAsI/nE9PaPe6DQOVjFxMHNhJysKCmbk/4Num21p/Bj+W\nW8rHQb2AUV+rCh3ur/3p+pCYk7H9eQ5jXw7Um3o6VLANIsZkL9wAKgMXFBbL\n4Xc5AAgmOOo2n6D3Wb5EEjHR8Tj+eanBplHhLRM7FbMm6lwQMPYefdmoXC/z\n06Vo\r\n=Juf/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"1d8808075a8c57fd866cb7739a40d887f23447c5","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},"_npmVersion":"6.8.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.10.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.72_1551659073540_0.9436791867221119","host":"s3://npm-registry-packages"}},"0.0.43":{"name":"lonad","version":"0.0.43","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.43","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"362b1bc73579b2a424ae6e6f58f967c37d5b3298","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.43.tgz","fileCount":13,"integrity":"sha512-vT5fLfwuQfEehDIhGmHQwvcSbjxIvCMJbpnnbWOQH4eKWb9n7/Ksrus06OoasD3kDdbHqh6nupHaS/V3Sbqj9g==","signatures":[{"sig":"MEQCICvArvBOhwvI/kmSu3I1ElxuyAOMGsmKekcqCbJlINu3AiBcqWDxvPbccMB17nRFW1lZB5Z5f5cVSzXaIlG5G23C9A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/8buCRA9TVsSAnZWagAAVDQP/0h7uumyCly0xPdRRd7Z\nhcxfPYM1Tiv6XaOYm8CzR6SvgRhkIn0wMIsOFUExPL/r1OswpUprOScOzEvS\nYSVF1qLt55O33guwb9/HDcfmKpkMkMbDjwfC0zr+NDpst5Vt28fnmgptnoR+\nyQXXjcWfW3RzZIqx7WE2RN1271p7QkAlC1+BFlHbxLqiNVcphaukbKKlkfK4\nspBCCnTOP77Ca6m5RA3y4hD2Js+Qyw1XAMlvEnR6sRHItNyCy8SdY4pKeuW+\nbzed1dVG4q4uVSS420XJe/Ku7CagPTjSkq/sb7TplwrAn8SvGtZpiHXVUyqI\nntgE8Ugao7Rcx+cLOGC1oYplamh7802V5bwrAh5Lv0VccAxIN94ttm/4guzh\nULlCcopOTgpVBEJN6I72Vn3pxgYUdK7juxxEqZLUe1xOx2JrWKgBQck2mS7d\nZgmyqi8oTLjZsamsgbVJubKoc/Q++Uj1FDqGAcXSCxiMwagGITgir5boaMnh\nGsan8DytCCram4xOlIe6i2yAGCY7hlwo4qxagLw7ubyMAovpM/trgiV2gY7x\nGLAhM+CI0xisA+k7BWpa3a0Qp9ImCGkE9LX/EvKtf6f6eEyytWN8sW8greF3\nSO3YDIkB4ZxphaXIySEVvM3b2zAHCh7+mGVKZ1OwtiAnBFkptq9bIZxXGtuu\nN3ND\r\n=nYTS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4e3eac26b33c6212f43b5dc5229c26726c866c04","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.9.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.16.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.43_1560266477418_0.807317159953477","host":"s3://npm-registry-packages"}},"0.0.73":{"name":"lonad","version":"0.0.73","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.73","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"a64fbfdd7d11bd33bac62abf236ee1355a9ca70a","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.73.tgz","fileCount":14,"integrity":"sha512-KlnEvQLHtUdGiRbfXVBLYKe1eT55F7TEcn83OxnwoJqsNpoSea407yquX8BjYDxmYQvK1C2gRsEZNzOrSRrAew==","signatures":[{"sig":"MEUCIC1CMJKIW5sq1pEAeXt9aNtEdWpGB5T/AYf3SgvB/Dq2AiEAtLSouTeEv6KGX32fLUhi4Ju3OcvjnkUdgsknk/85hrY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/8eCCRA9TVsSAnZWagAAyd4P/iutphEDFuiMuotKn+l+\n6e+n3XcQN4e4gTVYfxNk7PcaVtNKF7B5stbyZwHm8h9cU6Fl07BjK1eDV5oi\nxDDJTIsaTVG7jxjPDu1GnP3CxIij+9eHJtiyWK2TbO6zKQ9WGTbDAtTPZBad\nhw+2VBHZndhB5GilWX5H4iMt/xSP2XbOft+ghkqP8yPpooPLwK8rsdSW/Xpz\nhsZnoIzWUHP5Pnon4sQ3bPDVIUJDYAdF4aN8kkL92d+T7DVu0UcT7exTFyn0\nkWwOACAv+xPi7Z3E8kOTet4KqwaheAl5suOewnrfP19segRi7Z53NnLKKfOZ\nm4wclPGCcm6yUvJ8i8Yete73MSuFALDENH9xofOww/4yktsTrQqcMr/+Xz3A\nhbDayUqMxIicknOKV0F8C5RAkk6rma17sqvW2C9KuV84j81B78EwiTgpzyCX\nkZ90TSZQmqBAh/oeEZlb0jvCe4VPtSaGj5FEQmprUnAR8GD7rYtA5XdxJc89\nyVIxW0DiUpKA5NexYgMI4EfB/IL0n82RFKHSBCFHlVJF+aymM5jmTbEELt9b\nQp+HWeBIxyqxUAdaWf0qlwkliSJP4kH66EJDhx15Dl+4tfba5u4FSUHEWJ6/\nqiFSTzxfJmd1ttHco5nwVWxO0a+gtUm2XiV1qMurlmIiiEVUD7AucmbR/Xdv\n+zXP\r\n=jUr/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"1ff14b2fbe2d6342f6a345605a18b49c6f9f0e95","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.9.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"8.16.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.73_1560266625953_0.715786175315053","host":"s3://npm-registry-packages"}},"0.0.44":{"name":"lonad","version":"0.0.44","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.44","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"9fd13a0295f96efd044c8851d063422788bc5a94","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.44.tgz","fileCount":13,"integrity":"sha512-paR80DJweGe2iHqFCuo7n9huD7VDCrtPlKImjzHah1IG/0Cf1TjYKRZpKO8ptzytFtJWNA6g2W5BF2SkoHxh0A==","signatures":[{"sig":"MEYCIQDlMomO/4DfBOL39J7++ByDGOf1PN0cV1SF7Z9/qtM9OQIhAOZGez3koO0UMJ7qnf4/SSpU1biz5msli+w9d2Ww4Ihu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdW9wOCRA9TVsSAnZWagAAInkP/0EH5oPjlbs3PIFMFYuu\nNGm3Jc3Sx9xVJc+EZrveTjF4HynLT2Oc8SpmQZSVAOHQ6TFha/VlFnMTHclZ\nzDHAkGIpGjEs9wbUJ1JwEpavWsKmjMbWf+v+p5GFIOuk9ZPYJTEbMWwIERCA\njZQLnHAd/5HBQS+xT1Cjvs2h/zZqDlOKIUzKgZ+Zk+Ri7TbY8hTKIbir+yCQ\nWAnIHy+8W56V68IZRRqkemblurFZsKYJfiCkdxGCIl87ovI6Kd6lMEfNvnbq\nuhUXN9qwlPMmyYGkXCvzfusthzAKc+m2PjaKO8KL7RkzOhqqNjzygvz4JAZr\nsL3h47ei6rouK/2z7vVOEcCJJpeMr1iZs57N81ziQoHH8IOaSDIVDKTSjL4e\n5Csm+5Yrd8+1lG/QO+P1coE8lSwj5W5LrS47F4pCkikdnBDjg0OFcmFUxIOc\nEyz2TR5p2icS2+Ri/oP8hdnPBxE+XClZTHmg8ZKRXQYjjc1tIHmqDbLXe87e\nnR4F2f9dtccg5wN8F1UyUeTtyXZTh3jbjowRz7EXFnQT9b4iOImZCeV/jaNd\nv6a0fowV385UYLCO3bimHNe2mywQAWV8pr9NxR+sjVMWaZm80eQd5MwDRR4W\n/ER/qCgMGaw/C+kfNc8AUBEZSwqdByhssW184LOI7GfhkLWbdO8L5uH+D+Ue\ncd9P\r\n=GPyr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"7d4aead7eb17f08c430e578c1c35551fb7c8afdc","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.10.2","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"10.15.3","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.44_1566301197879_0.4133433775361013","host":"s3://npm-registry-packages"}},"0.0.74":{"name":"lonad","version":"0.0.74","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.74","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"d1e1cc74a14cc001f50dbc499e07b9d2aa6b52d0","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.74.tgz","fileCount":14,"integrity":"sha512-96Zm7d0VfpSEfbOxs+mn/ZBjrVMZfVRtg+WAy0+dyyDWNLeIhiXY8tIHi/XI2suYYUsxK+GbsY78UB7YVFxVKw==","signatures":[{"sig":"MEUCIQC8TTSOZ8+eLsW8QzwrtsKb//QynHC1PrIXmXBd5Q78RAIgPujjY2Q0+5VcY2fZLG/58N01EOnEoQ+RCnCcmIqtkWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdW9wdCRA9TVsSAnZWagAAQd0P/ihvLidgmPMLxAozfFSL\nC3ApnnFYvehBesvfPiNqawFpUvzp9O33aqppWfiluz75tLsRnFBgk0CjZyJb\ntXeXFnsGgJ7milhGWq1/wtHN2y/UZKPFmQlp2cFw0Za/eIl3HKHWT/N2+hPx\n4mj9VI+IlINayF0VHhL0s1FG2gIn5wpCCf7iz8n5tID7PStmeIIbgJZQ65XO\n1JWTRpsvyZ28hxSBxQSih4AIYgwKhYgVnrtXhhcDXaUt8HX5Z47Vg5oWTv8d\nQOcBSXRGxZfTT6nQ+ouG6C0Sh+8WP5uLEUGvkCgdw9NQwBfk4tmp7hPZoY2w\n8K5VP2wT9F40n1+YSZyAKps60C6DxDbF4lhmYjjd0RZF6NmrV0CGxacOFy+6\nvp5La4blNgecXmF4WXbO9Ltq5KwSrkozYE00NvPHTNGsGdViJg4HqqrAfWmu\n0pgEqqP8QELk1fy7EJQ+tfygvh/akuKTGLqnGJ/E90n/Hfv6vKUstoO27gF7\nt4oEXncEgSYLtOrFN114Ly+/u5YZfnp8W5WqcpazJdy7Tijk0FmzKFSTS7VJ\nrMRJ6YChkdAVV0/EkRqgTgd6lnBHRH8W/GrTMEXZrBCRSDdCpH4CeGpM1t3W\n04oBsjVsAK8PS6icqYabFNkUaJ8SMqoR7mds6i3bTsOYpzzLaU+2HfgEjP1Q\nfpd0\r\n=5E8Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"7ba60fbec5cd7f025a39116b91a54087f1b87d3c","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.10.2","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"10.15.3","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.74_1566301213141_0.9674030631274753","host":"s3://npm-registry-packages"}},"0.0.45":{"name":"lonad","version":"0.0.45","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.45","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"20028e6a536ee0274ae2eb241124c0ef72e19b86","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.45.tgz","fileCount":13,"integrity":"sha512-0Sk/pHUP/7RMy6qfAXcq+t11YV2IaIMpetJE6b9Hr3rd2bIWw2XopKsdhJbHXs8Er0WNiYGXvyUFX0GLyGMetA==","signatures":[{"sig":"MEUCIQDHYR25oxOvdgmcga6k4ea5wbEm2fuqnJSq2ro8cX7MZQIgSY9PFWC2iD9v0dSFJr9/PoNLpFwjY2AthpBbigXf/3o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbjC7CRA9TVsSAnZWagAAyCYP/1uVTHBv5EFYCBnPnNOi\nPiyjXuCzs+SEmpmz7Q7MNg5lquII8qeLf9WlP6YtvJO37SfbxeFbL7d4L1gF\nEs0SxNURdfnuU2ws6UA0v2NlXgLo0vq1ko17Q23QC1h6jve+EG5zkEIYVCLi\nBCCkxxuv7+LTrljwqTE1jmqqKz9QWA5NfCeBUQGOjtGqDwJb5Zh0DpFtTgem\n0vQO4ha4fgpUlCrD9N1vFNM0n3PCe53obIJXG92DUPfFh1tOHJrrBNhZo0yC\nKKltowkhyR94sK9kcdK9yLU13Okkg+uDVVbwJoX57FjuCiREqoQM/x03R+tT\ndUfzRPr/6SMvvGzobKCQ4O9P3EAL2yxTQRcr55EcWYBLsmrHbkubKZje4tm4\nTEJky4tuBoQofEQwnGJ1E1X1v15tO9dQc3bzk1vPOJn5ARNOenDkDFDHymrw\ne4kh4LmVaX7pJUwim9JzWNOsT9naxw70j0f9Roynzo0ApRqg0bnvJPDQVTNq\nVQVldFGNhz78eJurkF+/BMy5KgIuwvcJN+GgFNX1wF19lkhV/cttA7xX5PWR\nIN97HXO67FY43muH6PSFVmnJRn3Coe9uyyniUp0BR902CNor/EuRqQkQMtLl\nUFATFR8uh4Tqd5N2a0K44SDvqu5bNIdEUDVEV5Ip+aAOb1r21wDBegYY8PoW\ntabC\r\n=+Jk0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"ca105f09ba1399c5d91893c2cfa51140c482adcb","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.7.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.15.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.45_1567502522499_0.8736852028181048","host":"s3://npm-registry-packages"}},"0.0.75":{"name":"lonad","version":"0.0.75","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.75","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"fd49430f302c581a1e61092bbd50c55cef3f8c16","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.75.tgz","fileCount":14,"integrity":"sha512-e6MDKEL3BiDB7OlygB8MxO06kQ35RsmmqxkXOslW1e6MR2SSPT6nTcyodTgcJTanhqlmtHaNp4qvUVpw7ALZxA==","signatures":[{"sig":"MEQCIEebCx6q447OzSFS8qe7bRpWU2vboCad5ZcPjp/KsNDWAiBLMHm03x16Y1MqXQckNpVO3JF4yjMuQXBrjEivpRKKyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbjGoCRA9TVsSAnZWagAAGhoP/2ISCgyoAa5UGi9oUGRx\n8xUIIQZIkOGocs2b24cbp/zEeh8OgEU2cAs10QAXoYciV9pAtQ8RFU2LbkVw\nPhk9DUuXlWAU6X2lbc/4c8OryukMCHIx48o0UPxzsmirLCDZ4agA1O8TRFhC\nU+92nvCjJeROVLfxeed/8EruEmD3Vb1hAmi+peOCGOWkXGXH9xPt3T5xk9LQ\nFRDeFBIpw4Y8n7/bIKe4X5DJdInw9JjUlSnsDLZ2+NCu50tIN6tJWjBa+HVN\nUAsmSHrFyPZLNbw3q+vjWCxJqMhEXwSkYBw/KSSVtHDU8+e+siYZihXLRNUr\nKLazSomR9sF1rLRzmHsb/FCRQUiiqLSmgpuisG27NYB19jx5BoO0onb4Z456\nC8WaAT5YGN6Ac0NzXvZpb3wog9nTQfzlXD6QIqrieR3mUSvLuBEelv5CTGY5\n1HCcCSlz/7Fj0QG+YsEUdLlV2FnHIkDA5cqEDd2VeuWoZf+CCWxzWzL1kEKj\npoZzmgzSCZuilF/bPIJewGYgF6M2BeS/hABqS4jOcykhDACqrW1Mw36H3SJM\n59AmX+pVhfn5XDw+rwV1XYjaZPfXraRcIIaRcgoi1NBjOycyBpiUhNWX7ycy\nlzC50jePepq8+bt7nBR1LgegIVrfPQtGAocoMMV78QeEESWtaqUzqM5USOxp\nP4xs\r\n=oPDl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c29161a3934eb44710a86acfdf8427dac09841f7","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.7.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"11.15.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^5.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.75_1567502759375_0.40092417208853126","host":"s3://npm-registry-packages"}},"0.0.76":{"name":"lonad","version":"0.0.76","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.0.76","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"58895f6270d5c327e493a2a11b394d0b32e4e22c","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.0.76.tgz","fileCount":14,"integrity":"sha512-ApT/v1RsXUoVDlPJ9sv+0n7Md37EkGMxgewz6B8ltRuemU77DclSKUP8AwAbTMLN+gxaTzl2uCA8NTpIRSbL7w==","signatures":[{"sig":"MEYCIQDFkapZ5T3XZXzF/BR1UY+55RVq0pnvNqVrljoRfGGCwQIhAPeyDkHjkB291adz6auxfm1olFp/llC7F72enveGlmG/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2QOLCRA9TVsSAnZWagAA0/QP/1oDRdysYHrPGPALtB6M\ndqBnnMytKIM7LPL+Fl63U37l7+60rDXiLdbX4aOczkpYO71Ild0OEMxEBfsi\nBB2ZmUBMiiRx56XG2mtbp8j9y2Iaatx+ZKjPHx+zayDN9P7GRGPffNnl5LU+\nOyvL0hJXc3kMVrBkSXa6FRvHBXHyCmQHUcN7CUwwi8yRVTmrhqwu7Rj1gqbs\n44lGNc+kwuOp3qW+Ne7vMFvqC4xz7Eykvn+qLqMPpDCNXV4/LMrPenna05rX\n9bFfbmy6XjCVZJwh2qKa/Hmte4bbcWdlwHOx7wqW3L1D7xjFNNWvcqdPaJgM\nmcmTyuXTvA7fkFgeqShPkU20p4Vl9u8bqJprmYF/IcbSzXZfuWLP0YBfTyt0\nQ44f+vi/MOTLjvt8jiZjmIKxloX0vZEmcWqfSyLFgVwxYupyGXSvFFngnn4L\nyHux4R8MGPB/Ak9M99y/WCTE7RIqIxF8tktyL9qesL2b/cOyL4Cl0QyF2Q3A\nr3S12ko9W4elh3DXY3TXDqrEXfUYPvdmgKT8w3Q0jXaeZ7CsDDpYGY1f6gmG\naJT9Jl/I2HjXwujxobLef6o2Uk8RQ1E30eVoIe8UJ99kiswrgCccuXLgGNf9\nA4XN9JomFIJqxkuR8tESTkTDpOGoUNcl+UiO7E++uDVimRBVDFBv7blIDPXi\nK7Iv\r\n=iU2F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2f49d60233ad1740f8a03fb149c4100f62a1cf66","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.14.2","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"10.18.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^7.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.0.76_1591280522761_0.5366276095555311","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"lonad","version":"0.1.0","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.1.0","maintainers":[{"name":"floriansimon1","email":"florian@tentwentyfour.lu"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"9e2954714de393045920d22777f3fbe31667df5e","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.1.0.tgz","fileCount":14,"integrity":"sha512-N7cgyz1rSJjXk8j3X+6GI9MtlrTtk7Q/gMXtnmLmgTL98zEqRzkv/I9PbeE6iMKAlvlh1LPOSS63eqxHw46d4w==","signatures":[{"sig":"MEUCIQC3X+sTcr3fyi6BLN7n63J2sM9QA0o4+4LdTZ4Il3NgOAIgHUQsHNqTN491BtBwyVG1Jh690Yifce2nvyG4f3x3ZPc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2Q4aCRA9TVsSAnZWagAAwIAQAJ8ahuvt98gOrvbx22V7\nP8uC54DqaLAlNVMd/+8VM951ktZIhy9lUoLDjeDWovyZmIl3yUR2s/fiEaWB\nqAH1X/VMueOb4VpYNGGwEZhF+FLPufpRUkhEybRujQPxD3CXF3B6BK/E6SGz\n5Xd6XtoxzELUc+vg/jQWvxu5hOWMhMVrpDAYAZ4U1n3to/KV1aQEdnfyKBJD\nkQxVbmeChsdLTn1ru90ebW8/PvSsWKxF/Tn6HDLle7aOfk40T9dGulZL87P2\n/hXWs7L7fBjeiwWau23tEQzYpLpD2ZKlIflPhWgr/og+aVwjOo1UbnG11n04\nlEIne4YKKD3w1/kVmqcAzQZx4EB/n/h9QJUomlLs3vf9k4RoOTqhcnQWcu/D\n0kzD7Jqh5JasJEKQF4dpo7JQCpdJwA8hr6Kjgi2lsBvwZhNlv5nBw5fLeYSm\nZVHqXLDf6LOpj/+CWKh1kb+qnP74RXLkYTfSowYOHDhOUHfTh68HlsxdBaMa\n9Z5pL5X2QD6uclbhJt/VaTmEhppgjcQw8QLnWEz0tH/pN1/pXz8Ge6Ixjy0E\n4SfxjG5xmsJTLjjRAIRAS80sBSQb9uDF4GiKbATu+X/Zb57YhatlkUZRQcWv\n85lRfvZ/5QIMBxBidebpPWhnEpfjpfikaOjhp0b1oVb8e24jgp1YZo+KybAN\n8wDS\r\n=neGu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c5acf53b974358cd05a66c5b238c3c242c2d80ff","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.14.2","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"10.18.0","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^7.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.1.0_1591283225666_0.9980999493594365","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"lonad","version":"0.2.0","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"author":{"name":"Florian Simon"},"license":"MIT","_id":"lonad@0.2.0","maintainers":[{"name":"floriansimon1","email":"florian.simon@protonmail.com"},{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"}],"dist":{"shasum":"829a45d8205e170f50521212d9cf1d6f53de6342","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.2.0.tgz","fileCount":16,"integrity":"sha512-aUKRTvwyEx8c5eQlYcYiSvTcOZTVpxOBSgrKPpWSwt6L9u0cgIoIk6XSRksvIkjmOih8igHTlpTiz3D24nnDIA==","signatures":[{"sig":"MEUCIQCE/LScAZMXADAlBImUZj/+63Ksusvkb3cum62bKGO5GQIgF3DqqLJETWitaMgceSTEJCdzk68yy/iRuSZVaXbQ8bQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLfAYCRA9TVsSAnZWagAAm4EQAI7q4yZwNdslBNguOmbp\nH/2rUcj/cY83DtXeqc9C3rRZmaFfyPoQOLNUVBKRe/wtUPXj/KeGND1IpU4+\nh9uTYqVGNVsAzbi7Y4JqvEWIYzolgPBa5k1TWJcNs2OBfjICNAzROfWQoyOF\njBbzWVR7W8+6Hjr3EIzHeci+B/x3c7t4TsmSr4fczl0jGDoamD3m975e/V9z\nZBEvZItvvmpLzLWlYkYq7i6apwjohklr5AAI0QWV1QpT85VIE7pZur0GJU7s\nwQL5ERjOZP6hf16IGjjTXB95UhZuMisZf6RDh5ZUCNCy1tXccB4CJjGeV9TD\n8nGjTJmPM2FqRKTM+2f+oFk3hUSdedToyRci5WV36lRCdU4fs0U+4rGqHxhN\njRQGyBswiMMAXgBggw2YyRhvAPiMLxGRClT92MQJLsXsxwgulM7c0VNcSiKX\npYgt9v1y+VMmHx6t+cyNOw+hZZ99w3+47FvZ3NUfYKgbCsfgXnW7DHqTSl9s\nffM/mgCHAAc12fx+lKv0MaOJZcPuYIC60diO6JhHumeu07d+wKIOCADp8K4W\nwn57TfuIxVJpoZ+DXVx0T6ANB+XKJfE1HJ44zSAlvSb1wdlIMdseh8gMvBme\nADLVT8NQ+J5wUBmebTbQSEII8Mvlrz2NRo0rx5aLjArNgqazKfnzRxN1nI8H\noBMl\r\n=LxXC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6fda1f487f6760f3d2ca7ca423b83f76bd4c2775","scripts":{"test":"node ./node_modules/.bin/mocha"},"_npmUser":{"name":"tentwentyfour","email":"npm@tentwentyfour.lu"},"_npmVersion":"6.14.13","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"14.17.1","dependencies":{"helpbox":"^7.2.0","lodash.flow":"^3.5.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","mocha":"^7.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^15.0.2","eslint-plugin-import":"^2.14.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.2.0_1630400536128_0.4791321402445199","host":"s3://npm-registry-packages"}},"0.3.0-beta.1":{"name":"lonad","version":"0.3.0-beta.1","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"license":"MIT","_id":"lonad@0.3.0-beta.1","maintainers":[{"name":"json3009","email":"jasonolivermarx@gmail.com"},{"name":"notsolucky","email":"paul@tentwentyfour.lu"},{"name":"corallo","email":"ruben@tentwentyfour.lu"},{"name":"kwisatz","email":"david@tentwentyfour.lu"},{"name":"floriansimon1","email":"florian.simon@protonmail.com"}],"dist":{"shasum":"78fc0bb31d79230d50124553646f46b7105ef00e","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.3.0-beta.1.tgz","fileCount":119,"integrity":"sha512-xGxtu+5oQz2JufLAadcgdVVe8xAiedlF+bAS4YHfhzSCn9Yu3RrpFg8uzhs6KoCIf6JDz1rrYiJOayOPpklFNA==","signatures":[{"sig":"MEUCIQD/eyWLCSIpKLmKPbbpQd/PAgrRZNeLh20awA5vl/mv3QIgIeIhxAFV82WnsAr3SJUtHMGdQE87sLaw3nphFkC1XA8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1745497},"main":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","module":"./lib/esm/index.js","readme":"\n# Lonad\nby [Florian Simon](https://github.com/floriansimon1)\n\nTypeScript Support by [Marx Jason](https://github.com/xxjasonxx1996)\n\n*Like lodash, but for monads…*\n\n![node](https://img.shields.io/node/v/lonad)\n[![npm](https://img.shields.io/npm/v/lonad)](https://www.npmjs.com/package/lonad)\n[![TypeScript](https://img.shields.io/badge/TypeScript-4.9.5-blue)](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-9.html)\n\n## Focus\n\nThis currently provides `Optional` and `Result` types in Javascript & Typescript.\n\nWhat's different in this `Maybe`/`Optional`/`Either`/`Result` implementation? Here, pragmatism is valued above fantasy-land compliance. lonad draws inspiration on Haskell's `Maybe`, and, like lodash, tortures nice concepts to put emphasis on user-friendliness and convenience.\n\nAnother notable difference from folktale's `Result`: lonad's `Result` handles asynchronous computation chains.\n\n\n## TypeScript support\n\nThis library is written in Typescript and provides type definitions for Typescript users.\n\nIt is also written in a way that allows Typescript to infer types in most cases, so you don't have to specify them manually.\n\nAlthough, it is recommended to use TypeScript, it is not mandatory. The library is written in a way that allows it to be used in Javascript projects without any hassle.\n\n> Be aware that version `0.3.0` adds types in a limited way. This is due to the fact that Typescript curried functions are not supported yet.\n\n### IMPORTANT:\nThe usage of `Typescript 4.9.5` or higher is recommended. Versions below `4.9.5` may not be able to infer types in certain cases.\n\n### Example\n\n```ts\nimport { Result } from 'lonad';\n\nconst result = Result.expect(42) // Infered type: Result<number>\n  .map(x => x * 2)\n  .tap(console.log) // 84\n  .map(async x => x + 2) // Promise<number>\n  .tap(console.log) // 86\n  .get(); // Promise<number>\n\n```\n\n## Installing\n\n\n### Node.js\n\n`$ npm install lonad`\n\nOnce installed, you can import the library using `import` or `require`:\n\n```js\nimport { Optional, Result } from 'lonad';\n```\n\n```js\nconst { Optional, Result } = require('lonad');\n```\n\n\n### Browser\n\n`$ bower install lonad`\n\n### CDN\n\n> Currently unavailable!\n\n#### ES6\n```html\n<script src=\"https://unpkg.com/lonad/bundle/lonad-bundle.js\"></script>\n```\nOr minified version (recommended for production `~17kb`):\n```html\n<script src=\"https://unpkg.com/lonad/bundle/lonad-bundle.min.js\"></script>\n```\nUsage:\n```html\n<script>\n  const { Optional, Result } = lonad;\n</script>\n```\n\n#### As a module\n```html\n<script type=\"module\" src=\"https://unpkg.com/lonad/lonad-bundle.es.js\"></script>\n```\n\n## ROADMAP\n\n* [x] `Optional` type\n* [x] `Result` type\n* [x] Typescript support\n* [x] Bundled version\n* [ ] Further improve Typescript support\n* [ ] Write documentation for the `generator` systems\n* [ ] Immutable `Optional` and `Result` types.\n\n\n## TESTS\n\nTo run the tests, simply execute:\n\n`$ npm run test`\n\n## What is an `Optional`\n\n\n\nAn `Optional` is, as its name suggests, a wrapper for a value that can potentially be absent. It is written as an object that can have two potential states, `Some` or `None`. When an `Optional` is a `Some`, it means that a value is present. When it's a `None`, it means that the value is absent.\n\n\n\n### What's the point?\n\n\n\nThis allows you to avoid the dreaded `x is undefined` class of Javascript errors completely, by providing a safe API, that the rest of this document will explain.\n\n\n\n## What is a `Result`\n\n\n\nA `Result` models the result of a computation chain in a functional way. In other words, it encapsulates the result of executing code. It can handle asynchronous code, code that may fail with a specific value and even computation chains that may be interrupted (*aborted*) in the middle of the chain if some error occurred. A `Result` can have one of the 4 following subtypes:\n\n\n\n* `Ok`: Similar to `Optional`'s `Some`, models return values of computation chains.\n\n* `Error`: Similar to `Optional`'s `None`, models chains that errored in a recoverable way. The difference with `None` is that errors can also have values.\n\n* `Aborted`: Same as `Error`, but it's not recoverable.\n\n* `Pending`: Wraps the 3 other types in asynchronous contexts.\n\n\n\n### What's the point?\n\n\n\nThe point here is the same as for `Optional` (safety), but with a focus on readability. Returning a `Result` from a function signals that your function may fail and gives you details about the failure when it occurs. In certain contexts, you can also see it as an interruptible `Promise` chain. If you never liked `async`/`await` because of the verbosity of error handling using `try`/`catch`, then you'll love `Result`. A nice advantage is that it makes it easy to be specific about errors without writing tons of try catch blocks, which makes your error-handling code more testable.\n\n\n\n### Recipes\n\n\n\n#### `Optional` recipes\n\n| Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description |\n|-----|-------------|\n| `get` | Get the value or **throws** an error. |\n| `getOrElse` | Get the value or return a default value. |\n| `filter` | Checks whether the Optional's value passes a predicate. |\n| `reject` | Checks whether the Optional's value fails a predicate. |\n| `or` | Returns the original optional if it is present, or the return value of the provided replacement function if the original value is not present. |\n| `map` | Alias for `transform`. |\n| `nullableMap` | Maps the value of the Optional to a new value and allows the transformation to return `null` or `undefined`. |\n| `flatMap` | Maps the value of the Optional to a new value and returns either the new value or itself if the Optional is `None`. |\n| `transform` | Maps the value of the Optional to a new value. |\n| `match` | Pattern matches on the optional value and returns the result of executing the corresponding function for the matching case. |\n| `property` | Maps the value of the Optional to a property of the value and wraps the value in an `Some Optional`. |\n| `nullableProperty` | Maps the value of the Optional to a property of the value and wraps the value in an `Optional`. |\n| `optionalProperty` | Maps the value of the Optional to a property of the value. |\n| `tap` | Executes a function if the Optional is present. |\n| `satisfies` | Checks whether the Optional satisfies a predicate. |\n| `valueEquals` | Checks whether the Optional's value is equal to another value. |\n| `recover` | Recovers from a `None` Optional. |\n| `replace` | Replace the value of the Optional. |\n\n* [⚓](#optional-construction) Constructing an `Optional`.\n\n* [⚓](#optionalfromnullablenullablevalue) Constructing an `Optional` using a nullable value.\n\n* [⚓](#optionals-mapλ) Transforming the value wrapped in an `Optional`.\n\n* [⚓](#optionals-replacevalue) Changing the value wrapped in an `Optional` to another value.\n\n* [⚓](#optionals-get) Unsafe unboxing of `Optional` values.\n\n* [⚓](#optional-value-presence) Checking presence or absence of `Optional` value.\n\n* [⚓](#optionals-satisfiespredicate) Checking that a wrapped value satisfies a predicate.\n\n* [⚓](#optionals-getorelsevalue) Safe unboxing of `Optional` values.\n\n* [⚓](#optionals-filterλ) Transforming a `Some` into a `None` when a condition is met.\n\n* [⚓](#optionals-rejectλ) Transforming a `Some` into a `None` when a condition is not met.\n\n* [⚓](#optionals-propertypropertyname) Transforming a `Some` into a `Some` wrapping a property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-nullablepropertypropertyname) Transforming a `Some` into an `Optional` based on a nullable property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-optionalpropertypropertyname) Transforming a `Some` into an `Optional` based on a nullable property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-valueequalsvalue) Checking if a `Some`'s value equals a given value.\n\n* [⚓](#optionals-flatmapλ) Transforming a `Some` into another `Optional`.\n\n* [⚓](#optionals-matchmatcher) `Optional` pattern matching.\n\n* [⚓](#optionals-orλoroptional) Selecting the first available `Some`.\n\n* [⚓](#optionalfirstoptionals) Selecting the first available `Some` in an array.\n\n* [⚓](#optionals-recoverλ) Transforming a `None` into a `Some`.\n\n* [⚓](#optionals-orλoroptional) Transforming a `None` into an `Optional`.\n\n* [⚓](#optional-serialization) `Optional` serialization.\n\n* [⚓](#optionalalloptionals) Constructing a `Some` wrapping an array of values from other `Some` instances.\n\n* [⚓](#optionalwhentruthy-value) Construct a new Some if a condition is met.\n\n* [⚓](#optionals-tapλ) Executing a function on a Some without changing it.\n\n\n\n#### `Result` recipes\n\n\n| Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description |\n| ----- | ----------- |\n| [⚓](#result’s-get) `get` | Returns the `value` of the result. If the result is not `Ok`, it will throw an **error**. |\n| [⚓](#result’s-getorelse) `getOrElse` | Returns the `value` of the result. If the result is not Ok, it will return the `value` provided. |\n| [⚓](#result’s-merge) `merge` | Returns the result value if it is `Ok`, otherwise returns the `error` value. |\n| [⚓](#result’s-recover) `recover` | Recovers from an error if an error occured. |\n| [⚓](#result’s-replace) `replace` | Replace the `value` of the result. Will only replace the value if the result is `Ok`. |\n| [⚓](#result’s-property) `property` | Returns the wrapped property value if the result contains an object. Will always return an `Ok` result even if the property was not found. |\n| [⚓](#result’s-expectproperty) `expectProperty` | Returns the wrapped property value if the result contains an object. Will return an `Error` result if the property was not found. |\n| [⚓](#result’s-tap) `tap` | Tap into the result and perform an action. Will only perform the action if the result is `Ok`. |\n| [⚓](#result’s-taperror) `tapError` | Tap the error value if result is an `error`. |\n| [⚓](#result’s-satisfies) `satisfies` | Test if the result satisfies a predicate. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-valueequals) `valueEquals` | Test if the result value equals another value. Will only test the equality if the result is `Ok`. |\n| [⚓](#result’s-map) `map` | Maps the result value, returns an `Ok` result even if the passed value is `undefined`. |\n| [⚓](#result’s-maperror) `mapError` | Map the error value if result is an `error`. |\n| [⚓](#result’s-expectmap) `expectMap` | Maps the result `value`, returns an Error result if the passed value is `undefined`. |\n| [⚓](#result’s-transform) `transform` | Alias for `map`. Maps the result value, returns an Ok result even if the passed value is `undefined`. |\n| [⚓](#result’s-flatmap) `flatMap` | Maps the result value and *flattens* the result. |\n| [⚓](#result’s-reject) `reject` | Rejects the result if the predicate returns true. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-filter) `filter` | Filters the result if the predicate returns true. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-match) `match` | Match the result type and return a value. |\n| [⚓](#result’s-abortonerror) `abortOnError` | Aborts the excution if the result is an `error`. |\n| [⚓](#result’s-abortonerrorwith) `abortOnErrorWith` | Aborts the excution if the result is an `error` with an error value. |\n| [⚓](#result’s-recoverwhen) `recoverWhen` | Recover the result if it is an `error` and the predicate returns true. |\n| [⚓](#result’s-asynchronous) `asynchronous` | Converts the result to a `asyncronous` result. |\n| [⚓](#result’s-topromise) `toPromise` | Converts the result to a `promise`. |\n| [⚓](#result’s-tooptional) `toOptional` | Converts the result to an `optional` object. |\n\n\n## General tips\n\n\n\nWhat is called a nullable here is a value that is either `null` or `undefined`.\n\n\n\nYou can use `new` to instantiate `Result`/`Optional`, but it's not mandatory. Just using `Optional.Some(3)` is also OK.\n\n\n\nEvery `Optional` or `Result` method is available in auto-curried, instance-last parameter version, which allows you to write the following code:\n\n\n\n```javascript\n\nconst  optionals  = [1, 2, 3].map(Optional.Some);\n\nconst  addThree  =  x  =>  x  +  3;\n\n\n\n// This evaluates to [4, 5, 6].\n\nconst  results  =  optionals\n\n.map(Optional.map(addThree))\n\n.map(Optional.getOrElse(0));\n\n```\n\n\n\n## Reference (by example)\n\n\n\n### Optional\n\n\n\n*Wrapper for values that can be absent.*\n\n\n\n#### Some\n\n\n\n*`Optional` subtype for present values.*\n\n\n\n#### None\n\n\n\n*`Optional` subtype for absent values.*\n\n\n\n#### `Optional` construction\n\n\n\n```javascript\n\nconst  present1  =  Some(value);\n\nconst  absent1  =  None();\n\n\n\nconst  present2  =  new  Some(value);\n\nconst  absent2  =  new  None();\n\n```\n\n\n\n#### `Optional.fromNullable(nullableValue)`\n\n\n\n```javascript\n\n// These will evaluate to Some instances.\n\nOptional.fromNullable(3);\n\nOptional.fromNullable(0);\n\nOptional.fromNullable('');\n\nOptional.fromNullable(NaN);\n\n\n\n// These will evaluate to None().\n\nOptional.fromNullable(null);\n\nOptional.fromNullable(undefined);\n\n```\n\n\n\n#### `Optional`'s `get()`\n\n\n\n*Note: using this is **NOT** recommended!*.\n\n\n\n```javascript\n\n// This will evaluate to 2.\n\nSome(2).get();\n\n\n\n// This will throw.\n\nNone().get();\n\n\n\n// You can also pass a custom exception message:\n\ntry {\n\nNone().get(\"message\");\n\n} catch (error) {\n\n// This will log \"message\".\n\nconsole.log(error.message);\n\n}\n\n```\n\n\n\n#### `Optional` value presence\n\n\n\n*Note: writing a check based on these flags, then doing `optional.get()` is a **very bad** code smell.*\n\n\n\n```javascript\n\n// These will evaluate to true.\n\nSome(2).valuePresent;\n\nNone().valueAbsent;\n\n\n\n// These will evaluate to false.\n\nNone().valuePresent;\n\nSome(2).valueAbsent;\n\n```\n\n\n\n#### `Optional`'s `satisfies(predicate)`\n\n\n\n```javascript\n\n// This evaluates to true.\n\nSome(3).satisfies(x  =>  x  ===  3);\n\n\n\n// These evaluate to false.\n\nSome(3).satisfies(x  =>  x  ===  4);\n\nNone().satisfies(() =>  true);\n\n```\n\n\n\n#### `Optional`'s `getOrElse(value)`\n\n\n\n```javascript\n\n// This will evaluate to 2.\n\nSome(2).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `map(λ)`\n\n\n\n*`map` is also aliased to `transform` if you have a tendency to confuse `Optional`'s `map` with `Array`'s.*\n\n\n\n```javascript\n\n// This will evaluate to 3.\n\nSome(2).map(x  =>  x  +  1).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().map(x  =>  x  +  1).getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `replace(value)`\n\n\n\n```javascript\n\n// This will evaluate to 3.\n\nSome(2).replace(3).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().replace(3).getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `filter(λ)`\n\n\n\n*Opposite of `reject`.*\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome(2).filter(Boolean);\n\n\n\n// This will evaluate to None().\n\nSome(0).filter(Boolean);\n\n\n\n// This will evaluate to None().\n\nNone().filter(Boolean);\n\n```\n\n\n\n#### `Optional`'s `reject(λ)`\n\n\n\n*Opposite of `filter`.*\n\n\n\n```javascript\n\n// This will evaluate to None().\n\nSome(2).reject(Boolean);\n\n\n\n// This will evaluate to Some(0).\n\nSome(0).reject(Boolean);\n\n\n\n// This will evaluate to None().\n\nNone().reject(Boolean);\n\n```\n\n\n\n\n#### `Optional`'s `property(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: 2 }).property('a');\n\n\n\n// This will evaluate to None().\n\nNone().property('a');\n\n```\n\n\n\n\n#### `Optional`'s `nullableProperty(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: 2 }).nullableProperty('a');\n\n\n\n// This will evaluate to None().\n\nSome({ a: 2 }).nullableProperty('b');\n\n\n\n// This will evaluate to None().\n\nNone().nullableProperty('a');\n\n```\n\n\n\n\n#### `Optional`'s `optionalProperty(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: Some(2) }).optionalProperty('a');\n\n\n\n// This will evaluate to None().\n\nSome({ a: None() }).optionalProperty('a');\n\n\n\n// This will evaluate to None().\n\nNone().optionalProperty('a');\n\n```\n\n\n\n#### `Optional`'s `valueEquals(value)`\n\n\n\n*This functions uses triple equal (`===`) for comparisons.*\n\n\n\n```javascript\n\n// This will evaluate to true.\n\nSome(2).valueEquals(2);\n\n\n\n// This will evaluate to false.\n\nSome(3).valueEquals(2);\n\n\n\n// This will evaluate to false.\n\nNone().valueEquals('a');\n\n```\n\n\n\n#### `Optional`'s `flatMap(λ)`\n\n\n\n*This is used to nest transformations that return `Optional` instances, as you can see in the example below.*\n\n\n\n```javascript\n\n// This will evaluate to Some('Ford T').\n\nretrieveUserFromDatabase(1)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\n// This will evaluate to None().\n\nretrieveUserFromDatabase(2)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\n// This will evaluate to None().\n\nretrieveUserFromDatabase(3)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\nfunction  retrieveUserFromDatabase(id) {\n\nif (id  ===  1) {\n\nreturn  Some({ id, carId: Some(1) });\n\n} else  if (id  ===  2) {\n\nreturn  Some({ id, carId: None() });\n\n}\n\n\n\nreturn  None();\n\n}\n\n\n\nfunction  retrieveCarFromDatabase(id) {\n\nif (id  ===  1) {\n\nreturn  Some({ id, model: 'Ford T' });\n\n}\n\n\n\nreturn  None();\n\n}\n\n```\n\n\n\n#### `Optional`'s `match(matcher)`\n\n\n\n```javascript\n\n// This evaluates to 1.\n\nSome(3).match({\n\nSome: value  =>  value  -  2,\n\nNone: () =>  2\n\n});\n\n\n\n// This evaluates to 3.\n\nSome(3).match({ None: () =>  2 });\n\n\n\n// This evaluates to 1.\n\nSome(3).match({ Some: value  =>  value  -  2 });\n\n\n\n// This will throw.\n\nNone().match({ Some: value  =>  value  -  2 });\n\n\n\n// This evaluates to 1.\n\nNone().match({ None: () =>  1 });\n\n```\n\n\n\n#### `Optional`'s `recover(λ)`\n\n\n\n*Kind of equivalent to `map` but for `None` instances.*\n\n\n\n```javascript\n\n// This evaluate to Some(3).\n\nNone().recover(() =>  Some(3));\n\n\n\n// This evaluates to Some(2).\n\nSome(2).recover(() =>  3);\n\n```\n\n\n\n#### `Optional`'s `or(λOrOptional)`\n\n\n\n*When passed a function, it is kind of equivalent to `flatMap` but for `None` instances.*\n\n\n\n```javascript\n\n// These evaluate to Some(3).\n\nNone().or(Some(3));\n\nNone().or(() =>  Some(3));\n\n\n\n// These evaluate to None().\n\nNone().or(None());\n\nNone().or(None);\n\n\n\n// These evaluate to Some(2).\n\nSome(2).or(None);\n\nSome(2).or(Some(3));\n\nSome(2).or(() =>  Some(3));\n\n```\n\n\n\n#### `Optional` serialization\n\n\n\n```javascript\n\n// As long as the wrapped value is serializable, you can serialize using JSON.stringify.\n\nconst  serialized  =  JSON.stringify(Some(3));\n\n\n\n// And deserialize it using Optional.fromParsedJson. This evaluates to Some(3).\n\nOptional.fromParsedJson(JSON.parse(serialized));\n\n```\n\n\n\n#### `Optional.when(truthy, value)`\n\n\n\n```javascript\n\n// These evaluate to None().\n\nOptional.when(null);\n\nOptional.when(undefined);\n\nOptional.when(0);\n\nOptional.when('');\n\nOptional.when(NaN);\n\n\n\n// These evaluate to Some(4).\n\nOptional.when(true, 4);\n\nOptional.when(' ', 4);\n\nOptional.when({}, 4);\n\nOptional.when(1, 4);\n\n```\n\n\n\n#### `Optional.first(optionals)`\n\n\n\n```javascript\n\n// This evaluates to None().\n\nOptional.first([None(), None(), None()]);\n\n\n\n// These evaluate to Some(3).\n\nOptional.first([Some(3), None(), None()]);\n\nOptional.first([None(), Some(3), None()]);\n\nOptional.first([None(), None(), Some(3)]);\n\n```\n\n\n\n#### `Optional.all(optionals)`\n\n\n\n*Works a bit like `Promise.all`.*\n\n\n\n```javascript\n\n// These evaluate to None().\n\nOptional.all([Some(3), Some(3), None()]);\n\nOptional.all([Some(3), None(), Some(3)]);\n\nOptional.all([None(), Some(3), Some(3)]);\n\n\n\n// This evaluates to Some([1, 2, 3]).\n\nOptional.all([Some(1), Some(2), Some(3)]);\n\n```\n\n\n\n#### `Optional`'s `tap(λ)`\n\n\n\n```javascript\n\n// This prints 'hello' and evaluates to Some(3).\n\nOptional.Some(3).tap(x  =>  console.log(\"Hello\") ||  x  +  1);\n\n\n\n// This does not call λ and does not print 'Test'.\n\nOptional.None().tap(x  =>  console.log(\"Test\"));\n\n```\n\n### Result\n\nWraps a value that can either be a `Ok` or a `Error`. It is useful for error handling and for functions that can fail.\n\n#### Ok\n\n`Result` subclass that wraps a value that represents a successful operation.\n\n```js\nconst myResult = Result.Ok(3);\n\n// This will evaluate to 3.\nconsole.log(myResult.value);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Error\n\n`Result` subclass that wraps a value that represents a failed operation.\n\n```js\nconst myResult = Result.Error('Something went wrong');\n\n// This will evaluate to 'Something went wrong'.\nconsole.log(myResult.error);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Aborted\n\n`Result` subclass that wraps a value that represents an aborted operation. This breaks the chain of operations. It cannot be recovered from.\n\n```js\nconst myResult = Result.Aborted('Something went wrong');\n\n// This will evaluate to 'Something went wrong'.\nconsole.log(myResult.error);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Pending\n\n`Result` subclass that wraps a value that represents a pending operation. Once a single link in a chain of operations is pending, the whole chain becomes asynchronous.\n\n```js\nconst myResult = Result.Pending(Promise.resolve(3));\n\n// This will evaluate to 3.\nconsole.log(await myResult.promise);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### `Result`'s `expect(value)`\n\nThe `expect` method is used to wrap a value that can either be a `Ok` or a `Error`. The value can also be asynchronous.\n\n```js\n// This evaluates to Ok(3).\nResult.expect(3);\n\n// This evaluates to Error('Something went wrong').\nResult.expect(undefined);\n\n// This evaluates to Pending(3).\nResult.expect(Promise.resolve(3));\n```\n\n#### `Result`'s `get`\n\nReturns the value of the `Result` instance. If the instance is a `Error` or `Aborted` it will **throw** an error.\n\nDefinition:\n```ts\nfunction get(): T | Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).get();\n\n// This will throw.\nResult.Error('Something went wrong').get();\n```\n\n#### `Result`'s `getOrElse`\n\nReturns the value of the `Result` instance. If the instance is a `Error` or `Aborted` it will return the provided default value.\n\nDefinition:\n```ts\nfunction getOrElse<Y>(value?: Y): T | Y | Promise<T> | Promise<Y>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).getOrElse();\n\n// This evaluates to 4.\nResult.Error('Something went wrong').getOrElse(4);\n```\n\n#### `Result`'s `merge`\n\nReturns the result value if it is Ok, otherwise returns the error value.\n\nDefinition:\n```ts\nfunction merge(): T | Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).merge();\n\n// This evaluates to 'Something went wrong'.\nResult.Error('Something went wrong').merge();\n```\n\n#### `Result`'s `recover`\n\nRecovers from an error if an error occured.\n\nDefinition:\n```ts\nfunction recover<R>(λ: (x: any) => R): Result<T | R>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).recover(() => 4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').recover(() => 4);\n```\n\n#### `Result`'s `replace`\n\nReplace the value of the result. Will only replace the value if the result is Ok.\n\nDefinition:\n```ts\nfunction replace<Y = T>(value: Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).replace(4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').replace(4);\n\n// This evaluates to Aborted('Something went wrong').\nResult.Aborted('Something went wrong').replace(4);\n```\n\n#### `Result`'s `property`\n\nReturns the wrapped property value if the result contains an object. Will always return an Ok result even if the property was not found.\n\nDefinition:\n```ts\nfunction property<Y extends string>(propertyName: Y): Result<T[Y]>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok({ a: 3 }).property('a');\n\n// This evaluates to Ok(undefined).\nResult.Ok({ a: 3 }).property('b');\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').property('a');\n```\n\n#### `Result`'s `expectProperty`\n\nReturns the wrapped property value if the result contains an object. Will return an Error result if the property was not found.\n\nDefinition:\n```ts\nfunction expectProperty<Y extends string>(propertyName: Y): Result<T[Y]>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok({ a: 3 }).expectProperty('a');\n\n// This evaluates to Error('Property \"b\" not found').\nResult.Ok({ a: 3 }).expectProperty('b');\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').expectProperty('a');\n```\n\n#### `Result`'s `tap`\n\nTap into the result and perform an action. Will only perform the action if the result is Ok.\n\nDefinition:\n```ts\nfunction tap(λ: (x: T) => void | Promise<void>): Result<T>;\n```\n\nExample:\n```js\n// This prints 3.\nResult.Ok(3).tap(x => console.log(x));\n\n// This prints also prints 3.\nResult.Ok(3).tap(console.log);\n\n// This does not print anything.\nResult.Error('Something went wrong').tap(x => console.log(x));\n```\n\n#### `Result`'s `tapError`\n\nTap the error value if result is an error.\n\nDefinition:\n```ts\nfunction tapError(λ: (x: any) => Promise<void> | void): Result<T>;\n```\n\nExample:\n```js\n// This prints 'Something went wrong'.\nResult.Error('Something went wrong').tapError(x => console.log(x));\n\n// This does not print anything.\nResult.Ok(3).tapError(x => console.log(x));\n```\n\n#### `Result`'s `satisfies`\n\nTest if the result satisfies a predicate. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction satisfies(predicate: (x: T) => T | boolean): boolean | Promise<boolean>;\n```\n\nExample:\n```js\n// This evaluates to true.\nResult.Ok(3).satisfies(x => x === 3);\n\n// This evaluates to false.\nResult.Ok(3).satisfies(x => x === 4);\n\n// This evaluates to false.\nResult.Error('Something went wrong').satisfies(x => x === 3);\n```\n\n#### `Result`'s `valueEquals`\n\nTest if the result value equals another value. Will only test the equality if the result is Ok.\n\nDefinition:\n```ts\nfunction valueEquals(value: T): boolean | Promise<boolean>;\n```\n\nExample:\n```js\n// This evaluates to true.\nResult.Ok(3).valueEquals(3);\n\n// This evaluates to false.\nResult.Ok(3).valueEquals(4);\n\n// This evaluates to false.\nResult.Error('Something went wrong').valueEquals(3);\n```\n\n#### `Result`'s `map`\n\nMaps the result value, returns an Ok result even if the passed value is undefined.\n\nDefinition:\n```ts\nfunction map<Y>(λ: (x: T) => Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).map(x => x + 1);\n\n// This evaluates to Ok(undefined).\nResult.Ok(3).map(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').map(x => x + 1);\n```\n\n#### `Result`'s `mapError`\n\nMap the error value if result is an error.\n\nDefinition:\n```ts\nfunction mapError(λ: (x: any) => Promise<any> | any): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Error('tapped error').\nResult.Error('Something went wrong').mapError(x => 'tapped error');\n\n// This evaluates to Ok(3).\nResult.Ok(3).mapError(x => 'tapped error');\n```\n\n#### `Result`'s `expectMap`\n\nMaps the result value, returns an Error result if the passed value is undefined.\n\nDefinition:\n```ts\nfunction expectMap<Y>(λ: (x: T) => Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).expectMap(x => x + 1);\n\n// This evaluates to Error('Expected value but got undefined').\nResult.Ok(3).expectMap(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').expectMap(x => x + 1);\n```\n\n#### `Result`'s `flatMap`\n\nMaps the result value and flattens the result. Returns an Error result if the passed value is undefined.\n\nDefinition:\n```ts\nfunction flatMap<Y>(λ: (x: T) => Y | Promise<Y> | Result<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).flatMap(x => x + 1);\n\n// This evaluates to Ok(4).\nResult.Ok(3).flatMap(x => Result.Ok(x + 1));\n\n// This evaluates to Error('Expected value but got undefined').\nResult.Ok(3).flatMap(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').flatMap(x => x + 1);\n```\n\n#### `Result`'s `reject`\n\nRejects the result if the predicate returns true. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction reject(predicate: (x: T) => Promise<boolean> | boolean): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).reject(x => x === 4);\n\n// This evaluates to Error('Rejected').\nResult.Ok(3).reject(x => x === 3);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').reject(x => x === 3);\n```\n\n#### `Result`'s `filter`\n\nAllows the result if the predicate returns true. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction filter(predicate: (x: T) => Promise<boolean> | boolean): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).filter(x => x === 3);\n\n// This evaluates to Error('Filtered').\nResult.Ok(3).filter(x => x === 4);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').filter(x => x === 3);\n```\n\n#### `Result`'s `match`\n\nMatches the result type and returns the result of the matched function.\n\nDefinition:\n```ts\nfunction match<Y>(λ: {\n  Ok: (x: T) => Y | Promise<Y>;\n  Error: (x: any) => Y | Promise<Y>;\n  Aborted: (x: any) => Y | Promise<Y>;;\n}): Y | Promise<Y>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok('some Value').match({\n  Ok: (x) => 3,\n  Error: (x) => 4,\n  Aborted: (x) => 5,\n});\n\n// This evaluates to 4.\nResult.Error('Something went wrong').match({\n  Ok: () => 3,\n  Error: () => 4,\n  Aborted: () => 5,\n});\n\n// This evaluates to 5.\nResult.Aborted('Something went wrong').match({\n  Ok: () => 3,\n  Error: () => 4,\n  Aborted: () => 5,\n});\n```\n\n#### `Result`'s `abortOnError`\n\nAborts the excution if the result is an error.\n\nDefinition:\n```ts\nfunction abortOnError(): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).abortOnError();\n\n// This evaluates to Aborted('Something went wrong').\nResult.Error('Something went wrong').abortOnError();\n\n// This evaluates to Ok(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .abortOnError();\n\n// This evaluates to Aborted('Value is not equal').\nResult.expect(3)\n  .map(x => x + 1)\n  .valueEquals(5)\n  .abortOnError();\n```\n\n#### `Result`'s `abortOnErrorWith`\n\nAborts the excution if the result is an error with an error value.\n\n```ts\nfunction abortOnErrorWith(error: any): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).abortOnErrorWith('Something went wrong');\n\n// This evaluates to Aborted('Something went wrong').\nResult.Error('other error').abortOnErrorWith('Something went wrong');\n\n// This evaluates to Ok(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .abortOnErrorWith('Something went wrong');\n\n// This evaluates to Aborted('Something went wrong').\nResult.expect(3)\n  .map(x => x + 1)\n  .valueEquals(5)\n  .abortOnErrorWith('Something went wrong');\n```\n\n#### `Result`'s `recoverWhen`\n\nRecover the result if it is an error and the predicate returns true.\n\nDefinition:\n```ts\nfunction recoverWhen<Y>(predicate: (x: T) => boolean | Promise<boolean>, λ: (x: T) => Y): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).recoverWhen(x => true, x => 4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').recoverWhen(x => true, x => 4);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').recoverWhen(x => false, x => 4);\n```\n\n#### `Result`'s `asynchronous`\n\nConverts the result to a asyncronous result.\n\nDefinition:\n```ts\nfunction asynchronous(): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Pending(Ok(3)).\nResult.Ok(3).asynchronous();\n\n// This evaluates to Pending(Error('Something went wrong')).\nResult.Error('Something went wrong').asynchronous();\n```\n\n#### `Result`'s `toPromise`\n\nConverts the result to a promise.\n\nDefinition:\n```ts\nfunction toPromise(): Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nawait Result.Ok(3).toPromise();\n\n// This throws an error.\nawait Result.Error('Something went wrong').toPromise();\n\n// This evaluates to 4.\nawait Result.expect(3)\n  .map(x => x + 1)\n  .toPromise();\n```\n\n#### `Result`'s `toOptional`\n\nConverts the result to an optional object.\n\nDefinition:\n```ts\nfunction toOptional(): Optional<T>;\n```\n\nExample:\n```js\n// This evaluates to Some(3).\nResult.Ok(3).toOptional();\n\n// This evaluates to None.\nResult.Error('Something went wrong').toOptional();\n\n// This evaluates to Some(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .toOptional();\n```\n","authors":[{"name":"Florian Simon"},{"name":"Marx Jason"}],"browser":{"./lib/esm/index.js":"./bundle/lonad-bundle.es.js"},"engines":{"node":">=12.0.0"},"exports":{"node":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","import":"./lib/esm/index.js","default":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"gitHead":"1cf03bad9eca3653eec86acf14c008f01156226f","scripts":{"lint":"eslint ./src","test":"mocha --resolveJsonModule","build":"npm run generate && rimraf lib && rimraf bundle && npm run build:web && npm run build:node && npm run build:packageJson","generate":"ts-node-esm ./src/generators/optional.gen.ts && ts-node-esm ./src/generators/asyncResult.gen.ts && ts-node-esm ./src/generators/syncResult.gen.ts && ts-node-esm ./src/generators/result.gen.ts && ./node_modules/.bin/eslint ./src/generated --fix","lint:fix":"eslint ./src --fix","build:web":"rollup -c rollup.config.mjs","build:node":"tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json ./tsconfig.types.json && tsc-alias -p ./tsconfig.cjs.json && tsc-alias -p ./tsconfig.esm.json && tsc-alias -p ./tsconfig.types.json","build:packageJson":"echo '{\"type\": \"commonjs\"}' > lib/cjs/package.json && echo '{\"type\": \"module\"}' > lib/esm/package.json"},"_npmUser":{"name":"json3009","email":"jasonolivermarx@gmail.com"},"_npmVersion":"9.2.0","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"19.1.0","typesVersions":{">=4.9.5":{"*":["./lib/types/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsd":"^0.25.0","chai":"^4.3.7","mocha":"^10.2.0","tslib":"^2.4.1","eslint":"^8.31.0","lodash":"^4.17.21","rimraf":"^3.0.2","rollup":"^3.8.1","ts-node":"^10.9.1","ts-mocha":"^10.0.0","ts-morph":"^18.0.0","deepmerge":"^4.2.2","tsc-alias":"^1.8.2","@hapi/topo":"^6.0.2","typescript":"^4.9.5","@types/chai":"^4.3.4","@types/node":"^18.11.17","@types/mocha":"^10.0.1","eslint-plugin-n":"^15.6.0","@types/lodash.flow":"^3.5.7","ts-paths-esm-loader":"^1.3.2","eslint-plugin-import":"^2.26.0","@rollup/plugin-terser":"^0.2.1","eslint-plugin-promise":"^6.1.1","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^10.0.1","@typescript-eslint/parser":"^5.48.0","@rollup/plugin-node-resolve":"^15.0.1","@typescript-eslint/eslint-plugin":"^5.48.0","eslint-config-standard-with-typescript":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.3.0-beta.1_1686813040737_0.3273011075589116","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"lonad","version":"0.3.0","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"license":"MIT","_id":"lonad@0.3.0","maintainers":[{"name":"json3009","email":"jasonolivermarx@gmail.com"},{"name":"notsolucky","email":"paul@tentwentyfour.lu"},{"name":"corallo","email":"ruben@tentwentyfour.lu"},{"name":"kwisatz","email":"david@tentwentyfour.lu"},{"name":"floriansimon1","email":"florian.simon@protonmail.com"}],"dist":{"shasum":"025a0245b1d14af9ac4eb1663b31a9d9544e6107","tarball":"https://registry.npmjs.org/lonad/-/lonad-0.3.0.tgz","fileCount":119,"integrity":"sha512-CGAnaeTqtoLNTytQygFmbtIwFS33hCI9geoCC8SUuwnB543YNouELh7oxZ8a6Ub3b3c9Z+15QSyrXf37GmQUpA==","signatures":[{"sig":"MEUCIQCHa4NzedGpBstVC/Dx9Ry9Qbt2fy4GkuokcC5Kfyuy9AIgVVrzdm35L2YGQtEd1tYtp/yCntVMY5grIC8sHH+pcz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1747029},"main":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","module":"./lib/esm/index.js","authors":[{"name":"Florian Simon"},{"name":"Marx Jason"}],"browser":{"./lib/esm/index.js":"./bundle/lonad-bundle.es.js"},"engines":{"node":">=12.0.0"},"exports":{"node":"./lib/cjs/index.js","types":"./lib/types/index.d.ts","import":"./lib/esm/index.js","default":"./lib/esm/index.js","require":"./lib/cjs/index.js"},"gitHead":"13d29baa2de269860fad019a20c4bd061b7b8e40","scripts":{"lint":"eslint ./src","test":"mocha --resolveJsonModule","build":"npm run generate && rimraf lib && rimraf bundle && npm run build:web && npm run build:node && npm run build:packageJson","generate":"ts-node-esm ./src/generators/optional.gen.ts && ts-node-esm ./src/generators/asyncResult.gen.ts && ts-node-esm ./src/generators/syncResult.gen.ts && ts-node-esm ./src/generators/result.gen.ts && ./node_modules/.bin/eslint ./src/generated --fix","lint:fix":"eslint ./src --fix","build:web":"rollup -c rollup.config.mjs","build:node":"tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json ./tsconfig.types.json && tsc-alias -p ./tsconfig.cjs.json && tsc-alias -p ./tsconfig.esm.json && tsc-alias -p ./tsconfig.types.json","build:packageJson":"echo '{\"type\": \"commonjs\"}' > lib/cjs/package.json && echo '{\"type\": \"module\"}' > lib/esm/package.json"},"_npmUser":{"name":"json3009","email":"jasonolivermarx@gmail.com"},"_npmVersion":"9.7.1","description":"Optional and Result monads implementations","directories":{},"_nodeVersion":"19.1.0","typesVersions":{">=4.9.5":{"*":["./lib/types/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.25.0","chai":"^4.3.7","mocha":"^10.2.0","tslib":"^2.4.1","eslint":"^8.31.0","lodash":"^4.17.21","rimraf":"^3.0.2","rollup":"^3.8.1","ts-node":"^10.9.1","ts-mocha":"^10.0.0","ts-morph":"^18.0.0","deepmerge":"^4.2.2","tsc-alias":"^1.8.2","@hapi/topo":"^6.0.2","typescript":"^4.9.5","@types/chai":"^4.3.4","@types/node":"^18.11.17","@types/mocha":"^10.0.1","eslint-plugin-n":"^15.6.0","@types/lodash.flow":"^3.5.7","ts-paths-esm-loader":"^1.3.2","eslint-plugin-import":"^2.26.0","@rollup/plugin-terser":"^0.2.1","eslint-plugin-promise":"^6.1.1","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^10.0.1","@typescript-eslint/parser":"^5.48.0","@rollup/plugin-node-resolve":"^15.0.1","@typescript-eslint/eslint-plugin":"^5.48.0","eslint-config-standard-with-typescript":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lonad_0.3.0_1688378690711_0.8068061414285841","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-07-07T13:03:36.557Z","modified":"2026-08-31T07:50:04.617Z","0.0.1":"2017-07-07T13:03:36.557Z","0.0.2":"2017-07-08T12:20:20.634Z","0.0.3":"2017-07-09T12:34:22.859Z","0.0.4":"2017-07-09T14:15:27.486Z","0.0.5":"2017-07-09T14:52:27.556Z","0.0.6":"2017-07-09T15:14:16.976Z","0.0.7":"2017-07-09T15:39:10.142Z","0.0.8":"2017-07-09T15:59:52.250Z","0.0.9":"2017-07-09T20:32:50.425Z","0.0.10":"2017-07-09T23:05:29.413Z","0.0.11":"2017-07-10T00:00:18.877Z","0.0.12":"2017-07-10T00:09:53.177Z","0.0.13":"2017-07-11T13:43:30.990Z","0.0.14":"2017-07-11T15:07:48.762Z","0.0.15":"2017-07-11T16:19:54.657Z","0.0.16":"2017-07-12T11:21:29.867Z","0.0.17":"2017-07-12T12:04:13.804Z","0.0.18":"2017-07-18T12:24:37.647Z","0.0.19":"2017-08-04T14:04:49.338Z","0.0.20":"2017-08-21T15:19:41.815Z","0.0.21":"2017-09-19T08:38:55.173Z","0.0.22":"2017-09-26T13:13:31.799Z","0.0.23":"2017-09-27T12:52:19.484Z","0.0.24":"2017-09-28T10:38:32.490Z","0.0.25":"2017-09-28T12:47:34.310Z","0.0.26":"2017-10-03T12:29:24.738Z","0.0.27":"2017-10-09T15:34:45.352Z","0.0.28":"2017-10-20T13:46:46.491Z","0.0.29":"2017-10-23T06:52:11.552Z","0.0.30":"2017-10-27T15:11:09.882Z","0.0.31":"2017-11-10T17:46:59.023Z","0.0.32":"2017-11-15T18:10:57.402Z","0.0.33":"2017-11-20T12:18:26.711Z","0.0.34":"2017-12-06T14:22:15.416Z","0.0.35":"2017-12-13T10:55:14.623Z","0.0.36":"2017-12-18T18:09:05.412Z","0.0.37":"2018-04-10T14:19:41.846Z","0.0.38":"2018-07-16T11:46:34.753Z","0.0.39":"2018-08-03T08:35:40.442Z","0.0.40":"2018-08-24T14:36:03.057Z","0.0.41":"2018-12-10T14:00:53.937Z","0.0.42":"2019-02-22T12:18:29.169Z","0.0.70":"2019-03-03T23:24:20.077Z","0.0.71":"2019-03-04T00:11:41.405Z","0.0.72":"2019-03-04T00:24:33.658Z","0.0.43":"2019-06-11T15:21:17.615Z","0.0.73":"2019-06-11T15:23:46.062Z","0.0.44":"2019-08-20T11:39:58.014Z","0.0.74":"2019-08-20T11:40:13.229Z","0.0.45":"2019-09-03T09:22:02.863Z","0.0.75":"2019-09-03T09:25:59.527Z","0.0.76":"2020-06-04T14:22:02.879Z","0.1.0":"2020-06-04T15:07:05.881Z","0.2.0":"2021-08-31T09:02:16.238Z","0.3.0-beta.1":"2023-06-15T07:10:41.000Z","0.3.0":"2023-07-03T10:04:50.968Z"},"license":"MIT","keywords":["option","optional","just","maybe","result","ok","error","async","pending"],"description":"Optional and Result monads implementations","maintainers":[{"email":"jasonolivermarx@gmail.com","name":"json3009"},{"email":"paul@tentwentyfour.lu","name":"notsolucky"},{"email":"david@tentwentyfour.lu","name":"kwisatz"},{"email":"martin.latta@gmail.com","name":"lattam"},{"email":"florian.simon@protonmail.com","name":"floriansimon1"}],"readme":"\n# Lonad\nby [Florian Simon](https://github.com/floriansimon1)\n\nTypeScript Support by [Marx Jason](https://github.com/xxjasonxx1996)\n\n*Like lodash, but for monads…*\n\n![node](https://img.shields.io/node/v/lonad)\n[![npm](https://img.shields.io/npm/v/lonad)](https://www.npmjs.com/package/lonad)\n[![TypeScript](https://img.shields.io/badge/TypeScript-4.9.5-blue)](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-9.html)\n\n## Focus\n\nThis currently provides `Optional` and `Result` types in Javascript & Typescript.\n\nWhat's different in this `Maybe`/`Optional`/`Either`/`Result` implementation? Here, pragmatism is valued above fantasy-land compliance. lonad draws inspiration on Haskell's `Maybe`, and, like lodash, tortures nice concepts to put emphasis on user-friendliness and convenience.\n\nAnother notable difference from folktale's `Result`: lonad's `Result` handles asynchronous computation chains.\n\n\n## TypeScript support\n\nThis library is written in Typescript and provides type definitions for Typescript users.\n\nIt is also written in a way that allows Typescript to infer types in most cases, so you don't have to specify them manually.\n\nAlthough, it is recommended to use TypeScript, it is not mandatory. The library is written in a way that allows it to be used in Javascript projects without any hassle.\n\n> Be aware that version `0.3.0` adds types in a limited way. This is due to the fact that Typescript curried functions are not supported yet.\n\n### IMPORTANT:\nThe usage of `Typescript 4.9.5` or higher is recommended. Versions below `4.9.5` may not be able to infer types in certain cases.\n\n### Example\n\n```ts\nimport { Result } from 'lonad';\n\nconst result = Result.expect(42) // Infered type: Result<number>\n  .map(x => x * 2)\n  .tap(console.log) // 84\n  .map(async x => x + 2) // Promise<number>\n  .tap(console.log) // 86\n  .get(); // Promise<number>\n\n```\n\n## Installing\n\n\n### Node.js\n\n`$ npm install lonad`\n\nOnce installed, you can import the library using `import` or `require`:\n\n```js\nimport { Optional, Result } from 'lonad';\n```\n\n```js\nconst { Optional, Result } = require('lonad');\n```\n\n\n### Browser\n\n`$ bower install lonad`\n\n### CDN\n\n> Currently unavailable!\n\n#### ES6\n```html\n<script src=\"https://unpkg.com/lonad/bundle/lonad-bundle.js\"></script>\n```\nOr minified version (recommended for production `~17kb`):\n```html\n<script src=\"https://unpkg.com/lonad/bundle/lonad-bundle.min.js\"></script>\n```\nUsage:\n```html\n<script>\n  const { Optional, Result } = lonad;\n</script>\n```\n\n#### As a module\n```html\n<script type=\"module\" src=\"https://unpkg.com/lonad/lonad-bundle.es.js\"></script>\n```\n\n## ROADMAP\n\n* [x] `Optional` type\n* [x] `Result` type\n* [x] Typescript support\n* [x] Bundled version\n* [ ] Further improve Typescript support\n* [ ] Write documentation for the `generator` systems\n* [ ] Immutable `Optional` and `Result` types.\n\n\n## TESTS\n\nTo run the tests, simply execute:\n\n`$ npm run test`\n\n## What is an `Optional`\n\n\n\nAn `Optional` is, as its name suggests, a wrapper for a value that can potentially be absent. It is written as an object that can have two potential states, `Some` or `None`. When an `Optional` is a `Some`, it means that a value is present. When it's a `None`, it means that the value is absent.\n\n\n\n### What's the point?\n\n\n\nThis allows you to avoid the dreaded `x is undefined` class of Javascript errors completely, by providing a safe API, that the rest of this document will explain.\n\n\n\n## What is a `Result`\n\n\n\nA `Result` models the result of a computation chain in a functional way. In other words, it encapsulates the result of executing code. It can handle asynchronous code, code that may fail with a specific value and even computation chains that may be interrupted (*aborted*) in the middle of the chain if some error occurred. A `Result` can have one of the 4 following subtypes:\n\n\n\n* `Ok`: Similar to `Optional`'s `Some`, models return values of computation chains.\n\n* `Error`: Similar to `Optional`'s `None`, models chains that errored in a recoverable way. The difference with `None` is that errors can also have values.\n\n* `Aborted`: Same as `Error`, but it's not recoverable.\n\n* `Pending`: Wraps the 3 other types in asynchronous contexts.\n\n\n\n### What's the point?\n\n\n\nThe point here is the same as for `Optional` (safety), but with a focus on readability. Returning a `Result` from a function signals that your function may fail and gives you details about the failure when it occurs. In certain contexts, you can also see it as an interruptible `Promise` chain. If you never liked `async`/`await` because of the verbosity of error handling using `try`/`catch`, then you'll love `Result`. A nice advantage is that it makes it easy to be specific about errors without writing tons of try catch blocks, which makes your error-handling code more testable.\n\n\n\n### Recipes\n\n\n\n#### `Optional` recipes\n\n| Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description |\n|-----|-------------|\n| `get` | Get the value or **throws** an error. |\n| `getOrElse` | Get the value or return a default value. |\n| `filter` | Checks whether the Optional's value passes a predicate. |\n| `reject` | Checks whether the Optional's value fails a predicate. |\n| `or` | Returns the original optional if it is present, or the return value of the provided replacement function if the original value is not present. |\n| `map` | Alias for `transform`. |\n| `nullableMap` | Maps the value of the Optional to a new value and allows the transformation to return `null` or `undefined`. |\n| `flatMap` | Maps the value of the Optional to a new value and returns either the new value or itself if the Optional is `None`. |\n| `transform` | Maps the value of the Optional to a new value. |\n| `match` | Pattern matches on the optional value and returns the result of executing the corresponding function for the matching case. |\n| `property` | Maps the value of the Optional to a property of the value and wraps the value in an `Some Optional`. |\n| `nullableProperty` | Maps the value of the Optional to a property of the value and wraps the value in an `Optional`. |\n| `optionalProperty` | Maps the value of the Optional to a property of the value. |\n| `tap` | Executes a function if the Optional is present. |\n| `satisfies` | Checks whether the Optional satisfies a predicate. |\n| `valueEquals` | Checks whether the Optional's value is equal to another value. |\n| `recover` | Recovers from a `None` Optional. |\n| `replace` | Replace the value of the Optional. |\n\n* [⚓](#optional-construction) Constructing an `Optional`.\n\n* [⚓](#optionalfromnullablenullablevalue) Constructing an `Optional` using a nullable value.\n\n* [⚓](#optionals-mapλ) Transforming the value wrapped in an `Optional`.\n\n* [⚓](#optionals-replacevalue) Changing the value wrapped in an `Optional` to another value.\n\n* [⚓](#optionals-get) Unsafe unboxing of `Optional` values.\n\n* [⚓](#optional-value-presence) Checking presence or absence of `Optional` value.\n\n* [⚓](#optionals-satisfiespredicate) Checking that a wrapped value satisfies a predicate.\n\n* [⚓](#optionals-getorelsevalue) Safe unboxing of `Optional` values.\n\n* [⚓](#optionals-filterλ) Transforming a `Some` into a `None` when a condition is met.\n\n* [⚓](#optionals-rejectλ) Transforming a `Some` into a `None` when a condition is not met.\n\n* [⚓](#optionals-propertypropertyname) Transforming a `Some` into a `Some` wrapping a property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-nullablepropertypropertyname) Transforming a `Some` into an `Optional` based on a nullable property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-optionalpropertypropertyname) Transforming a `Some` into an `Optional` based on a nullable property of the initial `Some`'s wrapped value.\n\n* [⚓](#optionals-valueequalsvalue) Checking if a `Some`'s value equals a given value.\n\n* [⚓](#optionals-flatmapλ) Transforming a `Some` into another `Optional`.\n\n* [⚓](#optionals-matchmatcher) `Optional` pattern matching.\n\n* [⚓](#optionals-orλoroptional) Selecting the first available `Some`.\n\n* [⚓](#optionalfirstoptionals) Selecting the first available `Some` in an array.\n\n* [⚓](#optionals-recoverλ) Transforming a `None` into a `Some`.\n\n* [⚓](#optionals-orλoroptional) Transforming a `None` into an `Optional`.\n\n* [⚓](#optional-serialization) `Optional` serialization.\n\n* [⚓](#optionalalloptionals) Constructing a `Some` wrapping an array of values from other `Some` instances.\n\n* [⚓](#optionalwhentruthy-value) Construct a new Some if a condition is met.\n\n* [⚓](#optionals-tapλ) Executing a function on a Some without changing it.\n\n\n\n#### `Result` recipes\n\n\n| Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Description |\n| ----- | ----------- |\n| [⚓](#result’s-get) `get` | Returns the `value` of the result. If the result is not `Ok`, it will throw an **error**. |\n| [⚓](#result’s-getorelse) `getOrElse` | Returns the `value` of the result. If the result is not Ok, it will return the `value` provided. |\n| [⚓](#result’s-merge) `merge` | Returns the result value if it is `Ok`, otherwise returns the `error` value. |\n| [⚓](#result’s-recover) `recover` | Recovers from an error if an error occured. |\n| [⚓](#result’s-replace) `replace` | Replace the `value` of the result. Will only replace the value if the result is `Ok`. |\n| [⚓](#result’s-property) `property` | Returns the wrapped property value if the result contains an object. Will always return an `Ok` result even if the property was not found. |\n| [⚓](#result’s-expectproperty) `expectProperty` | Returns the wrapped property value if the result contains an object. Will return an `Error` result if the property was not found. |\n| [⚓](#result’s-tap) `tap` | Tap into the result and perform an action. Will only perform the action if the result is `Ok`. |\n| [⚓](#result’s-taperror) `tapError` | Tap the error value if result is an `error`. |\n| [⚓](#result’s-satisfies) `satisfies` | Test if the result satisfies a predicate. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-valueequals) `valueEquals` | Test if the result value equals another value. Will only test the equality if the result is `Ok`. |\n| [⚓](#result’s-map) `map` | Maps the result value, returns an `Ok` result even if the passed value is `undefined`. |\n| [⚓](#result’s-maperror) `mapError` | Map the error value if result is an `error`. |\n| [⚓](#result’s-expectmap) `expectMap` | Maps the result `value`, returns an Error result if the passed value is `undefined`. |\n| [⚓](#result’s-transform) `transform` | Alias for `map`. Maps the result value, returns an Ok result even if the passed value is `undefined`. |\n| [⚓](#result’s-flatmap) `flatMap` | Maps the result value and *flattens* the result. |\n| [⚓](#result’s-reject) `reject` | Rejects the result if the predicate returns true. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-filter) `filter` | Filters the result if the predicate returns true. Will only test the predicate if the result is `Ok`. |\n| [⚓](#result’s-match) `match` | Match the result type and return a value. |\n| [⚓](#result’s-abortonerror) `abortOnError` | Aborts the excution if the result is an `error`. |\n| [⚓](#result’s-abortonerrorwith) `abortOnErrorWith` | Aborts the excution if the result is an `error` with an error value. |\n| [⚓](#result’s-recoverwhen) `recoverWhen` | Recover the result if it is an `error` and the predicate returns true. |\n| [⚓](#result’s-asynchronous) `asynchronous` | Converts the result to a `asyncronous` result. |\n| [⚓](#result’s-topromise) `toPromise` | Converts the result to a `promise`. |\n| [⚓](#result’s-tooptional) `toOptional` | Converts the result to an `optional` object. |\n\n\n## General tips\n\n\n\nWhat is called a nullable here is a value that is either `null` or `undefined`.\n\n\n\nYou can use `new` to instantiate `Result`/`Optional`, but it's not mandatory. Just using `Optional.Some(3)` is also OK.\n\n\n\nEvery `Optional` or `Result` method is available in auto-curried, instance-last parameter version, which allows you to write the following code:\n\n\n\n```javascript\n\nconst  optionals  = [1, 2, 3].map(Optional.Some);\n\nconst  addThree  =  x  =>  x  +  3;\n\n\n\n// This evaluates to [4, 5, 6].\n\nconst  results  =  optionals\n\n.map(Optional.map(addThree))\n\n.map(Optional.getOrElse(0));\n\n```\n\n\n\n## Reference (by example)\n\n\n\n### Optional\n\n\n\n*Wrapper for values that can be absent.*\n\n\n\n#### Some\n\n\n\n*`Optional` subtype for present values.*\n\n\n\n#### None\n\n\n\n*`Optional` subtype for absent values.*\n\n\n\n#### `Optional` construction\n\n\n\n```javascript\n\nconst  present1  =  Some(value);\n\nconst  absent1  =  None();\n\n\n\nconst  present2  =  new  Some(value);\n\nconst  absent2  =  new  None();\n\n```\n\n\n\n#### `Optional.fromNullable(nullableValue)`\n\n\n\n```javascript\n\n// These will evaluate to Some instances.\n\nOptional.fromNullable(3);\n\nOptional.fromNullable(0);\n\nOptional.fromNullable('');\n\nOptional.fromNullable(NaN);\n\n\n\n// These will evaluate to None().\n\nOptional.fromNullable(null);\n\nOptional.fromNullable(undefined);\n\n```\n\n\n\n#### `Optional`'s `get()`\n\n\n\n*Note: using this is **NOT** recommended!*.\n\n\n\n```javascript\n\n// This will evaluate to 2.\n\nSome(2).get();\n\n\n\n// This will throw.\n\nNone().get();\n\n\n\n// You can also pass a custom exception message:\n\ntry {\n\nNone().get(\"message\");\n\n} catch (error) {\n\n// This will log \"message\".\n\nconsole.log(error.message);\n\n}\n\n```\n\n\n\n#### `Optional` value presence\n\n\n\n*Note: writing a check based on these flags, then doing `optional.get()` is a **very bad** code smell.*\n\n\n\n```javascript\n\n// These will evaluate to true.\n\nSome(2).valuePresent;\n\nNone().valueAbsent;\n\n\n\n// These will evaluate to false.\n\nNone().valuePresent;\n\nSome(2).valueAbsent;\n\n```\n\n\n\n#### `Optional`'s `satisfies(predicate)`\n\n\n\n```javascript\n\n// This evaluates to true.\n\nSome(3).satisfies(x  =>  x  ===  3);\n\n\n\n// These evaluate to false.\n\nSome(3).satisfies(x  =>  x  ===  4);\n\nNone().satisfies(() =>  true);\n\n```\n\n\n\n#### `Optional`'s `getOrElse(value)`\n\n\n\n```javascript\n\n// This will evaluate to 2.\n\nSome(2).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `map(λ)`\n\n\n\n*`map` is also aliased to `transform` if you have a tendency to confuse `Optional`'s `map` with `Array`'s.*\n\n\n\n```javascript\n\n// This will evaluate to 3.\n\nSome(2).map(x  =>  x  +  1).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().map(x  =>  x  +  1).getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `replace(value)`\n\n\n\n```javascript\n\n// This will evaluate to 3.\n\nSome(2).replace(3).getOrElse(0);\n\n\n\n// This will evaluate to 0.\n\nNone().replace(3).getOrElse(0);\n\n```\n\n\n\n#### `Optional`'s `filter(λ)`\n\n\n\n*Opposite of `reject`.*\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome(2).filter(Boolean);\n\n\n\n// This will evaluate to None().\n\nSome(0).filter(Boolean);\n\n\n\n// This will evaluate to None().\n\nNone().filter(Boolean);\n\n```\n\n\n\n#### `Optional`'s `reject(λ)`\n\n\n\n*Opposite of `filter`.*\n\n\n\n```javascript\n\n// This will evaluate to None().\n\nSome(2).reject(Boolean);\n\n\n\n// This will evaluate to Some(0).\n\nSome(0).reject(Boolean);\n\n\n\n// This will evaluate to None().\n\nNone().reject(Boolean);\n\n```\n\n\n\n\n#### `Optional`'s `property(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: 2 }).property('a');\n\n\n\n// This will evaluate to None().\n\nNone().property('a');\n\n```\n\n\n\n\n#### `Optional`'s `nullableProperty(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: 2 }).nullableProperty('a');\n\n\n\n// This will evaluate to None().\n\nSome({ a: 2 }).nullableProperty('b');\n\n\n\n// This will evaluate to None().\n\nNone().nullableProperty('a');\n\n```\n\n\n\n\n#### `Optional`'s `optionalProperty(propertyName)`\n\n\n\n```javascript\n\n// This will evaluate to Some(2).\n\nSome({ a: Some(2) }).optionalProperty('a');\n\n\n\n// This will evaluate to None().\n\nSome({ a: None() }).optionalProperty('a');\n\n\n\n// This will evaluate to None().\n\nNone().optionalProperty('a');\n\n```\n\n\n\n#### `Optional`'s `valueEquals(value)`\n\n\n\n*This functions uses triple equal (`===`) for comparisons.*\n\n\n\n```javascript\n\n// This will evaluate to true.\n\nSome(2).valueEquals(2);\n\n\n\n// This will evaluate to false.\n\nSome(3).valueEquals(2);\n\n\n\n// This will evaluate to false.\n\nNone().valueEquals('a');\n\n```\n\n\n\n#### `Optional`'s `flatMap(λ)`\n\n\n\n*This is used to nest transformations that return `Optional` instances, as you can see in the example below.*\n\n\n\n```javascript\n\n// This will evaluate to Some('Ford T').\n\nretrieveUserFromDatabase(1)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\n// This will evaluate to None().\n\nretrieveUserFromDatabase(2)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\n// This will evaluate to None().\n\nretrieveUserFromDatabase(3)\n\n.optionalProperty('carId')\n\n.flatMap(retrieveCarFromDatabase)\n\n.property('model')\n\n\n\nfunction  retrieveUserFromDatabase(id) {\n\nif (id  ===  1) {\n\nreturn  Some({ id, carId: Some(1) });\n\n} else  if (id  ===  2) {\n\nreturn  Some({ id, carId: None() });\n\n}\n\n\n\nreturn  None();\n\n}\n\n\n\nfunction  retrieveCarFromDatabase(id) {\n\nif (id  ===  1) {\n\nreturn  Some({ id, model: 'Ford T' });\n\n}\n\n\n\nreturn  None();\n\n}\n\n```\n\n\n\n#### `Optional`'s `match(matcher)`\n\n\n\n```javascript\n\n// This evaluates to 1.\n\nSome(3).match({\n\nSome: value  =>  value  -  2,\n\nNone: () =>  2\n\n});\n\n\n\n// This evaluates to 3.\n\nSome(3).match({ None: () =>  2 });\n\n\n\n// This evaluates to 1.\n\nSome(3).match({ Some: value  =>  value  -  2 });\n\n\n\n// This will throw.\n\nNone().match({ Some: value  =>  value  -  2 });\n\n\n\n// This evaluates to 1.\n\nNone().match({ None: () =>  1 });\n\n```\n\n\n\n#### `Optional`'s `recover(λ)`\n\n\n\n*Kind of equivalent to `map` but for `None` instances.*\n\n\n\n```javascript\n\n// This evaluate to Some(3).\n\nNone().recover(() =>  Some(3));\n\n\n\n// This evaluates to Some(2).\n\nSome(2).recover(() =>  3);\n\n```\n\n\n\n#### `Optional`'s `or(λOrOptional)`\n\n\n\n*When passed a function, it is kind of equivalent to `flatMap` but for `None` instances.*\n\n\n\n```javascript\n\n// These evaluate to Some(3).\n\nNone().or(Some(3));\n\nNone().or(() =>  Some(3));\n\n\n\n// These evaluate to None().\n\nNone().or(None());\n\nNone().or(None);\n\n\n\n// These evaluate to Some(2).\n\nSome(2).or(None);\n\nSome(2).or(Some(3));\n\nSome(2).or(() =>  Some(3));\n\n```\n\n\n\n#### `Optional` serialization\n\n\n\n```javascript\n\n// As long as the wrapped value is serializable, you can serialize using JSON.stringify.\n\nconst  serialized  =  JSON.stringify(Some(3));\n\n\n\n// And deserialize it using Optional.fromParsedJson. This evaluates to Some(3).\n\nOptional.fromParsedJson(JSON.parse(serialized));\n\n```\n\n\n\n#### `Optional.when(truthy, value)`\n\n\n\n```javascript\n\n// These evaluate to None().\n\nOptional.when(null);\n\nOptional.when(undefined);\n\nOptional.when(0);\n\nOptional.when('');\n\nOptional.when(NaN);\n\n\n\n// These evaluate to Some(4).\n\nOptional.when(true, 4);\n\nOptional.when(' ', 4);\n\nOptional.when({}, 4);\n\nOptional.when(1, 4);\n\n```\n\n\n\n#### `Optional.first(optionals)`\n\n\n\n```javascript\n\n// This evaluates to None().\n\nOptional.first([None(), None(), None()]);\n\n\n\n// These evaluate to Some(3).\n\nOptional.first([Some(3), None(), None()]);\n\nOptional.first([None(), Some(3), None()]);\n\nOptional.first([None(), None(), Some(3)]);\n\n```\n\n\n\n#### `Optional.all(optionals)`\n\n\n\n*Works a bit like `Promise.all`.*\n\n\n\n```javascript\n\n// These evaluate to None().\n\nOptional.all([Some(3), Some(3), None()]);\n\nOptional.all([Some(3), None(), Some(3)]);\n\nOptional.all([None(), Some(3), Some(3)]);\n\n\n\n// This evaluates to Some([1, 2, 3]).\n\nOptional.all([Some(1), Some(2), Some(3)]);\n\n```\n\n\n\n#### `Optional`'s `tap(λ)`\n\n\n\n```javascript\n\n// This prints 'hello' and evaluates to Some(3).\n\nOptional.Some(3).tap(x  =>  console.log(\"Hello\") ||  x  +  1);\n\n\n\n// This does not call λ and does not print 'Test'.\n\nOptional.None().tap(x  =>  console.log(\"Test\"));\n\n```\n\n### Result\n\nWraps a value that can either be a `Ok` or a `Error`. It is useful for error handling and for functions that can fail.\n\n#### Ok\n\n`Result` subclass that wraps a value that represents a successful operation.\n\n```js\nconst myResult = Result.Ok(3);\n\n// This will evaluate to 3.\nconsole.log(myResult.value);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Error\n\n`Result` subclass that wraps a value that represents a failed operation.\n\n```js\nconst myResult = Result.Error('Something went wrong');\n\n// This will evaluate to 'Something went wrong'.\nconsole.log(myResult.error);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Aborted\n\n`Result` subclass that wraps a value that represents an aborted operation. This breaks the chain of operations. It cannot be recovered from.\n\n```js\nconst myResult = Result.Aborted('Something went wrong');\n\n// This will evaluate to 'Something went wrong'.\nconsole.log(myResult.error);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### Pending\n\n`Result` subclass that wraps a value that represents a pending operation. Once a single link in a chain of operations is pending, the whole chain becomes asynchronous.\n\n```js\nconst myResult = Result.Pending(Promise.resolve(3));\n\n// This will evaluate to 3.\nconsole.log(await myResult.promise);\n```\n\n> Note, it is bad pratice to directly access properties, use appropriate methods instead.\n\n#### `Result`'s `expect(value)`\n\nThe `expect` method is used to wrap a value that can either be a `Ok` or a `Error`. The value can also be asynchronous.\n\n```js\n// This evaluates to Ok(3).\nResult.expect(3);\n\n// This evaluates to Error('Something went wrong').\nResult.expect(undefined);\n\n// This evaluates to Pending(3).\nResult.expect(Promise.resolve(3));\n```\n\n#### `Result`'s `get`\n\nReturns the value of the `Result` instance. If the instance is a `Error` or `Aborted` it will **throw** an error.\n\nDefinition:\n```ts\nfunction get(): T | Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).get();\n\n// This will throw.\nResult.Error('Something went wrong').get();\n```\n\n#### `Result`'s `getOrElse`\n\nReturns the value of the `Result` instance. If the instance is a `Error` or `Aborted` it will return the provided default value.\n\nDefinition:\n```ts\nfunction getOrElse<Y>(value?: Y): T | Y | Promise<T> | Promise<Y>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).getOrElse();\n\n// This evaluates to 4.\nResult.Error('Something went wrong').getOrElse(4);\n```\n\n#### `Result`'s `merge`\n\nReturns the result value if it is Ok, otherwise returns the error value.\n\nDefinition:\n```ts\nfunction merge(): T | Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok(3).merge();\n\n// This evaluates to 'Something went wrong'.\nResult.Error('Something went wrong').merge();\n```\n\n#### `Result`'s `recover`\n\nRecovers from an error if an error occured.\n\nDefinition:\n```ts\nfunction recover<R>(λ: (x: any) => R): Result<T | R>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).recover(() => 4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').recover(() => 4);\n```\n\n#### `Result`'s `replace`\n\nReplace the value of the result. Will only replace the value if the result is Ok.\n\nDefinition:\n```ts\nfunction replace<Y = T>(value: Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).replace(4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').replace(4);\n\n// This evaluates to Aborted('Something went wrong').\nResult.Aborted('Something went wrong').replace(4);\n```\n\n#### `Result`'s `property`\n\nReturns the wrapped property value if the result contains an object. Will always return an Ok result even if the property was not found.\n\nDefinition:\n```ts\nfunction property<Y extends string>(propertyName: Y): Result<T[Y]>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok({ a: 3 }).property('a');\n\n// This evaluates to Ok(undefined).\nResult.Ok({ a: 3 }).property('b');\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').property('a');\n```\n\n#### `Result`'s `expectProperty`\n\nReturns the wrapped property value if the result contains an object. Will return an Error result if the property was not found.\n\nDefinition:\n```ts\nfunction expectProperty<Y extends string>(propertyName: Y): Result<T[Y]>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok({ a: 3 }).expectProperty('a');\n\n// This evaluates to Error('Property \"b\" not found').\nResult.Ok({ a: 3 }).expectProperty('b');\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').expectProperty('a');\n```\n\n#### `Result`'s `tap`\n\nTap into the result and perform an action. Will only perform the action if the result is Ok.\n\nDefinition:\n```ts\nfunction tap(λ: (x: T) => void | Promise<void>): Result<T>;\n```\n\nExample:\n```js\n// This prints 3.\nResult.Ok(3).tap(x => console.log(x));\n\n// This prints also prints 3.\nResult.Ok(3).tap(console.log);\n\n// This does not print anything.\nResult.Error('Something went wrong').tap(x => console.log(x));\n```\n\n#### `Result`'s `tapError`\n\nTap the error value if result is an error.\n\nDefinition:\n```ts\nfunction tapError(λ: (x: any) => Promise<void> | void): Result<T>;\n```\n\nExample:\n```js\n// This prints 'Something went wrong'.\nResult.Error('Something went wrong').tapError(x => console.log(x));\n\n// This does not print anything.\nResult.Ok(3).tapError(x => console.log(x));\n```\n\n#### `Result`'s `satisfies`\n\nTest if the result satisfies a predicate. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction satisfies(predicate: (x: T) => T | boolean): boolean | Promise<boolean>;\n```\n\nExample:\n```js\n// This evaluates to true.\nResult.Ok(3).satisfies(x => x === 3);\n\n// This evaluates to false.\nResult.Ok(3).satisfies(x => x === 4);\n\n// This evaluates to false.\nResult.Error('Something went wrong').satisfies(x => x === 3);\n```\n\n#### `Result`'s `valueEquals`\n\nTest if the result value equals another value. Will only test the equality if the result is Ok.\n\nDefinition:\n```ts\nfunction valueEquals(value: T): boolean | Promise<boolean>;\n```\n\nExample:\n```js\n// This evaluates to true.\nResult.Ok(3).valueEquals(3);\n\n// This evaluates to false.\nResult.Ok(3).valueEquals(4);\n\n// This evaluates to false.\nResult.Error('Something went wrong').valueEquals(3);\n```\n\n#### `Result`'s `map`\n\nMaps the result value, returns an Ok result even if the passed value is undefined.\n\nDefinition:\n```ts\nfunction map<Y>(λ: (x: T) => Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).map(x => x + 1);\n\n// This evaluates to Ok(undefined).\nResult.Ok(3).map(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').map(x => x + 1);\n```\n\n#### `Result`'s `mapError`\n\nMap the error value if result is an error.\n\nDefinition:\n```ts\nfunction mapError(λ: (x: any) => Promise<any> | any): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Error('tapped error').\nResult.Error('Something went wrong').mapError(x => 'tapped error');\n\n// This evaluates to Ok(3).\nResult.Ok(3).mapError(x => 'tapped error');\n```\n\n#### `Result`'s `expectMap`\n\nMaps the result value, returns an Error result if the passed value is undefined.\n\nDefinition:\n```ts\nfunction expectMap<Y>(λ: (x: T) => Y | Promise<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).expectMap(x => x + 1);\n\n// This evaluates to Error('Expected value but got undefined').\nResult.Ok(3).expectMap(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').expectMap(x => x + 1);\n```\n\n#### `Result`'s `flatMap`\n\nMaps the result value and flattens the result. Returns an Error result if the passed value is undefined.\n\nDefinition:\n```ts\nfunction flatMap<Y>(λ: (x: T) => Y | Promise<Y> | Result<Y>): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(4).\nResult.Ok(3).flatMap(x => x + 1);\n\n// This evaluates to Ok(4).\nResult.Ok(3).flatMap(x => Result.Ok(x + 1));\n\n// This evaluates to Error('Expected value but got undefined').\nResult.Ok(3).flatMap(x => undefined);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').flatMap(x => x + 1);\n```\n\n#### `Result`'s `reject`\n\nRejects the result if the predicate returns true. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction reject(predicate: (x: T) => Promise<boolean> | boolean): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).reject(x => x === 4);\n\n// This evaluates to Error('Rejected').\nResult.Ok(3).reject(x => x === 3);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').reject(x => x === 3);\n```\n\n#### `Result`'s `filter`\n\nAllows the result if the predicate returns true. Will only test the predicate if the result is Ok.\n\nDefinition:\n```ts\nfunction filter(predicate: (x: T) => Promise<boolean> | boolean): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).filter(x => x === 3);\n\n// This evaluates to Error('Filtered').\nResult.Ok(3).filter(x => x === 4);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').filter(x => x === 3);\n```\n\n#### `Result`'s `match`\n\nMatches the result type and returns the result of the matched function.\n\nDefinition:\n```ts\nfunction match<Y>(λ: {\n  Ok: (x: T) => Y | Promise<Y>;\n  Error: (x: any) => Y | Promise<Y>;\n  Aborted: (x: any) => Y | Promise<Y>;;\n}): Y | Promise<Y>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nResult.Ok('some Value').match({\n  Ok: (x) => 3,\n  Error: (x) => 4,\n  Aborted: (x) => 5,\n});\n\n// This evaluates to 4.\nResult.Error('Something went wrong').match({\n  Ok: () => 3,\n  Error: () => 4,\n  Aborted: () => 5,\n});\n\n// This evaluates to 5.\nResult.Aborted('Something went wrong').match({\n  Ok: () => 3,\n  Error: () => 4,\n  Aborted: () => 5,\n});\n```\n\n#### `Result`'s `abortOnError`\n\nAborts the excution if the result is an error.\n\nDefinition:\n```ts\nfunction abortOnError(): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).abortOnError();\n\n// This evaluates to Aborted('Something went wrong').\nResult.Error('Something went wrong').abortOnError();\n\n// This evaluates to Ok(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .abortOnError();\n\n// This evaluates to Aborted('Value is not equal').\nResult.expect(3)\n  .map(x => x + 1)\n  .valueEquals(5)\n  .abortOnError();\n```\n\n#### `Result`'s `abortOnErrorWith`\n\nAborts the excution if the result is an error with an error value.\n\n```ts\nfunction abortOnErrorWith(error: any): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).abortOnErrorWith('Something went wrong');\n\n// This evaluates to Aborted('Something went wrong').\nResult.Error('other error').abortOnErrorWith('Something went wrong');\n\n// This evaluates to Ok(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .abortOnErrorWith('Something went wrong');\n\n// This evaluates to Aborted('Something went wrong').\nResult.expect(3)\n  .map(x => x + 1)\n  .valueEquals(5)\n  .abortOnErrorWith('Something went wrong');\n```\n\n#### `Result`'s `recoverWhen`\n\nRecover the result if it is an error and the predicate returns true.\n\nDefinition:\n```ts\nfunction recoverWhen<Y>(predicate: (x: T) => boolean | Promise<boolean>, λ: (x: T) => Y): Result<Y>;\n```\n\nExample:\n```js\n// This evaluates to Ok(3).\nResult.Ok(3).recoverWhen(x => true, x => 4);\n\n// This evaluates to Ok(4).\nResult.Error('Something went wrong').recoverWhen(x => true, x => 4);\n\n// This evaluates to Error('Something went wrong').\nResult.Error('Something went wrong').recoverWhen(x => false, x => 4);\n```\n\n#### `Result`'s `asynchronous`\n\nConverts the result to a asyncronous result.\n\nDefinition:\n```ts\nfunction asynchronous(): Result<T>;\n```\n\nExample:\n```js\n// This evaluates to Pending(Ok(3)).\nResult.Ok(3).asynchronous();\n\n// This evaluates to Pending(Error('Something went wrong')).\nResult.Error('Something went wrong').asynchronous();\n```\n\n#### `Result`'s `toPromise`\n\nConverts the result to a promise.\n\nDefinition:\n```ts\nfunction toPromise(): Promise<T>;\n```\n\nExample:\n```js\n// This evaluates to 3.\nawait Result.Ok(3).toPromise();\n\n// This throws an error.\nawait Result.Error('Something went wrong').toPromise();\n\n// This evaluates to 4.\nawait Result.expect(3)\n  .map(x => x + 1)\n  .toPromise();\n```\n\n#### `Result`'s `toOptional`\n\nConverts the result to an optional object.\n\nDefinition:\n```ts\nfunction toOptional(): Optional<T>;\n```\n\nExample:\n```js\n// This evaluates to Some(3).\nResult.Ok(3).toOptional();\n\n// This evaluates to None.\nResult.Error('Something went wrong').toOptional();\n\n// This evaluates to Some(4).\nResult.expect(3)\n  .map(x => x + 1)\n  .toOptional();\n```\n","readmeFilename":"README.md"}