{"bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"dist":{"shasum":"ac0af4371597dd6983f22318a6a652e0392e1d09","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-4.0.0-rc.2.tgz","fileCount":11,"integrity":"sha512-XHGqBQt0QOQBVaWpSA+GkxRZ+YCTfHvqFUU+pC540hGrmoQJ/b4Az3BFR9igkilJge4GvaCkV+NfVBYwoY8ftA==","signatures":[{"sig":"MEQCIETWb3ZTG3t5gWAmVDuK36mjHHEOuGfCDGO56l+veQWXAiAqG9vnOjcDMpvfoR3l16LlWc7YC6Uc1cjFhf/KoQ9rfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ2sOCRA9TVsSAnZWagAAO4AP/2Rt1nd5z1OpVALDbmOE\ntyFCdTIdokY80c2PgYy1i2OXIVd8q37gZdaa/8DWAPv1hMgFkP7X3TdaaWKG\nDZ0l88PNLpyl6JIey+1bPcYn8oUIfM/6gn0CAw17NCfD+kYKigsH+dr6OVk2\n1caeVHTNxnlQ0dVwYv3/ansiQLaM/IfMvMurV0yNYFLhOHHS5CGPSawGa8w3\nmZvtHP5JIcBS5wAmVI7uUc50+kX4Si2l3csGYxVqxqrjfUEJliEOpG/3RT9T\nLYFERxz4LefYM/aDIVpvX6t3HjuLqjSf32D7zqaSaV6XGkzSQVBZD/syTalQ\noDCSfg5Eml/8k7RX9Wh7GSzdoFGo301CoOp91pb+9xvkq/MHsFeSw7qw1K3A\n6guGWYXiW3VwivNaX0PkojhBmr/JpWXvLbbxeTllC7Nlp/OMBOhyOZOxpCRo\ncpvir/EYZglap5H8Xamg3uefB/RCmk92S2vxxbI/c0PXqE7HSJ0rhpRjSEwr\nc1V+RrZkhBGfNy3GNjP1bt+dKF4woPj20giPi1LSxkJ4eqeBZmXtjuwmKZs2\npZryr19jbe+sBhmObWlglgwc3ooks0FHZvLSQu5fcLnWbQwM41sJwe6yID9p\ng3YJASXM17MGDDmlO7GOhyvnHCV/0jbr1omU16AjEe/EMzyF+PHeoPTzwo0b\n/4nJ\r\n=M3mz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","name":"typescript-tuple","author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 4.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","gitHead":"61a382e33a3c69be8b059db344fb5f38937908d5","license":"MIT","scripts":{"lint":"tslint -p .","test":"pnpm run lint && pnpm run test:types","build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","postpublish":"pnpm run clean","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","keywords":["generic","tuple","typescript"],"repository":{"url":"git+https://github.com/ksxnodemodules/typescript-tuple.git","type":"git"},"_npmVersion":"6.14.7","description":"Generics to work with tuples in TypeScript","directories":{},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_nodeVersion":"14.8.0","dependencies":{"typescript-compare":"^0.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tslint":"^6.1.3","toolcheck":"^0.1.4","typescript":"~4.0.2","static-type-assert":"^4.0.0","clean-typescript-build":"^0.1.5","tslint-config-standard":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/typescript-tuple_4.0.0-rc.2_1598253838354_0.007425566713337828","host":"s3://npm-registry-packages"},"_id":"typescript-tuple@4.0.0-rc.2","version":"4.0.0-rc.2"}