{
	"name": "utility-types",
	"versions": {
		"0.0.1": {
			"name": "utility-types",
			"version": "0.0.1",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"prepublishOnlyDisabled": "yarn run clean && yarn run reinstall && yarn run check && yarn run test && yarn run build",
				"check": "npm run lint & npm run tsc",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json",
				"test:watch": "jest --config jest.config.json --watch",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.6",
				"@types/node": "6.0.94",
				"jest-cli": "21.2.1",
				"ts-jest": "21.2.2",
				"ts-node": "3.3.0",
				"tslib": "1.8.0",
				"tslint": "5.8.0",
				"typescript": "2.6.2"
			},
			"keywords": [
				"utility-types",
				"typescript",
				"utilities",
				"static-typing",
				"mapped-types"
			],
			"gitHead": "55f8b005eef71d5c218318fba73a41983bed9984",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@0.0.1",
			"_npmVersion": "5.6.0",
			"_nodeVersion": "6.11.5",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-lPsRgrBfnISnCehNx3mIhudCPpiCqs5FVy/rjHeg3fhhOaqtzHBnKT8y/kX+5asvxjGkzqHLsqMDCiEPxK8OKA==",
				"shasum": "1c8a6f06a8fda62ae0aaa73f983d458d26068e50",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-0.0.1.tgz"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types-0.0.1.tgz_1514671200350_0.28808036213740706"
			},
			"directories": {},
			"contributors": []
		},
		"1.0.0-rc.1": {
			"name": "utility-types",
			"version": "1.0.0-rc.1",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/react-redux-typescript.git#utility-types"
			},
			"homepage": "https://github.com/piotrwitek/react-redux-typescript#utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'",
				"precommit": "npm run lint",
				"prepush": "npm run test",
				"prepublishOnly": "npm run clean && npm run reinstall && npm run lint && npm run tsc && npm run test && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.0.0",
				"@types/node": "6.0.95",
				"husky": "0.14.3",
				"jest-cli": "22.0.4",
				"redux": "3.7.2",
				"ts-jest": "22.0.0",
				"ts-node": "4.1.0",
				"tslib": "1.8.1",
				"tslint": "5.8.0",
				"typescript": "2.6.2"
			},
			"keywords": [
				"utility-types",
				"typescript",
				"utilities",
				"static-typing",
				"mapped-types"
			],
			"gitHead": "16aba852604a8163779e916bca3ca6efb905c735",
			"bugs": {
				"url": "https://github.com/piotrwitek/react-redux-typescript/issues"
			},
			"_id": "utility-types@1.0.0-rc.1",
			"_npmVersion": "5.6.0",
			"_nodeVersion": "6.11.5",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-hpvbqlazzcdu9RfJqpjD9C1mgw3Du+D4hNyhCClvdkwezl/0GYyyJPlHhFGehRtamTTq+7eT107u4gr7hVlIuQ==",
				"shasum": "19262c4988950996d3ea043afdd269b677480c67",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0-rc.1.tgz"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types-1.0.0-rc.1.tgz_1514675434859_0.7599551293533295"
			},
			"directories": {},
			"contributors": []
		},
		"1.0.0-rc.2": {
			"name": "utility-types",
			"version": "1.0.0-rc.2",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/piotrwitek/react-redux-typescript/tree/utility-types"
			},
			"homepage": "https://github.com/piotrwitek/react-redux-typescript/tree/utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'",
				"precommit": "npm run lint",
				"prepush": "npm run test",
				"prepublishOnly": "npm run clean && npm run reinstall && npm run lint && npm run tsc && npm run test && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.0.0",
				"@types/node": "6.0.95",
				"husky": "0.14.3",
				"jest-cli": "22.0.4",
				"redux": "3.7.2",
				"ts-jest": "22.0.0",
				"ts-node": "4.1.0",
				"tslib": "1.8.1",
				"tslint": "5.8.0",
				"typescript": "2.6.2"
			},
			"keywords": [
				"utility-types",
				"typescript",
				"utilities",
				"static-typing",
				"mapped-types"
			],
			"gitHead": "78450606fd3a7926afa7bc9f1af2c67f7d09f431",
			"_id": "utility-types@1.0.0-rc.2",
			"_npmVersion": "5.6.0",
			"_nodeVersion": "6.11.5",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-8NAlvNGrqLuOFJP+HDB6VzpX/1g1lW9LV8v31Yi0SAdYcmZAI1wJ6oN8J3jpS+Za0cCqHtPOqvTMqhRd2UYOhg==",
				"shasum": "1284e73983b7c91660b4686eab1a71dd7af7dd7e",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0-rc.2.tgz"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types-1.0.0-rc.2.tgz_1514675711747_0.7338071947451681"
			},
			"directories": {},
			"contributors": []
		},
		"1.0.0": {
			"name": "utility-types",
			"version": "1.0.0",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'",
				"precommit": "npm run lint",
				"prepush": "npm run test",
				"prepublishOnly": "npm run clean && npm run reinstall && npm run lint && npm run tsc && npm run test && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.0.0",
				"@types/node": "6.0.95",
				"husky": "0.14.3",
				"jest-cli": "22.0.4",
				"redux": "3.7.2",
				"ts-jest": "22.0.0",
				"ts-node": "4.1.0",
				"tslib": "1.8.1",
				"tslint": "5.8.0",
				"typescript": "2.6.2"
			},
			"keywords": [
				"utility-types",
				"typescript",
				"utilities",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "d39fa29045cb3f3bcbcdfdabd29b991bec42ccb0",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@1.0.0",
			"_npmVersion": "5.6.0",
			"_nodeVersion": "6.11.5",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-pMncuYFei3Mf7OpVrZosOlS00bupa4XzE2NK03K/jLzRdwmBwHG97DbayJ0fQQuDs5VF7cZ7zado120lh3kwlQ==",
				"shasum": "95e0774ed78ffa055fc228591963de3902e36609",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0.tgz"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types-1.0.0.tgz_1516577942948_0.8066087854094803"
			},
			"directories": {},
			"contributors": []
		},
		"1.1.0": {
			"name": "utility-types",
			"version": "1.1.0",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'",
				"precommit": "npm run lint",
				"prepush": "npm run test",
				"prepublishOnly": "npm run clean && npm run reinstall && npm run lint && npm run tsc && npm run test && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.0.0",
				"@types/node": "6.0.95",
				"husky": "0.14.3",
				"jest-cli": "22.0.4",
				"redux": "3.7.2",
				"ts-jest": "22.0.0",
				"ts-node": "4.1.0",
				"tslib": "1.8.1",
				"tslint": "5.8.0",
				"typescript": "2.7.2"
			},
			"keywords": [
				"utility-types",
				"typescript",
				"utilities",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "83dd1ad08afe85f497ac118ce3cb76c713f4bdc2",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@1.1.0",
			"_npmVersion": "5.6.0",
			"_nodeVersion": "9.5.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-6PGyowB/ZDDAygpdZzdLu/9mn2EMf08/V1OOqTTc5EhADgd+/BQhinslzhD9xTVw3EWYa1jI3aBMZy5neBbSfw==",
				"shasum": "52408b6ed852fdd4076b48b30ed726f139b0f116",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-1.1.0.tgz",
				"fileCount": 49,
				"unpackedSize": 21878
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_1.1.0_1520378067559_0.5161127012177489"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"2.0.0": {
			"name": "utility-types",
			"version": "2.0.0",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "es5-commonjs/index.d.ts",
			"main": "es5-commonjs/index.js",
			"module": "es5-module/index.js",
			"jsnext:main": "jsnext/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ && yarn install",
				"clean": "rm -rf es5-commonjs/ es5-module/ jsnext/",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"build": "yarn run build:commonjs & yarn run build:module & yarn run build:jsnext",
				"build:commonjs": "rm -rf es5-commonjs/ && tsc -p . --outDir es5-commonjs/",
				"build:module": "rm -rf es5-module/ && tsc -p . --outDir es5-module/ -m 'ES2015'",
				"build:jsnext": "rm -rf jsnext/ && tsc -p . --outDir jsnext/ -t 'ES2015'",
				"precommit": "npm run lint",
				"prepush": "npm run test",
				"prepublishOnly": "npm run clean && npm run reinstall && npm run lint && npm run tsc && npm run test && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.2.2",
				"husky": "0.14.3",
				"jest": "22.4.3",
				"ts-jest": "22.4.2",
				"ts-node": "5.0.1",
				"tslib": "1.9.0",
				"tslint": "5.9.1",
				"typescript": "2.8.1"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "7331c856f6820c113b5fab6b151a185ec4465b18",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@2.0.0",
			"_npmVersion": "5.7.1",
			"_nodeVersion": "9.9.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-/ilZGby7cs2OmvJuhRiqczKtjEY5lcdt2oaI/Q+VFepOAgQNgGRwTbRa0mtN1CIb7Kkw5dSsCKXMU29+jLP8jw==",
				"shasum": "3c9fe26914a1c7b8aff690e8f941e76b091d3149",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-2.0.0.tgz",
				"fileCount": 50,
				"unpackedSize": 138775
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_2.0.0_1522711051740_0.8837825400361072"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"2.1.0": {
			"name": "utility-types",
			"version": "2.1.0",
			"description": "Utility Types Library for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ es5-commonjs/ es5-module/ jsnext/ && npm install",
				"check": "npm run lint & npm run tsc & npm run test",
				"prelint": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"pretest": "tsc -p ./tsconfig.spec.json --noEmit",
				"test": "jest --config jest.config.json ./src",
				"test:watch": "jest --config jest.config.json --watch ./src",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepush": "npm run check",
				"prepublishOnly": "npm run reinstall && npm run check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "22.2.3",
				"husky": "0.14.3",
				"jest": "22.4.3",
				"prettier": "1.12.1",
				"rollup": "0.59.1",
				"rollup-plugin-commonjs": "9.1.3",
				"rollup-plugin-filesize": "1.5.0",
				"rollup-plugin-node-resolve": "3.3.0",
				"rollup-plugin-sourcemaps": "0.4.2",
				"rollup-plugin-uglify": "3.0.0",
				"ts-jest": "22.4.6",
				"tslib": "1.9.1",
				"tslint": "5.10.0",
				"typescript": "2.8.3"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "2d6a2d451bdb1e54f50547b7db175df7ed0da16d",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@2.1.0",
			"_npmVersion": "6.2.0",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==",
				"shasum": "0c78fc9f7eb424d14302222b4ddd13fdb17f44ab",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-2.1.0.tgz",
				"fileCount": 15,
				"unpackedSize": 21621,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmpfzCRA9TVsSAnZWagAA9cUP/RPxUsuzM41zuBG6kNSK\nUo7eleXlGgeK/eLoGqFvTQ4gDp7gMyg9UcMbDFljuDXnbawEE1D4cFW3Qu8G\ngroHf+i7S0ks4EjfUZPKryohiXdRNnOgL3VbX28zwK54UwvD2dHCXVyUaRNG\nNnwSRHKMgDRQNLK/RQq5feMXjnsbkBj/+u0WncRkyziURWy0zGTBoB9gxPXA\nCgVFX1gQ0dlefADaS0bMSD7AU/H/cfK5L6wNxnpVProiMCY9NODowjQQ2OJf\nBU5ipc/GnWTxdKD3fHejpZB2oZ18M7mBFrrcn5FP4scRkcgGwHxlIxkLocXf\nnAbErbeJ292/ZJ/ZgaeRXNzuh4LbZFlrH2Ikb6njI65LBUcK9bkjPeButggM\n6nIDJfqqlYZIiw6OCKJat2x/9D5eYYSAxqNvgkR+w53nPdwBoQx2D+xbGV8H\nem360WDNpdsv/BfiPnGjqK1Cx/9/duAbdP0tq1mRnAVAyvAJO34gydemM+yU\nNFCnjn+Wl/ysqv37L+cUq3zQw9njnImrvbfCaV8Ofi92VL/Xx3y8xHof9//D\nNDBAtF+zxfkhz6tBjDxrTmmuMNRH8uNQolddm/kqOfXX8+tvYhzWItkGs35n\nYC00Uedu2hC7YJ0EK2CNjM6wX6jH2Gr4jmBHnVwEl8BnZMW8ySUPlTutrrct\nG9qZ\r\n=f1yS\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_2.1.0_1536858098611_0.036622558303246455"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.0.0": {
			"name": "utility-types",
			"version": "3.0.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ es5-commonjs/ es5-module/ jsnext/ && npm install",
				"prelint": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"ci-check": "npm run lint & npm run tsc & npm run test:update",
				"prepush": "npm run ci-check",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "^21.1.10",
				"dts-jest": "^22.0.4",
				"husky": "^1.3.0",
				"jest": "^21.2.1",
				"prettier": "^1.15.3",
				"rollup": "0.59.1",
				"rollup-plugin-commonjs": "^9.2.0",
				"rollup-plugin-filesize": "1.5.0",
				"rollup-plugin-node-resolve": "^3.4.0",
				"rollup-plugin-sourcemaps": "0.4.2",
				"rollup-plugin-uglify": "3.0.0",
				"ts-jest": "^21.2.4",
				"tslib": "^1.9.3",
				"tslint": "^5.12.0",
				"typescript": "^3.2.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "a8cbb08f21e0bac0f58d5f551e665d85610aa3f7",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.0.0",
			"_npmVersion": "6.4.1",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-eAv4GYXof9UbugNjhfybnpjtIq7xLgs1XgDgjE1UTFmojqhd5qK5m7RPSynWxQtuMt3JvVnsXzGR+2Jh1ey3xg==",
				"shasum": "4d0dd8cd460da3dddecbe42568053bd1f6c1a740",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.0.0.tgz",
				"fileCount": 15,
				"unpackedSize": 24310,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHOn6CRA9TVsSAnZWagAA5RkP/RwKxQykDlhE7mGsFKHU\nQpjwRYKnXksUnJB5tZ2nXSuVN9zkEguxvknCCQeYUje9E0Ua3VGw6lRurAfU\nwxBoVwvMV8xuHGmtAsfWr+ZxH6iawilfQaAv4EBQqzAPsa4TTMd5zJKbAnD7\nMyrAjEVQy9GkCTh5sQ8oRAOrY52G3PEi8DHE48y+arL4KjKxl53Igpj+XrFm\nE2esv8UM/54YqkX67hFHzh17lmL++Qjg1X9raZNHvzRqdnHGtrkdk6snqAQM\nsFqWo0T6esIPu2bQMPHsPd1GFe+3gEWDckg1cRe7kDMjM6t9L40YQavtMj1o\n+WH4aKo7Nl/ELjeZjZDFVhfAH6KiNCx7cyC/U97xm2uS7mdyIRe+wpXRvxJx\ndprQ9m18VPLIQWD4QW9YLKs8HFq8F0WHKt9tWqKSj1UL6QSypVgMUioks5+a\n9RvNdmYRlRKQwABRGPVSS8tW8N3TATVm9x5L+XqGRq+3EY9xFpbTHD9Jrbk6\n3HGcKa8AxSvT5gC9lpD3WMsk2xwv1D3LxpIBt+UuOP8EFm3YHMdR1T1bugeR\nO2kSziMQW+Mzo5WT9wt7fadCCvFvfPE3RydAmXSgcAM020kKzKrU0RfXifS0\n+1vQV0kB51wcOAM2DEHB1B7fkx1CrNzYuku8R/csoM66d65R6IO7gVpyM9Fr\npc+0\r\n=gxvw\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.0.0_1545398777890_0.15202501231516052"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.1.0": {
			"name": "utility-types",
			"version": "3.1.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ es5-commonjs/ es5-module/ jsnext/ && npm install",
				"prelint": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"ci-check": "npm run lint & npm run tsc & npm run test:update",
				"prepush": "npm run ci-check",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "^21.1.10",
				"dts-jest": "^22.0.4",
				"husky": "^1.3.0",
				"jest": "^21.2.1",
				"prettier": "^1.15.3",
				"rollup": "0.59.1",
				"rollup-plugin-commonjs": "^9.2.0",
				"rollup-plugin-filesize": "1.5.0",
				"rollup-plugin-node-resolve": "^3.4.0",
				"rollup-plugin-sourcemaps": "0.4.2",
				"rollup-plugin-uglify": "3.0.0",
				"ts-jest": "^21.2.4",
				"tslib": "^1.9.3",
				"tslint": "^5.12.0",
				"typescript": "^3.2.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "39ca27239a2165b5eef4254cf2510336faea27c1",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.1.0",
			"_npmVersion": "6.4.1",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-00DFue9hXp6pxOLAiB52v9ZmNxrqhM47kNnMdWVs5fo6Lo6lk93OCr39f/ikswVHNjbcWR7beIbktz3njRw20g==",
				"shasum": "3335d2922fb879a24792a858473a9a873c78aa3a",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.1.0.tgz",
				"fileCount": 15,
				"unpackedSize": 24772,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIUTlCRA9TVsSAnZWagAAPwEP/jFBAw3HcZWCHFcSbxfC\nNo2ydRaQY4X1yFnw2RQmJr6VWnKJgAUrbY7H/gKdvBXPK++7JpREulKljVjF\ngGiwxS21FcK7JsNNzS9ehBSbRTEyxBt2aBFvLJAKZmfStPbHhY5LYFb2qfKE\nbu+HfAZekbETxFJ2VkgPalV4DmEppmB2XSSIOEING3Z6h9vCfVSPY7qhADZ/\nVBOu+i9VM9M7A0A9rAgJBn+m0uE5H+X8ttcvGuzjhT5KTqQzzv934k0nQH5B\nmm7+KmoD1xwjmU7eLj4GkFK4FGEJV2NnVyuSlTgUWnzsYpyZkuLIqVAw07Xz\nUzA4GME4VTs1i3PWKjc7N+L3ZcaH5/Hac/RIt6vc/YJhaFXDZ8JRwHo8k0oY\nMZZHSzYchAeWHWswB5k1v50jJIMaP0qxBYuy8SqzqWn08pr8YUunDDRTofFo\nPvl541rE7fSaC9Iwp+UxmT49onOL3/f0rSDitF6UbBDFDOfrTaZu2HhY0Gy3\nODBg7dT9+CRqa6uaw7Kk00tVimfNSMAvppWs0IWZR4+1vFgO6FfMzt4hdKAr\n+9bYD0kADi8SIfmtfWk2LfCtgsq0IyVe6DGSFKpoLLK/LqM/A6osCgS9eRPX\nlPBmE9suFf9GAP1S1Okaj42vyA61VgJM8pLD7DD2KomntgsS02ESguexaInl\nxDzS\r\n=gVgR\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.1.0_1545684197168_0.5067406138931441"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.2.0": {
			"name": "utility-types",
			"version": "3.2.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease run the following command to fix:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepush": "npm run ci-check",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build",
				"ci-check": "npm run lint & npm run tsc & npm run test:update"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.0",
				"jest": "^21.2.1",
				"prettier": "1.15.3",
				"ts-jest": "^23.10.5",
				"tslint": "5.12.0",
				"typescript": "3.2.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "4e9acb84128884e6aec4948aac7a3adfc7bdd467",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.2.0",
			"_npmVersion": "6.4.1",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-pg3spWUFl9NjKuJRfFXvPSBVBsMFGyDujf95HkRGxYa3JoD6bqabcL48FeWjbFdnumDLEh3Lr18U9P1IXL0yXA==",
				"shasum": "e0ce64cc278768f0e3230a17e9c22228df099cc8",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.2.0.tgz",
				"fileCount": 15,
				"unpackedSize": 24762,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcI2FDCRA9TVsSAnZWagAABf8P/3yn+5wYagKSbX9tgfOl\nxu+aGAkPJCloBbfKXAvWgbP19qiEtBD2465cpJ9yHP6kEUSSLn7sC6LmbbiI\nAQTyTHSFhh6M2Gupv/wiky01EHQ5cjh8Ol6o1M1a7FuLiKROvxvkeuZVGMKn\n25Woew5XcNpUK/Hp3ZkHlrYhKXrkbGDRKrOIF6nRSd1e5x1dDZJkEo/dYFO3\nt1j44Hzxh0uQIL/BSCjLKDfbk1oWyUN86ttdpfL2YqYoo+PSo/4bV1wHHAzP\nrcNTQWegmaMulfiRVLONs6trI5uffqgTXY71J19p5ayMTTvyBCO9uku0YYRb\nZYekuGrG5WOe55fyno6cbI3sf+hUiRsANvH0XbJTKsUV+i93EptYWjlo/uoD\nL/DYyYJUSMGtRRoedtKmS20EHR0IqDHWDwF8xqhWJUiFDUgruqU6bvs9W+z1\nYpWVHciWeVIeKkPdymBnzsA2a9CvftUKXYl/aMYUVkWVI2OmBglCAUsGGe/L\naQ9rxKOD8e0lyZq2xmxFWysso8E9nQLTrGQmaaQr0JuktxRhuCrBS/kfbMaa\nMCA5Wav6Nz7rqcGF/VvqQlLfDY5+6d2jAzK0fXiToXuh/ZUA8xb91xalFAN5\nuoIKyHvJcJtK7B/LzoxPZKLxGm1bJ+ML6cfAc9mEhBde6eI0hki9TWKHvfxU\nbTzM\r\n=ISwb\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.2.0_1545822530850_0.5399397143951967"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.2.1": {
			"name": "utility-types",
			"version": "3.2.1",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run ci-check"
				}
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease run the following command to fix:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build",
				"ci-check": "npm run lint && npm run tsc & npm run test"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.0",
				"jest": "21.2.1",
				"prettier": "1.15.3",
				"ts-jest": "23.10.5",
				"tslint": "5.12.0",
				"typescript": "3.2.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "04fe1d678e24b81ccf74d1c60e9e23b5a01d76f0",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.2.1",
			"_npmVersion": "6.5.0",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-8XgLAZMb35evcBSF0tsfX3bRqBww+4IORKVi8Z/DK214guYbu7jPyE8zaNLNhfygcoKTtH9cp9IlMStCoOZeLA==",
				"shasum": "2b0e3086cf347f9d8f8a6dee11a14ee61f70a193",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.2.1.tgz",
				"fileCount": 15,
				"unpackedSize": 25334,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM80PCRA9TVsSAnZWagAAabEQAKCMyxQihxRElwdzC5TJ\nLPorydKdjrz33MmxcwJrgnam8mdASMDuFVAUCuHQfFhe3Ljtn6GRhFIPF2E8\nd8J96TQJNhCXu7mZRqohxh0u9tO9Lhb21VLACnRKss7K19ExLpGSjtMQTVjK\nrGt8H3aD5oyVfSzWvu5eE86aFP9IpFGgLTplKU12Zja1uZSrPnHR+QWX8E/X\nttgSplEc5jHfCeKrcn37TKLkaLlUsfWhQ3aMWtXs1h2wXfFWr9fvn2uLmZ5X\n7M51y6SrYchwc97wBvhHZ8SyB4lAbGRCWNLRYasYPP+RzK5VTD1DLPoGuWr4\nX2aNYrKRhmfgnBYgRFgWjmnjg73goWqfjHSJ6XpEgXF1Y+FkPHvxnd9Oma2x\nrenF//qXpKCzEhD/BWOC9b83PNCTzDXNrXoyaUTBuqeR7fQLBrTK9c5Wq0xd\n25XopIp3nBndYXt3G6BRq19s2KwyFN0cnRbtuWlNlMSZ0HzQKpwGjcBwdnHx\nR+ScxQhpKAfGmDaMa0uKsDkag5FUgt8yJGEgW1V/8658hs0iZj07W0Xw/Zl+\nQYGL5GFmf5Bl1GU+4n8+At7ftvD3HOfrQ7Vs8j2EBE92Xig7lbxeCJ7zsGqp\nFP+wtsF34D5rUB45319JkaWZvBdKEgegP2cQs52z4WUNtHP2vK8Ne8copLRj\nPXJn\r\n=NZN7\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.2.1_1546898702452_0.23892082028088968"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.4.1": {
			"name": "utility-types",
			"version": "3.4.1",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run ci-check"
				}
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease run the following command to fix:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build",
				"ci-check": "npm run lint && npm run tsc & npm run test"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.1",
				"jest": "21.2.1",
				"prettier": "1.15.3",
				"ts-jest": "23.10.5",
				"tslint": "5.12.1",
				"typescript": "3.2.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "ee18afd6897c4f2ee41802d5328d1b4067e9a07e",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.4.1",
			"_npmVersion": "6.5.0",
			"_nodeVersion": "10.7.0",
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"dist": {
				"integrity": "sha512-GyH068kJf7c4vhfqj4aCM5X+TeV8jG2iPFLimpGpnQ7dvKfogZOHfiYxMww/nGEfMm/bEmnVbeZGO1see1OVKg==",
				"shasum": "3caa1d207eac873f989bf8c92cf3e8c539045c61",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.4.1.tgz",
				"fileCount": 15,
				"unpackedSize": 28111,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQwPcCRA9TVsSAnZWagAAwwUP/2b7enhn3Vas+5tAv0pm\nHgVc7G2DXDyF/75cyL8HAODtH3pq/B/xtyJG7wlYmlgzLn5VtjNn4uRuaVoH\nPAUJbV0unSSOKZ8aFaF7rnxWqIVpjYEbjHP0GhGzhmE6N0te+wuYgfVmHNCh\nRIhpstNlu1GAIYckrV2NGD/yHQvJDd5Rfg0Hf2zl7Mx7DVzI4P+2unJG0vEl\njRZzk4keuYhrfqCOJdTvozEqtkwE8LOVamtm0zAKrdX1SqpWpUBs0T0xV6Ie\nXzKYBWk1XL5qiMpqyLxw6xy3pNtVTvRszXEhg7xeLk9+3fWLXLT4ZmyeB0Z2\nWRiRjAFDtVmhC1lx8+tzJ7UgFnLNFlDSahhiCHvji0DD+3E2jOp+IrmFeWd5\nZHQnqciWsshhHNg0ANKsmMgsNdp5OhMD4O73blbaQGKsNU+ADhvdP+cS10OC\nWsZUTBEko/U5GtgrCga5ZaerVzfhe6YYxrSQZkty/XMhy36s9m36vqHyT9o/\n3QjD78NkIMi3qv69wXAMZkV8DnpJiGOTLmyuu80k+p6Oa9YoksFZ7hxb7nFr\njtS4bSFh+oKv9ZXj+mYQyp15sLjJXLvqTtj+j9QDEAhjujmZvUlMR9yIBzUA\nMqe/ihzQ6s1cAMGmhzXa3nF4D83C0WfCPmKKxx1eHqML+mmUvop3PtoYIATs\n6mzQ\r\n=/Ftk\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.4.1_1547895772141_0.4489132525641599"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.5.0": {
			"name": "utility-types",
			"version": "3.5.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run ci-check"
				}
			},
			"scripts": {
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease run the following command to fix:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json --no-cache",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build",
				"ci-check": "npm run lint && npm run tsc && npm run test:update"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.1",
				"jest": "21.2.1",
				"prettier": "1.16.4",
				"ts-jest": "23.10.5",
				"tslint": "5.15.0",
				"typescript": "3.4.1"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "fac2429be924f7a443b458f154fc12bcd4f88044",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.5.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.8.0",
			"dist": {
				"integrity": "sha512-1XdYkHN+Dcgh1PQEER1CF5BXkGLvf7Owor6tYSyEs+lbHi4obz4ZeJZQVZyinKvFaGwriBKRlEk5hiApfhglQg==",
				"shasum": "d80c95b774575d1683f5ba807879c52d8f35db1c",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.5.0.tgz",
				"fileCount": 15,
				"unpackedSize": 30350,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoz+UCRA9TVsSAnZWagAAqTgQAJYUITfgVek+seKcOuNl\nB+FlAB+qkciTVtdxcdL/b2XqKIHyX8V87RLWp1t2dENBXN6V6r1ihRaSujdk\nIGhp4RlOuZHO0xy3cLi/R3/QbPFAvZOxvslUob7kBSFb3dtAOFIQdAv8mc8h\nORfEMgx2X6j/42Z1CQDfnIeukopHlFMEl0HXexK/sjlT33ABNkiCwf0V9Ref\nQ7/xN+5JpoRCqyJSMiw1u7gFOCqdChNinbY7e1/D62DI4K9oIN3EH/wuJfrt\nXmQmj/L1ePNdn0DdttivsHtyyd5j9rDX08FotBGCqpdvDELVj5ASgoM2yNMm\nu0EPthEfbM7r9klIPxteeIjOIYCxQtmWxc6KyQ7C2vWyYZNr21UGfGMalwhT\ngkuIiqktpdlzQep3eoWEaU1wNZ6b1NLBCsPuPhsCcoO8w58+IZ6ptna0aPaR\nywD4iU2i0LHNc/rQvSSUqE+bwns4mu1ivwtBv+T0rnjZVzBCyeXHxL7vAvEo\nHLBjzvdyL8hmkhD+Ik9IgwsoL/Z9cdlkXQ4oeeX/dxBeIjz/I5xQJV1Eqffr\nSfvhanr8cogJIf9b1rr/aktNu4TObloZs/5zwac30IbpvTdR31c1Eh4XOBNb\nuVEUunWD5Ziiq5fSJPDTdLnlkvJRKJQXTwo25bAB0qqFNz8e3dqhgQwJLCnb\nbBAn\r\n=LDsM\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.5.0_1554202515631_0.7131407158126004"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.6.0": {
			"name": "utility-types",
			"version": "3.6.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run pre-push"
				}
			},
			"scripts": {
				"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update",
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.1",
				"jest": "21.2.1",
				"prettier": "1.17.0",
				"ts-jest": "23.10.5",
				"tslint": "5.16.0",
				"typescript": "3.4.5"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "18a694e064adebf0b886b117042ba1ca945f2dc6",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.6.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.9.0",
			"dist": {
				"integrity": "sha512-pAevxvCjA1RndJMe6gKZJzRVguivqhQTWoIPd4sJHcEf2FRcvKLi/2tZCtd/PYENnMSPBAQzelK7xIeWCAhR7w==",
				"shasum": "9ee14be5f4ffc58e9010cf331e1f6999f57dcc52",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.6.0.tgz",
				"fileCount": 15,
				"unpackedSize": 49095,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxdZDCRA9TVsSAnZWagAASYkP/RiknnZZrptSO6Qb2rN9\nk3kaa+JJs4wJhd0S6zBfn+tq72tZk8z8QwcHIzGoBsBslUD1pUPnd6/dwQuC\nMJp0v7aIK0mmy2CTaoCyTk75UHcdlUaDRe/okNtC5R1f9cVPidkutzVN+odY\nMl4pmt1BmD0QLAZPWUPYLW9JFkmLFSLY8oeYU65m5aLBzQchlBINQdq7a2Qw\naVKpZc2D2f2qFsOhIlsvFZyOFYLyxS2fDkcV3soA+mxLEfkUUhowo0WTffW3\ngbp7pne2ct+u707zsohj0XkrzRPWhwfQ1hQlHs5/GcxYEkB25KhWi08QVzMY\n6qoN/Pv+mA92f0RYnz0wuYdnjDQ4T3re0pbDdlD186TUEibEEV8deVD+Zbwe\n7ZaSraypGZlse9UTcURzl6Q8YUlbcaY+bJGnfwKLFEceR9IIMUPforpJZxm4\nvtTRBYjaHZ6OO/NhKIJDwW9xVDKpVXzDS42l8WEBma7RkDiG3Hcx4AheLx+b\ndCT8JZhrZzhPiyU45O1QTPUfF9Io0KfMwKvT94CPbnz0/qsYO2w1bZOSBi2u\nmsDpJ+DH9ylrZk5UpnFIcTC4Z6wFglXATkGq9ElbpsYG5jL7O8Y7/ZmDF9vT\nZgxMXhdxFgDYZX9ICOVxHldIcuuZsCdHn2IuRVFFlEibter46fmmp2ECPyzs\n/ku/\r\n=fNKU\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.6.0_1556469315022_0.5966977920163179"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.6.1": {
			"name": "utility-types",
			"version": "3.6.1",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run pre-push"
				}
			},
			"scripts": {
				"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update",
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "1.3.1",
				"jest": "21.2.1",
				"prettier": "1.17.0",
				"ts-jest": "23.10.5",
				"tslint": "5.16.0",
				"typescript": "3.4.5"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "caf9b6c437008fb64a9739453d2df2b3b1ef7052",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.6.1",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.9.0",
			"dist": {
				"integrity": "sha512-3MiRraWYaLnIjEbWHQEhuMlPIyjSVPZBlfvulm8xGMSs5nQrP0RiCCGJGvNCi2on8w8B7skRTNJUAGK+8PlbrQ==",
				"shasum": "14d0621888c906592d7544414b3762b33a657568",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.6.1.tgz",
				"fileCount": 15,
				"unpackedSize": 49088,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxe58CRA9TVsSAnZWagAAQK8QAKArKuSkJflt6r80ixXv\nVQU68N9jpkg0lhWza07uYYI5MzE6sDEYSz73Z6d4N/YttTn8F5GeUenf23Cl\nJEhZCTcuVzR8pDJme0/ZhGb4BPbo0i7kJasZdc3WphXT2gmbywrLGjSaaFBa\ng6UF+mOmnfTJC401d6FEaU27StsJ5OeUx5VYr/2M5XTGwGNtDrBk6hC0VyHh\nwlqNN97DLOSly54WkWG7vajSMX5Elq60nyfiPWQD3djgWlo+Kq8G0CcaXXNq\nSn6O1rkXLa7TAgTY/DGKc2sPKVJ3KpLzfPhobTjOIyBeA/z/Ao8Hy4VqMVhh\ncRT186F/KmFSYLA3+tRqTqp/ed/Wr3bjokV39BvdG5NTf54n8uaxS/79S5of\n5HC3HpyEn5bl8Dt88c778FpK8wZNokFsp6Fz9FvxW/2vnWFFYShcQmUwNIKn\ngKK/jKCYqDM52eBXb1fK0qaZhcLBUBQ5XZBRso6t4X7ECkYliuEUbCp1MiH5\nX9f7eph7trbGeT6KDc0JY9WoHlyL6mDDFOhSOpkdvEDSIx+Xm0Yu7shAA+Xh\nATQVRorRkiHFhf57Ov+nWGT3mDaNP8TFZhTr5OIoqGGGwSqKeI7N4jCHDldx\nU3Pp89cvWDbn8uR51iPoGH6lHAqEGUqs79UGAisMFRY4MBSE7YXORzx+xQOx\n046R\r\n=R5PW\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.6.1_1556475515664_0.5732308460156272"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.7.0": {
			"name": "utility-types",
			"version": "3.7.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run pre-push"
				}
			},
			"scripts": {
				"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update",
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write 'src/**/*.ts'",
				"lint": "tslint --project './tsconfig.json'",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json",
				"test:watch": "jest --config jest.config.json --watch",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "2.2.0",
				"jest": "21.2.1",
				"prettier": "1.17.0",
				"ts-jest": "23.10.5",
				"tslint": "5.16.0",
				"typescript": "3.4.5"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "6b28bfab0adedfa0436ddf3e55e92f8ad6cf83f8",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.7.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.9.0",
			"dist": {
				"integrity": "sha512-mqRJXN7dEArK/NZNJUubjr9kbFFVZcmF/JHDc9jt5O/aYXUVmopHYujDMhLmLil1Bxo2+khe6KAIVvDH9Yc4VA==",
				"shasum": "51f1c29fa35d4267488345706efcf3f68f2b1933",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.7.0.tgz",
				"fileCount": 15,
				"unpackedSize": 50616,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0ZT6CRA9TVsSAnZWagAALtoP+wfEFeibWwI+UdWwtyyB\nXAQ/WFsGYKoW26fFMB26uNwXYrb1yaYkkyrJ6READ9N+iZMrgLXigNk97gKm\n3eY9eB+87AieRNZHua51LocmAzxMGdvBm1NXGgjv6tCKHISgFzxeUyEkkLLj\nwYC1BBWSh2KI4cTJ7b98ym4BSi958yK8gH7JWO6P1g0UhWa12HpgTHBY6rqZ\nZ7EaK7HAeOOJWgXFuWLJLz9UcKm/MsyU5lGw27qSk0pnBnmLbjd0tjIoR/jF\nq1X7hDBe/rOupbVktrz5/xPFxNqF7kFPYIjsUGavCzh84MZdmJWjBBsdiXp6\nTfnmqrAnCve3ES/6zPcWCphac3ky92bfanznGDWtqdTBGuJRsfPmsS6OuuIl\nMmd0eIqmv4PoHFi3a0uWsPTjVfk9wXYMLkBW8wpQvlZoLbce/hp0i+Twa7oF\nxzhb2+eFlwsrTMvNbyeuaEfqGmbcfhRcHD3enSqNp5Pi71lBGXNjekbh1Wn4\nXlc7Ct0LDZ8tjjqSAs7gcLe4G+mETpWjBiYupFoJNTH18dAjnoydWpoKpGWy\norpAqU9kN9NbPYZYwXxAm1x523YAJar+KcdQCfTV0ILo5Eha8DsYVzRFO6np\n8tKvWyTcYavHemDRkrHqLAsvd7/AL01jMSLVUjbkkc5KjV2ZFDbqPXZmC2op\nOeAH\r\n=kx+C\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.7.0_1557239033518_0.5635982068669467"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.8.0": {
			"name": "utility-types",
			"version": "3.8.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update"
				}
			},
			"scripts": {
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write src/**/*.ts",
				"lint": "tslint --project ./tsconfig.json",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}} --check",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}}",
				"test:watch": "jest --config jest.config.json --watch",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "2.2.0",
				"jest": "21.2.1",
				"prettier": "1.17.0",
				"ts-jest": "23.10.5",
				"tslint": "5.16.0",
				"typescript": "3.4.5"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "8ee05ed56f14d55e91dc661472ffc78180d95008",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.8.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.8.0",
			"dist": {
				"integrity": "sha512-UoKivAmVw5TL6AHuILieOJjIK9ajS0l5gyN5LbJglPuVwzfYBniDhe+3A5+ZBtS0TAHQs5qUxTwj9jXurINrcw==",
				"shasum": "eaae1c2520c206b5623a4f07af38e3aa31dc2f06",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.8.0.tgz",
				"fileCount": 18,
				"unpackedSize": 58833,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdizV4CRA9TVsSAnZWagAAmcsP+wTXhhzvMNTfECHwd59b\n8QvqeBt2IasqUFKJEvu8USaE7tx+TbKagvB5O+eoFdwqG4Ik3/C9OYzZ+4/W\nKc6ohn4PTXEsBELi8WSmQUnEYdZjcfU6rk/06NvHHy5JQd2CfuCz6y5nremp\no6pCWtOizN+ZoirnPwIkAgpR9gaqoGlXp+0HYPX8Ywb7bRVThCZjsepi1+iZ\nxEZVkrtBwUe+l9wkgdXuHWNmnbm/Ak+RrMeWVZPkShuoQ3nZBIQifPDDleoK\nDq1aQygZyoIkgLuyTvyTD6HQzaEQoMPwx+GPKaesbUvpeF4iRA/Kkzc5Cu3T\nDevOa1L15ZH4xzFB61t7+aRNJqWUeCdyEqteV4ttEz1YJm/1hLZti885gO/d\n2K0ZFjzAYdTqZa6QExY96kBMIjQ3+qwHJTfy/sjQ4QTVvRJqkYmxF2UAQTIz\nD/bJGbqjTQty7qToiWHacXOw1G+jXoCFO8qp0JmgcjqzcBM4+/EPg+ncamDp\nFLmKQVpxaJrAu1XrRuCjRQhEy6PMZkQitycAJON9BNbUY+HI518HXMUnrREr\nQXWa5YSMDeaVOEwKGOgoGndGeU0Ms7uxVX4JwzMRp2T/31E+jPr+OAPLzaTy\nph0/EoSTkJQfHAqJijqAuFrYDuOj2wXgtOTKJdOpOeD698JjUEf/NbThlPTq\nuwiY\r\n=z51U\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.8.0_1569404279814_0.9521959955663388"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.9.0": {
			"name": "utility-types",
			"version": "3.9.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update"
				}
			},
			"scripts": {
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write src/**/*.ts",
				"lint": "tslint --project ./tsconfig.json",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}} --check",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}}",
				"test:watch": "jest --config jest.config.json --watch",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "21.1.10",
				"dts-jest": "22.0.4",
				"husky": "2.2.0",
				"jest": "21.2.1",
				"prettier": "1.17.0",
				"ts-jest": "23.10.5",
				"tslint": "5.16.0",
				"typescript": "3.4.5"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "dce882c77340889b00dea25c4943b9f3cb0cbf45",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.9.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.12.0",
			"dist": {
				"integrity": "sha512-bUUsGr7NuI1p/6GpDCI/PUCJ1y5KWO4xul8RWOcmUwXSjLoi6WoV9YLNqBF7lH4RRy/jgmhYCE49eM0bnaijMQ==",
				"shasum": "c322d974e7062ec967077384c3b75077a955d83b",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.9.0.tgz",
				"fileCount": 18,
				"unpackedSize": 60917,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdt2EECRA9TVsSAnZWagAA1gYP/2p6zuFwEpmMsJd4lXzT\n93PLlHIKW+M4uYJuUfzIi/ADI0szx54RqsMFyZMWtJzvnVzZUjmP601n8wkl\ngacKHOKptZQ6bIOUCHRpzEXyShbEeAd25fGhajXI0QWvQFgEEYYfQ28LqsW0\nxhOoshFLHIhAPZWSjXdY8B1UQKKIeRe6vMkVDOS/tD8uyJXTVOTRrSiSAReJ\n3SWLz29FzDA8ubYp92kiQH73dNR4DUOxkItSsKliYnddvaw3TYO37WrsTwLY\nU8qdQQ1M9OlETVUKMZ1gdxukgYizhP6WAOfHzdZJmbPhU3rdRQ3qsLeUT6Z6\nMV5T8tC8gh/mRU+wHD3bZa3ET+poAMxXi24Gkga1CU18YCCVqLaXQy8NsS/n\nxS5SjTWT5fVeilrbrIuAmeQysgjvyuHsVBxUKqkmksl9gwvRzgVSWw0i3Q2q\nMqBklOgJqSGyEzF/dR4TEIBJkNw3nnVe8p54Q489piKLoB+ktHiz1zEcgJUs\nlYhXpQPRvyal/78YZqDrpj41DLJsEmzEGxZLlKHWKIJg8bmIViQyePNSC0yy\nIYDl51+EehTRLDhSsqNIicjGrGB+vrGTHPORATTbfiebC+Hym5MZUuJONSq7\n23fzg8tkFrb7s7tjeCkj5H6qmVjS2Aplnc4kAi+TR062cpcUaIyIKiuZdyIq\n9QvQ\r\n=7fAM\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.9.0_1572299011751_0.3661190183343028"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		},
		"3.10.0": {
			"name": "utility-types",
			"version": "3.10.0",
			"description": "Utility Types Collection for TypeScript",
			"author": {
				"name": "Piotr Witek",
				"email": "piotrek.witek@gmail.com",
				"url": "http://piotrwitek.github.io"
			},
			"repository": {
				"type": "git",
				"url": "git+https://github.com/piotrwitek/utility-types.git"
			},
			"homepage": "https://github.com/piotrwitek/utility-types",
			"license": "MIT",
			"types": "dist/index.d.ts",
			"main": "dist/index.js",
			"engines": {
				"node": ">= 4"
			},
			"husky": {
				"hooks": {
					"pre-push": "npm run prettier:fix && npm run lint && npm run tsc && npm run test:update"
				}
			},
			"scripts": {
				"ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test",
				"reinstall": "rm -rf node_modules/ dist/ && npm install",
				"prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)",
				"prettier:fix": "prettier --write src/**/*.ts",
				"lint": "tslint --project ./tsconfig.json",
				"tsc": "tsc -p . --noEmit",
				"tsc:watch": "tsc -p . --noEmit -w",
				"test": "jest --config jest.config.json && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}} --check",
				"test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename {{basename}}.snap.{{extname}}",
				"test:watch": "jest --config jest.config.json --watch",
				"prebuild": "rm -rf dist/",
				"build": "tsc -p ./tsconfig.build.json --outDir dist/",
				"prepublishOnly": "npm run reinstall && npm run ci-check && npm run build"
			},
			"dependencies": {},
			"devDependencies": {
				"@types/jest": "24.0.22",
				"dts-jest": "23.0.0",
				"husky": "3.0.9",
				"jest": "24.9.0",
				"prettier": "1.19.0",
				"ts-jest": "24.1.0",
				"tslint": "5.20.1",
				"typescript": "3.7.2"
			},
			"keywords": [
				"typescript",
				"utility",
				"types",
				"static-typing",
				"mapped-types",
				"flow",
				"flow-typed"
			],
			"gitHead": "185ad890ef8fad0bf6949422854c1c0ce99e9ddf",
			"bugs": {
				"url": "https://github.com/piotrwitek/utility-types/issues"
			},
			"_id": "utility-types@3.10.0",
			"_nodeVersion": "10.7.0",
			"_npmVersion": "6.12.0",
			"dist": {
				"integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==",
				"shasum": "ea4148f9a741015f05ed74fd615e1d20e6bed82b",
				"tarball": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz",
				"fileCount": 21,
				"unpackedSize": 62231,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxqbHCRA9TVsSAnZWagAAPRAP/1KGBIZ/WW5M0D9RgZ//\nuGcQBXq/ldhgCiEIPD9+GAgTMMLaa4DgkD6TKdfjg8Gf2hXeQJDzOF3Nepko\nSdLa+q4OBoH+WuiKJdE32cAYCaHuLJdCDroD3fzVJbc9Vs8nUn4Cifzm8t4J\nHsqtnPQdbWweZZpWOMUb1u6ayldv/OuxuCeuj+IohCJBSSVGrTjMefjBgqHF\n6AIvQSi7EAMLBPKlPBodvH88FGfx574dgLaNi7UjFKuhdYfaQB6UsWpsiuDL\ntjzXWNEHe7C6qjYDYpXNRchEfFnuvlx72L3oF8fDknlej+CpWELehycl7GDc\nx7x6VkA86cmmQIrZrbLNqSB9gx6QmtCgUAxJrjwZNdeacdYzcw4XTG3pjZYj\nMhTFOU6PII+uyS2AIckO4NCbZH63MylZ0IcnxJ12IcHgpNKeVCjthGV9H+6U\nfKR+gUUKhKPE6GcIoyO8yoVEfIApPiPpJ989qgvy5KyFiuf5Zq2YiH7Ef65f\nSNlacWmVht+aJAxYeZw2HAjklWCVY+RE587eEykMivu+oQl1szaDkDywy+Hw\nN2AjJ+hChzmGvcaLKHtYtlxqMCnqnFwdRtVIQVH+ua78l3L4qmCXOHyUzws+\nfhZkYCXZoGHsO6mGdOA1f9ys+Z9+A2MtLhrYO7na0nuYSSRKqMCm5Q44BHj/\nM61g\r\n=o9vr\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"name": "piotrwitek",
					"email": "piotrek.witek@gmail.com"
				}
			],
			"_npmUser": {
				"name": "piotrwitek",
				"email": "piotrek.witek@gmail.com"
			},
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/utility-types_3.10.0_1573299911227_0.8557066575015497"
			},
			"_hasShrinkwrap": false,
			"contributors": []
		}
	},
	"time": {
		"modified": "2019-11-09T11:45:14.168Z",
		"created": "2017-12-30T22:00:01.317Z",
		"0.0.1": "2017-12-30T22:00:01.317Z",
		"1.0.0-rc.1": "2017-12-30T23:10:35.777Z",
		"1.0.0-rc.2": "2017-12-30T23:15:13.391Z",
		"1.0.0": "2018-01-21T23:39:03.951Z",
		"1.1.0": "2018-03-06T23:14:27.613Z",
		"2.0.0": "2018-04-02T23:17:31.835Z",
		"2.1.0": "2018-09-13T17:01:38.772Z",
		"3.0.0": "2018-12-21T13:26:18.004Z",
		"3.1.0": "2018-12-24T20:43:17.335Z",
		"3.2.0": "2018-12-26T11:08:51.012Z",
		"3.2.1": "2019-01-07T22:05:02.592Z",
		"3.3.0": "2019-01-14T17:46:54.094Z",
		"3.4.0": "2019-01-19T10:54:40.527Z",
		"3.4.1": "2019-01-19T11:02:52.252Z",
		"3.5.0": "2019-04-02T10:55:15.761Z",
		"3.6.0": "2019-04-28T16:35:15.197Z",
		"3.6.1": "2019-04-28T18:18:36.173Z",
		"3.7.0": "2019-05-07T14:23:53.655Z",
		"3.8.0": "2019-09-25T09:37:59.923Z",
		"3.9.0": "2019-10-28T21:43:31.875Z",
		"3.10.0": "2019-11-09T11:45:11.389Z"
	},
	"users": {},
	"dist-tags": {
		"latest": "3.10.0"
	},
	"_uplinks": {
		"npmjs": {
			"etag": "W/\"d62cfaa0827c015d58c5c913a4402abb\"",
			"fetched": 1600679298914
		}
	},
	"_distfiles": {
		"utility-types-0.0.1.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-0.0.1.tgz",
			"sha": "1c8a6f06a8fda62ae0aaa73f983d458d26068e50",
			"registry": "npmjs"
		},
		"utility-types-1.0.0-rc.1.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0-rc.1.tgz",
			"sha": "19262c4988950996d3ea043afdd269b677480c67",
			"registry": "npmjs"
		},
		"utility-types-1.0.0-rc.2.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0-rc.2.tgz",
			"sha": "1284e73983b7c91660b4686eab1a71dd7af7dd7e",
			"registry": "npmjs"
		},
		"utility-types-1.0.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-1.0.0.tgz",
			"sha": "95e0774ed78ffa055fc228591963de3902e36609",
			"registry": "npmjs"
		},
		"utility-types-1.1.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-1.1.0.tgz",
			"sha": "52408b6ed852fdd4076b48b30ed726f139b0f116",
			"registry": "npmjs"
		},
		"utility-types-2.0.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-2.0.0.tgz",
			"sha": "3c9fe26914a1c7b8aff690e8f941e76b091d3149",
			"registry": "npmjs"
		},
		"utility-types-2.1.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-2.1.0.tgz",
			"sha": "0c78fc9f7eb424d14302222b4ddd13fdb17f44ab",
			"registry": "npmjs"
		},
		"utility-types-3.0.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.0.0.tgz",
			"sha": "4d0dd8cd460da3dddecbe42568053bd1f6c1a740",
			"registry": "npmjs"
		},
		"utility-types-3.1.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.1.0.tgz",
			"sha": "3335d2922fb879a24792a858473a9a873c78aa3a",
			"registry": "npmjs"
		},
		"utility-types-3.2.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.2.0.tgz",
			"sha": "e0ce64cc278768f0e3230a17e9c22228df099cc8",
			"registry": "npmjs"
		},
		"utility-types-3.2.1.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.2.1.tgz",
			"sha": "2b0e3086cf347f9d8f8a6dee11a14ee61f70a193",
			"registry": "npmjs"
		},
		"utility-types-3.4.1.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.4.1.tgz",
			"sha": "3caa1d207eac873f989bf8c92cf3e8c539045c61",
			"registry": "npmjs"
		},
		"utility-types-3.5.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.5.0.tgz",
			"sha": "d80c95b774575d1683f5ba807879c52d8f35db1c",
			"registry": "npmjs"
		},
		"utility-types-3.6.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.6.0.tgz",
			"sha": "9ee14be5f4ffc58e9010cf331e1f6999f57dcc52",
			"registry": "npmjs"
		},
		"utility-types-3.6.1.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.6.1.tgz",
			"sha": "14d0621888c906592d7544414b3762b33a657568",
			"registry": "npmjs"
		},
		"utility-types-3.7.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.7.0.tgz",
			"sha": "51f1c29fa35d4267488345706efcf3f68f2b1933",
			"registry": "npmjs"
		},
		"utility-types-3.8.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.8.0.tgz",
			"sha": "eaae1c2520c206b5623a4f07af38e3aa31dc2f06",
			"registry": "npmjs"
		},
		"utility-types-3.9.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.9.0.tgz",
			"sha": "c322d974e7062ec967077384c3b75077a955d83b",
			"registry": "npmjs"
		},
		"utility-types-3.10.0.tgz": {
			"url": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz",
			"sha": "ea4148f9a741015f05ed74fd615e1d20e6bed82b",
			"registry": "npmjs"
		}
	},
	"_attachments": {
		"utility-types-3.10.0.tgz": {
			"shasum": "ea4148f9a741015f05ed74fd615e1d20e6bed82b"
		}
	},
	"_rev": "2-4ee9545d3843b849",
	"_id": "utility-types",
	"readme": "<div align=\"center\">\n\n# utility-types\n\nCollection of utility types, complementing TypeScript built-in mapped types and aliases (think \"lodash\" for static types).\n\n[![Latest Stable Version](https://img.shields.io/npm/v/utility-types.svg)](https://www.npmjs.com/package/utility-types)\n[![NPM Downloads](https://img.shields.io/npm/dm/utility-types.svg)](https://www.npmjs.com/package/utility-types)\n[![NPM Downloads](https://img.shields.io/npm/dt/utility-types.svg)](https://www.npmjs.com/package/utility-types)\n[![Bundlephobia Size](https://img.shields.io/bundlephobia/minzip/utility-types.svg)](https://www.npmjs.com/package/utility-types)\n\n[![Build Status](https://semaphoreci.com/api/v1/piotrekwitek/utility-types/branches/master/shields_badge.svg)](https://semaphoreci.com/piotrekwitek/utility-types)\n[![Dependency Status](https://img.shields.io/david/piotrwitek/utility-types.svg)](https://david-dm.org/piotrwitek/utility-types)\n[![License](https://img.shields.io/npm/l/utility-types.svg?style=flat)](https://david-dm.org/piotrwitek/utility-types?type=peer)\n[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/utility-types)\n\n_Found it useful? Want more updates?_\n\n[**Show your support by giving a :star:**](https://github.com/piotrwitek/utility-types/stargazers)\n\n<a href=\"https://www.buymeacoffee.com/piotrekwitek\">\n  <img src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me a Coffee\">\n</a>\n<a href=\"https://www.patreon.com/piotrekwitek\">\n  <img src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" alt=\"Become a Patron\" width=\"160\">\n</a>\n\n<br/><hr/>\n\n### **What's new?**\n\n:tada: _Now updated to support **TypeScript v3.7**_ :tada:\n\n<hr/><br/>\n\n</div>\n\n## Features\n\n* Providing a set of [Common Types](#table-of-contents) for TypeScript projects that are idiomatic and complementary to existing [TypeScript Mapped Types](https://www.typescriptlang.org/docs/handbook/advanced-types.html) so you don't need to copy them between the projects.\n* Providing a set of [Additional Types](#) compatible with [Flow's Utility Types](https://flow.org/en/docs/types/utilities/) to allow much easier migration to `TypeScript`.\n\n## Goals\n\n* Quality - thoroughly tested for type correctness with type-testing library `dts-jest`\n* Secure and minimal - no third-party dependencies\n* No runtime cost - it's type-level only\n\n## Installation\n\n```bash\n# NPM\nnpm install utility-types\n\n# YARN\nyarn add utility-types\n```\n\n## Compatibility Notes\n\n**TypeScript support**\n* `v3.x.x` - TypeScript v3.1+\n* `v2.x.x` - TypeScript v2.8.1+\n* `v1.x.x` - TypeScript v2.7.2+\n\n## Funding Issues\n**Utility-Types** is an open-source project created by people investing their time for the benefit of our community.\n\nIssues like bug fixes or feature requests can be very quickly resolved when funded through the IssueHunt platform.\n\nI highly recommend adding a bounty to the issue that you're waiting for to attract some contributors willing to work on it.\n\n[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/76400842)\n\n## Contributing\n\nWe are open for contributions. If you're planning to contribute please make sure to read the contributing guide as it can save you from wasting your time: [CONTRIBUTING.md](/CONTRIBUTING.md)\n\n---\n\n* _(built-in)_ - types built-in TypeScript, no need to import\n\n# Table of Contents\n\n## Aliases & Type Guards\n\n* [`Primitive`](#primitive)\n* [`isPrimitive`](#isprimitive)\n* [`Falsy`](#falsy)\n* [`isFalsy`](#isfalsy)\n\n## Union operators\n\n* [`SetIntersection<A, B>`](#setintersectiona-b-same-as-extract)\n* [`SetDifference<A, B>`](#setdifferencea-b-same-as-exclude)\n* [`SetComplement<A, A1>`](#setcomplementa-a1)\n* [`SymmetricDifference<A, B>`](#symmetricdifferencea-b)\n* [`Exclude<A, B>`](#excludea-b) _(built-in)_\n* [`Extract<A, B>`](#extracta-b) _(built-in)_\n* [`NonNullable<T>`](#nonnullablea) _(built-in)_\n* [`NonUndefined<T>`](#nonundefineda)\n\n## Object operators\n\n* [`FunctionKeys<T>`](#functionkeyst)\n* [`NonFunctionKeys<T>`](#nonfunctionkeyst)\n* [`MutableKeys<T>`](#mutablekeyst)\n* [`ReadonlyKeys<T>`](#readonlykeyst)\n* [`RequiredKeys<T>`](#requiredkeyst)\n* [`OptionalKeys<T>`](#optionalkeyst)\n* [`Optional<T, K>`](#optionalt-k)\n* [`Partial<T>`](#partialt) _(built-in)_\n* [`DeepPartial<T>`](#deeppartialt)\n* [`Required<T, K>`](#requiredt-k)\n* [`DeepRequired<T>`](#deeprequiredt)\n* [`Readonly<T>`](#readonlyt) _(built-in)_\n* [`DeepReadonly<T>`](#deepreadonlyt)\n* [`Mutable<T>`](#mutablet)\n* [`Pick<T, K>` _(built-in)_](#pickt-k-built-in)\n* [`Omit<T, K>`](#omitt-k) _(built-in)_\n* [`PickByValue<T, ValueType>`](#pickbyvaluet-valuetype)\n* [`PickByValueExact<T, ValueType>`](#pickbyvalueexactt-valuetype)\n* [`OmitByValue<T, ValueType>`](#omitbyvaluet-valuetype)\n* [`OmitByValueExact<T, ValueType>`](#omitbyvalueexactt-valuetype)\n* [`Intersection<T, U>`](#intersectiont-u)\n* [`Diff<T, U>`](#difft-u)\n* [`Subtract<T, T1>`](#subtractt-t1)\n* [`Overwrite<T, U>`](#overwritet-u)\n* [`Assign<T, U>`](#assignt-u)\n* [`ValuesType<T>`](#valuestypet)\n\n## Special operators\n\n* [`ReturnType<T>`](#returntypet) _(built-in)_\n* [`InstanceType<T>`](#instancetypet) _(built-in)_\n* [`PromiseType<T>`](#promisetypet)\n* [`Unionize<T>`](#unionizet)\n* [`Brand<T, U>`](#brandt-u)\n* [`UnionToIntersection<U>`](#uniontointersectionu)\n\n## Flow's Utility Types\n\n* [`$Keys<T>`](#keyst)\n* [`$Values<T>`](#valuest)\n* [`$ReadOnly<T>`](#readonly2)\n* [`$Diff<T, U>`](#diff2)\n* [`$PropertyType<T, K>`](#propertytypet-k)\n* [`$ElementType<T, K>`](#elementtypet-k)\n* [`$Call<T>`](#callt)\n* [`$Shape<T>`](#shapet)\n* [`$NonMaybeType<T>`](#nonmaybetypet)\n* [`Class<T>`](#classt)\n* [`mixed`](#mixed)\n\n## Deprecated API (use at own risk)\n* `getReturnOfExpression()` - from TS v2.0 it's better to use type-level `ReturnType` instead\n\n---\n\n### `Primitive`\n\nType representing primitive types in JavaScript, and thus TypeScript: `string | number | bigint | boolean |  symbol | null | undefined`\n\nYou can test for singular of these types with [`typeof`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)\n\n### `isPrimitive`\n\nThis is a [TypeScript Typeguard](https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types) for the [`Primitive`](#primitive) type.\n\nThis can be useful to control the type of a parameter as the program flows. Example:\n\n```ts\nconst consumer = (param: Primitive[] | Primitive): string => {\n    if (isPrimitive(param)) {\n        // typeof param === Primitive\n        return String(param) + ' was Primitive';\n    }\n    // typeof param === Primitive[]\n    const resultArray = param\n        .map(consumer)\n        .map(rootString => '\\n\\t' + rootString);\n    return resultArray.reduce((comm, newV) => comm + newV, 'this was nested:');\n};\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Falsy`\n\nType representing falsy values in TypeScript: `false | \"\" | 0 | null | undefined`\n> Except `NaN` which cannot be represented as a type literal\n\n### `isFalsy`\n\n```ts\nconst consumer = (param: Falsy | string): string => {\n    if (isFalsy(param)) {\n        // typeof param === Falsy\n        return String(param) + ' was Falsy';\n    }\n    // typeof param === string\n    return param.toString();\n};\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `SetIntersection<A, B>` (same as Extract)\n\nSet intersection of given union types `A` and `B`\n\n**Usage:**\n\n```ts\nimport { SetIntersection } from 'utility-types';\n\n// Expect: \"2\" | \"3\"\ntype ResultSet = SetIntersection<'1' | '2' | '3', '2' | '3' | '4'>;\n// Expect: () => void\ntype ResultSetMixed = SetIntersection<string | number | (() => void), Function>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `SetDifference<A, B>` (same as Exclude)\n\nSet difference of given union types `A` and `B`\n\n**Usage:**\n\n```ts\nimport { SetDifference } from 'utility-types';\n\n// Expect: \"1\"\ntype ResultSet = SetDifference<'1' | '2' | '3', '2' | '3' | '4'>;\n// Expect: string | number\ntype ResultSetMixed = SetDifference<string | number | (() => void), Function>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `SetComplement<A, A1>`\n\nSet complement of given union types `A` and (it's subset) `A1`\n\n**Usage:**\n\n```ts\nimport { SetComplement } from 'utility-types';\n\n// Expect: \"1\"\ntype ResultSet = SetComplement<'1' | '2' | '3', '2' | '3'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `SymmetricDifference<A, B>`\n\nSet difference of union and intersection of given union types `A` and `B`\n\n**Usage:**\n\n```ts\nimport { SymmetricDifference } from 'utility-types';\n\n// Expect: \"1\" | \"4\"\ntype ResultSet = SymmetricDifference<'1' | '2' | '3', '2' | '3' | '4'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `NonNullable<A>`\n\nExclude `null` and `undefined` from set `A`\n\n[⇧ back to top](#table-of-contents)\n\n### `NonUndefined<A>`\n\nExclude `undefined` from set `A`\n\n[⇧ back to top](#table-of-contents)\n\n### `Exclude<A, B>`\n\nExclude subset `B` from set `A`\n\n[⇧ back to top](#table-of-contents)\n\n### `Extract<A, B>`\n\nExtract subset `B` from set `A`\n\n[⇧ back to top](#table-of-contents)\n\n## Operations on objects\n\n### `FunctionKeys<T>`\n\nGet union type of keys that are functions in object type `T`\n\n**Usage:**\n\n```ts\nimport { FunctionKeys } from 'utility-types';\n\ntype MixedProps = { name: string; setName: (name: string) => void };\n\n// Expect: \"setName\"\ntype Keys = FunctionKeys<MixedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `NonFunctionKeys<T>`\n\nGet union type of keys that are non-functions in object type `T`\n\n**Usage:**\n\n```ts\nimport { NonFunctionKeys } from 'utility-types';\n\ntype MixedProps = { name: string; setName: (name: string) => void };\n\n// Expect: \"name\"\ntype Keys = NonFunctionKeys<MixedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `MutableKeys<T>`\n\nGet union type of keys that are mutable (not readonly) in object type `T`\n\nAlias: `WritableKeys<T>`\n\n**Usage:**\n\n```ts\nimport { MutableKeys } from 'utility-types';\n\ntype Props = { readonly foo: string; bar: number };\n\n// Expect: \"bar\"\ntype Keys = MutableKeys<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `ReadonlyKeys<T>`\n\nGet union type of keys that are readonly in object type `T`\n\n**Usage:**\n\n```ts\nimport { ReadonlyKeys } from 'utility-types';\n\ntype Props = { readonly foo: string; bar: number };\n\n// Expect: \"foo\"\ntype Keys = ReadonlyKeys<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `RequiredKeys<T>`\n\nGet union type of keys that are required in object type `T`\n\n**Usage:**\n\n```ts\nimport { RequiredKeys } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; optUndef?: number | undefined; };\n\n// Expect: \"req\" | \"reqUndef\"\ntype Keys = RequiredKeys<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `OptionalKeys<T>`\n\nGet union type of keys that are optional in object type `T`\n\n**Usage:**\n\n```ts\nimport { OptionalKeys } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; optUndef?: number | undefined; };\n\n// Expect: \"opt\" | \"optUndef\"\ntype Keys = OptionalKeys<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Optional<T, K>`\n\nFrom `T` make a set of properties by key `K` become optional\n\n**Usage:**\n\n```ts\nimport { Optional } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean; };\n\n// Expect: { name?: string; age?: number; visible?: boolean; }\ntype Props = Optional<Props>\n// Expect: { name: string; age?: number; visible?: boolean; }\ntype Props = Optional<Props, 'age' | 'visible'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n\n### `Pick<T, K>` _(built-in)_\n\nFrom `T` pick a set of properties by key `K`\n\n**Usage:**\n\n```ts\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: { age: number; }\ntype Props = Pick<Props, 'age'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `PickByValue<T, ValueType>`\n\nFrom `T` pick a set of properties by value matching `ValueType`.\n_(Credit: [Piotr Lewandowski](https://medium.com/dailyjs/typescript-create-a-condition-based-subset-types-9d902cea5b8c))_\n\n**Usage:**\n\n```ts\nimport { PickByValue } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; };\n\n// Expect: { req: number }\ntype Props = PickByValue<Props, number>;\n// Expect: { req: number; reqUndef: number | undefined; }\ntype Props = PickByValue<Props, number | undefined>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `PickByValueExact<T, ValueType>`\n\nFrom `T` pick a set of properties by value matching exact `ValueType`.\n\n**Usage:**\n\n```ts\nimport { PickByValueExact } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; };\n\n// Expect: { req: number }\ntype Props = PickByValueExact<Props, number>;\n// Expect: { reqUndef: number | undefined; }\ntype Props = PickByValueExact<Props, number | undefined>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Omit<T, K>`\n\nFrom `T` remove a set of properties by key `K`\n\n**Usage:**\n\n```ts\nimport { Omit } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: { name: string; visible: boolean; }\ntype Props = Omit<Props, 'age'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `OmitByValue<T, ValueType>`\n\nFrom `T` remove a set of properties by value matching `ValueType`.\n_(Credit: [Piotr Lewandowski](https://medium.com/dailyjs/typescript-create-a-condition-based-subset-types-9d902cea5b8c))_\n\n**Usage:**\n\n```ts\nimport { OmitByValue } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; };\n\n// Expect: { reqUndef: number | undefined; opt?: string; }\ntype Props = OmitByValue<Props, number>;\n// Expect: { opt?: string; }\ntype Props = OmitByValue<Props, number | undefined>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `OmitByValueExact<T, ValueType>`\n\nFrom `T` remove a set of properties by value matching exact `ValueType`.\n\n**Usage:**\n\n```ts\nimport { OmitByValueExact } from 'utility-types';\n\ntype Props = { req: number; reqUndef: number | undefined; opt?: string; };\n\n// Expect: { reqUndef: number | undefined; opt?: string; }\ntype Props = OmitByValueExact<Props, number>;\n// Expect: { req: number; opt?: string }\ntype Props = OmitByValueExact<Props, number | undefined>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Intersection<T, U>`\n\nFrom `T` pick properties that exist in `U`\n\n**Usage:**\n\n```ts\nimport { Intersection } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype DefaultProps = { age: number };\n\n// Expect: { age: number; }\ntype DuplicatedProps = Intersection<Props, DefaultProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Diff<T, U>`\n\nFrom `T` remove properties that exist in `U`\n\n**Usage:**\n\n```ts\nimport { Diff } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype DefaultProps = { age: number };\n\n// Expect: { name: string; visible: boolean; }\ntype RequiredProps = Diff<Props, DefaultProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Subtract<T, T1>`\n\nFrom `T` remove properties that exist in `T1` (`T1` has a subset of the properties of `T`)\n\n**Usage:**\n\n```ts\nimport { Subtract } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype DefaultProps = { age: number };\n\n// Expect: { name: string; visible: boolean; }\ntype RequiredProps = Subtract<Props, DefaultProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Overwrite<T, U>`\n\nFrom `U` overwrite properties to `T`\n\n**Usage:**\n\n```ts\nimport { Overwrite } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype NewProps = { age: string; other: string };\n\n// Expect: { name: string; age: string; visible: boolean; }\ntype ReplacedProps = Overwrite<Props, NewProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Assign<T, U>`\n\nFrom `U` assign properties to `T` (just like object assign)\n\n**Usage:**\n\n```ts\nimport { Assign } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype NewProps = { age: string; other: string };\n\n// Expect: { name: string; age: number; visible: boolean; other: string; }\ntype ExtendedProps = Assign<Props, NewProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `ValuesType<T>`\n\nGet the union type of all the values in an object, tuple, array or array-like type `T`.\n\n**Usage:**\n\n```ts\nimport { ValuesType } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n// Expect: string | number | boolean\ntype PropsValues = ValuesType<Props>;\n\ntype NumberArray = number[];\n// Expect: number\ntype NumberItems = ValuesType<NumberArray>;\n\ntype ReadonlyNumberTuple = readonly [1, 2];\n// Expect: 1 | 2\ntype AnotherNumberUnion = ValuesType<NumberTuple>;\n\ntype BinaryArray = Uint8Array;\n// Expect: number\ntype BinaryItems = ValuesType<BinaryArray>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Partial<T>`\n\nMake all properties of object type optional\n\n[⇧ back to top](#table-of-contents)\n\n### `Required<T, K>`\n\nFrom `T` make a set of properties by key `K` become required\n\n**Usage:**\n\n```ts\nimport { Required } from 'utility-types';\n\ntype Props = { name?: string; age?: number; visible?: boolean; };\n\n// Expect: { name: string; age: number; visible: boolean; }\ntype Props = Required<Props>\n// Expect: { name?: string; age: number; visible: boolean; }\ntype Props = Required<Props, 'age' | 'visible'>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Readonly<T>`\n\nMake all properties of object type readonly\n\n[⇧ back to top](#table-of-contents)\n\n### `Mutable<T>`\n\nFrom `T` make all properties become mutable\n\nAlias: `Writable<T>`\n\n```ts\nimport { Mutable } from 'utility-types';\n\ntype Props = {\n  readonly name: string;\n  readonly age: number;\n  readonly visible: boolean;\n};\n\n// Expect: { name: string; age: number; visible: boolean; }\nMutable<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `ReturnType<T>`\n\nObtain the return type of a function\n\n[⇧ back to top](#table-of-contents)\n\n### `InstanceType<T>`\n\nObtain the instance type of a class\n\n[⇧ back to top](#table-of-contents)\n\n### `Unionize<T>`\n\nDisjoin object to form union of objects, each with single property\n\n**Usage:**\n\n```ts\nimport { Unionize } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: { name: string; } | { age: number; } | { visible: boolean; }\ntype UnionizedType = Unionize<Props>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `PromiseType<T>`\n\nObtain Promise resolve type\n\n**Usage:**\n\n```ts\nimport { PromiseType } from 'utility-types';\n\n// Expect: string\ntype Response = PromiseType<Promise<string>>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `DeepReadonly<T>`\n\nReadonly that works for deeply nested structures\n\n**Usage:**\n\n```ts\nimport { DeepReadonly } from 'utility-types';\n\ntype NestedProps = {\n  first: {\n    second: {\n      name: string;\n    };\n  };\n};\n\n// Expect: {\n//   readonly first: {\n//     readonly second: {\n//       readonly name: string;\n//     };\n//   };\n// }\ntype ReadonlyNestedProps = DeepReadonly<NestedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `DeepRequired<T>`\n\nRequired that works for deeply nested structures\n\n**Usage:**\n\n```ts\nimport { DeepRequired } from 'utility-types';\n\ntype NestedProps = {\n  first?: {\n    second?: {\n      name?: string;\n    };\n  };\n};\n\n// Expect: {\n//   first: {\n//     second: {\n//       name: string;\n//     };\n//   };\n// }\ntype RequiredNestedProps = DeepRequired<NestedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `DeepNonNullable<T>`\n\nNonNullable that works for deeply nested structure\n\n**Usage:**\n\n```ts\nimport { DeepNonNullable } from 'utility-types';\n\ntype NestedProps = {\n  first?: null | {\n    second?: null | {\n      name?: string | null | undefined;\n    };\n  };\n};\n\n// Expect: {\n//   first: {\n//     second: {\n//       name: string;\n//     };\n//   };\n// }\ntype RequiredNestedProps = DeepNonNullable<NestedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `DeepPartial<T>`\n\nPartial that works for deeply nested structures\n\n**Usage:**\n\n```ts\nimport { DeepPartial } from 'utility-types';\n\ntype NestedProps = {\n  first: {\n    second: {\n      name: string;\n    };\n  };\n};\n\n// Expect: {\n//   first?: {\n//     second?: {\n//       name?: string;\n//     };\n//   };\n// }\ntype PartialNestedProps = DeepPartial<NestedProps>;\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `Brand<T, U>`\n\nDefine nominal type of `U` based on type of `T`. Similar to Opaque types in Flow.\n\n**Usage:**\n\n```ts\nimport { Brand } from 'utility-types';\n\ntype USD = Brand<number, \"USD\">\ntype EUR = Brand<number, \"EUR\">\n\nconst tax = 5 as USD;\nconst usd = 10 as USD;\nconst eur = 10 as EUR;\n\nfunction gross(net: USD): USD {\n  return (net + tax) as USD;\n}\n\ngross(usd); // ok\ngross(eur); // Type '\"EUR\"' is not assignable to type '\"USD\"'.\n```\n\n[⇧ back to top](#table-of-contents)\n\n### `UnionToIntersection<U>`\n\nGet intersection type given union type `U`\n\n**Usage:**\n\n```ts\nimport { UnionToIntersection } from 'utility-types';\n\n// Expect: { name: string } & { age: number } & { visible: boolean }\nUnionToIntersection<{ name: string } | { age: number } | { visible: boolean }>\n```\n\n[⇧ back to top](#table-of-contents)\n\n---\n\n## Flow's Utility Types\n\n### `$Keys<T>`\n\nget the union type of all the keys in an object type `T`<br>\nhttps://flow.org/en/docs/types/utilities/#toc-keys\n\n**Usage:**\n\n```ts\nimport { $Keys } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: \"name\" | \"age\" | \"visible\"\ntype PropsKeys = $Keys<Props>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$Values<T>`\n\nget the union type of all the values in an object type `T`<br>\nhttps://flow.org/en/docs/types/utilities/#toc-values\n\n**Usage:**\n\n```ts\nimport { $Values } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: string | number | boolean\ntype PropsValues = $Values<Props>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### <a id=\"readonly2\"></a> `$ReadOnly<T>`\n\nget the read-only version of a given object type `T`<br>\nhttps://flow.org/en/docs/types/utilities/#toc-readonly\n\n**Usage:**\n\n```ts\nimport { $ReadOnly } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: Readonly<{ name: string; age?: number | undefined; visible: boolean; }>\ntype ReadOnlyProps = $ReadOnly<Props>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### <a id=\"diff2\"></a> `$Diff<T, U>`\n\nget the set difference of a given object types `T` and `U` (`T \\ U`)<br>\nhttps://flow.org/en/docs/types/utilities/#toc-diff\n\n**Usage:**\n\n```ts\nimport { $Diff } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\ntype DefaultProps = { age: number };\n\n// Expect: { name: string; visible: boolean; }\ntype RequiredProps = $Diff<Props, DefaultProps>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$PropertyType<T, K>`\n\nget the type of property of an object at a given key `K`<br>\nhttps://flow.org/en/docs/types/utilities/#toc-propertytype\n\n**Usage:**\n\n```ts\nimport { $PropertyType } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n// Expect: string\ntype NameType = $PropertyType<Props, 'name'>;\n\ntype Tuple = [boolean, number];\n// Expect: boolean\ntype A = $PropertyType<Tuple, '0'>;\n// Expect: number\ntype B = $PropertyType<Tuple, '1'>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$ElementType<T, K>`\n\nget the type of elements inside of array, tuple or object of type `T`, that matches the given index type `K`<br>\nhttps://flow.org/en/docs/types/utilities/#toc-elementtype\n\n**Usage:**\n\n```ts\nimport { $ElementType } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n// Expect: string\ntype NameType = $ElementType<Props, 'name'>;\n\ntype Tuple = [boolean, number];\n// Expect: boolean\ntype A = $ElementType<Tuple, 0>;\n// Expect: number\ntype B = $ElementType<Tuple, 1>;\n\ntype Arr = boolean[];\n// Expect: boolean\ntype ItemsType = $ElementType<Arr, number>;\n\ntype Obj = { [key: string]: number };\n// Expect: number\ntype ValuesType = $ElementType<Obj, string>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$Call<T>`\n\nget the return type of a given expression type<br>\nhttps://flow.org/en/docs/types/utilities/#toc-call\n\n**Usage:**\n\n```ts\nimport { $Call } from 'utility-types';\n\n// Common use-case\nconst add = (amount: number) => ({ type: 'ADD' as 'ADD', payload: amount });\ntype AddAction = $Call<typeof returnOfIncrement>; // { type: 'ADD'; payload: number }\n\n// Examples migrated from Flow docs\ntype ExtractPropType<T extends { prop: any }> = (arg: T) => T['prop'];\ntype Obj = { prop: number };\ntype PropType = $Call<ExtractPropType<Obj>>; // number\n// type Nope = $Call<ExtractPropType<{ nope: number }>>; // Error: argument doesn't match `Obj`.\n\ntype ExtractReturnType<T extends () => any> = (arg: T) => ReturnType<T>;\ntype Fn = () => number;\ntype FnReturnType = $Call<ExtractReturnType<Fn>>; // number\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$Shape<T>`\n\nCopies the shape of the type supplied, but marks every field optional.<br>\nhttps://flow.org/en/docs/types/utilities/#toc-shape\n\n**Usage:**\n\n```ts\nimport { $Shape } from 'utility-types';\n\ntype Props = { name: string; age: number; visible: boolean };\n\n// Expect: Partial<Props>\ntype PartialProps = $Shape<Props>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `$NonMaybeType<T>`\n\nConverts a type `T` to a non-maybe type. In other words, the values of `$NonMaybeType<T>` are the values of `T` except for `null` and `undefined`.<br>\nhttps://flow.org/en/docs/types/utilities/#toc-nonmaybe\n\n**Usage:**\n\n```ts\nimport { $NonMaybeType } from 'utility-types';\n\ntype MaybeName = string | null;\n\n// Expect: string\ntype Name = $NonMaybeType<MaybeName>;\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### `Class<T>`\n\nGiven a type T representing instances of a class C, the type Class<T> is the type of the class C<br>\nhttps://flow.org/en/docs/types/utilities/#toc-class\n\\* Differs from original Flow's util - implements only constructor part and won't include any static members. Additionally classes in Typescript are not treated as nominal\n\n**Usage:**\n\n```ts\nimport { Class } from 'utility-types';\n\n\nfunction makeStore(storeClass: Class<Store>): Store {\n  return new storeClass();\n}\n```\n\n[⇧ back to top](#flows-utility-types)\n\n### mixed\n\nAn arbitrary type that could be anything (same as `unknown`)<br>\nhttps://flow.org/en/docs/types/mixed\n\n[⇧ back to top](#table-of-contents)\n\n---\n\n## Related Projects\n\n- [`ts-toolbelt`](https://github.com/pirix-gh/ts-toolbelt) - Higher type safety for TypeScript\n- [`$mol_type`](https://github.com/eigenmethod/mol/tree/master/type) - Collection of TypeScript meta types for complex logic\n\n---\n\n## License\n\n[MIT License](/LICENSE)\n\nCopyright (c) 2016 Piotr Witek <mailto:piotrek.witek@gmail.com> (http://piotrwitek.github.io)"
}