├── .gitignore ├── README.md ├── package.json ├── types └── acme-package │ ├── index.d.ts │ ├── package.json │ ├── tsconfig.json │ └── tslint.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # types-starter 2 | 3 | Starter repo for internally-hosted DefinitelyTyped. 4 | 5 | ## Motivation 6 | 7 | DefinitelyTyped is great for hosting type declarations for public JS npm packages. But, companies often publish their internal npm packages to a private npm registry, hosted internally. How can we add types for those internal JS packages? 8 | 9 | We can mirror the DefinitelyTyped solution for this by creating an internal repo that contains the type declaration files for internal packages and publish them to their own npm scope. Suppose we are working at a company called "acme". Similar to DefinitelyTyped `@types` packages, we can publish to `@acme-types` instead. This repo offers a setup modeled after DefinitelyTyped, where we can add, test, and publish our "acme" types. 10 | 11 | ## How to add a types package 12 | 13 | Create a new folder in the types folder. 14 | 15 | For example, if we want to add types for "acme-package", we'd add a `types/acme-package` folder. 16 | 17 | ### tsconfig.json 18 | 19 | Create a tsconfig.json file with the following default configuration: 20 | 21 | ```json5 22 | { 23 | "compilerOptions": { 24 | "module": "commonjs", 25 | "lib": ["es6", "dom"], 26 | "noImplicitAny": true, 27 | "noImplicitThis": false, 28 | "strictNullChecks": true, 29 | "strictFunctionTypes": false, 30 | "baseUrl": "../", 31 | "typeRoots": ["../"], 32 | "types": [], 33 | "noEmit": true, 34 | "forceConsistentCasingInFileNames": true, 35 | "jsx": "preserve" 36 | }, 37 | "files": ["index.d.ts"] 38 | } 39 | ``` 40 | 41 | ### tslint.json 42 | 43 | Create a tslint.json file with the following default configuration: 44 | 45 | ```json5 46 | { 47 | "extends": "dtslint/dtslint.json", 48 | "rules": { 49 | "no-single-declare-module": false 50 | } 51 | } 52 | ``` 53 | 54 | ### package.json 55 | 56 | Create a package.json file with the following contents, 57 | where we use `@acme-types/acme-package` as the name of our new package. 58 | 59 | For `version`, match the major and minor versions to the version of the 60 | JS package we're annotating. 61 | 62 | And, fill in the `description`. 63 | 64 | ```json5 65 | { 66 | "name": "@acme-types/acme-package", 67 | "version": "1.0.0", 68 | "description": "TypeScript definitions for Acme Package", 69 | "license": "MIT", 70 | "main": "", 71 | "types": "index", 72 | "files": ["index.d.ts"], 73 | "scripts": { 74 | "test": "dtslint ." 75 | } 76 | } 77 | ``` 78 | 79 | ### index.d.ts 80 | 81 | Add an index.d.ts file, where we can add our types. 82 | 83 | ```typescript 84 | // Acme type definitions for @acme-types/acme-package 1.0.0 85 | // Project: https://github.acme.com/acme-package 86 | // Definitions by: Your User 87 | // Definitions: https://github.acme.com/types 88 | // TypeScript Version: 2.9 89 | 90 | declare module "acme-package" { 91 | function greeter(name: string): string; 92 | } 93 | ``` 94 | 95 | ### Testing types 96 | 97 | A test file should be a piece of sample code that tests using the library. Tests are type-checked, but not run. To assert that an expression is of a given type, use `$ExpectType`. 98 | To assert that an expression causes a compile error, use `$ExpectError`. (Assertions will be checked by the expect lint rule.) 99 | 100 | ``` 101 | import { f } from "my-lib"; // f is(n: number) => void 102 | 103 | // $ExpectType void 104 | f(1); 105 | 106 | // Can also write the assertion on the same line. 107 | f(2); // $ExpectType void 108 | 109 | // $ExpectError 110 | f("one"); 111 | ``` 112 | 113 | ## How to publish a types package 114 | 115 | Suppose we wanted to publish version 1.0.1 of our types for acme-package. 116 | 117 | ``` 118 | git checkout master 119 | git pull origin master 120 | # make sure we have a clean git state 121 | cd types/acme-package 122 | vim package.json 123 | # update the version 124 | npm publish 125 | git commit -am "acme-package@1.0.1" 126 | git push 127 | ``` 128 | 129 | TODO(brieb): make a command for this 130 | 131 | ## How to consume a types package 132 | 133 | Suppose we have a TS project, where we would like to consume these types. 134 | 135 | Install the desired package, along with the types package. 136 | 137 | ```sh 138 | npm install --save acme-package 139 | npm install --save-dev @acme-types/acme-package 140 | ``` 141 | 142 | Add `@acme-types` to the project's `typeRoots` 143 | 144 | ```json5 145 | { 146 | "compilerOptions": { 147 | // ... 148 | "typeRoots": [ 149 | "node_modules/@acme-types", 150 | "node_modules/@types" 151 | ] 152 | // ... 153 | }, 154 | // ... 155 | } 156 | ``` 157 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "workspaces": [ 4 | "types/*" 5 | ], 6 | "scripts": { 7 | "prettier": "prettier --write \"types/**/*.{ts,tsx,json}\"", 8 | "test": "yarn workspaces run test" 9 | }, 10 | "devDependencies": { 11 | "dtslint": "github:Microsoft/dtslint#production", 12 | "prettier": "^1.14.3", 13 | "typescript": "^3.3.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /types/acme-package/index.d.ts: -------------------------------------------------------------------------------- 1 | // Acme type definitions for @acme-types/acme-package 1.0.0 2 | // Project: https://github.acme.com/acme-package 3 | // Definitions by: Your User 4 | // Definitions: https://github.acme.com/types 5 | // TypeScript Version: 2.9 6 | 7 | declare module "acme-package" { 8 | function greeter(name: string): string; 9 | } 10 | -------------------------------------------------------------------------------- /types/acme-package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@acme-types/acme-package", 3 | "version": "1.0.0", 4 | "description": "TypeScript definitions for Acme Package", 5 | "license": "MIT", 6 | "main": "", 7 | "types": "index", 8 | "files": ["index.d.ts"], 9 | "scripts": { 10 | "test": "dtslint ." 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /types/acme-package/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": ["es6", "dom"], 5 | "noImplicitAny": true, 6 | "noImplicitThis": false, 7 | "strictNullChecks": true, 8 | "strictFunctionTypes": false, 9 | "baseUrl": "../", 10 | "typeRoots": ["../"], 11 | "types": [], 12 | "noEmit": true, 13 | "forceConsistentCasingInFileNames": true, 14 | "jsx": "preserve" 15 | }, 16 | "files": ["index.d.ts"] 17 | } 18 | -------------------------------------------------------------------------------- /types/acme-package/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "dtslint/dtslint.json", 3 | "rules": { 4 | "no-single-declare-module": false 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/parsimmon@^1.3.0": 6 | version "1.10.0" 7 | resolved "https://registry.yarnpkg.com/@types/parsimmon/-/parsimmon-1.10.0.tgz#ffb81cb023ff435a41d4710a29ab23c561dc9fdf" 8 | integrity sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ== 9 | 10 | ansi-regex@^2.0.0: 11 | version "2.1.1" 12 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 13 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 14 | 15 | ansi-styles@^2.2.1: 16 | version "2.2.1" 17 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 18 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 19 | 20 | ansi-styles@^3.2.1: 21 | version "3.2.1" 22 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 23 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 24 | dependencies: 25 | color-convert "^1.9.0" 26 | 27 | argparse@^1.0.7: 28 | version "1.0.10" 29 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 30 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 31 | dependencies: 32 | sprintf-js "~1.0.2" 33 | 34 | babel-code-frame@^6.22.0: 35 | version "6.26.0" 36 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 37 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 38 | dependencies: 39 | chalk "^1.1.3" 40 | esutils "^2.0.2" 41 | js-tokens "^3.0.2" 42 | 43 | balanced-match@^1.0.0: 44 | version "1.0.0" 45 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 46 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 47 | 48 | brace-expansion@^1.1.7: 49 | version "1.1.11" 50 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 51 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 52 | dependencies: 53 | balanced-match "^1.0.0" 54 | concat-map "0.0.1" 55 | 56 | builtin-modules@^1.1.1: 57 | version "1.1.1" 58 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 59 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 60 | 61 | chalk@^1.1.3: 62 | version "1.1.3" 63 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 64 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 65 | dependencies: 66 | ansi-styles "^2.2.1" 67 | escape-string-regexp "^1.0.2" 68 | has-ansi "^2.0.0" 69 | strip-ansi "^3.0.0" 70 | supports-color "^2.0.0" 71 | 72 | chalk@^2.3.0: 73 | version "2.4.2" 74 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 75 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 76 | dependencies: 77 | ansi-styles "^3.2.1" 78 | escape-string-regexp "^1.0.5" 79 | supports-color "^5.3.0" 80 | 81 | color-convert@^1.9.0: 82 | version "1.9.3" 83 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 84 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 85 | dependencies: 86 | color-name "1.1.3" 87 | 88 | color-name@1.1.3: 89 | version "1.1.3" 90 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 91 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 92 | 93 | commander@^2.12.1: 94 | version "2.19.0" 95 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 96 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 97 | 98 | concat-map@0.0.1: 99 | version "0.0.1" 100 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 101 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 102 | 103 | "definitelytyped-header-parser@github:Microsoft/definitelytyped-header-parser#production": 104 | version "0.0.0" 105 | resolved "https://codeload.github.com/Microsoft/definitelytyped-header-parser/tar.gz/56d9f98e9acc5b4c0062aa919850b306a7616693" 106 | dependencies: 107 | "@types/parsimmon" "^1.3.0" 108 | parsimmon "^1.2.0" 109 | 110 | diff@^3.2.0: 111 | version "3.5.0" 112 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 113 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 114 | 115 | "dtslint@github:Microsoft/dtslint#production": 116 | version "0.4.2" 117 | resolved "https://codeload.github.com/Microsoft/dtslint/tar.gz/900087fdcded8f52fa220440f5bee6d39a3f4f8a" 118 | dependencies: 119 | definitelytyped-header-parser "github:Microsoft/definitelytyped-header-parser#production" 120 | fs-extra "^6.0.1" 121 | strip-json-comments "^2.0.1" 122 | tslint "^5.12.0" 123 | typescript next 124 | 125 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 126 | version "1.0.5" 127 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 128 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 129 | 130 | esprima@^4.0.0: 131 | version "4.0.1" 132 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 133 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 134 | 135 | esutils@^2.0.2: 136 | version "2.0.2" 137 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 138 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 139 | 140 | fs-extra@^6.0.1: 141 | version "6.0.1" 142 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" 143 | integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== 144 | dependencies: 145 | graceful-fs "^4.1.2" 146 | jsonfile "^4.0.0" 147 | universalify "^0.1.0" 148 | 149 | fs.realpath@^1.0.0: 150 | version "1.0.0" 151 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 152 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 153 | 154 | glob@^7.1.1: 155 | version "7.1.3" 156 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 157 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 158 | dependencies: 159 | fs.realpath "^1.0.0" 160 | inflight "^1.0.4" 161 | inherits "2" 162 | minimatch "^3.0.4" 163 | once "^1.3.0" 164 | path-is-absolute "^1.0.0" 165 | 166 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 167 | version "4.1.15" 168 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 169 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 170 | 171 | has-ansi@^2.0.0: 172 | version "2.0.0" 173 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 174 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 175 | dependencies: 176 | ansi-regex "^2.0.0" 177 | 178 | has-flag@^3.0.0: 179 | version "3.0.0" 180 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 181 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 182 | 183 | inflight@^1.0.4: 184 | version "1.0.6" 185 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 186 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 187 | dependencies: 188 | once "^1.3.0" 189 | wrappy "1" 190 | 191 | inherits@2: 192 | version "2.0.3" 193 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 194 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 195 | 196 | js-tokens@^3.0.2: 197 | version "3.0.2" 198 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 199 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 200 | 201 | js-yaml@^3.7.0: 202 | version "3.12.1" 203 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" 204 | integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== 205 | dependencies: 206 | argparse "^1.0.7" 207 | esprima "^4.0.0" 208 | 209 | jsonfile@^4.0.0: 210 | version "4.0.0" 211 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 212 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 213 | optionalDependencies: 214 | graceful-fs "^4.1.6" 215 | 216 | minimatch@^3.0.4: 217 | version "3.0.4" 218 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 219 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 220 | dependencies: 221 | brace-expansion "^1.1.7" 222 | 223 | once@^1.3.0: 224 | version "1.4.0" 225 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 226 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 227 | dependencies: 228 | wrappy "1" 229 | 230 | parsimmon@^1.2.0: 231 | version "1.12.0" 232 | resolved "https://registry.yarnpkg.com/parsimmon/-/parsimmon-1.12.0.tgz#886a442fb30b5fc3c8e7c4994050f5cdcfe0ea90" 233 | integrity sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw== 234 | 235 | path-is-absolute@^1.0.0: 236 | version "1.0.1" 237 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 238 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 239 | 240 | path-parse@^1.0.6: 241 | version "1.0.6" 242 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 243 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 244 | 245 | prettier@^1.14.3: 246 | version "1.16.4" 247 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" 248 | integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== 249 | 250 | resolve@^1.3.2: 251 | version "1.10.0" 252 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" 253 | integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== 254 | dependencies: 255 | path-parse "^1.0.6" 256 | 257 | semver@^5.3.0: 258 | version "5.6.0" 259 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 260 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 261 | 262 | sprintf-js@~1.0.2: 263 | version "1.0.3" 264 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 265 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 266 | 267 | strip-ansi@^3.0.0: 268 | version "3.0.1" 269 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 270 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 271 | dependencies: 272 | ansi-regex "^2.0.0" 273 | 274 | strip-json-comments@^2.0.1: 275 | version "2.0.1" 276 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 277 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 278 | 279 | supports-color@^2.0.0: 280 | version "2.0.0" 281 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 282 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 283 | 284 | supports-color@^5.3.0: 285 | version "5.5.0" 286 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 287 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 288 | dependencies: 289 | has-flag "^3.0.0" 290 | 291 | tslib@^1.8.0, tslib@^1.8.1: 292 | version "1.9.3" 293 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 294 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 295 | 296 | tslint@^5.12.0: 297 | version "5.12.1" 298 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.1.tgz#8cec9d454cf8a1de9b0a26d7bdbad6de362e52c1" 299 | integrity sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw== 300 | dependencies: 301 | babel-code-frame "^6.22.0" 302 | builtin-modules "^1.1.1" 303 | chalk "^2.3.0" 304 | commander "^2.12.1" 305 | diff "^3.2.0" 306 | glob "^7.1.1" 307 | js-yaml "^3.7.0" 308 | minimatch "^3.0.4" 309 | resolve "^1.3.2" 310 | semver "^5.3.0" 311 | tslib "^1.8.0" 312 | tsutils "^2.27.2" 313 | 314 | tsutils@^2.27.2: 315 | version "2.29.0" 316 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 317 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 318 | dependencies: 319 | tslib "^1.8.1" 320 | 321 | typescript@^3.3.1: 322 | version "3.3.1" 323 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.1.tgz#6de14e1db4b8a006ac535e482c8ba018c55f750b" 324 | integrity sha512-cTmIDFW7O0IHbn1DPYjkiebHxwtCMU+eTy30ZtJNBPF9j2O1ITu5XH2YnBeVRKWHqF+3JQwWJv0Q0aUgX8W7IA== 325 | 326 | typescript@next: 327 | version "3.4.0-dev.20190202" 328 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.0-dev.20190202.tgz#a1f41f722ee2d77c01411d67de042be32ea7af93" 329 | integrity sha512-/9NIR5B2Dddc+mg8Re+A7w7nuuijafrDt6b2CHNjUdKRWaET1kPBjydmS/xTtCqcnHNotINws2BuV6ouac5zMw== 330 | 331 | universalify@^0.1.0: 332 | version "0.1.2" 333 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 334 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 335 | 336 | wrappy@1: 337 | version "1.0.2" 338 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 339 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 340 | --------------------------------------------------------------------------------