{"_id":"io-ts-extra","_rev":"46-61eb24597d4bb80df6d343f1d1e6f06f","name":"io-ts-extra","dist-tags":{"master":"0.5.2-master-2020-03-06-00-05-12.1","latest":"0.11.6"},"versions":{"0.3.1-master-2020-03-02-22-01-34.76":{"name":"io-ts-extra","version":"0.3.1-master-2020-03-02-22-01-34.76","repository":{"type":"git","url":"git+https://github.com/mmkal/js.git"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.3.2-master-2020-03-02-22-01-34.76+0afdd45"},"gitHead":"0afdd459e1dc89c2c39f56dcebf2ecdabb5df123","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/js/issues"},"homepage":"https://github.com/mmkal/js#readme","_id":"io-ts-extra@0.3.1-master-2020-03-02-22-01-34.76","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-9lIjXc+92vGsBNHhN6KgP+eJNAgVn69qaM+QAtre+6cVgQm687q2cKYZ+WI3hki3MaOTWVga7jN1Y8DWd6dYJg==","shasum":"396be9605010ed12bf2c0cea9fc324bcf570f1ff","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.3.1-master-2020-03-02-22-01-34.76.tgz","fileCount":47,"unpackedSize":281683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXcjYCRA9TVsSAnZWagAATtoP/RPQGJ7OV7xQK52VEYsi\nOqSGxaQUUWOuoFQIeUP/pBrp8OrQIj+BKUOrKILCEI4ffHpiqrOrcFFrMvsb\nxCPd8Lz03X1pjqGtNtE9yvdf2F+KMoYwf8p108Q6EDL7nXLX731DXrsiVVQ/\n/gl7nb1f4gVxYAi5fnO7MUqZij7JhRkh0VD3NOWnm1tHC05rcSFObK1p8a0z\nxAmNF6A2S8NrDu3lLEHdG5XYsOOJbQQXzWjq8nKg3ElfBLIyDDCbuPE4ksE2\nueTRIk4ehrBMRKc5X7cawemnBpNmXNFZr8HEhFUg9QCTL3IBphIqmedazMqp\nDfJlXtYvSmF/E4y6eG9NSShcnpk6ZZmVrPp4Oq03UcwICAzbXuU2slVcVIvf\nNTqLThJunVi4sH/78K+KGwstPvLxuXAzhH4Iabrk/fhWuthBB2UvbcI1A7qn\nfglmV3yOp8hPzl4JT46rDzvdJm2JeBCiQBgw/4x5TkwDPy1IijBbhvaZWnj5\nrcvYFcoxZRr1KeppU/YtgKXsz1GEJTkCRLCpPeXSafKIe9OZ9riJm3IRyrUv\nIxzFVua3SGFkzkVy/+5KDhxdokCE4nJSk77Uxx7FGmB2/54iHF+qgI++jOCJ\nejDb0aqxrdW9c3mNc+w1qAoy05KTKYPz1L7YKTN8JsM19doo0N+5B0zFnsir\n+fNk\r\n=p3le\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4E32VBPRsFNBcQeMFgbG7YMQm/6KHKPZkvldg7kk/FAiEAy+y5UldNyH2VUbo8ZKKSyyGSEWMwzJ1EwI3czqkXjBg="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.3.1-master-2020-03-02-22-01-34.76_1583204567852_0.09907689563086342"},"_hasShrinkwrap":false},"0.3.1-master-2020-03-02-22-57-03.79":{"name":"io-ts-extra","version":"0.3.1-master-2020-03-02-22-57-03.79","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.3.2-master-2020-03-02-22-57-03.79+87ab11f"},"gitHead":"87ab11fc2d22f7b105be15a6d918c1da38920a8f","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expensive of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Usage\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.string, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.3.1-master-2020-03-02-22-57-03.79","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-35Gh6LeXfuw7mI7NxxzrEibnh5vDAsU2rDVK5DlPJhOLv6wg9OLNn2qXlQdfFVA1E2jW/t9Jk9Obfk8u2IRoKg==","shasum":"8f5bb759cc9a493e9ec97e8c2fb896e2e6755766","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.3.1-master-2020-03-02-22-57-03.79.tgz","fileCount":47,"unpackedSize":281795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXdX8CRA9TVsSAnZWagAAS+EP/jIAfQT4YGIBTLVf0axW\n6Og2EfGrcy/+sRkcHWIdf11QkS1rDTwGRfw0B/vDKxnrvRSSNeRw7vuM17hG\n75jEkDWGCl/wZhPPS2A6AVCReend40zRcx8B0cucwf3OdL0X0SeIO1tKuUbc\n0utEIOSFY1dAe0Oxvv1quXYeJdJ3ekwpu7Yk2Q8bB+uoDruoqKmQcT5eJOcc\nGUwvbM4J/Tw71w2CCaSfTeRrGzUvpOj/SJSCnqJLqs5zYNKYXjQLyK5/5Wj/\naWKa7ekkIhy8UlmuNBThu1PQrzHz4iSen6/9/dnCH8yxGh4+CEqicu+4aN+Y\npY/nmQpkaWRMFMkX5sbQEGJ+R3Eara81ahtjnLEuyzAp4TkT+umXBS+QCVMb\nUeNHDIDFq/P92yeDZgyI1+KZc2Ljc+dxOLf2Ok1PGdIpv6ZmFGRrOZ5LjaJm\ngR5LnTc9vKpHFDdet+lZR9EL1t/lRDIEaRMfq6yaBPhvgJp4q0mKhh4a395o\nYucKFRf8ofUhG6Hl9FQ26LQZubgOan7/MUsy7ZdonI57XDNyJcVph+xDsySz\n3URj8Eyj49nJh4S2f0/uDJTFMgGyb0qRSIlvAiwPeZ15IhvwDDiNu+EA2fee\nu5q34e1WN72god550dGCECTczqUEfnTAKX4kywcHq3G+FIODIFUkev/Vd+b3\n9eCI\r\n=msSN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGByybQsICbg6zUm7wZ4d1VEu+3KylO4FjKjo8/kzJ8bAiEA2425GKAmxNM/U+vfbZIxR5Vf8cwhG3YVtnKjjRmvMFk="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.3.1-master-2020-03-02-22-57-03.79_1583207931809_0.5471080109547268"},"_hasShrinkwrap":false},"0.3.0":{"name":"io-ts-extra","version":"0.3.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.3.1"},"gitHead":"969fb8a8a7d41be358fd3dc0e14068d4de7ae310","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.3.0","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.13.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-o5MdZrPWWGyDc7Wuy996ysmM/3ijXi9hk29ClKi/MXy613hkjdzVHqhauqF9cBVJKr7EhWluM1srn0TNNJUIJw==","shasum":"8f0090a03dce68eb824c661405963495af11343d","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.3.0.tgz","fileCount":18,"unpackedSize":51568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXdd1CRA9TVsSAnZWagAAeLoP/jG4prePSdGTnQOOfaTG\newHDOGESN4wqjVQiCrn6Q7f/hwZVDmJfEc16cUj+bx/QmcZdaz4ZKh34BqrG\n8c/GHSB7vsavV3S7BYz+DctT4ZFC7IiXuJtHKmUeIGtCZ6Sv1ejfM/SK4lWJ\nut5LRtQfQ/90cK33qePzliub7dbw2yzvFqbwuizVuqK7cyNjsZ2Hk2UtDjJH\n2fN8R523C1OESBppCO5PQsrEjcFjZeiWyrwJBVgjhBF5udhJIz7fsDeZOEYT\nb/5j3fe0NHIPUBpMBoeIUwmmDGrLgbMDKnDGJQIXp5TPoHrixg6ANSu5IBU8\nFk41FyDsJte3UyS3Hw0FzKB3Nc/V86ZH+SgDrkInk8pUnXNygMcLau9vorwh\nG5C9Bk1OEsYLvyZdS6dRyDsekxJ3MvKlOz/kJIqkayDUtYJRH0HfxuzlUlYv\nFt2H4dXUpGz8/thXfwMv7e9SSWwWPWhXfha0lnEjvfEs7Rwwyv4j/JSzL8XW\n/2ycgSc+hH7lGuq2RhrkoJI5bo7b+NESkTBR4RwPHSsGUNUGvxq349d1DuTE\nC/jQJbPHYmvfuNRieY13a1MGmULjQQpClskbOAGlfHlF6YFK68Anbz4TC8Qu\nKEltkQHrjYIf02ddZ2iycg/R5npuNpZkLs5oa+hWr91QlEngpzdG4qpNwFtL\n8Y9L\r\n=qKtW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID3CEiYBcAbVN+Lssm7zYxu+scLz8bTUiH7zvwdMi0jDAiB9oyZK+LZu7b+45G34h5Zt3I5si/lQoasDBk/ZKfIVGQ=="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.3.0_1583208308689_0.9651733822549076"},"_hasShrinkwrap":false},"0.3.1-master-2020-03-02-23-07-22.81":{"name":"io-ts-extra","version":"0.3.1-master-2020-03-02-23-07-22.81","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.3.1"},"gitHead":"feeb802f7fec304426bd2eec708975b36f05344d","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Usage\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.string, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.3.1-master-2020-03-02-23-07-22.81","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-RAT3y97is3yrOlJ1dNHGiJwLZ/h88fYQ4wCoustV+Pbe9Toyf6cHzKZdd3vi3lmnnuTS4yuvDMreYRRzULJfRg==","shasum":"197c86ef48c34a15505bce56efa9ad506e7c6042","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.3.1-master-2020-03-02-23-07-22.81.tgz","fileCount":47,"unpackedSize":281755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXdoRCRA9TVsSAnZWagAA8eAP/RqtMMNqyoIs+ZZpo4s3\nHUnpIjFdgskxV5dhC/2Mj5U++u1rpNei8dnqQkPA6dfmVmqVmNOhfbHG3YH0\npS53R3xE51HG6sXURbkOLMrd30Ga8r7RaZzHGAalWF3cePw0JCgCcy8ZGG/W\ntt/T48C6kaXq6zlj9Wrc1x7XMGOakpXtQJUHijeJPXETfOXbNTEuGYQ8cH6O\nXXHDxVMx9s7Qukf7Om2LusefBFuhCZLQ5hKkXKo17E1m8JIPaTF2ruWjHeUH\nj/pDaAcYSr1PmtY73h+3TLYhh435oUdh6nhLqi1iEUpu8grc+gJnEOVZYGZU\n2WuHpDpZFxSGDEuvwjFhIaiqxVUe0G3mpOqiy4ufsAlzoAzIo/iubtebzOXO\n0WcG4uQQWX0SdKP9pwT6Qq9sV/Nf4P0GEKhK5pOCXBPt5+KlLV4bxwbjjmiG\n2dIG0vjPaUtRx0IwK6KymgvxUClGj7vMnl20mZQhWbqSO9SxwX7q3ppc2g2j\nELkmdgm0SIutgvyGbBPBWn0gcCArYXcN1rgOvi3FWMIYjs0YYJs+XfQL75hm\n6jyswSlS0MS7E0pyl+L73JXjKfYCqupIX41/7SafsfGiSYe2+JLsuuqLkpRh\nU1dWdnXpvEe0z/fL2v5FEWvRn3P3x/6Go0i3jq8/O9d11RgmRuhXnfQqnLHf\n/KzW\r\n=FCcS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8TxcJIspALTU9n/dXXEkCWG0fh6wcaQqvH+a8ErF4VAIgevDrACp/o0InDugKhiS3PJWWDEqqnegJI2SDbUSCNxI="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.3.1-master-2020-03-02-23-07-22.81_1583208976685_0.8629785599196307"},"_hasShrinkwrap":false},"0.3.1-master-2020-03-04-23-09-46.84":{"name":"io-ts-extra","version":"0.3.1-master-2020-03-04-23-09-46.84","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.3.1"},"gitHead":"1c1c165a35e0ad6981cf1e4b755bcc70704379dd","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Usage\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.string, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.3.1-master-2020-03-04-23-09-46.84","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-ZPz2gUDfh/ykzT1tEYx/1XGm0UkNNC5AQ5eSI0g8HbWUNIeVH6BQqCwNhWKE/T7PqJV+GoxDmWssToaQYrJ5Sw==","shasum":"1a6c3a0d556559d170a5722d2b5f3050b9760751","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.3.1-master-2020-03-04-23-09-46.84.tgz","fileCount":48,"unpackedSize":285074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYHvSCRA9TVsSAnZWagAA8+QP/RqRmc/h8Ue0TEnzM7xp\nLOeRi5nC1KXcUMBIYZu2IGcnieb/nYDwcprRrktIbtO9l5swcF6Jq0/jtntv\nlY3pLa+n//P4neN0eEu7iI87c2SmGaw70xSkQx46F7szQkUFZyt0deVt7J1h\nkk7VJs11eHtaiARxF+P+i6hFklUQtE9hn3gf326NSOmUz7Rh0gry4y2q/wET\nQxQ1uqaivCx9+51EEA3R2RrHNC+qIWNAJx0VPLiJaRfGrPU8Kk7CDzHm7ROr\nUyDprPFqYBtSwM5pHZsLOFlEINcf9Zpu9zv855Ilbk3aksuyn9K3782jt6Hs\nONx+cK2JiL0UgiX3JKKwQkS8ZnR68M8i+1uHbAkPbqy/fmayB6p/2i6L4CG5\nV+y+36bMhFoMCWkz2tUaiMHs9klVkUbUZEltrrdI5tpQqqEJgthvOaSW1JBG\nWpNIEcTQ9dIPsGV9lSBM9I5QCEoBjH52I/S56Or4ZbSx1uiJcURvoyhLej0z\nWvpceCmisFSO2XRmYl//YuiA7WiaC9OQDmX6iSRdqodi5t0IwvXQ6vsDWjW6\nlSRh+xUbHIij3XF5SBsvltuo+wVQzEnHzJSlEo8h475kf/wz7W8W20lG/5Nh\nvGahyTGOCdAkBQmdhqSflmJ5Gezr57etEmKZ6lJ+EadWYM/CovnPs3R6lew8\n2Dgg\r\n=ExDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQEsBKxNGs7h1Sdf17TBTvxuWu4tSGJCeltFBZ8ULqNwIhAOVitoucTPfAt36VSCOLGgq1ZW6yMsE2Z0QIkigb7Xxu"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.3.1-master-2020-03-04-23-09-46.84_1583381458170_0.9225738507136352"},"_hasShrinkwrap":false},"0.4.0":{"name":"io-ts-extra","version":"0.4.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"bd5431fcfc6f9a06037edeccd8a3055bc73f966b","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.4.0","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-iXbsV8VF7eNA5uDBJm2aVCt3GC7nXi0zl9Cm10ryngYITvyug/OLUJhAqPYeuBvtZ+5PuuKTbAkCcBYd8a8dqQ==","shasum":"dbbe87ad5d1ab6c326ddde4022f55069fd778154","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.4.0.tgz","fileCount":48,"unpackedSize":289464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYI2OCRA9TVsSAnZWagAAyVMQAIvxhbpeyI/EU4VZVA8I\nJFNcAYgBRr2m0LROPSYID8dCo1uxJMwy/DdUPHTI3yLQZbgozG9cTUPlIaww\nHVGkMGIBOdfSlkwLClW/jJE5dBwEdXQoLfODAT+rs4JfVaNDy8YUTuYSJpG6\nmxLT/k5FWkKietbbuFVoh11Zpf+3x1ssCMtMiqDJLLSfn1j6iw4pvlLA6uew\n5TwSks9iGciSB4VJctxjCFgl5ldldqA+LcDNkfuoh8dPx9nSrLTb0q7inR2v\nlk8js9u9rtkL3iFkEyw2bxvM8kqUHdfjLKTtXecqjSJzwd4har1RZPWgDduk\nZRJPXbSdcXsdq/2y0TXBxJNQSeZtkGa2PWPaU9vBZYp/G80gzt94i2lT/g7q\nypfRGt5HWJ8YB5JNSY/efoxNfXcJpQaYpen0yExzijyUUDoXP/MNT/2YG+Ru\nvALIUSrYbIZS06hu3ii+2DQz4PGPtRTcHnGkGwpevAKNTBPxjDWKZmEgAN2O\nJGY+BMPeU3lrf+0duxp1gTmlcv4Bz5LM5EqceOcSO+rzw0ursUKi161kTyhn\nodqabNDbf42pwKykbJ+tWL7L7YG4XJ3lGAJjVpPnOsCJCg6GgMB6zmyLclz6\nybFWTsNklN6zM1vpVnZU8oJYLyLxWPrUVmcz3bcIisZIwEVdYFpr2+E+MAIQ\nJIPH\r\n=8m+a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGtitiBLpR3fzQYBno0DTahyEsducIHA0omUM0jBGG2QIhAKtrkGFsIoFJKUeBgWzDdbZ3R3KGJirRTg1R580tlPCw"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.4.0_1583385997972_0.6274910494088091"},"_hasShrinkwrap":false},"0.4.1-master-2020-03-05-00-41-37.1":{"name":"io-ts-extra","version":"0.4.1-master-2020-03-05-00-41-37.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"1dba940a91bbeb7a0147462396b028e65d964add","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Contents\n<!-- codegen:start {preset: md-toc} -->\n- [io-ts-extra](#io-ts-extra)\n   - [Contents](#Contents)\n   - [Motivation](#Motivation)\n      - [Comparison with io-ts](#Comparison-with-io-ts)\n      - [Comparison with io-ts-types](#Comparison-with-io-ts-types)\n   - [Usage](#Usage)\n      - [Codecs/Combinators](#CodecsCombinators)\n         - [sparseType](#sparseType)\n            - [Example](#Example)\n            - [Params](#Params)\n            - [Returns](#Returns)\n         - [optional](#optional)\n         - [mapper](#mapper)\n            - [Example](#Example-1)\n            - [Params](#Params-1)\n         - [parser](#parser)\n            - [Example](#Example-2)\n            - [Params](#Params-2)\n         - [refinement](#refinement)\n         - [validationErrors](#validationErrors)\n            - [Params](#Params-3)\n         - [regex](#regex)\n            - [Example](#Example-3)\n      - [Pattern matching](#Pattern-matching)\n         - [match](#match)\n            - [Example](#Example-4)\n            - [Example](#Example-5)\n            - [Params](#Params-4)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Usage\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.string, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.4.1-master-2020-03-05-00-41-37.1","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-QPJPX3tvEBn9Ls3DXmCk6Y2Rpo+kE9/3EL3K1EiH1aGRYQuIhoRzJQSDtv8n4y6hN137b/a8s7b6sbDtZAR4EQ==","shasum":"d445900abac2b05016ca4420641b8329b260b144","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.4.1-master-2020-03-05-00-41-37.1.tgz","fileCount":48,"unpackedSize":287497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYJFmCRA9TVsSAnZWagAAdmkP/A3aAxhQaqQR+4AI3BQA\ngeF0t7hFM0xvS37aZNPdTP2zODxUWjtDH2qSWvo/w5S+KTikQvmINrcdZNWX\nGhL486NpjZZkOMsu/6woHsis/YIVgqr4nxX7m5ulNwoMJtLSR784eUY9DtkJ\nbh3l/tquccFjvLvKRT1r7214FZhvP0jjOIR9otvzKNcR8uq0LNpblUJf6btT\nh4YbgyjzOaMZlYSHRzGdX+OjR/G1myL0RFW37y7Q+pF1xP4TcvKGYybIv5wy\nvLsWDYFN9ZcBRWlaQBcRN0squRP8mwDKkGVcJh0XM2lQCLqpleeXKxaseNv7\nXBhvN8wrl/4Crg+gRwuwq7LhHrUCmLD2Tfxe+oRqp9m9z9nUCSKp6RNhtSkU\nzPTPdMcmM8qqDuXobiEAHCA7+XgOo3JM0fEztOXgqzoKB0BgZz/Vak4nPlSI\n3KzfYFMzaKWnmgar59x6BYPi5DJ/ib5O7ww0QOHKJgN/2F+qX5ZBvEHfwtyo\nSMjJMbsrmrmU53qWndlztNRNvRlzkt+VcnBkqzeYSPWSnfBrntZUEH6gQYoS\nvRXKxiaeBhRztkwwmPX+UoKmxOnosQkrJaBzckUVCm5I3fRk7FJhULyHbd8j\nnbJirXZjtjt2Ez36n+Xn9xaDWW8sCy1MPZWJ3riqk+TxZXTr05MuimGB07sU\nNcxu\r\n=YDEt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0XNlxdLnkAjEIYQWb3GjPZS9I3FsYHLqA3iGSKjHEoAiEAk/Sb5tZTfPG7JMzk9IAPNTHrpkPtmZD87IsrjECR80Q="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.4.1-master-2020-03-05-00-41-37.1_1583386981932_0.3810365321090625"},"_hasShrinkwrap":false},"0.4.1-master-2020-03-05-00-56-58.2":{"name":"io-ts-extra","version":"0.4.1-master-2020-03-05-00-56-58.2","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"3179e4b847df7ee0c58577f380bd8d2802c72b31","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Features\n\n* Pattern matching\n* Optional properties\n* Advanced refinement types\n* Regex types\n* Parser helpers\n\n## Contents\n<!-- codegen:start {preset: md-toc, minDepth: 2, maxDepth: 5} -->\n- [Features](#Features)\n- [Contents](#Contents)\n- [Motivation](#Motivation)\n   - [Comparison with io-ts](#Comparison-with-io-ts)\n   - [Comparison with io-ts-types](#Comparison-with-io-ts-types)\n- [Documentation](#Documentation)\n   - [Pattern matching](#Pattern-matching)\n      - [match](#match)\n      - [matcher](#matcher)\n   - [Codecs/Combinators](#CodecsCombinators)\n      - [sparseType](#sparseType)\n      - [optional](#optional)\n      - [mapper](#mapper)\n      - [parser](#parser)\n      - [refinement](#refinement)\n      - [validationErrors](#validationErrors)\n      - [regex](#regex)\n      - [instanceOf](#instanceOf)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Documentation\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: matcher} -->\n#### [matcher](./src/match.ts#L145)\n\nLike\n\n##### Example\n\n```typescript\nconst Email = t.interface({sender: t.string, subject: t.string, body: t.string})\nconst SMS = t.interface({from: t.string, content: t.string})\nconst Message = t.union([Email, SMS])\ntype Message = typeof Message._A\n\nconst content = matcher<MessageType>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get({from: '123', content: 'hello'})\n\nexpect(content).toEqual('hello')\n```\n\nThe function returned by `.get` is stateless and has no `this` context, you can store it in a variable and pass it around:\n\n##### Example\n\n```typescript\nconst getContent = matcher<Message>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get\n\nconst allMessages: Message[] = getAllMessages();\nconst contents = allMessages.map(getContent);\n```\n<!-- codegen:end -->\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.string, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: instanceOf} -->\n#### [instanceOf](./src/combinators.ts#L84)\n\nValidates that a value is an instance of a class using the `instanceof` operator\n\n##### Example\n\n```typescript\nconst DateType = instanceOf(Date)\nDateType.is(new Date())  // right(Date(...))\nDateType.is('abc')       // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.4.1-master-2020-03-05-00-56-58.2","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-cqwXokcNdIJHxhHMdbrvWqR2ZxCAfIqZydtGg56kAffO9UsqhwcDxNfjlpg+tMCCUClDKZZ6G8gGfSPip0+Obg==","shasum":"dff1292a4cdaa4a9f148993bf8ab4690bad1e985","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.4.1-master-2020-03-05-00-56-58.2.tgz","fileCount":48,"unpackedSize":288599,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYJUQCRA9TVsSAnZWagAAxxcP/2CccZNwK1lkgvWcpx2w\n6oR0cNdmUWqp8zOD9k8wXWiclDOhmRFTLIdXubhXC9coX0SU9zk7u4jmjLI9\n+GuO+s8q6XHS94+Dasx0CdnciJy7L8k+q5pYHXshqlo6Syp1vJ22X1OUb8wQ\nj9zJOzbggdXh/KwxxAYW1B1YFeuNmR/x6VGRXuatruWIZ1jMYGB7wj6KLZuc\nyjc4WNp7nBR0rmyQ/FYzhq0n4pnAttVCBrnP70Vg1DStEkhCImHbu+qS2p9z\n5xkOm5PGq7/JuVKIyNFOFoWuxjk97hbL8AL8cD+wKR6Fmk0/Lipn15ojKe6g\nDQByTOSwSAdO1yAEuLbHNpTl0CUUGwONJQxqHg0MOXzBLBW2EqJOK+splDfQ\nMXNIcaRwDBbcrNQf1MvUVx9vV9jVpOUpnQ2g2Y0RzOST383joXpCuXE6ZkHv\nWvY6gZ/2t1ZCDypcR6lHNkoGGJW7vZb35mC23bNP62fmskMUe1WN8k+ao3JD\nefBkypyKEnbgiLiN4I3sAvEnkyislKX+wN3XCRxDXUzNiicYm3cexrIJNx2v\nV0dunyaoJ1IIfhAx8g87R8raqKfVY7YKUuwAERVnDR7IhMIz5oC/XFnvBSIY\n5IJTMchk5LQL+MRRcRYVYmUWrodjSUrsW5T5D6IWAYRnpb+I0le/v7odWvFV\ny24d\r\n=+Pnv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdWHJWf5RE0QtH2tG4mQASmN+z582di8XLDL459iqmFAiAcBV4TohpOzBb/5EJhRp/GnJRmUn6DAu++SC2FJ4RX4Q=="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.4.1-master-2020-03-05-00-56-58.2_1583387920397_0.6468577873016328"},"_hasShrinkwrap":false},"0.4.1-master-2020-03-05-09-34-01.5":{"name":"io-ts-extra","version":"0.4.1-master-2020-03-05-09-34-01.5","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"7e63d6831adf147dd0858e15ac059e2f1c73d896","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Features\n\n* Pattern matching\n* Optional properties\n* Advanced refinement types\n* Regex types\n* Parser helpers\n\n## Contents\n<!-- codegen:start {preset: md-toc, minDepth: 2, maxDepth: 5} -->\n- [Features](#Features)\n- [Contents](#Contents)\n- [Motivation](#Motivation)\n   - [Comparison with io-ts](#Comparison-with-io-ts)\n   - [Comparison with io-ts-types](#Comparison-with-io-ts-types)\n- [Documentation](#Documentation)\n   - [Pattern matching](#Pattern-matching)\n      - [match](#match)\n      - [matcher](#matcher)\n   - [Codecs/Combinators](#CodecsCombinators)\n      - [sparseType](#sparseType)\n      - [optional](#optional)\n      - [mapper](#mapper)\n      - [parser](#parser)\n      - [refinement](#refinement)\n      - [validationErrors](#validationErrors)\n      - [regex](#regex)\n      - [instanceOf](#instanceOf)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Documentation\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: matcher} -->\n#### [matcher](./src/match.ts#L145)\n\nLike @see match but no object is passed in when constructing the case statements. Instead `.get` is a function into which a value should be passed.\n\n##### Example\n\n```typescript\nconst Email = t.type({sender: t.string, subject: t.string, body: t.string})\nconst SMS = t.type({from: t.string, content: t.string})\nconst Message = t.union([Email, SMS])\ntype Message = typeof Message._A\n\nconst content = matcher<MessageType>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get({from: '123', content: 'hello'})\n\nexpect(content).toEqual('hello')\n```\n\nThe function returned by `.get` is stateless and has no `this` context, you can store it in a variable and pass it around:\n\n##### Example\n\n```typescript\nconst getContent = matcher<Message>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get\n\nconst allMessages: Message[] = getAllMessages();\nconst contents = allMessages.map(getContent);\n```\n<!-- codegen:end -->\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.Int, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: instanceOf} -->\n#### [instanceOf](./src/combinators.ts#L84)\n\nValidates that a value is an instance of a class using the `instanceof` operator\n\n##### Example\n\n```typescript\nconst DateType = instanceOf(Date)\nDateType.is(new Date())  // right(Date(...))\nDateType.is('abc')       // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.4.1-master-2020-03-05-09-34-01.5","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-lgJPmPfRbwN6apPXSJ6yV2HpvKCO+bhW5aOjlHVyaJsVdT8WpGtR6hQRZWRXY2W5u1sOVkHePxHiuHpZEJoxSw==","shasum":"a79070bbeb201ca5b8a7e80f067ab91d5886681f","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.4.1-master-2020-03-05-09-34-01.5.tgz","fileCount":48,"unpackedSize":288655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYQ4qCRA9TVsSAnZWagAAzMAQAJmfj9AgkFx7A3k0Vlf0\nLL8n0JEiUf4bvLINV3EY8uUB/6kVp8JcBbr4HTVJzZ6JlY3yBLcWL77PuDXi\nmlUSdPoZoxh1pwfOFE7zWGpECk2eh00JfS4dhjY4afat08nSxcdWbStFLdFB\nDJbYQErWVk34TpyNoWdWsdaAcc7IwTQb44SYwHivihxqEYy6hPB1Ov/Gksk4\nogKQlBG37ltkuBz5Idrh07azg5s0188A/VrCaa7I3E4dHEX1ocZ9M8+HkeDe\n50LwvZVUcz6pPsLM7a//7m6HKEzEbtxfVvwEwGpfCasmKoWXPS+foClakqdz\nWWd1UL3U5IsSSarwyVHtentOmokdVY02wW64qst6D8PIS4JqEGV8TLe1z6lg\nertOkHbeOQKWJ9RSbfdptK+UWd4T6t2ZTMRmEbEEPC9pygDwIRoZ/yZYpwVA\nq2+dX23eMQraaSMN6SIG9BpU8Z6BB/ITr/GCIjqfV0tU6LxhcitwsAAuRF1V\npKVcXl7D89xi6Sza1cb5QLPIxuMwWYSTplYkmO0/0AfRQS141b9/G/H3K7Bf\n0CLgSiS/GUYggUQXjznODFSAOjM2GOlehI2xzR0cwTNE5vYSi30zK7sqXozv\n22xrEcSMnjgjCs0PHZc/MGLaqXA6SSem2s58VZu5zPCkdVC5RjMA1cXFJtf0\nfj90\r\n=P2wN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHF6EIY5bhuRZTuYBDSovzbf27Ya8rcFMtgT4Al0tpuzAiEAztzIitfa/gYspwwMbxxrJA+75r3Wn/55ueAOhzSQ7yE="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.4.1-master-2020-03-05-09-34-01.5_1583418921813_0.5613361328059088"},"_hasShrinkwrap":false},"0.5.0":{"name":"io-ts-extra","version":"0.5.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"a4cb0315a1a12167e2293219c75a10db1e56cea0","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.0","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-we98gPemCd8FY79E4P485atcZH+V15AH9lB+31oFxhsd48XPRByipr85EDnabkdkqYFPH6riiaIELsTMj6efKw==","shasum":"ad5d8f869571ffc23d9199adfeee49b8f6be9f3b","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.0.tgz","fileCount":48,"unpackedSize":291087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYQ74CRA9TVsSAnZWagAAY6MP/0tcASer41mIJL5Hs6pO\nI0RcfxDTBAHH8FwrtadnB0+crBKfUZL8RLaz6y4CB6I7ijED8UsLoOHmznoa\nAgLPRBbor4thOIYK1pp5/YdRwLUUWMqsKMBRs+K2i1nfuGGqbN9ahL1cNiQI\n+cewdy73/gmPnhtySquMb//3WmRov+0Lg2yOcp8cQqsqm3/Z3pJ+a8oQhw2b\nNdryk+On81BawldkmngPb6BBWf3pfEkAvK+bBiiUJG6bgp3I0ZKI5mu0sqaA\nlar25DobdJHOFrezHlbKyhZ/x7OR2K+v8uczCpAdJMcSGRaswx8PNrPow70x\nokRpddoiEwD6IOE5j+MHZYNL5KlZCAxtXnu4Vdwaf6bSX1gYitGvCZZJ4nhu\nkhBRYK+cQbkiUtaCGtDmWz+9J2bcWFwIhO6dQu/EZ+hPkfYWiTmgPax/j2BL\nIHE9swGaeboqmDV4n0SeziQsVs8fXU48oGSH4cOruvgaw+qSEvVOjXpW7uJ6\nGshDtkzX0v1zTDUsknjVdx4fZS8sxDZNzwh71K3yj98leS35/hM8z7wPgLjL\nUbqFnuRVZ9cetPPdu/lPUT67aVIeh0ZtALDU+YniYP7mc+K+MmYE6Xrxzoch\nC4N8kTjMwsQM5B+uoOk8XT8xACgx8o3g3w2dC5ALcVQIXDC+kVYVDNLDbfs2\nbk7J\r\n=IxNz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGvBHFGTSjRSidy6SUc62qCILnfGxtZfELPcVv+4WT+QIgMqSLZTxoSA91fSEqEpUA+uzl20Wit8xwyPrWu5HXOoU="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.0_1583419128181_0.21869964050421165"},"_hasShrinkwrap":false},"0.5.1":{"name":"io-ts-extra","version":"0.5.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"65787c0f171b87516d55de987ea52454c54d9187","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.1","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-x1JvdWErpq+HoUPIM2sKcUrQlFXvJheR8Ak7IXSg1zJYvvMAWXSzrfyBnerqy9NazAYJEme0IJqsmmFqOcY7HQ==","shasum":"b87de9b35aaefbcd7abd37dbd3d651b42cb0d688","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.1.tgz","fileCount":48,"unpackedSize":291244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYQ/aCRA9TVsSAnZWagAAz04QAJADkhLsg4hQaHpZInCj\nJokdETcyyi06fsVIG8BS1Zidb99YTlZzHYnRsvXsDS//bXGVfrKlqTruHj7H\ni9laAsUPj51lNEujF5qlE0oJoLoNwQ5+3szhlIBDJCMyfePemfk1+jjoeUfV\nOFqQqpjuWXICrCXhlPZ3OvZf8AkWZkw4TfBpycfQtXVORS4e+IVCv/uRYOHE\nsaQ4j3kEcfqSODAlQ/P9pyRFnA7LEe56EhuPmygLvjIBvCEPjQfkbvNdeHFs\nqsLxMH+lxQb/b4MkN8fZMmpzfbxVcSl9lZP2tGpOjkuQQg8gqdTj3FSOmMKT\nQGCpihURyRlS2nMtut6P8EdFW3Vxb8PDMpctsq98FkJuX4zW0FAniv+yPp4Y\nvQijxkZUtWtuwAOc1K8W+j1Wk3ATkDvbldmlgD0vwrVyOoRqsbO95K2vKZjo\n/HaKklw77by2DtP1LbOgLfau/DJw9Fbu2PUTxWvUXRJRslVr8KWIAZHqAs8q\nFIlvey2hnf2wUUELSfqR1ikQT8nqKa6+YO0kWsUjS8VKJ0dnulI0Z+dpsGjt\nKNXFLAWBPMD1mwml46SvBT2dgNhLIbmmx7dd62t8MPaeS6klxu/ZLIxcOxvy\nI+WBg3gqhnR8jwCqtQYSonVW3uZg6oxQH2J0Qr0S+Yn/SqUe0pglFosR32BW\nnkm6\r\n=gqMS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEGOkcKpNhjoRNdhbXGXiUQT+QnRz6IyCYleQEAsy5nAiEAvyePLJ90CJa7XXhM+DUYVT5/EJC1DySWsBjSxRQRX1U="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.1_1583419354105_0.29276876469977897"},"_hasShrinkwrap":false},"0.5.1-master-2020-03-05-09-41-41.1":{"name":"io-ts-extra","version":"0.5.1-master-2020-03-05-09-41-41.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.0"},"gitHead":"26035ec666ed50c9a49ac142193be7228c60d221","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Features\n\n* Pattern matching\n* Optional properties\n* Advanced refinement types\n* Regex types\n* Parser helpers\n\n## Contents\n<!-- codegen:start {preset: md-toc, minDepth: 2, maxDepth: 5} -->\n- [Features](#features)\n- [Contents](#contents)\n- [Motivation](#motivation)\n   - [Comparison with io-ts](#comparison-with-io-ts)\n   - [Comparison with io-ts-types](#comparison-with-io-ts-types)\n- [Documentation](#documentation)\n   - [Pattern matching](#pattern-matching)\n      - [match](#match)\n      - [matcher](#matcher)\n   - [Codecs/Combinators](#codecscombinators)\n      - [sparseType](#sparsetype)\n      - [optional](#optional)\n      - [mapper](#mapper)\n      - [parser](#parser)\n      - [refinement](#refinement)\n      - [validationErrors](#validationerrors)\n      - [regex](#regex)\n      - [instanceOf](#instanceof)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Documentation\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: matcher} -->\n#### [matcher](./src/match.ts#L145)\n\nLike @see match but no object is passed in when constructing the case statements. Instead `.get` is a function into which a value should be passed.\n\n##### Example\n\n```typescript\nconst Email = t.type({sender: t.string, subject: t.string, body: t.string})\nconst SMS = t.type({from: t.string, content: t.string})\nconst Message = t.union([Email, SMS])\ntype Message = typeof Message._A\n\nconst content = matcher<MessageType>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get({from: '123', content: 'hello'})\n\nexpect(content).toEqual('hello')\n```\n\nThe function returned by `.get` is stateless and has no `this` context, you can store it in a variable and pass it around:\n\n##### Example\n\n```typescript\nconst getContent = matcher<Message>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get\n\nconst allMessages: Message[] = getAllMessages();\nconst contents = allMessages.map(getContent);\n```\n<!-- codegen:end -->\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.Int, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: instanceOf} -->\n#### [instanceOf](./src/combinators.ts#L84)\n\nValidates that a value is an instance of a class using the `instanceof` operator\n\n##### Example\n\n```typescript\nconst DateType = instanceOf(Date)\nDateType.is(new Date())  // right(Date(...))\nDateType.is('abc')       // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.1-master-2020-03-05-09-41-41.1","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-xjacj6cj0pfafubyL+6uMe+XWpoax/5Pjmju9BFaKE7b2OPeGtjpXGVV4BQDOpAawNSSq2ncxPTytE662yELLA==","shasum":"c54dc6783a81871f53b5a2a19ffa542e82ce734f","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.1-master-2020-03-05-09-41-41.1.tgz","fileCount":48,"unpackedSize":289010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYQ/2CRA9TVsSAnZWagAA2HYP+wTjIOgSXL5aJI5Txkpe\nIlQFX1U3rglFVzmasr+DkUtbR+8diNftyjOIwZVlgVrWYq9xGwX0dfr8wfos\nQDyWlT5+4R1fdmK1xOLS9pOcw/7mhJSGDefQhFvAaM05cKa4u2Hf5C2vZEvX\nU6NQRSBlvf+Zty70Tp7aHdXLZzVVtUVXNuXuJ/uLzOFXQp05aothp0NY75fb\nhyTLBrBL03KRIaKqzriJQTSfnCpPfMTbmebzgUQFom+P0zhSVvTLUAnrkOVm\nJkeNaYumr62hrDDzc4Vh647eEon1EL/ISSiakRdQVqkFCX+edteoWwnUNawt\nvyqY1XCl5liiuETL94w/gl29Hl9stRZydttzjEeXCx65B4Y4fm9IorbUKobl\nj9O5A552rvuoea3qA3c9ERNSZa5MoCuwtJkRcFUTsbrqB7wZntuai1T47t/g\nqm+R9chZ4fPp5wLeJdgKDhun+IQGIAIAICjE7sQvnGVKRLh7yBf8Ef7Cvs4O\n362v1P5R6a/0E7ngT8Df3E0qrhGE49oPl0oH+QuUi1q/UHB2EQdbHwhcKJO1\nqIVGbvqFhek+x0jX4Ys00hAi7QMRV9+53ynO4vRUf6g3nwjeNLxsLml3FP1X\nRoL7lDOYASZJMvFrTNtIjJPWCCe5FWBu90b6kaEglX5NGJ+p2K6xy4OvxKG9\nGdHt\r\n=gRcn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbWH/+GU8DGK2YtbIHbZeFQZzWX6NRSviZpF06fI1C6AiB8DPvUn3Dhw57wdx7TIjKfx8yaAiYqF3TTimNhfy5X+w=="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.1-master-2020-03-05-09-41-41.1_1583419381303_0.36739666955126826"},"_hasShrinkwrap":false},"0.5.2-master-2020-03-06-00-05-12.1":{"name":"io-ts-extra","version":"0.5.2-master-2020-03-06-00-05-12.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.1-master-2020-03-06-00-05-12.11+b7ba300"},"gitHead":"b7ba300cebbe6cf58dd989c404b9a6cfd757e748","readme":"# io-ts-extra\n\nSome codecs and combinators not provided by io-ts or io-ts-types.\n\n## Features\n\n* Pattern matching\n* Optional properties\n* Advanced refinement types\n* Regex types\n* Parser helpers\n\n## Contents\n<!-- codegen:start {preset: md-toc, minDepth: 2, maxDepth: 5} -->\n- [Features](#features)\n- [Contents](#contents)\n- [Motivation](#motivation)\n   - [Comparison with io-ts](#comparison-with-io-ts)\n   - [Comparison with io-ts-types](#comparison-with-io-ts-types)\n- [Documentation](#documentation)\n   - [Pattern matching](#pattern-matching)\n      - [match](#match)\n      - [matcher](#matcher)\n   - [Codecs/Combinators](#codecscombinators)\n      - [sparseType](#sparsetype)\n      - [optional](#optional)\n      - [mapper](#mapper)\n      - [parser](#parser)\n      - [refinement](#refinement)\n      - [validationErrors](#validationerrors)\n      - [regex](#regex)\n      - [instanceOf](#instanceof)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Documentation\n\n### Pattern matching\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: match} -->\n#### [match](./src/match.ts#L115)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using `t.refinement`, the type being refined is not considered as exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description|\n|-|-|\n|obj|the object to be pattern-matched|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/match.ts, export: matcher} -->\n#### [matcher](./src/match.ts#L145)\n\nLike @see match but no object is passed in when constructing the case statements. Instead `.get` is a function into which a value should be passed.\n\n##### Example\n\n```typescript\nconst Email = t.type({sender: t.string, subject: t.string, body: t.string})\nconst SMS = t.type({from: t.string, content: t.string})\nconst Message = t.union([Email, SMS])\ntype Message = typeof Message._A\n\nconst content = matcher<MessageType>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get({from: '123', content: 'hello'})\n\nexpect(content).toEqual('hello')\n```\n\nThe function returned by `.get` is stateless and has no `this` context, you can store it in a variable and pass it around:\n\n##### Example\n\n```typescript\nconst getContent = matcher<Message>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get\n\nconst allMessages: Message[] = getAllMessages();\nconst contents = allMessages.map(getContent);\n```\n<!-- codegen:end -->\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: sparseType} -->\n#### [sparseType](./src/combinators.ts#L38)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: optional} -->\n#### [optional](./src/combinators.ts#L12)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: mapper} -->\n#### [mapper](./src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|from|the expected type of input value|\n|to|the expected type of the decoded value|\n|map|transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/mapper.ts, export: parser} -->\n#### [parser](./src/mapper.ts#L72)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.Int, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name|description|\n|-|-|\n|type|the target type|\n|decode|transform a string into the target type|\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: jsdoc, module: src/refinement.ts, export: refinement} -->\n#### [refinement](./src/refinement.ts#L12)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](./src/reporters.ts#L10)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name|description|\n|-|-|\n|validation|Usually the result of calling `.decode` with an io-ts codec.|\n|typeAlias|io-ts type names can be very verbose. If the type you're using doesn't have a name, you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: regex} -->\n#### [regex](./src/combinators.ts#L101)\n\nA refinement of `t.string` which validates that the input matches a regular expression.\n\n##### Example\n\n```typescript\nconst AllCaps = regex(/^[A-Z]*$/)\nAllCaps.decode('HELLO')  // right('HELLO')\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: jsdoc, module: src/combinators.ts, export: instanceOf} -->\n#### [instanceOf](./src/combinators.ts#L84)\n\nValidates that a value is an instance of a class using the `instanceof` operator\n\n##### Example\n\n```typescript\nconst DateType = instanceOf(Date)\nDateType.is(new Date())  // right(Date(...))\nDateType.is('abc')       // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.2-master-2020-03-06-00-05-12.1","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.18.1/node@v12.16.1+x64 (linux)","dist":{"integrity":"sha512-qjvmPjyikR33nZJ/4Uv8gk2XRdvTZacIcdqWn2gz1pebUUusfcov+5xAI6IKQWRsPBpySd/RFdxTuKWHKRmVqQ==","shasum":"a96ac836a59c11332da4eaa3856bfb6297f5d6a2","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.2-master-2020-03-06-00-05-12.1.tgz","fileCount":48,"unpackedSize":289205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYdpkCRA9TVsSAnZWagAA0QQP/jea5afGWTDmujRmJtl2\nYXmIShkXNRgQyh5JkQm+KlVCrSfPt9uTJR1qHvoSsXyfmxkxHaIE6p3AUdJm\n91PrFEaajXvOtsor5gjedo33nbkOOra7h8XTDBgpJWPIFGKykVMQoD2hdELK\nkmJh+XNBcVIdeShUzvgOswVYAJR6r0xH8CrxQwdRk/rmy59TUsm8NJzYkkBL\n7KxdB2s7KapmyD7ZsmRsHvIJvzl/mKAuW/PKMD3V+OEN5+mhv20L89O8wbRP\nRLtrn3anTAzFWGS975JYbvYm4S1fWOrE31X7doEV1zGZ13elLK8SMIJyzOVn\nLCyRfPrdsNehofHjO2QLoRdnoq4rAbSg4pJsPNd+ViaFJrgiMXwXeltuFJkm\n9Xaotg31PSXYvmSvsSblGQ/tpOA8DzJw8AMPPxhwNc/geDxt7wBmQCH4fVHR\nUsfUZt1uXnRTIjhnu5PiTiO1u8KqCQcNcqWpeAFi/So51k249N4x//Mnjt90\nGtiiJLNuFiQ7YKi+j3gSS0mwNZo4G4kWaDVO2BE9DZUm5opzvL4rSYLT9KvZ\nH8PfyDvTOpoiRQRSQug4PXr9n4FZUpWevVXTUHmwabYwhw1NGjOpU2TwxnkW\ntLyoVatpr1lr6oeC7osAcTeCUpTu79uNNisnh0MN3ldynN2360wg5vUYALiu\nqstN\r\n=Wv/J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB170ZesoE4GUAOVVK6qyN61klsIlaMKs1pnP0uSvM13AiAxbf5Z5SctYp2I+WoFisr0Ultdf4huphekGDA1SD7U2Q=="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.2-master-2020-03-06-00-05-12.1_1583471203975_0.928261194822158"},"_hasShrinkwrap":false},"0.5.2":{"name":"io-ts-extra","version":"0.5.2","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.1"},"gitHead":"7ada63d995dad1d5077e8d60de725381a4ae4f4f","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.2","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-12hP43qriQC8ihWOx3uYvC58o+8oUugNcFpSQIWvb9Ex+ZIsvFPwAhfOpOcfrKjdF3F/U7vXl75tBtbCYrhloA==","shasum":"bc1f980aeb740cc6e200f88a0eb6a50fc74a0fb3","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.2.tgz","fileCount":48,"unpackedSize":291401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYdrPCRA9TVsSAnZWagAAiFQP/R7BFg2Rd9y2ph+zVRjN\noFfBdsmYp9v3wJuAEJ6hEJ7DyBN/Chppmbp/g5TZ0zo04Ew3+NPtwvr5Y2to\n+wL+DwFg6wJnjEtZzEjzK1w97PY3MXjijNm8HlvQRhS5C8fNgJAYdnp7O++u\nMyote2eRgnaEkOumnonhykBqL8pdqMBAbuOA7iHGUXEs6lX58+iDlOWU0Ew/\n60NUFk/HQRWIItNsDeZ0vm7m7UvUbPEgo15jszfE36G8ClASLkSdQ11pbxmm\nEcT5hZaIqaUkIEpwCuVTw3/gctY1obrRSdUsvzlOVAI9tY7xWrQJ4bTSnvoh\n5LtU8pXNI3hqPe+0FxcfJMebMUedybhrGGefNS/MNSuap0iWPnxxig2WUQp1\nBJoYq+zT2goIRu6A2iqEGC0XZFZRdrpf2afIpcPWeeNnAw2PaEQDz/I8riP9\nX0Y4gQSnWme8u9jeeGjcLveigH38UiDx/60WjlZtw4WXbYAEVQWkYpMo8kU0\n2swdweiW7EAdg3bcAuZqJtJVX9e1z6M4AryOGrMy8bE53ZoXcSfBj7g+qg3U\nCltUS/rDxXyw94LbQ1ymNf8y4hjDX/LNC3iv7I2Wsr1fvhYwysTpyy2U1bKJ\nYSk2NobKGKqYxCNwWURt1QR7MSsjrQ6M9n7yTjcX//xgQ67T7/vgNLK03Gia\nC78E\r\n=qDac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxnHIj8EbKjRgzCFRTpjVDbxxb0rVRM3RG6ZRD3e38fgIhAMfRbzqKYb/j3GHFyLFJKKtGxc1REwbpW4o8qYRtcf+O"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.2_1583471310292_0.12334400486436725"},"_hasShrinkwrap":false},"0.5.3":{"name":"io-ts-extra","version":"0.5.3","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.2"},"gitHead":"d9cc762ec6fd4c525d8207d680fbac527b8da7d5","description":"![Node CI](https://github.com/mmkal/ts/workflows/Node%20CI/badge.svg)\r ![codecov](https://codecov.io/gh/mmkal/ts/branch/master/graph/badge.svg)","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.3","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-OIyn2c5MuVMk+qh6xy5Rw/92iYgSezSfSPLYGqdCePL4VBELZVVpSis28ZuX6N+hH/f+X3Q8AHCLiVcV31/riA==","shasum":"d0e3ace99d1411378779d41f3fb7b148e55a95fd","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.3.tgz","fileCount":48,"unpackedSize":291762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeY+kHCRA9TVsSAnZWagAALOYP/3b+FWrUR1Jcog5Jh6/t\nd43lRGr7y1QZsZacibj1gt9M0uR0e7nLBELG/XtMrX+UQ0RRDOl1NQDiDxvE\nRD3BJeCf3YCYAyIYob5hEHuoyOiF9TnaFmBRSYXqkiKVbjHeF5ct+pB2+1Ap\nxXEaKTaHwd5WhZAgIvv1nrDneUplg9KQSUTCu/B3ADhF7h70Ggw/rVe6CsXR\ngN8sVwKJ70zI2OegrINSt25WD8EMWKj+Ds9TGnPDGKHQr8MZxoOo79R+4OHh\nwQo4k7HGVbU7vdTZCCvIscUj0sCkJj1qyLqyIQb6LxvD951dbW9QYZ1O1/A5\ng1cB/CBwrSWY38lz0tazTGfYncm8QnGpQQIHeghlmkTu/uAm1bZzq5ZpIlmP\nqRMg2Ymd70X7Dcs5DyVVCh7OSyZ5OEaDq5kwV2TolW9MSKowR9Vs7lYdlbxE\nZIE37hqFqtExM/YpItbEMO/ecoA0+HTvXpMRlRVwEOgNA8pUYU3JJ3FpiWfX\n2G4YQH9woWEqZx3c4Pqb8AMdg+AsA5fzDKt/4xzuw5PC1uMr275iEnSdxSIf\nRlhgoydEgDVKwraLrRL7LWOpls8Du2NO6Zpo7E5E6W29YNqhW4oynlRlw8D6\nr7pOcbKsKBi7b737ltNGwkf89Op0vp5myygoYISecBD8KxHA+XcwthVjT+o0\nbXq6\r\n=ljux\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCv0bf9WYIIectcLQVJMtBmOlRWlvbe4jaPLw7UXXumqgIhANK/oz/9GTmmKZD16Cgew5PTh9y6uOFfkzUyAc/1lnn/"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.3_1583606022752_0.7148360789189774"},"_hasShrinkwrap":false},"0.5.4":{"name":"io-ts-extra","version":"0.5.4","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.3"},"gitHead":"146e41ba2b242dd629616299132f5c8ef45485c0","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.4","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-Apy2S6KRW2JiZHhSZICAsjwr8R1DGSXSGVsys1ooBR3g8Z7mpTSIl5xyPCynvFMCvqRH6IWw1UC7qSfhOoOREw==","shasum":"c5a005ee27e4561b883cb00626642fd76c510e3f","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.4.tgz","fileCount":48,"unpackedSize":299710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJed7zHCRA9TVsSAnZWagAAa+YP/2dUmm1g90Kx5BWfjEqg\nFUK2BGLm1wGT5WeDj0QoeJRapICaUzsniIzaN9Tel4daHm8+fwrh4hezjC+U\n2Yethrwm/sX4N5QdcO2OIvzLE3cPBX1vw4aGKgpvSTf53Cl5qG82OyRVlaSo\nDCU5XfB2tfY2RZ0G7a2BqVh1z0v9mvTGXUWsC4LOQkrR0ft8D4fUXv2aheJJ\nYSX+8ptOt/+xVcvT8/lqvfUp5qNk913I7D8M6PgavKgsZCO6Ap+PxUj9kFUs\naKdj+d8EDseHtL7aNXQ+U27e+R+N8+raZ7i5icPKmJ/J0eL16E221/pvcmZN\n8C4zLUZ033OxjRHxo5RXHe0ud3Jip0PyNbkPNFJAqfLMBKbEL60ry3yV1hbS\nKQb2DHQU+YWsntrH8/Y+VV72wPKJpy8/t90dQjLGsQAZWY5uNvzVkDx3HC6Z\nUa4U6a0klz8PJ+wUSOcFAhtFmuvaDUA+2nR/QsT4AiE4rR4+QB5mvIfmUY+9\noXcfjbjUNoowgGndwtvgYgbr5uXD8+UOkjj8bL3w6VLyXL5cKm4aFtjeQh0X\nsCoz8KwsbgIxzBBw4bd/ebEP8HCQ3HTeH3T+M+02k28ZL4QSb2YopXpKMHTY\nWfeZtDKb7hx6dVAqFIB+AOVz6n6UdhVsi0uqi/zxXZypbTai5qf7msbQFWPa\nn4/6\r\n=GVZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv6oAVv/r4NevCyDxu9qLbKST2aI1sty0Cg8L0jXLIVAIgDeOreDVfomboC1QaSjDrZTxpaP+VIh1M5B2ZaZS5YIA="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.4_1584905415374_0.2402411744973294"},"_hasShrinkwrap":false},"0.5.5":{"name":"io-ts-extra","version":"0.5.5","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.4"},"gitHead":"c1221c0ed8aa8f0e10155b06f653f3fb97ffcd1c","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.5","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-KRaS8s0TqYXRkCFiwg5+x1rbPYxPunpsTd7Olc207b38dKi2nsV3NFKT/fKhEFRBbsxsbJK4CNUiBdByGH0w/w==","shasum":"89cfe1111fcc62141fbc68e2f5310a7a78ab7864","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.5.tgz","fileCount":48,"unpackedSize":296191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJed77DCRA9TVsSAnZWagAAjdgP/0Tc0cPkbRaMSm3dpM/k\nzl5zBdfQylQ3R1e0qsEizqRtJ12+97RFijSkfLwyGlCP+xQANMh6Sv/6S/2X\nZa3h97BfYaDtGANTDurYyWctMMzzm+07aMEeMkXHX7usZF7exeNfFfjVso04\n9ssoEXgqFz3/ISA5HtsWrf1qb3XUS/iZM0Juyq5CNiD4dhyqpc5QYrm1s4FW\nJX0NWnAGjFRw/2LB9bnw4ro7hKiy0z5SkUZWGFVTHnnF+ACv7iHAL4Y4WMLf\nlnJ/s5w9Xd7uJMzhbnHxXpQuTOR/9nNXwGyYi1uf4dTtxJY5xdkY4xvYZvAS\nvRp48wcHWvhm5/R1/ipNpgqyPNGDNMRAmE6Y/7ETN4VBK7V2IJa2P36e2Jw0\n12D/zYVD0XE8WXzxfDP2oxV6ffUHjbeKxtWEu6XNc48JJkMRAqJxuXo8sDQx\nVscgPDTdwWHZpN47f+VVTsTl+RQBTK7TCNZ1RaIEDAz+5e6ClLAkPdPPmvN7\nZaV8rFfxnTA2AyReJL9qbjlAUYQXmlAyBOpt49gUVeQ+0ZPXaXTx5kPmTwbw\n1OLJTsFl4U92OFn8cdGa8j/N3COWar6ZZ79imjp/ciEK19icmrrORIJ/kNp4\nwlUzE/DmCNvzr1FUbHxEFw7s1yZtH6nnutCHeMelrCVagZ3FU9DZt7pq4Rma\n0GrN\r\n=aG5l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKpM6A6XbvHQR+cE15fr7Xg6PrFiAxOCJaDcmzETqikAIgeEnwVguVanQdFYPnyQpayBa2f67gZSayLnJf21HfEZU="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.5_1584905923202_0.8378623386680135"},"_hasShrinkwrap":false},"0.5.6":{"name":"io-ts-extra","version":"0.5.6","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.5"},"gitHead":"bdd108689be3bbae84a5a147a3ff174e641947aa","description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.6","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-tXzVj/EWwsmudowBRFiXsXEYs0/ocHhR1a5meHQDK1Ma4KOXVnfHZX21krcdzYTQNI4bIw/gGaYSTbrp1g/HUQ==","shasum":"cb64ace93d0902d77c5d6bf9b44d95d4402259a6","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.6.tgz","fileCount":48,"unpackedSize":304222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeehC2CRA9TVsSAnZWagAARBMQAJbOp2zBCQ8CaUwWnZPx\n0wJ6ohCKdC/KaaAslUsbv8bKoPM6Tu3tHTtc469SjOVIMaN6YleqX1YX5HZ/\nqDl9V/v5FM5QDyPGFq3O84gb+i2CLUEe1p+3hMJPW//zGibvkpBvCf7YewFr\nkdxA/RRVkwkNwgPCUA1MwAfZqz9uNZJ1QOYbLQBFQbuddsO1XubxB2091xMh\nDf5Ah84F/VFLRGRyEiisIY6f1uktIsm6ezDTwL12Pr+4QhtSIvjtVnZPsslJ\n7x9fJHaQityhIIpg2TMVA+wyGUWQ1HR67QUr2BZ8DKNduBs7f1NE+AOMaezp\n/DApGQN94vQ5CXkKRLX1fxDiP3p9sIxAAqR1AunsGSFHsGRPWqul6f8sczK0\nDpVP+D01l56CNlZciX1x9eu7FSJCK1Bog1ydTi5Du9dGXnWK4tdj8QvNEY0U\n8S+xwtTSnZPowJjQsAaRft300OudxApF0ZYEPeM79IQmpGX8pV0HDI8bGS9l\nH/BHv+2Q7SjKvf3WEXQeSV60loV8e8N6VJz3xf2F70lEcLvdYzTghnn2beqr\nCE83qqJJCTta5tMeCbULLsbEWQ3K/krTz/3fDivSf7BATrQ2TPqKn00hIP++\ngnClSNaJHjT9oAHXjJrXV++ytRywHBsigUqp9ADUQ4k4Hc4MNLciGka8JKVO\nMvU5\r\n=3xzK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8HCqySGIZB3o7vL2c+9YMuqzH2bd9BUKZLQkCNTdGeAiEAn37PTAaKnPZSQ/BUSRYChUiv0CcXlxgpCWI5PGFN9go="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.6_1585057974324_0.11972370371766261"},"_hasShrinkwrap":false},"0.5.7":{"name":"io-ts-extra","version":"0.5.7","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.4.6"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.7","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-Dh817l87OPEEYqih4GFdCiSqcvzszGrPz6mJlnb8D+P8X1gsg/GAvrF4SoTGXiZeOfI7yw7RjwMj7HtP05abMQ==","shasum":"969dda4cc3463e3583bdc7b0c325122f795facbe","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.7.tgz","fileCount":48,"unpackedSize":306249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegV94CRA9TVsSAnZWagAAuX0P/2F1InRliR0w3abBrdHh\nA3BM3QmX8qCLk9UiElHL5AKMPmMsvryGZeWUdspRFRCOvurJOMUPLC0MDQSi\n1sQtzk6UXywfTmvUfX1CBPDBiPWvSdm7/PI47cDoyL295ShrKBQjwv9nwqeB\nrt6BRUbw3PxzLA1A+V2YijtUtte1bN2RxzYFbPICJxSCVPjOum98AecvZ8ch\nJAfA6R3sAWRjux8P7yRxiZ38eKqQxZ3Wsp2ZQ64i5qUgesMor4wU1OalzVRC\nP7wEKs1CBn0AgEOieZLvOPRehFlBpsgWD0Diaz/N2nht7dJXHXwowqOZwBQK\nnNKyOKdc345I6zEG03p09DGHHM4pRms1yRWMpXmMtO/WmxjdfWMF5GYAOZAV\nxfJOrrVux+cyC3byGteakczY+6B0fnj2VC8+j362q36IbK2kFqUI1fbMeIfo\n71vGqSuCh2dBSwwW5l3jP4i/g3q9jaSvPcGCXpsYhuj7k873+947pJk49Sxx\narKBOExdM+V4qCqi7gTcQW7Tu8xj9xS86Zv77YblXi+D0a8owpaqDt+RSdy/\npdq8EDiDTA+/NrVYnuqLZp8HUejzI3Qu2FysUxflkpvIJ96iwHBTOPDVzhPV\ngiiUxlwTCwRnwcvUaEHQ+6U7PVu/L+lOUiiLQTI/se5ZdGASmMwKKXpQ4ci5\nVSa0\r\n=Wbhn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs4HI25yY+OFSpDIpdqXwH2eV3CWzcpvc6TKWLnwP3KgIhAKuwnHuJoSlMJCR2/LLKzWWOAcAYK7KPpFA6oe/H2A70"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.7_1585536888399_0.9994834500276535"},"_hasShrinkwrap":false},"0.5.8":{"name":"io-ts-extra","version":"0.5.8","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.5.0"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.8","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-jErKBkNbUYMFIepyBMXYdHR47al1v4/VnuQZgNj6JDLvRNNvQkF9e0Fy6VtDQGrEspC9uovXrhCQR+NKazGLbg==","shasum":"3fcda7eeb480b16e874fc295352f56d2b47a3eac","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.8.tgz","fileCount":48,"unpackedSize":306416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeii9ICRA9TVsSAnZWagAATlkP/jveoJOdtwwJQ4iBEIYC\nurIPjTgF76ynosjUmosTUX7DgKEEmup9aQTviD2n/5saTbkL+622VW7NZcOr\nxQx6RU8bv8hXSz8veHp2FwektdZX8+Amf81ngUaFV+mZOKYnqVfqELirJkmw\nNwzqDoaW0EMvQOhCDxFUS/62PJJ9aHi+ecj4aU/ocTtT4+Yif/hwLlXUCqR8\nMGsbAv9W20G+tFZ5RL4cvDDVMc1mLo6kN/s15+Hc3c6gHMDk1y2CD9zQ4Wee\nXHCdDYf2PbYpyoMzhqQwDtwe/o54K6n4+KA9ntRuju6kDiBuis1kg/KoKDR8\nSoGla84daMslImzzm+bv/AQO+AZNB81cd2kHuctLdB+Gt0LnrjMglATreGve\nszuF+IxROQ5z4JKkqX4SWAxIDCPomlsBF1y1fJJRCCwV5t3wKgOLBLwMrPoi\nomXTK/x2ari28j/gQoSbm42NurW16v/z02tRFAH+ldIf/2o65G4djcJH6Z90\nT1InAQRMxDjHkgmY/muedrQozGYTcoa46bOFE9eONRmzOaBPSSWGt/O/2Gyv\nNkG8QtxhbakyObOubabieF8Dw7dxbfzhwlhtGjBTYyUWI2Q3+0Oc1XmZ/AR0\ngOi/TbG7X0uONRo/4z0nqfxZBantZTEyEBkrVe5AhISb/6T+EQSB1fyovqpE\nquZP\r\n=KkI6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDsrrC+pokoi6EAI3KRo3HZve14vLUVJgNoWHt56VbDxAiEAoeAa11eBrTqaVMLODnCBiADwbONKuCN1tjGo7jb20Vo="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.8_1586114376419_0.7770818052662376"},"_hasShrinkwrap":false},"0.5.9":{"name":"io-ts-extra","version":"0.5.9","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"devDependencies":{"expect-type":"0.5.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.9","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-PS5Rq7ysUdd0prgG8GCO5XXk9KkPVo6A2DPi1VM66FEBcSVQdvnqU5wNy+yAQceeZe1Rgzr/4nod2QaskWRf+g==","shasum":"854ae6eb07affceadce69b40c70211895d4b8c5e","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.9.tgz","fileCount":48,"unpackedSize":306573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeijCmCRA9TVsSAnZWagAAm60QAIKRa+6p+T1Z39lY9o4M\n2mto8OB8qN3nIdtDgl86v8HTUGuGI8mRO+9g3JdrJgRsekuFkfqwTl4pNR3y\nJ090E5pljErfze68brs50Jpma8VTWkwn0R/q+u07sX+wo+WNJmwwcvstomA9\nEy9cYXqM/Z8C+rMl5h7J9I0YItlP/uj8BLCrh7gPzNMHAENJTbdWujz3knyL\nz1hPiVIF6YfV/u3+pxVbXKbtvKH8aJ9OYPy+2n9Pj6qSIPB7qHqriYE/PXFi\n+0SHohmcwhelTU2q5gU65Uk5Udysv/+zsox3YKEOLdQhSXFJL2HKXBINdpTF\n0jWZ/f/SUwDJwkE4NcR0itLagic4qfdaDnPZFrVizo/nPw42cOms0ml/F8np\nROCHxoKcCrE9TgeC5EIgSRpSRcUkgWL6kr86cL1A2MAT16MDoTd46S6BMIDe\npjdcvxyet8Oq07iM+Sw7GQvs80kfFWAVb8G/GJkVwJrMnN4KlpM084LMjrm0\nTSkY9yOOqZEqQWz02cIyX8+MAR8pmtg42AqXJnLLdRvvB6dN4z76B2K2IC2u\ngar/bxBoKIs9Gusy+mbRQ8I7NZXz0MK1Fnna+RmdoGQlIneYOQ/iOW0If8ev\n7MoPyHZevmiZwsSAaOahUApVu62Xd/yCKMx6RWZp9YQwsa3IBMJKJ3yrYJil\nS7Tt\r\n=fybA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1PAQGQriBq/wqajr9o5xjlNJfi10M9otqvcO5Ht0ligIgX5SnYXfMyLAZGXX9RhqYnYmIQ4nRm6CqRRS5K5HGYUc="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.9_1586114725847_0.25426396047090516"},"_hasShrinkwrap":false},"0.5.10":{"name":"io-ts-extra","version":"0.5.10","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.5.10","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-yCh6SrE6Xz1/Nn7CcOuNSjUktzP8+OInl6/Id5SLKYeiUQguOA92zC300KLvM/ki4IglpL7Rq7IdopjlKWwrpw==","shasum":"0ade48541c1e6acf2bb5f602866885448776b492","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.5.10.tgz","fileCount":48,"unpackedSize":306678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeijTsCRA9TVsSAnZWagAAhhoQAJdC8S4SFpTZfoE5/yVr\nqSzWZJgy2t3NXMr5udK4Q0h45nqhySt/tUSJGDt01ZKptyT+uDWhZbi4uRIL\ngHdFp/WgNjSLJKfKGK/yWwA51ExGDNggoPS3O2DHVYfo2cLjzcebmxHrx7iB\nRQiE6g1D0UgrTQX93iX9FujCq7CBKE5tKtut8I1DM5vLf/q+7KgAmWHitafi\nUQQulraRgLSxm2rUqn1Bg6rrk3q92K1F3FGeGvKTRQ9B4wmFwqzlyWI4QuMn\ncAerW+tYgbmumbFC/q5B4WLsYL3o0QM40bW0IrkKQyxUeTXtoIqYDLtHRH+j\nV2adT1WJIvEfEVl9EygYaY4CXR96jnM2ODgvXWE1nCb9qI9XTFNzYeUVDe9X\nYkwvExPPCSBLdy8IkTjnDWi3ADQ5XmKB4iLw89PCBvY3/xEVrL+RnG0iFd+T\nB6uBgt3S2nYX8ZmYYSH4UFbfw8AsGeQUnbydhbABfvQAin2JhGSRvEJuLCG1\nvymNyka6n64YzzAP2TSw4rKPOytln5h5F7/726sqiOIbcSTKhYozhDW7dpKk\n4ui9rcN+d/HtKoM9fjlMfD0uVYuJVTZxfrQpwTTnfW7CO3fWUofo7YxIVpzg\nF6F42LQ7xdVSqNq/TgF0ML3OOJyEwSpeUDSnz/jA9ZZKMJ6HvEzxjPT/Vp8E\n1bTW\r\n=w1WL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUV3qWR4+4Q4wRfeUNWEYTfTl47RgKmoFaJsqD9LEmLwIhAJ6Eq06a22jxxusL56NyaAhokpJdSyhWOcoL7mNt62xS"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.5.10_1586115819763_0.8032008809332329"},"_hasShrinkwrap":false},"0.6.0":{"name":"io-ts-extra","version":"0.6.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.6.0","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-DSRc3Q9f03Bg7ORP13zDSJf9kSfhI9qNGi+h3NtcAl85TpCc8iTsXVzhBq4mAa+LGupC25padTg0pP2v95T7ow==","shasum":"33a5fa3c1d7e66862979a1b7019ff95b0941382f","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.6.0.tgz","fileCount":48,"unpackedSize":310074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekeAQCRA9TVsSAnZWagAAdu0QAId40ccVY2QyRMG32qo3\nmJZWUKocprgwiUIhrJmeNBWUlatYzBlYAbFXfoSNAUcJQFWFZcofVF9NeeFR\nVFNtw1QpyxYO724mCYsmzh31Ci05Ln4COUC5x1paBDCgbVgL28WZ9xjIoKLs\nqJTXshqCFkrDvR0KfYdvRJeTQRG32fUuul7nxZIqfG58OUxwG02kR2aEcbVe\nkYA4wfBE5CCUY9DfcMKfuqg/NVIZZrlLEPdSuPVXdRCBJ/sximkpft0ADMRH\n7O0IUZ3fzM/9f2P2zUDqTz9B8TwcyWIwVZ9/+G3quNYHQbtndRIDH0o1dBXV\nnKwBAbcyY/NieATnLh2wrCnDdA3YQnyW9pKSLtAZdUFORrxESm3KiZgwDWFq\nCaI9PkCsmng+3g3Ydo75+wZ1V19+HasDzflo4fLHQThY4ZuIUQoTn8Xiijpx\n363+ToHiXRdlGwNCTjcNNT6tEeJTreDG8zJlAQTDu6i6iYgOK+cnTd1McSEa\nhrMUdOc4OJUX4cVVh/DWS7ToNqj/IZcxIt6v9MPelfj9/sXOAS2iEYNuKHSs\nMsIGoJX14LOlXhueVbYq3WIK6KO411ZmB9LY3JI+WXooaCAp7PvVIScQoFgX\neM6f5Q+dCTQJvs4Ao+R0DVMxnABGw64dcNcf0mPrkgravCwzK9czctXbGBY+\n21Jk\r\n=wIFf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDz2bKiQ6qpN1Fj7JcDlzpfXkJgPYFCaXGF71TfvTGx/wIhAJY+W/uH6YYlqjLMZlPd5rGR+QZCfh3cfYOtFyQqErrN"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.6.0_1586618383827_0.09729199235696395"},"_hasShrinkwrap":false},"0.6.1":{"name":"io-ts-extra","version":"0.6.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.6.1","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-eGbHIKOvCwBmkRWuWJbPjOqJXg0nc54cYpoCBsMOO2TmGr1723aYAQCTzNNtYj1ifjFTSV2jV1hWejef6r/S+A==","shasum":"be5ed27c0d740ced60dc9d008808440b440bd4c2","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.6.1.tgz","fileCount":48,"unpackedSize":310530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekjHyCRA9TVsSAnZWagAA+s4P/je3tNaVDuzY/fmUOqE1\nzQsnWmrnkM6n8uAvWzpyDcUhVnO+J1mO6RAETlirR/pUj+to4FnvWSDOl1N5\n5Y9ZTi16oVrRSuPDXAa+xWDh9bWRjf/WS6sa+NeaPsUJFDtiBqqqYduMu1rW\niLNOEkAYGL/0FNP4bJH4Grsr/I8Pd83Q53TWPhSQ0EXW2X3bSY/xAeXry5ZQ\ndDOutmdRy2BsoVOHhbQS6hlxOMPhT2RYna47jDCUfGTBqVo2NqixNn0EkaDe\nh7/QeiKVwZVZnFVjKglY8BmueJToagKpDUtb6MlIyrG9zXjx8M2xYow2Bxqa\nmyVzwGSY+jUQAAvYwIJQ5BB60UVY1YxgsPsjOdUtt9HKzDhLc9Z5fQhQpDVL\ndZTvBK5g/kVZsQQEcnzsXKg8G2pXXWNwaZQXzNr9doRj48VXoP2jEOe9MZxL\nQ7Nn7HnmEC2I1xPgc9aP9JuNpPQpPRARVE2twN2SQUluRSw6iU9ADs1TXOFF\ntyA8pCcaBLk8p0TM/PWFHB0hjUN0fc3/a8YQ3ZrEoa4gDBjnxHuKvUGYeFVW\nADOFxULuiiyW10PsqL2FgkNO/r73n17cb1kLBgg9zpmdT3/Xv9GrF+IM2AeR\nLWgyRcKudjbqBmAMhgDWyVWgJyjQ0zVlZmvwu6B1gvDX4D4Fa/MFJmp/+oqh\n7Qry\r\n=rS7h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIExBc8b9/fnAAZpKqSBfYVvQW+nz7KePwVXCS0MFtiL6AiEA3tIGy4Ihzo8Mh/SD1bJ2D3F4hdWaWGu/6Tf3rXQJtS0="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.6.1_1586639345532_0.9331524639363058"},"_hasShrinkwrap":false},"0.7.0":{"name":"io-ts-extra","version":"0.7.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.7.0","_nodeVersion":"12.12.0","_npmVersion":"lerna/3.18.1/node@v12.12.0+x64 (win32)","dist":{"integrity":"sha512-g5/WSNUY+PnSDYXGb1CF2khnZ8e3AumgPmyWWov0wZpLPrx+4MMj0yxq1WbZPC1CzCHvRP01wxx8F5XmonguNg==","shasum":"48e7a990548b62195c8d98043a3a2da692eeb9f6","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.7.0.tgz","fileCount":76,"unpackedSize":363989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJer/K+CRA9TVsSAnZWagAANg8P/3vFZQLAb3Dm4WmT23NM\nOX11z1hBOXarqnrJyulrvorAaM1YEdc4ZWWewmusHeH45Qr5Lc2YuWhryIeu\nhggchxl5kI+9vaVYKHbfrZW+uV0/8kKPWXhJvI1dCrD3XsoSIBm7ABZ4BnSl\ngU6MWaV07Jghu5hfEnxPaEdWVxOmo5GVp9jnD95QBOckbdNondA/kNoadmVy\nnapcmREK+IOLhk6yP0RTenPNwa6/t1flebM26i4W+6799SEAsokoim4KVGZz\nNICdXLVwQ4j0DUmSJQdHSv7Mbmux4rRG+GapHdb05kBnzTjG06yCssw8LwuJ\nFtMXR09ZlHiUd4Z6NrEuEB8QYWQ8A5p10PucTrbUGZEizNjhbjur4Bs93luu\nOxeRUIcQDW7UcdpFYT3UNFGesCemx1dOeFzKCbo5ygHdphBhw/EnaEZ33taO\nC7IapmV9qQ5TWQguQXYPycKNhmNf9ncbeEhOtp2uNWnizW9+0lefiRFS0dWF\nIKjMAKW+WVEsrPXEV5tgtvJSePIVYVzVYgMl8hVbR5dyoHFrSy4izzeIOg8L\n1soydqFbgYCF5MXY4hxDFwi4Crz5LangaaEfgUe46Jb/OSBkiFZhJdehzxfF\n3y+regVcZrQfrcZW3JMsitKajawfkv9FE+wbe5kV5mY+sBzt9VuoRYmTqIcF\nmGDH\r\n=w01N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+c7VsDLWylBz4ObsvtFpQIogIY1mEahpaFqwI+yKrCgIhALrMcWkiBSaf26sD5nmQ3lVk4eoIzn1PsqtclQBuMkJZ"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.7.0_1588589246100_0.6750055962286985"},"_hasShrinkwrap":false},"0.8.0":{"name":"io-ts-extra","version":"0.8.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.8.0","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.18.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-xEiMNpSqDIbSs3AkoogzKRASDWDC0OFP1KFxVRS8hpgHWfG8N7obF045ZKIM6/bbJSXTjWtv6fZ5ArXiMqYFXw==","shasum":"fcf0c93894ccfc9282ba8da6cc846eb9cc7bd41e","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.8.0.tgz","fileCount":76,"unpackedSize":390545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3RVKCRA9TVsSAnZWagAAJ/AP/jvdfzwy6IKKOqEX7X4e\nKVBA+4dzUgPoYpDyrvtn2Uz5PYjEOtrN6ZNDvqNhQVM1jLk71+Ajl8TKu+cM\nxT0RxJq4HLfEFoy0cqsOjq2Wz0Ylz76eL+iXaKCdTaJ8sbbhHU5l32l4w8In\nv5mSa6m7pIX2KYOJWur6fSZMfDN0MS8bqxlpjVjWxI326LRKB8Rw/xe+IJCt\nvAErgPMWtRnlBaGTtFmFXSXhBcEORl762rEHD41bBgFxKlD+BtkmD7os3Jjx\nIFHDACX3TvN808fH/Iosr1KcX0cANI9Mjvol9OR686ZdFKwbH/20rU89wOAe\nhQo8HtrCZtbdQnxNizOrQKOGmAsee/wPQhm6U+xSAr8sJRLytD3py1Br1ql6\n79gRWzMqa90dBqloTGHvNxQnd9f2bX7YgHGbLboTy9mCaKjckvPtAQ994pH/\n6aASLswun0Dm5ef01I8/upTmIktfdl3gfhxGje6eloBMCbD8/n5tJfgZBPVp\ncVwaTMwxqNN9Za1GsyWssRtPTVcKT76yOv/vNkmlgzZJifiNJy+f/JD301R5\nXkZUhUcTvN0z8Y967EWsi16QVaN86NsMWBSz9supxhccITuZkWIc3QWJHhMz\n+TS7ztkvWuZGVbTaWrZtNUb8RTHwW4zc1lTNsPyIwvYJGit1/EqURAk5aPrO\nLkBZ\r\n=ACFQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqWLbB/YyeO0eKEurX2P4i+0Q27YCAPr0IWW6r0aSywAIhAIx8cJtXVpHlKhIrrP+IdVF2QIkzvgtedQzuYlldjIuz"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.8.0_1591547209930_0.9823220442082874"},"_hasShrinkwrap":false},"0.9.0":{"name":"io-ts-extra","version":"0.9.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Some codecs and combinators not provided by io-ts or io-ts-types.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.9.0","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-LqyeekRixIExM9Hc+vQx7oWKyTFeZfcsc+4uOTskQxck3thY4FBRSsfdfB5+EFi3dx+xnKCpd7O9oc/u8LZD6w==","shasum":"72ed8d1cc692abef1e2cfd987c54e3ae70cb3282","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.9.0.tgz","fileCount":86,"unpackedSize":477668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe73tcCRA9TVsSAnZWagAAxqgP/RzU0b4PQcsikQa32zK1\nimhljZO3JzWn4f5UYWkG2ZP9xaHxkkU2DeRmS0YuPVL59K8Ts+QajO/rj9wH\nmmECPT/XLZP+lZGayAUWYb/wll4bFuL0Nq3wN+tVz7Qub9+2m8rTxMH2v60v\nLJ3DVGnT+xTzdK8mdQRaZfGY7BqmqzgjmozbO7MZ+AB5W1O/TYS8pktrZxDf\n54zOedtrG/Owk9K+2dng3wrEA6Yqr5BpIkCkzT82J9fIfSyV8Kv5Q2R6GZAb\nBN3WEbnF/Tsvl1w7gNJjEs7E/CGJSekUnmUca7416pOI+RMdYOboDgE3Ir9A\nkSDCkzLNhXZ3Sze92E0F+W16nWPGwXijuX/zICNlxj5GqO6NBlJ0as8nCTMn\n2HfxYDwDJkZqSwsjAYmSt9O094M3NKcN8OEdNbUg//KqrH6FhA0FDcW9w2At\niA1h+jXbf0pd8nFe1WdviMiNayFG6qhrJRZKhE8X8BH4MN+IVClSwYOYNVux\nIKhCdI/o2VSYF0P1iUxC7uf8ntTI+aRfcSVxE4ERRs/z5+eG5luNEFeWQ0vN\nvtKgiDuizh6BkgmECYFq63Tx7LKynxEabH5QJdwo9LW2YVrYuh1uoDuT7B4+\nWDrUZ6fMFblC31vB9KaLE32yKNUs50/XjtWaciHummuz+GKVsQnGZowfG9yP\n0rFB\r\n=feaB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjq2dFHvPj2+gED8xuKBx1un5Mqd6FMdwrRTWD2oEleAiBtCX1fMS9zbiRVNKwXSBsFfUe23ARwXwiOe8MDhPPSIA=="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.9.0_1592752987543_0.531768876025398"},"_hasShrinkwrap":false},"0.10.0":{"name":"io-ts-extra","version":"0.10.0","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/master/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.0","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-aTznZUHSVGO8i15nNLjqVLS43KcQaZskXSK4bNrFIULisMHby56jJ41b3Chhktrub5LZEntAJxdBYM5uBa92Yg==","shasum":"db33b38803ab3b38097d15a5bedd87f132eba48d","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.0.tgz","fileCount":86,"unpackedSize":479203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe965zCRA9TVsSAnZWagAAIIoP/0dmOFBljhb6fUk/rPaF\nPFatg7wBKPI6krkPYiSaIyyxskL3/+TQ/AYRgREhH5rt8bM+Mz8db+TLsumg\nLh6KbKMHv/h+2goCvYpKSPyajzsK43buAXv4a7GxwQOmdB1VCKh8RRaj2vBh\nWCxFD8UZ5s9DXelwqzXAwsFR0IdUG7S7VWo+8iXpQ5pnv4qjL9J2cIj7rkOy\nEulTzO3R2u3NAo1WDPL6azjBwKgGisXdiiyRSe4Yv+nMtv/D9NPk74KecfWY\nVuNj9ChW5sYlYDKty7BdweX+GfNbqP1FNBTwpefKz8LZoEh+BmyYJgzMPlQ9\nAX/FgeLOEFSgQCObSC5t8S5jmxYM4Lo67DdB+sKEBOl60sUAIShbZQpeuhR9\nGsaY6SyFZf1TyPPUwLMlu86yDBA8DKVphIS0KKPjgQwou9auPUJht/USJNMx\nybrtOzKMKxw8PdRj1ef0rxEbuXe2JYcDwoVQivpkpYdmoDmMlkqMdW2m6qE7\nsJg2J+xUUhG+/zP37PSr+S1rKKeBPIyCUm5/J+qc9Ph18wI2aJ9qsLwY7ADF\nEUhOOkaVEblirXOgh6hf6+aGhWKY9q0g1HD/wAwisRnhmQaYEN/RiitxJUaJ\nrezPPt5NctBZU4KsFni9NteRnFU4+I84p91dJZsNr/DI6ASU4WY4y8089EE5\nUhuz\r\n=Lb5H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjwWBBs1isXri2hmadkPMOTpCKqqD7Ma6eDvALHQ9fMAIgNqL6GD+UM+D4yPYbER0oWR9fp5jEq+zHDXQZK2NXRkI="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.0_1593290355450_0.5018920172517147"},"_hasShrinkwrap":false},"0.10.1":{"name":"io-ts-extra","version":"0.10.1","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.1","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-l/NZBIGWnS1Tyv/xxxJ9gfimijlyeQ2kRPPzVAjSft02TQi2qDJ3PCA7dGahz3ExQ//xzhKAqWEdT5gfHpkASg==","shasum":"b82c598c6a21c2d58277519194132f36d4464754","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.1.tgz","fileCount":86,"unpackedSize":480273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+T8JCRA9TVsSAnZWagAAdbgP/2sZEQjvsyoDu0oTYuoR\n6LAqHguciRlZ8FKUc6PS6LDIrQ/8zGlJEGJSoPgkctgT263fszJxN+L7HdNA\nYb3HOpLpJye3Oh8eJKU5NMfaSS5wxtZMln0LyxThElKitjvcpzqB6mXdiHLO\nZ54N1XfLm0LHgwv+KMA2LHsuJGhgfB0qzPPbTQHjMbHOzZBo0pQk0NUh5yBG\ntGIxUUp8XuNuWrQC2QX32/teAXs1PqFoicOrNHrLj/Sj5r3aRqX9p69803E1\nfDBo3ULTDZGUFghaqrpKtGX1X0OBVowdrdeLyZv/tSF5y9Lc1AEDPdLz3QR7\nLLA84cQCq1MtDJT/beksrR0+Ndx4CUFM9W/vJBR2r/ykW72VaZhWpGrVINVY\nZnAi7TzlBrv8lqn5+NeIIJHV+JLMqy5g+n68wF9EQ+KoqKNXFlunPa4S3w/c\nvLCeofnbdu5u+b1UlSOyjBxbSmejQeI3FObJjfOxzflreNc/V5EzGLkSesJO\nuGdHTD9mwGrkwNtkylWrps9wm6EuJv0Diaf9wx12TV1MyuzhK1yQb0zNxlvK\nW33j0XRWPF66Q0YeozHuGzKMJ3fQlo0pR0u89ohslb/S2HuiMv9IpNqVa07H\ninY4Ur5Xlnsxup1yautb+2xsIEEgQRLMkXygarmtQ/qHofZbaKpdlE/Yg10C\nUEYS\r\n=Eq6w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWus6bEYeDIQL4DemaQLTnIYm1L60GhVwrP/r/W6ilpAIhAOSnT965y7PyMKdOo+yAWpxu8S44FfQ8sHgXVarZWgaf"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.1_1593392905299_0.9706669581921732"},"_hasShrinkwrap":false},"0.10.2":{"name":"io-ts-extra","version":"0.10.2","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git"},"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.2","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-qSKm6vCbFmM8gczxw6kPKVcxFZzQWw+Sk6zH+bR2bJMqKI9AZST/D/8Xpm1z97wyPzkSQzvQZZ8IfmbrCCqsnQ==","shasum":"15fece18d63aacce7ccafecd3c01f3d9c66f6345","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.2.tgz","fileCount":45,"unpackedSize":128032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+eJqCRA9TVsSAnZWagAA5O0P/jQkRpK0adBHVUT/Fon9\na0QHwwfKHS/5b5hYNY/KfWGik4p3WkxcQXZCKXLsgb9FDvtYH9RdE+TiVLgs\nu9EZh6TT9rLf+W8mo4JW9G7t3BKqUYuYp9z+chztUhaZQmaSytki9OoeEJ9S\nXKyLhFSaPgPuEqaaCoGQl375gT8OWxPzQvz2IiWdkIJqKy6LT+zF6UEJOkhc\n7DUCJ3hSrRGXIqHmRtVLpBgeMLYXRc6kbXOzeBBbwxpgfZDrzX6izZJzB7Em\nlStqOoOn4/15OoHFNhTNulT62USiJEsaaAkilUxpBcvCANNWZZDUimoOUz3x\njFI+Uza3+bA2QNLriMhBbaw6UZJwqlt4GQ7eMMr5UsqfmURTGtEWWdCmv7oN\naxVm4ze1P7EVjx2vlZ5+hlSiO6MYKRUBgXu/tHaW/79av+zVxd6hB3A2lFma\nnX8RVl1ajjl9Cg+/hI2WoYsXF1osGV5Z8+Gc76wtcaHz4KdWVzB6tBPhskcB\nF464PY05aL7WWUatjOIGtyGHff6I5uqKlZrL+v0no8MkDkkJmJiA+TZRRsnL\nlIYVLPw1cjAX9ZcV5IypNKYWnWYzl1pdu9WXS4m68fKZKmvDepGU5PbwK5tD\nooqbrdwB1vTHag4Ms53GVrvQ9AZPIMOEUEJZN+kjoduv7C+FJu1Ye58TlLyZ\nLKPQ\r\n=kGvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAHvpU7Cj7VOHB/YSdCLEWGDpDOqFkqhhcyTWWqhng7RAiEA8VSJ6XjxAn0dyBvICYiBRMP2mD92NVSOyMYdCv4zbdI="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.2_1593434730396_0.1940653742998073"},"_hasShrinkwrap":false},"0.10.3":{"name":"io-ts-extra","version":"0.10.3","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.3","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-QCRay7K1Knbm4c4wDIqG6q3RbQZ7CNe7qUWgnCodt8TBXkjV+k8A5pI/3EDubLzOXtytUuOGMe4aTE4pWAUfOQ==","shasum":"8a6749e54baf6acade76b3033d7f67213011ce11","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.3.tgz","fileCount":45,"unpackedSize":128532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBmssCRA9TVsSAnZWagAAD/wP/iiY1NCOA64ptmIuS+q8\nJd7wMxWjr9MTz9GSZa2QoXfXPUv+U2uU+IrupQldihEAD3OCD05ubX4V025c\nNwmQ6FqHJQaEverjRBoSxzT7nYHkr4HopeRK/8Jtf9+VNQLKcWw9Bie9PLu3\nGo6v+YqVT7F1WoFy1MG5Y8VQVG3wGcSFYa70GgiHynYBO0CsDsa3kxwq8nyo\ng9/C9JhW/BUQUG+XfR86VgmARZXVoYPyeKwT9zwEHiTqNKX4Wevo1ArXP7iD\nXzPEQas25OASiKGzlKEzpn9lKkqrAqIuPWhdSVCl5DxcBzf49MMmlZCju8aj\nmfKS3lpkgSJ9tfwNHTiorDsQjlSCAmmjeRD6l/B/OK/IphWfCOFZz9/Rr7WX\n1fbh7sjrjhAu+7Jm9f54eZWPNSPSroR/JlfwlWEp+hiRGMziY2fv62vAlYEB\nY26SXCuq+GuelwQ5bqimNBvLiU0Q+dAeCSVQd53YKaTT258QAlftiG1dJKiT\nMakbSFQKSKjsNP8faivyBTGn9PBXDoOGODnLnVYqh/B55MjuAoOQolcYlv06\nNRJS+XYMJpkIBcKC6aJPp9qJEGIIXaZlPBESULRRleC6N+FIhpWEZghKSiDI\nXOQw34/mvOsaiz67x3HKtLy2t48yq+z5VdUEYUq7WEPXh3xm86DjeSLh39ph\nkRRJ\r\n=K81i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGIOtib10SJqSqwzCHbB/MhPV68cAkQF9lNqSS7TP0LaAiEAjoOm5A+BjBp8fWbDIQwUcvHJLifXPYh2ZmdTXvolweo="}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.3_1594256172036_0.2944268800282521"},"_hasShrinkwrap":false},"0.10.4":{"name":"io-ts-extra","version":"0.10.4","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p ."},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.0.1"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.4","_nodeVersion":"12.18.0","_npmVersion":"lerna/3.22.1/node@v12.18.0+x64 (win32)","dist":{"integrity":"sha512-cWMZ+JImT2pVcG9Sf9cV5291UEVNsG3he+2WKB2PyVZLk9BiyeJdh5qTA9iOL4xbocAN6EwVeK0jxxXiZ3DsRw==","shasum":"63dd0517a6e77b46867e20690514a55aacb317d9","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.4.tgz","fileCount":45,"unpackedSize":128821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBnccCRA9TVsSAnZWagAAk7oP/1AGtzOlrhCqo4XPvkOe\n82Gwkf3v4HG/LMdjo1VeMsJzhKAcfOBbMt6TWvMTy7T2HhTuliUWLe3e/X1j\nhS9JsDf0p/+Wq5K6X3Cm5BymsW6jMJOGQLiIymWUHej34V7EaKnalGltizIw\nzR5bUWgJFXyDBxG8nE4+sPUXOhHBFYeSDA/NeUt4hAT16O/YCA7zSu5qkFK0\nn4i+EMYwMqxDh/fuVYD1fGcrLCiEBYOFohQAuIoxoMZoff9Sd1rqFb+Nw0mp\nGgRVqVLShdawwJkFVfyMOAsPoUzhSK2oI+P3y6FgoK96abnBA5F2x9ezhFyG\nFVFjOT1lMJ4eD5n8VKYSkCKp7C/TBpOY030x6Ey7Vd0oz399KJ4c7wRDoyLA\nun0PLpnukzW0Da8TAc3GuDsG1nFyVGOpJB7YSxK+1gn+zVl5yqBe1Wa0dRoW\nlCRAqIKTx2uJXi/mv2mqlu2uFyVBlLEPaEcME1/Kn3OlKu2nmPMEUgkwdmbZ\nt6NMvi9o4sNn20ANz3Upiwf4enrgqbM7kCm9/NRBu/Chs9BGWslD8wyrlgkL\njHQLulhDR/ridkdGxT23hleKfNzPi0Wagp+xEfQR9n8nW2R7pM4BzKzY0vYt\nYwNP3f9JuLONzYDH76xxGof2Zy+m+kBwNuXHFLk5Cn9xi3WLuNFJtCUmnaZD\nTsL5\r\n=6Fgd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjQMDQoZsaxx5WAjt4JrSDuKKT/SsNl2ArDWAGO0bBKgIhAOl4vYmfvU+0scYSK1z+9ItqoChUMiT/F6d4FCmQin8X"}]},"maintainers":[{"name":"mmkal","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkal","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.4_1594259227797_0.1807254677814878"},"_hasShrinkwrap":false},"0.10.5":{"name":"io-ts-extra","version":"0.10.5","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"run tsc -p .","lint":"run eslint --cache .","test":"run jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"devDependencies":{"@mmkal/node-pkg":"0.0.1","expect-type":"0.7.9","@types/lodash":"~4.14.161","@types/js-yaml":"~3.12.5","js-yaml":"~3.14.0","lodash":"~4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.5","_nodeVersion":"12.18.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-NZwz6bKgTk03ev03rzCdZtEYb0h6/ttRGJBElB2T53KycnYLCtwMMojUAFXpkQUOe2Tu1A0MOlixqhVT+Dg3wA==","shasum":"86acbe785bd1b31a9ce0077a7dc4bc600b29ca2b","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.5.tgz","fileCount":55,"unpackedSize":1023834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYn5mCRA9TVsSAnZWagAA8OsP+wYNIEsaYI6q4X0fbqmD\n+jpC85u3wufIULLOHW0OjjBwRM5oWIKYPDLJwTjRE60Wo0wiejlCK/++mtwI\n2Z0/o/5fwYIznNMU0bwD8GLIIu3eMQcen+o0R0ZEv2Eyf4miw1pI//0AfwUZ\nhNCK2RiErAa24xDND/mS73FUIWpOL5R2qmZALzxXMwOobRw7AZ6rbBeaR9MX\nS8nEg1Zgi7mXv1Eroc2JdTQT5Fq67bVZar52m6LqGxMRqWHGZUbfO7eGddwA\nyN1Qsw9oDMUS6DoJxHvyVf8MD7lQFTYP2+j8BSvb7gYtkj+m9DU2JKUrbWR5\ntQ3Bfa+7OmaT31Qf12Mn+DaQ6hvSLZlyIE229NXJ0NlxMzGIMTj2QZgMEau0\nrfGmVALRKAsvfXfjrPdmSR+BRS0hfSd9uBmcZTkh+B6+n/MUhHr7D8GgsJ6V\nLDKcct0Br9oIEglTV15cnpKMD8HHflUZV9zjE/Pv9Ni24bHOmVqG6fgaJ6dl\nLtHDNGZ3kkLtjNO5F7AEo5PqvlQkG4BfOI1eDYcr7Gyj/MmOkUtIL9ysZRBz\n75q9/NMWEuRDQvTxvYTPLNo4VDM2PeUYfdUR6SFWmX5bSgYWoSgcodA1N2of\nTH+U56s9FH3jRmf6LCu4JpCQekqcPh2vZX+Mf58UT9Jxfb7goaCWCVqq9a6c\nLkc1\r\n=bTCO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDkzOyzoKge4SvKEvb3fbukGm0173gnR+ek4ua7XpaPiAiBnPuBcA4EPWQRA/6CmpRWqkTz31FyaDxSmWxtLbuaa+A=="}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.5_1600290406450_0.6836840528433392"},"_hasShrinkwrap":false},"0.10.6":{"name":"io-ts-extra","version":"0.10.6","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"run tsc -p .","lint":"run eslint --cache .","test":"run jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/builder":"0.0.1","@types/js-yaml":"~3.12.5","@types/lodash":"~4.14.161","expect-type":"0.7.9","js-yaml":"^3.14.0","lodash":"^4.17.15"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cahuUPtmlyzIlv6YS8u9/kr5t8Zut3eTar0RJqkYX7a+KYWaYs6Xa5BrbCj2X/4kCG7CeTXM5YDs0ml/I5YQPA==","shasum":"7a515eb4e766212cac117cc06ce8ff83ebc5d38c","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.6.tgz","fileCount":50,"unpackedSize":113699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYz7VCRA9TVsSAnZWagAAMZMP/3y0hEyed15mH4SHqpjQ\n7kXQSW1eIk4aWgwRrdwYZECjE1YSQ+u1WLjR6luhEkl8y6/VNCetvX+c5u9L\nkCLcje9xMAP5NB1C9wglxu3o55EzqUOPS3Rwtk8dTw6MVEWDiT3pVym2P2MO\nmYOQgOJLq20OEypyLDmADDiqnLcM6kOKhNW7/awDX0YZj1DffQOIlv9/yCY6\n2XUH4DmRwb6fGvlxpvRmRP145lbo4t+WN1e11Kd8+/MIZKy163crKTN74Jab\nFgqbMMeu4BYTWshia/ynMrh3ILRH9TtsFU57tZIinro8DewXs943GeuegFCV\nN23S85fna8ejBMWTU9f26AjIEIk4On4ZU8BvGDcamN180PoIBxPiZTKYFmLl\nf/j5ydN1SJKc8FdYL/69GYype++rGVHlKqPbSch8ATMsx/EewyyDF6sOSTau\nK3KaGEvRlO+eEA6r5hiKLdtOe5uCXlv8Vee8vWWLTtOQbeltvKpDNi6HPrM4\ng7Z2aym3h2z2MLUy21jEw2QrPMwFXJRMfzc9Fq196bdHTS194I0p14OPhzU+\nVjYeUr65HZqg1XOTpwkjyQwNrG1CZEgOwg2r7BT5ltk+ZsdNBXpGpsscKY46\nBOlqw6a1MefL6NceQ9j4N/62tt6BQp2SS9NqvsyyIs4WxMObxPz+D7AXzxX6\nxCk2\r\n=DBAT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHkyfbQeY5+I42Th1V6ydZBAB30SBqAoYXwQvJtN+KNAiBXzDKQ10zfie/SJGNsCpuH8YlScdioSZvPwdrjkiQZuA=="}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.6_1600339669172_0.8249497914421196"},"_hasShrinkwrap":false},"0.10.7":{"name":"io-ts-extra","version":"0.10.7","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"run tsc -p .","lint":"run eslint --cache .","test":"run jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/builder":"0.0.1","@types/js-yaml":"~3.12.5","@types/lodash":"~4.14.161","expect-type":"0.7.10","js-yaml":"^3.14.0","lodash":"^4.17.15"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ZERl/bp+gcN3MhSC/z9bSYhNwGOEdVLTqcnaw13+EgOTmVpxW7qCV3DUsBLVFfaOVKXVN6hoLAEV6wzAQNejhg==","shasum":"bbebd4f17264365bd42e48cedbaa7d3e198b472d","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.7.tgz","fileCount":44,"unpackedSize":110381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZOboCRA9TVsSAnZWagAAXdwP/0ZiwN7GvdvmjmXdqd3I\nLPvAJ14RjbIEW0mSTGpWYpNDF1cyvS3eAyakl29fctaRukZvsY1MCBGtyFQI\nXQIIdlDEerLKFeD+8CDBvG+e94/xGq+EhYXK6WaZMYE17iv5gOoSZ53BgSJ+\nSdNyJVmZeZ6ygRWIVnV45SnRwil+ChljwdgAEq1PEA77QPo9wwrjZ+LBMZcx\n70zok02EhljDt7J+OBCKCITOhdLSoQiJwqcdfp4RvI9T0/OR9TPzVMOraBag\nmYhdsi9i25ZZh7hPDsGeJOSRgzYJo2wH7Ue7RcBPeIHhHOg4byHNmFOeTT9P\nsnYkpP0YsYN/B7LXec65fO+VPUfwu7aHusFAelli36vGQu+KKZ4YOKon82fn\na9+VWzZxmQGTMW9bipCUaua0LNb2J5VpjydTvu1pr27M8l+5IBoO7yoV3MDZ\nBXr9HyJOMQ+VjpbEGVfPbP/qcsXuWlpD/LqyOVcReBaExpLvnXN5oXHbXUjf\n/hGR3MfhkdfL8GISJlqr7WJEPxTHCZRK9rdASCF1R9TCeT36jf8bMIXPw3a1\nvASK3+/A2+9vnLy/SvAczXfxO2XQqrUD+uIHOmy0kMZ2CeK1HEwGxS4+ddPF\n3aohUQ8okpoOhHIpAJjV+vvEKoclJjvHKERQbPFy/3slk1BpiMax936PbSFH\nd7CY\r\n=DeaD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4bPG6WLNsvi+JgRt6fvRMw6Vp6tP1fiZiC6mFS6ceOgIgfI+oq5V/itNL+dmlEJeRh8yse7W6EfmrW5iTd6klXfU="}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.7_1600448232357_0.07905503375375345"},"_hasShrinkwrap":false},"0.10.8":{"name":"io-ts-extra","version":"0.10.8","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"~3.12.5","@types/lodash":"~4.14.161","expect-type":"0.7.11","js-yaml":"^3.14.0","lodash":"^4.17.15"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.8","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jHHPw+4y1jKeDzWTQsf1HN+++ckDVY42dA8kt96wPBzzcZoyKdiocQ11Yng11HRIj2dV1RieEaqFbNJF/7rLuw==","shasum":"396d3cbfd712dfabdc21e1c39f5aa97e554f3d5b","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.8.tgz","fileCount":44,"unpackedSize":110950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdexFCRA9TVsSAnZWagAAEmEP/3lVmBL+vh6zeKYE+tJM\n7xJvMrTkJMEWDVoUtLLKRNLET/fE4dR8Z9lUkTrcQSXmKIQ0kWXWCh8YCtBB\nUvHF/caJSNt8V11n0LXADAnnzPqu1Wk0sDO5r/6IE5eO9O1HW4/C48xzQ7PF\nT7baYZY+iK1LwyEi1sejp6TZnjhTJHhxHOe48U8mCnK1JpfuKeX5z8zWSI1x\nUbBXGa+imhfSgYfNTp9ZDQFiPx+k2B48ZoQyLlLmHEte1zOLWUeaVHL6+fE0\n2d9FtvCktScKGCkDKhezouFCfD2NOaAA0tGPk/L6p4EyiBZ5tzFTVrU1JzlI\n0Jy9mMI39oiszIoeYP4lQjBQOp9IePIYxh8ej7+l2JU6tgL+psFw+GbFY5cP\njyE/uRZLsJQ4zKRZSuWAKpT/uDpyqk2WBdsl8HSTefdgSgriDXyN1i0vECdc\nGhSCiC5w4cTVO10aFi4Ikh9kv8BaOtdf5sEBGHVJiS5SI2Olxn4H830AhS3M\ntmITPEMiwgvFk5/upDcOlRvDRwkt2FU9uEeI9ueNcmWBrwPHlqAPtD+Itdqs\nbbklTa4qMVAjL5W2/CfIOosZIp77oUygWNEFg/bezuFfPvaC1iOnjoVZ8FnS\nh8LWPz0YhnhVm9+7bs8BzF5lfFWrg0qyngEMWstlLTxVCYY5AtkzQak7VgFI\nreb8\r\n=01je\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/2M4ILBcjb9OYkSHc0EMHz2TecUOR4pxfx+GTM6T2eAIhAPXOXcwf/mm+/HvoPLxNAzlLGcIRM/OvgwCEuEwTA+1E"}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.8_1601563716514_0.3793302253235986"},"_hasShrinkwrap":false},"0.10.9":{"name":"io-ts-extra","version":"0.10.9","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"~3.12.5","@types/lodash":"~4.14.161","expect-type":"0.8.0","js-yaml":"^3.14.0","lodash":"^4.17.15"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.9","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yEHqr3oNberwvbG/44piGWlFxxy60hlDW/9YpXdMYjmgdoYiNj3OMr3AKOyIZiLpc6+ohFUDX3vqjVVubYe+1A==","shasum":"6e3375c812c03270caf37081869d2f9b1508074d","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.9.tgz","fileCount":44,"unpackedSize":111308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe6B9CRA9TVsSAnZWagAAzpMP/01JuxwhkBUERsPy6aOT\n1fuHs6CU0B6b/ftfV+cZl3ZEDHCP9M0GTpFNbGUctGAnZiTPVgrseNzpLC2Q\nGMd+JT5fOrZxW528szvGZvN0uv+8NVXkrHb0/RsCifoBrzQb7iSiVZvm260u\nPRss6JfqIMqK3AeXn60kyV75gnN95QjW+GNLwESg5wB6JcsCWhb+tsIe16yi\n/EbT99+S40eNp5AGKoAR4ROxeSbGPIZk2I+Ch5oq73UKMB8Hius4A08j1G6B\nEfWhkfuumXTJpUrkTnv+gjGpJy2yx2i15fGIaMA/9IqSCTdPB4DhxNIrqCJK\nT0+DZUyyXPb329FNu9lk6VnQR7WwO8JRD3Grdkzhc2TmCiCMdTw2UD4pMGun\nmgI2TRkyFLofkUKGYD45JZ9876tyrLZmgeF6xZ1zAGj+ds03GGiv9aWMmo81\nPW96iXjN7Bhekya0VXfTDdjeD8tGlPLQIJ70hI60+LAoB4fnMboP1TZ6K2OP\nNi2anAwi7nlCaZTrpDyob5XdbPlCqN2mA2iWS3JU+LUXXsd20zXl98SMXoyB\nFRKiO1PTaXHll/YGpbnjNGyjVcYcfxxvXgy8AAJDK0ogeb1m1fTSjb9vLTI7\n/Y32v3E0UxCs4uIzEYkf+mJOShtKI8iqmnylzCwqwC6ClDHjfsERzu0yTpgG\nqicd\r\n=j9CQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvacxuJXT0ciVndeH5M+FTvn/ODBuJWCDCnt5RcbnLgAiEArdrS/RCmeUOlZ2mTUS8cH1TiBoaa01S8jkasMoBJwf8="}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.9_1601937532968_0.623349563206617"},"_hasShrinkwrap":false},"0.10.10":{"name":"io-ts-extra","version":"0.10.10","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.8.0","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.10.10","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FnO5GLthChTyfqnn/im3xSJJ+rT18rmdPN/NavbAh+5APYDRUD7bMAVq2747zXDiSQZ/jyBDDrCufdfVFz4JfQ==","shasum":"2ff30acb853d714853dbbcb14a3349d619b1bda7","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.10.10.tgz","fileCount":44,"unpackedSize":111702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhEsXCRA9TVsSAnZWagAAuzMP/10uSiwEuhr3lMEEZcfH\nTNmeAyUrbM/m7PGOcB+ZsfHF1Sd3IreGoTKcG0TSGTMrgXHkOT5ZOlEN6G6U\nJn8KJoHRGTcSAXhdR6Pj4G6RWsXVg0QgIFzPm/Ud6lpI8f10ulQ0bp+FAc6Z\nxWPZU4Xs7hLlfl5vtNn56jXMw96R4AU7TElGaePybOpdrV7cJ7pyDpzjCIx0\nr5uAQAbBNo+GgaSBDnWw2Vxa+EeXXKNKP+fEMclrRD2Hy5iG+r7EbDn6UHCH\nF3T/KP4dm1I06zgO7r5KNCx7Xwh3XgLoYdv0AA6KBEKHAWY40YJsTlXv68rx\nK1lSFDiDYFnRabKoNyF44GPlX7xZhUl6pontNDom2ibJILQY6LIy1iYHi366\nbtSZco8RvW3s3ztKXtSs616jquPy01j6o02tr1Ns6GelCfBQM5aYdCFyusXA\nK/hwj9xaFfiJnmf2TJqfOSnpVMQwNl/vUrRIrmHDE0mPvjv1hwvicOADapIf\n8AWkYGhJslqzimMb9CF+cHwLHhI9LtsrcRan4CJ2HnX+AdRqQDKtgrL2roBr\nmVgDooC9AXwvoFfbMoPgc6bOhsBiSq0ias83GoEmFieUoX0TUEnflq6vmu65\niGgcTmavxBZCsxX7lQgfkL05NrKdkqyPonJMHOos2QeDWz8JAzkXF2WF+OXc\nB0An\r\n=tzve\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsagEyo92en2VZ5ETYEMWDLSYxpSlzr7RWA7W+FrWupgIhAMUmK43ZyQWaoj6ThivOrRBxZap/f29BU271GkiZFHIh"}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.10.10_1602505494820_0.3672188212314633"},"_hasShrinkwrap":false},"0.11.0":{"name":"io-ts-extra","version":"0.11.0","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"npm run lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.9.0","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WWvLv9xwy7+NtZp5ilGey3Ru8xUnmHDGlHjkh+aoPowVVVl2g4fWqCuHFVmS5rHHWxrHl7BBiq/yWpyVHTPG+A==","shasum":"05111350b8ea9a589f031562e3eeffa58243e2f6","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.0.tgz","fileCount":45,"unpackedSize":127108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmEiPCRA9TVsSAnZWagAANiYQAIGCPxcfDSjkFjFeDlAp\nb7xNPTcq0+SLNXEyqiV1Yl4a5CTO2GwBmROcD14JcW25NOLb/i6VIlU9ZhoT\nDH6GMxKG/BieF49cr6Bz7Dcfo/ejB/EudmFIza5TnOTwL6u7LIgfEiDBWxTJ\n7n4T0G3aLcSXHNj1+wcdCztdiTw3SJk8+IFycqLzXxDfhXUy7a36y9Mo1r1V\nKtY5jAwc9eYS6pJRzgLp+ZL/KuQEGTQQG7pcZXiIlYAcJOEFKPNk7QbsNeXN\nZXTz2xawSl0Hd3KutUYwxQ9uqPTF6sQuW8fYxX1lXeHJ0NZx5mZvjBQ28J5c\ncJi5etRVjxxUjwl/mMI/UAdpzmW9JBYY0Datb8ZPc3pB9hxDErJ1cZcPHwvb\nu3e0XGwyjVIpOYwe1WpGGKFRYwEoRwZurrTws6pTVMUQ/bwrxjM3imDtitg6\n5oL7D2y42zgIe/0NcNmfsKtgFOtV7WeJLddkQKb1Z3YMmtKSYfo8dvmLXB1v\nZkECX1WyEpyRUFm3D5d0QbAzquxbqDSEDDVxnXiilOUyM4hxBBpSGBf/X/66\nkUBrKAdXIs9VpnTPs7F9D5WPFEBwYaGk5WpfLW7Lb5k+rMMwh1ObbBVh6Wiw\nVizJUwl1wEIBWN7beIn//4E/1+iaIW/w/EuFd2gNGdPAoFOlsfUuCalJL3hQ\nRsIz\r\n=xvZD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDETK/K7VL1JL7Fix/VdwZUMEG5IgSxllpeEbNHSaWn2AiB+e++Wx3xZHFiFilTMrjTyGnka7i9Y/Kdwlkff8stBaw=="}]},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.0_1603815566825_0.27021177176679534"},"_hasShrinkwrap":false},"0.11.1":{"name":"io-ts-extra","version":"0.11.1","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"npm run lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.9.1","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.1","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-D5nEL8F+Lq6h9SCNhU91BRRqa5fbvUg1kH9D1mSLFt0KcjfcZMytoRZS9BJyT/+cLbcVGIWMaPVgkjtTTBuGxQ==","shasum":"4db8572678b1b01295dc16e398f6f2d0efe76bd4","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.1.tgz","fileCount":45,"unpackedSize":127466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfv+DDCRA9TVsSAnZWagAApqcQAIwDI0hjp0gcLKMfIqR8\naMwWE2byhOeaS0xOTGllJ+i++FWNdADzLpJA+tp/I5tjvBjptMaBe1N00+eW\nWN9hkqO2Piz4re9rFssjEikyfKszixSslaqXLykh4xXWfbNcQbIP6YS/DwPN\nbp0uHsHduN/odaYN5GtcKTMHcYCJwHdxCvDUZlShU5hnnMvBYKmcGwLY4JY5\nJhKJiUDwotnfmiRVc+xwIHSKUjmfIH1l2bZ0Hgjqggm2LEARGnulUnnC2ip6\nabDPPTq8on5IZ7qZqtnmap/Sunc31f/WUBtGclj073ZrhKkC7UTIPzODdJju\n1Rchi3PQY4hOIA/07hhi1dV1Dg+3DXeqIbJv4OrFCPFU/vsSsyCwIfzXPLnx\nDYmuHLo2uwQ0DdsDCCGtWuUA72QgLJTPD5vnq1wgtvqo5IFMT4mEd5S+xTON\nXSMaLN+P4373Nut46Ab89DSfVN8w90QCvKqMM5zP7bvvbApi2/mUq/2p3TeK\nSuCf9c4WxVqBqOPMc8JY3UmNZkryc4FzRJoHafDIU6IKv/ALkEvj3EDFGX9E\nHSZVC1VhuAFWPXVL3bLAX92ReAA8XDEwTZXukKoJWXndZu/uBqh8d3edsT1i\n9rQXnteOT5XEq8jBFjZGBWQbKi0xmGVv46M/kP7DlFNoHn5PlJHmCQ7gjPVl\nydWE\r\n=SwfV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5S915WbKVSi6u/GqQqH/YOXBNmbGrr1Uaqe+lXlIA1wIgNa8d2pLOGL4FEB5cv1YZkLuKR82C0E+STNKmDzdWDYE="}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.1_1606410434697_0.2620754505609997"},"_hasShrinkwrap":false},"0.11.2":{"name":"io-ts-extra","version":"0.11.2","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"npm run lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.9.2","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-a9OdDRtyJA5Ln+1CXs5SLYMgtU5ruj27tAGRVy00/9QjJhchiHJ1HwpNLZ0S0o6B/eswefJDKzvv49VhGl8EyQ==","shasum":"c758f1c6eae99a8454fdde97eaa14590a5d8d0a1","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.2.tgz","fileCount":45,"unpackedSize":127811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwqCrCRA9TVsSAnZWagAA2ocQAImWn5mamAehwXVXAjzc\ngSMt8V+KzsuNeKReo+be1WiNr9ovWC34pRMIJIp1Jb6p1cZEd1KNVBdUoGbA\n6IYfs4lr0sEPZzEDtj809bMB7SDL/JpvlENJb1DqWns20MhHCTcZ/PKDY6aC\nnfws2dh65qGJLSWEGHYQgtjRdid64W8DtBZuolwlK+C7MdHCyh0CID1ukveu\nlM7stFwMnzdD3h95PFZEVBmdbp3RsMlIlnsUyqmKdMof9ZIlz7wOt75LHgHa\nLEtRWXY3YtzwnU6/6XL7WTrQiAqcQQXEHEQ1SzKCeaibS+xxZ7WiFNnAm/z7\npCSrv2uurke5sU6BySxMtE/rhPR6zRDq5dwcPWxjjISpxs7rBUlxiZ+9RfhC\nxocMbPXGqcZeK7tCZzt/KwjyB4rAZLvbdF5ej511uUDXtWW0P3hPiwZYeC0M\nyTztNBaZ3fS8GXFXGLJK3R8s7mz0G9KOBWAlpp1AbsflOK8EqL6Uw6RAwIfn\nSZ6HuSEIYFZtFZrHP05fPAshi5WxjWwJCX2JNGQhlkD9saijGzE2QyBySrp0\nMOhN6bI8cpye5GRekR5LcZIFbLPyD6pRLwXckJHh2SppoR/K8XugD09mxLYm\ndsZyZd8LsVPnn/v1Pthxz8sOg6TkNrHy54EHwSiRxwZVAstlH7YjUvEVQSY2\nvzru\r\n=rIHM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATefMHPRRFteDcx3qbBHTDldzOpVBCJXTN49MDs6LqgAiAnlFVc1I7zZuK4e9OT2IMjTHb43rONrc2o5r6m6A+D0w=="}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.2_1606590634940_0.7362750497659485"},"_hasShrinkwrap":false},"0.11.3":{"name":"io-ts-extra","version":"0.11.3","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"npm run lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.10.0","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.3","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HwLnrdqkrUVa08SBaTwTMbUz+bwdS2HfIgxydxJM4mQz8LMHVgKEQC53vmfKR6QaWMM4AuH9qAwrns0rEaaOVA==","shasum":"2ed1a94edf2265cfe54d83cc9c31a48493097b2a","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.3.tgz","fileCount":45,"unpackedSize":128158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyThECRA9TVsSAnZWagAA/vgP/06BX3Nh8qppGKyTzL+I\n655BXjWuNYjAfQ9JClnw6IDMqkd/UWluohBPvuLvKCwngSPREZEzYpwL0Y/r\nj6MCaTXkWcopMLIUJKKEW0bztO8DJu0rpZtYJyOiOLwa0Ii95XB5ngluFjGd\ndP58+ltW0QdofsPe7+phyCDr8kUmWFPlEawjKHAcOedj5j4RTjwJMGHvf24W\ndCbc/sudjAixRnC+3ujcNvL+utwmvnO/ei2nwniG9Xc+h2SRx2GkbWl5aV0Z\nAvMe4PYuaRPio4c/UJ/yBVBuTHk57Hpx2dpJDft5ymrzZDP/uAtDaQQ9Bj2g\nL5lyClXP6XOc4QkztqNN8aTivloITQwv0ZaDcT7be+JiGjYoDw9St0VVvdrV\nvjziiGqMlnsvA09nmUfc2RAtB+jQHOCdNQwihyg6OprVQqi133lrvcTP+13o\nZDmBRHx5Hv/oJmMC5CQk2dWLkkJUmX6SJp4/+9MvPZw4oKIho1Q1z+VREy0g\n9g3QgXEh3NkGB1vmbg696j+M4LpxnLcwhYSbQCqGtGSbIQqYo2HFMsYmHnXH\nZTc06XXdOGAyQtuj5qGYCBiHSUY/BMwEcHV5VIXrkEpb5Jrsf1DU1RfMANYM\npqDRQi/2vpi/y1BdOyntc6sMOMyXm3GCGHUI/Qova0D3Fc4gyvDnmhTW9tz+\nBG4j\r\n=3Uu0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuwvr82JkGXc5QoyUqXxV5tvh5syly4h44J6iquTVv7AiEA1K3EpJ2SRMOvYotOH2e2L8s/lrZwslMc0MsbFkxZn/k="}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.3_1607022659615_0.6843784720007013"},"_hasShrinkwrap":false},"0.11.4":{"name":"io-ts-extra","version":"0.11.4","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"npm run lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.161","expect-type":"0.11.0","js-yaml":"3.14.0","lodash":"4.17.20"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.4","_nodeVersion":"12.20.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XrvZluS4RPnj0/w8i0Vl9L9m7ajF1Spx039b8exDybF6z9speQJleBP0ujmJ3uu3eelpredYywlec2ZF9ZtH7g==","shasum":"4885fb646017dd619fa5dfc799fcd0e44599aaf0","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.4.tgz","fileCount":45,"unpackedSize":128504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0NBkCRA9TVsSAnZWagAAHv4P/3+DZ9AiGeKC0UjSZoRk\na31JUYHxRGLYPoIvUOvaK91f70uTkw6lGiRNu9rHNNNjwkxLJRuMhHn7vXID\nEtrZ2zUR5uljd3hl95Dd9Gx+ag9NlcX6AY12BzBSuW4VJLe8xrTVecj+bZt1\nFf+N0QBDc0vma7Qvf8rWkdTkF3688BU/6FPbtqjIFtIOCPF4eAgO9a+ln0aL\nO7KAk2ybbGmkcah3wlFP2x1o3HeMvHNuKmW0idydr8FtKXuzHcvHENYrmxP1\n4/eBflv8eT26BcRw4CYkq+8NrwaZyH1X7blchMncZGi658CKmXgsoFT+qObN\ndOBKIc9AF6jfMDr30HrreRv4NN2wnV070IQcyzWbaKoVnWCBjAYsc5mt9Ctr\nAt2ZgijhPgzUS1XzhtqkLXm9GrW7twH1C9dp+5O+8NnsoDDMnKM17ea+/N7M\n4Q1xX60blxwMLTGKtLRdy/I2jlglrSn6DYAmLmfYxqeVgDuVmS2E9wGq34G7\nZALOczpP3u77PjeBajt6PotN1MWhc/YgCNW/04GmQu2NIbIjWiLNJMtt6nFd\nGokyVNviTuuSJ+fuSX4fEfOlIJt7cpdwib2QaHjgZZG2a547JIPuC2WNY1gP\nfDsyiNpO16RsoYpiDMhLbwdC18mqr+Tli2lsD1204TKpztaAx3oTvdpd6Mw0\nInBS\r\n=1xDq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkOPc7oa9q7Hr4Venfz0AD6LNMUcXXpm6vVoZC5JloJgIhANeOfoo5cJ7t+5P20AQhD6YJIEAluxnVS8wro2znjMBb"}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.4_1607520356444_0.009629060685144575"},"_hasShrinkwrap":false},"0.11.5":{"name":"io-ts-extra","version":"0.11.5","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"rushx lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.165","expect-type":"0.12.0","js-yaml":"3.14.1","lodash":"4.17.21"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.5","_nodeVersion":"12.18.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n9z5dTmqcUXb0Pk0zFK4/xq9CU6Rxxvyta9Sl3bhaZ58I6sm19EVlNV7jL3jGTbUYoRCKB7Lmw04d+YMlwfF/Q==","shasum":"3ad8a23658ced9d67e408a4322368b07076edd8d","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.5.tgz","fileCount":45,"unpackedSize":132480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4IFoCRA9TVsSAnZWagAAwLsP/iT/nGrZ/LHtlNb0Jp72\nerXnUZOoFNK46dLuVubd+BMhaM7yF9wAnJHgglVHOcmCSBwxP/o3s0qY56lv\nGsNlGFPHLyrHbWGUbV2PWIpLWFA59Ud9VEVqWGu3ODUwdVfuxuhmWhax3j9A\ntGn6AVP19XmAljydyeckZvpQPFUu+q6UhNz0ztlvL7aiIPTeCdRnMhTtbrTv\n/+61NxhBXWCTJWnamG9ar7Aw1yY8UqC5Cy2ASIHq9zH+U++e0Ff7cuvSzfNm\naYUJsA7U3cWgY81K+JUDHDBHWht93+rgpB/ZitqaBeWZ41teJDFjFsh/9c80\nQJm9ComWkWcnnD4q0Qaisefj5V/+8qKxtTdQycqA+Wr7ZbxYG8ii/fgARO/O\nXyeVBgLfoljpJIXDn02kb6Yb+LwydlDMxvDxr7eQyUdG6JeLqgY98f4dIiUP\nIh87OxuM/h6v5pJJP9LeUBr3rYYgmJBNe86gVGPbQgephSAjPQZDYr3ZKHKy\nfPwJ5rTvjGg26SrkgbJ4MoNey2aHijmDvfasQxiQdtj3I6ewsb03eg2LJLrp\nXvXGgd62gG9CquD161rqpCvgrlxV73t393GyRCuESa7+jjoCF4ZfGJyHw5Ev\nMBkn0Z4wU3DmU90nqEUqkTqWl4F8Ii4puLJ1z9NHWbqEwFH01r8Yyj7Nkw3Y\nWV+O\r\n=Uk6d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwoSr1uSxoIAHf4qOY8H+fkBH54mrxADsyKuyJ7pvN1AIhAMWLCSth4gcNP2c3sXM2chNChkuKcHoV9+uYgzjkZl5j"}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.5_1625325928374_0.1989943582938556"},"_hasShrinkwrap":false},"0.11.6":{"name":"io-ts-extra","version":"0.11.6","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"],"homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prebuild":"npm run clean","build":"rig tsc -p .","clean":"rig rimraf dist","lint":"rig eslint --cache .","prepack":"rushx lint && rig permalink","postpack":"rig unpermalink && git status","test":"rig jest"},"dependencies":{"fp-ts":"^2.1.0","io-ts":"^2.2.4"},"devDependencies":{"@mmkal/rig":"0.0.1","@types/js-yaml":"3.12.5","@types/lodash":"4.14.165","expect-type":"0.12.0","js-yaml":"^3.14.0","lodash":"^4.17.15"},"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","bugs":{"url":"https://github.com/mmkal/ts/issues"},"_id":"io-ts-extra@0.11.6","_nodeVersion":"12.22.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rTsvx3W5B2nx7p/eGf+OsEaBTmjSjLzxBDEiweCjwqIL9ZN6CZjG7hFK8zyGJyM0I2uCsRU4uYUhaTgg2SKHkQ==","shasum":"ae18f8662cce59b421ed6f36a48b099e970ff0df","tarball":"https://registry.npmjs.org/io-ts-extra/-/io-ts-extra-0.11.6.tgz","fileCount":45,"unpackedSize":130203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPN/nCRA9TVsSAnZWagAASS8QAKSjqNzNmlFDwlsGCvWR\n4LSPVx6j5X+xZg14688jIY92HeVVAKqh/7euc5UoIM+CxogvOK8uL9gxs8si\nJ8exHM2hkBdtqswLtLqn7shl2YIO3iblZl8dQbwIMvF1zjalCDEJhuHZkPRG\nGCL21A3bgcpiyr76yo6dP8RrbuRHAU6jjL8SS8gSUINV+Q5HctC8CJqt5+2s\n6gcy3DjvUln8jT/pdieo6e9eFKA7AZgUi35n4yBj4RWp9aN3Tj5+oxhihYro\nt61MvG6U/1OdyzWhNOyglPgmR4Afa2Hn7TIBtOhoM0jESnsTGRU5NHxlGXmg\nPASkRmCTE59x7KK0MZ7vQuqai+EDnF3ZoumFptMeqUhN1QbJDsdwJGbHPg/u\nR94Wlk1di+SMas7dYVWjQ/pQkHfntVou4Rlvr58ps5UGonx6iQMHp3KEWU52\nXDyV/Ne+zI3Se17E7AmFaGTZ4bilUCEmtg/rAiT1fKDsY5oNz243jtn4fDsU\nSNMpt1bWx8IOJ1g6mgXsWz3Ye+T5rP9QcKWnzNvYuILdtzS/yNJHm4zcbT6n\nmemJ96OAoLsBmNDdsSuWHN6kznJXSIm7CBbmgW9PfF4pxif2eTkfujxH6Ddn\nCt0vbEqKlcqqzur+vv+Ouv170hMacIVmpY7ne68ISuGDOmYezhCxVwGZReyk\nsOPW\r\n=bt8V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHfBdX1+MyhQuYrbVk+GfCQUm7qFKYkwKWuRKJx3aGG1AiBl/7GFo0Su+V9wPDcHleL8Cmt3uJSjMYcULMZLvALuJA=="}]},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/io-ts-extra_0.11.6_1631379431292_0.4006360667038418"},"_hasShrinkwrap":false}},"time":{"created":"2020-03-03T03:02:47.851Z","0.3.1-master-2020-03-02-22-01-34.76":"2020-03-03T03:02:48.004Z","modified":"2022-05-06T01:49:43.375Z","0.3.1-master-2020-03-02-22-57-03.79":"2020-03-03T03:58:51.934Z","0.3.0":"2020-03-03T04:05:08.826Z","0.3.1-master-2020-03-02-23-07-22.81":"2020-03-03T04:16:16.816Z","0.3.1-master-2020-03-04-23-09-46.84":"2020-03-05T04:10:58.358Z","0.4.0":"2020-03-05T05:26:38.090Z","0.4.1-master-2020-03-05-00-41-37.1":"2020-03-05T05:43:02.304Z","0.4.1-master-2020-03-05-00-56-58.2":"2020-03-05T05:58:40.543Z","0.4.1-master-2020-03-05-09-34-01.5":"2020-03-05T14:35:21.985Z","0.5.0":"2020-03-05T14:38:48.663Z","0.5.1":"2020-03-05T14:42:34.271Z","0.5.1-master-2020-03-05-09-41-41.1":"2020-03-05T14:43:01.411Z","0.5.2-master-2020-03-06-00-05-12.1":"2020-03-06T05:06:44.137Z","0.5.2":"2020-03-06T05:08:31.678Z","0.5.3":"2020-03-07T18:33:42.943Z","0.5.4":"2020-03-22T19:30:15.526Z","0.5.5":"2020-03-22T19:38:43.301Z","0.5.6":"2020-03-24T13:52:54.490Z","0.5.7":"2020-03-30T02:54:48.572Z","0.5.8":"2020-04-05T19:19:36.558Z","0.5.9":"2020-04-05T19:25:25.961Z","0.5.10":"2020-04-05T19:43:39.903Z","0.6.0":"2020-04-11T15:19:43.932Z","0.6.1":"2020-04-11T21:09:05.705Z","0.7.0":"2020-05-04T10:47:26.252Z","0.8.0":"2020-06-07T16:26:50.113Z","0.9.0":"2020-06-21T15:23:07.712Z","0.10.0":"2020-06-27T20:39:15.596Z","0.10.1":"2020-06-29T01:08:25.449Z","0.10.2":"2020-06-29T12:45:30.522Z","0.10.3":"2020-07-09T00:56:12.213Z","0.10.4":"2020-07-09T01:47:07.967Z","0.10.5":"2020-09-16T21:06:46.617Z","0.10.6":"2020-09-17T10:47:49.356Z","0.10.7":"2020-09-18T16:57:12.517Z","0.10.8":"2020-10-01T14:48:36.637Z","0.10.9":"2020-10-05T22:38:53.100Z","0.10.10":"2020-10-12T12:24:54.924Z","0.11.0":"2020-10-27T16:19:27.083Z","0.11.1":"2020-11-26T17:07:14.961Z","0.11.2":"2020-11-28T19:10:35.066Z","0.11.3":"2020-12-03T19:10:59.841Z","0.11.4":"2020-12-09T13:25:56.566Z","0.11.5":"2021-07-03T15:25:28.492Z","0.11.6":"2021-09-11T16:57:11.518Z"},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"description":"Adds pattern matching, optional properties, and several other helpers and types, to io-ts.","homepage":"https://github.com/mmkal/ts/tree/main/packages/io-ts-extra#readme","repository":{"type":"git","url":"git+https://github.com/mmkal/ts.git","directory":"packages/io-ts-extra"},"bugs":{"url":"https://github.com/mmkal/ts/issues"},"readme":"# io-ts-extra\n\nAdds pattern matching, optional properties, and several other helpers and types, to io-ts.\n\n<!-- codegen:start {preset: badges} -->\n[![Node CI](https://github.com/mmkal/ts/workflows/Node%20CI/badge.svg)](https://github.com/mmkal/ts/actions?query=workflow%3A%22Node+CI%22)\n[![codecov](https://codecov.io/gh/mmkal/ts/branch/main/graph/badge.svg)](https://codecov.io/gh/mmkal/ts/tree/main/packages/io-ts-extra)\n[![npm version](https://badge.fury.io/js/io-ts-extra.svg)](https://npmjs.com/package/io-ts-extra)\n<!-- codegen:end -->\n\n## Features\n\n* Pattern matching\n* Optional properties\n* Advanced refinement types\n* Regex types\n* Parser helpers\n\n## Contents\n<!-- codegen:start {preset: markdownTOC, minDepth: 2, maxDepth: 5} -->\n- [Features](#features)\n- [Contents](#contents)\n- [Motivation](#motivation)\n   - [Comparison with io-ts](#comparison-with-io-ts)\n   - [Comparison with io-ts-types](#comparison-with-io-ts-types)\n- [Documentation](#documentation)\n   - [Pattern matching](#pattern-matching)\n      - [match](#match)\n      - [matcher](#matcher)\n      - [Shorthand](#shorthand)\n      - [codecFromShorthand](#codecfromshorthand)\n   - [Codecs/Combinators](#codecscombinators)\n      - [sparseType](#sparsetype)\n      - [optional](#optional)\n      - [mapper](#mapper)\n      - [parser](#parser)\n      - [strict](#strict)\n      - [narrow](#narrow)\n      - [validationErrors](#validationerrors)\n      - [regexp](#regexp)\n      - [instanceOf](#instanceof)\n<!-- codegen:end -->\n\n\n## Motivation\n\n### Comparison with [io-ts](https://github.com/gcanti/io-ts)\n\nThe maintainers of io-ts are (rightly) strict about keeping the API surface small and manageable, and the implementation clean. As a result, io-ts is a powerful but somewhat low-level framework.\n\nThis library implements some higher-level concepts for use in real-life applications with complex requirements - combinators, utilities, parsers, reporters etc.\n\n### Comparison with [io-ts-types](https://github.com/gcanti/io-ts-types)\n\nio-ts-types exists for similar reasons. This library will aim to be orthogonal to io-ts-types, and avoid re-inventing the wheel by exposing types that already exist there.\n\nio-ts-extra will also aim to provide more high-level utilities and combinators than pre-defined codecs.\n\nPhilosophically, this library will skew slightly more towards pragmatism at the expense of type soundness - for example the stance on [t.refinement vs t.brand](https://github.com/gcanti/io-ts/issues/373).\n\nThis package is also less mature. It's currently in v0, so will have a different release cadence than io-ts-types.\n\n## Documentation\n\n### Pattern matching\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/match.ts, export: match} -->\n#### [match](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/match.ts#L153)\n\nMatch an object against a number of cases. Loosely based on Scala's pattern matching.\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(String, s => `the message is ${s}`)\n .case(7, () => 'exactly seven')\n .case(Number, n => `the number is ${n}`)\n .get()\n```\n\nUnder the hood, io-ts is used for validation. The first argument can be a \"shorthand\" for a type, but you can also pass in io-ts codecs directly for more complex types:\n\n##### Example\n\n```typescript\n// get a value which could be a string or a number:\nconst value = Math.random() < 0.5 ? 'foo' : 123\nconst stringified = match(value)\n .case(t.number, n => `the number is ${n}`)\n .case(t.string, s => `the message is ${s}`)\n .get()\n```\n\nyou can use a predicate function or `t.refinement` for the equivalent of scala's `case x: Int if x > 2`:\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(Number, n => n > 2, n => `big number: ${n}`)\n .case(Number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\n##### Example\n\n```typescript\n// value which could be a string, or a real number in [0, 10):\nconst value = Math.random() < 0.5 ? 'foo' : Math.random() * 10\nconst stringified = match(value)\n .case(t.refinement(t.number, n => n > 2), n => `big number: ${n}`)\n .case(t.number, n => `small number: ${n}`)\n .default(x => `not a number: ${x}`)\n .get()\n```\n\nnote: when using predicates or `t.refinement`, the type being refined is not considered exhaustively matched, so you'll usually need to add a non-refined option, or you can also use `.default` as a fallback case (the equivalent of `.case(t.any, ...)`)\n\n##### Params\n\n|name|description                     |\n|----|--------------------------------|\n|obj |the object to be pattern-matched|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/match.ts, export: matcher} -->\n#### [matcher](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/match.ts#L185)\n\nLike @see match but no object is passed in when constructing the case statements. Instead `.get` is a function into which a value should be passed.\n\n##### Example\n\n```typescript\nconst Email = t.type({sender: t.string, subject: t.string, body: t.string})\nconst SMS = t.type({from: t.string, content: t.string})\nconst Message = t.union([Email, SMS])\ntype Message = typeof Message._A\n\nconst content = matcher<MessageType>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get({from: '123', content: 'hello'})\n\nexpect(content).toEqual('hello')\n```\n\nThe function returned by `.get` is stateless and has no `this` context, you can store it in a variable and pass it around:\n\n##### Example\n\n```typescript\nconst getContent = matcher<Message>()\n  .case(SMS, s => s.content)\n  .case(Email, e => e.subject + '\\n\\n' + e.body)\n  .get\n\nconst allMessages: Message[] = getAllMessages();\nconst contents = allMessages.map(getContent);\n```\n<!-- codegen:end -->\n\n\n#### Shorthand\n\nThe \"shorthand\" format for type specifications maps to io-ts types as follows:\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/shorthand.ts, export: codecFromShorthand} -->\n#### [codecFromShorthand](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/shorthand.ts#L79)\n\nGets an io-ts codec from a shorthand input:\n\n|shorthand|io-ts type|\n|-|-|\n|`String`, `Number`, `Boolean`|`t.string`, `t.number`, `t.boolean`|\n|Literal raw strings, numbers and booleans e.g. `7` or `'foo'`|`t.literal(7)`, `t.literal('foo')` etc.|\n|Regexes e.g. `/^foo/`|see [regexp](#regexp)|\n|`null` and `undefined`|`t.null` and `t.undefined`|\n|No input (_not_ the same as explicitly passing `undefined`)|`t.unknown`|\n|Objects e.g. `{ foo: String, bar: { baz: Number } }`|`t.type(...)` e.g. `t.type({foo: t.string, bar: t.type({ baz: t.number }) })`\n|`Array`|`t.unknownArray`|\n|`Object`|`t.object`|\n|One-element arrays e.g. `[String]`|`t.array(...)` e.g. `t.array(t.string)`|\n|Tuples with explicit length e.g. `[2, [String, Number]]`|`t.tuple` e.g. `t.tuple([t.string, t.number])`|\n|io-ts codecs|unchanged|\n|Unions, intersections, partials, tuples with more than 3 elements, and other complex types|not supported, except by passing in an io-ts codec|\n<!-- codegen:end -->\n\n### Codecs/Combinators\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/combinators.ts, export: sparseType} -->\n#### [sparseType](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/combinators.ts#L40)\n\nCan be used much like `t.type` from io-ts, but any property types wrapped with `optional` from this package need not be supplied. Roughly equivalent to using `t.intersection` with `t.type` and `t.partial`.\n\n##### Example\n\n```typescript\nconst Person = sparseType({\n  name: t.string,\n  age: optional(t.number),\n})\n\n// no error - `age` is optional\nconst bob: typeof Person._A = { name: 'bob' }\n```\n\n##### Params\n\n|name |description                                   |\n|-----|----------------------------------------------|\n|props|equivalent to the `props` passed into `t.type`|\n\n##### Returns\n\na type with `props` field, so the result can be introspected similarly to a type built with\n`t.type` or `t.partial` - which isn't the case if you manually use `t.intersection([t.type({...}), t.partial({...})])`\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/combinators.ts, export: optional} -->\n#### [optional](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/combinators.ts#L14)\n\nunions the passed-in type with `null` and `undefined`.\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/mapper.ts, export: mapper} -->\n#### [mapper](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/mapper.ts#L33)\n\nA helper for building \"parser-decoder\" types - that is, types that validate an input, transform it into another type, and then validate the target type.\n\n##### Example\n\n```typescript\nconst StringsFromMixedArray = mapper(\n  t.array(t.any),\n  t.array(t.string),\n  mixedArray => mixedArray.filter(value => typeof value === 'string')\n)\nStringsFromMixedArray.decode(['a', 1, 'b', 2]) // right(['a', 'b'])\nStringsFromMixedArray.decode('not an array')   // left(...)\n```\n\n##### Params\n\n|name |description                                    |\n|-----|-----------------------------------------------|\n|from |the expected type of input value               |\n|to   |the expected type of the decoded value         |\n|map  |transform (decode) a `from` type to a `to` type|\n|unmap|transfrom a `to` type back to a `from` type    |\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/mapper.ts, export: parser} -->\n#### [parser](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/mapper.ts#L78)\n\nA helper for parsing strings into other types. A wrapper around `mapper` where the `from` type is `t.string`.\n\n##### Example\n\n```typescript\nconst IntFromString = parser(t.Int, parseFloat)\nIntFromString.decode('123')          // right(123)\nIntFromString.decode('123.4')        // left(...)\nIntFromString.decode('not a number') // left(...)\nIntFromString.decode(123)            // left(...)\n```\n\n##### Params\n\n|name  |description                                 |\n|------|--------------------------------------------|\n|type  |the target type                             |\n|decode|transform a string into the target type     |\n|encode|transform the target type back into a string|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/combinators.ts, export: strict} -->\n#### [strict](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/combinators.ts#L159)\n\nLike `t.type`, but fails when any properties not specified in `props` are defined.\n\n##### Example\n\n```typescript\nconst Person = strict({name: t.string, age: t.number})\n\nexpectRight(Person.decode({name: 'Alice', age: 30}))\nexpectLeft(Person.decode({name: 'Bob', age: 30, unexpectedProp: 'abc'}))\nexpectRight(Person.decode({name: 'Bob', age: 30, unexpectedProp: undefined}))\n```\n\n##### Params\n\n|name |description                                            |\n|-----|-------------------------------------------------------|\n|props|dictionary of properties, same as the input to `t.type`|\n|name |optional type name                                     |\n\nnote:\n- additional properties explicitly set to `undefined` _are_ permitted.\n- internally, `sparseType` is used, so optional properties are supported.\n<!-- codegen:end -->\n\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/narrow.ts, export: narrow} -->\n#### [narrow](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/narrow.ts#L35)\n\nLike io-ts's refinement type but:\n1. Not deprecated (see https://github.com/gcanti/io-ts/issues/373)\n2. Passes in `Context` to the predicate argument, so you can check parent key names etc.\n3. Optionally allows returning another io-ts codec instead of a boolean for better error messages.\n\n##### Example\n\n```typescript\nconst CloudResources = narrow(\n  t.type({\n    database: t.type({username: t.string, password: t.string}),\n    service: t.type({dbConnectionString: t.string}),\n  }),\n  ({database}) => t.type({\n    service: t.type({dbConnectionString: t.literal(`${database.username}:${database.password}`)}),\n  })\n)\n\nconst valid = CloudResources.decode({\n  database: {username: 'user', password: 'pass'},\n  service: {dbConnectionString: 'user:pass'},\n})\n// returns a `Right`\n\nconst invalid = CloudResources.decode({\n  database: {username: 'user', password: 'pass'},\n  service: {dbConnectionString: 'user:wrongpassword'},\n})\n// returns a `Left` - service.dbConnectionString expected \"user:pass\", but got \"user:wrongpassword\"\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/reporters.ts, export: validationErrors} -->\n#### [validationErrors](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/reporters.ts#L11)\n\nSimilar to io-ts's PathReporter, but gives slightly less verbose output.\n\n##### Params\n\n|name      |description                                                                                                                         |\n|----------|------------------------------------------------------------------------------------------------------------------------------------|\n|validation|Usually the result of calling `.decode` with an io-ts codec.                                                                        |\n|typeAlias |io-ts type names can be verbose. If the type you're using doesn't have a name,<br />you can use this to keep error messages shorter.|\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/combinators.ts, export: regexp} -->\n#### [regexp](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/combinators.ts#L103)\n\nA type which validates its input as a string, then decodes with `String.prototype.match`, succeeding with the RegExpMatchArray result if a match is found, and failing if no match is found.\n\n##### Example\n\n```typescript\nconst AllCaps = regexp(/\\b([A-Z]+)\\b/)\nAllCaps.decode('HELLO')  // right([ 'HELLO', index: 0, input: 'HELLO' ])\nAllCaps.decode('hello')  // left(...)\nAllCaps.decode(123)      // left(...)\n```\n<!-- codegen:end -->\n\n<!-- codegen:start {preset: markdownFromJsdoc, source: src/combinators.ts, export: instanceOf} -->\n#### [instanceOf](https://github.com/mmkal/ts/tree/4578555/packages/io-ts-extra/src/combinators.ts#L85)\n\nValidates that a value is an instance of a class using the `instanceof` operator\n\n##### Example\n\n```typescript\nconst DateType = instanceOf(Date)\nDateType.is(new Date())  // right(Date(...))\nDateType.is('abc')       // left(...)\n```\n<!-- codegen:end -->\n","readmeFilename":"readme.md","license":"Apache-2.0","keywords":["typescript","validation","inference","codecs","types","runtime","io-ts","pattern matching"]}