├── src ├── file-adder │ ├── input1 │ ├── input2 │ ├── output │ ├── get-write-file-stream.js │ ├── get-read-file-stream.js │ └── index.js ├── big-node │ ├── print-heap.js │ └── start.sh ├── unicode │ ├── text-to-code-point-simple.js │ ├── code-point-to-text.js │ ├── get-raw-unicode.js │ └── text-to-code-point.js ├── number-array │ ├── number-array.js │ └── number-array.test.js ├── typed-arrays │ ├── typed-arrays.js │ └── typed-arrays.test.js └── decimal-string │ ├── decimal-string.js │ └── decimal-string.test.js ├── .gitignore ├── .babelrc ├── flow-typed └── npm │ ├── flow-bin_v0.x.x.js │ ├── mocha_v3.1.x.js │ ├── babel-preset-es2015_vx.x.x.js │ ├── babel-plugin-transform-flow-strip-types_vx.x.x.js │ ├── babel-plugin-transform-object-rest-spread_vx.x.x.js │ ├── babel-register_vx.x.x.js │ ├── babel-eslint_vx.x.x.js │ ├── babel-core_vx.x.x.js │ ├── chai_v3.5.x.js │ ├── eslint-plugin-flowtype_vx.x.x.js │ ├── rxjs_v5.0.x.js │ └── eslint_vx.x.x.js ├── .flowconfig ├── package.json ├── .eslintrc └── README.md /src/file-adder/input1: -------------------------------------------------------------------------------- 1 | 225 -------------------------------------------------------------------------------- /src/file-adder/input2: -------------------------------------------------------------------------------- 1 | 115 -------------------------------------------------------------------------------- /src/file-adder/output: -------------------------------------------------------------------------------- 1 | 3301 -------------------------------------------------------------------------------- /src/big-node/print-heap.js: -------------------------------------------------------------------------------- 1 | const v8 = require('v8'); 2 | 3 | console.log(v8.getHeapStatistics()); 4 | console.log(v8.getHeapSpaceStatistics()); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # editors 2 | .idea 3 | .vscode 4 | 5 | # library 6 | node_modules/ 7 | 8 | # MacOS 9 | .DS_Store 10 | 11 | # NPM 12 | npm-debug.log -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "es2015" 4 | ], 5 | "plugins": [ 6 | "transform-object-rest-spread", 7 | "transform-flow-strip-types" 8 | ] 9 | } -------------------------------------------------------------------------------- /flow-typed/npm/flow-bin_v0.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 6a5610678d4b01e13bbfbbc62bdaf583 2 | // flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x 3 | 4 | declare module "flow-bin" { 5 | declare module.exports: string; 6 | } 7 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | [include] 4 | 5 | [libs] 6 | 7 | [options] 8 | 9 | # Provides a way to suppress flow errors in the following line. 10 | # Example: // $FlowFixMe: This following line is borked because of reasons. 11 | suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe -------------------------------------------------------------------------------- /src/big-node/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Based on: http://blog.caustik.com/2012/04/11/escape-the-1-4gb-v8-heap-limit-in-node-js/ 3 | SIZE=8192 4 | DIR=`dirname $0` 5 | echo "Starting node with heap size: $SIZE" 6 | node --nouse_idle_notification --max_old_space_size=$SIZE $DIR/print-heap.js -------------------------------------------------------------------------------- /src/unicode/text-to-code-point-simple.js: -------------------------------------------------------------------------------- 1 | // Array.from splits the string into surrogate pairs 2 | 3 | const args = process.argv.slice(2); 4 | 5 | const codepoints = Array.from(args.join(' ')) 6 | .map(string => string.codePointAt(0)) 7 | .join(' '); 8 | 9 | process.stdout.write(codepoints); -------------------------------------------------------------------------------- /src/unicode/code-point-to-text.js: -------------------------------------------------------------------------------- 1 | const getText = (numbers) => 2 | numbers 3 | .map(number => String.fromCodePoint(number)) 4 | .join(''); 5 | 6 | const args = process.argv.slice(2); 7 | // called from command line 8 | if (args.length) { 9 | console.log(getText(args)); 10 | return; 11 | } 12 | 13 | process.stdin.setEncoding('utf8'); 14 | 15 | process.stdin.on('data', (chunk) => { 16 | console.log(getText(chunk.split(' '))); 17 | }); 18 | -------------------------------------------------------------------------------- /src/unicode/get-raw-unicode.js: -------------------------------------------------------------------------------- 1 | const leftPad = require('left-pad'); 2 | 3 | const args = process.argv.slice(2); 4 | // add a space between all the arguments 5 | const string = args.join(' '); 6 | 7 | const result = string 8 | // split string into 16 bit chucks 9 | .split('') 10 | // get codepoint (might be a 1/2 of a surrogate pair) 11 | .map((arg, index) => string.charCodeAt(index).toString(16).toUpperCase()) 12 | // pad values with '0' 13 | .map(code => `\\u${leftPad(code, 4, '0')}`) 14 | // join back together to one string 15 | .join(''); 16 | 17 | console.log(result); 18 | -------------------------------------------------------------------------------- /src/number-array/number-array.js: -------------------------------------------------------------------------------- 1 | export const add = (array1: number, array2: number) => { 2 | const biggestIndex = Math.max(array1.length, array2.length); 3 | 4 | // todo: fill out zeros 5 | const result = []; 6 | let shouldCarryOne = false; 7 | 8 | for (let i = 0; i < biggestIndex || shouldCarryOne ; i++) { 9 | const sum = (shouldCarryOne ? 1 : 0) + 10 | (array1[array1.length - 1 - i] || 0) + 11 | (array2[array2.length - 1 - i] || 0); 12 | 13 | shouldCarryOne = sum > 10; 14 | result[i] = shouldCarryOne ? sum - 10 : sum; 15 | } 16 | return result.reverse(); 17 | }; -------------------------------------------------------------------------------- /src/file-adder/get-write-file-stream.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import fs from 'fs'; 3 | import { Subject } from 'rxjs'; 4 | 5 | type Options = { 6 | highWaterMark: number, 7 | encoding: string, 8 | } 9 | 10 | const defaultOptions: Options = { 11 | // number of bits to read at a time 12 | highWaterMark: 1, 13 | encoding: 'utf8', 14 | }; 15 | 16 | export default (path: string, options?: Options = defaultOptions) => { 17 | const write$ = fs.createWriteStream(path, options); 18 | 19 | const output$ = new Subject(); 20 | 21 | // is there a better way to do this? 22 | output$.subscribe({ 23 | next: (value) => { 24 | console.log('about to write value to file', value); 25 | write$.write(`${value}`); 26 | }, 27 | }); 28 | 29 | return output$; 30 | }; -------------------------------------------------------------------------------- /src/file-adder/get-read-file-stream.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import fs from 'fs'; 3 | import { Observable } from 'rxjs'; 4 | 5 | type Options = { 6 | highWaterMark: number, 7 | encoding: string, 8 | } 9 | 10 | const defaultOptions: Options = { 11 | // number of bytes to read at a time 12 | highWaterMark: 1, 13 | encoding: 'utf8', 14 | }; 15 | 16 | export default (path: string, options?: Options = defaultOptions) => 17 | Observable.create((observer) => { 18 | const file$ = fs.createReadStream(path, options); 19 | 20 | file$.on('data', (chunk) => observer.next(chunk)); 21 | file$.on('end', () => observer.complete()); 22 | file$.on('close', () => observer.complete()); 23 | file$.on('error', (error) => observer.error(error)); 24 | 25 | // there seems to be no way to actually close the stream 26 | return () => file$.pause(); 27 | }); -------------------------------------------------------------------------------- /flow-typed/npm/mocha_v3.1.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 6b82cf8c1da27b4f0fa7a58e5ed5babf 2 | // flow-typed version: edf70dde46/mocha_v3.1.x/flow_>=v0.22.x 3 | 4 | type TestFunction = ((done: () => void) => void | Promise); 5 | 6 | declare var describe : { 7 | (name:string, spec:() => void): void; 8 | only(description:string, spec:() => void): void; 9 | skip(description:string, spec:() => void): void; 10 | timeout(ms:number): void; 11 | }; 12 | 13 | declare var context : typeof describe; 14 | 15 | declare var it : { 16 | (name:string, spec?:TestFunction): void; 17 | only(description:string, spec:TestFunction): void; 18 | skip(description:string, spec:TestFunction): void; 19 | timeout(ms:number): void; 20 | }; 21 | 22 | declare function before(method : TestFunction):void; 23 | declare function beforeEach(method : TestFunction):void; 24 | declare function after(method : TestFunction):void; 25 | declare function afterEach(method : TestFunction):void; 26 | -------------------------------------------------------------------------------- /src/file-adder/index.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import path from 'path'; 3 | import getReadFileStream from './get-read-file-stream'; 4 | import getWriteFileStream from './get-write-file-stream'; 5 | 6 | const input1$ = getReadFileStream(path.join(__dirname, 'input1')); 7 | const input2$ = getReadFileStream(path.join(__dirname, 'input2')); 8 | const output$ = getWriteFileStream(path.join(__dirname, 'output')); 9 | 10 | const joinedInput$ = input1$.zip(input2$); 11 | 12 | // could do something much more stream like here 13 | let shouldCarry1 = false; 14 | 15 | const add$ = joinedInput$.map(([value1: string, value2: string]): number => { 16 | const sum = Number(value1) + Number(value2) + (shouldCarry1 ? 1 : 0); 17 | shouldCarry1 = sum >= 10; 18 | return shouldCarry1 ? sum - 10 : sum; 19 | }); 20 | 21 | const write$ = add$.map(value => { 22 | output$.next(value); 23 | }); 24 | 25 | // start the stream 26 | write$.subscribe({ 27 | complete: () => { 28 | if (shouldCarry1) { 29 | output$.next(1); 30 | } 31 | output$.complete(); 32 | }, 33 | }); 34 | -------------------------------------------------------------------------------- /flow-typed/npm/babel-preset-es2015_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: e274260e2cde7c869fa7131517152e4d 2 | // flow-typed version: <>/babel-preset-es2015_v6.24.0/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-preset-es2015' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-preset-es2015' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-preset-es2015/lib/index' { 26 | declare module.exports: any; 27 | } 28 | 29 | // Filename aliases 30 | declare module 'babel-preset-es2015/lib/index.js' { 31 | declare module.exports: $Exports<'babel-preset-es2015/lib/index'>; 32 | } 33 | -------------------------------------------------------------------------------- /src/number-array/number-array.test.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import { describe, it } from 'mocha'; 3 | import { expect } from 'chai'; 4 | import { add } from './number-array'; 5 | 6 | describe('number array', () => { 7 | describe('addition', () => { 8 | it('should add single numbers', () => { 9 | expect(add([1], [2])).to.deep.equal([3]); 10 | }); 11 | 12 | it('should add two digit numbers', () => { 13 | // 12 + 11 14 | expect(add([1, 2], [1, 1])).to.deep.equal([2, 3]); 15 | }); 16 | 17 | it('should add a single and double digit numbers', () => { 18 | // 12 + 11 19 | expect(add([1, 2], [1])).to.deep.equal([1, 3]); 20 | }); 21 | 22 | it('should carry single digit additions', () => { 23 | expect(add([5], [6])).to.deep.equal([1, 1]); 24 | }); 25 | 26 | it('should carry two digit numbers in the first digit', () => { 27 | expect(add([15], [16])).to.deep.equal([2, 1]); 28 | }); 29 | 30 | it('should carry two digit numbers in the second digit', () => { 31 | expect(add([51], [52])).to.deep.equal([1, 0, 3]); 32 | }); 33 | }); 34 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lets-go-big", 3 | "version": "0.0.1", 4 | "main": "index.js", 5 | "repository": {}, 6 | "author": "Alex Reardon ", 7 | "license": "MIT", 8 | "scripts": { 9 | "test": "mocha ./src/**/*.test.js --compilers js:babel-register", 10 | "test:watch": "yarn run test -- --watch", 11 | "lint": "eslint src", 12 | "typecheck": "flow check", 13 | "file-adder": "babel-node src/file-adder", 14 | "print-big-heap": "./src/big-node/start.sh" 15 | }, 16 | "dependencies": { 17 | "invariant": "2.2.2", 18 | "left-pad": "1.1.3", 19 | "rxjs": "5.3.0" 20 | }, 21 | "devDependencies": { 22 | "babel-cli": "6.24.1", 23 | "babel-core": "6ds.24.0", 24 | "babel-eslint": "7.1.1", 25 | "babel-plugin-transform-flow-strip-types": "6.22.0", 26 | "babel-plugin-transform-object-rest-spread": "6.23.0", 27 | "babel-preset-es2015": "6.24.0", 28 | "babel-register": "6.24.0", 29 | "chai": "3.5.0", 30 | "eslint": "3.17.1", 31 | "eslint-plugin-flowtype": "2.30.3", 32 | "flow-bin": "0.41.0", 33 | "mocha": "3.2.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: e8b0984bf86f09f036c688877bf45a7e 2 | // flow-typed version: <>/babel-plugin-transform-flow-strip-types_v6.22.0/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-plugin-transform-flow-strip-types' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-plugin-transform-flow-strip-types' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-plugin-transform-flow-strip-types/lib/index' { 26 | declare module.exports: any; 27 | } 28 | 29 | // Filename aliases 30 | declare module 'babel-plugin-transform-flow-strip-types/lib/index.js' { 31 | declare module.exports: $Exports<'babel-plugin-transform-flow-strip-types/lib/index'>; 32 | } 33 | -------------------------------------------------------------------------------- /src/typed-arrays/typed-arrays.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | // A buffer that contains Number.MAX_SAFE_INTEGER bytes 3 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length 4 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer 5 | 6 | const overflowSize = 1; 7 | 8 | export const add = (array1: Uint8Array, array2: Uint8Array): ?Uint8Array => { 9 | const biggestIndex = Math.max(array1.length, array2.length); 10 | 11 | // not supported 12 | if (biggestIndex + overflowSize > (Math.pow(2, 30))) { 13 | return null; 14 | } 15 | 16 | // needs to be able to contain one overflow byte 17 | const buffer = new ArrayBuffer(biggestIndex + overflowSize); 18 | const view = new Uint8Array(buffer); 19 | 20 | let shouldOverflow = false; 21 | 22 | for (let i = 0; i < biggestIndex || shouldOverflow; i++) { 23 | const sum = 24 | (shouldOverflow ? 1 : 0) + 25 | (array1[array1.length - 1 - i] || 0) + 26 | (array2[array2.length - 1 - i] || 0); 27 | 28 | shouldOverflow = sum > 255; 29 | 30 | view[biggestIndex - i - 1 + overflowSize] = shouldOverflow ? sum - 255 : sum; 31 | } 32 | 33 | return view; 34 | }; -------------------------------------------------------------------------------- /flow-typed/npm/babel-plugin-transform-object-rest-spread_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 0de9c34ebbd935dd680fb4cbe7756d52 2 | // flow-typed version: <>/babel-plugin-transform-object-rest-spread_v6.23.0/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-plugin-transform-object-rest-spread' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-plugin-transform-object-rest-spread' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-plugin-transform-object-rest-spread/lib/index' { 26 | declare module.exports: any; 27 | } 28 | 29 | // Filename aliases 30 | declare module 'babel-plugin-transform-object-rest-spread/lib/index.js' { 31 | declare module.exports: $Exports<'babel-plugin-transform-object-rest-spread/lib/index'>; 32 | } 33 | -------------------------------------------------------------------------------- /flow-typed/npm/babel-register_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 6f57aa0a138f56d4f54c82e721def880 2 | // flow-typed version: <>/babel-register_v6.24.0/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-register' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-register' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-register/lib/browser' { 26 | declare module.exports: any; 27 | } 28 | 29 | declare module 'babel-register/lib/cache' { 30 | declare module.exports: any; 31 | } 32 | 33 | declare module 'babel-register/lib/node' { 34 | declare module.exports: any; 35 | } 36 | 37 | // Filename aliases 38 | declare module 'babel-register/lib/browser.js' { 39 | declare module.exports: $Exports<'babel-register/lib/browser'>; 40 | } 41 | declare module 'babel-register/lib/cache.js' { 42 | declare module.exports: $Exports<'babel-register/lib/cache'>; 43 | } 44 | declare module 'babel-register/lib/node.js' { 45 | declare module.exports: $Exports<'babel-register/lib/node'>; 46 | } 47 | -------------------------------------------------------------------------------- /src/unicode/text-to-code-point.js: -------------------------------------------------------------------------------- 1 | const newLineCodepoint = 10; 2 | 3 | const myGetCharCodeAt = (str, index) => { 4 | const current = str.charCodeAt(index); 5 | const previous = str.charCodeAt(index - 1); 6 | 7 | // https://mathiasbynens.be/notes/javascript-encoding 8 | const isHighSurrogate = charCode => charCode >= 0xD800 && charCode <= 0xDBFF; 9 | 10 | if (!isNaN(previous) && isHighSurrogate(previous)) { 11 | // already handled - can return 12 | return false; 13 | } 14 | 15 | if (!isHighSurrogate(current)) { 16 | return current; 17 | } 18 | 19 | // is a high surrogate 20 | 21 | const next = str.charCodeAt(index + 1); 22 | 23 | if (isNaN(next)) { 24 | throw new Error('previous was a high surrogate but no match low surrogate found'); 25 | } 26 | 27 | // could also use: (current - 0xD800) * 0x400 + next - 0xDC00 + 0x10000; 28 | // return `surrogate: ${str.codePointAt(index)} (${current}, ${next})`; 29 | return str.codePointAt(index); 30 | }; 31 | 32 | const getCodePoints = str => 33 | str.split('').map((char, index) => { 34 | return myGetCharCodeAt(str, index); 35 | }) 36 | // remove surrogate pairs 37 | .filter(value => value !== false) 38 | // removing new line feeds 39 | .filter(value => value !== newLineCodepoint) 40 | .join(' '); 41 | 42 | const args = process.argv.slice(2); 43 | 44 | // called from command line 45 | if (args.length) { 46 | console.log(getCodePoints(args.join(' '))); 47 | return; 48 | } 49 | 50 | // piped to 51 | process.stdin.setEncoding('utf8'); 52 | 53 | process.stdin.on('data', (chunk) => { 54 | console.log(getCodePoints(chunk)); 55 | }); -------------------------------------------------------------------------------- /src/typed-arrays/typed-arrays.test.js: -------------------------------------------------------------------------------- 1 | import { describe, it } from 'mocha'; 2 | import { expect } from 'chai'; 3 | import { add } from './typed-arrays'; 4 | 5 | // values can never be greater than 8 bits (0-255) 6 | // always return enough space for an overflow byte 7 | 8 | describe('typed arrays', () => { 9 | it('should add single digit values together', () => { 10 | const buffer1 = new ArrayBuffer(1); 11 | const view1 = new Uint8Array(buffer1); 12 | view1[0] = 1; 13 | const buffer2 = new ArrayBuffer(1); 14 | const view2 = new Uint8Array(buffer2); 15 | view2[0] = 1; 16 | 17 | const result = add(view1, view2); 18 | 19 | expect(result.length).to.equal(2); 20 | expect(result[0]).to.equal(0); 21 | expect(result[1]).to.equal(2); 22 | }); 23 | 24 | it('should add single digit numbers together with overflow of digit less that 1 byte', () => { 25 | const buffer1 = new ArrayBuffer(1); 26 | const view1 = new Uint8Array(buffer1); 27 | view1[0] = 6; 28 | const buffer2 = new ArrayBuffer(1); 29 | const view2 = new Uint8Array(buffer2); 30 | view2[0] = 7; 31 | 32 | const result = add(view1, view2); 33 | 34 | expect(result.length).to.equal(2); 35 | expect(result[0]).to.equal(0); 36 | expect(result[1]).to.equal(13); 37 | }); 38 | 39 | it('should overflow numbers greater than 1 byte', () => { 40 | const buffer1 = new ArrayBuffer(1); 41 | const view1 = new Uint8Array(buffer1); 42 | view1[0] = 255; 43 | const buffer2 = new ArrayBuffer(1); 44 | const view2 = new Uint8Array(buffer2); 45 | view2[0] = 100; 46 | 47 | const result = add(view1, view2); 48 | 49 | expect(result.length).to.equal(2); 50 | expect(result[0]).to.equal(1); 51 | expect(result[1]).to.equal(100); 52 | }); 53 | }); -------------------------------------------------------------------------------- /flow-typed/npm/babel-eslint_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 479f96f7f545e87ab86c11e8927013a9 2 | // flow-typed version: <>/babel-eslint_v7.1.1/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-eslint' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-eslint' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-eslint/babylon-to-espree/attachComments' { 26 | declare module.exports: any; 27 | } 28 | 29 | declare module 'babel-eslint/babylon-to-espree/convertTemplateType' { 30 | declare module.exports: any; 31 | } 32 | 33 | declare module 'babel-eslint/babylon-to-espree/index' { 34 | declare module.exports: any; 35 | } 36 | 37 | declare module 'babel-eslint/babylon-to-espree/toAST' { 38 | declare module.exports: any; 39 | } 40 | 41 | declare module 'babel-eslint/babylon-to-espree/toToken' { 42 | declare module.exports: any; 43 | } 44 | 45 | declare module 'babel-eslint/babylon-to-espree/toTokens' { 46 | declare module.exports: any; 47 | } 48 | 49 | // Filename aliases 50 | declare module 'babel-eslint/babylon-to-espree/attachComments.js' { 51 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/attachComments'>; 52 | } 53 | declare module 'babel-eslint/babylon-to-espree/convertTemplateType.js' { 54 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/convertTemplateType'>; 55 | } 56 | declare module 'babel-eslint/babylon-to-espree/index.js' { 57 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/index'>; 58 | } 59 | declare module 'babel-eslint/babylon-to-espree/toAST.js' { 60 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toAST'>; 61 | } 62 | declare module 'babel-eslint/babylon-to-espree/toToken.js' { 63 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toToken'>; 64 | } 65 | declare module 'babel-eslint/babylon-to-espree/toTokens.js' { 66 | declare module.exports: $Exports<'babel-eslint/babylon-to-espree/toTokens'>; 67 | } 68 | declare module 'babel-eslint/index' { 69 | declare module.exports: $Exports<'babel-eslint'>; 70 | } 71 | declare module 'babel-eslint/index.js' { 72 | declare module.exports: $Exports<'babel-eslint'>; 73 | } 74 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "eslint:recommended", 4 | "plugin:flowtype/recommended" 5 | ], 6 | "parser": "babel-eslint", 7 | "plugins": [ 8 | "flowtype" 9 | ], 10 | "env": { 11 | "node": true, 12 | "es6": true 13 | }, 14 | // custom rules 15 | "rules": { 16 | // http://eslint.org/docs/rules/quotes.html 17 | // allows 'single quotes', 'internal "double" quotes' and `es6 backticks` 18 | "quotes": [ 19 | "error", 20 | "single" 21 | ], 22 | // http://eslint.org/docs/rules/space-in-parens 23 | // forces no spaces inside of parentheses 24 | "space-in-parens": [ 25 | "error", 26 | "never" 27 | ], 28 | // http://eslint.org/docs/rules/array-bracket-spacing 29 | // forces no spaces inside of brackets 30 | "array-bracket-spacing": [ 31 | "error", 32 | "never" 33 | ], 34 | // http://eslint.org/docs/rules/computed-property-spacing 35 | // forces no spacing within computed properties 36 | "computed-property-spacing": [ 37 | "error", 38 | "never" 39 | ], 40 | // http://eslint.org/docs/rules/object-curly-spacing 41 | // require padding inside curly braces 42 | "object-curly-spacing": [ 43 | "error", 44 | "always" 45 | ], 46 | // http://eslint.org/docs/rules/keyword-spacing 47 | // forces spacing after keywords (eg 'if') 48 | "keyword-spacing": "error", 49 | // http://eslint.org/docs/rules/key-spacing 50 | // forces spacing after keys in an object 51 | "key-spacing": [ 52 | "error", 53 | { 54 | "beforeColon": false, 55 | "afterColon": true 56 | } 57 | ], 58 | // http://eslint.org/docs/rules/comma-dangle 59 | // require trailing commas in multiline object literals 60 | "comma-dangle": [ 61 | "error", 62 | { 63 | "arrays": "always-multiline", 64 | "objects": "always-multiline", 65 | "imports": "always-multiline", 66 | "exports": "always-multiline", 67 | "functions": "always-multiline" 68 | } 69 | ], 70 | // http://eslint.org/docs/rules/comma-spacing 71 | // enforce spacing before and after comma 72 | "comma-spacing": [ 73 | "error", 74 | { 75 | "before": false, 76 | "after": true 77 | } 78 | ], 79 | // http://eslint.org/docs/rules/comma-style 80 | // commas on the end of lines and not the start of new ones 81 | "comma-style": [ 82 | "error", 83 | "last" 84 | ], 85 | // http://eslint.org/docs/rules/semi 86 | // forces the use of semi-colons where valid 87 | "semi": [ 88 | "error", 89 | "always" 90 | ], 91 | // http://eslint.org/docs/rules/no-unused-vars 92 | // rule for detecting unused vars (and imports) 93 | "no-unused-vars": "error", 94 | // http://eslint.org/doc/rules/no-multiple-empty-lines 95 | // rule for detecting more than 1 empty line 96 | "no-multiple-empty-lines": [ 97 | "error", 98 | { 99 | "max": 1 100 | } 101 | ], 102 | // http://eslint.org/docs/rules/prefer-spread 103 | // rule for enforcing use of spread operator over .apply() 104 | "prefer-spread": "error", 105 | // http://eslint.org/docs/rules/prefer-template 106 | // rule for enforcing backtick string interpolation over concatenation 107 | "prefer-template": "error", 108 | // http://eslint.org/docs/rules/no-unneeded-ternary 109 | // rule for detecting ternary statements when a simpler alternative exists 110 | "no-unneeded-ternary": [ 111 | "error", 112 | { 113 | "defaultAssignment": false 114 | } 115 | ], 116 | // http://eslint.org/docs/rules/dot-notation 117 | // rule for enforcing dot notation for accessing an object's properties 118 | "dot-notation": "error", 119 | // http://eslint.org/docs/rules/no-multi-spaces 120 | // rule for detecting extra spaces 121 | "no-multi-spaces": "error", 122 | // http://eslint.org/docs/rules/no-console 123 | // allow console.* 124 | "no-console": "off" 125 | } 126 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Big number demos 2 | 3 | Hi there! This repo contains a few assorted tools and scripts associated with doing big numbers in JavaScript. It is designed to be a companion to my talk at [jsconf.eu 2017](http://2017.jsconf.eu/speakers/alexander-reardon-lets-go-big.html). 4 | 5 | The code in this repo is **not intended for production use** and is intended only for illustrative purposes. If you are looking for a production supported big number implementation check out [bignumber.js](https://github.com/MikeMcl/bignumber.js/) 6 | 7 | This is by no means an exhaustive list on how you can do big numbers. This is just a collection of approaches and utilities related to the approaches I explored in my talk - and a few others. 8 | 9 | ## Decimal string (`/decimal-string`) 10 | 11 | This is the most feature rich big number implementation. It contains a mostly working number system written using base 10 decimal strings (eg `'-0.202'`). 12 | 13 | To see the tests for this system run `yarn run test`. It supports a suprising amount of use cases. 14 | 15 | ## Typed arrays (`/typed-arrays`) 16 | 17 | This is very basic implementation of big numbers using typed arrays. It treats the values as if they are formatted in with the smallest values on the left (LTR) rather than how numbers usually work with the smallest values on the right (RTL). This implementation is super limited and only supports a basic `add` function. 18 | 19 | There are some basic tests for this system which you can run using `yarn run test`. 20 | 21 | ## Arrays of number (`/number-array`) 22 | 23 | I did not go into this one and I have not explored it greatly. The idea is to store a array of `Number` values and treat each slot in the array as following on from the value before. This should yield a maximum value of: 24 | 25 | `(Number.MAX_SAFE_INTEGER)^(max length of array) -1` 26 | 27 | ## File adder (`/file-adder`) 28 | 29 | This little program reads in the utf8 files `input1` and `input2` one byte (one digit) at a time. It then adds the digits and saves the output one digit at a time to `output`. If the sum of the values is greater than `10` it carries the `10` to the next addition. This file can be used as the basis to add numbers that are much bigger in memory size then node could process in memory. 30 | 31 | How it works: 32 | 33 | - open a file stream to `input1` and `input2` 34 | - read in one digit at a time from each file 35 | - add the digits from the files 36 | - save the output one digit at a time to `output`. 37 | 38 | You can run this application by executing: 39 | 40 | ```bash 41 | yarn run file-adder 42 | ``` 43 | 44 | *Limitations for simplicity* 45 | - It reads in values left to right which means that it treats numbers in the reverse order to what we usually store numbers (right to left). 46 | - It assumes that the input files are of the same length 47 | 48 | ## Increasing the amount of memory `node` has 49 | 50 | If you want to store numbers in strings you can need up to `268.4 MB` to store one string. You can find yourself quickly hitting up against the [1.76 GB memory allowance](http://prestonparry.com/articles/IncreaseNodeJSMemorySize/) (heap size) for node. 51 | 52 | This little script will create a `node` process with 8GB of memory and then print some details about the heap sizes: 53 | 54 | ```bash 55 | yarn run print-big-heap 56 | ``` 57 | 58 | ## Unicode helpers (`/unicode`) 59 | 60 | One of the approaches for big numbers that I put forward is the use of strings. In order to work with strings correctly you need to know about how they work. While I was putting my talk together I created a number of helpers that allowed me to 61 | 62 | There are collection of unitilities in this folder that help expose the inner workings of unicode and JavaScript character encoding. 63 | 64 | ### `text-to-code-point.js` 65 | 66 | This file takes an input string and will return you the unicode code points for every character 67 | 68 | ```js 69 | node src/unicode/text-to-code-point.js hello world 70 | // 104 101 108 108 111 32 119 111 114 108 100 71 | 72 | node src/unicode/text-to-code-point.js 👌 73 | // 128076 74 | ``` 75 | 76 | You can use this in combination with `code-point-to-text.js` to get the original text: 77 | 78 | ```js 79 | node src/unicode/text-to-code-point.js hello world | node src/unicode/code-point-to-text.js 80 | // hello world 81 | ``` 82 | 83 | ### `text-to-code-point-simple.js` 84 | 85 | This has the same functionality as `text-to-code-point` but uses a different mechanism. This one relies on the fact that `Array.from('string')` splits the string into codepoints directly while correctly treating surrogate pairs as single codepoints. 86 | 87 | ### `code-point-to-text.js` 88 | 89 | This file takes a series of unicode code points and converts them into text. This is the inverse of `text-to-code-point.js`. 90 | 91 | ```js 92 | node src/unicode/code-point-to-text.js 128512 93 | // 😀 94 | ``` 95 | 96 | You can use this in combination with `text-to-code-point.js` to get the original codepoint: 97 | 98 | ```js 99 | node src/unicode/code-point-to-text.js 128512 | node src/unicode/text-to-code-point.js 100 | // 128512 101 | ``` 102 | 103 | ### `get-raw-unicode.js` 104 | 105 | This file takes an input string and converts it to its JavaScript unicode string equivilant. 106 | 107 | ```js 108 | node src/unicode/get-raw-unicode.js abc 109 | // \u0061\u0062\u0063 110 | 111 | // app.js 112 | const value = '\u0061\u0062\u0063'; 113 | value == 'abc' // true. 114 | 115 | // correctly handles surrogate pairs 116 | node src/unicode/get-raw-unicode.js 👌 117 | // \uD83D\uDC4C 118 | 119 | // app.js 120 | const value = '\uD83D\uDC4C'; 121 | value == '👌' // true. 122 | ``` -------------------------------------------------------------------------------- /flow-typed/npm/babel-core_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 0077825129674a7191931d598de03895 2 | // flow-typed version: <>/babel-core_v6.24.0/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'babel-core' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'babel-core' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'babel-core/lib/api/browser' { 26 | declare module.exports: any; 27 | } 28 | 29 | declare module 'babel-core/lib/api/node' { 30 | declare module.exports: any; 31 | } 32 | 33 | declare module 'babel-core/lib/helpers/get-possible-plugin-names' { 34 | declare module.exports: any; 35 | } 36 | 37 | declare module 'babel-core/lib/helpers/get-possible-preset-names' { 38 | declare module.exports: any; 39 | } 40 | 41 | declare module 'babel-core/lib/helpers/merge' { 42 | declare module.exports: any; 43 | } 44 | 45 | declare module 'babel-core/lib/helpers/normalize-ast' { 46 | declare module.exports: any; 47 | } 48 | 49 | declare module 'babel-core/lib/helpers/resolve-from-possible-names' { 50 | declare module.exports: any; 51 | } 52 | 53 | declare module 'babel-core/lib/helpers/resolve-plugin' { 54 | declare module.exports: any; 55 | } 56 | 57 | declare module 'babel-core/lib/helpers/resolve-preset' { 58 | declare module.exports: any; 59 | } 60 | 61 | declare module 'babel-core/lib/helpers/resolve' { 62 | declare module.exports: any; 63 | } 64 | 65 | declare module 'babel-core/lib/store' { 66 | declare module.exports: any; 67 | } 68 | 69 | declare module 'babel-core/lib/tools/build-external-helpers' { 70 | declare module.exports: any; 71 | } 72 | 73 | declare module 'babel-core/lib/transformation/file/index' { 74 | declare module.exports: any; 75 | } 76 | 77 | declare module 'babel-core/lib/transformation/file/logger' { 78 | declare module.exports: any; 79 | } 80 | 81 | declare module 'babel-core/lib/transformation/file/metadata' { 82 | declare module.exports: any; 83 | } 84 | 85 | declare module 'babel-core/lib/transformation/file/options/build-config-chain' { 86 | declare module.exports: any; 87 | } 88 | 89 | declare module 'babel-core/lib/transformation/file/options/config' { 90 | declare module.exports: any; 91 | } 92 | 93 | declare module 'babel-core/lib/transformation/file/options/index' { 94 | declare module.exports: any; 95 | } 96 | 97 | declare module 'babel-core/lib/transformation/file/options/option-manager' { 98 | declare module.exports: any; 99 | } 100 | 101 | declare module 'babel-core/lib/transformation/file/options/parsers' { 102 | declare module.exports: any; 103 | } 104 | 105 | declare module 'babel-core/lib/transformation/file/options/removed' { 106 | declare module.exports: any; 107 | } 108 | 109 | declare module 'babel-core/lib/transformation/internal-plugins/block-hoist' { 110 | declare module.exports: any; 111 | } 112 | 113 | declare module 'babel-core/lib/transformation/internal-plugins/shadow-functions' { 114 | declare module.exports: any; 115 | } 116 | 117 | declare module 'babel-core/lib/transformation/pipeline' { 118 | declare module.exports: any; 119 | } 120 | 121 | declare module 'babel-core/lib/transformation/plugin-pass' { 122 | declare module.exports: any; 123 | } 124 | 125 | declare module 'babel-core/lib/transformation/plugin' { 126 | declare module.exports: any; 127 | } 128 | 129 | declare module 'babel-core/lib/util' { 130 | declare module.exports: any; 131 | } 132 | 133 | declare module 'babel-core/register' { 134 | declare module.exports: any; 135 | } 136 | 137 | // Filename aliases 138 | declare module 'babel-core/index' { 139 | declare module.exports: $Exports<'babel-core'>; 140 | } 141 | declare module 'babel-core/index.js' { 142 | declare module.exports: $Exports<'babel-core'>; 143 | } 144 | declare module 'babel-core/lib/api/browser.js' { 145 | declare module.exports: $Exports<'babel-core/lib/api/browser'>; 146 | } 147 | declare module 'babel-core/lib/api/node.js' { 148 | declare module.exports: $Exports<'babel-core/lib/api/node'>; 149 | } 150 | declare module 'babel-core/lib/helpers/get-possible-plugin-names.js' { 151 | declare module.exports: $Exports<'babel-core/lib/helpers/get-possible-plugin-names'>; 152 | } 153 | declare module 'babel-core/lib/helpers/get-possible-preset-names.js' { 154 | declare module.exports: $Exports<'babel-core/lib/helpers/get-possible-preset-names'>; 155 | } 156 | declare module 'babel-core/lib/helpers/merge.js' { 157 | declare module.exports: $Exports<'babel-core/lib/helpers/merge'>; 158 | } 159 | declare module 'babel-core/lib/helpers/normalize-ast.js' { 160 | declare module.exports: $Exports<'babel-core/lib/helpers/normalize-ast'>; 161 | } 162 | declare module 'babel-core/lib/helpers/resolve-from-possible-names.js' { 163 | declare module.exports: $Exports<'babel-core/lib/helpers/resolve-from-possible-names'>; 164 | } 165 | declare module 'babel-core/lib/helpers/resolve-plugin.js' { 166 | declare module.exports: $Exports<'babel-core/lib/helpers/resolve-plugin'>; 167 | } 168 | declare module 'babel-core/lib/helpers/resolve-preset.js' { 169 | declare module.exports: $Exports<'babel-core/lib/helpers/resolve-preset'>; 170 | } 171 | declare module 'babel-core/lib/helpers/resolve.js' { 172 | declare module.exports: $Exports<'babel-core/lib/helpers/resolve'>; 173 | } 174 | declare module 'babel-core/lib/store.js' { 175 | declare module.exports: $Exports<'babel-core/lib/store'>; 176 | } 177 | declare module 'babel-core/lib/tools/build-external-helpers.js' { 178 | declare module.exports: $Exports<'babel-core/lib/tools/build-external-helpers'>; 179 | } 180 | declare module 'babel-core/lib/transformation/file/index.js' { 181 | declare module.exports: $Exports<'babel-core/lib/transformation/file/index'>; 182 | } 183 | declare module 'babel-core/lib/transformation/file/logger.js' { 184 | declare module.exports: $Exports<'babel-core/lib/transformation/file/logger'>; 185 | } 186 | declare module 'babel-core/lib/transformation/file/metadata.js' { 187 | declare module.exports: $Exports<'babel-core/lib/transformation/file/metadata'>; 188 | } 189 | declare module 'babel-core/lib/transformation/file/options/build-config-chain.js' { 190 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/build-config-chain'>; 191 | } 192 | declare module 'babel-core/lib/transformation/file/options/config.js' { 193 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/config'>; 194 | } 195 | declare module 'babel-core/lib/transformation/file/options/index.js' { 196 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/index'>; 197 | } 198 | declare module 'babel-core/lib/transformation/file/options/option-manager.js' { 199 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/option-manager'>; 200 | } 201 | declare module 'babel-core/lib/transformation/file/options/parsers.js' { 202 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/parsers'>; 203 | } 204 | declare module 'babel-core/lib/transformation/file/options/removed.js' { 205 | declare module.exports: $Exports<'babel-core/lib/transformation/file/options/removed'>; 206 | } 207 | declare module 'babel-core/lib/transformation/internal-plugins/block-hoist.js' { 208 | declare module.exports: $Exports<'babel-core/lib/transformation/internal-plugins/block-hoist'>; 209 | } 210 | declare module 'babel-core/lib/transformation/internal-plugins/shadow-functions.js' { 211 | declare module.exports: $Exports<'babel-core/lib/transformation/internal-plugins/shadow-functions'>; 212 | } 213 | declare module 'babel-core/lib/transformation/pipeline.js' { 214 | declare module.exports: $Exports<'babel-core/lib/transformation/pipeline'>; 215 | } 216 | declare module 'babel-core/lib/transformation/plugin-pass.js' { 217 | declare module.exports: $Exports<'babel-core/lib/transformation/plugin-pass'>; 218 | } 219 | declare module 'babel-core/lib/transformation/plugin.js' { 220 | declare module.exports: $Exports<'babel-core/lib/transformation/plugin'>; 221 | } 222 | declare module 'babel-core/lib/util.js' { 223 | declare module.exports: $Exports<'babel-core/lib/util'>; 224 | } 225 | declare module 'babel-core/register.js' { 226 | declare module.exports: $Exports<'babel-core/register'>; 227 | } 228 | -------------------------------------------------------------------------------- /flow-typed/npm/chai_v3.5.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: bad3c03afed474d4fb576a7afe069701 2 | // flow-typed version: 731a6ee6c3/chai_v3.5.x/flow_>=v0.24.0 3 | 4 | declare module "chai" { 5 | 6 | declare type ExpectChain = { 7 | and: ExpectChain, 8 | at: ExpectChain, 9 | be: ExpectChain, 10 | been: ExpectChain, 11 | have: ExpectChain, 12 | has: ExpectChain, 13 | is: ExpectChain, 14 | of: ExpectChain, 15 | same: ExpectChain, 16 | that: ExpectChain, 17 | to: ExpectChain, 18 | which: ExpectChain, 19 | with: ExpectChain, 20 | 21 | not: ExpectChain, 22 | deep: ExpectChain, 23 | any: ExpectChain, 24 | all: ExpectChain, 25 | 26 | a: ExpectChain & (type: string) => ExpectChain, 27 | an: ExpectChain & (type: string) => ExpectChain, 28 | 29 | include: ExpectChain & (value: mixed) => ExpectChain, 30 | includes: ExpectChain & (value: mixed) => ExpectChain, 31 | contain: ExpectChain & (value: mixed) => ExpectChain, 32 | contains: ExpectChain & (value: mixed) => ExpectChain, 33 | 34 | eql: (value: T) => ExpectChain, 35 | equal: (value: T) => ExpectChain, 36 | equals: (value: T) => ExpectChain, 37 | 38 | above: (value: T & number) => ExpectChain, 39 | least: (value: T & number) => ExpectChain, 40 | below: (value: T & number) => ExpectChain, 41 | most: (value: T & number) => ExpectChain, 42 | within: (start: T & number, finish: T & number) => ExpectChain, 43 | 44 | instanceof: (constructor: mixed) => ExpectChain, 45 | property: ( 46 |

