{"_id":"@qvvg/mario","_rev":"4-d45684dc68006fef8416933d53e887cb","name":"@qvvg/mario","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@qvvg/mario","version":"1.0.0","description":"pipes and stuff","author":{"name":"qvvg","email":"github@qv.vg"},"license":"MIT","private":false,"homepage":"https://github.com/orodio/qvvg-mario#readme","repository":{"type":"git","url":"git+ssh://git@github.com/orodio/qvvg-mario.git"},"bugs":{"url":"https://github.com/orodio/qvvg-mario/issues"},"jest":{"transform":{".js":"jest-esm-transformer"}},"source":"src/mario.js","main":"dist/mario.js","module":"dist/mario.mjs","unpkg":"dist/mario.umd.js","devDependencies":{"serialize-javascript":">=2.1.1","jest":"25.1.0","jest-esm-transformer":"1.0.0","microbundle":"0.11.0"},"scripts":{"prepublishOnly":"npm run build","build":"microbundle","test":"jest","dev":"jest --watch"},"gitHead":"583ace7bad4ae954dcf1c9e288a0fa7b482f313f","_id":"@qvvg/mario@1.0.0","_nodeVersion":"13.7.0","_npmVersion":"6.14.0","dist":{"integrity":"sha512-1C3kLK8gNS29a7LrbOxMMivsOl+oH+07tGYtoWjuUKqTWjhSiRdVScDdmwlGnrevAwJ596KEIpiPW5txgV5C1g==","shasum":"63582308e96f7574199e652bd80f41de520a78ba","tarball":"https://registry.npmjs.org/@qvvg/mario/-/mario-1.0.0.tgz","fileCount":11,"unpackedSize":90552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVxdNCRA9TVsSAnZWagAAEzkP+wVDHKzPQ6b8aQdD2OiK\n1VG57rnaM4UY60gq++1IjsIIlQKItea79fxMcm1xc81+SWwEBwh2RssPI7Z9\nm5unluA9APpxqN/PjvJUvH3xhd02bHZOh0OVLZrmLSLDMYrblmiD1r5DaNHV\n1jCRSyuQma7jtw3xCI0k8pQHdNfA1B/X/EvvbdPDzBbmUw7Y1/dII7pJeS9j\nagah/XJPJA5EA504Q7sudztz/wdvPAnrhEZJJJ1LlBpsHmcWXMCuuyxe57Oc\n/j7j1zdubJyisb4lenKBaqbmnKHCU59OgqNha7pVEJAdOyTFtccuWNmH0wta\nH/xIfrS0qMgAgpSGlrVJ3e24bpJ+cvFebBLtaOLR9QntCdRCoHWP/be0BhuN\nHInKpXJ+iVrY4aL8dnRRWjR857Tv3lelmOjgS4DR4TXF0+MjQn/z6xcL0bly\nNTCn8HW+ehl5rCAic/pf5GLdJJ5wtvq4UstCP54Hi2qAlkihEhP+mX23X4/Q\nvPm7f7X8Fjnk1C4bQNLT6xW61ccxJNs/KIKW8WWEbaCyg4ylKaLOVO6Y5pb1\nIsa8nIdjo9TcNEyqh8UdDrPI8YyKF3YTPNeHcE0nSQz8nMqUiWztoAPWU3s1\ntkd+HNav1wrrjKwlWny/SO9ZyfFeA3GVH72uqsBEnp+FAjghYO056qkx1Ruo\nQYZF\r\n=FROh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZ78vUCqHha+CfDt0gXWW/CiGzx0eiko3TXTIXEPmjNAiEA/JnF8aCNZWcr1KazBRDnf1Z5B3Qw9LTeg+jvIbXD+Qs="}]},"maintainers":[{"name":"qvvg","email":"npm@qv.vg"}],"_npmUser":{"name":"qvvg","email":"npm@qv.vg"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mario_1.0.0_1582765900903_0.49319119488053254"},"_hasShrinkwrap":false},"1.1.0":{"name":"@qvvg/mario","version":"1.1.0","description":"pipes and stuff","author":{"name":"qvvg","email":"github@qv.vg"},"license":"MIT","private":false,"homepage":"https://github.com/orodio/qvvg-mario#readme","repository":{"type":"git","url":"git+ssh://git@github.com/orodio/qvvg-mario.git"},"bugs":{"url":"https://github.com/orodio/qvvg-mario/issues"},"jest":{"transform":{".js":"jest-esm-transformer"}},"source":"src/mario.js","main":"dist/mario.js","module":"dist/mario.mjs","unpkg":"dist/mario.umd.js","devDependencies":{"serialize-javascript":">=2.1.1","jest":"25.1.0","jest-esm-transformer":"1.0.0","microbundle":"0.11.0"},"scripts":{"prepublishOnly":"npm run build","build":"microbundle","test":"jest","dev":"jest --watch"},"gitHead":"d573bc9288b6bbd17580d78fd172b6afc46365d8","_id":"@qvvg/mario@1.1.0","_nodeVersion":"13.7.0","_npmVersion":"6.14.0","dist":{"integrity":"sha512-bdbhy9X2UQUSXQ883I7VniAjtMVfi9mcvWXC4Ud0gEa54Q34vB1uGqKcQ9TDjUtB5KpWZpucp2r/IUawjmZ0tA==","shasum":"a3832a87296526bdb561349e1c114c062d968e6b","tarball":"https://registry.npmjs.org/@qvvg/mario/-/mario-1.1.0.tgz","fileCount":11,"unpackedSize":90617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaC7RCRA9TVsSAnZWagAAVZ4P/RG88UxrqNfog9ijzUVc\nWCHVFlD84INaVH7BPC5Yv6BpaLCjk6Fj+zI8h9I1NuiGbtyU0/ZL4P8nIM9A\nqjkLbZQs/56m5Sd6Kr2Ax9TLSmrWMuXQ0FvJWsOQjkSmPRyAflvqX697AO6s\nr5eQT4sTIUnGrORsEP2rNTzBtNU8bEsZ6Vo8VRNmillg/OFJyAONamQGA0F4\nYADFEE+nSUrH7Z0+NV0ARH5Yebre/EUIvKtzs1ji6jtpn/VNpKwGFJm1+5wO\nkfz08L9esY8rFMW81fy/+a6sREOEoPVpJaQhaQkMeMlphCwn5iTAC6TFGlOn\nRZZtRj8xKdkQXVxxTDXXxi66W2JldTFmOffBWxDdgr4qIeuzdjzMf4pB+JRU\nlHG+W7DEhLP360fwlhXiKHZiFyGtJ4So+ntliAc/2yQzhyRLsHRdJBu464+v\nhdQnURGwiqWM++SK6WvBl/SuVYo8zaOrqmEMGD0Z3rLEXbXcxmyyOCuPOEJI\n8wYYQ1uUq0RSjn0HghsDgbXME2LR2/M0Y6ewuqzfWP+2/97OMVorX6RxmOmV\nPoZsJy7Gc9wOPnR8UJFxebXki8s5B96pHlvym5Vpw3wDz3GJFPYjYfLx8ErV\nC86ZMjr+6b6xJQgFgr44gKyopxwGi5cNnS/NZFzWC7UHOU9F6X7biu7/KLYL\nv4iS\r\n=denY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCTvB3dutpVT1cPCpAdrlHpxnGE3nOX5fw/o+Ptc4BdAiEAr1HCML1Oy82BuHj6o8rz66Z/sPHwGtyoby8MUTSS6BE="}]},"maintainers":[{"name":"qvvg","email":"npm@qv.vg"}],"_npmUser":{"name":"qvvg","email":"npm@qv.vg"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mario_1.1.0_1583886033306_0.4401127911273859"},"_hasShrinkwrap":false},"1.2.0":{"name":"@qvvg/mario","version":"1.2.0","description":"pipes and stuff","author":{"name":"qvvg","email":"github@qv.vg"},"license":"MIT","private":false,"homepage":"https://github.com/orodio/qvvg-mario#readme","repository":{"type":"git","url":"git+ssh://git@github.com/orodio/qvvg-mario.git"},"bugs":{"url":"https://github.com/orodio/qvvg-mario/issues"},"jest":{"transform":{".js":"jest-esm-transformer"}},"source":"src/mario.js","main":"dist/mario.js","module":"dist/mario.mjs","unpkg":"dist/mario.umd.js","devDependencies":{"serialize-javascript":">=2.1.1","jest":"25.1.0","jest-esm-transformer":"1.0.0","microbundle":"0.11.0"},"scripts":{"prepublishOnly":"npm run build","build":"microbundle","test":"jest","dev":"jest --watch"},"gitHead":"0ac220ddcb06e13441fea2213b741dec703377be","_id":"@qvvg/mario@1.2.0","_nodeVersion":"13.7.0","_npmVersion":"6.14.0","dist":{"integrity":"sha512-Gp+xriDq7arE5ynT6tw1/HquJP4BZ6VJP4Fz68F/cVws73w2moSihVuKV1/ZtRl+gppzWo4GngY3z03WlCoxMA==","shasum":"1bbcf7574f43e7b577dceee51835f43904c98e36","tarball":"https://registry.npmjs.org/@qvvg/mario/-/mario-1.2.0.tgz","fileCount":11,"unpackedSize":92442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaSEiCRA9TVsSAnZWagAAPccP/34yZoG0uqOfwP4gs+y/\nQvfPEXkQUWgCDApZbjIm9sb6wKcBETmsQVr8kTvS9iRQo4Zf9rMc0Sxzy/a6\nRLj/x8veJ7P8yWKz2BwpqYp3p13iY9mxFFZMcxblE6/MA5bjfp6Yj+ahLOAX\n5jTTtZ8OyCF24pSMLSD6eKhjrooOasUMVkitLKev27cPAGyjTCRSc8OvjcEm\n0aTpmFi7C3kDpcGxhr6LYDRLymwYm5Dqo4tctgy21vt6rrT9VziqtTeuDg5r\nT6HPD++OopAGcXgo2HgEYim/ksG3UICOy05GSqIvIMz3uerpSVI/46E7I8Uc\nQ/ckz+dc7MHwgpmHAVbjY1xIHYmTRCBnbWrjod/72U1N7guXBzmHFKP/CKrd\n9hWk/ITAGuHux0Y/waUlZoh0ij+fh+fHwYvSqK9NCxI0wEP829lDwrCTLp2i\nsbtBxQgBRgYjSEf21Y+FVrh9P9Wh1Xx6wS5p3NSbPCDjpE5gtYF2BegV/2Jb\nLv7lnvFYYLI11ZoHCaPtQl56KZBpxGZuL8JFXSvF5O6i0wbkxZxZ0bliEuc2\nckx8HhbckjkZG0W6nBvPIrWtf4vkzq+8CCBrs7kIplyVh3ZrJ02n7n906TO6\nQW9DMw41vyBOr8rv/Ro0HEdgDi5xWqHwaeXFwLBZB551lukFz7xFII5VeMom\n6fNT\r\n=4imr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB9c6fUFC81u0wIrvWyVb/8K/94BdGdGEx2vt7eOHopZAiEAwPoP0qgrLEapW0M8/ZnEB8vq53SKcZSRXfjkN5j+bTc="}]},"maintainers":[{"name":"qvvg","email":"npm@qv.vg"}],"_npmUser":{"name":"qvvg","email":"npm@qv.vg"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mario_1.2.0_1583948065651_0.9390864034031263"},"_hasShrinkwrap":false},"1.3.0":{"name":"@qvvg/mario","version":"1.3.0","description":"pipes and stuff","author":{"name":"qvvg","email":"github@qv.vg"},"license":"MIT","private":false,"homepage":"https://github.com/orodio/qvvg-mario#readme","repository":{"type":"git","url":"git+ssh://git@github.com/orodio/qvvg-mario.git"},"bugs":{"url":"https://github.com/orodio/qvvg-mario/issues"},"jest":{"transform":{".js":"jest-esm-transformer"}},"source":"src/mario.js","main":"dist/mario.js","module":"dist/mario.mjs","unpkg":"dist/mario.umd.js","devDependencies":{"serialize-javascript":">=2.1.1","jest":"25.1.0","jest-esm-transformer":"1.0.0","microbundle":"0.11.0"},"scripts":{"prepublishOnly":"npm run build","build":"microbundle","test":"jest","dev":"jest --watch"},"gitHead":"8c7789e248a2e312452bcaa0affdd9e5dc1baca9","_id":"@qvvg/mario@1.3.0","_nodeVersion":"13.7.0","_npmVersion":"6.14.0","dist":{"integrity":"sha512-lowE+AQUI38IhkxwoXHDp9PsV3qNk+ShPPNyoaraFl2+NYshyBV6G5pFoGIZ2C13/YTZMnChl512W8b0o619WA==","shasum":"1cff4209c32e1b8f2d2fbefc11e23ae8e2a2e9d0","tarball":"https://registry.npmjs.org/@qvvg/mario/-/mario-1.3.0.tgz","fileCount":11,"unpackedSize":94795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecmlXCRA9TVsSAnZWagAA7NYP/3PcPXxKvAFpgMKuGmaj\nFpA46eJCnVTGFWhRL/9/0sIVuiz7F3n4ATQuqZuUJWC0l93OFZaCwDPp/a6U\nXSRmx2iepbsVLUHFIB41fCQGBCzx2lme9QtqAUpfmRmUekJtZU4397ATYIhl\nWOCFa8Ug1sgc3+NpiK/3gAE1Vt/XI8k7bR5ulWDE2GLa87xRna8m7nwr1Yj2\nuJ+bdACmG/mpu/zjW/qckvgL0tRQySlmnWtSJHCgPln2VhztenIHMb0jBvn8\nNDo00M0KOuZqSKji/JkyNkO2NlYfyEkJQpMbOHrFThlULAceqEfXyLt6FMCK\nmYvMOUCD7jlGfS2vr3M38PXjyYYmqqW0Lg76zqLRW+mBkqINSKyS990g88Zu\n2lz1+W01msXTK/L2JC/abrofOLko3jhh8pQZ+XML+3Eeja5RYIlcWLJxABN8\nSpSvxgI7/5bmWOqrtd/7T57oCgO5zw321lylHK+Rf72xf7+/t3PL+SPynzf7\n/ZGVRfIUHURfCAZOZ/Le7Ox7CWpc6onvKbBAPq6PGJNWnETdZ1RCYLG5bZAH\nsy0RyXzaUtWD3IKVI0u8BS6Z/P7UMBym3nuUEfH/6yE9ndBo74p6Ic6pUAgp\nmkHBtPXdl7Bh0yctzTbfhG1UpiGhGJsPDCdq9SNhDCQ7pxLMn50T/c7XPj34\n8+P8\r\n=CUNr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH4lX0UFSMxoaWIqGuiGB3DBX+rcWOU0ll/pcGPMts7OAiA/0SGmxOUW06xuUQMya1gZjVfHrETcDr3HWq69vEPwkg=="}]},"maintainers":[{"name":"qvvg","email":"npm@qv.vg"}],"_npmUser":{"name":"qvvg","email":"npm@qv.vg"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mario_1.3.0_1584556374584_0.36023471324716105"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-27T01:11:40.824Z","1.0.0":"2020-02-27T01:11:41.083Z","modified":"2022-04-06T17:47:33.752Z","1.1.0":"2020-03-11T00:20:33.473Z","1.2.0":"2020-03-11T17:34:25.738Z","1.3.0":"2020-03-18T18:32:54.761Z"},"maintainers":[{"name":"qvvg","email":"npm@qv.vg"}],"description":"pipes and stuff","homepage":"https://github.com/orodio/qvvg-mario#readme","repository":{"type":"git","url":"git+ssh://git@github.com/orodio/qvvg-mario.git"},"author":{"name":"qvvg","email":"github@qv.vg"},"bugs":{"url":"https://github.com/orodio/qvvg-mario/issues"},"license":"MIT","readme":"# MARIO\n\nBecause pipes...\n\n### Install\n\n```bash\nnpm install --save @qvvg/mario\n```\n\n### use pipe as composition\n\n```js\nimport {pipe} from \"@qvvg/mario\"\n\nconst double = x => x * 2\nconst result = await pipe(4, [double, double, double, double])\n\nassert(result.value, 64)\n```\n\n### use pipe as validation\n\n```js\nimport {pipe, Ok, Nope, isOk, isNope} from \"@qvvg/mario\"\n\nconst isString = value => {\n  return typeof value === \"string\"\n    ? Ok(value)\n    : Nope(value, \"Needs to be a string!\")\n}\n\nconst hasAt = value => {\n  return /@/.test(value) ? Ok(value) : Nope(value, \"Must have an @...\")\n}\n\nconst validateEmail = email => pipe(email, [isString, hasAt])\n\nconst v1 = await validateEmail(\"bob@bob.bob\")\nassert(v1.value, \"bob@bob.bob\")\nassert(isOk(v1), true)\nassert(isNope(v1), false)\n\nconst v2 = await validateEmail(1234)\nassert(v2.value, 1234)\nassert(isOk(v2), false)\nassert(isNope(v2), true)\nassert(v2.reason, \"Needs to be a string!\")\n\nconst v3 = await validateEmail(\"bobbob.bob\")\nassert(v3.value, \"bobbob.bob\")\nassert(isOk(v3), false)\nassert(isNope(v3), true)\nassert(v3.reason, \"Must have an @...\")\n```\n\n### pipes can be async\n\n```js\nimport {pipe, Ok, Nope, log} from \"@qvvg/mario\"\n\nawait pipe(null, [\n  _ => fetch(url),\n  r => (r.ok ? Ok(r.json()) : Nope(r.json(), r.statusText)),\n  log(\"DATA\"),\n])\n```\n\n### pipes can handle errors\n\n```js\nimport {pipe, log} from \"@qvvg/mario\"\n\nconst double = x => x * 2\nconst bang = x => {\n  throw new Error(\"EXPLOSION!!!\")\n}\n\nconst result = await pipe(4, [\n  double,\n  double,\n  bang,\n  log(\"I will never happen because bang\"),\n  double,\n])\n\nassert(result.value, 16)\nassert(isOk(result), false)\nassert(isNope(result), true)\nassert(result.reason, \"pipe::throw\")\nassert(result.error.message, \"EXPLOSION!!!\")\n```\n\n### pipes can be composed\n\n```js\nimport {pipe, Ok} from \"@qvvg/mario\"\nconst add = x => y => Ok(x + y)\n\nconst result = await pipe(10, [\n  pipe([add(3), add(-2)]), // +1\n  pipe([add(-9), add(15)]), // +6\n  pipe([add(-5)]), // -5\n])\n\nassert(result.value, 12)\n```\n","readmeFilename":"README.md"}