(name: string, value?: P) => ExpectChain

47 | & (name: string) => ExpectChain 48 | ), 49 | 50 | length: (value: number) => ExpectChain | ExpectChain, 51 | lengthOf: (value: number) => ExpectChain, 52 | 53 | match: (regex: RegExp) => ExpectChain, 54 | string: (string: string) => ExpectChain, 55 | 56 | key: (key: string) => ExpectChain, 57 | keys: (key: string | Array, ...keys: Array) => ExpectChain, 58 | 59 | throw: ( 60 | err: Class | Error | RegExp | string, 61 | errMsgMatcher?: RegExp | string, 62 | msg?: string) => ExpectChain, 63 | 64 | respondTo: (method: string) => ExpectChain, 65 | itself: ExpectChain, 66 | 67 | satisfy: (method: (value: T) => bool) => ExpectChain, 68 | 69 | closeTo: (expected: T & number, delta: number) => ExpectChain, 70 | 71 | members: (set: mixed) => ExpectChain, 72 | oneOf: (list: Array) => ExpectChain, 73 | 74 | change: (obj: mixed, key: string) => ExpectChain, 75 | increase: (obj: mixed, key: string) => ExpectChain, 76 | decrease: (obj: mixed, key: string) => ExpectChain, 77 | 78 | // dirty-chai 79 | ok: () => ExpectChain, 80 | true: () => ExpectChain, 81 | false: () => ExpectChain, 82 | null: () => ExpectChain, 83 | undefined: () => ExpectChain, 84 | exist: () => ExpectChain, 85 | empty: () => ExpectChain, 86 | 87 | // chai-immutable 88 | size: (n: number) => ExpectChain, 89 | 90 | // sinon-chai 91 | called: () => ExpectChain, 92 | callCount: (n: number) => ExpectChain, 93 | calledOnce: () => ExpectChain, 94 | calledBefore: (spy: mixed) => ExpectChain, 95 | calledAfter: (spy: mixed) => ExpectChain, 96 | calledWith: (...args: Array) => ExpectChain, 97 | calledWithMatch: (...args: Array) => ExpectChain, 98 | calledWithExactly: (...args: Array) => ExpectChain, 99 | 100 | // chai-as-promised 101 | eventually: ExpectChain, 102 | resolvedWith: (value: mixed) => Promise & ExpectChain, 103 | resolved: () => Promise & ExpectChain, 104 | rejectedWith: (value: mixed) => Promise & ExpectChain, 105 | rejected: () => Promise & ExpectChain, 106 | notify: (callback: () => mixed) => ExpectChain, 107 | 108 | // chai-subset 109 | containSubset: (obj: Object | Object[]) => ExpectChain 110 | }; 111 | 112 | declare function expect(actual: T): ExpectChain; 113 | 114 | declare function use(plugin: (chai: Object, utils: Object) => void): void; 115 | 116 | declare class assert { 117 | static(expression: mixed, message?: string): void; 118 | static fail(actual: mixed, expected: mixed, message?: string, operator?: string): void; 119 | 120 | static isOk(object: mixed, message?: string): void; 121 | static isNotOk(object: mixed, message?: string): void; 122 | 123 | static equal(actual: mixed, expected: mixed, message?: string): void; 124 | static notEqual(actual: mixed, expected: mixed, message?: string): void; 125 | 126 | static strictEqual(act: mixed, exp: mixed, msg?: string): void; 127 | static notStrictEqual(act: mixed, exp: mixed, msg?: string): void; 128 | 129 | static deepEqual(act: mixed, exp: mixed, msg?: string): void; 130 | static notDeepEqual(act: mixed, exp: mixed, msg?: string): void; 131 | 132 | static ok(val: mixed, msg?: string): void; 133 | static isTrue(val: mixed, msg?: string): void; 134 | static isNotTrue(val: mixed, msg?: string): void; 135 | static isFalse(val: mixed, msg?: string): void; 136 | static isNotFalse(val: mixed, msg?: string): void; 137 | 138 | static isNull(val: mixed, msg?: string): void; 139 | static isNotNull(val: mixed, msg?: string): void; 140 | 141 | static isUndefined(val: mixed, msg?: string): void; 142 | static isDefined(val: mixed, msg?: string): void; 143 | 144 | static isNaN(val: mixed, msg?: string): void; 145 | static isNotNaN(val: mixed, msg?: string): void; 146 | 147 | static isAbove(val: number, abv: number, msg?: string): void; 148 | static isBelow(val: number, blw: number, msg?: string): void; 149 | 150 | static isAtMost(val: number, atmst: number, msg?: string): void; 151 | static isAtLeast(val: number, atlst: number, msg?: string): void; 152 | 153 | static isFunction(val: mixed, msg?: string): void; 154 | static isNotFunction(val: mixed, msg?: string): void; 155 | 156 | static isObject(val: mixed, msg?: string): void; 157 | static isNotObject(val: mixed, msg?: string): void; 158 | 159 | static isArray(val: mixed, msg?: string): void; 160 | static isNotArray(val: mixed, msg?: string): void; 161 | 162 | static isString(val: mixed, msg?: string): void; 163 | static isNotString(val: mixed, msg?: string): void; 164 | 165 | static isNumber(val: mixed, msg?: string): void; 166 | static isNotNumber(val: mixed, msg?: string): void; 167 | 168 | static isBoolean(val: mixed, msg?: string): void; 169 | static isNotBoolean(val: mixed, msg?: string): void; 170 | 171 | static typeOf(val: mixed, type: string, msg?: string): void; 172 | static notTypeOf(val: mixed, type: string, msg?: string): void; 173 | 174 | static instanceOf(val: mixed, constructor: Function, msg?: string): void; 175 | static notInstanceOf(val: mixed, constructor: Function, msg?: string): void; 176 | 177 | static include(exp: string, inc: mixed, msg?: string): void; 178 | static include(exp: Array, inc: T, msg?: string): void; 179 | 180 | static notInclude(exp: string, inc: mixed, msg?: string): void; 181 | static notInclude(exp: Array, inc: T, msg?: string): void; 182 | 183 | static match(exp: mixed, re: RegExp, msg?: string): void; 184 | static notMatch(exp: mixed, re: RegExp, msg?: string): void; 185 | 186 | static property(obj: Object, prop: string, msg?: string): void; 187 | static notProperty(obj: Object, prop: string, msg?: string): void; 188 | static deepProperty(obj: Object, prop: string, msg?: string): void; 189 | static notDeepProperty(obj: Object, prop: string, msg?: string): void; 190 | 191 | static propertyVal(obj: Object, prop: string, val: mixed, msg?: string): void; 192 | static propertyNotVal(obj: Object, prop: string, val: mixed, msg?: string): void; 193 | 194 | static deepPropertyVal(obj: Object, prop: string, val: mixed, msg?: string): void; 195 | static deepPropertyNotVal(obj: Object, prop: string, val: mixed, msg?: string): void; 196 | 197 | static lengthOf(exp: mixed, len: number, msg?: string): void; 198 | 199 | static throws( 200 | func: () => any, 201 | err?: Class | Error | RegExp | string, 202 | errorMsgMatcher?: string | RegExp, 203 | msg?: string): void; 204 | static doesNotThrow( 205 | func: () => any, 206 | err?: Class | Error | RegExp | string, 207 | errorMsgMatcher?: string | RegExp, 208 | msg?: string): void; 209 | } 210 | 211 | declare var config: { 212 | includeStack: boolean, 213 | showDiff: boolean, 214 | truncateThreshold: number 215 | }; 216 | } 217 | -------------------------------------------------------------------------------- /src/decimal-string/decimal-string.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import invariant from 'invariant'; 3 | 4 | type Options = {| 5 | maxLength: number 6 | |} 7 | 8 | // https://regex101.com/r/DT8BYP/1 9 | // group 1 = sign (optional '-') 10 | // group 2 = integer component 11 | // group 3 = decimal 12 | const supportedNumberFormat = /^(-?)(\d+)(?:\.(\d+))?$/; 13 | 14 | const isFormatSupported = (value: string): boolean => 15 | supportedNumberFormat.test(value); 16 | 17 | // Max string sizes 18 | // ## IE9 19 | // http://stackoverflow.com/questions/13367391/is-there-a-limit-on-length-of-the-key-string-in-js-object 20 | // max size: 2^30 21 | // 22 | // ## ES7 23 | // http://www.ecma-international.org/ecma-262/7.0/index.html#sec-ecmascript-language-types-string-type 24 | // max size: 2^53 - 1 25 | // this is the same as Number.MAX_SAFE_INTEGER so string.length will always return a valid number 26 | 27 | const maxStringLength = Math.pow(2, 30); 28 | 29 | const defaultOptions: Options = { maxLength: maxStringLength }; 30 | 31 | const validateArgs = (fn: Function) => { 32 | return (...args: string[]) => { 33 | args.forEach((arg) => { 34 | if (!isFormatSupported(arg)) { 35 | throw new Error(`invalid number format: ${arg}`); 36 | } 37 | }); 38 | 39 | return fn(...args); 40 | }; 41 | }; 42 | 43 | const isEqual = (original: string, target: string): boolean => 44 | original === target; 45 | 46 | export const isGreaterThan = validateArgs((original: string, target: string): boolean => { 47 | const sanitised = getTermsWithEqualDecimalComponents(original, target); 48 | if (sanitised === null) { 49 | return false; 50 | } 51 | 52 | const { term1, term2 } = sanitised; 53 | 54 | if (term1.length !== term2.length) { 55 | return term1.length > term2.length; 56 | } 57 | 58 | // lengths are the same - now need to figure out which is bigger 59 | for (let i = 0; i < term1.length; i++) { 60 | const number1 = Number(term1.charAt(i)); 61 | const number2 = Number(term2.charAt(i)); 62 | if (number1 !== number2) { 63 | return number1 > number2; 64 | } 65 | } 66 | 67 | return false; 68 | }); 69 | 70 | const isLessThan = (original: string, target: string): boolean => 71 | !isEqual(original, target) && !isGreaterThan(original, target); 72 | 73 | const getAddition = (term1: string, term2: string, options?: Options = defaultOptions): ?string => { 74 | const maxDigitLength = Math.max(term1.length, term2.length); 75 | 76 | let digitToCarry = 0; 77 | let result = ''; 78 | 79 | for (let i = 0; i < maxDigitLength || digitToCarry != 0; i++) { 80 | if (result.length + 1 > options.maxLength) { 81 | return null; 82 | } 83 | 84 | // reading numbers from right to left 85 | 86 | const digit1 = Number(term1.charAt(term1.length - 1 - i)) || 0; 87 | const digit2 = Number(term2.charAt(term2.length - 1 - i)) || 0; 88 | 89 | const sum = digit1 + digit2 + digitToCarry; 90 | const isTooBig = sum >= 10; 91 | const resultDigit = isTooBig ? sum - 10 : sum; 92 | result = `${resultDigit}${result}`; 93 | digitToCarry = isTooBig ? Number(String(sum).charAt(0)) : 0; 94 | } 95 | 96 | return result; 97 | }; 98 | 99 | // Can combine comparision operators to create new ones 100 | // Useful but unused at this stage. 101 | //const combine = (...functions: Function[]) => (...args: string[]) => 102 | // functions.every((fn: Function) => Boolean(fn(...args))); 103 | 104 | const either = (...functions: Function[]) => (...args: string[]) => 105 | functions.some((fn: Function) => Boolean(fn(...args))); 106 | 107 | export const isGreaterThanOrEqualTo = either(isEqual, isGreaterThan); 108 | export const isLessThanOrEqualTo = either(isEqual, isLessThan); 109 | 110 | const addZeros = (value: string, count: number): string => { 111 | const zeros = Array.from({ length: count }).map(() => '0').join(''); 112 | return `${value}${zeros}`; 113 | }; 114 | 115 | const removeLeadingZeros = (value: string): string => { 116 | if (value.charAt(0) === '0') { 117 | invariant(value.length, 'cannot remove leading zeros from invalid number'); 118 | // drop the first character 119 | return removeLeadingZeros(value.slice(1, value.length)); 120 | } 121 | 122 | // add a zero in 123 | if (value.charAt(0) === '.') { 124 | return `0${value}`; 125 | } 126 | 127 | return value; 128 | }; 129 | 130 | // using recursion - but should be okay with ES6 tail call optimization 131 | // removes unneeded digits and decimal point 132 | const removeTrailingZeros = (value: string): string => { 133 | if (value.charAt(value.length - 1) === '0') { 134 | // remove trailing zero and move on 135 | return removeTrailingZeros(value.slice(0, value.length - 1)); 136 | } 137 | 138 | // Reached a '.' without any decimals. 139 | // Remove the decimal point an return the value. 140 | if (value.charAt(value.length - 1) === '.') { 141 | return value.slice(0, value.length - 1); 142 | } 143 | 144 | // a value found that is not '0' or '.' 145 | return value; 146 | }; 147 | 148 | const removeDecimalPoint = (value: string): string => value.replace('.', ''); 149 | 150 | type Components = { 151 | term1: string, 152 | term2: string, 153 | decimalOffset: number 154 | } 155 | 156 | const getTermsWithEqualDecimalComponents = (term1: string, term2: string): Components => { 157 | const term1HasADecimal = term1.includes('.'); 158 | const term2HasADecimal = term2.includes('.'); 159 | 160 | if (!term1HasADecimal && !term2HasADecimal) { 161 | return { 162 | term1, 163 | term2, 164 | decimalOffset: 0, 165 | }; 166 | } 167 | 168 | const term1DecimalOffset = term1HasADecimal ? (term1.length - 1) - term1.indexOf('.') : 0; 169 | const term2DecimalOffset = term2HasADecimal ? (term2.length - 1) - term2.indexOf('.') : 0; 170 | 171 | if (term1DecimalOffset === term2DecimalOffset) { 172 | return { 173 | term1: removeDecimalPoint(term1), 174 | term2: removeDecimalPoint(term2), 175 | decimalOffset: term1DecimalOffset, 176 | }; 177 | } 178 | 179 | // TODO: this may exceed the max size of a string 180 | 181 | // term2 is bigger 182 | if (term1DecimalOffset > term2DecimalOffset) { 183 | return { 184 | term1: removeDecimalPoint(term1), 185 | term2: removeDecimalPoint(addZeros(term2, term1DecimalOffset - term2DecimalOffset)), 186 | decimalOffset: term1DecimalOffset, 187 | }; 188 | } 189 | 190 | // term2 is bigger 191 | return { 192 | term1: removeDecimalPoint(addZeros(term1, term2DecimalOffset - term1DecimalOffset)), 193 | term2: removeDecimalPoint(term2), 194 | decimalOffset: term2DecimalOffset, 195 | }; 196 | 197 | }; 198 | 199 | export const add = (term1: string, term2: string, options?: Options = defaultOptions): ?string => { 200 | invariant(isFormatSupported(term1) && isFormatSupported(term2), 'terms must be formatted correctly'); 201 | 202 | const sanitised = getTermsWithEqualDecimalComponents(term1, term2); 203 | if (sanitised === null) { 204 | return null; 205 | } 206 | 207 | const result = getAddition(sanitised.term1, sanitised.term2, options); 208 | if (result == null) { 209 | return null; 210 | } 211 | 212 | // no decimal manipulation required 213 | if (sanitised.decimalOffset === 0) { 214 | return formatOutput(result); 215 | } 216 | 217 | const decimalIndex = result.length - sanitised.decimalOffset; 218 | return formatOutput(`${result.slice(0, decimalIndex)}.${result.slice(decimalIndex)}`); 219 | }; 220 | 221 | const replaceAt = (original: string, index: number, insert: string) => 222 | `${original.substr(0, index)}${insert}${original.substr(insert.length + index)}`; 223 | 224 | const formatOutput = (value: string): string => { 225 | const hasDecimal = value.includes('.'); 226 | if (!hasDecimal) { 227 | return removeLeadingZeros(value); 228 | } 229 | 230 | return removeLeadingZeros(removeTrailingZeros(value)); 231 | }; 232 | 233 | const getSubtraction = (bigger: string, smaller: string): ?string => { 234 | let result = ''; 235 | 236 | for (let index = 0; index < bigger.length; index++) { 237 | const digit1Position = bigger.length - 1 - index; 238 | const digit2Position = smaller.length - 1 - index; 239 | const digit1 = Number(bigger.charAt(digit1Position)); 240 | 241 | if (digit2Position < 0) { 242 | //TODO: could optimise and just return the remaning digits of bigger 243 | result = `${digit1}${result}`; 244 | continue; 245 | } 246 | 247 | const digit2 = Number(smaller.charAt(digit2Position)); 248 | 249 | if (digit2 <= digit1) { 250 | result = `${digit1 - digit2}${result}`; 251 | continue; 252 | } 253 | 254 | // digit2 is greater than digit1 255 | // need to borrow some more digits from bigger 256 | for (let searchPosition = digit1Position - 1; searchPosition >= 0; searchPosition--) { 257 | const getUpdatedBigger = replaceAt.bind(null, bigger, searchPosition); 258 | 259 | // if you cannot grab anything - set it to 9 and keep going up 260 | if (bigger.charAt(searchPosition) === '0') { 261 | bigger = getUpdatedBigger('9'); 262 | continue; 263 | } 264 | // found something we can use! 265 | bigger = getUpdatedBigger(String(Number(bigger.charAt(searchPosition)) - 1)); 266 | break; 267 | } 268 | 269 | result = `${(digit1 + 10) - digit2}${result}`; 270 | } 271 | 272 | return result; 273 | }; 274 | 275 | export const subtract = validateArgs((term1: string, term2: string): ?string => { 276 | if (isEqual(term1, term2)) { 277 | return '0'; 278 | } 279 | 280 | const sanitised: Components = getTermsWithEqualDecimalComponents(term1, term2); 281 | if (sanitised == null) { 282 | return null; 283 | } 284 | 285 | const isTerm1Bigger = isGreaterThan(sanitised.term1, sanitised.term2); 286 | const args = isTerm1Bigger ? [sanitised.term1, sanitised.term2] : [sanitised.term2, sanitised.term1]; 287 | const result = getSubtraction(...args); 288 | 289 | if (result == null) { 290 | return null; 291 | } 292 | 293 | const sign = `${isTerm1Bigger ? '' : '-'}`; 294 | 295 | if (sanitised.decimalOffset === 0) { 296 | return `${sign}${formatOutput(result)}`; 297 | } 298 | 299 | const decimalIndex = result.length - sanitised.decimalOffset; 300 | const unformattedResult = `${result.slice(0, decimalIndex)}.${result.slice(decimalIndex)}`; 301 | return `${sign}${formatOutput(unformattedResult)}`; 302 | 303 | // const resultWithDecimal = removeTrailingZerosFromDecimal(`${result.slice(0, decimalIndex)}.${result.slice(decimalIndex)}`); 304 | // const integerPrefix = resultWithDecimal.charAt(0) === '.' ? '0' : ''; 305 | // return `${sign}${integerPrefix}${resultWithDecimal}`; 306 | }); 307 | 308 | export const multiply = validateArgs((value: string, multiplyBy: string) => { 309 | if (multiplyBy === '0') { 310 | return '0'; 311 | } 312 | 313 | if (multiplyBy === '1') { 314 | return value; 315 | } 316 | 317 | if (value === '1') { 318 | return multiplyBy; 319 | } 320 | 321 | let count = '0'; 322 | let result = '0'; 323 | while (count !== multiplyBy) { 324 | const newCount = add(count, '1'); 325 | const newResult = add(result, value); 326 | if (newCount == null || newResult == null) { 327 | return null; 328 | } 329 | count = newCount; 330 | result = newResult; 331 | } 332 | 333 | return result; 334 | }); 335 | 336 | export const divide = validateArgs((value: string, divideBy: string) => { 337 | if (divideBy === '0') { 338 | return null; 339 | } 340 | 341 | if (divideBy === '1') { 342 | return value; 343 | } 344 | 345 | if (value === divideBy) { 346 | return '1'; 347 | } 348 | 349 | let count = '0'; 350 | let remainder = value; 351 | while (isGreaterThanOrEqualTo(remainder, divideBy)) { 352 | const newCurrent = subtract(remainder, divideBy); 353 | const newCount = add(count, '1'); 354 | 355 | if (newCount == null || newCurrent == null) { 356 | return null; 357 | } 358 | 359 | count = newCount; 360 | remainder = newCurrent; 361 | } 362 | 363 | // no decimal component 364 | if (remainder === '0') { 365 | return count; 366 | } 367 | 368 | return `${count} + ${remainder}/${divideBy}`; 369 | }); -------------------------------------------------------------------------------- /flow-typed/npm/eslint-plugin-flowtype_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: cbb05cd070538fe74a0a1962e9ccb630 2 | // flow-typed version: <>/eslint-plugin-flowtype_v2.30.3/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'eslint-plugin-flowtype' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'eslint-plugin-flowtype' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'eslint-plugin-flowtype/bin/readmeAssertions' { 26 | declare module.exports: any; 27 | } 28 | 29 | declare module 'eslint-plugin-flowtype/dist/index' { 30 | declare module.exports: any; 31 | } 32 | 33 | declare module 'eslint-plugin-flowtype/dist/rules/booleanStyle' { 34 | declare module.exports: any; 35 | } 36 | 37 | declare module 'eslint-plugin-flowtype/dist/rules/defineFlowType' { 38 | declare module.exports: any; 39 | } 40 | 41 | declare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle' { 42 | declare module.exports: any; 43 | } 44 | 45 | declare module 'eslint-plugin-flowtype/dist/rules/genericSpacing' { 46 | declare module.exports: any; 47 | } 48 | 49 | declare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys' { 50 | declare module.exports: any; 51 | } 52 | 53 | declare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes' { 54 | declare module.exports: any; 55 | } 56 | 57 | declare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes' { 58 | declare module.exports: any; 59 | } 60 | 61 | declare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter' { 62 | declare module.exports: any; 63 | } 64 | 65 | declare module 'eslint-plugin-flowtype/dist/rules/requireParameterType' { 66 | declare module.exports: any; 67 | } 68 | 69 | declare module 'eslint-plugin-flowtype/dist/rules/requireReturnType' { 70 | declare module.exports: any; 71 | } 72 | 73 | declare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation' { 74 | declare module.exports: any; 75 | } 76 | 77 | declare module 'eslint-plugin-flowtype/dist/rules/requireVariableType' { 78 | declare module.exports: any; 79 | } 80 | 81 | declare module 'eslint-plugin-flowtype/dist/rules/semi' { 82 | declare module.exports: any; 83 | } 84 | 85 | declare module 'eslint-plugin-flowtype/dist/rules/sortKeys' { 86 | declare module.exports: any; 87 | } 88 | 89 | declare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon' { 90 | declare module.exports: any; 91 | } 92 | 93 | declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket' { 94 | declare module.exports: any; 95 | } 96 | 97 | declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon' { 98 | declare module.exports: any; 99 | } 100 | 101 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions' { 102 | declare module.exports: any; 103 | } 104 | 105 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer' { 106 | declare module.exports: any; 107 | } 108 | 109 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty' { 110 | declare module.exports: any; 111 | } 112 | 113 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType' { 114 | declare module.exports: any; 115 | } 116 | 117 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression' { 118 | declare module.exports: any; 119 | } 120 | 121 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical' { 122 | declare module.exports: any; 123 | } 124 | 125 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index' { 126 | declare module.exports: any; 127 | } 128 | 129 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter' { 130 | declare module.exports: any; 131 | } 132 | 133 | declare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch' { 134 | declare module.exports: any; 135 | } 136 | 137 | declare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing' { 138 | declare module.exports: any; 139 | } 140 | 141 | declare module 'eslint-plugin-flowtype/dist/rules/useFlowType' { 142 | declare module.exports: any; 143 | } 144 | 145 | declare module 'eslint-plugin-flowtype/dist/rules/validSyntax' { 146 | declare module.exports: any; 147 | } 148 | 149 | declare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation' { 150 | declare module.exports: any; 151 | } 152 | 153 | declare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch' { 154 | declare module.exports: any; 155 | } 156 | 157 | declare module 'eslint-plugin-flowtype/dist/utilities/getParameterName' { 158 | declare module.exports: any; 159 | } 160 | 161 | declare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens' { 162 | declare module.exports: any; 163 | } 164 | 165 | declare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens' { 166 | declare module.exports: any; 167 | } 168 | 169 | declare module 'eslint-plugin-flowtype/dist/utilities/index' { 170 | declare module.exports: any; 171 | } 172 | 173 | declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile' { 174 | declare module.exports: any; 175 | } 176 | 177 | declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation' { 178 | declare module.exports: any; 179 | } 180 | 181 | declare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes' { 182 | declare module.exports: any; 183 | } 184 | 185 | declare module 'eslint-plugin-flowtype/dist/utilities/quoteName' { 186 | declare module.exports: any; 187 | } 188 | 189 | declare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers' { 190 | declare module.exports: any; 191 | } 192 | 193 | // Filename aliases 194 | declare module 'eslint-plugin-flowtype/bin/readmeAssertions.js' { 195 | declare module.exports: $Exports<'eslint-plugin-flowtype/bin/readmeAssertions'>; 196 | } 197 | declare module 'eslint-plugin-flowtype/dist/index.js' { 198 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/index'>; 199 | } 200 | declare module 'eslint-plugin-flowtype/dist/rules/booleanStyle.js' { 201 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/booleanStyle'>; 202 | } 203 | declare module 'eslint-plugin-flowtype/dist/rules/defineFlowType.js' { 204 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/defineFlowType'>; 205 | } 206 | declare module 'eslint-plugin-flowtype/dist/rules/delimiterDangle.js' { 207 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/delimiterDangle'>; 208 | } 209 | declare module 'eslint-plugin-flowtype/dist/rules/genericSpacing.js' { 210 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/genericSpacing'>; 211 | } 212 | declare module 'eslint-plugin-flowtype/dist/rules/noDupeKeys.js' { 213 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noDupeKeys'>; 214 | } 215 | declare module 'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes.js' { 216 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noPrimitiveConstructorTypes'>; 217 | } 218 | declare module 'eslint-plugin-flowtype/dist/rules/noWeakTypes.js' { 219 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/noWeakTypes'>; 220 | } 221 | declare module 'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter.js' { 222 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/objectTypeDelimiter'>; 223 | } 224 | declare module 'eslint-plugin-flowtype/dist/rules/requireParameterType.js' { 225 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireParameterType'>; 226 | } 227 | declare module 'eslint-plugin-flowtype/dist/rules/requireReturnType.js' { 228 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireReturnType'>; 229 | } 230 | declare module 'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation.js' { 231 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireValidFileAnnotation'>; 232 | } 233 | declare module 'eslint-plugin-flowtype/dist/rules/requireVariableType.js' { 234 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/requireVariableType'>; 235 | } 236 | declare module 'eslint-plugin-flowtype/dist/rules/semi.js' { 237 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/semi'>; 238 | } 239 | declare module 'eslint-plugin-flowtype/dist/rules/sortKeys.js' { 240 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/sortKeys'>; 241 | } 242 | declare module 'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon.js' { 243 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceAfterTypeColon'>; 244 | } 245 | declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket.js' { 246 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeGenericBracket'>; 247 | } 248 | declare module 'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon.js' { 249 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/spaceBeforeTypeColon'>; 250 | } 251 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions.js' { 252 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateFunctions'>; 253 | } 254 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer.js' { 255 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeIndexer'>; 256 | } 257 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty.js' { 258 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateObjectTypeProperty'>; 259 | } 260 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType.js' { 261 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateReturnType'>; 262 | } 263 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression.js' { 264 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypeCastExpression'>; 265 | } 266 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical.js' { 267 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/evaluateTypical'>; 268 | } 269 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index.js' { 270 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/index'>; 271 | } 272 | declare module 'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter.js' { 273 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeColonSpacing/reporter'>; 274 | } 275 | declare module 'eslint-plugin-flowtype/dist/rules/typeIdMatch.js' { 276 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/typeIdMatch'>; 277 | } 278 | declare module 'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing.js' { 279 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/unionIntersectionSpacing'>; 280 | } 281 | declare module 'eslint-plugin-flowtype/dist/rules/useFlowType.js' { 282 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/useFlowType'>; 283 | } 284 | declare module 'eslint-plugin-flowtype/dist/rules/validSyntax.js' { 285 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/rules/validSyntax'>; 286 | } 287 | declare module 'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation.js' { 288 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/checkFlowFileAnnotation'>; 289 | } 290 | declare module 'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch.js' { 291 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/fuzzyStringMatch'>; 292 | } 293 | declare module 'eslint-plugin-flowtype/dist/utilities/getParameterName.js' { 294 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getParameterName'>; 295 | } 296 | declare module 'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens.js' { 297 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenAfterParens'>; 298 | } 299 | declare module 'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens.js' { 300 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/getTokenBeforeParens'>; 301 | } 302 | declare module 'eslint-plugin-flowtype/dist/utilities/index.js' { 303 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/index'>; 304 | } 305 | declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFile.js' { 306 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFile'>; 307 | } 308 | declare module 'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation.js' { 309 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/isFlowFileAnnotation'>; 310 | } 311 | declare module 'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes.js' { 312 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/iterateFunctionNodes'>; 313 | } 314 | declare module 'eslint-plugin-flowtype/dist/utilities/quoteName.js' { 315 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/quoteName'>; 316 | } 317 | declare module 'eslint-plugin-flowtype/dist/utilities/spacingFixers.js' { 318 | declare module.exports: $Exports<'eslint-plugin-flowtype/dist/utilities/spacingFixers'>; 319 | } 320 | -------------------------------------------------------------------------------- /src/decimal-string/decimal-string.test.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import { describe, it } from 'mocha'; 3 | import { expect } from 'chai'; 4 | import { add, subtract, multiply, divide, isGreaterThan } from './decimal-string'; 5 | 6 | describe('decimal string', () => { 7 | describe('is greater than', () => { 8 | describe('single digits', () => { 9 | it('should return false when the values are equal', () => { 10 | expect(isGreaterThan('3', '3')).to.equal(false); 11 | }); 12 | 13 | it('should return true when the first value is bigger than the second', () => { 14 | expect(isGreaterThan('5', '3')).to.equal(true); 15 | }); 16 | 17 | it('should return false when the value is smaller than the second', () => { 18 | expect(isGreaterThan('2', '4')).to.equal(false); 19 | }); 20 | }); 21 | 22 | describe('double digitis against single digits', () => { 23 | it('should return true when the first value is bigger than the second', () => { 24 | expect(isGreaterThan('15', '3')).to.equal(true); 25 | }); 26 | 27 | it('should return false when the value is smaller than the second', () => { 28 | expect(isGreaterThan('2', '14')).to.equal(false); 29 | }); 30 | }); 31 | 32 | describe('double digitis against double digits', () => { 33 | it('should return false when the values are equal', () => { 34 | expect(isGreaterThan('42', '42')).to.equal(false); 35 | }); 36 | 37 | it('should return true when the first value is bigger than the second', () => { 38 | expect(isGreaterThan('87', '32')).to.equal(true); 39 | }); 40 | 41 | it('should return false when the value is smaller than the second', () => { 42 | expect(isGreaterThan('29', '50')).to.equal(false); 43 | }); 44 | }); 45 | }); 46 | 47 | describe('is greater than or equal to', () => { 48 | 49 | }); 50 | describe('addition', () => { 51 | describe('term validation', () => { 52 | // for every item in an array, add a value that has a '-' prefix 53 | const withNegative = (array: string[]): string[] => array.concat(array.map(item => `-${item}`)); 54 | 55 | const invalidTerms: string[] = withNegative(['abc', '10a', 'a10', '10.', '10.a', '10.0a', 'a10.4', '.1']); 56 | const validTerms: string[] = withNegative(['1', '10', '1.0', '1.1', '0.1', '10.001', '10.00']); 57 | 58 | it('should throw if the first term is invalid', () => { 59 | invalidTerms.forEach(arg => { 60 | expect(() => add(arg, '10')).to.throw(); 61 | }); 62 | }); 63 | 64 | it('should throw if the second term is invalid', () => { 65 | invalidTerms.forEach(arg => { 66 | expect(() => add('10', arg)).to.throw(); 67 | }); 68 | }); 69 | 70 | it('should not throw if the first term is valid', () => { 71 | validTerms.forEach(arg => { 72 | expect(() => add(arg, '10')).to.not.throw(); 73 | }); 74 | }); 75 | 76 | it('should not throw if the second term is valid', () => { 77 | validTerms.forEach(arg => { 78 | expect(() => add('10', arg)).to.not.throw(); 79 | }); 80 | }); 81 | }); 82 | 83 | describe('single digits', () => { 84 | it('should add with no overflow', () => { 85 | expect(add('1', '2')).to.equal('3'); 86 | }); 87 | 88 | it('should add with overflow', () => { 89 | expect(add('6', '8')).to.equal('14'); 90 | }); 91 | }); 92 | 93 | describe('two digitis', () => { 94 | it('should add with one digit numbers', () => { 95 | expect(add('10', '2')).to.equal('12'); 96 | }); 97 | 98 | it('should add with one digit numbers with overflow', () => { 99 | expect(add('15', '6')).to.equal('21'); 100 | }); 101 | 102 | it('should add with no overflow', () => { 103 | expect(add('24', '15')).to.equal('39'); 104 | }); 105 | 106 | it('should add with overflow in the first digit', () => { 107 | expect(add('15', '16')).to.equal('31'); 108 | }); 109 | 110 | it('should add with overflow in the second digit', () => { 111 | expect(add('50', '61')).to.equal('111'); 112 | }); 113 | 114 | it('should add with overflow in every digit', () => { 115 | expect(add('99', '99')).to.equal('198'); 116 | }); 117 | }); 118 | 119 | describe('three digits', () => { 120 | it('should add with overflow in first digit', () => { 121 | expect(add('102', '9')).to.equal('111'); 122 | }); 123 | 124 | it('should add with overflow in second digit', () => { 125 | expect(add('120', '81')).to.equal('201'); 126 | }); 127 | 128 | it('should add with overflow in the first digit causing overflow in the second digit', () => { 129 | expect(add('154', '57')).to.equal('211'); 130 | }); 131 | 132 | it('should add with overflow in the first and second digit', () => { 133 | expect(add('199', '99')).to.equal('298'); 134 | }); 135 | 136 | it('should add with overflow in every digit', () => { 137 | expect(add('999', '999')).to.equal('1998'); 138 | }); 139 | }); 140 | 141 | describe('decimals', () => { 142 | it('should add decimals', () => { 143 | expect(add('0.2', '0.1')).to.equal('0.3'); 144 | }); 145 | 146 | it('should add decimals with overflow', () => { 147 | expect(add('0.01', '0.02')).to.equal('0.03'); 148 | }); 149 | 150 | it('should add decimals with integer overflow', () => { 151 | expect(add('1.6', '1.6')).to.equal('3.2'); 152 | }); 153 | 154 | it('should add decimals with integer overflow and no remainder', () => { 155 | expect(add('0.5', '0.5')).to.equal('1'); 156 | }); 157 | 158 | it('should add a one digit decimal with a two digit decimal', () => { 159 | expect(add('0.2', '0.02')).to.equal('0.22'); 160 | }); 161 | 162 | it('should add two digit decimals with overflow', () => { 163 | expect(add('0.15', '0.16')).to.equal('0.31'); 164 | }); 165 | 166 | it('should add two digit decimals with overflow and no remainder in the second digit', () => { 167 | expect(add('0.15', '0.15')).to.equal('0.3'); 168 | }); 169 | 170 | it('should add two digit decimals with overflow and no decimal remainder', () => { 171 | expect(add('0.45', '0.55')).to.equal('1'); 172 | }); 173 | 174 | it('should add numbers with and without decimals', () => { 175 | expect(add('101', '1.2')).to.equal('102.2'); 176 | }); 177 | }); 178 | 179 | describe('it should return null if the overflow is bigger than the max number size', () => { 180 | it('should return null when exceeding the maximum allowable length', () => { 181 | expect(add('20', '20', { maxLength: 2 })).to.equal('40'); 182 | expect(add('50', '51', { maxLength: 2 })).to.equal(null); 183 | }); 184 | }); 185 | 186 | describe('breaking through Number.MAX_SAFE_INTEGER', () => { 187 | it('should be able to deal with numbers greater than Number.MAX_SAFE_INTEGER', () => { 188 | // regular numbers fail 189 | expect(`${9007199254740991 + 2}`).to.not.equal('9007199254740993'); 190 | 191 | // this method succeeds 192 | expect(add('9007199254740991', '2')).to.equal('9007199254740993'); 193 | }); 194 | }); 195 | }); 196 | 197 | describe('subtraction', () => { 198 | it('should return 0 if the digits are the same', () => { 199 | expect(subtract('1', '1')).to.equal('0'); 200 | expect(subtract('22', '22')).to.equal('0'); 201 | expect(subtract('333', '333')).to.equal('0'); 202 | }); 203 | 204 | describe('single digits', () => { 205 | it('should subtract with no overflow', () => { 206 | expect(subtract('2', '1')).to.equal('1'); 207 | }); 208 | 209 | it('should subtract going from positive to negative', () => { 210 | expect(subtract('2', '3')).to.equal('-1'); 211 | }); 212 | }); 213 | 214 | describe('double digits', () => { 215 | it('should subtract one digit numbers', () => { 216 | expect(subtract('16', '5')).to.equal('11'); 217 | }); 218 | 219 | it('should subtract one digit numbers with overflow', () => { 220 | expect(subtract('10', '5')).to.equal('5'); 221 | }); 222 | 223 | it('should subtract two digit numbers', () => { 224 | expect(subtract('22', '11')).to.equal('11'); 225 | }); 226 | 227 | it('should subtract two digit numbers with overflow in the first digit', () => { 228 | expect(subtract('22', '13')).to.equal('9'); 229 | }); 230 | 231 | it('should subtract two digit numbers with overflow in the second digit', () => { 232 | expect(subtract('22', '30')).to.equal('-8'); 233 | }); 234 | 235 | it('should subtract two digit numbers with overflow in every digit', () => { 236 | expect(subtract('11', '22')).to.equal('-11'); 237 | }); 238 | }); 239 | 240 | describe('tripple digits', () => { 241 | it('should subtract one digit numbers', () => { 242 | expect(subtract('101', '1')).to.equal('100'); 243 | }); 244 | 245 | it('should subtract one digit numbers with overflow', () => { 246 | expect(subtract('100', '1')).to.equal('99'); 247 | }); 248 | 249 | it('should subtract two digit numbers', () => { 250 | expect(subtract('111', '11')).to.equal('100'); 251 | }); 252 | 253 | it('should subtract two digit numbers with overflow in the first digit', () => { 254 | expect(subtract('121', '12')).to.equal('109'); 255 | }); 256 | 257 | it('should subtract two digit numbers with overflow in every digit', () => { 258 | expect(subtract('100', '99')).to.equal('1'); 259 | }); 260 | 261 | it('should subtract three digit numbers', () => { 262 | expect(subtract('222', '111')).to.equal('111'); 263 | }); 264 | 265 | it('should subtract three digit numbers with overflow in the first digit', () => { 266 | expect(subtract('212', '103')).to.equal('109'); 267 | }); 268 | 269 | it('should subtract three digit numbers with overflow in the second digit', () => { 270 | expect(subtract('501', '111')).to.equal('390'); 271 | }); 272 | 273 | it('should subtract three digit numbers with overflow in the first two second digits', () => { 274 | expect(subtract('500', '111')).to.equal('389'); 275 | }); 276 | 277 | it('should subtract three digit numbers with overflow in every digit', () => { 278 | expect(subtract('111', '999')).to.equal('-888'); 279 | }); 280 | }); 281 | 282 | describe('decimals', () => { 283 | it('should subtract decimals', () => { 284 | expect(subtract('0.2', '0.1')).to.equal('0.1'); 285 | }); 286 | 287 | it('should subtract decimals with overflow', () => { 288 | expect(subtract('0.01', '0.02')).to.equal('-0.01'); 289 | }); 290 | 291 | it('should subtract decimals with integer overflow', () => { 292 | expect(subtract('10.6', '5.7')).to.equal('4.9'); 293 | }); 294 | 295 | it('should subtract decimals with integer overflow and no remainder', () => { 296 | expect(subtract('0.5', '0.5')).to.equal('0'); 297 | }); 298 | 299 | it('should subtract a one digit decimal with a two digit decimal', () => { 300 | expect(subtract('0.2', '0.02')).to.equal('0.18'); 301 | }); 302 | 303 | it('should subtract two digit decimals with overflow', () => { 304 | expect(subtract('0.16', '0.15')).to.equal('0.01'); 305 | }); 306 | 307 | it('should subtract two digit decimals with overflow and no remainder in the first digit', () => { 308 | expect(subtract('0.15', '0.05')).to.equal('0.1'); 309 | }); 310 | 311 | it('should subtract numbers with and without decimals', () => { 312 | expect(subtract('101', '1.2')).to.equal('99.8'); 313 | }); 314 | }); 315 | 316 | // describe('it should return null if the overflow is bigger than the max number size', () => { 317 | // it('should return null when exceeding the maximum allowable length', () => { 318 | // expect(add('20', '20', { maxLength: 2 })).to.equal('40'); 319 | // expect(add('50', '51', { maxLength: 2 })).to.equal(null); 320 | // }); 321 | // }); 322 | 323 | describe('breaking through Number.MIN_SAFE_INTEGER', () => { 324 | it('should be able to deal with numbers smaller than Number.MIN_SAFE_INTEGER', () => { 325 | // regular numbers fail 326 | expect(`${-9007199254740991 - 2}`).to.not.equal('-9007199254740993'); 327 | 328 | // this method succeeds 329 | expect(subtract('0', '9007199254740993')).to.equal('-9007199254740993'); 330 | }); 331 | }); 332 | }); 333 | 334 | describe('multiplication', () => { 335 | it('should return 0 when anything mulitiplied by 0 is 0', () => { 336 | ['1', '12', '102', '101011'].forEach(value => { 337 | expect(multiply(value, '0')).to.equal('0'); 338 | }); 339 | }); 340 | 341 | it('should return the original value when mutliplied by 1', () => { 342 | ['1', '12', '102', '101011'].forEach(value => { 343 | expect(multiply(value, '1')).to.equal(value); 344 | }); 345 | }); 346 | 347 | describe('single digits', () => { 348 | it('should multiply with no overflow', () => { 349 | expect(multiply('2', '4')).to.equal('8'); 350 | }); 351 | 352 | it('should multiply with overflow', () => { 353 | expect(multiply('4', '4')).to.equal('16'); 354 | }); 355 | }); 356 | 357 | describe('double digits', () => { 358 | it('should multiply with a single digit', () => { 359 | expect(multiply('10', '5')).to.equal('50'); 360 | }); 361 | 362 | it('should multiply with one overflow', () => { 363 | expect(multiply('10', '10')).to.equal('100'); 364 | }); 365 | 366 | it('should multiply with lots of overflow', () => { 367 | expect(multiply('99', '99')).to.equal('9801'); 368 | }); 369 | }); 370 | 371 | describe('tripple digits', () => { 372 | it('should multiply with single digits', () => { 373 | expect(multiply('100', '5')).to.equal('500'); 374 | }); 375 | 376 | it('should multiply with double digits and one overflow', () => { 377 | expect(multiply('100', '10')).to.equal('1000'); 378 | }); 379 | 380 | it('should multiply with double digits and two overflow digits', () => { 381 | expect(multiply('500', '20')).to.equal('10000'); 382 | }); 383 | 384 | it('should multiply with double digits with maximum overflow', () => { 385 | expect(multiply('999', '99')).to.equal('98901'); 386 | }); 387 | 388 | it('should mulitply with tripple digits', () => { 389 | expect(multiply('100', '100')).to.equal('10000'); 390 | }); 391 | 392 | it('sould multiple with maxium overflow', () => { 393 | expect(multiply('999', '999')).to.equal('998001'); 394 | }); 395 | }); 396 | 397 | describe('decimals', () => { 398 | 399 | }); 400 | }); 401 | 402 | describe('division', () => { 403 | it('should return null when anything is divided by zero', () => { 404 | ['1', '12', '102', '101011'].forEach(value => { 405 | expect(divide(value, '0')).to.equal(null); 406 | }); 407 | }); 408 | 409 | it('should return the original value when it is divided by one', () => { 410 | ['1', '12', '102', '101011'].forEach(value => { 411 | expect(divide(value, '1')).to.equal(value); 412 | }); 413 | }); 414 | 415 | describe('single digits', () => { 416 | it('should divide with factors', () => { 417 | expect(divide('6', '2')).to.equal('3'); 418 | }); 419 | 420 | it('should divide with simple remainders', () => { 421 | expect(divide('3', '2')).to.equal('1 + 1/2'); 422 | }); 423 | 424 | it('should divide with simple remainders - with decimals being factors', () => { 425 | expect(divide('6', '4')).to.equal('1 + 2/4'); 426 | }); 427 | 428 | it('should divide with harder remainders', () => { 429 | expect(divide('7', '6')).to.equal('1 + 1/6'); 430 | }); 431 | }); 432 | 433 | describe('double digits', () => { 434 | it('should divide with single digit factors', () => { 435 | expect(divide('20', '5')).to.equal('4'); 436 | }); 437 | 438 | it('should divide with single digits and remainders', () => { 439 | expect(divide('82', '5')).to.equal('16 + 2/5'); 440 | }); 441 | 442 | it('should divide with double digit factors', () => { 443 | expect(divide('20', '10')).to.equal('2'); 444 | }); 445 | }); 446 | }); 447 | }); -------------------------------------------------------------------------------- /flow-typed/npm/rxjs_v5.0.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: bcc579222e2f2efa181af7a5ed2f18b9 2 | // flow-typed version: 5d68cb629f/rxjs_v5.0.x/flow_>=v0.34.x 3 | 4 | // FIXME(samgoldman) Remove top-level interface once Babel supports 5 | // `declare interface` syntax. 6 | // FIXME(samgoldman) Remove this once rxjs$Subject can mixin rxjs$Observer 7 | interface rxjs$IObserver<-T> { 8 | next(value: T): mixed; 9 | error(error: any): mixed; 10 | complete(): mixed; 11 | } 12 | 13 | type rxjs$PartialObserver<-T> = 14 | | { 15 | +next: (value: T) => mixed; 16 | +error?: (error: any) => mixed; 17 | +complete?: () => mixed; 18 | } 19 | | { 20 | +next?: (value: T) => mixed; 21 | +error: (error: any) => mixed; 22 | +complete?: () => mixed; 23 | } 24 | | { 25 | +next?: (value: T) => mixed; 26 | +error?: (error: any) => mixed; 27 | +complete: () => mixed; 28 | } 29 | 30 | interface rxjs$ISubscription { 31 | unsubscribe(): void; 32 | } 33 | 34 | type rxjs$TeardownLogic = rxjs$ISubscription | () => void; 35 | 36 | type rxjs$EventListenerOptions = { 37 | capture?: boolean; 38 | passive?: boolean; 39 | once?: boolean; 40 | } | boolean; 41 | 42 | declare class rxjs$Observable<+T> { 43 | static bindCallback(callbackFunc: (callback: (_: void) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): () => rxjs$Observable; 44 | static bindCallback(callbackFunc: (callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): () => rxjs$Observable; 45 | static bindCallback(callbackFunc: (v1: T, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T) => rxjs$Observable; 46 | static bindCallback(callbackFunc: (v1: T, v2: T2, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2) => rxjs$Observable; 47 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3) => rxjs$Observable; 48 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; 49 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; 50 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; 51 | static bindCallback(callbackFunc: (callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): () => rxjs$Observable; 52 | static bindCallback(callbackFunc: (v1: T, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T) => rxjs$Observable; 53 | static bindCallback(callbackFunc: (v1: T, v2: T2, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2) => rxjs$Observable; 54 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3) => rxjs$Observable; 55 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; 56 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; 57 | static bindCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (...args: Array) => any) => any, selector: (...args: Array) => U, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; 58 | static bindCallback(callbackFunc: Function, selector?: void, scheduler?: rxjs$SchedulerClass): (...args: Array) => rxjs$Observable; 59 | static bindCallback(callbackFunc: Function, selector?: (...args: Array) => T, scheduler?: rxjs$SchedulerClass): (...args: Array) => rxjs$Observable; 60 | 61 | static bindNodeCallback(callbackFunc: (callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): () => rxjs$Observable; 62 | static bindNodeCallback(callbackFunc: (v1: T, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T) => rxjs$Observable; 63 | static bindNodeCallback(callbackFunc: (v1: T, v2: T2, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2) => rxjs$Observable; 64 | static bindNodeCallback(callbackFunc: (v1: T, v2: T2, v3: T3, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3) => rxjs$Observable; 65 | static bindNodeCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4) => rxjs$Observable; 66 | static bindNodeCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => rxjs$Observable; 67 | static bindNodeCallback(callbackFunc: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, callback: (err: any, result: U) => any) => any, selector?: void, scheduler?: rxjs$SchedulerClass): (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => rxjs$Observable; 68 | static bindNodeCallback(callbackFunc: Function, selector?: void, scheduler?: rxjs$SchedulerClass): (...args: Array) => rxjs$Observable; 69 | static bindNodeCallback(callbackFunc: Function, selector?: (...args: Array) => T, scheduler?: rxjs$SchedulerClass): (...args: Array) => rxjs$Observable; 70 | 71 | static concat(...sources: rxjs$Observable[]): rxjs$Observable; 72 | 73 | static create( 74 | subscribe: (observer: rxjs$Observer) => rxjs$ISubscription | Function | void 75 | ): rxjs$Observable; 76 | 77 | static defer(observableFactory: () => rxjs$Observable | Promise): rxjs$Observable; 78 | 79 | static from(iterable: Iterable): rxjs$Observable; 80 | 81 | static fromEvent(element: any, eventName: string, ...none: Array): rxjs$Observable; 82 | static fromEvent( 83 | element: any, 84 | eventName: string, 85 | options: rxjs$EventListenerOptions, 86 | ...none: Array 87 | ): rxjs$Observable; 88 | static fromEvent( 89 | element: any, 90 | eventName: string, 91 | selector: () => T, 92 | ...none: Array 93 | ): rxjs$Observable; 94 | static fromEvent( 95 | element: any, 96 | eventName: string, 97 | options: rxjs$EventListenerOptions, 98 | selector: () => T, 99 | ): rxjs$Observable; 100 | 101 | static fromEventPattern( 102 | addHandler: (handler: () => void) => void, 103 | removeHandler: (handler: () => void) => void, 104 | selector?: () => T, 105 | ): rxjs$Observable; 106 | 107 | static fromPromise(promise: Promise): rxjs$Observable; 108 | 109 | static empty(): rxjs$Observable; 110 | 111 | static interval(period: number): rxjs$Observable; 112 | 113 | static merge( 114 | source0: rxjs$Observable, 115 | source1: rxjs$Observable, 116 | ): rxjs$Observable; 117 | static merge( 118 | source0: rxjs$Observable, 119 | source1: rxjs$Observable, 120 | source2: rxjs$Observable, 121 | ): rxjs$Observable; 122 | static merge(...sources: rxjs$Observable[]): rxjs$Observable; 123 | 124 | static never(): rxjs$Observable; 125 | 126 | static of(...values: T[]): rxjs$Observable; 127 | 128 | static throw(error: any): rxjs$Observable; 129 | 130 | audit(durationSelector: (value: T) => rxjs$Observable | Promise): rxjs$Observable; 131 | 132 | race(other: rxjs$Observable): rxjs$Observable; 133 | 134 | buffer(bufferBoundaries: rxjs$Observable): rxjs$Observable>; 135 | 136 | catch(selector: (err: any, caught: rxjs$Observable) => rxjs$Observable): rxjs$Observable; 137 | 138 | concat(...sources: rxjs$Observable[]): rxjs$Observable; 139 | 140 | concatAll(): rxjs$Observable; 141 | 142 | concatMap( 143 | f: (value: T) => rxjs$Observable | Promise | Iterable 144 | ): rxjs$Observable; 145 | 146 | debounceTime(dueTime: number, scheduler?: rxjs$SchedulerClass): rxjs$Observable; 147 | 148 | delay(dueTime: number, scheduler?: rxjs$SchedulerClass): rxjs$Observable; 149 | 150 | distinctUntilChanged(compare?: (x: T, y: T) => boolean): rxjs$Observable; 151 | 152 | distinct(keySelector?: (value: T) => U, flushes?: rxjs$Observable): rxjs$Observable; 153 | 154 | distinctUntilKeyChanged(key: string, compare?: (x: mixed, y: mixed) => boolean): rxjs$Observable; 155 | 156 | elementAt(index: number, defaultValue?: T): rxjs$Observable; 157 | 158 | filter(predicate: (value: T) => boolean): rxjs$Observable; 159 | 160 | finally(f: () => mixed): rxjs$Observable; 161 | 162 | first( 163 | predicate?: (value: T, index: number, source: rxjs$Observable) => boolean, 164 | ): rxjs$Observable; 165 | first( 166 | predicate: ?(value: T, index: number, source: rxjs$Observable) => boolean, 167 | resultSelector: (value: T, index: number) => U, 168 | ): rxjs$Observable; 169 | first( 170 | predicate: ?(value: T, index: number, source: rxjs$Observable) => boolean, 171 | resultSelector: ?(value: T, index: number) => U, 172 | defaultValue: U, 173 | ): rxjs$Observable; 174 | 175 | groupBy( 176 | keySelector: (value: T) => mixed, 177 | elementSelector?: (value: T) => T, 178 | compare?: (x: T, y: T) => boolean, 179 | ): rxjs$Observable>; 180 | 181 | ignoreElements(): rxjs$Observable; 182 | 183 | let(project: (self: rxjs$Observable) => rxjs$Observable): rxjs$Observable; 184 | 185 | // Alias for `let` 186 | letBind(project: (self: rxjs$Observable) => rxjs$Observable): rxjs$Observable; 187 | 188 | switch(): T; // assumption: T is Observable 189 | 190 | // Alias for `mergeMap` 191 | flatMap( 192 | project: (value: T) => rxjs$Observable | Promise | Iterable, 193 | index?: number, 194 | ): rxjs$Observable; 195 | 196 | switchMap( 197 | project: (value: T) => rxjs$Observable | Promise | Iterable, 198 | index?: number, 199 | ): rxjs$Observable; 200 | 201 | switchMapTo( 202 | innerObservable: rxjs$Observable, 203 | ): rxjs$Observable; 204 | 205 | map(f: (value: T) => U): rxjs$Observable; 206 | 207 | mapTo(value: U): rxjs$Observable; 208 | 209 | merge(other: rxjs$Observable): rxjs$Observable; 210 | 211 | mergeAll(): rxjs$Observable; 212 | 213 | mergeMap( 214 | project: (value: T, index?: number) => rxjs$Observable | Promise | Iterable, 215 | index?: number, 216 | ): rxjs$Observable; 217 | 218 | multicast( 219 | subjectOrSubjectFactory: rxjs$Subject | () => rxjs$Subject, 220 | ): rxjs$ConnectableObservable; 221 | 222 | observeOn(scheduler: rxjs$SchedulerClass): rxjs$Observable; 223 | 224 | pairwise(): rxjs$Observable<[T, T]>; 225 | 226 | publish(): rxjs$ConnectableObservable; 227 | 228 | publishLast(): rxjs$ConnectableObservable; 229 | 230 | reduce( 231 | accumulator: ( 232 | acc: U, 233 | currentValue: T, 234 | index: number, 235 | source: rxjs$Observable, 236 | ) => U, 237 | seed: U, 238 | ): rxjs$Observable; 239 | 240 | sample(notifier: rxjs$Observable): rxjs$Observable; 241 | 242 | sampleTime(delay: number): rxjs$Observable; 243 | 244 | publishReplay(bufferSize?: number, windowTime?: number, scheduler?: rxjs$SchedulerClass): rxjs$ConnectableObservable; 245 | 246 | retry(retryCount: number): rxjs$Observable; 247 | 248 | retryWhen(notifier: (errors: rxjs$Observable) => rxjs$Observable): rxjs$Observable; 249 | 250 | scan( 251 | f: (acc: U, value: T) => U, 252 | initialValue: U, 253 | ): rxjs$Observable; 254 | 255 | share(): rxjs$Observable; 256 | 257 | skip(count: number): rxjs$Observable; 258 | 259 | skipUntil(other: rxjs$Observable | Promise): rxjs$Observable; 260 | 261 | skipWhile(predicate: (value: T) => boolean): rxjs$Observable; 262 | 263 | startWith(...values: Array): rxjs$Observable; 264 | 265 | subscribeOn(scheduler: rxjs$SchedulerClass): rxjs$Observable; 266 | 267 | take(count: number): rxjs$Observable; 268 | 269 | takeUntil(other: rxjs$Observable): rxjs$Observable; 270 | 271 | takeWhile(f: (value: T) => boolean): rxjs$Observable; 272 | 273 | do( 274 | onNext?: (value: T) => mixed, 275 | onError?: (error: any) => mixed, 276 | onCompleted?: () => mixed, 277 | ): rxjs$Observable; 278 | do(observer: { 279 | next?: (value: T) => mixed; 280 | error?: (error: any) => mixed; 281 | complete?: () => mixed; 282 | }): rxjs$Observable; 283 | 284 | throttleTime(duration: number): rxjs$Observable; 285 | 286 | timeout(due: number | Date, _: void): rxjs$Observable; 287 | 288 | toArray(): rxjs$Observable; 289 | 290 | toPromise(): Promise; 291 | 292 | subscribe(observer: rxjs$PartialObserver): rxjs$Subscription; 293 | subscribe( 294 | onNext: ?(value: T) => mixed, 295 | onError: ?(error: any) => mixed, 296 | onCompleted: ?() => mixed, 297 | ): rxjs$Subscription; 298 | 299 | static combineLatest( 300 | a: rxjs$Observable, 301 | resultSelector: (a: A) => B, 302 | ): rxjs$Observable; 303 | 304 | static combineLatest( 305 | a: rxjs$Observable, 306 | b: rxjs$Observable, 307 | resultSelector: (a: A, b: B) => C, 308 | ): rxjs$Observable; 309 | 310 | static combineLatest( 311 | a: rxjs$Observable, 312 | b: rxjs$Observable, 313 | c: rxjs$Observable, 314 | resultSelector: (a: A, b: B, c: C) => D, 315 | ): rxjs$Observable; 316 | 317 | static combineLatest( 318 | a: rxjs$Observable, 319 | b: rxjs$Observable, 320 | c: rxjs$Observable, 321 | d: rxjs$Observable, 322 | resultSelector: (a: A, b: B, c: C, d: D) => E, 323 | ): rxjs$Observable; 324 | 325 | static combineLatest( 326 | a: rxjs$Observable, 327 | b: rxjs$Observable, 328 | c: rxjs$Observable, 329 | d: rxjs$Observable, 330 | e: rxjs$Observable, 331 | resultSelector: (a: A, b: B, c: C, d: D, e: E) => F, 332 | ): rxjs$Observable; 333 | 334 | static combineLatest( 335 | a: rxjs$Observable, 336 | b: rxjs$Observable, 337 | c: rxjs$Observable, 338 | d: rxjs$Observable, 339 | e: rxjs$Observable, 340 | f: rxjs$Observable, 341 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G, 342 | ): rxjs$Observable; 343 | 344 | static combineLatest( 345 | a: rxjs$Observable, 346 | b: rxjs$Observable, 347 | c: rxjs$Observable, 348 | d: rxjs$Observable, 349 | e: rxjs$Observable, 350 | f: rxjs$Observable, 351 | g: rxjs$Observable, 352 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H, 353 | ): rxjs$Observable; 354 | 355 | static combineLatest( 356 | a: rxjs$Observable, 357 | b: rxjs$Observable, 358 | _: void, 359 | ): rxjs$Observable<[A, B]>; 360 | 361 | static combineLatest( 362 | a: rxjs$Observable, 363 | b: rxjs$Observable, 364 | c: rxjs$Observable, 365 | _: void, 366 | ): rxjs$Observable<[A, B, C]>; 367 | 368 | static combineLatest( 369 | a: rxjs$Observable, 370 | b: rxjs$Observable, 371 | c: rxjs$Observable, 372 | d: rxjs$Observable, 373 | _: void, 374 | ): rxjs$Observable<[A, B, C, D]>; 375 | 376 | static combineLatest( 377 | a: rxjs$Observable, 378 | b: rxjs$Observable, 379 | c: rxjs$Observable, 380 | d: rxjs$Observable, 381 | e: rxjs$Observable, 382 | _: void, 383 | ): rxjs$Observable<[A, B, C, D, E]>; 384 | 385 | static combineLatest( 386 | a: rxjs$Observable, 387 | b: rxjs$Observable, 388 | c: rxjs$Observable, 389 | d: rxjs$Observable, 390 | e: rxjs$Observable, 391 | f: rxjs$Observable, 392 | _: void, 393 | ): rxjs$Observable<[A, B, C, D, E, F]>; 394 | 395 | static combineLatest( 396 | a: rxjs$Observable, 397 | b: rxjs$Observable, 398 | c: rxjs$Observable, 399 | d: rxjs$Observable, 400 | e: rxjs$Observable, 401 | f: rxjs$Observable, 402 | g: rxjs$Observable, 403 | _: void, 404 | ): rxjs$Observable<[A, B, C, D, E, F, G]>; 405 | 406 | static combineLatest( 407 | a: rxjs$Observable, 408 | b: rxjs$Observable, 409 | c: rxjs$Observable, 410 | d: rxjs$Observable, 411 | e: rxjs$Observable, 412 | f: rxjs$Observable, 413 | g: rxjs$Observable, 414 | h: rxjs$Observable, 415 | _: void, 416 | ): rxjs$Observable<[A, B, C, D, E, F, G, H]>; 417 | 418 | combineLatest( 419 | a: rxjs$Observable, 420 | _: void, 421 | ): rxjs$Observable<[T, A]>; 422 | 423 | combineLatest( 424 | a: rxjs$Observable, 425 | resultSelector: (a: A) => B, 426 | ): rxjs$Observable; 427 | 428 | combineLatest( 429 | a: rxjs$Observable, 430 | b: rxjs$Observable, 431 | resultSelector: (a: A, b: B) => C, 432 | ): rxjs$Observable; 433 | 434 | combineLatest( 435 | a: rxjs$Observable, 436 | b: rxjs$Observable, 437 | c: rxjs$Observable, 438 | resultSelector: (a: A, b: B, c: C) => D, 439 | ): rxjs$Observable; 440 | 441 | combineLatest( 442 | a: rxjs$Observable, 443 | b: rxjs$Observable, 444 | c: rxjs$Observable, 445 | d: rxjs$Observable, 446 | resultSelector: (a: A, b: B, c: C, d: D) => E, 447 | ): rxjs$Observable; 448 | 449 | combineLatest( 450 | a: rxjs$Observable, 451 | b: rxjs$Observable, 452 | c: rxjs$Observable, 453 | d: rxjs$Observable, 454 | e: rxjs$Observable, 455 | resultSelector: (a: A, b: B, c: C, d: D, e: E) => F, 456 | ): rxjs$Observable; 457 | 458 | combineLatest( 459 | a: rxjs$Observable, 460 | b: rxjs$Observable, 461 | c: rxjs$Observable, 462 | d: rxjs$Observable, 463 | e: rxjs$Observable, 464 | f: rxjs$Observable, 465 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G, 466 | ): rxjs$Observable; 467 | 468 | combineLatest( 469 | a: rxjs$Observable, 470 | b: rxjs$Observable, 471 | c: rxjs$Observable, 472 | d: rxjs$Observable, 473 | e: rxjs$Observable, 474 | f: rxjs$Observable, 475 | g: rxjs$Observable, 476 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H, 477 | ): rxjs$Observable; 478 | 479 | static forkJoin( 480 | a: rxjs$Observable, 481 | resultSelector: (a: A) => B, 482 | ): rxjs$Observable; 483 | 484 | static forkJoin( 485 | a: rxjs$Observable, 486 | b: rxjs$Observable, 487 | resultSelector: (a: A, b: B) => C, 488 | ): rxjs$Observable; 489 | 490 | static forkJoin( 491 | a: rxjs$Observable, 492 | b: rxjs$Observable, 493 | c: rxjs$Observable, 494 | resultSelector: (a: A, b: B, c: C) => D, 495 | ): rxjs$Observable; 496 | 497 | static forkJoin( 498 | a: rxjs$Observable, 499 | b: rxjs$Observable, 500 | c: rxjs$Observable, 501 | d: rxjs$Observable, 502 | resultSelector: (a: A, b: B, c: C, d: D) => E, 503 | ): rxjs$Observable; 504 | 505 | static forkJoin( 506 | a: rxjs$Observable, 507 | b: rxjs$Observable, 508 | c: rxjs$Observable, 509 | d: rxjs$Observable, 510 | e: rxjs$Observable, 511 | resultSelector: (a: A, b: B, c: C, d: D, e: E) => F, 512 | ): rxjs$Observable; 513 | 514 | static forkJoin( 515 | a: rxjs$Observable, 516 | b: rxjs$Observable, 517 | c: rxjs$Observable, 518 | d: rxjs$Observable, 519 | e: rxjs$Observable, 520 | f: rxjs$Observable, 521 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G, 522 | ): rxjs$Observable; 523 | 524 | static forkJoin( 525 | a: rxjs$Observable, 526 | b: rxjs$Observable, 527 | c: rxjs$Observable, 528 | d: rxjs$Observable, 529 | e: rxjs$Observable, 530 | f: rxjs$Observable, 531 | g: rxjs$Observable, 532 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H, 533 | ): rxjs$Observable; 534 | 535 | static forkJoin( 536 | a: rxjs$Observable, 537 | b: rxjs$Observable, 538 | _: void, 539 | ): rxjs$Observable<[A, B]>; 540 | 541 | static forkJoin( 542 | a: rxjs$Observable, 543 | b: rxjs$Observable, 544 | c: rxjs$Observable, 545 | _: void, 546 | ): rxjs$Observable<[A, B, C]>; 547 | 548 | static forkJoin( 549 | a: rxjs$Observable, 550 | b: rxjs$Observable, 551 | c: rxjs$Observable, 552 | d: rxjs$Observable, 553 | _: void, 554 | ): rxjs$Observable<[A, B, C, D]>; 555 | 556 | static forkJoin( 557 | a: rxjs$Observable, 558 | b: rxjs$Observable, 559 | c: rxjs$Observable, 560 | d: rxjs$Observable, 561 | e: rxjs$Observable, 562 | _: void, 563 | ): rxjs$Observable<[A, B, C, D, E]>; 564 | 565 | static forkJoin( 566 | a: rxjs$Observable, 567 | b: rxjs$Observable, 568 | c: rxjs$Observable, 569 | d: rxjs$Observable, 570 | e: rxjs$Observable, 571 | f: rxjs$Observable, 572 | _: void, 573 | ): rxjs$Observable<[A, B, C, D, E, F]>; 574 | 575 | static forkJoin( 576 | a: rxjs$Observable, 577 | b: rxjs$Observable, 578 | c: rxjs$Observable, 579 | d: rxjs$Observable, 580 | e: rxjs$Observable, 581 | f: rxjs$Observable, 582 | g: rxjs$Observable, 583 | _: void, 584 | ): rxjs$Observable<[A, B, C, D, E, F, G]>; 585 | 586 | static forkJoin( 587 | a: rxjs$Observable, 588 | b: rxjs$Observable, 589 | c: rxjs$Observable, 590 | d: rxjs$Observable, 591 | e: rxjs$Observable, 592 | f: rxjs$Observable, 593 | g: rxjs$Observable, 594 | h: rxjs$Observable, 595 | _: void, 596 | ): rxjs$Observable<[A, B, C, D, E, F, G, H]>; 597 | 598 | withLatestFrom( 599 | a: rxjs$Observable, 600 | _: void, 601 | ): rxjs$Observable<[T, A]>; 602 | 603 | withLatestFrom( 604 | a: rxjs$Observable, 605 | resultSelector: (a: A) => B, 606 | ): rxjs$Observable; 607 | 608 | withLatestFrom( 609 | a: rxjs$Observable, 610 | b: rxjs$Observable, 611 | resultSelector: (a: A, b: B) => C, 612 | ): rxjs$Observable; 613 | 614 | withLatestFrom( 615 | a: rxjs$Observable, 616 | b: rxjs$Observable, 617 | c: rxjs$Observable, 618 | resultSelector: (a: A, b: B, c: C) => D, 619 | ): rxjs$Observable; 620 | 621 | withLatestFrom( 622 | a: rxjs$Observable, 623 | b: rxjs$Observable, 624 | c: rxjs$Observable, 625 | d: rxjs$Observable, 626 | resultSelector: (a: A, b: B, c: C, d: D) => E, 627 | ): rxjs$Observable; 628 | 629 | withLatestFrom( 630 | a: rxjs$Observable, 631 | b: rxjs$Observable, 632 | c: rxjs$Observable, 633 | d: rxjs$Observable, 634 | e: rxjs$Observable, 635 | resultSelector: (a: A, b: B, c: C, d: D, e: E) => F, 636 | ): rxjs$Observable; 637 | 638 | withLatestFrom( 639 | a: rxjs$Observable, 640 | b: rxjs$Observable, 641 | c: rxjs$Observable, 642 | d: rxjs$Observable, 643 | e: rxjs$Observable, 644 | f: rxjs$Observable, 645 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F) => G, 646 | ): rxjs$Observable; 647 | 648 | withLatestFrom( 649 | a: rxjs$Observable, 650 | b: rxjs$Observable, 651 | c: rxjs$Observable, 652 | d: rxjs$Observable, 653 | e: rxjs$Observable, 654 | f: rxjs$Observable, 655 | g: rxjs$Observable, 656 | resultSelector: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => H, 657 | ): rxjs$Observable; 658 | 659 | static using( 660 | resourceFactory: () => ?R, 661 | observableFactory: (resource: R) => rxjs$Observable | Promise | void, 662 | ): rxjs$Observable; 663 | } 664 | 665 | declare class rxjs$ConnectableObservable extends rxjs$Observable { 666 | connect(): rxjs$Subscription; 667 | refCount(): rxjs$Observable; 668 | } 669 | 670 | declare class rxjs$Observer { 671 | next(value: T): mixed; 672 | 673 | error(error: any): mixed; 674 | 675 | complete(): mixed; 676 | } 677 | 678 | // FIXME(samgoldman) should be `mixins rxjs$Observable, rxjs$Observer` 679 | // once Babel parsing support exists: https://phabricator.babeljs.io/T6821 680 | declare class rxjs$Subject extends rxjs$Observable { 681 | asObservable(): rxjs$Observable; 682 | 683 | observers: Array>; 684 | 685 | unsubscribe(): void; 686 | 687 | // Copied from rxjs$Observer 688 | next(value: T): mixed; 689 | error(error: any): mixed; 690 | complete(): mixed; 691 | 692 | // For use in subclasses only: 693 | _next(value: T): void; 694 | _subscribe(observer: rxjs$PartialObserver): rxjs$Subscription; 695 | } 696 | 697 | declare class rxjs$BehaviorSubject extends rxjs$Subject { 698 | constructor(initialValue: T): void; 699 | 700 | getValue(): T; 701 | } 702 | 703 | declare class rxjs$ReplaySubject extends rxjs$Subject { 704 | constructor(bufferSize?: number, windowTime?: number, scheduler?: rxjs$SchedulerClass): void; 705 | } 706 | 707 | declare class rxjs$Subscription { 708 | unsubscribe(): void; 709 | add(teardown: rxjs$TeardownLogic): rxjs$Subscription; 710 | } 711 | 712 | declare class rxjs$SchedulerClass { 713 | schedule(work: (state?: T) => void, delay?: number, state?: T): rxjs$Subscription; 714 | } 715 | 716 | declare class rxjs$TimeoutError extends Error { 717 | } 718 | 719 | declare module 'rxjs' { 720 | declare module.exports: { 721 | Observable: typeof rxjs$Observable, 722 | ConnectableObservable: typeof rxjs$ConnectableObservable, 723 | Subject: typeof rxjs$Subject, 724 | BehaviorSubject: typeof rxjs$BehaviorSubject, 725 | ReplaySubject: typeof rxjs$ReplaySubject, 726 | Scheduler: { 727 | asap: rxjs$SchedulerClass, 728 | queue: rxjs$SchedulerClass, 729 | animationFrame: rxjs$SchedulerClass, 730 | async: rxjs$SchedulerClass, 731 | }, 732 | Subscription: typeof rxjs$Subscription, 733 | TimeoutError: typeof rxjs$TimeoutError, 734 | } 735 | } 736 | 737 | declare module 'rxjs/Observable' { 738 | declare module.exports: { 739 | Observable: typeof rxjs$Observable 740 | } 741 | } 742 | 743 | declare module 'rxjs/Observer' { 744 | declare module.exports: { 745 | Observer: typeof rxjs$Observer 746 | } 747 | } 748 | 749 | declare module 'rxjs/BehaviorSubject' { 750 | declare module.exports: { 751 | BehaviorSubject: typeof rxjs$BehaviorSubject 752 | } 753 | } 754 | 755 | declare module 'rxjs/ReplaySubject' { 756 | declare module.exports: { 757 | ReplaySubject: typeof rxjs$ReplaySubject 758 | } 759 | } 760 | 761 | declare module 'rxjs/Subject' { 762 | declare module.exports: { 763 | Subject: typeof rxjs$Subject 764 | } 765 | } 766 | 767 | declare module 'rxjs/Subscription' { 768 | declare module.exports: { 769 | Subscription: typeof rxjs$Subscription 770 | } 771 | } 772 | -------------------------------------------------------------------------------- /flow-typed/npm/eslint_vx.x.x.js: -------------------------------------------------------------------------------- 1 | // flow-typed signature: 7905deaeb43d36b51aadb6e4a82f4029 2 | // flow-typed version: <>/eslint_v3.17.1/flow_v0.41.0 3 | 4 | /** 5 | * This is an autogenerated libdef stub for: 6 | * 7 | * 'eslint' 8 | * 9 | * Fill this stub out by replacing all the `any` types. 10 | * 11 | * Once filled out, we encourage you to share your work with the 12 | * community by sending a pull request to: 13 | * https://github.com/flowtype/flow-typed 14 | */ 15 | 16 | declare module 'eslint' { 17 | declare module.exports: any; 18 | } 19 | 20 | /** 21 | * We include stubs for each file inside this npm package in case you need to 22 | * require those files directly. Feel free to delete any files that aren't 23 | * needed. 24 | */ 25 | declare module 'eslint/bin/eslint' { 26 | declare module.exports: any; 27 | } 28 | 29 | declare module 'eslint/conf/cli-options' { 30 | declare module.exports: any; 31 | } 32 | 33 | declare module 'eslint/conf/environments' { 34 | declare module.exports: any; 35 | } 36 | 37 | declare module 'eslint/conf/eslint-all' { 38 | declare module.exports: any; 39 | } 40 | 41 | declare module 'eslint/conf/eslint-recommended' { 42 | declare module.exports: any; 43 | } 44 | 45 | declare module 'eslint/lib/api' { 46 | declare module.exports: any; 47 | } 48 | 49 | declare module 'eslint/lib/ast-utils' { 50 | declare module.exports: any; 51 | } 52 | 53 | declare module 'eslint/lib/cli-engine' { 54 | declare module.exports: any; 55 | } 56 | 57 | declare module 'eslint/lib/cli' { 58 | declare module.exports: any; 59 | } 60 | 61 | declare module 'eslint/lib/code-path-analysis/code-path-analyzer' { 62 | declare module.exports: any; 63 | } 64 | 65 | declare module 'eslint/lib/code-path-analysis/code-path-segment' { 66 | declare module.exports: any; 67 | } 68 | 69 | declare module 'eslint/lib/code-path-analysis/code-path-state' { 70 | declare module.exports: any; 71 | } 72 | 73 | declare module 'eslint/lib/code-path-analysis/code-path' { 74 | declare module.exports: any; 75 | } 76 | 77 | declare module 'eslint/lib/code-path-analysis/debug-helpers' { 78 | declare module.exports: any; 79 | } 80 | 81 | declare module 'eslint/lib/code-path-analysis/fork-context' { 82 | declare module.exports: any; 83 | } 84 | 85 | declare module 'eslint/lib/code-path-analysis/id-generator' { 86 | declare module.exports: any; 87 | } 88 | 89 | declare module 'eslint/lib/config' { 90 | declare module.exports: any; 91 | } 92 | 93 | declare module 'eslint/lib/config/autoconfig' { 94 | declare module.exports: any; 95 | } 96 | 97 | declare module 'eslint/lib/config/config-file' { 98 | declare module.exports: any; 99 | } 100 | 101 | declare module 'eslint/lib/config/config-initializer' { 102 | declare module.exports: any; 103 | } 104 | 105 | declare module 'eslint/lib/config/config-ops' { 106 | declare module.exports: any; 107 | } 108 | 109 | declare module 'eslint/lib/config/config-rule' { 110 | declare module.exports: any; 111 | } 112 | 113 | declare module 'eslint/lib/config/config-validator' { 114 | declare module.exports: any; 115 | } 116 | 117 | declare module 'eslint/lib/config/environments' { 118 | declare module.exports: any; 119 | } 120 | 121 | declare module 'eslint/lib/config/plugins' { 122 | declare module.exports: any; 123 | } 124 | 125 | declare module 'eslint/lib/eslint' { 126 | declare module.exports: any; 127 | } 128 | 129 | declare module 'eslint/lib/file-finder' { 130 | declare module.exports: any; 131 | } 132 | 133 | declare module 'eslint/lib/formatters/checkstyle' { 134 | declare module.exports: any; 135 | } 136 | 137 | declare module 'eslint/lib/formatters/codeframe' { 138 | declare module.exports: any; 139 | } 140 | 141 | declare module 'eslint/lib/formatters/compact' { 142 | declare module.exports: any; 143 | } 144 | 145 | declare module 'eslint/lib/formatters/html' { 146 | declare module.exports: any; 147 | } 148 | 149 | declare module 'eslint/lib/formatters/jslint-xml' { 150 | declare module.exports: any; 151 | } 152 | 153 | declare module 'eslint/lib/formatters/json' { 154 | declare module.exports: any; 155 | } 156 | 157 | declare module 'eslint/lib/formatters/junit' { 158 | declare module.exports: any; 159 | } 160 | 161 | declare module 'eslint/lib/formatters/stylish' { 162 | declare module.exports: any; 163 | } 164 | 165 | declare module 'eslint/lib/formatters/table' { 166 | declare module.exports: any; 167 | } 168 | 169 | declare module 'eslint/lib/formatters/tap' { 170 | declare module.exports: any; 171 | } 172 | 173 | declare module 'eslint/lib/formatters/unix' { 174 | declare module.exports: any; 175 | } 176 | 177 | declare module 'eslint/lib/formatters/visualstudio' { 178 | declare module.exports: any; 179 | } 180 | 181 | declare module 'eslint/lib/ignored-paths' { 182 | declare module.exports: any; 183 | } 184 | 185 | declare module 'eslint/lib/internal-rules/internal-consistent-docs-description' { 186 | declare module.exports: any; 187 | } 188 | 189 | declare module 'eslint/lib/internal-rules/internal-no-invalid-meta' { 190 | declare module.exports: any; 191 | } 192 | 193 | declare module 'eslint/lib/load-rules' { 194 | declare module.exports: any; 195 | } 196 | 197 | declare module 'eslint/lib/logging' { 198 | declare module.exports: any; 199 | } 200 | 201 | declare module 'eslint/lib/options' { 202 | declare module.exports: any; 203 | } 204 | 205 | declare module 'eslint/lib/rule-context' { 206 | declare module.exports: any; 207 | } 208 | 209 | declare module 'eslint/lib/rules' { 210 | declare module.exports: any; 211 | } 212 | 213 | declare module 'eslint/lib/rules/accessor-pairs' { 214 | declare module.exports: any; 215 | } 216 | 217 | declare module 'eslint/lib/rules/array-bracket-spacing' { 218 | declare module.exports: any; 219 | } 220 | 221 | declare module 'eslint/lib/rules/array-callback-return' { 222 | declare module.exports: any; 223 | } 224 | 225 | declare module 'eslint/lib/rules/arrow-body-style' { 226 | declare module.exports: any; 227 | } 228 | 229 | declare module 'eslint/lib/rules/arrow-parens' { 230 | declare module.exports: any; 231 | } 232 | 233 | declare module 'eslint/lib/rules/arrow-spacing' { 234 | declare module.exports: any; 235 | } 236 | 237 | declare module 'eslint/lib/rules/block-scoped-var' { 238 | declare module.exports: any; 239 | } 240 | 241 | declare module 'eslint/lib/rules/block-spacing' { 242 | declare module.exports: any; 243 | } 244 | 245 | declare module 'eslint/lib/rules/brace-style' { 246 | declare module.exports: any; 247 | } 248 | 249 | declare module 'eslint/lib/rules/callback-return' { 250 | declare module.exports: any; 251 | } 252 | 253 | declare module 'eslint/lib/rules/camelcase' { 254 | declare module.exports: any; 255 | } 256 | 257 | declare module 'eslint/lib/rules/capitalized-comments' { 258 | declare module.exports: any; 259 | } 260 | 261 | declare module 'eslint/lib/rules/class-methods-use-this' { 262 | declare module.exports: any; 263 | } 264 | 265 | declare module 'eslint/lib/rules/comma-dangle' { 266 | declare module.exports: any; 267 | } 268 | 269 | declare module 'eslint/lib/rules/comma-spacing' { 270 | declare module.exports: any; 271 | } 272 | 273 | declare module 'eslint/lib/rules/comma-style' { 274 | declare module.exports: any; 275 | } 276 | 277 | declare module 'eslint/lib/rules/complexity' { 278 | declare module.exports: any; 279 | } 280 | 281 | declare module 'eslint/lib/rules/computed-property-spacing' { 282 | declare module.exports: any; 283 | } 284 | 285 | declare module 'eslint/lib/rules/consistent-return' { 286 | declare module.exports: any; 287 | } 288 | 289 | declare module 'eslint/lib/rules/consistent-this' { 290 | declare module.exports: any; 291 | } 292 | 293 | declare module 'eslint/lib/rules/constructor-super' { 294 | declare module.exports: any; 295 | } 296 | 297 | declare module 'eslint/lib/rules/curly' { 298 | declare module.exports: any; 299 | } 300 | 301 | declare module 'eslint/lib/rules/default-case' { 302 | declare module.exports: any; 303 | } 304 | 305 | declare module 'eslint/lib/rules/dot-location' { 306 | declare module.exports: any; 307 | } 308 | 309 | declare module 'eslint/lib/rules/dot-notation' { 310 | declare module.exports: any; 311 | } 312 | 313 | declare module 'eslint/lib/rules/eol-last' { 314 | declare module.exports: any; 315 | } 316 | 317 | declare module 'eslint/lib/rules/eqeqeq' { 318 | declare module.exports: any; 319 | } 320 | 321 | declare module 'eslint/lib/rules/func-call-spacing' { 322 | declare module.exports: any; 323 | } 324 | 325 | declare module 'eslint/lib/rules/func-name-matching' { 326 | declare module.exports: any; 327 | } 328 | 329 | declare module 'eslint/lib/rules/func-names' { 330 | declare module.exports: any; 331 | } 332 | 333 | declare module 'eslint/lib/rules/func-style' { 334 | declare module.exports: any; 335 | } 336 | 337 | declare module 'eslint/lib/rules/generator-star-spacing' { 338 | declare module.exports: any; 339 | } 340 | 341 | declare module 'eslint/lib/rules/global-require' { 342 | declare module.exports: any; 343 | } 344 | 345 | declare module 'eslint/lib/rules/guard-for-in' { 346 | declare module.exports: any; 347 | } 348 | 349 | declare module 'eslint/lib/rules/handle-callback-err' { 350 | declare module.exports: any; 351 | } 352 | 353 | declare module 'eslint/lib/rules/id-blacklist' { 354 | declare module.exports: any; 355 | } 356 | 357 | declare module 'eslint/lib/rules/id-length' { 358 | declare module.exports: any; 359 | } 360 | 361 | declare module 'eslint/lib/rules/id-match' { 362 | declare module.exports: any; 363 | } 364 | 365 | declare module 'eslint/lib/rules/indent' { 366 | declare module.exports: any; 367 | } 368 | 369 | declare module 'eslint/lib/rules/init-declarations' { 370 | declare module.exports: any; 371 | } 372 | 373 | declare module 'eslint/lib/rules/jsx-quotes' { 374 | declare module.exports: any; 375 | } 376 | 377 | declare module 'eslint/lib/rules/key-spacing' { 378 | declare module.exports: any; 379 | } 380 | 381 | declare module 'eslint/lib/rules/keyword-spacing' { 382 | declare module.exports: any; 383 | } 384 | 385 | declare module 'eslint/lib/rules/line-comment-position' { 386 | declare module.exports: any; 387 | } 388 | 389 | declare module 'eslint/lib/rules/linebreak-style' { 390 | declare module.exports: any; 391 | } 392 | 393 | declare module 'eslint/lib/rules/lines-around-comment' { 394 | declare module.exports: any; 395 | } 396 | 397 | declare module 'eslint/lib/rules/lines-around-directive' { 398 | declare module.exports: any; 399 | } 400 | 401 | declare module 'eslint/lib/rules/max-depth' { 402 | declare module.exports: any; 403 | } 404 | 405 | declare module 'eslint/lib/rules/max-len' { 406 | declare module.exports: any; 407 | } 408 | 409 | declare module 'eslint/lib/rules/max-lines' { 410 | declare module.exports: any; 411 | } 412 | 413 | declare module 'eslint/lib/rules/max-nested-callbacks' { 414 | declare module.exports: any; 415 | } 416 | 417 | declare module 'eslint/lib/rules/max-params' { 418 | declare module.exports: any; 419 | } 420 | 421 | declare module 'eslint/lib/rules/max-statements-per-line' { 422 | declare module.exports: any; 423 | } 424 | 425 | declare module 'eslint/lib/rules/max-statements' { 426 | declare module.exports: any; 427 | } 428 | 429 | declare module 'eslint/lib/rules/multiline-ternary' { 430 | declare module.exports: any; 431 | } 432 | 433 | declare module 'eslint/lib/rules/new-cap' { 434 | declare module.exports: any; 435 | } 436 | 437 | declare module 'eslint/lib/rules/new-parens' { 438 | declare module.exports: any; 439 | } 440 | 441 | declare module 'eslint/lib/rules/newline-after-var' { 442 | declare module.exports: any; 443 | } 444 | 445 | declare module 'eslint/lib/rules/newline-before-return' { 446 | declare module.exports: any; 447 | } 448 | 449 | declare module 'eslint/lib/rules/newline-per-chained-call' { 450 | declare module.exports: any; 451 | } 452 | 453 | declare module 'eslint/lib/rules/no-alert' { 454 | declare module.exports: any; 455 | } 456 | 457 | declare module 'eslint/lib/rules/no-array-constructor' { 458 | declare module.exports: any; 459 | } 460 | 461 | declare module 'eslint/lib/rules/no-await-in-loop' { 462 | declare module.exports: any; 463 | } 464 | 465 | declare module 'eslint/lib/rules/no-bitwise' { 466 | declare module.exports: any; 467 | } 468 | 469 | declare module 'eslint/lib/rules/no-caller' { 470 | declare module.exports: any; 471 | } 472 | 473 | declare module 'eslint/lib/rules/no-case-declarations' { 474 | declare module.exports: any; 475 | } 476 | 477 | declare module 'eslint/lib/rules/no-catch-shadow' { 478 | declare module.exports: any; 479 | } 480 | 481 | declare module 'eslint/lib/rules/no-class-assign' { 482 | declare module.exports: any; 483 | } 484 | 485 | declare module 'eslint/lib/rules/no-compare-neg-zero' { 486 | declare module.exports: any; 487 | } 488 | 489 | declare module 'eslint/lib/rules/no-cond-assign' { 490 | declare module.exports: any; 491 | } 492 | 493 | declare module 'eslint/lib/rules/no-confusing-arrow' { 494 | declare module.exports: any; 495 | } 496 | 497 | declare module 'eslint/lib/rules/no-console' { 498 | declare module.exports: any; 499 | } 500 | 501 | declare module 'eslint/lib/rules/no-const-assign' { 502 | declare module.exports: any; 503 | } 504 | 505 | declare module 'eslint/lib/rules/no-constant-condition' { 506 | declare module.exports: any; 507 | } 508 | 509 | declare module 'eslint/lib/rules/no-continue' { 510 | declare module.exports: any; 511 | } 512 | 513 | declare module 'eslint/lib/rules/no-control-regex' { 514 | declare module.exports: any; 515 | } 516 | 517 | declare module 'eslint/lib/rules/no-debugger' { 518 | declare module.exports: any; 519 | } 520 | 521 | declare module 'eslint/lib/rules/no-delete-var' { 522 | declare module.exports: any; 523 | } 524 | 525 | declare module 'eslint/lib/rules/no-div-regex' { 526 | declare module.exports: any; 527 | } 528 | 529 | declare module 'eslint/lib/rules/no-dupe-args' { 530 | declare module.exports: any; 531 | } 532 | 533 | declare module 'eslint/lib/rules/no-dupe-class-members' { 534 | declare module.exports: any; 535 | } 536 | 537 | declare module 'eslint/lib/rules/no-dupe-keys' { 538 | declare module.exports: any; 539 | } 540 | 541 | declare module 'eslint/lib/rules/no-duplicate-case' { 542 | declare module.exports: any; 543 | } 544 | 545 | declare module 'eslint/lib/rules/no-duplicate-imports' { 546 | declare module.exports: any; 547 | } 548 | 549 | declare module 'eslint/lib/rules/no-else-return' { 550 | declare module.exports: any; 551 | } 552 | 553 | declare module 'eslint/lib/rules/no-empty-character-class' { 554 | declare module.exports: any; 555 | } 556 | 557 | declare module 'eslint/lib/rules/no-empty-function' { 558 | declare module.exports: any; 559 | } 560 | 561 | declare module 'eslint/lib/rules/no-empty-pattern' { 562 | declare module.exports: any; 563 | } 564 | 565 | declare module 'eslint/lib/rules/no-empty' { 566 | declare module.exports: any; 567 | } 568 | 569 | declare module 'eslint/lib/rules/no-eq-null' { 570 | declare module.exports: any; 571 | } 572 | 573 | declare module 'eslint/lib/rules/no-eval' { 574 | declare module.exports: any; 575 | } 576 | 577 | declare module 'eslint/lib/rules/no-ex-assign' { 578 | declare module.exports: any; 579 | } 580 | 581 | declare module 'eslint/lib/rules/no-extend-native' { 582 | declare module.exports: any; 583 | } 584 | 585 | declare module 'eslint/lib/rules/no-extra-bind' { 586 | declare module.exports: any; 587 | } 588 | 589 | declare module 'eslint/lib/rules/no-extra-boolean-cast' { 590 | declare module.exports: any; 591 | } 592 | 593 | declare module 'eslint/lib/rules/no-extra-label' { 594 | declare module.exports: any; 595 | } 596 | 597 | declare module 'eslint/lib/rules/no-extra-parens' { 598 | declare module.exports: any; 599 | } 600 | 601 | declare module 'eslint/lib/rules/no-extra-semi' { 602 | declare module.exports: any; 603 | } 604 | 605 | declare module 'eslint/lib/rules/no-fallthrough' { 606 | declare module.exports: any; 607 | } 608 | 609 | declare module 'eslint/lib/rules/no-floating-decimal' { 610 | declare module.exports: any; 611 | } 612 | 613 | declare module 'eslint/lib/rules/no-func-assign' { 614 | declare module.exports: any; 615 | } 616 | 617 | declare module 'eslint/lib/rules/no-global-assign' { 618 | declare module.exports: any; 619 | } 620 | 621 | declare module 'eslint/lib/rules/no-implicit-coercion' { 622 | declare module.exports: any; 623 | } 624 | 625 | declare module 'eslint/lib/rules/no-implicit-globals' { 626 | declare module.exports: any; 627 | } 628 | 629 | declare module 'eslint/lib/rules/no-implied-eval' { 630 | declare module.exports: any; 631 | } 632 | 633 | declare module 'eslint/lib/rules/no-inline-comments' { 634 | declare module.exports: any; 635 | } 636 | 637 | declare module 'eslint/lib/rules/no-inner-declarations' { 638 | declare module.exports: any; 639 | } 640 | 641 | declare module 'eslint/lib/rules/no-invalid-regexp' { 642 | declare module.exports: any; 643 | } 644 | 645 | declare module 'eslint/lib/rules/no-invalid-this' { 646 | declare module.exports: any; 647 | } 648 | 649 | declare module 'eslint/lib/rules/no-irregular-whitespace' { 650 | declare module.exports: any; 651 | } 652 | 653 | declare module 'eslint/lib/rules/no-iterator' { 654 | declare module.exports: any; 655 | } 656 | 657 | declare module 'eslint/lib/rules/no-label-var' { 658 | declare module.exports: any; 659 | } 660 | 661 | declare module 'eslint/lib/rules/no-labels' { 662 | declare module.exports: any; 663 | } 664 | 665 | declare module 'eslint/lib/rules/no-lone-blocks' { 666 | declare module.exports: any; 667 | } 668 | 669 | declare module 'eslint/lib/rules/no-lonely-if' { 670 | declare module.exports: any; 671 | } 672 | 673 | declare module 'eslint/lib/rules/no-loop-func' { 674 | declare module.exports: any; 675 | } 676 | 677 | declare module 'eslint/lib/rules/no-magic-numbers' { 678 | declare module.exports: any; 679 | } 680 | 681 | declare module 'eslint/lib/rules/no-mixed-operators' { 682 | declare module.exports: any; 683 | } 684 | 685 | declare module 'eslint/lib/rules/no-mixed-requires' { 686 | declare module.exports: any; 687 | } 688 | 689 | declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs' { 690 | declare module.exports: any; 691 | } 692 | 693 | declare module 'eslint/lib/rules/no-multi-assign' { 694 | declare module.exports: any; 695 | } 696 | 697 | declare module 'eslint/lib/rules/no-multi-spaces' { 698 | declare module.exports: any; 699 | } 700 | 701 | declare module 'eslint/lib/rules/no-multi-str' { 702 | declare module.exports: any; 703 | } 704 | 705 | declare module 'eslint/lib/rules/no-multiple-empty-lines' { 706 | declare module.exports: any; 707 | } 708 | 709 | declare module 'eslint/lib/rules/no-native-reassign' { 710 | declare module.exports: any; 711 | } 712 | 713 | declare module 'eslint/lib/rules/no-negated-condition' { 714 | declare module.exports: any; 715 | } 716 | 717 | declare module 'eslint/lib/rules/no-negated-in-lhs' { 718 | declare module.exports: any; 719 | } 720 | 721 | declare module 'eslint/lib/rules/no-nested-ternary' { 722 | declare module.exports: any; 723 | } 724 | 725 | declare module 'eslint/lib/rules/no-new-func' { 726 | declare module.exports: any; 727 | } 728 | 729 | declare module 'eslint/lib/rules/no-new-object' { 730 | declare module.exports: any; 731 | } 732 | 733 | declare module 'eslint/lib/rules/no-new-require' { 734 | declare module.exports: any; 735 | } 736 | 737 | declare module 'eslint/lib/rules/no-new-symbol' { 738 | declare module.exports: any; 739 | } 740 | 741 | declare module 'eslint/lib/rules/no-new-wrappers' { 742 | declare module.exports: any; 743 | } 744 | 745 | declare module 'eslint/lib/rules/no-new' { 746 | declare module.exports: any; 747 | } 748 | 749 | declare module 'eslint/lib/rules/no-obj-calls' { 750 | declare module.exports: any; 751 | } 752 | 753 | declare module 'eslint/lib/rules/no-octal-escape' { 754 | declare module.exports: any; 755 | } 756 | 757 | declare module 'eslint/lib/rules/no-octal' { 758 | declare module.exports: any; 759 | } 760 | 761 | declare module 'eslint/lib/rules/no-param-reassign' { 762 | declare module.exports: any; 763 | } 764 | 765 | declare module 'eslint/lib/rules/no-path-concat' { 766 | declare module.exports: any; 767 | } 768 | 769 | declare module 'eslint/lib/rules/no-plusplus' { 770 | declare module.exports: any; 771 | } 772 | 773 | declare module 'eslint/lib/rules/no-process-env' { 774 | declare module.exports: any; 775 | } 776 | 777 | declare module 'eslint/lib/rules/no-process-exit' { 778 | declare module.exports: any; 779 | } 780 | 781 | declare module 'eslint/lib/rules/no-proto' { 782 | declare module.exports: any; 783 | } 784 | 785 | declare module 'eslint/lib/rules/no-prototype-builtins' { 786 | declare module.exports: any; 787 | } 788 | 789 | declare module 'eslint/lib/rules/no-redeclare' { 790 | declare module.exports: any; 791 | } 792 | 793 | declare module 'eslint/lib/rules/no-regex-spaces' { 794 | declare module.exports: any; 795 | } 796 | 797 | declare module 'eslint/lib/rules/no-restricted-globals' { 798 | declare module.exports: any; 799 | } 800 | 801 | declare module 'eslint/lib/rules/no-restricted-imports' { 802 | declare module.exports: any; 803 | } 804 | 805 | declare module 'eslint/lib/rules/no-restricted-modules' { 806 | declare module.exports: any; 807 | } 808 | 809 | declare module 'eslint/lib/rules/no-restricted-properties' { 810 | declare module.exports: any; 811 | } 812 | 813 | declare module 'eslint/lib/rules/no-restricted-syntax' { 814 | declare module.exports: any; 815 | } 816 | 817 | declare module 'eslint/lib/rules/no-return-assign' { 818 | declare module.exports: any; 819 | } 820 | 821 | declare module 'eslint/lib/rules/no-return-await' { 822 | declare module.exports: any; 823 | } 824 | 825 | declare module 'eslint/lib/rules/no-script-url' { 826 | declare module.exports: any; 827 | } 828 | 829 | declare module 'eslint/lib/rules/no-self-assign' { 830 | declare module.exports: any; 831 | } 832 | 833 | declare module 'eslint/lib/rules/no-self-compare' { 834 | declare module.exports: any; 835 | } 836 | 837 | declare module 'eslint/lib/rules/no-sequences' { 838 | declare module.exports: any; 839 | } 840 | 841 | declare module 'eslint/lib/rules/no-shadow-restricted-names' { 842 | declare module.exports: any; 843 | } 844 | 845 | declare module 'eslint/lib/rules/no-shadow' { 846 | declare module.exports: any; 847 | } 848 | 849 | declare module 'eslint/lib/rules/no-spaced-func' { 850 | declare module.exports: any; 851 | } 852 | 853 | declare module 'eslint/lib/rules/no-sparse-arrays' { 854 | declare module.exports: any; 855 | } 856 | 857 | declare module 'eslint/lib/rules/no-sync' { 858 | declare module.exports: any; 859 | } 860 | 861 | declare module 'eslint/lib/rules/no-tabs' { 862 | declare module.exports: any; 863 | } 864 | 865 | declare module 'eslint/lib/rules/no-template-curly-in-string' { 866 | declare module.exports: any; 867 | } 868 | 869 | declare module 'eslint/lib/rules/no-ternary' { 870 | declare module.exports: any; 871 | } 872 | 873 | declare module 'eslint/lib/rules/no-this-before-super' { 874 | declare module.exports: any; 875 | } 876 | 877 | declare module 'eslint/lib/rules/no-throw-literal' { 878 | declare module.exports: any; 879 | } 880 | 881 | declare module 'eslint/lib/rules/no-trailing-spaces' { 882 | declare module.exports: any; 883 | } 884 | 885 | declare module 'eslint/lib/rules/no-undef-init' { 886 | declare module.exports: any; 887 | } 888 | 889 | declare module 'eslint/lib/rules/no-undef' { 890 | declare module.exports: any; 891 | } 892 | 893 | declare module 'eslint/lib/rules/no-undefined' { 894 | declare module.exports: any; 895 | } 896 | 897 | declare module 'eslint/lib/rules/no-underscore-dangle' { 898 | declare module.exports: any; 899 | } 900 | 901 | declare module 'eslint/lib/rules/no-unexpected-multiline' { 902 | declare module.exports: any; 903 | } 904 | 905 | declare module 'eslint/lib/rules/no-unmodified-loop-condition' { 906 | declare module.exports: any; 907 | } 908 | 909 | declare module 'eslint/lib/rules/no-unneeded-ternary' { 910 | declare module.exports: any; 911 | } 912 | 913 | declare module 'eslint/lib/rules/no-unreachable' { 914 | declare module.exports: any; 915 | } 916 | 917 | declare module 'eslint/lib/rules/no-unsafe-finally' { 918 | declare module.exports: any; 919 | } 920 | 921 | declare module 'eslint/lib/rules/no-unsafe-negation' { 922 | declare module.exports: any; 923 | } 924 | 925 | declare module 'eslint/lib/rules/no-unused-expressions' { 926 | declare module.exports: any; 927 | } 928 | 929 | declare module 'eslint/lib/rules/no-unused-labels' { 930 | declare module.exports: any; 931 | } 932 | 933 | declare module 'eslint/lib/rules/no-unused-vars' { 934 | declare module.exports: any; 935 | } 936 | 937 | declare module 'eslint/lib/rules/no-use-before-define' { 938 | declare module.exports: any; 939 | } 940 | 941 | declare module 'eslint/lib/rules/no-useless-call' { 942 | declare module.exports: any; 943 | } 944 | 945 | declare module 'eslint/lib/rules/no-useless-computed-key' { 946 | declare module.exports: any; 947 | } 948 | 949 | declare module 'eslint/lib/rules/no-useless-concat' { 950 | declare module.exports: any; 951 | } 952 | 953 | declare module 'eslint/lib/rules/no-useless-constructor' { 954 | declare module.exports: any; 955 | } 956 | 957 | declare module 'eslint/lib/rules/no-useless-escape' { 958 | declare module.exports: any; 959 | } 960 | 961 | declare module 'eslint/lib/rules/no-useless-rename' { 962 | declare module.exports: any; 963 | } 964 | 965 | declare module 'eslint/lib/rules/no-useless-return' { 966 | declare module.exports: any; 967 | } 968 | 969 | declare module 'eslint/lib/rules/no-var' { 970 | declare module.exports: any; 971 | } 972 | 973 | declare module 'eslint/lib/rules/no-void' { 974 | declare module.exports: any; 975 | } 976 | 977 | declare module 'eslint/lib/rules/no-warning-comments' { 978 | declare module.exports: any; 979 | } 980 | 981 | declare module 'eslint/lib/rules/no-whitespace-before-property' { 982 | declare module.exports: any; 983 | } 984 | 985 | declare module 'eslint/lib/rules/no-with' { 986 | declare module.exports: any; 987 | } 988 | 989 | declare module 'eslint/lib/rules/nonblock-statement-body-position' { 990 | declare module.exports: any; 991 | } 992 | 993 | declare module 'eslint/lib/rules/object-curly-newline' { 994 | declare module.exports: any; 995 | } 996 | 997 | declare module 'eslint/lib/rules/object-curly-spacing' { 998 | declare module.exports: any; 999 | } 1000 | 1001 | declare module 'eslint/lib/rules/object-property-newline' { 1002 | declare module.exports: any; 1003 | } 1004 | 1005 | declare module 'eslint/lib/rules/object-shorthand' { 1006 | declare module.exports: any; 1007 | } 1008 | 1009 | declare module 'eslint/lib/rules/one-var-declaration-per-line' { 1010 | declare module.exports: any; 1011 | } 1012 | 1013 | declare module 'eslint/lib/rules/one-var' { 1014 | declare module.exports: any; 1015 | } 1016 | 1017 | declare module 'eslint/lib/rules/operator-assignment' { 1018 | declare module.exports: any; 1019 | } 1020 | 1021 | declare module 'eslint/lib/rules/operator-linebreak' { 1022 | declare module.exports: any; 1023 | } 1024 | 1025 | declare module 'eslint/lib/rules/padded-blocks' { 1026 | declare module.exports: any; 1027 | } 1028 | 1029 | declare module 'eslint/lib/rules/prefer-arrow-callback' { 1030 | declare module.exports: any; 1031 | } 1032 | 1033 | declare module 'eslint/lib/rules/prefer-const' { 1034 | declare module.exports: any; 1035 | } 1036 | 1037 | declare module 'eslint/lib/rules/prefer-destructuring' { 1038 | declare module.exports: any; 1039 | } 1040 | 1041 | declare module 'eslint/lib/rules/prefer-numeric-literals' { 1042 | declare module.exports: any; 1043 | } 1044 | 1045 | declare module 'eslint/lib/rules/prefer-promise-reject-errors' { 1046 | declare module.exports: any; 1047 | } 1048 | 1049 | declare module 'eslint/lib/rules/prefer-reflect' { 1050 | declare module.exports: any; 1051 | } 1052 | 1053 | declare module 'eslint/lib/rules/prefer-rest-params' { 1054 | declare module.exports: any; 1055 | } 1056 | 1057 | declare module 'eslint/lib/rules/prefer-spread' { 1058 | declare module.exports: any; 1059 | } 1060 | 1061 | declare module 'eslint/lib/rules/prefer-template' { 1062 | declare module.exports: any; 1063 | } 1064 | 1065 | declare module 'eslint/lib/rules/quote-props' { 1066 | declare module.exports: any; 1067 | } 1068 | 1069 | declare module 'eslint/lib/rules/quotes' { 1070 | declare module.exports: any; 1071 | } 1072 | 1073 | declare module 'eslint/lib/rules/radix' { 1074 | declare module.exports: any; 1075 | } 1076 | 1077 | declare module 'eslint/lib/rules/require-await' { 1078 | declare module.exports: any; 1079 | } 1080 | 1081 | declare module 'eslint/lib/rules/require-jsdoc' { 1082 | declare module.exports: any; 1083 | } 1084 | 1085 | declare module 'eslint/lib/rules/require-yield' { 1086 | declare module.exports: any; 1087 | } 1088 | 1089 | declare module 'eslint/lib/rules/rest-spread-spacing' { 1090 | declare module.exports: any; 1091 | } 1092 | 1093 | declare module 'eslint/lib/rules/semi-spacing' { 1094 | declare module.exports: any; 1095 | } 1096 | 1097 | declare module 'eslint/lib/rules/semi' { 1098 | declare module.exports: any; 1099 | } 1100 | 1101 | declare module 'eslint/lib/rules/sort-imports' { 1102 | declare module.exports: any; 1103 | } 1104 | 1105 | declare module 'eslint/lib/rules/sort-keys' { 1106 | declare module.exports: any; 1107 | } 1108 | 1109 | declare module 'eslint/lib/rules/sort-vars' { 1110 | declare module.exports: any; 1111 | } 1112 | 1113 | declare module 'eslint/lib/rules/space-before-blocks' { 1114 | declare module.exports: any; 1115 | } 1116 | 1117 | declare module 'eslint/lib/rules/space-before-function-paren' { 1118 | declare module.exports: any; 1119 | } 1120 | 1121 | declare module 'eslint/lib/rules/space-in-parens' { 1122 | declare module.exports: any; 1123 | } 1124 | 1125 | declare module 'eslint/lib/rules/space-infix-ops' { 1126 | declare module.exports: any; 1127 | } 1128 | 1129 | declare module 'eslint/lib/rules/space-unary-ops' { 1130 | declare module.exports: any; 1131 | } 1132 | 1133 | declare module 'eslint/lib/rules/spaced-comment' { 1134 | declare module.exports: any; 1135 | } 1136 | 1137 | declare module 'eslint/lib/rules/strict' { 1138 | declare module.exports: any; 1139 | } 1140 | 1141 | declare module 'eslint/lib/rules/symbol-description' { 1142 | declare module.exports: any; 1143 | } 1144 | 1145 | declare module 'eslint/lib/rules/template-curly-spacing' { 1146 | declare module.exports: any; 1147 | } 1148 | 1149 | declare module 'eslint/lib/rules/template-tag-spacing' { 1150 | declare module.exports: any; 1151 | } 1152 | 1153 | declare module 'eslint/lib/rules/unicode-bom' { 1154 | declare module.exports: any; 1155 | } 1156 | 1157 | declare module 'eslint/lib/rules/use-isnan' { 1158 | declare module.exports: any; 1159 | } 1160 | 1161 | declare module 'eslint/lib/rules/valid-jsdoc' { 1162 | declare module.exports: any; 1163 | } 1164 | 1165 | declare module 'eslint/lib/rules/valid-typeof' { 1166 | declare module.exports: any; 1167 | } 1168 | 1169 | declare module 'eslint/lib/rules/vars-on-top' { 1170 | declare module.exports: any; 1171 | } 1172 | 1173 | declare module 'eslint/lib/rules/wrap-iife' { 1174 | declare module.exports: any; 1175 | } 1176 | 1177 | declare module 'eslint/lib/rules/wrap-regex' { 1178 | declare module.exports: any; 1179 | } 1180 | 1181 | declare module 'eslint/lib/rules/yield-star-spacing' { 1182 | declare module.exports: any; 1183 | } 1184 | 1185 | declare module 'eslint/lib/rules/yoda' { 1186 | declare module.exports: any; 1187 | } 1188 | 1189 | declare module 'eslint/lib/testers/event-generator-tester' { 1190 | declare module.exports: any; 1191 | } 1192 | 1193 | declare module 'eslint/lib/testers/rule-tester' { 1194 | declare module.exports: any; 1195 | } 1196 | 1197 | declare module 'eslint/lib/timing' { 1198 | declare module.exports: any; 1199 | } 1200 | 1201 | declare module 'eslint/lib/token-store/backward-token-comment-cursor' { 1202 | declare module.exports: any; 1203 | } 1204 | 1205 | declare module 'eslint/lib/token-store/backward-token-cursor' { 1206 | declare module.exports: any; 1207 | } 1208 | 1209 | declare module 'eslint/lib/token-store/cursor' { 1210 | declare module.exports: any; 1211 | } 1212 | 1213 | declare module 'eslint/lib/token-store/cursors' { 1214 | declare module.exports: any; 1215 | } 1216 | 1217 | declare module 'eslint/lib/token-store/decorative-cursor' { 1218 | declare module.exports: any; 1219 | } 1220 | 1221 | declare module 'eslint/lib/token-store/filter-cursor' { 1222 | declare module.exports: any; 1223 | } 1224 | 1225 | declare module 'eslint/lib/token-store/forward-token-comment-cursor' { 1226 | declare module.exports: any; 1227 | } 1228 | 1229 | declare module 'eslint/lib/token-store/forward-token-cursor' { 1230 | declare module.exports: any; 1231 | } 1232 | 1233 | declare module 'eslint/lib/token-store/index' { 1234 | declare module.exports: any; 1235 | } 1236 | 1237 | declare module 'eslint/lib/token-store/limit-cursor' { 1238 | declare module.exports: any; 1239 | } 1240 | 1241 | declare module 'eslint/lib/token-store/padded-token-cursor' { 1242 | declare module.exports: any; 1243 | } 1244 | 1245 | declare module 'eslint/lib/token-store/skip-cursor' { 1246 | declare module.exports: any; 1247 | } 1248 | 1249 | declare module 'eslint/lib/token-store/utils' { 1250 | declare module.exports: any; 1251 | } 1252 | 1253 | declare module 'eslint/lib/util/comment-event-generator' { 1254 | declare module.exports: any; 1255 | } 1256 | 1257 | declare module 'eslint/lib/util/fix-tracker' { 1258 | declare module.exports: any; 1259 | } 1260 | 1261 | declare module 'eslint/lib/util/glob-util' { 1262 | declare module.exports: any; 1263 | } 1264 | 1265 | declare module 'eslint/lib/util/glob' { 1266 | declare module.exports: any; 1267 | } 1268 | 1269 | declare module 'eslint/lib/util/hash' { 1270 | declare module.exports: any; 1271 | } 1272 | 1273 | declare module 'eslint/lib/util/keywords' { 1274 | declare module.exports: any; 1275 | } 1276 | 1277 | declare module 'eslint/lib/util/module-resolver' { 1278 | declare module.exports: any; 1279 | } 1280 | 1281 | declare module 'eslint/lib/util/node-event-generator' { 1282 | declare module.exports: any; 1283 | } 1284 | 1285 | declare module 'eslint/lib/util/npm-util' { 1286 | declare module.exports: any; 1287 | } 1288 | 1289 | declare module 'eslint/lib/util/path-util' { 1290 | declare module.exports: any; 1291 | } 1292 | 1293 | declare module 'eslint/lib/util/patterns/letters' { 1294 | declare module.exports: any; 1295 | } 1296 | 1297 | declare module 'eslint/lib/util/rule-fixer' { 1298 | declare module.exports: any; 1299 | } 1300 | 1301 | declare module 'eslint/lib/util/source-code-fixer' { 1302 | declare module.exports: any; 1303 | } 1304 | 1305 | declare module 'eslint/lib/util/source-code-util' { 1306 | declare module.exports: any; 1307 | } 1308 | 1309 | declare module 'eslint/lib/util/source-code' { 1310 | declare module.exports: any; 1311 | } 1312 | 1313 | declare module 'eslint/lib/util/traverser' { 1314 | declare module.exports: any; 1315 | } 1316 | 1317 | declare module 'eslint/lib/util/xml-escape' { 1318 | declare module.exports: any; 1319 | } 1320 | 1321 | // Filename aliases 1322 | declare module 'eslint/bin/eslint.js' { 1323 | declare module.exports: $Exports<'eslint/bin/eslint'>; 1324 | } 1325 | declare module 'eslint/conf/cli-options.js' { 1326 | declare module.exports: $Exports<'eslint/conf/cli-options'>; 1327 | } 1328 | declare module 'eslint/conf/environments.js' { 1329 | declare module.exports: $Exports<'eslint/conf/environments'>; 1330 | } 1331 | declare module 'eslint/conf/eslint-all.js' { 1332 | declare module.exports: $Exports<'eslint/conf/eslint-all'>; 1333 | } 1334 | declare module 'eslint/conf/eslint-recommended.js' { 1335 | declare module.exports: $Exports<'eslint/conf/eslint-recommended'>; 1336 | } 1337 | declare module 'eslint/lib/api.js' { 1338 | declare module.exports: $Exports<'eslint/lib/api'>; 1339 | } 1340 | declare module 'eslint/lib/ast-utils.js' { 1341 | declare module.exports: $Exports<'eslint/lib/ast-utils'>; 1342 | } 1343 | declare module 'eslint/lib/cli-engine.js' { 1344 | declare module.exports: $Exports<'eslint/lib/cli-engine'>; 1345 | } 1346 | declare module 'eslint/lib/cli.js' { 1347 | declare module.exports: $Exports<'eslint/lib/cli'>; 1348 | } 1349 | declare module 'eslint/lib/code-path-analysis/code-path-analyzer.js' { 1350 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-analyzer'>; 1351 | } 1352 | declare module 'eslint/lib/code-path-analysis/code-path-segment.js' { 1353 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-segment'>; 1354 | } 1355 | declare module 'eslint/lib/code-path-analysis/code-path-state.js' { 1356 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path-state'>; 1357 | } 1358 | declare module 'eslint/lib/code-path-analysis/code-path.js' { 1359 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/code-path'>; 1360 | } 1361 | declare module 'eslint/lib/code-path-analysis/debug-helpers.js' { 1362 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/debug-helpers'>; 1363 | } 1364 | declare module 'eslint/lib/code-path-analysis/fork-context.js' { 1365 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/fork-context'>; 1366 | } 1367 | declare module 'eslint/lib/code-path-analysis/id-generator.js' { 1368 | declare module.exports: $Exports<'eslint/lib/code-path-analysis/id-generator'>; 1369 | } 1370 | declare module 'eslint/lib/config.js' { 1371 | declare module.exports: $Exports<'eslint/lib/config'>; 1372 | } 1373 | declare module 'eslint/lib/config/autoconfig.js' { 1374 | declare module.exports: $Exports<'eslint/lib/config/autoconfig'>; 1375 | } 1376 | declare module 'eslint/lib/config/config-file.js' { 1377 | declare module.exports: $Exports<'eslint/lib/config/config-file'>; 1378 | } 1379 | declare module 'eslint/lib/config/config-initializer.js' { 1380 | declare module.exports: $Exports<'eslint/lib/config/config-initializer'>; 1381 | } 1382 | declare module 'eslint/lib/config/config-ops.js' { 1383 | declare module.exports: $Exports<'eslint/lib/config/config-ops'>; 1384 | } 1385 | declare module 'eslint/lib/config/config-rule.js' { 1386 | declare module.exports: $Exports<'eslint/lib/config/config-rule'>; 1387 | } 1388 | declare module 'eslint/lib/config/config-validator.js' { 1389 | declare module.exports: $Exports<'eslint/lib/config/config-validator'>; 1390 | } 1391 | declare module 'eslint/lib/config/environments.js' { 1392 | declare module.exports: $Exports<'eslint/lib/config/environments'>; 1393 | } 1394 | declare module 'eslint/lib/config/plugins.js' { 1395 | declare module.exports: $Exports<'eslint/lib/config/plugins'>; 1396 | } 1397 | declare module 'eslint/lib/eslint.js' { 1398 | declare module.exports: $Exports<'eslint/lib/eslint'>; 1399 | } 1400 | declare module 'eslint/lib/file-finder.js' { 1401 | declare module.exports: $Exports<'eslint/lib/file-finder'>; 1402 | } 1403 | declare module 'eslint/lib/formatters/checkstyle.js' { 1404 | declare module.exports: $Exports<'eslint/lib/formatters/checkstyle'>; 1405 | } 1406 | declare module 'eslint/lib/formatters/codeframe.js' { 1407 | declare module.exports: $Exports<'eslint/lib/formatters/codeframe'>; 1408 | } 1409 | declare module 'eslint/lib/formatters/compact.js' { 1410 | declare module.exports: $Exports<'eslint/lib/formatters/compact'>; 1411 | } 1412 | declare module 'eslint/lib/formatters/html.js' { 1413 | declare module.exports: $Exports<'eslint/lib/formatters/html'>; 1414 | } 1415 | declare module 'eslint/lib/formatters/jslint-xml.js' { 1416 | declare module.exports: $Exports<'eslint/lib/formatters/jslint-xml'>; 1417 | } 1418 | declare module 'eslint/lib/formatters/json.js' { 1419 | declare module.exports: $Exports<'eslint/lib/formatters/json'>; 1420 | } 1421 | declare module 'eslint/lib/formatters/junit.js' { 1422 | declare module.exports: $Exports<'eslint/lib/formatters/junit'>; 1423 | } 1424 | declare module 'eslint/lib/formatters/stylish.js' { 1425 | declare module.exports: $Exports<'eslint/lib/formatters/stylish'>; 1426 | } 1427 | declare module 'eslint/lib/formatters/table.js' { 1428 | declare module.exports: $Exports<'eslint/lib/formatters/table'>; 1429 | } 1430 | declare module 'eslint/lib/formatters/tap.js' { 1431 | declare module.exports: $Exports<'eslint/lib/formatters/tap'>; 1432 | } 1433 | declare module 'eslint/lib/formatters/unix.js' { 1434 | declare module.exports: $Exports<'eslint/lib/formatters/unix'>; 1435 | } 1436 | declare module 'eslint/lib/formatters/visualstudio.js' { 1437 | declare module.exports: $Exports<'eslint/lib/formatters/visualstudio'>; 1438 | } 1439 | declare module 'eslint/lib/ignored-paths.js' { 1440 | declare module.exports: $Exports<'eslint/lib/ignored-paths'>; 1441 | } 1442 | declare module 'eslint/lib/internal-rules/internal-consistent-docs-description.js' { 1443 | declare module.exports: $Exports<'eslint/lib/internal-rules/internal-consistent-docs-description'>; 1444 | } 1445 | declare module 'eslint/lib/internal-rules/internal-no-invalid-meta.js' { 1446 | declare module.exports: $Exports<'eslint/lib/internal-rules/internal-no-invalid-meta'>; 1447 | } 1448 | declare module 'eslint/lib/load-rules.js' { 1449 | declare module.exports: $Exports<'eslint/lib/load-rules'>; 1450 | } 1451 | declare module 'eslint/lib/logging.js' { 1452 | declare module.exports: $Exports<'eslint/lib/logging'>; 1453 | } 1454 | declare module 'eslint/lib/options.js' { 1455 | declare module.exports: $Exports<'eslint/lib/options'>; 1456 | } 1457 | declare module 'eslint/lib/rule-context.js' { 1458 | declare module.exports: $Exports<'eslint/lib/rule-context'>; 1459 | } 1460 | declare module 'eslint/lib/rules.js' { 1461 | declare module.exports: $Exports<'eslint/lib/rules'>; 1462 | } 1463 | declare module 'eslint/lib/rules/accessor-pairs.js' { 1464 | declare module.exports: $Exports<'eslint/lib/rules/accessor-pairs'>; 1465 | } 1466 | declare module 'eslint/lib/rules/array-bracket-spacing.js' { 1467 | declare module.exports: $Exports<'eslint/lib/rules/array-bracket-spacing'>; 1468 | } 1469 | declare module 'eslint/lib/rules/array-callback-return.js' { 1470 | declare module.exports: $Exports<'eslint/lib/rules/array-callback-return'>; 1471 | } 1472 | declare module 'eslint/lib/rules/arrow-body-style.js' { 1473 | declare module.exports: $Exports<'eslint/lib/rules/arrow-body-style'>; 1474 | } 1475 | declare module 'eslint/lib/rules/arrow-parens.js' { 1476 | declare module.exports: $Exports<'eslint/lib/rules/arrow-parens'>; 1477 | } 1478 | declare module 'eslint/lib/rules/arrow-spacing.js' { 1479 | declare module.exports: $Exports<'eslint/lib/rules/arrow-spacing'>; 1480 | } 1481 | declare module 'eslint/lib/rules/block-scoped-var.js' { 1482 | declare module.exports: $Exports<'eslint/lib/rules/block-scoped-var'>; 1483 | } 1484 | declare module 'eslint/lib/rules/block-spacing.js' { 1485 | declare module.exports: $Exports<'eslint/lib/rules/block-spacing'>; 1486 | } 1487 | declare module 'eslint/lib/rules/brace-style.js' { 1488 | declare module.exports: $Exports<'eslint/lib/rules/brace-style'>; 1489 | } 1490 | declare module 'eslint/lib/rules/callback-return.js' { 1491 | declare module.exports: $Exports<'eslint/lib/rules/callback-return'>; 1492 | } 1493 | declare module 'eslint/lib/rules/camelcase.js' { 1494 | declare module.exports: $Exports<'eslint/lib/rules/camelcase'>; 1495 | } 1496 | declare module 'eslint/lib/rules/capitalized-comments.js' { 1497 | declare module.exports: $Exports<'eslint/lib/rules/capitalized-comments'>; 1498 | } 1499 | declare module 'eslint/lib/rules/class-methods-use-this.js' { 1500 | declare module.exports: $Exports<'eslint/lib/rules/class-methods-use-this'>; 1501 | } 1502 | declare module 'eslint/lib/rules/comma-dangle.js' { 1503 | declare module.exports: $Exports<'eslint/lib/rules/comma-dangle'>; 1504 | } 1505 | declare module 'eslint/lib/rules/comma-spacing.js' { 1506 | declare module.exports: $Exports<'eslint/lib/rules/comma-spacing'>; 1507 | } 1508 | declare module 'eslint/lib/rules/comma-style.js' { 1509 | declare module.exports: $Exports<'eslint/lib/rules/comma-style'>; 1510 | } 1511 | declare module 'eslint/lib/rules/complexity.js' { 1512 | declare module.exports: $Exports<'eslint/lib/rules/complexity'>; 1513 | } 1514 | declare module 'eslint/lib/rules/computed-property-spacing.js' { 1515 | declare module.exports: $Exports<'eslint/lib/rules/computed-property-spacing'>; 1516 | } 1517 | declare module 'eslint/lib/rules/consistent-return.js' { 1518 | declare module.exports: $Exports<'eslint/lib/rules/consistent-return'>; 1519 | } 1520 | declare module 'eslint/lib/rules/consistent-this.js' { 1521 | declare module.exports: $Exports<'eslint/lib/rules/consistent-this'>; 1522 | } 1523 | declare module 'eslint/lib/rules/constructor-super.js' { 1524 | declare module.exports: $Exports<'eslint/lib/rules/constructor-super'>; 1525 | } 1526 | declare module 'eslint/lib/rules/curly.js' { 1527 | declare module.exports: $Exports<'eslint/lib/rules/curly'>; 1528 | } 1529 | declare module 'eslint/lib/rules/default-case.js' { 1530 | declare module.exports: $Exports<'eslint/lib/rules/default-case'>; 1531 | } 1532 | declare module 'eslint/lib/rules/dot-location.js' { 1533 | declare module.exports: $Exports<'eslint/lib/rules/dot-location'>; 1534 | } 1535 | declare module 'eslint/lib/rules/dot-notation.js' { 1536 | declare module.exports: $Exports<'eslint/lib/rules/dot-notation'>; 1537 | } 1538 | declare module 'eslint/lib/rules/eol-last.js' { 1539 | declare module.exports: $Exports<'eslint/lib/rules/eol-last'>; 1540 | } 1541 | declare module 'eslint/lib/rules/eqeqeq.js' { 1542 | declare module.exports: $Exports<'eslint/lib/rules/eqeqeq'>; 1543 | } 1544 | declare module 'eslint/lib/rules/func-call-spacing.js' { 1545 | declare module.exports: $Exports<'eslint/lib/rules/func-call-spacing'>; 1546 | } 1547 | declare module 'eslint/lib/rules/func-name-matching.js' { 1548 | declare module.exports: $Exports<'eslint/lib/rules/func-name-matching'>; 1549 | } 1550 | declare module 'eslint/lib/rules/func-names.js' { 1551 | declare module.exports: $Exports<'eslint/lib/rules/func-names'>; 1552 | } 1553 | declare module 'eslint/lib/rules/func-style.js' { 1554 | declare module.exports: $Exports<'eslint/lib/rules/func-style'>; 1555 | } 1556 | declare module 'eslint/lib/rules/generator-star-spacing.js' { 1557 | declare module.exports: $Exports<'eslint/lib/rules/generator-star-spacing'>; 1558 | } 1559 | declare module 'eslint/lib/rules/global-require.js' { 1560 | declare module.exports: $Exports<'eslint/lib/rules/global-require'>; 1561 | } 1562 | declare module 'eslint/lib/rules/guard-for-in.js' { 1563 | declare module.exports: $Exports<'eslint/lib/rules/guard-for-in'>; 1564 | } 1565 | declare module 'eslint/lib/rules/handle-callback-err.js' { 1566 | declare module.exports: $Exports<'eslint/lib/rules/handle-callback-err'>; 1567 | } 1568 | declare module 'eslint/lib/rules/id-blacklist.js' { 1569 | declare module.exports: $Exports<'eslint/lib/rules/id-blacklist'>; 1570 | } 1571 | declare module 'eslint/lib/rules/id-length.js' { 1572 | declare module.exports: $Exports<'eslint/lib/rules/id-length'>; 1573 | } 1574 | declare module 'eslint/lib/rules/id-match.js' { 1575 | declare module.exports: $Exports<'eslint/lib/rules/id-match'>; 1576 | } 1577 | declare module 'eslint/lib/rules/indent.js' { 1578 | declare module.exports: $Exports<'eslint/lib/rules/indent'>; 1579 | } 1580 | declare module 'eslint/lib/rules/init-declarations.js' { 1581 | declare module.exports: $Exports<'eslint/lib/rules/init-declarations'>; 1582 | } 1583 | declare module 'eslint/lib/rules/jsx-quotes.js' { 1584 | declare module.exports: $Exports<'eslint/lib/rules/jsx-quotes'>; 1585 | } 1586 | declare module 'eslint/lib/rules/key-spacing.js' { 1587 | declare module.exports: $Exports<'eslint/lib/rules/key-spacing'>; 1588 | } 1589 | declare module 'eslint/lib/rules/keyword-spacing.js' { 1590 | declare module.exports: $Exports<'eslint/lib/rules/keyword-spacing'>; 1591 | } 1592 | declare module 'eslint/lib/rules/line-comment-position.js' { 1593 | declare module.exports: $Exports<'eslint/lib/rules/line-comment-position'>; 1594 | } 1595 | declare module 'eslint/lib/rules/linebreak-style.js' { 1596 | declare module.exports: $Exports<'eslint/lib/rules/linebreak-style'>; 1597 | } 1598 | declare module 'eslint/lib/rules/lines-around-comment.js' { 1599 | declare module.exports: $Exports<'eslint/lib/rules/lines-around-comment'>; 1600 | } 1601 | declare module 'eslint/lib/rules/lines-around-directive.js' { 1602 | declare module.exports: $Exports<'eslint/lib/rules/lines-around-directive'>; 1603 | } 1604 | declare module 'eslint/lib/rules/max-depth.js' { 1605 | declare module.exports: $Exports<'eslint/lib/rules/max-depth'>; 1606 | } 1607 | declare module 'eslint/lib/rules/max-len.js' { 1608 | declare module.exports: $Exports<'eslint/lib/rules/max-len'>; 1609 | } 1610 | declare module 'eslint/lib/rules/max-lines.js' { 1611 | declare module.exports: $Exports<'eslint/lib/rules/max-lines'>; 1612 | } 1613 | declare module 'eslint/lib/rules/max-nested-callbacks.js' { 1614 | declare module.exports: $Exports<'eslint/lib/rules/max-nested-callbacks'>; 1615 | } 1616 | declare module 'eslint/lib/rules/max-params.js' { 1617 | declare module.exports: $Exports<'eslint/lib/rules/max-params'>; 1618 | } 1619 | declare module 'eslint/lib/rules/max-statements-per-line.js' { 1620 | declare module.exports: $Exports<'eslint/lib/rules/max-statements-per-line'>; 1621 | } 1622 | declare module 'eslint/lib/rules/max-statements.js' { 1623 | declare module.exports: $Exports<'eslint/lib/rules/max-statements'>; 1624 | } 1625 | declare module 'eslint/lib/rules/multiline-ternary.js' { 1626 | declare module.exports: $Exports<'eslint/lib/rules/multiline-ternary'>; 1627 | } 1628 | declare module 'eslint/lib/rules/new-cap.js' { 1629 | declare module.exports: $Exports<'eslint/lib/rules/new-cap'>; 1630 | } 1631 | declare module 'eslint/lib/rules/new-parens.js' { 1632 | declare module.exports: $Exports<'eslint/lib/rules/new-parens'>; 1633 | } 1634 | declare module 'eslint/lib/rules/newline-after-var.js' { 1635 | declare module.exports: $Exports<'eslint/lib/rules/newline-after-var'>; 1636 | } 1637 | declare module 'eslint/lib/rules/newline-before-return.js' { 1638 | declare module.exports: $Exports<'eslint/lib/rules/newline-before-return'>; 1639 | } 1640 | declare module 'eslint/lib/rules/newline-per-chained-call.js' { 1641 | declare module.exports: $Exports<'eslint/lib/rules/newline-per-chained-call'>; 1642 | } 1643 | declare module 'eslint/lib/rules/no-alert.js' { 1644 | declare module.exports: $Exports<'eslint/lib/rules/no-alert'>; 1645 | } 1646 | declare module 'eslint/lib/rules/no-array-constructor.js' { 1647 | declare module.exports: $Exports<'eslint/lib/rules/no-array-constructor'>; 1648 | } 1649 | declare module 'eslint/lib/rules/no-await-in-loop.js' { 1650 | declare module.exports: $Exports<'eslint/lib/rules/no-await-in-loop'>; 1651 | } 1652 | declare module 'eslint/lib/rules/no-bitwise.js' { 1653 | declare module.exports: $Exports<'eslint/lib/rules/no-bitwise'>; 1654 | } 1655 | declare module 'eslint/lib/rules/no-caller.js' { 1656 | declare module.exports: $Exports<'eslint/lib/rules/no-caller'>; 1657 | } 1658 | declare module 'eslint/lib/rules/no-case-declarations.js' { 1659 | declare module.exports: $Exports<'eslint/lib/rules/no-case-declarations'>; 1660 | } 1661 | declare module 'eslint/lib/rules/no-catch-shadow.js' { 1662 | declare module.exports: $Exports<'eslint/lib/rules/no-catch-shadow'>; 1663 | } 1664 | declare module 'eslint/lib/rules/no-class-assign.js' { 1665 | declare module.exports: $Exports<'eslint/lib/rules/no-class-assign'>; 1666 | } 1667 | declare module 'eslint/lib/rules/no-compare-neg-zero.js' { 1668 | declare module.exports: $Exports<'eslint/lib/rules/no-compare-neg-zero'>; 1669 | } 1670 | declare module 'eslint/lib/rules/no-cond-assign.js' { 1671 | declare module.exports: $Exports<'eslint/lib/rules/no-cond-assign'>; 1672 | } 1673 | declare module 'eslint/lib/rules/no-confusing-arrow.js' { 1674 | declare module.exports: $Exports<'eslint/lib/rules/no-confusing-arrow'>; 1675 | } 1676 | declare module 'eslint/lib/rules/no-console.js' { 1677 | declare module.exports: $Exports<'eslint/lib/rules/no-console'>; 1678 | } 1679 | declare module 'eslint/lib/rules/no-const-assign.js' { 1680 | declare module.exports: $Exports<'eslint/lib/rules/no-const-assign'>; 1681 | } 1682 | declare module 'eslint/lib/rules/no-constant-condition.js' { 1683 | declare module.exports: $Exports<'eslint/lib/rules/no-constant-condition'>; 1684 | } 1685 | declare module 'eslint/lib/rules/no-continue.js' { 1686 | declare module.exports: $Exports<'eslint/lib/rules/no-continue'>; 1687 | } 1688 | declare module 'eslint/lib/rules/no-control-regex.js' { 1689 | declare module.exports: $Exports<'eslint/lib/rules/no-control-regex'>; 1690 | } 1691 | declare module 'eslint/lib/rules/no-debugger.js' { 1692 | declare module.exports: $Exports<'eslint/lib/rules/no-debugger'>; 1693 | } 1694 | declare module 'eslint/lib/rules/no-delete-var.js' { 1695 | declare module.exports: $Exports<'eslint/lib/rules/no-delete-var'>; 1696 | } 1697 | declare module 'eslint/lib/rules/no-div-regex.js' { 1698 | declare module.exports: $Exports<'eslint/lib/rules/no-div-regex'>; 1699 | } 1700 | declare module 'eslint/lib/rules/no-dupe-args.js' { 1701 | declare module.exports: $Exports<'eslint/lib/rules/no-dupe-args'>; 1702 | } 1703 | declare module 'eslint/lib/rules/no-dupe-class-members.js' { 1704 | declare module.exports: $Exports<'eslint/lib/rules/no-dupe-class-members'>; 1705 | } 1706 | declare module 'eslint/lib/rules/no-dupe-keys.js' { 1707 | declare module.exports: $Exports<'eslint/lib/rules/no-dupe-keys'>; 1708 | } 1709 | declare module 'eslint/lib/rules/no-duplicate-case.js' { 1710 | declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-case'>; 1711 | } 1712 | declare module 'eslint/lib/rules/no-duplicate-imports.js' { 1713 | declare module.exports: $Exports<'eslint/lib/rules/no-duplicate-imports'>; 1714 | } 1715 | declare module 'eslint/lib/rules/no-else-return.js' { 1716 | declare module.exports: $Exports<'eslint/lib/rules/no-else-return'>; 1717 | } 1718 | declare module 'eslint/lib/rules/no-empty-character-class.js' { 1719 | declare module.exports: $Exports<'eslint/lib/rules/no-empty-character-class'>; 1720 | } 1721 | declare module 'eslint/lib/rules/no-empty-function.js' { 1722 | declare module.exports: $Exports<'eslint/lib/rules/no-empty-function'>; 1723 | } 1724 | declare module 'eslint/lib/rules/no-empty-pattern.js' { 1725 | declare module.exports: $Exports<'eslint/lib/rules/no-empty-pattern'>; 1726 | } 1727 | declare module 'eslint/lib/rules/no-empty.js' { 1728 | declare module.exports: $Exports<'eslint/lib/rules/no-empty'>; 1729 | } 1730 | declare module 'eslint/lib/rules/no-eq-null.js' { 1731 | declare module.exports: $Exports<'eslint/lib/rules/no-eq-null'>; 1732 | } 1733 | declare module 'eslint/lib/rules/no-eval.js' { 1734 | declare module.exports: $Exports<'eslint/lib/rules/no-eval'>; 1735 | } 1736 | declare module 'eslint/lib/rules/no-ex-assign.js' { 1737 | declare module.exports: $Exports<'eslint/lib/rules/no-ex-assign'>; 1738 | } 1739 | declare module 'eslint/lib/rules/no-extend-native.js' { 1740 | declare module.exports: $Exports<'eslint/lib/rules/no-extend-native'>; 1741 | } 1742 | declare module 'eslint/lib/rules/no-extra-bind.js' { 1743 | declare module.exports: $Exports<'eslint/lib/rules/no-extra-bind'>; 1744 | } 1745 | declare module 'eslint/lib/rules/no-extra-boolean-cast.js' { 1746 | declare module.exports: $Exports<'eslint/lib/rules/no-extra-boolean-cast'>; 1747 | } 1748 | declare module 'eslint/lib/rules/no-extra-label.js' { 1749 | declare module.exports: $Exports<'eslint/lib/rules/no-extra-label'>; 1750 | } 1751 | declare module 'eslint/lib/rules/no-extra-parens.js' { 1752 | declare module.exports: $Exports<'eslint/lib/rules/no-extra-parens'>; 1753 | } 1754 | declare module 'eslint/lib/rules/no-extra-semi.js' { 1755 | declare module.exports: $Exports<'eslint/lib/rules/no-extra-semi'>; 1756 | } 1757 | declare module 'eslint/lib/rules/no-fallthrough.js' { 1758 | declare module.exports: $Exports<'eslint/lib/rules/no-fallthrough'>; 1759 | } 1760 | declare module 'eslint/lib/rules/no-floating-decimal.js' { 1761 | declare module.exports: $Exports<'eslint/lib/rules/no-floating-decimal'>; 1762 | } 1763 | declare module 'eslint/lib/rules/no-func-assign.js' { 1764 | declare module.exports: $Exports<'eslint/lib/rules/no-func-assign'>; 1765 | } 1766 | declare module 'eslint/lib/rules/no-global-assign.js' { 1767 | declare module.exports: $Exports<'eslint/lib/rules/no-global-assign'>; 1768 | } 1769 | declare module 'eslint/lib/rules/no-implicit-coercion.js' { 1770 | declare module.exports: $Exports<'eslint/lib/rules/no-implicit-coercion'>; 1771 | } 1772 | declare module 'eslint/lib/rules/no-implicit-globals.js' { 1773 | declare module.exports: $Exports<'eslint/lib/rules/no-implicit-globals'>; 1774 | } 1775 | declare module 'eslint/lib/rules/no-implied-eval.js' { 1776 | declare module.exports: $Exports<'eslint/lib/rules/no-implied-eval'>; 1777 | } 1778 | declare module 'eslint/lib/rules/no-inline-comments.js' { 1779 | declare module.exports: $Exports<'eslint/lib/rules/no-inline-comments'>; 1780 | } 1781 | declare module 'eslint/lib/rules/no-inner-declarations.js' { 1782 | declare module.exports: $Exports<'eslint/lib/rules/no-inner-declarations'>; 1783 | } 1784 | declare module 'eslint/lib/rules/no-invalid-regexp.js' { 1785 | declare module.exports: $Exports<'eslint/lib/rules/no-invalid-regexp'>; 1786 | } 1787 | declare module 'eslint/lib/rules/no-invalid-this.js' { 1788 | declare module.exports: $Exports<'eslint/lib/rules/no-invalid-this'>; 1789 | } 1790 | declare module 'eslint/lib/rules/no-irregular-whitespace.js' { 1791 | declare module.exports: $Exports<'eslint/lib/rules/no-irregular-whitespace'>; 1792 | } 1793 | declare module 'eslint/lib/rules/no-iterator.js' { 1794 | declare module.exports: $Exports<'eslint/lib/rules/no-iterator'>; 1795 | } 1796 | declare module 'eslint/lib/rules/no-label-var.js' { 1797 | declare module.exports: $Exports<'eslint/lib/rules/no-label-var'>; 1798 | } 1799 | declare module 'eslint/lib/rules/no-labels.js' { 1800 | declare module.exports: $Exports<'eslint/lib/rules/no-labels'>; 1801 | } 1802 | declare module 'eslint/lib/rules/no-lone-blocks.js' { 1803 | declare module.exports: $Exports<'eslint/lib/rules/no-lone-blocks'>; 1804 | } 1805 | declare module 'eslint/lib/rules/no-lonely-if.js' { 1806 | declare module.exports: $Exports<'eslint/lib/rules/no-lonely-if'>; 1807 | } 1808 | declare module 'eslint/lib/rules/no-loop-func.js' { 1809 | declare module.exports: $Exports<'eslint/lib/rules/no-loop-func'>; 1810 | } 1811 | declare module 'eslint/lib/rules/no-magic-numbers.js' { 1812 | declare module.exports: $Exports<'eslint/lib/rules/no-magic-numbers'>; 1813 | } 1814 | declare module 'eslint/lib/rules/no-mixed-operators.js' { 1815 | declare module.exports: $Exports<'eslint/lib/rules/no-mixed-operators'>; 1816 | } 1817 | declare module 'eslint/lib/rules/no-mixed-requires.js' { 1818 | declare module.exports: $Exports<'eslint/lib/rules/no-mixed-requires'>; 1819 | } 1820 | declare module 'eslint/lib/rules/no-mixed-spaces-and-tabs.js' { 1821 | declare module.exports: $Exports<'eslint/lib/rules/no-mixed-spaces-and-tabs'>; 1822 | } 1823 | declare module 'eslint/lib/rules/no-multi-assign.js' { 1824 | declare module.exports: $Exports<'eslint/lib/rules/no-multi-assign'>; 1825 | } 1826 | declare module 'eslint/lib/rules/no-multi-spaces.js' { 1827 | declare module.exports: $Exports<'eslint/lib/rules/no-multi-spaces'>; 1828 | } 1829 | declare module 'eslint/lib/rules/no-multi-str.js' { 1830 | declare module.exports: $Exports<'eslint/lib/rules/no-multi-str'>; 1831 | } 1832 | declare module 'eslint/lib/rules/no-multiple-empty-lines.js' { 1833 | declare module.exports: $Exports<'eslint/lib/rules/no-multiple-empty-lines'>; 1834 | } 1835 | declare module 'eslint/lib/rules/no-native-reassign.js' { 1836 | declare module.exports: $Exports<'eslint/lib/rules/no-native-reassign'>; 1837 | } 1838 | declare module 'eslint/lib/rules/no-negated-condition.js' { 1839 | declare module.exports: $Exports<'eslint/lib/rules/no-negated-condition'>; 1840 | } 1841 | declare module 'eslint/lib/rules/no-negated-in-lhs.js' { 1842 | declare module.exports: $Exports<'eslint/lib/rules/no-negated-in-lhs'>; 1843 | } 1844 | declare module 'eslint/lib/rules/no-nested-ternary.js' { 1845 | declare module.exports: $Exports<'eslint/lib/rules/no-nested-ternary'>; 1846 | } 1847 | declare module 'eslint/lib/rules/no-new-func.js' { 1848 | declare module.exports: $Exports<'eslint/lib/rules/no-new-func'>; 1849 | } 1850 | declare module 'eslint/lib/rules/no-new-object.js' { 1851 | declare module.exports: $Exports<'eslint/lib/rules/no-new-object'>; 1852 | } 1853 | declare module 'eslint/lib/rules/no-new-require.js' { 1854 | declare module.exports: $Exports<'eslint/lib/rules/no-new-require'>; 1855 | } 1856 | declare module 'eslint/lib/rules/no-new-symbol.js' { 1857 | declare module.exports: $Exports<'eslint/lib/rules/no-new-symbol'>; 1858 | } 1859 | declare module 'eslint/lib/rules/no-new-wrappers.js' { 1860 | declare module.exports: $Exports<'eslint/lib/rules/no-new-wrappers'>; 1861 | } 1862 | declare module 'eslint/lib/rules/no-new.js' { 1863 | declare module.exports: $Exports<'eslint/lib/rules/no-new'>; 1864 | } 1865 | declare module 'eslint/lib/rules/no-obj-calls.js' { 1866 | declare module.exports: $Exports<'eslint/lib/rules/no-obj-calls'>; 1867 | } 1868 | declare module 'eslint/lib/rules/no-octal-escape.js' { 1869 | declare module.exports: $Exports<'eslint/lib/rules/no-octal-escape'>; 1870 | } 1871 | declare module 'eslint/lib/rules/no-octal.js' { 1872 | declare module.exports: $Exports<'eslint/lib/rules/no-octal'>; 1873 | } 1874 | declare module 'eslint/lib/rules/no-param-reassign.js' { 1875 | declare module.exports: $Exports<'eslint/lib/rules/no-param-reassign'>; 1876 | } 1877 | declare module 'eslint/lib/rules/no-path-concat.js' { 1878 | declare module.exports: $Exports<'eslint/lib/rules/no-path-concat'>; 1879 | } 1880 | declare module 'eslint/lib/rules/no-plusplus.js' { 1881 | declare module.exports: $Exports<'eslint/lib/rules/no-plusplus'>; 1882 | } 1883 | declare module 'eslint/lib/rules/no-process-env.js' { 1884 | declare module.exports: $Exports<'eslint/lib/rules/no-process-env'>; 1885 | } 1886 | declare module 'eslint/lib/rules/no-process-exit.js' { 1887 | declare module.exports: $Exports<'eslint/lib/rules/no-process-exit'>; 1888 | } 1889 | declare module 'eslint/lib/rules/no-proto.js' { 1890 | declare module.exports: $Exports<'eslint/lib/rules/no-proto'>; 1891 | } 1892 | declare module 'eslint/lib/rules/no-prototype-builtins.js' { 1893 | declare module.exports: $Exports<'eslint/lib/rules/no-prototype-builtins'>; 1894 | } 1895 | declare module 'eslint/lib/rules/no-redeclare.js' { 1896 | declare module.exports: $Exports<'eslint/lib/rules/no-redeclare'>; 1897 | } 1898 | declare module 'eslint/lib/rules/no-regex-spaces.js' { 1899 | declare module.exports: $Exports<'eslint/lib/rules/no-regex-spaces'>; 1900 | } 1901 | declare module 'eslint/lib/rules/no-restricted-globals.js' { 1902 | declare module.exports: $Exports<'eslint/lib/rules/no-restricted-globals'>; 1903 | } 1904 | declare module 'eslint/lib/rules/no-restricted-imports.js' { 1905 | declare module.exports: $Exports<'eslint/lib/rules/no-restricted-imports'>; 1906 | } 1907 | declare module 'eslint/lib/rules/no-restricted-modules.js' { 1908 | declare module.exports: $Exports<'eslint/lib/rules/no-restricted-modules'>; 1909 | } 1910 | declare module 'eslint/lib/rules/no-restricted-properties.js' { 1911 | declare module.exports: $Exports<'eslint/lib/rules/no-restricted-properties'>; 1912 | } 1913 | declare module 'eslint/lib/rules/no-restricted-syntax.js' { 1914 | declare module.exports: $Exports<'eslint/lib/rules/no-restricted-syntax'>; 1915 | } 1916 | declare module 'eslint/lib/rules/no-return-assign.js' { 1917 | declare module.exports: $Exports<'eslint/lib/rules/no-return-assign'>; 1918 | } 1919 | declare module 'eslint/lib/rules/no-return-await.js' { 1920 | declare module.exports: $Exports<'eslint/lib/rules/no-return-await'>; 1921 | } 1922 | declare module 'eslint/lib/rules/no-script-url.js' { 1923 | declare module.exports: $Exports<'eslint/lib/rules/no-script-url'>; 1924 | } 1925 | declare module 'eslint/lib/rules/no-self-assign.js' { 1926 | declare module.exports: $Exports<'eslint/lib/rules/no-self-assign'>; 1927 | } 1928 | declare module 'eslint/lib/rules/no-self-compare.js' { 1929 | declare module.exports: $Exports<'eslint/lib/rules/no-self-compare'>; 1930 | } 1931 | declare module 'eslint/lib/rules/no-sequences.js' { 1932 | declare module.exports: $Exports<'eslint/lib/rules/no-sequences'>; 1933 | } 1934 | declare module 'eslint/lib/rules/no-shadow-restricted-names.js' { 1935 | declare module.exports: $Exports<'eslint/lib/rules/no-shadow-restricted-names'>; 1936 | } 1937 | declare module 'eslint/lib/rules/no-shadow.js' { 1938 | declare module.exports: $Exports<'eslint/lib/rules/no-shadow'>; 1939 | } 1940 | declare module 'eslint/lib/rules/no-spaced-func.js' { 1941 | declare module.exports: $Exports<'eslint/lib/rules/no-spaced-func'>; 1942 | } 1943 | declare module 'eslint/lib/rules/no-sparse-arrays.js' { 1944 | declare module.exports: $Exports<'eslint/lib/rules/no-sparse-arrays'>; 1945 | } 1946 | declare module 'eslint/lib/rules/no-sync.js' { 1947 | declare module.exports: $Exports<'eslint/lib/rules/no-sync'>; 1948 | } 1949 | declare module 'eslint/lib/rules/no-tabs.js' { 1950 | declare module.exports: $Exports<'eslint/lib/rules/no-tabs'>; 1951 | } 1952 | declare module 'eslint/lib/rules/no-template-curly-in-string.js' { 1953 | declare module.exports: $Exports<'eslint/lib/rules/no-template-curly-in-string'>; 1954 | } 1955 | declare module 'eslint/lib/rules/no-ternary.js' { 1956 | declare module.exports: $Exports<'eslint/lib/rules/no-ternary'>; 1957 | } 1958 | declare module 'eslint/lib/rules/no-this-before-super.js' { 1959 | declare module.exports: $Exports<'eslint/lib/rules/no-this-before-super'>; 1960 | } 1961 | declare module 'eslint/lib/rules/no-throw-literal.js' { 1962 | declare module.exports: $Exports<'eslint/lib/rules/no-throw-literal'>; 1963 | } 1964 | declare module 'eslint/lib/rules/no-trailing-spaces.js' { 1965 | declare module.exports: $Exports<'eslint/lib/rules/no-trailing-spaces'>; 1966 | } 1967 | declare module 'eslint/lib/rules/no-undef-init.js' { 1968 | declare module.exports: $Exports<'eslint/lib/rules/no-undef-init'>; 1969 | } 1970 | declare module 'eslint/lib/rules/no-undef.js' { 1971 | declare module.exports: $Exports<'eslint/lib/rules/no-undef'>; 1972 | } 1973 | declare module 'eslint/lib/rules/no-undefined.js' { 1974 | declare module.exports: $Exports<'eslint/lib/rules/no-undefined'>; 1975 | } 1976 | declare module 'eslint/lib/rules/no-underscore-dangle.js' { 1977 | declare module.exports: $Exports<'eslint/lib/rules/no-underscore-dangle'>; 1978 | } 1979 | declare module 'eslint/lib/rules/no-unexpected-multiline.js' { 1980 | declare module.exports: $Exports<'eslint/lib/rules/no-unexpected-multiline'>; 1981 | } 1982 | declare module 'eslint/lib/rules/no-unmodified-loop-condition.js' { 1983 | declare module.exports: $Exports<'eslint/lib/rules/no-unmodified-loop-condition'>; 1984 | } 1985 | declare module 'eslint/lib/rules/no-unneeded-ternary.js' { 1986 | declare module.exports: $Exports<'eslint/lib/rules/no-unneeded-ternary'>; 1987 | } 1988 | declare module 'eslint/lib/rules/no-unreachable.js' { 1989 | declare module.exports: $Exports<'eslint/lib/rules/no-unreachable'>; 1990 | } 1991 | declare module 'eslint/lib/rules/no-unsafe-finally.js' { 1992 | declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-finally'>; 1993 | } 1994 | declare module 'eslint/lib/rules/no-unsafe-negation.js' { 1995 | declare module.exports: $Exports<'eslint/lib/rules/no-unsafe-negation'>; 1996 | } 1997 | declare module 'eslint/lib/rules/no-unused-expressions.js' { 1998 | declare module.exports: $Exports<'eslint/lib/rules/no-unused-expressions'>; 1999 | } 2000 | declare module 'eslint/lib/rules/no-unused-labels.js' { 2001 | declare module.exports: $Exports<'eslint/lib/rules/no-unused-labels'>; 2002 | } 2003 | declare module 'eslint/lib/rules/no-unused-vars.js' { 2004 | declare module.exports: $Exports<'eslint/lib/rules/no-unused-vars'>; 2005 | } 2006 | declare module 'eslint/lib/rules/no-use-before-define.js' { 2007 | declare module.exports: $Exports<'eslint/lib/rules/no-use-before-define'>; 2008 | } 2009 | declare module 'eslint/lib/rules/no-useless-call.js' { 2010 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-call'>; 2011 | } 2012 | declare module 'eslint/lib/rules/no-useless-computed-key.js' { 2013 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-computed-key'>; 2014 | } 2015 | declare module 'eslint/lib/rules/no-useless-concat.js' { 2016 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-concat'>; 2017 | } 2018 | declare module 'eslint/lib/rules/no-useless-constructor.js' { 2019 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-constructor'>; 2020 | } 2021 | declare module 'eslint/lib/rules/no-useless-escape.js' { 2022 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-escape'>; 2023 | } 2024 | declare module 'eslint/lib/rules/no-useless-rename.js' { 2025 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-rename'>; 2026 | } 2027 | declare module 'eslint/lib/rules/no-useless-return.js' { 2028 | declare module.exports: $Exports<'eslint/lib/rules/no-useless-return'>; 2029 | } 2030 | declare module 'eslint/lib/rules/no-var.js' { 2031 | declare module.exports: $Exports<'eslint/lib/rules/no-var'>; 2032 | } 2033 | declare module 'eslint/lib/rules/no-void.js' { 2034 | declare module.exports: $Exports<'eslint/lib/rules/no-void'>; 2035 | } 2036 | declare module 'eslint/lib/rules/no-warning-comments.js' { 2037 | declare module.exports: $Exports<'eslint/lib/rules/no-warning-comments'>; 2038 | } 2039 | declare module 'eslint/lib/rules/no-whitespace-before-property.js' { 2040 | declare module.exports: $Exports<'eslint/lib/rules/no-whitespace-before-property'>; 2041 | } 2042 | declare module 'eslint/lib/rules/no-with.js' { 2043 | declare module.exports: $Exports<'eslint/lib/rules/no-with'>; 2044 | } 2045 | declare module 'eslint/lib/rules/nonblock-statement-body-position.js' { 2046 | declare module.exports: $Exports<'eslint/lib/rules/nonblock-statement-body-position'>; 2047 | } 2048 | declare module 'eslint/lib/rules/object-curly-newline.js' { 2049 | declare module.exports: $Exports<'eslint/lib/rules/object-curly-newline'>; 2050 | } 2051 | declare module 'eslint/lib/rules/object-curly-spacing.js' { 2052 | declare module.exports: $Exports<'eslint/lib/rules/object-curly-spacing'>; 2053 | } 2054 | declare module 'eslint/lib/rules/object-property-newline.js' { 2055 | declare module.exports: $Exports<'eslint/lib/rules/object-property-newline'>; 2056 | } 2057 | declare module 'eslint/lib/rules/object-shorthand.js' { 2058 | declare module.exports: $Exports<'eslint/lib/rules/object-shorthand'>; 2059 | } 2060 | declare module 'eslint/lib/rules/one-var-declaration-per-line.js' { 2061 | declare module.exports: $Exports<'eslint/lib/rules/one-var-declaration-per-line'>; 2062 | } 2063 | declare module 'eslint/lib/rules/one-var.js' { 2064 | declare module.exports: $Exports<'eslint/lib/rules/one-var'>; 2065 | } 2066 | declare module 'eslint/lib/rules/operator-assignment.js' { 2067 | declare module.exports: $Exports<'eslint/lib/rules/operator-assignment'>; 2068 | } 2069 | declare module 'eslint/lib/rules/operator-linebreak.js' { 2070 | declare module.exports: $Exports<'eslint/lib/rules/operator-linebreak'>; 2071 | } 2072 | declare module 'eslint/lib/rules/padded-blocks.js' { 2073 | declare module.exports: $Exports<'eslint/lib/rules/padded-blocks'>; 2074 | } 2075 | declare module 'eslint/lib/rules/prefer-arrow-callback.js' { 2076 | declare module.exports: $Exports<'eslint/lib/rules/prefer-arrow-callback'>; 2077 | } 2078 | declare module 'eslint/lib/rules/prefer-const.js' { 2079 | declare module.exports: $Exports<'eslint/lib/rules/prefer-const'>; 2080 | } 2081 | declare module 'eslint/lib/rules/prefer-destructuring.js' { 2082 | declare module.exports: $Exports<'eslint/lib/rules/prefer-destructuring'>; 2083 | } 2084 | declare module 'eslint/lib/rules/prefer-numeric-literals.js' { 2085 | declare module.exports: $Exports<'eslint/lib/rules/prefer-numeric-literals'>; 2086 | } 2087 | declare module 'eslint/lib/rules/prefer-promise-reject-errors.js' { 2088 | declare module.exports: $Exports<'eslint/lib/rules/prefer-promise-reject-errors'>; 2089 | } 2090 | declare module 'eslint/lib/rules/prefer-reflect.js' { 2091 | declare module.exports: $Exports<'eslint/lib/rules/prefer-reflect'>; 2092 | } 2093 | declare module 'eslint/lib/rules/prefer-rest-params.js' { 2094 | declare module.exports: $Exports<'eslint/lib/rules/prefer-rest-params'>; 2095 | } 2096 | declare module 'eslint/lib/rules/prefer-spread.js' { 2097 | declare module.exports: $Exports<'eslint/lib/rules/prefer-spread'>; 2098 | } 2099 | declare module 'eslint/lib/rules/prefer-template.js' { 2100 | declare module.exports: $Exports<'eslint/lib/rules/prefer-template'>; 2101 | } 2102 | declare module 'eslint/lib/rules/quote-props.js' { 2103 | declare module.exports: $Exports<'eslint/lib/rules/quote-props'>; 2104 | } 2105 | declare module 'eslint/lib/rules/quotes.js' { 2106 | declare module.exports: $Exports<'eslint/lib/rules/quotes'>; 2107 | } 2108 | declare module 'eslint/lib/rules/radix.js' { 2109 | declare module.exports: $Exports<'eslint/lib/rules/radix'>; 2110 | } 2111 | declare module 'eslint/lib/rules/require-await.js' { 2112 | declare module.exports: $Exports<'eslint/lib/rules/require-await'>; 2113 | } 2114 | declare module 'eslint/lib/rules/require-jsdoc.js' { 2115 | declare module.exports: $Exports<'eslint/lib/rules/require-jsdoc'>; 2116 | } 2117 | declare module 'eslint/lib/rules/require-yield.js' { 2118 | declare module.exports: $Exports<'eslint/lib/rules/require-yield'>; 2119 | } 2120 | declare module 'eslint/lib/rules/rest-spread-spacing.js' { 2121 | declare module.exports: $Exports<'eslint/lib/rules/rest-spread-spacing'>; 2122 | } 2123 | declare module 'eslint/lib/rules/semi-spacing.js' { 2124 | declare module.exports: $Exports<'eslint/lib/rules/semi-spacing'>; 2125 | } 2126 | declare module 'eslint/lib/rules/semi.js' { 2127 | declare module.exports: $Exports<'eslint/lib/rules/semi'>; 2128 | } 2129 | declare module 'eslint/lib/rules/sort-imports.js' { 2130 | declare module.exports: $Exports<'eslint/lib/rules/sort-imports'>; 2131 | } 2132 | declare module 'eslint/lib/rules/sort-keys.js' { 2133 | declare module.exports: $Exports<'eslint/lib/rules/sort-keys'>; 2134 | } 2135 | declare module 'eslint/lib/rules/sort-vars.js' { 2136 | declare module.exports: $Exports<'eslint/lib/rules/sort-vars'>; 2137 | } 2138 | declare module 'eslint/lib/rules/space-before-blocks.js' { 2139 | declare module.exports: $Exports<'eslint/lib/rules/space-before-blocks'>; 2140 | } 2141 | declare module 'eslint/lib/rules/space-before-function-paren.js' { 2142 | declare module.exports: $Exports<'eslint/lib/rules/space-before-function-paren'>; 2143 | } 2144 | declare module 'eslint/lib/rules/space-in-parens.js' { 2145 | declare module.exports: $Exports<'eslint/lib/rules/space-in-parens'>; 2146 | } 2147 | declare module 'eslint/lib/rules/space-infix-ops.js' { 2148 | declare module.exports: $Exports<'eslint/lib/rules/space-infix-ops'>; 2149 | } 2150 | declare module 'eslint/lib/rules/space-unary-ops.js' { 2151 | declare module.exports: $Exports<'eslint/lib/rules/space-unary-ops'>; 2152 | } 2153 | declare module 'eslint/lib/rules/spaced-comment.js' { 2154 | declare module.exports: $Exports<'eslint/lib/rules/spaced-comment'>; 2155 | } 2156 | declare module 'eslint/lib/rules/strict.js' { 2157 | declare module.exports: $Exports<'eslint/lib/rules/strict'>; 2158 | } 2159 | declare module 'eslint/lib/rules/symbol-description.js' { 2160 | declare module.exports: $Exports<'eslint/lib/rules/symbol-description'>; 2161 | } 2162 | declare module 'eslint/lib/rules/template-curly-spacing.js' { 2163 | declare module.exports: $Exports<'eslint/lib/rules/template-curly-spacing'>; 2164 | } 2165 | declare module 'eslint/lib/rules/template-tag-spacing.js' { 2166 | declare module.exports: $Exports<'eslint/lib/rules/template-tag-spacing'>; 2167 | } 2168 | declare module 'eslint/lib/rules/unicode-bom.js' { 2169 | declare module.exports: $Exports<'eslint/lib/rules/unicode-bom'>; 2170 | } 2171 | declare module 'eslint/lib/rules/use-isnan.js' { 2172 | declare module.exports: $Exports<'eslint/lib/rules/use-isnan'>; 2173 | } 2174 | declare module 'eslint/lib/rules/valid-jsdoc.js' { 2175 | declare module.exports: $Exports<'eslint/lib/rules/valid-jsdoc'>; 2176 | } 2177 | declare module 'eslint/lib/rules/valid-typeof.js' { 2178 | declare module.exports: $Exports<'eslint/lib/rules/valid-typeof'>; 2179 | } 2180 | declare module 'eslint/lib/rules/vars-on-top.js' { 2181 | declare module.exports: $Exports<'eslint/lib/rules/vars-on-top'>; 2182 | } 2183 | declare module 'eslint/lib/rules/wrap-iife.js' { 2184 | declare module.exports: $Exports<'eslint/lib/rules/wrap-iife'>; 2185 | } 2186 | declare module 'eslint/lib/rules/wrap-regex.js' { 2187 | declare module.exports: $Exports<'eslint/lib/rules/wrap-regex'>; 2188 | } 2189 | declare module 'eslint/lib/rules/yield-star-spacing.js' { 2190 | declare module.exports: $Exports<'eslint/lib/rules/yield-star-spacing'>; 2191 | } 2192 | declare module 'eslint/lib/rules/yoda.js' { 2193 | declare module.exports: $Exports<'eslint/lib/rules/yoda'>; 2194 | } 2195 | declare module 'eslint/lib/testers/event-generator-tester.js' { 2196 | declare module.exports: $Exports<'eslint/lib/testers/event-generator-tester'>; 2197 | } 2198 | declare module 'eslint/lib/testers/rule-tester.js' { 2199 | declare module.exports: $Exports<'eslint/lib/testers/rule-tester'>; 2200 | } 2201 | declare module 'eslint/lib/timing.js' { 2202 | declare module.exports: $Exports<'eslint/lib/timing'>; 2203 | } 2204 | declare module 'eslint/lib/token-store/backward-token-comment-cursor.js' { 2205 | declare module.exports: $Exports<'eslint/lib/token-store/backward-token-comment-cursor'>; 2206 | } 2207 | declare module 'eslint/lib/token-store/backward-token-cursor.js' { 2208 | declare module.exports: $Exports<'eslint/lib/token-store/backward-token-cursor'>; 2209 | } 2210 | declare module 'eslint/lib/token-store/cursor.js' { 2211 | declare module.exports: $Exports<'eslint/lib/token-store/cursor'>; 2212 | } 2213 | declare module 'eslint/lib/token-store/cursors.js' { 2214 | declare module.exports: $Exports<'eslint/lib/token-store/cursors'>; 2215 | } 2216 | declare module 'eslint/lib/token-store/decorative-cursor.js' { 2217 | declare module.exports: $Exports<'eslint/lib/token-store/decorative-cursor'>; 2218 | } 2219 | declare module 'eslint/lib/token-store/filter-cursor.js' { 2220 | declare module.exports: $Exports<'eslint/lib/token-store/filter-cursor'>; 2221 | } 2222 | declare module 'eslint/lib/token-store/forward-token-comment-cursor.js' { 2223 | declare module.exports: $Exports<'eslint/lib/token-store/forward-token-comment-cursor'>; 2224 | } 2225 | declare module 'eslint/lib/token-store/forward-token-cursor.js' { 2226 | declare module.exports: $Exports<'eslint/lib/token-store/forward-token-cursor'>; 2227 | } 2228 | declare module 'eslint/lib/token-store/index.js' { 2229 | declare module.exports: $Exports<'eslint/lib/token-store/index'>; 2230 | } 2231 | declare module 'eslint/lib/token-store/limit-cursor.js' { 2232 | declare module.exports: $Exports<'eslint/lib/token-store/limit-cursor'>; 2233 | } 2234 | declare module 'eslint/lib/token-store/padded-token-cursor.js' { 2235 | declare module.exports: $Exports<'eslint/lib/token-store/padded-token-cursor'>; 2236 | } 2237 | declare module 'eslint/lib/token-store/skip-cursor.js' { 2238 | declare module.exports: $Exports<'eslint/lib/token-store/skip-cursor'>; 2239 | } 2240 | declare module 'eslint/lib/token-store/utils.js' { 2241 | declare module.exports: $Exports<'eslint/lib/token-store/utils'>; 2242 | } 2243 | declare module 'eslint/lib/util/comment-event-generator.js' { 2244 | declare module.exports: $Exports<'eslint/lib/util/comment-event-generator'>; 2245 | } 2246 | declare module 'eslint/lib/util/fix-tracker.js' { 2247 | declare module.exports: $Exports<'eslint/lib/util/fix-tracker'>; 2248 | } 2249 | declare module 'eslint/lib/util/glob-util.js' { 2250 | declare module.exports: $Exports<'eslint/lib/util/glob-util'>; 2251 | } 2252 | declare module 'eslint/lib/util/glob.js' { 2253 | declare module.exports: $Exports<'eslint/lib/util/glob'>; 2254 | } 2255 | declare module 'eslint/lib/util/hash.js' { 2256 | declare module.exports: $Exports<'eslint/lib/util/hash'>; 2257 | } 2258 | declare module 'eslint/lib/util/keywords.js' { 2259 | declare module.exports: $Exports<'eslint/lib/util/keywords'>; 2260 | } 2261 | declare module 'eslint/lib/util/module-resolver.js' { 2262 | declare module.exports: $Exports<'eslint/lib/util/module-resolver'>; 2263 | } 2264 | declare module 'eslint/lib/util/node-event-generator.js' { 2265 | declare module.exports: $Exports<'eslint/lib/util/node-event-generator'>; 2266 | } 2267 | declare module 'eslint/lib/util/npm-util.js' { 2268 | declare module.exports: $Exports<'eslint/lib/util/npm-util'>; 2269 | } 2270 | declare module 'eslint/lib/util/path-util.js' { 2271 | declare module.exports: $Exports<'eslint/lib/util/path-util'>; 2272 | } 2273 | declare module 'eslint/lib/util/patterns/letters.js' { 2274 | declare module.exports: $Exports<'eslint/lib/util/patterns/letters'>; 2275 | } 2276 | declare module 'eslint/lib/util/rule-fixer.js' { 2277 | declare module.exports: $Exports<'eslint/lib/util/rule-fixer'>; 2278 | } 2279 | declare module 'eslint/lib/util/source-code-fixer.js' { 2280 | declare module.exports: $Exports<'eslint/lib/util/source-code-fixer'>; 2281 | } 2282 | declare module 'eslint/lib/util/source-code-util.js' { 2283 | declare module.exports: $Exports<'eslint/lib/util/source-code-util'>; 2284 | } 2285 | declare module 'eslint/lib/util/source-code.js' { 2286 | declare module.exports: $Exports<'eslint/lib/util/source-code'>; 2287 | } 2288 | declare module 'eslint/lib/util/traverser.js' { 2289 | declare module.exports: $Exports<'eslint/lib/util/traverser'>; 2290 | } 2291 | declare module 'eslint/lib/util/xml-escape.js' { 2292 | declare module.exports: $Exports<'eslint/lib/util/xml-escape'>; 2293 | } 2294 | --------------------------------------------------------------------------------